LINUX.ORG.RU

Правда про язык С++


0

0

http://hacknet.spb.ru/html/review/001/03_bjstrous.html

Некоторые цитаты:

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

"Это была просто шутка, я никогда не думал, что люди воспримут эту книгу всерьез. Любой человек, даже с половиной мозга, может понять что объектно-ориентированное программирование интуитивно, нелогично и неэффективно."

Что вы об этом думаете? :(

★★★★
Ответ на: комментарий от alphex_kaanoken

>плюсы не люблю, книг по нему читал и даже в универе во время учебы на нем писал

И, собсно, что ты тогда можешь сказать, если его не знаешь?

best regards..

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

kiv (08.06.2004 16:04:45):

>> а читать стратустрапа нет смысла - так как он шизнутый дурень

>Ну вот и ты туда же. Ты с ним знаком?:)

Я с ним знаком немного. И полностью солидарен с lg.

Die-Hard ★★★★★
()
Ответ на: комментарий от kiv

>С++ - для меня, самый легкий язык программирования в мире

Будучи поклонником С++ вынужден констатировать, что: либо ты используешь лишь маленькое подмножество С++, либо не знаешь совсем другие языки, либо слегка преукрашаешь действительность. Напиши сборщик мусора -- полноценный сборщик мусора, к примеру, а потом скажи, С++ это самый лёгкий язык в мире?

best regards..

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

>Отсутствие ортогональности в языке - неоправданная сложность.

Интуитивно догадываюсь про что ты, но если не затруднит -- можно чёткую формулировку "ортогональности" в данном приложении?

best regards..

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

>Эти 1000 страниц - пример хорощей документированности проекта и не более того :)

Это ещё и пример непомерной сложности. Зачем спорить об этом?

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

>Что я наделал =(

Ха, ха, ха, скажи -- нечаянно получилось.

зы: вот баталии в фиде про С++ с участием Антихриста было интересно читать. Жалко только выперли его за хамство слишком рано.

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

>Он будет равен sizeof( 0xeeeeeeee ) только в том случае если бОльших интегральных типов просто нет.

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

best regards..

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

> либо слегка преукрашаешь действительность

Может и преукрашаю :) Но с С++ работаю уже 8 лет. И за это время закончил немало пароектов как широкомасштабных так и достаточно мелких.

>Напиши сборщик мусора -- полноценный сборщик мусора,

А в чем здесь проблемы то?

>к примеру, а потом скажи, С++ это самый лёгкий язык в мире?\

Для меня. С остальными языками я работал меньше. Ну может быть еще Си, на том же уровне.

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

>> я не уважаю C++ потомучто написав софт на C++, я не могу сказать заказчику что "софт работает"

> Это уже вопросы квалификации, но не будем их касаться.

Конечно квалификации, но дело в том что такой инструмент как C++ не позволяет ни одному человеку поднять квалфикацию до уровня чтобы он мог сказать "софт работает", дело в том что возможность подвижных(мысль) и статичных(память) нейронов мозга ограничены

Реальный пример: ну с какого бодуна я должен ЗНАТЬ чем КОНКРЕТНО отличается ++a; и a++; в C++? Зачем мне этим мусором забивать голову?

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

> с С++ работаю уже 8 лет. И за это время закончил немало пароектов как
широкомасштабных так и достаточно мелких

и ты думаешь 8 лет это достаточно?, даже программист на C становится 
мастером, только после порядка 10 лет всяческой практики

Хочешь я тебе расскажу жизнь программера на C++

Расписание по годам опыта программированния в C++:

  0-2 года - Сложный язык, но интересно
  2-4 года - Подходящий инструмент для решения проблем
  4-20 лет - Легкий язык, я могу все на нем
 20-40 лет - Что то не так с C++, но пока не могу понять что
 40-50 лет - Начал понимать что на самом деле происходит в C++, C++ 
             всетаки немного сложен
 50-60 лет - C++ неоправданно сложен, те задачи которые я должен 
             решать я не могу его использовать, и ... смерть

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

>Реальный пример: ну с какого бодуна я должен ЗНАТЬ чем КОНКРЕТНО отличается ++a; и a++; в C++? Зачем мне этим мусором забивать голову?

Я не спорю:) А мне например нафиг не надо знать про особенности свободнотиповости перла:)

>Реальный пример: ну с какого бодуна я должен ЗНАТЬ чем КОНКРЕТНО отличается ++a; и a++; в C++? Зачем мне этим мусором забивать голову?

Совершенно верно. Ненадо нафиг. Но рахве язык от этого плох? Разбивай выражения на a=a+1 до или после :) Никто же не заставляет тебя это помнить. Пользуйся тем что знаешь и чем считаеш нужным.

Мне например кажется функциональная избыточность это неплохое подспорье.

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

> и ты думаешь 8 лет это достаточно?,

Более чем. Если ты в 40 лет занимаешься кодированием - видать не больно то и хороший программист ты был. К этому времени уже надо занимать руководящие должности и писать бумажки :) В цивилизованый странах программисты ценятся только до 30 лет = 20 лет выпуск из универа + 10 лет работы, дальше уже мозги не те, дальше С++ уже сложным кажется :)

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

это лишь был пример один из миллиона :(

перл это вообще отдельная песьня .. он еще злее чем C++, и ты правильно сделаешь если присоединишься к нам в секту "Убить его автора" 8-)

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

> Более чем. Если ты в 40 лет занимаешься кодированием - видать не больно то и хороший программист ты был. К этому времени уже надо занимать руководящие должности и писать бумажки :) В цивилизованый странах программисты ценятся только до 30 лет = 20 лет выпуск из универа + 10 лет работы, дальше уже мозги не те, дальше С++ уже сложным кажется :)

мы с тобой отличаемся тем что программирование для тебя это средство заработать и что то доказать кому то

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

>мы с тобой отличаемся тем что программирование для тебя это средство заработать и что то доказать кому то

Профессия такая.

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

>перл это вообще отдельная песьня .. он еще злее чем C++, и ты правильно сделаешь если присоединишься к нам в секту "Убить его автора" 8-)

Нет. Я не стану опускать язык программирования только потому что плохо с ним знаком. Хотя впечатление от него у меня осталось странное - кажется что можно сделать все, но ничего надежного. Не нравится он мне:)

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

> как в этом языке для тупых подонков - в C++...

> Сложно придумать более дурацкую реализацию для каждой из фишек C++...

Может Вам стоит задуматься над тем, как вы выражаете свои мысли, и немного фильтровать базар? А то такой поток неоправданной агрессии как-то не способствует воспринимать ваши посты всерьез :)))) Обсирать можно все, что угодно, и с огромным количеством брани, только может лучше говорить более аргументированно, и по существу? :)

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

>>Напиши сборщик мусора -- полноценный сборщик мусора, >А в чем здесь проблемы то?

Проблемы? Да их просто дохрена. Сложности наступают при возникновении необходимости перемещения объектов между пулами памяти, например, или сложности в том, что не существует универсального способа борьбы с зацикливаниями при подсчёте ссылок, если используется подсчёт ссылок, сложности в поисках указателей на объекты для того, что бы определить момент когда объект можно удалить, а к примеру, в случае с виртуальными базовыми классами, там вообще жопа... Проблемы с уплотнением это вообще отдельная песня.

Это так, навскидку. Всего в совокупности достаточно, что бы в дурдом попасть.

best regards..

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

>Проблемы? Да их просто дохрена.

Да где же?

>Сложности наступают при возникновении необходимости перемещения объектов между пулами памяти, например, или сложности в том, что не существует универсального способа борьбы с зацикливаниями при подсчёте ссылок, если используется подсчёт ссылок, сложности в поисках указателей на объекты для того, что бы определить момент когда объект можно удалить, а к примеру, в случае с виртуальными базовыми классами, там вообще жопа...

Ну это сложности. А проблемы то где, не решенные? Даже такие сложности наступают только когда система у тебя не продумана ни капли. Тут уже не язык пинать надо :)

>Проблемы с уплотнением это вообще отдельная песня.

А поподробнее:)

>Это так, навскидку. Всего в совокупности достаточно, что бы в дурдом попасть.

Вот только не надо навскидку, был тут уже один такой :)

ЗЫ. Может например назавете язык на котором удобнее реализовать сборщик? Который разом решает все проблемы:)

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

Я же предсказывал, что про CLTL тут пойдёт базар. В жёпу CLTL - ибо рулит R5RS (если в него макры из CL добавить, а гигиенические - выбросить).

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

Ортогональность - отсутствие дублирование в базовых средствах языка. То есть, ортогональный язык - это минимально необходимый и достаточный язык для реализации всей заявленной функциональности.

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

Хихи. В таких задачах и struct да union ни разу не используются. Ручками байтики упаковываются...

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

> А вы можете привести пример языка где ООП реализовано лучше (желательно с аргументами) и на котором ведуться реальные проекты?

Имхо, ооп вообще удобнее с динамической типизацией, очень интересные возможности появляются, погибче позднего связывния, но это спорно, статически и быстрее и надёжнее, тут от задачи многое зависит. Пример ООП с динамической типизацией - python, имеем метаклассы, возможность динамически добавлять/менять члены класса, подобие классов и обьектов (класс является обьектом), подобие методов и аттрибутов (unified access) и еще ряд вкусностей.

А из статических.. зависит от того, что значит "лучше". В С++, опять же всё усложнено, так ли нужен protected, так ли нужно 3 вида наследования? С методами лишняя заморочка, виртуальные/не-виртуальные, с конструкторами/деструкторами там тоже наворотили, "конструкторы копии", виртуальные деструкторы и т.д. "За кадром" почти ничего не делается, вот такой высокоуровневый язык. С Java/C# по крайней мере все проще и логичнее, "лучший ли ООП" там не знаю.

>ИМХО весьма голословное заявление. Есть более дружелюбный язык? Если можно какой и за счет чего он более дружелюбен?

Да любой практически.. кроме фортранов всяких и прочего наследия. Дружелюбнее, очень просто, во-первых, за счёт того, что нет у нормальных языков огромных спецификаций, которые даже компиляторы на 100% не реализуют, а если реализуют, то по разному. Во-вторых, ручное управление памятью и адресная арифметика удобству и надёжности никак не способствуют, указатели тоже лишняя сущность. Этих вещей почти нигде нету в других языках, даже сборщики мусора уже можно сказать нормой стали. В-третьих, функциональность c++, как и с, очень линейно ложится на ассемблер, даже шаблоны макро-подобны. Нет абстракций, далёких от простого представления в машинных кодах. Примеры - лямбда-функции, функции-обьекты (то что есть, громоздко), реальный параметрический полиморфизм, continuations (функции, прерывающиеся, сохраняя состояние), динамическая генерация кода (например lisp макросы).

Да, некоторые из подобных вещей требуют runtime поддержки. Но есть скажем OCaml, можёт практически всё, что и c++, скорость програм почти такая же, но при этом лаконичен и очень далёк от свойств физической машины. А вы считаете сколько переменная байт занимает.. Если оплата по часам, то занятие безусловно полезное.

>Беспонтовый это как - пузьрьковая сортировка без шаблонов,исключений и работы над контейнерами?:)

Ну, без "умных" ("мудрых","ведущих","гениальных","невидимых&q uot;) указателей и подобных наворотов, которые при более хорошем дизайне языка были бы просто не нужны (см. "C++ for real programmers", целая книга о подобной хери). Про реализацию сборки мусора уже говорили тут. ЯП вообще как правило пишутся для практического применения, а под c++ надо дохрена самому адаптироваться, чтобы "правильно" всё делать. И уж как после этого этот язык лёгким можно назвать, с трудом понимаю.. Ну 8 лет - долгий срок..

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

>(см. "C++ for real programmers", целая книга о подобной хери)

Святая книга ;-) Дао просветления. Она мне тяжелее всего далась. Правда, и больше всеx понравилась. Даже Александреску с Сартром легче пошли.

best regards..

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

>В С++, опять же всё усложнено, так ли нужен protected

Ну, а что вместо? Прокси-класс? Его не всегда удобно бывает использовать как альтернативу.

>С методами лишняя заморочка, виртуальные/не-виртуальные,

Ну, а что, всё виртуальным по-умолчанию делать? Дык, это, вроде, не всегда приемлемо.

>"конструкторы копии", виртуальные деструкторы и т.д.

С деструкторами согласен, вполне можно было бы на плечи компилятора взвалить "добаление модификатора" в том случае если класс содержит таблицу виртуальных методов. Т.к. о применении в виртуальном классе невиртуального деструктора ничего хорошего сказать нельзя.

А конструктор копии -- вещь на мой взгляд более удобная чем имплементация интерфейса clone. Один хрен, если объект содержит ссылки, необходимо чётко понимать разницу между глубоким копированием и поверхностным (или как оно там зовётся). Так что выгод в плане простоты понимания не вижу.

Или какая-то другая альтернатива имелась ввиду?

А так, в принципе, согласен со всем..

best regards..

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

>Более чем. Если ты в 40 лет занимаешься кодированием - видать не >больно то и хороший программист ты был. К этому времени уже надо >занимать руководящие должности и писать бумажки :)

Ха-ха! Бумажки секретарша пишет, а руководитель дает руководящие указания :)

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

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

Во-первых, C++ - не ОО язык. Это _гибридный_ язык.
Во-вторых, сравнивать динамическую типизацию со статической - это как сравнивать пассажирские самолеты с грузовыми. Какие лучше?

>В С++, опять же всё усложнено, так ли нужен protected, так ли нужно 3 вида наследования?
Здесь сразу соглашусь. С одним "Но". Protected, во всяком случае, не мешает. И в редких случаях полезен. Конечно можно было бы обойтись и 2 видами наследования.
В том же Eiffel нет private, насколько мне известно. И protected очень даже нужен ;)
В новомодном C# есть все 3 секции. При этом у разработчиков языка была возможность сделать 2, но не сделали...

> C методами лишняя заморочка, виртуальные/не-виртуальные,
В 80-ых, когда разрабатывался С++, экономия в 4 байта звучала вполне аргументированно.

> конструкторами/деструкторами там тоже наворотили, "конструкторы копии", виртуальные деструкторы и т.д.
Вам уже ответили. Могу только добавить, что конструкторы копирования в первую очень предназначались для повышения эффективности.
Еще раз напомню о 80-ых годах. А также о встраиваемых системах, и т.п.

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

>Ну, без "умных" ("мудрых","ведущих","гениальных","невидимых&a mp;q uot;) указателей и подобных наворотов, которые при более хорошем дизайне языка были бы просто не нужны.

В С++ я обхожусь без них. И вообще, в С++ программе редко используются все 100% возможностей языка. Потому как язык _гибридный_.

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

А чем же это не по существу? Претензия к се приплюснутой вполне конкретная. Понимаешь - тяжело спорить с тупыми и безграмотными. Ну как доказать, что С++ - говно тем, кто кроме С++ ничего не знает и знать не желает?

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