Пределы C++
От: Roman Odaisky Украина  
Дата: 02.06.08 07:47
Оценка:
На C++ пишут меньше прикладных программ, чем он того заслуживает, в первую очередь потому, что мало хороших прикладных библиотек. А вот хотелось бы выяснить: если бы на C++ были удобные библиотеки для всего-всего, то все перешли бы (обратно) на C++, или индусы в любом случае будут продолжать писать на Java, Python и т. п., потому что там сложнее обстрелять свои ноги? Для каких задач C++ останется неприменим даже с самыми лучшими библиотеками?
До последнего не верил в пирамиду Лебедева.
Re: Пределы C++
От: Аноним  
Дата: 02.06.08 07:51
Оценка: :))) :))) :))) :)))
Здравствуйте, Roman Odaisky, Вы писали:

RO>На C++ пишут меньше прикладных программ, чем он того заслуживает, в первую очередь потому, что мало хороших прикладных библиотек. А вот хотелось бы выяснить: если бы на C++ были удобные библиотеки для всего-всего, то все перешли бы (обратно) на C++, или индусы в любом случае будут продолжать писать на Java, Python и т. п., потому что там сложнее обстрелять свои ноги? Для каких задач C++ останется неприменим даже с самыми лучшими библиотеками?


Да.
Re: Пределы C++
От: jazzer Россия Skype: enerjazzer
Дата: 02.06.08 08:02
Оценка: 1 (1)
Здравствуйте, Roman Odaisky, Вы писали:

RO>На C++ пишут меньше прикладных программ, чем он того заслуживает, в первую очередь потому, что мало хороших прикладных библиотек. А вот хотелось бы выяснить: если бы на C++ были удобные библиотеки для всего-всего, то все перешли бы (обратно) на C++, или индусы в любом случае будут продолжать писать на Java, Python и т. п., потому что там сложнее обстрелять свои ноги? Для каких задач C++ останется неприменим даже с самыми лучшими библиотеками?


Я навскидку вижу такие больших проблемы, не решаемых библиотеками:
1. Отсутствие GC. На С++ крайне сложно писать прототипы и вообще заниматься "быстрой разработкой", просто потому что в С++ ресурсами приходится управлять вручную, в отличие от управляемых языков, в которых все объекты, будучи однажды созданными, живут вечно. В результате приходится продумывать схему владения, и ее не сменишь одним движением мизинца, что важно при быстрой разработке (в управляемых языках такой проблемы вообще не стоит).
2. Неудобный неоднозначный синтаксис, из-за которого практически невозможно написать инструменты типа resharper (одни заголовочные файлы чего стоят). Лучшее, что я видел в этом направлении — это XRefactory: тормозилово смертельное для мало-мальски большого проекта, работать практически невозможно.

Если подумаю еще — найду еще
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
gc синтаксис
Re: Пределы C++
От: lollipop  
Дата: 02.06.08 08:10
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>На C++ пишут меньше прикладных программ, чем он того заслуживает, в первую очередь потому, что мало хороших прикладных библиотек. А вот хотелось бы выяснить: если бы на C++ были удобные библиотеки для всего-всего, то все перешли бы (обратно) на C++, или индусы в любом случае будут продолжать писать на Java, Python и т. п., потому что там сложнее обстрелять свои ноги? Для каких задач C++ останется неприменим даже с самыми лучшими библиотеками?


зы (-не эксперт строго не судить) моё скромное мнение
1. Если платить будут больше и работы больше будет — то перейдут. А так зачем стреллять в ноги ?
2.
а)Web. Но это на мой взгляд и то с большими оговорками. Сделать можно всё... только вопрос времени. Нормальный веб сайт на С++ писать долговато.. Потом найти хостинг :-D нормальный.
б) script — скриптовые языки нужны. Как ни крути. С++ не скриптовый язык. Тоесть будь у него хоть куча библиотек и интеграция в броузеры — популярности JavaScript думаю врят ли добьётся
Re[2]: Пределы C++
От: CreatorCray  
Дата: 02.06.08 08:56
Оценка:
Здравствуйте, jazzer, Вы писали:

J>2. Неудобный неоднозначный синтаксис, из-за которого практически невозможно написать инструменты типа resharper (одни заголовочные файлы чего стоят). Лучшее, что я видел в этом направлении — это XRefactory: тормозилово смертельное для мало-мальски большого проекта, работать практически невозможно.

А VisualAssist?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[3]: Пределы C++
От: jazzer Россия Skype: enerjazzer
Дата: 02.06.08 08:59
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, jazzer, Вы писали:


J>>2. Неудобный неоднозначный синтаксис, из-за которого практически невозможно написать инструменты типа resharper (одни заголовочные файлы чего стоят). Лучшее, что я видел в этом направлении — это XRefactory: тормозилово смертельное для мало-мальски большого проекта, работать практически невозможно.

CC>А VisualAssist?

Насколько я помню, у него были проблемы с CRTP и operator->.
Ну и макросы он, вроде, дебажить никак не помогал.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: Пределы C++
От: Zigmar Израиль  
Дата: 02.06.08 10:14
Оценка: :))) :)
Здравствуйте, 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"
Re[4]: Пределы C++
От: CreatorCray  
Дата: 02.06.08 10:16
Оценка:
Здравствуйте, jazzer, Вы писали:

CC>>А VisualAssist?


J>Насколько я помню, у него были проблемы с CRTP и operator->.

Вроде как с последними версиями не наблюдалось.

J>Ну и макросы он, вроде, дебажить никак не помогал.

И не должен был — это тул не для дебага.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re: Пределы C++
От: Vain Россия google.ru
Дата: 02.06.08 10:26
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

Понимаешь язык должен иметь некоторую степень свободы, чтобы добавление новых фич не вызывало его черезмерное усложнение. Компилируемые языки уже можно сказать исчерпали свою свободу, остались только интерпретируемые юзать + декларотивное программирование.
Хочешь нехочешь, а какой-нить интерпретируемый придётся изучать. Конечено C++ при этом не вытеснится, но ему будет тесно.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[5]: Пределы C++
От: jazzer Россия Skype: enerjazzer
Дата: 02.06.08 11:08
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, jazzer, Вы писали:


CC>>>А VisualAssist?


J>>Насколько я помню, у него были проблемы с CRTP и operator->.

CC>Вроде как с последними версиями не наблюдалось.

Это хорошо

J>>Ну и макросы он, вроде, дебажить никак не помогал.

CC>И не должен был — это тул не для дебага.
Я имею в виду, если его спросить, где используется какой-то член — он заглянет во все макросы?
А если его попросить переименовать что-то?
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: Пределы C++
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 02.06.08 11:24
Оценка: +1
Здравствуйте, 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
Re[6]: Пределы C++
От: CreatorCray  
Дата: 02.06.08 13:43
Оценка:
Здравствуйте, jazzer, Вы писали:

J>>>Ну и макросы он, вроде, дебажить никак не помогал.

CC>>И не должен был — это тул не для дебага.
J>Я имею в виду, если его спросить, где используется какой-то член — он заглянет во все макросы?
Вроде как да. Я макросами пользуюсь только в исключительных случаях так что попробовать особо не на чем.
Вот те пример (искал m_roundKey).
(31):    #define SERPENT_XOR_KEY(rPos,a,b,c,d) {a ^= m_roundKey[4*rPos];b ^= m_roundKey[4*rPos+1];c ^= m_roundKey[4*rPos+2];d ^= m_roundKey[4*rPos+3];}
(31):    #define SERPENT_XOR_KEY(rPos,a,b,c,d) {a ^= m_roundKey[4*rPos];b ^= m_roundKey[4*rPos+1];c ^= m_roundKey[4*rPos+2];d ^= m_roundKey[4*rPos+3];}
(31):    #define SERPENT_XOR_KEY(rPos,a,b,c,d) {a ^= m_roundKey[4*rPos];b ^= m_roundKey[4*rPos+1];c ^= m_roundKey[4*rPos+2];d ^= m_roundKey[4*rPos+3];}
(31):    #define SERPENT_XOR_KEY(rPos,a,b,c,d) {a ^= m_roundKey[4*rPos];b ^= m_roundKey[4*rPos+1];c ^= m_roundKey[4*rPos+2];d ^= m_roundKey[4*rPos+3];}
SetKey (89):    memcpy (m_roundKey.ptr(),kEx.c_ptr() + 8, 132*sizeof(DWORD));
Init (20):    void Init   ()      {m_roundKey.clear ();}
InitFrom (21):    void InitFrom  (const Serpent &other) {m_roundKey = other.m_roundKey;}
InitFrom (21):    void InitFrom  (const Serpent &other) {m_roundKey = other.m_roundKey;}
Serpent (32):    SecureBuffer<DWORD,132> m_roundKey;


J>А если его попросить переименовать что-то?

Есть такая в нем фича — refactor rename — покури примеры на wholetomato.com, я все равно не опишу так, как на картинке увидишь.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[2]: Пределы C++
От: neFormal Россия  
Дата: 02.06.08 16:01
Оценка: :)
Здравствуйте, eao197, Вы писали:

E>или более понтовых Haskel-ей с OCaml-ами.


просто из любопытства: а этим действительно можно понтануться?.
может есть смысл их выучить..
...coding for chaos...
Re[3]: Пределы C++
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 02.06.08 16:06
Оценка: :)
Здравствуйте, neFormal, Вы писали:

F>Здравствуйте, eao197, Вы писали:


E>>или более понтовых Haskel-ей с OCaml-ами.


F>просто из любопытства: а этим действительно можно понтануться?.


Легко!

F>может есть смысл их выучить..


То, что нас не убивает, делает нас сильнее


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: Пределы C++
От: Vamp Россия  
Дата: 02.06.08 16:37
Оценка: -1
Я уженеоднократно говорил, основной недостаток — что в С++ постоянно пытаются реализовать сферический язык в вакууме.
Потоков и объектов синхронизации нет — не на всех системах есть потоки. ГУЯ нет — не на всех системах есть гуй. Средств для чтения кталогов нет — не на всех системах есть каталоги. Я уже молчу о таком беспределе, как общение с базами данных!..
В результате получается, что писать что-то кроссплатформенное нереально сложно, приходится выдумывать ненужные слои абстракции и обрастать макросами.
Да здравствует мыло душистое и веревка пушистая.
Re: Пределы C++
От: MasterZiv СССР  
Дата: 02.06.08 16:43
Оценка:
Roman Odaisky пишет:

> На C++ пишут меньше прикладных программ, чем он того заслуживает, в

> первую очередь потому, что мало хороших прикладных библиотек. А вот
> хотелось бы выяснить: если бы на C++ были удобные библиотеки для
> всего-всего, то все перешли бы (обратно) на C++, или индусы в любом
> случае будут продолжать писать на Java, Python и т. п., потому что там
> сложнее обстрелять свои ноги?

ДА !! Я бы — ДА !.
Да мы и сейчас в общем пишем много прикладного ПО именно на С++.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: Пределы C++
От: MasterZiv СССР  
Дата: 02.06.08 16:49
Оценка: 1 (1)
jazzer пишет:

> 1. Отсутствие GC. На С++ крайне сложно писать прототипы и вообще

> заниматься "быстрой разработкой", просто потому что в С++ ресурсами
> приходится управлять вручную, в отличие от управляемых языков, в которых

IMO — ерунда. SmartPointer -и вперед.
AutoPointer — и еще быстрее.
Да и без них для меня лично это никогда проблемой не было.

Циклически замкнутые ссылки IMO редки и
все равно, как правило, требуют внимания при проектировании, даже
в языках с GC.

> 2. Неудобный неоднозначный синтаксис, из-за которого практически

> невозможно написать инструменты типа resharper (одни заголовочные файлы

Да, это — правда.
Posted via RSDN NNTP Server 2.1 beta
Re: Пределы C++
От: c-smile Канада http://terrainformatica.com
Дата: 02.06.08 16:53
Оценка: +2
Здравствуйте, Roman Odaisky, Вы писали:

RO>На C++ пишут меньше прикладных программ


Меньше чем на чем?

RO>что мало хороших прикладных библиотек.


Я думаю что на С++ (и соотв. C) больше хороших прикладных библиотек чем на чем-то ином.
Re[2]: Пределы C++
От: MasterZiv СССР  
Дата: 02.06.08 16:54
Оценка:
lollipop пишет:

> а)Web. Но это на мой взгляд и то с большими оговорками. Сделать можно

> всё... только вопрос времени. Нормальный веб сайт на С++ писать
> долговато..

Web сайт на C++ писать не нужно. Web сайт вообще писать не нужно.

> б) script — скриптовые языки нужны. Как ни крути. С++ не скриптовый

> язык. Тоесть будь у него хоть куча библиотек и интеграция в броузеры —
> популярности JavaScript думаю врят ли добьётся

А при чем здесь это ? Не, это здесь ни при чем. Ни скриптовые языки, ни
Web-программирование. Ни на фиг не нужно это делать все на С++.
Posted via RSDN NNTP Server 2.1 beta
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.