На C++ пишут меньше прикладных программ, чем он того заслуживает, в первую очередь потому, что мало хороших прикладных библиотек. А вот хотелось бы выяснить: если бы на C++ были удобные библиотеки для всего-всего, то все перешли бы (обратно) на C++, или индусы в любом случае будут продолжать писать на Java, Python и т. п., потому что там сложнее обстрелять свои ноги? Для каких задач C++ останется неприменим даже с самыми лучшими библиотеками?
До последнего не верил в пирамиду Лебедева.
Re: Пределы C++
От:
Аноним
Дата:
02.06.08 07:51
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:
RO>На C++ пишут меньше прикладных программ, чем он того заслуживает, в первую очередь потому, что мало хороших прикладных библиотек. А вот хотелось бы выяснить: если бы на C++ были удобные библиотеки для всего-всего, то все перешли бы (обратно) на C++, или индусы в любом случае будут продолжать писать на Java, Python и т. п., потому что там сложнее обстрелять свои ноги? Для каких задач C++ останется неприменим даже с самыми лучшими библиотеками?
Здравствуйте, Roman Odaisky, Вы писали:
RO>На C++ пишут меньше прикладных программ, чем он того заслуживает, в первую очередь потому, что мало хороших прикладных библиотек. А вот хотелось бы выяснить: если бы на C++ были удобные библиотеки для всего-всего, то все перешли бы (обратно) на C++, или индусы в любом случае будут продолжать писать на Java, Python и т. п., потому что там сложнее обстрелять свои ноги? Для каких задач C++ останется неприменим даже с самыми лучшими библиотеками?
Я навскидку вижу такие больших проблемы, не решаемых библиотеками:
1. Отсутствие GC. На С++ крайне сложно писать прототипы и вообще заниматься "быстрой разработкой", просто потому что в С++ ресурсами приходится управлять вручную, в отличие от управляемых языков, в которых все объекты, будучи однажды созданными, живут вечно. В результате приходится продумывать схему владения, и ее не сменишь одним движением мизинца, что важно при быстрой разработке (в управляемых языках такой проблемы вообще не стоит).
2. Неудобный неоднозначный синтаксис, из-за которого практически невозможно написать инструменты типа resharper (одни заголовочные файлы чего стоят). Лучшее, что я видел в этом направлении — это XRefactory: тормозилово смертельное для мало-мальски большого проекта, работать практически невозможно.
Здравствуйте, Roman Odaisky, Вы писали:
RO>На C++ пишут меньше прикладных программ, чем он того заслуживает, в первую очередь потому, что мало хороших прикладных библиотек. А вот хотелось бы выяснить: если бы на C++ были удобные библиотеки для всего-всего, то все перешли бы (обратно) на C++, или индусы в любом случае будут продолжать писать на Java, Python и т. п., потому что там сложнее обстрелять свои ноги? Для каких задач C++ останется неприменим даже с самыми лучшими библиотеками?
зы (-не эксперт строго не судить) моё скромное мнение
1. Если платить будут больше и работы больше будет — то перейдут. А так зачем стреллять в ноги ?
2.
а)Web. Но это на мой взгляд и то с большими оговорками. Сделать можно всё... только вопрос времени. Нормальный веб сайт на С++ писать долговато.. Потом найти хостинг :-D нормальный.
б) script — скриптовые языки нужны. Как ни крути. С++ не скриптовый язык. Тоесть будь у него хоть куча библиотек и интеграция в броузеры — популярности JavaScript думаю врят ли добьётся
Здравствуйте, jazzer, Вы писали:
J>2. Неудобный неоднозначный синтаксис, из-за которого практически невозможно написать инструменты типа resharper (одни заголовочные файлы чего стоят). Лучшее, что я видел в этом направлении — это XRefactory: тормозилово смертельное для мало-мальски большого проекта, работать практически невозможно.
А VisualAssist?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, CreatorCray, Вы писали:
CC>Здравствуйте, jazzer, Вы писали:
J>>2. Неудобный неоднозначный синтаксис, из-за которого практически невозможно написать инструменты типа resharper (одни заголовочные файлы чего стоят). Лучшее, что я видел в этом направлении — это XRefactory: тормозилово смертельное для мало-мальски большого проекта, работать практически невозможно. CC>А VisualAssist?
Насколько я помню, у него были проблемы с CRTP и operator->.
Ну и макросы он, вроде, дебажить никак не помогал.
Здравствуйте, Roman Odaisky, Вы писали:
RO>На C++ пишут меньше прикладных программ, чем он того заслуживает, в первую очередь потому, что мало хороших прикладных библиотек. А вот хотелось бы выяснить: если бы на C++ были удобные библиотеки для всего-всего, то все перешли бы (обратно) на C++, или индусы в любом случае будут продолжать писать на Java, Python и т. п., потому что там сложнее обстрелять свои ноги? Для каких задач C++ останется неприменим даже с самыми лучшими библиотеками?
Кстати, пример одной такое JDK-подобной библиотеки для "всего-всего", это Qt. Но от индусов это не помогает, достаточно посмотреть на уровень вопросов с домейнов индуских аутсорсинговых фирм на мейл-листе qt. Чего только стоит легендарный "memory free tool".
"To protect people you must slay people. To let people live you must let people die. This is the true teaching of the sword."
-Seijuro Hiko, "Rurouni Kensin"
Здравствуйте, jazzer, Вы писали:
CC>>А VisualAssist?
J>Насколько я помню, у него были проблемы с CRTP и operator->.
Вроде как с последними версиями не наблюдалось.
J>Ну и макросы он, вроде, дебажить никак не помогал.
И не должен был — это тул не для дебага.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Понимаешь язык должен иметь некоторую степень свободы, чтобы добавление новых фич не вызывало его черезмерное усложнение. Компилируемые языки уже можно сказать исчерпали свою свободу, остались только интерпретируемые юзать + декларотивное программирование.
Хочешь нехочешь, а какой-нить интерпретируемый придётся изучать. Конечено C++ при этом не вытеснится, но ему будет тесно.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, CreatorCray, Вы писали:
CC>Здравствуйте, jazzer, Вы писали:
CC>>>А VisualAssist?
J>>Насколько я помню, у него были проблемы с CRTP и operator->. CC>Вроде как с последними версиями не наблюдалось.
Это хорошо
J>>Ну и макросы он, вроде, дебажить никак не помогал. CC>И не должен был — это тул не для дебага.
Я имею в виду, если его спросить, где используется какой-то член — он заглянет во все макросы?
А если его попросить переименовать что-то?
Здравствуйте, Roman Odaisky, Вы писали:
RO>На C++ пишут меньше прикладных программ, чем он того заслуживает, в первую очередь потому, что мало хороших прикладных библиотек. А вот хотелось бы выяснить: если бы на C++ были удобные библиотеки для всего-всего, то все перешли бы (обратно) на C++, или индусы в любом случае будут продолжать писать на Java, Python и т. п., потому что там сложнее обстрелять свои ноги? Для каких задач C++ останется неприменим даже с самыми лучшими библиотеками?
Все нижеизложенное является крайне субъективным имхом, т.к. прошу именно так это и воспринимать.
На мой взгляд, нужно не столько рассматривать конкретные направления и предметные области, сколько условия, в которых выполняется разработка. C++ -- это язык для небольших команд, в которых предъявляются высокие требования к каждому разработчику. Маленькая команда является залогом того, что информация об особенностях работы различных частей программы распространяется быстро, идет от нужных людей и попадает в нужные уши. Высокий уровень знаний, большой опыт и изрядная доля зравого смысла у разработчиков является залогом отсутсвия явных ляпов и, как следствие, не приходится тратить бессоные ночи в поиске совсем уж тупых багов.
Нарушение этих условий (рост команды, попадание в команду недостаточно подготовленных программистов) будет вести к проблемам, а то и провалу проекта. Поскольку здесь начнут сказываться самые разные факторы, в том числе и особенности самого языка:
— адресная арифметика и отсутствие контроля за выходом за пределы векторов/буферов;
— отсутствие сборки мусора;
— исключениями могут быть любые объекты, а не только наследники std::exception;
— сложный синтаксис и отсутствие из-за этого продвинутых IDE, анализаторов исходных текстов, автоматизированного рефакторинга и пр.
В принципе, к этим пунктам надо было бы добавить еще и существующие зоопарки библиотек для С++, которые временами сложно сопрягать друг с другом. Но раз уж мы верим в то, что для C++ появятся "самые лучшие библиотеки", то это не должно нас останавливать.
Еще одним фактором является наличие у программистов желания программировать на C++. Все-таки инструмент у разработчика должен быть любимым инструментом. Если кому-то не нравится C++, то сложно ожидать от такого программиста хорошо написанного кода. Поскольку часть его мозга во время программирования будет занято проклятиями в адрес C++, его авторов и тех обстоятельств, которые заставляют человека писать на С++, а не на Java/C# или более понтовых Haskel-ей с OCaml-ами.
Но тут есть вопрос: а насколько привлекательным C++ является для начинающих программистов? Ладно те, кто начинал, когда Java еще не было. Им волей-неволей приходилось к C++ привыкать, а там уже для некоторых сработал принцип "стерпится-слюбится". Но вот сейчас сложно найти причины для массового изучения C++ подрастающим поколением. Единичные случаи, к счастью, есть. Но вот не верю я в то, что молодежь откажется от Java с IDEA или от C# с Reshaper-ом. Может еще и есть какое-то знание C++ у студентов наших ВУЗ-ов за счет того, что преподаватели сами не слишком спешно осваивают Java/C# и продолжают читать C/C++ по материалам N-летней давности. Но я сам видел, как толковые студенты самостоятельно изучают Java и C# или ходят на курсы в буржуинские офшорные компании для того, чтобы попасть туда не работу.
А раз так события развиваются, то возникает еще один фактор против C++: ухудшающася ситуация с поиском новых разработчиков, способных продолжать развитие уже начатых C++ проектов.
Так что пределы C++ следует искать в человеческом факторе, а не в предметных областях. Тем более, что у C++ всегда существовали и существуют конкуренты, способные по своим техническим параметрам заменить C++ в той или иной области. Даже там где нужна скорость и доступ к железу C++ может быть заменен C, Pascal-ем или Ada/Modula-2/Eiffel.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: Пределы C++
От:
Аноним
Дата:
02.06.08 11:50
Оценка:
Здравствуйте, jazzer, Вы писали:
J>Я навскидку вижу такие больших проблемы, не решаемых библиотеками: J>1. Отсутствие GC. На С++ крайне сложно писать прототипы и вообще заниматься "быстрой разработкой", просто потому что в С++ ресурсами приходится управлять вручную, в отличие от управляемых языков, в которых все объекты, будучи однажды созданными, живут вечно. В результате приходится продумывать схему владения, и ее не сменишь одним движением мизинца, что важно при быстрой разработке (в управляемых языках такой проблемы вообще не стоит).
Раньше нужно было не забыть delete/free, а теперь нужно знать в деталях как работает GC
Здравствуйте, jazzer, Вы писали:
J>>>Ну и макросы он, вроде, дебажить никак не помогал. CC>>И не должен был — это тул не для дебага. J>Я имею в виду, если его спросить, где используется какой-то член — он заглянет во все макросы?
Вроде как да. Я макросами пользуюсь только в исключительных случаях так что попробовать особо не на чем.
Вот те пример (искал m_roundKey).
J>А если его попросить переименовать что-то?
Есть такая в нем фича — refactor rename — покури примеры на wholetomato.com, я все равно не опишу так, как на картинке увидишь.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, neFormal, Вы писали:
F>Здравствуйте, eao197, Вы писали:
E>>или более понтовых Haskel-ей с OCaml-ами.
F>просто из любопытства: а этим действительно можно понтануться?.
Легко!
F>может есть смысл их выучить..
То, что нас не убивает, делает нас сильнее
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Я уженеоднократно говорил, основной недостаток — что в С++ постоянно пытаются реализовать сферический язык в вакууме.
Потоков и объектов синхронизации нет — не на всех системах есть потоки. ГУЯ нет — не на всех системах есть гуй. Средств для чтения кталогов нет — не на всех системах есть каталоги. Я уже молчу о таком беспределе, как общение с базами данных!..
В результате получается, что писать что-то кроссплатформенное нереально сложно, приходится выдумывать ненужные слои абстракции и обрастать макросами.
Roman Odaisky пишет:
> На C++ пишут меньше прикладных программ, чем он того заслуживает, в > первую очередь потому, что мало хороших прикладных библиотек. А вот > хотелось бы выяснить: если бы на C++ были удобные библиотеки для > всего-всего, то все перешли бы (обратно) на C++, или индусы в любом > случае будут продолжать писать на Java, Python и т. п., потому что там > сложнее обстрелять свои ноги?
ДА !! Я бы — ДА !.
Да мы и сейчас в общем пишем много прикладного ПО именно на С++.
jazzer пишет:
> 1. Отсутствие GC. На С++ крайне сложно писать прототипы и вообще > заниматься "быстрой разработкой", просто потому что в С++ ресурсами > приходится управлять вручную, в отличие от управляемых языков, в которых
IMO — ерунда. SmartPointer -и вперед.
AutoPointer — и еще быстрее.
Да и без них для меня лично это никогда проблемой не было.
Циклически замкнутые ссылки IMO редки и
все равно, как правило, требуют внимания при проектировании, даже
в языках с GC.
> 2. Неудобный неоднозначный синтаксис, из-за которого практически > невозможно написать инструменты типа resharper (одни заголовочные файлы
lollipop пишет:
> а)Web. Но это на мой взгляд и то с большими оговорками. Сделать можно > всё... только вопрос времени. Нормальный веб сайт на С++ писать > долговато..
Web сайт на C++ писать не нужно. Web сайт вообще писать не нужно.
> б) script — скриптовые языки нужны. Как ни крути. С++ не скриптовый > язык. Тоесть будь у него хоть куча библиотек и интеграция в броузеры — > популярности JavaScript думаю врят ли добьётся
А при чем здесь это ? Не, это здесь ни при чем. Ни скриптовые языки, ни
Web-программирование. Ни на фиг не нужно это делать все на С++.