топик напомнил мне о статье A Critique of C++.
Те же инлайны являются примером того, что Айан Джойнер называет bookkeeping — т.е. деталей реализации, которые в принципе может решить компилятор, но которые в C++ ложатся на плечи программера.
И это не единственный пример.
Есть какие-либо мнения по этому поводу?
Тем более, что статья несколько старая — 1996.
Я не очень знаком с C#, но может он решает большую часть проблем?
топик напомнил мне о статье К>A Critique of C++. К>Те же инлайны являются примером того, что Айан Джойнер называет bookkeeping — т.е. деталей реализации, которые в принципе может решить компилятор, но которые в C++ ложатся на плечи программера. К>И это не единственный пример. К>Есть какие-либо мнения по этому поводу? К>Тем более, что статья несколько старая — 1996. К>Я не очень знаком с C#, но может он решает большую часть проблем?
Все проблемы решает хорошая доза мышьяка или стрихнина внутривенно
А если честно, то что тебе нужно? Не нравится C++ переходи на Жабу!
-------------------------------------------------------------------
Вызывает презедент к себе коров и говорит:
— Ну, что будем сдавать, молоко или мясо?
(с) Г. Явлинский TV6 — Герой дня (18.04.2002)
топик напомнил мне о статье К>>A Critique of C++. К>>Те же инлайны являются примером того, что Айан Джойнер называет bookkeeping — т.е. деталей реализации, которые в принципе может решить компилятор, но которые в C++ ложатся на плечи программера. К>>И это не единственный пример. К>>Есть какие-либо мнения по этому поводу? К>>Тем более, что статья несколько старая — 1996. К>>Я не очень знаком с C#, но может он решает большую часть проблем?
G>Все проблемы решает хорошая доза мышьяка или стрихнина внутривенно G>
Спасибо — такой реакции и ожидал.. G>А если честно, то что тебе нужно? Не нравится C++ переходи на Жабу!
Ага — Жаба тоже не дело, если разобраться, хотя как язык она чуть получше будет, но с JVM мучаться — увольте!
Здравствуйте Курилка, Вы писали:
G>>Все проблемы решает хорошая доза мышьяка или стрихнина внутривенно G>> К>Спасибо — такой реакции и ожидал.. G>>А если честно, то что тебе нужно? Не нравится C++ переходи на Жабу! К>Ага — Жаба тоже не дело, если разобраться, хотя как язык она чуть получше будет, но с JVM мучаться — увольте!
Ну тогда тебе подойдёт первый вариант!
-------------------------------------------------------------------
Вызывает презедент к себе коров и говорит:
— Ну, что будем сдавать, молоко или мясо?
(с) Г. Явлинский TV6 — Герой дня (18.04.2002)
Здравствуйте Gambler, Вы писали:
G>Здравствуйте Курилка, Вы писали:
G>>>Все проблемы решает хорошая доза мышьяка или стрихнина внутривенно G>>> К>>Спасибо — такой реакции и ожидал.. G>>>А если честно, то что тебе нужно? Не нравится C++ переходи на Жабу! К>>Ага — Жаба тоже не дело, если разобраться, хотя как язык она чуть получше будет, но с JVM мучаться — увольте!
G>Ну тогда тебе подойдёт первый вариант!
Огроооомное спасибо за столь конструктивную дискуссию!
Не принимай близко к сердцу тот топик и эту статью. Там спорят теоретики о больших материях, они даже 'стандарт' с большой буквы назвают Лично мне по барабану какой у inline linkage и ручной оптимизацией я буду заниматься только в крайних случаях, и использовать для этого буду сначала приличный профайлер типа Numega TrueTime, а уже потом советы непримеримых трактовщиков стандарта
К>Те же инлайны являются примером того, что Айан Джойнер называет bookkeeping — т.е. деталей реализации, которые в принципе может решить компилятор, но которые в C++ ложатся на плечи программера.
Вот-вот, и в большиестве случаев компилятор сделает более оптимальный код. Я не говорю во всех, я говорю в большиестве.
К>И это не единственный пример. К>Есть какие-либо мнения по этому поводу? К>Тем более, что статья несколько старая — 1996. К>Я не очень знаком с C#, но может он решает большую часть проблем?
Шарп хороший язык. Многие вещи на нём делать проще и приятнее. В этом смысле он удобнее C++, но C#, чтобы о нём не говорили, всего лишь урезанный клон C++ с некоторыми добавленными возможностями. А о том лучше он или нет C++ мы поговорим после того как в нём появятся шаблоны.
ЗЫ. А насчёт сабжа... Хотелось бы услышать определение слова 'крут', прежде чем отвечать на это вопрос. Если пока такое определение не формулируется, то даже и не сомневайся. C++ rulez forever А все эти джавы и шарпы просто детский сад.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте IT, Вы писали:
IT>ЗЫ. А насчёт сабжа... Хотелось бы услышать определение слова 'крут', прежде чем отвечать на это вопрос. Если пока такое определение не формулируется, то даже и не сомневайся. C++ rulez forever А все эти джавы и шарпы просто детский сад.
Да в этом проблема... Да же не знаю, как требования сформулировать чётко — всё-таки я не умудрённый годами теоретик компьютерных наук и ООП. Но доводы Джойнера мне показались очень убедительными, да и примеры из собственной практики, да и даже из рсдн склоняют к мысли, что всё-же при всей мощи c++ — это далеко не лучшее решение, многие вещи реализуемы гораздо проще. И, в принципе, при желании тот же c++ (вот тут на меня посыпится наверно град замечаний о совместимости и т.д) можно довести до гораздо более нормального состояния.
И ещё раз извините, если я своей ересью запятнал великий и могучий c++.
Здравствуйте Курилка, Вы писали:
К>Да в этом проблема... Да же не знаю, как требования сформулировать чётко — всё-таки я не умудрённый годами теоретик компьютерных наук и ООП. Но доводы Джойнера мне показались очень убедительными, да и примеры из собственной практики, да и даже из рсдн склоняют к мысли, что всё-же при всей мощи c++ — это далеко не лучшее решение, многие вещи реализуемы гораздо проще. И, в принципе, при желании тот же c++ (вот тут на меня посыпится наверно град замечаний о совместимости и т.д) можно довести до гораздо более нормального состояния. К>И ещё раз извините, если я своей ересью запятнал великий и могучий c++.
Если тебе кажется что "...многие вещи реализуемы гораздо проще...",
так сделай или скажи конкретно как это можно сделать.
Иначе разговор получается пустой...
Здравствуйте Курилка, Вы писали:
К>Да в этом проблема... Да же не знаю, как требования сформулировать чётко — всё-таки я не умудрённый годами теоретик компьютерных наук и ООП. Но доводы Джойнера мне показались очень убедительными, да и примеры из собственной практики, да и даже из рсдн склоняют к мысли, что всё-же при всей мощи c++ — это далеко не лучшее решение, многие вещи реализуемы гораздо проще. И, в принципе, при желании тот же c++ (вот тут на меня посыпится наверно град замечаний о совместимости и т.д) можно довести до гораздо более нормального состояния.
Про совместимость, переносимость, производительность и распространенность C++ тебе и так скажут. Я же хотел бы кое в чем согласиться.
Да, действительно, нынешняя ситуация напоминает переворот в средневековой военной тактике, когда были изобретены арбалеты. Рыцарь, который готовился и обучался военному делу в течение 20 лет, легко убивался человеком, который 2 месяца тренировался с арбалетом.
Язык C++, действительно, довольно сложен — это один из главных его недостатков. И за полгода подготовить с нуля здравомыслящего программиста на нем невозможно (а на VB и шарпе — похоже, это нынешняя реальность). Только так ли это сейчас важно?
Во-первых, религиозные споры о "крутости" какого-либо языка или средства разработки уже не в моде. Первую дорожку проложила архитектура COM. Высокопрофессиональный (и, кстати, высокооплачиваемый) программист на C++ создает компоненты, реализующие сложный GUI или действия на уровне API, а море его коллег использует их из VB. Теперь же, учитывая .NET, все еще более запущено :) По сути, C# отличается от VB.NET и от Perl.NET только синтаксисом! Создав класс в программе на VB, можно унаследоваться от него в C#, и наоборот.
Во-вторых, заказчики рассматривают только результаты работы — им неважно, что ты использовал Супер(tm) Optimized FrameWork+(R), главное, чтобы было сделано в срок и не глючило.
В-третьих, мне понравилась мысль, которую высказал VladD2: по-настоящему хорошие программисты на VB, Delphi и других RAD-остях получаются из программистов на C++. Это действительно так.
К>И ещё раз извините, если я своей ересью запятнал великий и могучий c++.
Вот это, кстати, уже подстрекательство к религиозному спору. :)
Здравствуйте Topi_Nambur, Вы писали:
TN>Здравствуйте Курилка, Вы писали:
К>>Да в этом проблема... Да же не знаю, как требования сформулировать чётко — всё-таки я не умудрённый годами теоретик компьютерных наук и ООП. Но доводы Джойнера мне показались очень убедительными, да и примеры из собственной практики, да и даже из рсдн склоняют к мысли, что всё-же при всей мощи c++ — это далеко не лучшее решение, многие вещи реализуемы гораздо проще. И, в принципе, при желании тот же c++ (вот тут на меня посыпится наверно град замечаний о совместимости и т.д) можно довести до гораздо более нормального состояния. К>>И ещё раз извините, если я своей ересью запятнал великий и могучий c++.
TN>Если тебе кажется что "...многие вещи реализуемы гораздо проще...", TN>так сделай или скажи конкретно как это можно сделать. TN>Иначе разговор получается пустой...
Замечательную фразу читал когдата в одной конференции по поводу религиозного спора. Цитирую (не дословно):
"Нечего скубаться, шо контора купит, на том и пишем". Начальстово оно такое, DBASE значить DBASE и все тут, а вы шаблоны, красявости, оптимизация
Эх
Здравствуйте IT, Вы писали:
IT>Шарп хороший язык. Многие вещи на нём делать проще и приятнее. В этом смысле он удобнее C++, но C#, чтобы о нём не говорили, всего лишь урезанный клон C++ с некоторыми добавленными возможностями. А о том лучше он или нет C++ мы поговорим после того как в нём появятся шаблоны.
Да. да. (смущенно). И я бы попросил еще нормальный деструктор для value-типов.
IT>ЗЫ. А насчёт сабжа... Хотелось бы услышать определение слова 'крут', прежде чем отвечать на это вопрос. Если пока такое определение не формулируется, то даже и не сомневайся. C++ rulez forever А все эти джавы и шарпы просто детский сад.
При разбитии рутого прэдмэта недолжно вытекать жидкости. Если вытикает желтая жидкость, то это прэдмэт в смятку, ну и т.д.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте Курилка, Вы писали:
К>Те же инлайны являются примером того, что Айан Джойнер называет bookkeeping — т.е. деталей реализации, которые в принципе может решить компилятор, но которые в C++ ложатся на плечи программера.
Та, ты задумайся... любой мало-мальски достойный комплятор умеет сам определять делать функцию инлайном или нет. Директива inline — это всего лишь право программиста сказать свое слово по этому поводу. Перефразируя вышесказанное inline (в частности) и C++ (в общем) дает то главное, чего нехватает в других языках СВОБОДЫ ВЫБОРА причем не для компилятора или фирмы ее произведшей, а ДЛЯ ПРОГРАММИСТА, т.е. для меня, тебя и вооон того (пользуясь случаем передам привет IT ). Причем это проявляется не только в inline, но и во всем духе языка. Хочешь пройтись по памяти? Пожалуста... Не хочешь? Вот тебе методы как этого не делать. У C++ есть только два недостатка: 1) сысокая сложнось (што иногда приводит к ползанью на брюхе в совершенно простых ситуациях), 2) большое количество слабо подготовленных, или просто марально неустойчивых личностей (хе-хе) которые лезут использовать этот язык и тем самым дескридитируют. (перед пинками и плевками прошу обратить внимание, на смайлик ).
Все эти Явы, Шарпы и Диии, как раз и пытаются устранить эту самую сложность, но иногда перегибают палку, хотя стройность Шарпа действительно подкупает...
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте Курилка, Вы писали:
К>Ага — Жаба тоже не дело, если разобраться, хотя как язык она чуть получше будет, но с JVM мучаться — увольте!
Самое, что интересное (и поверь для меня очень даже печальное), что с таким мировазрением через пару тройку лет и уволят. Причем с записю в трудовой "Как морально устаревший груз".
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте Курилка, Вы писали:
К>Здравствуйте Gambler, Вы писали:
G>>Здравствуйте Курилка, Вы писали:
G>>>>Все проблемы решает хорошая доза мышьяка или стрихнина внутривенно G>>>> К>>>Спасибо — такой реакции и ожидал.. G>>>>А если честно, то что тебе нужно? Не нравится C++ переходи на Жабу! К>>>Ага — Жаба тоже не дело, если разобраться, хотя как язык она чуть получше будет, но с JVM мучаться — увольте!
G>>Ну тогда тебе подойдёт первый вариант!
К>Огроооомное спасибо за столь конструктивную дискуссию!
Ну, а ты сам можешь чтонибудь предложить конструктивного?
А, то Жаба с Шарпом тебе не нравятся хотя они порой переганяют C++-сные компиляторы и по развитию библиотек переплюнули все что было создано для С++.
С++ тоже...
Свой язык (я так понимаю) ты даже в проекте предложить не можешь.
Вот Gambler и прикалывается от нечего делать.
Ты предлагай, а мы полсушаем.
Я вон сколько уже рацух прдложил и для С++ и для Шарпа, а толку чуть. Не слышно нас.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
К>...и даже из рсдн склоняют к мысли, что всё-же при всей мощи c++ — это далеко не лучшее решение, многие вещи реализуемы гораздо проще.
Да пойми ты... идеала достичь нелья! К нему можно и нужно стремиться, но если кто-нибудь его достигнет, то просто подымится планка того самого идеала.
ООП — это такой же промежеточный шаг (и не факт, что правильный) совершенству как структурное программирование на заре его становления. Компонентная модель, похоже, тоже шаг в некотором направление. Дельфи и .Net пытаются соединить эти две парадигмы, но далее будут новые, новые, и новые. И обо всех них будут говорить, что ни лучше, проще, круче, но нужны они или нет решать будут не теоретики, сэрая масса тык сызыть, т.е. мы с вами. С++ прошел проверку временем, т.е. огнем, водой и медными трубами. Шарп и Ява вообще не языки если смотреть в корень, а их успех пока основан на баксовой накачке. Через десять лет с этими экспонатами все решиться само собой. Они лили вымрут или будут жить. Серьезно можно говорить только о тенденциях. Мое мнение, что все идет к тому, что фирмы рипа MS и Sun стремятся вытеснить С++ в нишу низкоуровневого программирования, для крутых гуру. Естественно, что в подсознании у них живет мысль, что такие программисты если уже не работают на них, то будут работать только у них... Шарпы, Васики, Дельфи, Явя — это для прикладного уровня. Эфил и другие Перлы — для любителей экзотики. Ну, и т.п. Скорее все будет если не совсем так, то очень похоже. Но перспективы MS здесь несколько более радужные (напомню, по-моему). Об этом очень хорошо сказал Дон Бокс: "Sun делает Яву для продажи, а MS .Net для себя (в том числе), т.е. Sun сам пишет на C/C++, а остальным толкает Яву. MS же делает платформу для себя.". И это действительно так. Но это не человеколюбие.
Я бы перефразировал его так... "MS понимает, что рано или поздно Windows будет кем-то вытеснен. И MS делает новую платформу, чтобы вытеснить свою Windows, т.е. сделать тот же фарс как в девяностых, когда они добились, что все начали говорить о конкуренции NT и 9x. Ява и Линукс, будучи не самыми идеальными реализациями (мягко скажем), тем не менее сильно давят MS на хвост. И .Net (но не та сказка для дебилов которая выдается в пресс-релизах), а тот .Net который позлят скомпилировать любую Windows-программу в переносимый независимый от машины код, и тот который, за счет верификации, позволит в будущем избавить MS от обвинений в большем количестве багов. По сути .Net это больше чем программная платформа. Это и полнофункциональная переносимая ОС (причем перенасимая под драйверные носители типа Ликукса или OS/390), и свой ассемблер (плевать мы хотели на разные Интелы), и стандарт на библиотеки (большой привет Страуструпам), скрипты работающие со скоростью C++-программ (пламенный привет PHP, Пилону и Перлу для всех платформ несовместимых с .Net), и скрптлеты (пользуясь случаем, привет Sun-у). Короче, не даром MS вбухивает в эту технологию такие бабки. А Эфил... Что Эфил? Это всего лишь один язык который уже работает под тем же .Net. Ну, а C++ в .Net — это клей позволяющий легко связать старое с новым миром и средство оптимизации дающее возможность того самого ВЫБОРА которого небыль, нет и не будет в VB. В .Net можно создать класс на C++, изменить его функциональность (через наследование) в Шарме или Эфиле, и потом снова использовать его из С++.
Так, что рассуждать какой язык лучше просто бессмысленно. На сегодня это уже не важно. Сегодня речь идет о выборе платформы. Ну, а завтра пойдет еще о чем ни будь и кроме флйма и бесполезных споров такие обсуждения ничего не дадут. IT уже как-то говорил, что все предубеждения со временем пройдут, а для тех кто не хочет с этим мерится я советую зайти на ixbt и сделать поиск по постингам тов. Рыбинкина, который и сейчас убеждает, что лучше С и его замечательного интерпретатора на С-шных массивах ничего нет.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте VladD2, Вы писали:
К>>...и даже из рсдн склоняют к мысли, что всё-же при всей мощи c++ — это далеко не лучшее решение, многие вещи реализуемы гораздо проще.
VD>Да пойми ты...
[skip]
Фундаментально
VD>IT уже как-то говорил, что все предубеждения со временем пройдут...
Могу добавить: и появятся новые!
И самое прикольное, что в следующий раз, после того как появится что-то ещё на смену .NET её будут защищать те, кто на ней выростет. А те, кто сейчас защищает C++ и Windows уже не будут так активны и просто спокойно перейдут на новую технологию, в первый раз что ли
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте IT, Вы писали:
IT>Могу добавить: и появятся новые!
Дык!
IT>И самое прикольное, что в следующий раз, после того как появится что-то ещё на смену .NET её будут защищать те, кто на ней выростет. А те, кто сейчас защищает C++ и Windows уже не будут так активны и просто спокойно перейдут на новую технологию, в первый раз что ли
я плякаль.
PS
Блин. Хоть бы одним галзком глянуть на будущего задогмаченного ортодокса .Net.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте VladD2, Вы писали:
VD>Здравствуйте Курилка, Вы писали:
К>>...и даже из рсдн склоняют к мысли, что всё-же при всей мощи c++ — это далеко не лучшее решение, многие вещи реализуемы гораздо проще.
VD>Да пойми ты... идеала достичь нелья! К нему можно и нужно стремиться, но если кто-нибудь его достигнет, то просто подымится планка того самого идеала.
Я и не говорю, что его достичь можно — просто моё мнение, что надо хотя бы к нему стремиться, а Си++ в этом отношении ИМХО не очень двигается. Выражаясь фигурально от него иногда попахивает "архаикой". А всё благодаря ригидности и многочисленности пишущей на ней братии.
[skip]
А с остальным я практически полностью согласен.