LINUX.ORG.RU
ФорумTalks

[размышления]Так ли убог C++ как его малюют?

 


0

4

Стандартный набор аргументов хаяльщиков C++ следующий:

небезопасный, нет сборщика мусора; можно попортить память и сидеть много лет под дебаггером.

В любых более-менее серьезном проекте, не важно какой язык Java/C++/Lisp/whatever, пишут документацию и тесты (лисперы ведь пишут тесты, правда?). Так что у ошибок вида delete NULL и пр. нет шансов. А если какой-то тест падает - то тем проще найти и исправить: какая-нибудь JAVA просто многозначительно промолчит и в релиз войдет бага.

шаблоны == синтаксический сахар, ООП сложен и для гиков.

При адекватном тимлидере/ревьюере, который будет по рукам бить за кулхацкеровские извращения, это сводится на нет. А при неадекватном руководстве быдлокод пишется на чем угодно

Мое ИМХО: ругают C++ исключительно ниасиляторы, продвигая вперед тем самым маркетинговые машины всяких Java c .NET-ами. А создание действительно качественного софта, будь то C++/Java/.NET, соизмеримы как по деньгам, так и по срокам. Другое дело что ынтерпрайз порой клал на качество... среднее и низкое качество на Java/.NET наверное выходит дешевле.

Ы?


Начнём, пожалуй с того, что С++бл*дь — человек никчемный, слабовольный, генетически ленивый. Потому вынужденный постоянно врать себе и другим, оправдывая свою неспособность обустроить свою жизнь, врать, выдумывая внешние независящие от него причины оправдывающие его неспособность создать нормальный человеческий софт. Вот и сейчас, С++бл*дь сидит в родительской квартире, в своей комнате, за компьютером где стоят бэтты и альфы убогой, кривой, похаканной IDE Visual Studio и примеры курсовых работ студентов. Пишет он про то как прекрасен язык С++, и как ужасны и отвратительны, как чудовищно омерзительны Б–жественные Функциональные языки, как Саймон Джонс препятствует развитию С++ софта. Время от времени он ходит на кухню чтобы заварить очередной доширак, возвращаясь обратно к монитору он с привычной гадливостью оглядывает весь хлев, в который превратилась его комната, вдыхает тяжелый смрад сальной протухшей одежды, гниющих объедков. Единственная отдушина в его жизни это С++ — язык, где его бесполезные знания найдут применение, где его никто не обвинит в плохом коде, это же С++ код. С++бл*дь искренне верит что наступит ФПкапец, а пока, чтобы приблизить свою мечту, он скачивает и читает новые порции убогих самоучителей «C++ за 21 день» и прочего С++ говна.

anonymous
()

1) В С++ и его библиотеках набралось слишком много мусора и неудачных решений, которые никто выкидывать не собирается (да это уже и невозможно; к тому же, если из С++ выкинуть мусор, мы получим D, который уже есть).

2) Комитет по стандартизации в последнее время работает не в тех темпах, в которых бы стоило.

Мое ИМХО: ругают C++ исключительно ниасиляторы

Александреску, сваливший на D тоже ниасилятор ?

runtime ★★★★
()
Ответ на: комментарий от anonymous

> препятствует развитию С++ софта

да нет, никто не препятствует - он себе спокойно пишется и используется в отличие от

anonymous
()

Другое дело что ынтерпрайз порой клал на качество... среднее и низкое качество на Java/.NET наверное выходит дешевле.

Да. А какие примеры софта высокого качества вы можете привести на С++?

Legioner ★★★★★
()

Очередная тема для троллей.
Если нравится С++, то пиши на С++.
Если не нравится С++, то не пиши на С++.
Хоть один пример приведите, когда кого-нибудь заставляли писать на С++ без возможности отказаться-уволиться.

anonymous
()

> небезопасный, нет сборщика мусора; можно попортить память и сидеть много лет под дебаггером.

Про ABI забыл.

ругают C++ исключительно ниасиляторы

Нет. Как раз таки С++ ругают осилившие, к которым снизошло Просветление.

yoghurt ★★★★★
()
Ответ на: комментарий от Legioner

> А какие примеры софта высокого качества вы можете привести на С++?

а какого софта не хватает в линуксе? начинается перечислять - и сами найдете ответ

anonymous
()
Ответ на: комментарий от anonymous

> а какого софта не хватает в линуксе? начинается перечислять - и сами найдете ответ

Этот софт корнями уходит в те годы, когда С++ на фоне остальных был ещё не так плох. Стали бы выбирать С++ его разработчики сегодня - большой вопрос.

runtime ★★★★
()
Ответ на: комментарий от anonymous

Да я вообще практически не видел софт, который бы мне нравился. Весь софт, который существует, среднего и низкого качества. Может где то есть идеальный верифицируемый код, который ревьюят по 100 раз каждую строку. Там можно и на ассемблере писать, особой разницы в производительности не будет. А в реальной жизни все пишут софт среднего и низкого качества, с багами и уязвимостями, и там Java не хуже С++.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

> Весь софт, который существует, среднего и низкого качества.

ну я вот, например, пишу из хрома, написанного на С++, чем он плох?

anonymous
()

> какая-нибудь JAVA просто многозначительно промолчит
В Java не получится сделать delete null.

А при неадекватном руководстве быдлокод пишется на чем угодно

Быдлокод на защищенных языках куда менее опасен, чем на плюсах. Соббсно основная претензия в этом - плюсы (в отличие от более прощающей жабки и пр.) требуют ВЫСОЧАЙШЕГО уровня владения и дисциплины. Тогда все пучком. Но если это не так - начинаются дизастеры, очень быстро и очень страшные.

svu ★★★★★
()

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

svu ★★★★★
()
Ответ на: комментарий от runtime

И что, было бы из чего выбирать ? :)
И что бы выбрали именно Вы для реализации «тех самых програм, которых так не хватает» ?

Jetty ★★★★★
()

Это было искусственное дыхание C++?

vertexua ★★★★★
()
Ответ на: комментарий от Jetty

Щас начнётся тема про крутость лиспа с хаскелем и т.п.

anonymous
()
Ответ на: комментарий от anonymous

Я не думаю, что игрушки можно назвать средним софтом. Обычно это хороший софт, иначе оно продаваться не будет - голосуют же рублем;)

svu ★★★★★
()
Ответ на: комментарий от Legioner

Ещё жрёт много-много памяти (никто меня никогда не убедит, что на страничку, на которой DOM в 100 узлов и пяток CSS-стилей нужно десять миллионов байтов).

Legioner ★★★★★
()
Ответ на: комментарий от Jetty

> И что бы выбрали именно Вы для реализации «тех самых програм, которых так не хватает» ?

По возможности я предпочёл бы писать на каком нибудь из динамических языков. Если нужна производительность, проблемные места пишутся на C.

Мне сложно ответить конкретно, так как выбор сильно зависит от того, что именно нужно писать, и какие требования к этому софту предъявляются. В качестве сферического варианта в вакууме - C & Python. Но повторюсь, это лишь сферический вариант в вакууме.

runtime ★★★★
()
Ответ на: комментарий от anonymous

> большая часть геймдева на плюсах

Arcanum, STALKER, Quake 2, ... ну ты понял, да. О количестве багов в этих играх слагали легенды.

Советую, кстати, прогуляться на gamedev.ru и почитать их холивары, на каком языке писать. Вариантов там всегда 2 - C++ или C#. Аргументов там тоже всегда 2 - C++, потому что на нём написан Крузис/Квака; C#, потому что это модно и Microsoft.

Никакого осознанного выбора языка в геймдеве небыло, нет, и не будет.

runtime ★★★★
()

>В любых более-менее серьезном проекте, не важно какой язык Java/C++/Lisp/whatever, пишут документацию и тесты

При адекватном тимлидере/ревьюере, который будет по рукам бить


т.е. кресты - это наичистейший интерпрайзъ, который, кроме непосредственно программиста, обязательно требует ещё и кучу эффективных манагеров, тестеров, тимлидеров и прочих нахлебников.

kranky ★★★★★
()
Ответ на: комментарий от runtime

> По возможности я предпочёл бы писать на каком нибудь

из динамических языков


Ну так пишите, кто вам запрещает? И пусть ваши программы отправят старые на C++ на свалку. Однако, C++ всё ещё с нами, хотя на ЛОРе и полно спецов готовых написать гораздо лучшие программы на других, более лучших языках.

Вообще, это очень странно, обсирать С++ и написанные на нём программы. Лучше направте своё негодование на создание новых хороших программ. Обсирать то много ума не надо. Ведь люди пишущие на C++ тоже кое в чём соображают и продолжают выбирать C++. Сделайте лучше чем они и докажите свою правоту.

archimag ★★★
()

если в шарпе и яве меньше возможностей отстрелить себе ногу, то почему бы не писать на них?

RedPossum ★★★★★
()
Ответ на: комментарий от RedPossum

> если в шарпе и яве меньше возможностей отстрелить себе ногу,

то почему бы не писать на них?


Наверное цели другие? Если вообще не писать, то ноги гарантированно ведь будут целы...

archimag ★★★
()
Ответ на: комментарий от runtime

> Советую, кстати, прогуляться на gamedev.ru

Никакого осознанного выбора языка в геймдеве небыло, нет, и не будет.

Насколько я понимаю, gamedev.ru - это сайт прыщавой школоты^W^Wдля начинающих гейм-девелоперов, и делать вывод об индустрии по его холиворам - это как минимум глупо.

А насчет выбора... у Ъ-перцев всегда есть выбор: http://www.st.cs.uni-saarland.de/edu/seminare/2005/advanced-fp/docs/sweeny.pdf

tailgunner ★★★★★
()
Ответ на: комментарий от runtime

>Никакого осознанного выбора языка в геймдеве небыло, нет, и не будет.

Не суди о профессионалах по школьникам с форума :)

yoghurt ★★★★★
()
Ответ на: комментарий от archimag

> Вообще, это очень странно, обсирать С++ и написанные на нём программы.

Во первых, я не обсираю ни С++, ни, тем более, написанные на нём программы. Я лишь утверждаю, что С++ перестаёт идти в ногу со временем, и сегодня это не лучший выбор для среднестатическоко проекта.

И пусть ваши программы отправят старые на C++ на свалку.

Фактически, именно так и происходит. С каждым годом софта, пишущегося на C++ становится всё меньше и меньше.

runtime ★★★★
()
Ответ на: комментарий от yoghurt

> Что? Кармак начал на плюсах писать только в Думе третьем.

Пардон, попутал. Но второквака была шикарна, насколько я помню, самые первые коробочные версии вообще не работали :)

Не суди о профессионалах по школьникам с форума

О профессионалах я и не сужу, просто товарищ выше приводил аргумент, что геймдев выбирает С++. Большая часть геймдева, за исключением этих самых профессионалов, ничего не выбирает.

runtime ★★★★
()
Ответ на: комментарий от RedPossum

> если в шарпе и яве меньше возможностей отстрелить себе ногу, то почему бы не писать на них?

Посмотри на паскаль. Каждая строчка его реализации кричит «я не си! Во мне нельзя отстрелить себе ногу!». Почему на нём никто не пишет?

alexmaru
()

> небезопасный

Жить, говорят, тоже опасно, умирают от этого...

нет сборщика мусора


Умные указатели для кого сделали?

можно попортить память


можно != нужно

шаблоны == синтаксический сахар


Go to Brainfuck, там сахара нет. Как, впрочем, и всего остального.

ООП сложен и для гиков


Для гиков нет слова «сложно», какие-то неправильные гики попались, значит.

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

one_more_hokum ★★★
()
Ответ на: комментарий от one_more_hokum

> Фраза, бессмысленная до убожества.

Если это так, то скажи мне, зачем вообще для С++ выпускают новые стандарты ? Просто так, just for lulz ?

runtime ★★★★
()
Ответ на: комментарий от alexmaru

>Во мне нельзя отстрелить себе ногу!

как обычно нужна середина. а почему на паскале никто не пишет я и не знаю. на нём перестали писать в далёкие времена.

RedPossum ★★★★★
()
Ответ на: комментарий от alexmaru

>Посмотри на паскаль. Каждая строчка его реализации кричит «я не си! Во мне нельзя отстрелить себе ногу!». Почему на нём никто не пишет?

потому что язык изначально создавался для обучения, писать на нем какие-либо большие проекты - бред.

потом был Borland и язык Delphi, вот он вполне себе использовался славы C++, конечно не достиг, но что-то было. потом Borland скурвился. При должном развитии языка Borland'ом возможно что-то и получилось. потому что сам по себе довольно неплохой язык.

mono ★★★★★
()
Ответ на: комментарий от svu

>Я не думаю, что игрушки можно назвать средним софтом. Обычно это хороший софт, иначе оно продаваться не будет - голосуют же рублем;)

Успех игры с качеством ее кода коррелирует чуть менее чем никак. Главное чтоб между сохранениями не падала и не сильно тормозила

F457 ★★★★
()
Ответ на: комментарий от F457

да даже это не обязательно, пример - S.T.A.L.K.E.R., тормозила и падала, и каждый новый патч менял формат save-файлов. но какая популярность.

mono ★★★★★
()

Вот тут такое, а сил нет совершенно.

что у ошибок вида delete NULL и пр. нет шансов

А что, что-то непоправимое может случиться?

different_thing
()
Ответ на: комментарий от F457

> не падала и не сильно тормозила
Мне не хватает фантазии представить плохой код приличного размера, который не падает и не тормозит

svu ★★★★★
()
Ответ на: комментарий от anonymous

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

Да, у меня есть ряд менеджерских идей на этот счёт. Каких требуется достигнуть показателей в процессе разработки ПО?
(А) низкая стоимость разработки.
(Б) высокое качество софта.

На первый взгляд кажется, что эти цели прямо противоречат друг другу. Высококвалифицированные разработчики не будут работать за дешево.

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

Решается всё очень просто, хотя и не вполне в рамках ТК. Отключается интернет, зажравшиеся умники приматываются скотчем к креслам. Упаковка доширака стоит 20 рублей, что означает затраты на одного разработчика порядка 600 рублей в месяц. Может показаться, что такие шаги приведут к еще бОльшему снижению мотивации, а вместе с ней производительности труда и качества кода. Но вспомните Робинзона Крузо - как он радовался любым трудностям, потому что осозновал, что всё может стать еще в разы хуже. Подержите разработчиков пару дней БЕЗ ДОШИРАКА, БЕЗ ЕДЫ ВООБЩЕ. Это вовсе не жестоко, я говорю о совершенно общепринятой практике. Например, опытные аквариумисты также рекомендуют устраивать рыбам хотя бы 1 голодный день в неделю, а некоторые предпочитают кормить рыб 1 раз в 2 дня. Причем еды дается не больше, чем рыбы съедают за 3-5 минут. Это обострит у разработчиков чувство реальности, поможет посмотреть на сложившуюся ситуацию конструктивно. Ну и банальная вещь: любая дрессировка опирается не только на пряники, но и на кнут. Автоматизируйте систему наказаний. Ошибка при компиляции - бодрящий удар током, пусть тщательнее думают, что за говнокод пишут. Ошибка сегментации или заваленный аксптенс-тест — трясти под напряжением будет долго и мучительно. Мало строчек выложил в систему контроля версий — за что тебя кормить?!

Весь этот комплекс мер будет способствовать тому, что даже не очень высококвалифицированные разработчики быстро научатся писать качественный код. Вам не обязательрно нанимать в свою контору мастистых гуру (пропажу которых наверняка заметят домочадцы), вы вполне можете начать бизнес с приезжими студентами. Гибкость ума, способность к обучению и неплохой запас физического здоровья - именно благодаря этим качествам студенты - наиболее перспективная категория сотрудников.

Резюмируя, я не вижу причин, почему язык С++ не годился бы для промышленного программирования.

Manhunt ★★★★★
()

Идешь в гугль и вводишь в поиск

Луговский C++

Ходишь по ссылкам и достигаешь просветления

praseodim ★★★★★
()
Ответ на: комментарий от runtime

> качестве сферического варианта в вакууме - C & Python.

Очень хорошая даже связка

different_thing
()
Ответ на: комментарий от svu

Можно сделать средненький софт на жабке и это будет дешево.

Можете привести несколько примеров неплохого софта на жабе, расчитанного на пользователя (т.е. не энтерпраиз говно и прочая бухгалтерия).

RealSiberianMan
()
Ответ на: комментарий от RealSiberianMan

1. Vuze

2. Eclipse

но основное направление Java - это энтерпрайз, на десктопе ее сложно использовать.

mono ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.