Ассоциация вычислительной техники (ACM), наиболее авторитетная международная организация в области компьютерных систем,
присудила (http://www.sigplan.org/Awards/Software/Main) проекту GCC премию за вклад в развитие языков программирования (SIGPLAN Programming Languages Software Award). Премия присуждается за значительное влияние на связанные с языками программирования исследования, реализации технологий и инструменты. В 2010 году аналогичную премию получил проект LLVM, в 2011 - Glasgow Haskell Compiler, в 2012 - Research Virtual Machine (RVM), в 2013 - Coq.
URL: http://www.sigplan.org/Awards/Software/Main
Новость: http://www.opennet.me/opennews/art.shtml?num=39991
Заслуженно. Это вам не эппл, который даже не знает - будет ли swift опенсорсным или нет. Видимо, "если не выстрелит - мы вам через 5-10 лет выбросим останки".
http://www.opennet.me/opennews/art.shtml?num=39992...имхо -- заслужено!
> http://www.opennet.me/opennews/art.shtml?num=39992
> ...имхо -- заслужено!конечно. если хотя бы один говнокодер из-за такого разочаруется и пойдёт делать что-то полезное — это уже мегавин.
Странно, что LLVM получил премию раньше, чем GCC, да ещё на 4(!) года.
что в этом странного?
GCC старше LLVM и в таком случае давно должен был получить эту премию, гораздо раньше LLVM.
Должен? А он что, занимал чтоли?
> Странно, что LLVM получил премию раньше, чем GCC, да ещё на 4(!)
> года.Да, странно, что у профессионалов из АЦМ ушло только "4(!) года", чтобы сообразить "ёйо-майо, что ж мы наделали" после того, как они купились на профессиональный llvm-овский продаж-маркетинг. Одно хорошо: бедняжкам наконец рассказали про GCC... Кругозор, всё такое.
gcc, впрочем, набежавшая хипстота тоже превращает в говно, пытаясь затащить туда (в реализацию) c++. видимо, чтобы как можно больше усложнить сборку: ведь требование наличия только компилятора си для сборки компилятора си — это слишком просто.
Вообще-то, любой вменяемый компилятор уже достаточно сложен, чтобы не писать его на C, а тут исполин GCC. Желающим привести в пример удачной и масштабной разработки на C наш любимый Linux сообщаю, что писать компиляторы чуть ли не на порядок сложнее, чем ОС.
> Вообще-то, любой вменяемый компилятор уже достаточно сложен, чтобы не писать его на
> C, а тут исполин GCC.авторы pcc, tcc, cc8 — удивлены. ах, да, это же невменяемые компиляторы.
си, конечно, далеко не самый удобный вариант, но и далеко не самый плохой. зато цпп — универсально плохой, со всех точек зрения. такие дела.
> авторы pcc, tcc, cc8 — удивлены. ах, да, это же невменяемые компиляторы.
> си, конечно, далеко не самый удобный вариант, но и далеко не самый
> плохой. зато цпп — универсально плохой, со всех точек зрения. такие
> дела.Приятно хоть было, когда передёргивали?
Знаете, я мог бы согласиться с тем, что C++ - ужасный объектно-ориентированный язык, но не могу согласиться с тем, что он принципиально хуже C. В конце концов, качество кода зависит не столько от ЯП, сколько от радиуса кривизны рук разработчика. Если C++ позволит разработчикам GCC избавиться от тонн boilerplate code, используя только необходимые им фичи C++, то почему бы и нет? Никто же не заставляет их городить ветвистое ООП, поросшее полиморфизмом и прочими наследованиями.
> Приятно хоть было, когда передёргивали?не знаю, это ты, похоже, спец по такому.
> Знаете, я мог бы согласиться с тем, что C++ - ужасный объектно-ориентированный
> язык, но не могу согласиться с тем, что он принципиально хуже
> C.какая досада! а я так надеялся… хотя нет, не надеялся.
> В конце концов, качество кода зависит не столько от ЯП,
> сколько от радиуса кривизны рук разработчика.иншалла!
> Если C++ позволит разработчикам GCC
> избавиться от тонн boilerplate code, используя только необходимые им фичи C++,
> то почему бы и нет?и сразу испортился.
может, если я повторю, то дойдёт? gcc больше нельзя собрать без компилятора C и компилятора C++ (нет, это *разные* языки, с *разными* компиляторами). в приличном обществе это называется «critical regression», и чинится в первую очередь. а у хипстеров — «прогресс», и не только не чинится, но усугубляется.
Тезис о магическом уменьшении сложности задачи от использования С++ был бы даже забавен, не будь так распространен.>писать компиляторы чуть ли не на порядок сложнее, чем ОС
Смотря какие. Смотря как писать. Смотря с какими ОС сравнивать.
> Тезис о магическом уменьшении сложности задачи от использования С++ был бы даже
> забавен, не будь так распространен.Я не верю в подобные мифы. Однако C++ делает те же вещи, что и C, но лучше. Простейший пример:
const int X = 10;
const int Y = X; // C++ ok, C error!> Смотря какие. Смотря как писать. Смотря с какими ОС сравнивать.
Хорошо, пусть будут G++ и Linux.
> Простейший примерили такой:
char *c = malloc(64);
упс… wtf, c++?! are you nuts or what?!
> или такой:
> char *c = malloc(64);
> упс… wtf, c++?! are you nuts or what?!Во-первых, в C++ положено выделять память через new, который в курсе о типах данных. Во-вторых, malloc - часть стандартной библиотеки C, которая, напоминаю, написана на C для разработчиков на C. Вы вообще в курсе того, о чём рассуждаете, или мсье знает толк лишь в кукарекании?
> Во-первых, в C++ положено выделять память через newтогда malloc() должен быть запрещён к использованию в c++-коде. а если не запрещён, то мне совершенно положить на то, что там «положено». malloc() разрешён, для его использования не надо дополнительных флагов? отлично, пусть не ест мне мозги и работает так, как в си. не можете так сделать? разрешите, например, вызов malloc() только в коде, обёрнутом в extern «C» (да, я знаю, что оно не для этого; а почему?).
всё это от того, что цпп пытается усидеть на двух стульях. и вполне закономерно промахивается мимо обоих.
> Вы вообще в курсе того, о чём рассуждаете
конечно. а вот ты — не понимаешь вообще. но лезешь кукарекать.
> Во-первых, в C++ положено выделять память через newКоторый есть довольно грязный хак [1] и признан вроде бы уже не рекомендованным, а вместо этого всем рекомендуется std::allocator? [2]
[1] http://www.scs.stanford.edu/~dm/home/papers/c++-new.html
[2] C++ Primer 4th edition, page 755:
> Modern C++ programs ordinarily ought to use the allocator class to allocate memory. It is safer and more flexible.
гыг. спасибо, не слежу за тамошними новостями. «классы для создания классов, делающих ваши классы ещё более классными».
Там всё красивше и красивше со временем.http://en.cppreference.com/w/cpp/memory/scoped_allocator_ada...
> Там всё красивше и красивше со временем.остаётся надеяться (без толку, конечно), что однажды кто-то решиться сделать самое важное: выкинуть нафиг совместимость с прежними версиями языка.
впрочем, чего это я? кто-то уже решился, получился D.
С немного предсказуемым уровнем популярности. Как и все остальные кандидаты в "Си, только лучше", от Go и OCaml до ATS.>Any sufficiently advanced technology
>is unkillable, even with fire. Even if you get the imperial space marines to H-bomb it from orbit, drop an asteroid on it, and bury the ashes at a crossroads on a night with no moon. It will come back, shake its head, regather its minions, and flatten you.
>“Advanced,” by the way, can be used in the sense that cancer can be considered advanced. “You’ve got an advanced and highly resistant case of everything-is-gonna-putrify-and-fall-off and nothing will ever be okay again, Version 1.0.”
> С немного предсказуемым уровнем популярности.да, со стабильно растущим. впрочем, лично мне это совершенно не важно: взаимодействие с legacy-библиотеками на си делается без проблем, стандартная библиотека весьма богатая, авторам платит пейцбук, так что они не должны думать, что будут завтра жрать. при этом я в общем согласен с тем, как и куда язык идёт (в отличие от того же go, от которого у меня изжога).
в общем, лично я на него перелез окончательно, и очень этим доволен. назад на си меня можно или физическим насилием пересадить, или заплатить много денег. а на цпп — ОЧЕНЬ-ОЧЕНЬ МНОГО денег.
>да, со стабильно растущимНизкая база - несложно расти.
>в общем, лично я на него перелез окончательно, и очень этим доволен
Если писать постоянно на Си, имеет смысл, конечно. Только это нынче редко. Всё больше или как intermediate language, или для редких небольших кусочков. А в этом случае смысла большого нет что-то новое изучать.
> Если писать постоянно на Си, имеет смысл, конечно. Только это нынче редко.а на чём сейчас модно-то? а то я опять все стильное и молодёжное пропустил.
Модно - наверное на Clojure.
А массово всё на том же - Python, Java, C#.
Python мимо кассы
> Python мимо кассыещё как в кассу. и нодэ.жысы забыт.
Я думаю что на Javascript пишется на порядок меньше, а непропорциональное количество хайпа объясняется повышенной вокальностью писателей.Кстати, о реальной жизни в разрезе С-С++ из USENIX 2001 года
>Another notable talk was by David Mazieres on a toolkit for user-level file systems. The toolkit, SFS, lets us write asynchronous RPC servers, e.g., user-level NFS daemons. Asynchronous RPC programming largely follows the continuation-passing style. The toolkit therefore relies on numerous C++ template hacks to create a closure (of a partially evaluated function), to capture continuations, and to do reference-counting-based automatic memory management. During the discussion, a person asked why such a helpful and needed toolkit as SFS hasn't been implemented before. David Mazieres replied that he first tried to write SFS in plain C. The complexity of memory management for closures and continuations was staggering. He gave up. It's only now, David Mazieres said, that C++ provides features such as partial template instantiation that make it possible to write memory management and continuation-handling hacks. This reply certainly begs a question of using a better language, with garbage collection, closures and continuations built in.
Хотя это конечно именно про "building a tectonically secure infrastructure for feeding billions of people".
> впрочем, чего это я? кто-то уже решился, получился Dкто-то ещё решился и получился Rust
>> впрочем, чего это я? кто-то уже решился, получился D
> кто-то ещё решился и получился RustRust пока только «получается». а D уже вполне «получился». кто не верит — может спросить у пейцбука.
Вообще он всё больше и больше становится LISP-ом, как и завещали мудрые предки в Greenspun's tenth rule. Но очень кривым, как они же и предостерегали. Так что если его современно и полно использовать, то выглядеть это начинает как-то примерно так:>is like making biscuits. But the simple baking procedure is preceded by growing the wheat, which entails clearing the farmland, digging a well, defending it against the native hordes, establishing irrigation and a working agrarian economy, buying a bunch of fertilizer, plowing the field behind a great big smelly ox, planting the seeds, waiting all winter while the wolves howl outside your cabin, THEN (buried amongst all the templatified, exception-safe and const-driven madness) writing a kernel of meaningful code. Wait, what was I doing? Building a tectonically secure infrastructure for feeding billions of people, or just making biscuits for breakfast? It’s hard to remember after all that epic bullshit.
>> Тезис о магическом уменьшении сложности задачи от использования С++ был бы даже
>> забавен, не будь так распространен.
> Я не верю в подобные мифы. Однако C++ делает те же вещи,
> что и C, но лучше.Некоторые лучше, некоторые хуже.
Дефиниции "хуже" и "лучше" также сильно различаются в зависимости от массы факторов.> const int X = 10;
> const int Y = X; // C++ ok, C error!Осталось объяснить в чем одно поведение лучше или хуже другого.
>> Смотря какие. Смотря как писать. Смотря с какими ОС сравнивать.
> Хорошо, пусть будут G++ и Linux.А если это будут tcc и WindowsNT?
Многие (не скажу что большинство, но многие) из старых девелоперов gcc - тоже за С++. И давно.
Такое тоже есть, конечно, и наблюдать это - не самое приятное ощущение, примерно как запущенный случай "седины в бороду, беса в ребро".Но чаще всего имеется в виду некий "safe C++ subset", а не С++ со всеми bells & whistles. И чаще всего очень, очень safe.
> Но чаще всего имеется в виду некий "safe C++ subset"без разницы. а что действительно имеет значение — это то, что теперь для сборки надо иметь два компилятора, а не один. потому что сишная часть gcc при помощи компилятора c++ тоже не собирается. они бы уж или трусы, или крестик, что ли…
Над такими вещами по-моему там вообще никто не задумывается.
> Над такими вещами по-моему там вообще никто не задумывается.у меня тоже есть такое подозрение. и это очень печально, я считаю.
Ага, как ты понимаешь что у тебя слишком мало мозгов и много комплексов чтобы понять почему профессионалы принимают те или иные решения, они сразу записываются в "хипстоту".
а вот и подхипстор прибежал. от хипстеров отличается тем, что те хоть глупости, но недают, а подхипстор даже на это не способен. он только громко кричит — в надежде, что его заметят и посчитают не хуже остальных хипстеров.