Самый красивый C++-код находится в тех частях проекта, доставшегося на поддержку, куда никогда не приходилось лазить прибивать глюки ;) Соответственно, как он выглядит, этот красивый C++-код, никому не ведомо...
Ну ещё Qt... с++ там несколько модифицирован... но код всё равно очень хорош... разве что только монстрообразен... а насчёт красоты бууста... ну в некотором смысле деёствительно красивый... настолько, насколько могут быть красивыми костыли... там присутствуют гениальнейшие имхо решения, только вот все они пытаются сделать максимально удобный костыль к с++... хотя кончено буст - маст рид, очень развивает воображение :)
Ниасилившие C++? А что там асиливать, гавно гавном, тупо и криво.
Имеешь что сказать супротив? Тогда покажи таки "красивый" код на C++. Я твёрдо убеждён в том, что такого кода не существует, за последние 15 лет не видел ни единого примера.
ну и что? да, си-аут тут действительно хуже... но хотябы налажать посложне... не надо помнить типы и менять их по всем принтфам если вдруг тип переменной изменил. да, вообще потоки в с++ реализваны худо... но ты зацени код гтк. повесть о том, как же тяжело писать объектно на сях...
> Нед. Млин, сплошное уроцтво даже по сравнению с сями, даже в мелочах.
Да ясно все с вами. Наверное, код
printf ("a=%d, b=%d, c=%d\n", a, b, c);
не является кодом на C++. И скажите еще, что вывести три значения можно только так:
std::cout << "a=" << a << ", b=" << b << ", c=" << c << std::endl;
А еще скажите, что это реально красивый и понятный способ писать проги. И еще - самое главное - именно в этом printf ("a=%d, b=%d, c=%d\n", a, b, c); и заключена истинная красота языка.
Теперь представь, что вместо std:cout у тебя окажется stream, обслуживающий лог-файл. В С++ ничего для этого ломать не придётся, а на сях баянище очередной городить. Абстракция в этом месте нифига не вредит. У С++, имхо, проблема в том, что он недостаточно высокоуровневый для нынешнего мейнстрима, поэтому и видим повсеместное распространение языков с более высокой степенью абстракции.
На кой чёрт мне париться с теми же шаблонами, когда, допустим, лисповские макросы при меньшей сложности дают несоизмеримо больше возможностей?
Идеальный язык должен состоять из одной инструкции: (do-it-all-in-the-best-way-and-do-not-bother-me). Желательно, чтобы дао открывалось по истечению многих лет упорного самосовершенствования, дабы работодатель избавлял от необходимости зарабатывать на кусок хлеба с икрой только просветленных гуру.
>Идеальный язык должен состоять из одной инструкции: (do-it-all-in-the-best-way-and-do-not-bother-me). Желательно, чтобы дао открывалось по истечению многих лет упорного самосовершенствования, дабы работодатель избавлял от необходимости зарабатывать на кусок хлеба с икрой только просветленных гуру.
а чё интересно в микроконтроллерах только гуру просветляются? зачем-то для каждого нового прибора изобретают очередной велосипед. не для научного эксперимента, а так чисто: позырить.
Невольно вспоминаешь "Искусство программирования для Unix" Э. Реймонда...
Для каждой задачи есть свой инструмент, не так ли?
Например, не понятно в чем же заключается эта самая "говнистость" С++?
Просветите, пожалуйста...
>Нед. Млин, сплошное уроцтво даже по сравнению с сями, даже в мелочах.
>printf ("a=%d, b=%d, c=%d\n", a, b, c);
>std::cout << "a=" << a << ", b=" << b << ", c=" << c << std::endl;
Присоединяюсь к вопросу: все ниасилившие отметились или ещё нет?
Хочется иероглифов printf-а --- есть std::string, в котором есть sprintf. Когда не знаешь --- лучше просто молчать.
Остальным: красиво можно писать хоть на перле (сам видел). Если руки из того места растут. А если из жопы, то криво будет хоть на С, хоть на Яве, хоть на Питоне. Возьмите для сравнения mpc и gmpc. Оба на С, но в одном всё ясно с первого взгляда, в другом полный ужоснах.
Ну и самое главное: красота кода --- она не в закорючках. Если это непонятно, то остаётся надеяться, что скоро станет понятно. Ибо если не станет --- значит человек сдалал ошибку, выбрав программирование своей стезёй.
У Квазимодо, возможно, были очень красивые глаза....
> Хочется иероглифов printf-а --- есть std::string, в котором есть sprintf.
s*printf -- это уже low level, там морока с выделением памяти и пр. А "иероглифы printf-a" имеют свои преимущества. Например, при локализации. Но на этот случай есть boost::format, правда.
Нельзя красиво писать ни на Си++, ни на Перле, ни на любом другом чрезмерно низкоуровневом и ограниченном языке. Из говна нельзя слепить вкусный тортик, как ни старайся. Просто ты по настоящему красивого кода не видел, вот тебе и кажется C++-ное говно красивым.
Красота кода - в адекватности выраженных в коде абстракциях собственно предметной области решаемой задачи. Если этого нет, то код красивым быть не может. C++ слишком низкоуровневый язык, не имеющий никаких средств для выражения высокоуровневых абстракций, и, следовательно, код на C++ красивым быть не может просто по определению.
>Красота кода - в адекватности выраженных в коде абстракциях собственно предметной области решаемой задачи.
Мне-то не надо рассказывать. Расскажи тем, кому закорючки не нравятся.
>C++ слишком низкоуровневый язык, не имеющий никаких средств для выражения высокоуровневых абстракций, и, следовательно, код на C++ красивым быть не может просто по определению.
А пример привести наш уважаемый анонимный аналитик постеснялся? Или он просто боится сесть в лужу, в случае если его пример вдруг окажется неподходящим? ;)
Ну или C++ окажется неподходящим языком для решения подобной задачи. Не нужно пытаться вкручивать шурупы молотком.
Гигиена суксь. А в D только гигиена, без варинтов. Из говна пули не вылепить, из всяких Cyclone, CCured и D не получится ничего хорошего. Нельзя одной жопой сидеть на двух стульях - или высокоуровневый язык, или низкоуровневый Си-образный.
> А пример привести наш уважаемый анонимный аналитик постеснялся?
Пример чего? Высокоуровневой абстракции, которую не нарисуешь на C++ адекватно? Да что угодно - нет вообще ни единой абстракции, которая бы отображалась как следует на C++. FSM не нарисуешь, функции высшего порядка тоже...
>Ну или C++ окажется неподходящим языком для решения подобной задачи.
Нет такой задачи, для которой C++ оказался бы подходящим языком.
Кроме тройки перечисленных - ничего серьёзного не было. Понятно, что хочется, но таки нельзя. Совсем. Потому и идут люди по совсем другому пути - высокоуровневый метаязык с генерацией низкоуровневого кода на Си там, где это необходимо. Примеры очень адекватного применения данного подхода - Mathematica и Maple V.
Счас тебе "уважаемый" анонимный аналитег расскажет, что движки надо пейсать на лиспе или хаскеле. Либо на чистом С. В зависимости от его, анонимуса, вероисповедания.