Re[5]: + Brooks
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.07.08 14:41
Оценка: :)
Здравствуйте, StevenIvanov, Вы писали:

SI>не, дело очевидно не только в деньгах. Сопровождение makes sense

SI>Представь стоимость переписывания всего объема кода, который надо было бы еще и перетестировать (да еще и параллельно добавив-выкинув пару сотен фич).
SI>Недавно вычитал в умной книжке по си шарпу, что что стоимость написания с нуля крупного современного программного продукта (а windows, msoffice, photoshop там какой нибудь — ну просто мегакрупные) сравнима со стоимостью постройки небоскреба.

На прибыли от Виндовс можно 100 скребонебов построить. Так что дело не в деньгах, а как всегда и их количестве .
Потом ненадо переписывать все. Но уж если что-то переписывается, то можно и сэкономить. При этом и качество выше будет. Я конечно понимаю, что тут каждый второй крут как вареное яйцо и не делает ошибок при программировании на С++, но все же продукты, то постоянно вылетают. Тот же Ворд уже много лет глючит по черному...
Так что тут дело в другом. Дело в том, что с их доходами даже небольшая разница в потребляемых ресурсах уже влияет на доходы, а стоимость разработки для них не играет роли. Глюки пользователь тоже переживает. Вот и получается, то что получается.
Казалось бы и правда, создать некий аналог С++ с точки зрения качества оптимизации кода и потребляемых ресурсов конечного приложения и можно избежать огромной части затрат на разработку и сопровождение, но зачем? Скажем, я уверен, что даже если бы для разработки драйверов использовался бы какой-нить ОКамл (а я не сомневаюсь, что для МС это не было бы проблемой реализовать), то надежность драйверо была бы куда вше. Но зачем? Можно же потратить море бабок на написание и вылизывание этих драйверов. Плюс еще море на создание разных драйвер-верифайров, которые один фиг всех ошибок не предотвращают. Ведь проблема в том, что если начать менять, то может измениться и расклад сил на рынке. А зачем это нужно тем, кто его уже успешно занимает?

SI>Да и еще. Мне кажется, что в этой ветке многие не читали (или уже забыли) Брукса:


SI>

SI>Я считаю, что сложность создания программного обеспечения заключается в задании технических требований, проектировании и проверке этой концептуальной конструкции, а не в затратах, связанных с ее представлением и проверкой точности представления. Конечно, мы делаем синтаксические ошибки, но в большинстве систем они несущественны в сравнении с концептуальными ошибками.

SI>online версия здесь

Мне кажется это чушь. Вернее это конечно все правильно, но от инструмента зависит и то как ты будешь проектировать код, и то какие ошибки в нем можно допустить (ну, не должен современный язык допускать ошибки связанные с типами), и то как программу потом можно будет проверить на соответствие некоторым условиям. Если код пишется на С++, то все плохо. Программу не то чтобы верифицировать, ее скомпилировать то не всегда удастся (не смотря на ее формальную правильность). И так по всем параметрам.

SI>Я так понимаю это и оказывается решающим фактором в выборе ЯП в микрософте.


Мне кажется, что как и везде решающим фактором оказывается то, что начальство знает, что такое С++ и что все пишут на нем. Плюс, то о чем я говорил. Наличие моря бабла снимает проблемы оптимальности выбора. Думаю, что они на ассемблере, то ОС не пишут, не потому, что это сложно, а потому, что код не переносимым получается, ну, и потому, что толку почти от этого нет.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Что Вам мешает в С++?
От: LordMAD Россия  
Дата: 18.07.08 14:46
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>В общем-то язык нужно принимать таким, какой он есть...

+1

LVV>Но...

LVV>На мой взгляд, С++ мало подходит для коллективной разработки в силу слишком большой свободы...
LVV>То, что хорошо для гуру, очень плохо для обычного среднего работника-программиста.
Это означает всего лишь, что разношерстные команды менее эффективны, чем "неразношерстные". Для некоторых других языков наоборот — разношерстные команды более эффективны, и что с того... просто нужно учитывать это при формировании команд.

LVV>С++ позволят писать в самых различных стилях и парадигмах...

И это есть хорошо

LVV>Нужно жесткое управление проектом с точки зрения стиля написания, и жестокое самоограничение и самодисциплина самих программистов, чтобы не потерять управление проектом и не утонуть в разнообразии...

Если выбранный путь решения не противоречит ни чему, то и проблемы нет, по большому счету. Если проблемы появляются — это, как правило, следствие разношерстных команд или неумение людей уважать чужой код.

LVV>Второе — это тянущийся хвост обратной совместимости с С. Это заставляет оставлять в С++ плохо подходящие в ООП конструкции...

Но не заставляет их использовать, так что проблемы нет.

LVV>И опять же дает слишком много свободы программистам.

При четком разграничении приоритетов для отдельных частей проектов — это только хорошо.

LVV>С уже давно не тот язык, с которым была провозглашена совместимость. С имеет собственный стандарт, который уже не совпадает с С++. Поэтому лучше не заморачяиваться на эту совместимость и провозгласить независимость.

Совместимость нужна не со стандартами, а с существующим кодом, что обеспечивается насколько это возможно. Если кто-то в C использует что-то в соответствии со стандартом, но что плохо согласуется с C++, пусть он идет в сад.

LVV>Либо уж тогда следовать стандарту С и надстраивать с++ при каждом изменении стандарта С.

Нет уж, пусть лучше сомнительные решения из стандарта в стандарт не перекочевывают (как сейчас стараются и делать).
Re[2]: Что Вам мешает в С++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.07.08 16:42
Оценка:
Здравствуйте, VladD2, Вы писали:

Что-то меняется в этом мире. Я то думал, что мне тут сразу минусов понаставят, а прошло уже несколько часов, а мне только один смайлик поставили .
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Что Вам мешает в С++?
От: Roman Odaisky Украина  
Дата: 18.07.08 18:24
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Нельзя улучшить С++ до требуемого уровня, не уничтожив при этом обратную совместимость.


Основной принцип C++ — нулевой оверхед. Он автоматически несовместим со многими фичами. Вот и всё.

А аргументы твои довольно странные. Макросы, лямбды, рефакторинг, CTTI в C++ вполне возможны, они не противоречат основному принципу. GC с дефрагментацией требуют еще один уровень косвенности, потому не годятся. Умные указатели имеют свои недостатки, но работают быстро — при должном внимании к проектированию (и отсутствии циклических ссылок).

VD>

VD>Ну, а теперь самое крамольное. Писать программы (эффективные и даже сложные) можно практически на любом ЯП высокого уровня (не на ассемблере).

Ага.

VD>Отличный пример МС. Там плевать на то, что производство ПО с помощью С++ неимоверно дорого. Плевать что код, в массе своей, созданный на С++ глюкав и крив. Важно, что есть огромная армия программистов из которой всегда можно найти тонну-другую талантов для своих проектов. И важно, что С++ порождает относительно шутсрый код совместимый с базовыми АПИ. Остальное по боку. Бабло всегда побеждает осло (с).


Хочешь посмотреть на Top 10 языков пакетов Debian?
c32.44%
perl25.68% (из них 85% — библиотеки)
c++10.32%
python9.74%
lisp4.76%
php2.81%
ocaml2.55%
ruby2.40%
java1.81%
shell1.47%
Опрошено 11 тысяч пакетов (примерно половина), у которых есть теги implemented-in.

Ты еще писал об огромной стоимости разработки аналогов MS Office или Adobe Photoshop. GIMP вдвое моложе Photoshop, написан на суровом C, и — хотя это и из другого флейма — я Photoshop не осилил, GIMP мне нравится намного больше. И стоимость его примерно в 0 раз выше стоимости небоскреба :-)
До последнего не верил в пирамиду Лебедева.
Re[3]: Что Вам мешает в С++?
От: Кодёнок  
Дата: 18.07.08 18:47
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Что-то меняется в этом мире. Я то думал, что мне тут сразу минусов понаставят, а прошло уже несколько часов, а мне только один смайлик поставили .


может просто до них дошло?
Re[4]: Что Вам мешает в С++?
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.07.08 19:47
Оценка:
Здравствуйте, Кодёнок, Вы писали:

Кё>может просто до них дошло?


Я в сказки не верю.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Что Вам мешает в С++?
От: Roman Odaisky Украина  
Дата: 18.07.08 20:58
Оценка: 1 (1) +3 :))) :))) :)))
Здравствуйте, Кодёнок, Вы писали:

VD>>Что-то меняется в этом мире. Я то думал, что мне тут сразу минусов понаставят, а прошло уже несколько часов, а мне только один смайлик поставили :wow: :xz:.


Кё>может просто до них дошло? :)


Толку-то минусов ставить?

До нас дошло, и мы согласны с Владом в том, что

Горбатого могила исправит.


;-)
До последнего не верил в пирамиду Лебедева.
Re[5]: Что Вам мешает в С++?
От: VoidEx  
Дата: 19.07.08 00:29
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Толку-то минусов ставить?


То же хотел написать, но постеснялся
Re[2]: Что Вам мешает в С++?
От: FR  
Дата: 19.07.08 09:20
Оценка: +3
Здравствуйте, VladD2, Вы писали:

VD>* Хотите СТТI? А что вы с ним будете делать если нет полноценных макросов? Опять головоломный и глючный мета-код на шаблонах?


Тут уж ты точно неправ, ничего ни мешает сделать в C++ как в D http://www.digitalmars.com/d/2.0/traits.html

VD>В общем, это замкнутый круг — горбатого могила исправит.

VD>

VD>Ну, а теперь самое крамольное. Писать программы (эффективные и даже сложные) можно практически на любом ЯП высокого уровня (не на ассемблере). Современный С++ мало чем отличается от С++ середины 90-ых прошлого века в этом контексте. Если уж вам нужны серьезные отличия, то список куда более отличных языков приведен выше. А если вам пофигу на чем писать, и пофигу ваша производительность, то вам хватит и VC 6 или Zortech. Да, что там Zortech — С хватит. Разница между ними и современным С++ с точки зрения продуктивности программиста все равно не сравнима с разницей между С++ и любым из перечисленных мною выше языков.

Влад такое очущение что ты на _современном_ C++ просто никогда ни писал.
Хотя я конечно понимаю что вы городские с трудом отличает лошадь с сохой от трактора

VD>Почему же монстры индустрии до сих пор пишут код на С++?


VD>Отличный пример МС. Там плевать на то, что производство ПО с помощью С++ неимоверно дорого. Плевать что код, в массе своей, созданный на С++ глюкав и крив. Важно, что есть огромная армия программистов из которой всегда можно найти тонну-другую талантов для своих проектов. И важно, что С++ порождает относительно шутсрый код совместимый с базовыми АПИ. Остальное по боку. Бабло всегда побеждает осло (с).


Слишком гиперболизируешь.

VD>И наверно они (в МС) правы. С их баблом С++ + куча однобоких кодеров — лучший выбор.


Для "однобоких кодеров" есть специально созданные для них ява и шарп.

VD>Ведь С++ как гиря на ногах у их конкурентов, а с мегабаксами и при должной организации производства можно создавать софт и самыми экстенсивными методами.


У них ровно обратная тактика http://russian.joelonsoftware.com/Articles/FireAndMotion.html

VD>Хорошие инструменты нужны отнюдь не мегамонстрам вроде МС. Они нужны мелким стартапам и маленьким но очень интеллектуальным командам. Инструмент сам по себе действительно является фетишем. Он всего лишь может увеличить производительность труда толковых людей. Но хороший инструмент в хороших руках — это убийственный аргумент. Ни как не могу забыть ощущение от BFG 10000 в моих руках когда я бежал по относительно просторному уровню...


Есть небольшая проблема C++ в правильных руках тоже относится к хорошим инструментам.
Re[6]: + Brooks
От: FR  
Дата: 19.07.08 09:29
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Мне кажется это чушь. Вернее это конечно все правильно, но от инструмента зависит и то как ты будешь проектировать код, и то какие ошибки в нем можно допустить (ну, не должен современный язык допускать ошибки связанные с типами), и то как программу потом можно будет проверить на соответствие некоторым условиям. Если код пишется на С++, то все плохо. Программу не то чтобы верифицировать, ее скомпилировать то не всегда удастся (не смотря на ее формальную правильность). И так по всем параметрам.


Все так, но ты не хочешь понять простую вещь, для программ-монстров, общие затраты на кодирование (и низкоуровневое проектирование) настолько малы что выбор языка почти ни окажет влияния на общую скорость разработки. Возьми хоть того же Макконнелла посмотри графики из 27 главы.
Re[2]: Что Вам мешает в С++?
От: degor Россия  
Дата: 19.07.08 19:54
Оценка: +1
Здравствуйте, alzt, Вы писали:

A>2. Работа с памятью. Создание\Удаление небольших объектов в С++ неэффективно.

С чего бы вдруг?
Re: Охота была ворошить этот сарай с граблями? (-)
От: degor Россия  
Дата: 19.07.08 20:09
Оценка:
Re[6]: + Brooks
От: StevenIvanov США  
Дата: 19.07.08 20:26
Оценка:
Здравствуйте, VladD2, Вы писали:

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


SI>>Да и еще. Мне кажется, что в этой ветке многие не читали (или уже забыли) Брукса:


SI>>

SI>>Я считаю, что сложность создания программного обеспечения заключается в задании технических требований, проектировании и проверке этой концептуальной конструкции, а не в затратах, связанных с ее представлением и проверкой точности представления. Конечно, мы делаем синтаксические ошибки, но в большинстве систем они несущественны в сравнении с концептуальными ошибками.

SI>>online версия здесь

VD>Мне кажется это чушь. Вернее это конечно все правильно, но от инструмента зависит и то как ты будешь проектировать код, и то какие ошибки в нем можно допустить (ну, не должен современный язык допускать ошибки связанные с типами), и то как программу потом можно будет проверить на соответствие некоторым условиям. Если код пишется на С++, то все плохо. Программу не то чтобы верифицировать, ее скомпилировать то не всегда удастся (не смотря на ее формальную правильность). И так по всем параметрам.


Вроде убедительно и тоже вроде правда, но не могу полностью согласиться. Ведь для того, чтобы обуздать непредсказуемость и закидоны этого зверя — С++а придуманы такие вещи, как:
— coding standards
— best practices
— code review
все они устоявшиеся и проверены годами. Сделано многое, чтобы не писать "велосипеды". От явных ошибок избавляют отладчики и инструменты динамического и статического анализа, а так же процедурные меры — напр. Fagan-like inspections. Специальные инструменты оценивают сложность кода — и с превышением показателя complexity код нельзя выставлять на review. Так написаны тысячи и тысячи вещей "от мала до велика". Результат ПРЕДСКАЗУЕМ. Бывалый проектный менеджер всегда сможет выдать estimation по реализации конкретной фичи — что ценно. Все это уже утряслось и более менее устоялось.

Я на мгновение представил себя бюрократом, не имеющим понятия о ЯП, но знающим, что конкретно в моей конторе (а так же в лавках многочисленных конкурентов) используют С++, "их" и "наши" программисты уже съели стаю собак и пуды соли... Зачем мне будет нужно что-то новое, не обкатанное? Явный риск. Неприемлемый для очередной мегафичи. Даже в роли техлида, даже за новым проектом, я бы вряд ли взялся сориентировать бывалых сиплюсплюсников из своей команды на что то новое, пусть и C#.

А по поводу "выбрасывания денег на ветер" — это вы зря. Уж там народ деньги считать умеет. Это точно. И работают они на конкретный результат, справедливо считая, что "the profits justify the means".
Re[2]: Что Вам мешает в С++?
От: Аноним  
Дата: 19.07.08 22:35
Оценка: +1 :)
Здравствуйте, VladD2, Вы писали:

VD>Отличный пример МС. Там плевать на то, что производство ПО с помощью С++ неимоверно дорого. Плевать что код, в массе своей, созданный на С++ глюкав и крив. Важно, что есть огромная армия программистов из которой всегда можно найти тонну-другую талантов для своих проектов. И важно, что С++ порождает относительно шутсрый код совместимый с базовыми АПИ. Остальное по боку. Бабло всегда побеждает осло (с).


VD>И наверно они (в МС) правы. С их баблом С++ + куча однобоких кодеров — лучший выбор.

VD>Ведь С++ как гиря на ногах у их конкурентов, а с мегабаксами и при должной организации производства можно создавать софт и самыми экстенсивными методами.

C++ вселяет больше уверенности, чем С#, Java. Вдруг microsoft решит прикрыть этот C# и сказать мол ребята звиняйте но C# obsolete потому как мы тут написали Z#, который лишен недостатков которые были в C#, F#, ...#. Переписывайте теперь весь свой софт на Z#. Здесь критикуют С++ зато что он до сих пор поддерживает обратную совместимость, но ведь это же мегакруто , чем когда переводил проект с .NET 1.0 -> .NET 2.0 была куча ошибок и постоянные мысли о том что где-то что-то перестанет работать, а заказчику не обьяснишь — как это раньше все работало, а теперь перестало работать
Да и сам MC не спешит переходить на C#, потому что это очень большой риск завести себя в тупик. Все эти C# ориентированы на тех кому надо срубить бабло быстро и сейчас, отлично подходит для проектов маленького/среднего уровня, которые если что случится со C# будет не проблема переписать на Z#.
Re: Что Вам мешает в С++?
От: De Veloper  
Дата: 20.07.08 12:33
Оценка: +2
Здравствуйте, remark, Вы писали:

R>1. Мешать это должно регулярно. Т.к. если это мешает эпизодически, например, раз в год, то это не интересно, т.к. раз в год можно и потерпеть, и на общей эффективности разработки это не сказывается.

R>2. Это должно быть решено в других промышленных языках. Т.к. если это не решено хотя бы в одном другом промышленном языке, то это не интересно, т.к. это не проблема С++, а просто общая проблема. Если не очевидно, то желательно указывать языки, в которых это решено.

Самая главная и крупная неприятность в C++ для меня — практическая невозможность автоматического анализа кода. То, что так легко и непринужденно делается в Java, в Lisp, в языках .NET, для C++ недоступно. Виноваты тут две вещи — препроцессор и очень плохой синтаксис языка. Написание парсера C++ — задача практически самоубийственная.

То есть, даже такую простейшую (и архинужную) вещь, как построить граф вызовов методов, для C++ сделать крайне непросто. Мешает это регулярно, каждую минуту. Когда в проекте миллионы строк унаследованного кода, плохо документированного, то без умных средств анализа кода жизнь тяжела и уныла.

Вторая претензия к языку шаблонов в C++. Он плох. Он недостаточен. Но это, понятно, далеко не всем надо, так что про детали этих претензий промолчу.
Re[2]: Что Вам мешает в С++?
От: FR  
Дата: 21.07.08 05:53
Оценка:
Здравствуйте, De Veloper, Вы писали:

DV> Вторая претензия к языку шаблонов в C++. Он плох. Он недостаточен. Но это, понятно, далеко не всем надо, так что про детали этих претензий промолчу.


Было бы интересно послушать, и сравнить с тем что есть тут:

http://www.digitalmars.com/d/2.0/templates-revisited.html
Re: Что Вам мешает в С++?
От: MasterZiv СССР  
Дата: 21.07.08 07:09
Оценка:
remark пишет:

> Что Вам мешает в С++?


0) Мешает ПРЕЖДЕ ВСЕГО отсутствие хорошей продуманной стандартной библиотеки,
предоставляющей background для создания приложений и предоставляющая

-- строки
-- коллекции (забудьте про STL, — не отвечает критериям "продуманная" и
"стандартная")
-- точные целые произвольной длины
-- юникод
-- XML
-- многопоточность
-- взаимодействие с ОС
-- возможно что-то еще (забыл).
(отчасти boost и open source лечит эти проблемы, но пока это все нестандартное.
Надо чтобы это все было в любом компиляторе, и было бы ОБЯЗАТЕЛЬНО).

1) хорошая стандартная кроссплатформенная build-система.
Posted via RSDN NNTP Server 2.1 beta
Re[6]: Что Вам мешает в С++?
От: MasterZiv СССР  
Дата: 21.07.08 07:13
Оценка:
Roman Odaisky пишет:
> Библиотек, собственно, много. Наверное, больше, чем для любого другого
> языка. Не хватает грамотно спроектированных качественных библиотек.

Да как раз и проблема, что нужно не много библиотек. А одна, хорошая
и стандартная.
Posted via RSDN NNTP Server 2.1 beta
Re[7]: Что Вам мешает в С++?
От: Cyberax Марс  
Дата: 21.07.08 07:14
Оценка: +1 :)
Здравствуйте, MasterZiv, Вы писали:

MZ>Да как раз и проблема, что нужно не много библиотек. А одна, хорошая

MZ>и стандартная.
С одной функцией: "doSomething()"...
Sapienti sat!
Re[2]: Что Вам мешает в С++?
От: MasterZiv СССР  
Дата: 21.07.08 07:16
Оценка: +1
merk пишет:

> 1. совместимость с С. в С просто видна история развития и затыкание

> синтаксических дыр.

> 2. аццки подозрительная форма записи типов. когда я переходил с модулы

> на с, долго не мог понять — какая вообще в С схема записи сложного типа.

> 3. нет четкого понятия модуля с импортом и экспортом. хидеры — чисто


Это все — ерунда. К этому всему привыкаешь и все понятно. После этого
можно нормально писать на С++, это не мешает созданию на нём программ.
Posted via RSDN NNTP Server 2.1 beta
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.