CLASHA - Объектно-ориентированное программирование на Си

Использование и разработка софта (преимущественно на ПЦ)

Moderator: Shaos

d_wanderer
Senior
Posts: 180
Joined: 28 Feb 2006 21:34

Post by d_wanderer »

Shaos wrote:Засылай
Саш, тут Linus Torvalds написал об использовании C++ в весьма колоритных выражениях типа bullshit и тому подобному... Ссылочку сходу не приведу, но написано было смачно...
User avatar
Lavr
Supreme God
Posts: 16703
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

d_wanderer wrote:Linus Torvalds написал об использовании C++ в весьма колоритных выражениях типа bullshit и тому подобному... Ссылочку сходу не приведу, но написано было смачно...
Это наверно отголоски какой-то холливор... Не люблю когда ругают языки программирования.
Они всёж сделаны людьми и для людей.
Другое дело, что в большинстве они имеют некую направленность, но в принципе
на всём можно написать всё.
А всёж интересно было бы ссылочку глянуть. Читал я, что Linus Torvalds
высказался в том плане, что человек он обеспеченный и ему на многое плевать...
А тут...
User avatar
Lavr
Supreme God
Posts: 16703
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Не это ли??? (Нарыл по Гуглю: Linus Torvalds C++ bullshit)
Linus Torvalds on C++ wrote:*YOU* are full of bullshit.

C++ is a horrible language. It's made more horrible by the fact that a lot
of substandard programmers use it, to the point where it's much much
easier to generate total and utter crap with it. Quite frankly, even if
the choice of C were to do *nothing* but keep the C++ programmers out,
that in itself would be a huge reason to use C.

In other words: the choice of C is the only sane choice. I know Miles
Bader jokingly said "to piss you off", but it's actually true. I've come
to the conclusion that any programmer that would prefer the project to be
in C++ over C is likely a programmer that I really *would* prefer to piss
off, so that he doesn't come and screw up any project I'm involved with.

C++ leads to really really bad design choices. You invariably start using
the "nice" library features of the language like STL and Boost and other
total and utter crap, that may "help" you program, but causes:

- infinite amounts of pain when they don't work (and anybody who tells me
that STL and especially Boost are stable and portable is just so full
of BS that it's not even funny)

- inefficient abstracted programming models where two years down the road
you notice that some abstraction wasn't very efficient, but now all
your code depends on all the nice object models around it, and you
cannot fix it without rewriting your app.

In other words, the only way to do good, efficient, and system-level and
portable C++ ends up to limit yourself to all the things that are
basically available in C. And limiting your project to C means that people
don't screw that up, and also means that you get a lot of programmers that
do actually understand low-level issues and don't screw things up with any
idiotic "object model" crap.

So I'm sorry, but for something like git, where efficiency was a primary
objective, the "advantages" of C++ is just a huge mistake. The fact that
we also piss off people who cannot see that is just a big additional
advantage.

If you want a VCS that is written in C++, go play with Monotone. Really.
They use a "real database". They use "nice object-oriented libraries".
They use "nice C++ abstractions". And quite frankly, as a result of all
these design decisions that sound so appealing to some CS people, the end
result is a horrible and unmaintainable mess.

But I'm sure you'd like it more than git.

Linus
http://harmful.cat-v.org/software/c++/linus

Довольно давнее сообщение: Date: 2007-09-06 17:50:28 GMT
Кто-бы перевёл... весьма специфичный на разные "термины" текст... :wink:
User avatar
Lavr
Supreme God
Posts: 16703
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Хотя времени полно прошло. А Линус - фигура крупная - перевели ужо...

Линус Торвальс против С++
http://cplusplus.dshevchenko.biz/critiq ... lds_vs_cpp
Линус Торвальдс wrote:C++ - ужасный язык. Еще более ужасным его делает тот факт, что его использует множество неквалифицированных программистов, причем там, где с его помощью проще всего создать полнейшее фуфло. Честно говоря, даже если язык C использовался бы только для того, чтобы держать в отдалении программистов на C++, это само по себе послужило бы достаточным оправданием использования этого языка.Другими словами, выбор языка C является единственным разумным выбором. Я пришел к выводу, что программист, который предпочел бы при написании какой-либо программы использовать язык C++, а не C, скорее всего, принадлежит к такому типу программистов, которых я бы предпочел выгнать вон, так, чтобы они не смогли прийти и испортить проект, которым я занимаюсь. C++ является причиной плохих проектных решений. Вы неизбежно начинаете использовать «изящные» возможности таких библиотек языка, как STL, Boost и другую подобную ерунду, которая может «помочь» вам программировать, однако добиваетесь этим только:
- бесконечного геморроя, когда они не работают (и каждый, кто скажет мне, что STL и, в особенности, Boost, стабильны и переносимы, просто несет полный бред, и это даже не смешно).
- создания неэффективных, оторванных от жизни программных моделей; в результате через пару лет вы замечаете, что некоторые абстракции не слишком эффективны, однако весь ваш код уже находится в зависимости от всех этих изящных объектных моделей, и вы не можете исправить его, не переписав при этом всё приложение.
Другими словами, единственный способ использовать хороший, эффективный, системный и переносимый C++ заключается в том, чтобы ограничить себя теми возможностями, которые в принципе доступны в языке C. Кроме того, использование языка C означает, что никто не испортит ваш проект, и вы сможете найти кучу программистов, которые действительно разбираются в низкоуровневых проблемах и не испортят все дело какой-нибудь идиотской объектно-моделируемой чепухой.
bar
Senior
Posts: 185
Joined: 07 Aug 2006 10:18

Post by bar »

Lavr wrote:А всёж интересно было бы ссылочку глянуть. Читал я, что Linus Torvalds
высказался в том плане, что человек он обеспеченный и ему на многое плевать...
А тут...
Да там смешная история была: в список рассылки git (система управления версиями) пришёл C++ программист и удивлённо начал вопрошать что-то типа "Вы пишите на C? Это же устаревший ужасный язык! Там нет наследования, шаблонов, перегрузки операторов. Вы используете макросы -- это же небезопасно Почему вы не пишете на C++? В нём так удобно работать со строками! А ну-ка переписывайте git на C++, или Страуструп обидится." Ну и так далее, в общем он нёс бред обычный среди C++-программистов. Ему предложили идти мимо, но он не понял, продолжал замусоривать список рассылки своими сообщениями. Тогда пришёл Торвальдс и написал что C++ это бычачье дерьмо. В списке рассылки после этого холивар достаточно быстро прекратился, но потом полгода C++-программисты по всему интернету писали в своих блогах записи типа "почему C сосёт у C++".
User avatar
Lavr
Supreme God
Posts: 16703
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

bar wrote:но потом полгода C++-программисты по всему интернету писали в своих блогах записи типа "почему C сосёт у C++".
Я как-то старался не влезать в холивары и мне даже казалось, что все
повзрослели и всё кончилось... Но НЕЕЕЕТ!!!! Чисто для приколу ткнул
Гугл... всё НЕ кончилось... всё продолжается бесконечно... :cry:
Логикой убивает так, что даж смеяцца не хочется: :o
С - да простят мне эту вольность - надассемблерный язык. Т.е. фактически картина такая: ассемблер - джидайский световой меч (чуток нето задел - и пис*ец), С - самурайский меч(в принципе можно рискнуть помахать - но без должной подготовки, готовся принять иудаизм), VB - бейсбольная бита. Очень по американски. Мощно , красиво, быстро, эффективно - но ! реально сосет против самурайского меча, не говоря уже о джидайском!
http://xakepy.cc/showthread.php?t=37335&pagenumber=
User avatar
Shaos
Admin
Posts: 24097
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Всё правильно Линус пишет
Вон в америке уже в некоторых университетах стали убрать ООП как обязательный предмет - ибо не учит параллельному программированию и т д
Вообще людей, которые с разу на C++ подсаживаются в качестве своего первого языка, к серъёзному программированию подпускать нельзя - у них башка снесена полностью...
P.S. По последнему линку несколько не то - там VB "воюет" с C/C++ (большинство людей до сих пор думают, что C и C++ это один и тот же язык)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16703
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

Shaos wrote:P.S. По последнему линку несколько не то - там VB "воюет" с C/C++
Да ктоб с кем ни воевал - логика на уровне приведённой цитаты...
Уважая посетителей форума и коллег, я не стал цытировать борцов
С - С++... Они... скажем так... более суровы в высказываниях. :lol:

Но если лично у меня есть кусок кода на С++ (или на чем другом),
который решает нужную мне проблему - то я его использую, не глядя
на мнения.
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

Лично я не признаю никакие языки кроме нативного АСма под конкретную платформу и Васика для сложных вычислений и формул. В остальное время под х86 пишу на паскале, так как мне не трудно набирать токены полностью, а не тыцкать по одной клавише в погоне за ленью. И да, ЯВУ отличается от НЕ ЯВУ тем, что программа должна выглядеть понятным ЧЕЛОВЕКУ языком. Программа на бейсике понятна? Без сомнений. Программа на паскале тоже (человеку знакомому с английским). А вот на С, что означают эти закорючки и фигурные скобки?! И не говорите мне, что С - это ЯВУ... :3 Мое ИМХО, не обязано совпадать с вашим.
User avatar
Lavr
Supreme God
Posts: 16703
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

HardWareMan wrote:И не говорите мне, что С - это ЯВУ...
И не рискнём, уважаемый. С - это кроссплатформенный ассемблер. Васиком он
быть не обязан. А если уж говорить о ЯВУ - то что там говорили в ВУЗ-е?
В пределе оси развития ЯВУ, машина должна научиться понимать тебя со слов.
Щелкнул пальчиками - и сказал: "А налейка мне кофе!" А она - "Нет такого
оператора, ошибка компиляции, Сер!"

В этом плане что-то всегда вспоминается заставка к "Another World", когда
перец садится за трёхмерный терминал - а машина ему:"Бон джорно, профессуре!" :lol:

Image

PS. Но в чем я с HardWareMan-ом бесспорно согласен, да и не мы с ним это придумали,
ЯВУ должен быть максимально близок к понятному человеку языку.
User avatar
Shaos
Admin
Posts: 24097
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

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

P.S. лично я не признаю никакие языки - только программирование в кодах конкретного процессора ;)
однако иногда бывает не хватает времени и приходится наступать песне на горло и мучать ассемблер с его буковками :)
но частенько лень пересиливает любовь к прекрасному (когда очень быстро надо получить работающую программу) - приходится писать на сях :roll:
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24097
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Lavr wrote:Не это ли??? (Нарыл по Гуглю: Linus Torvalds C++ bullshit)

http://harmful.cat-v.org/software/c++/linus

Довольно давнее сообщение: Date: 2007-09-06 17:50:28 GMT
Кто-бы перевёл... весьма специфичный на разные "термины" текст... :wink:
Кстати я это сообщение почти сразу же тут в форуме процетировал - ещё в 2007 году:

viewtopic.php?t=9479

P.S. Не понимаю людей, которые прикипели к Паскалю - как им не лень набирать все эти BEGIN-ы и END-ы...

P.P.S. Вобщем я для себя сделал вывод, что если хочется получить по настоящему переносимую программу - пиши на си. Я не спорю, что на С++ тоже можно писать переносимые программы, однако С++ компиляторов несколько меньше чем С компиляторв (что уже сужает рамки портабельности), ну и чтобы программа на С++ была переносимой между разными платформами и компиляторами, нужно использовать только очень узкое подмножество языка С++, причём оказывается, что всё тоже самое можно написать и на обычном С (см. начало топика) - тогда зачем гнаться за С++ с его фенечками и рюшечками?
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

Shaos wrote:P.S. Не понимаю людей, которые прикипели к Паскалю - как им не лень набирать все эти BEGIN-ы и END-ы...
Вот именно: не лень. Более того, я на пасе (точнее дельфи, но можно и голом пасе) напишу нужную мне тулзу за полчаса, при этом если мне надо будет ИДЕ мне прекрасно поможет в отладке. Но как правило, мой код начинает работать в 95% случаев, некоторый сразу с первого набора и компиляции, без проверки на синтаксис даже (было такое, да)...
User avatar
Shaos
Admin
Posts: 24097
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

HardWareMan wrote:
Shaos wrote:P.S. Не понимаю людей, которые прикипели к Паскалю - как им не лень набирать все эти BEGIN-ы и END-ы...
Вот именно: не лень. Более того, я на пасе (точнее дельфи, но можно и голом пасе) напишу нужную мне тулзу за полчаса, при этом если мне надо будет ИДЕ мне прекрасно поможет в отладке. Но как правило, мой код начинает работать в 95% случаев, некоторый сразу с первого набора и компиляции, без проверки на синтаксис даже (было такое, да)...
ага, дельфи - мертвечина ещё та :roll:
Я тут за главного - если что шлите мыло на me собака shaos точка net
bar
Senior
Posts: 185
Joined: 07 Aug 2006 10:18

Post by bar »

HardWareMan wrote:И да, ЯВУ отличается от НЕ ЯВУ тем, что программа должна выглядеть понятным ЧЕЛОВЕКУ языком. Программа на бейсике понятна? Без сомнений. Программа на паскале тоже (человеку знакомому с английским).
Нет, если программа пишется на понятном незнакомому с программированием человеку, то эта программа написана не на ЯВУ а на естественном языке, родном (или впоследствии изученном) для человека. К высокому уровню это не имеет никакого отношения. ЯВУ -- это несколько иное, это высокий уровень абстракции от единичек и ноликов при программировании.
И при таком подходе паскаль приравнивается к C. Их уровень абстракции практически идентичен. basic -- какой басик имеется в виду? Тот на котором я писал в школе на БК-0010? Или что-то уровня Visual Basic? Visual Basic -- это тот же паскаль/C, но там ещё классы. Классы считают повышением уровня абстракции, поэтому VB будем считать уже уровня Delphi и Java. C++ я затрудняюсь куда-то приписать -- сам я им не пользуюсь, C++-программисты считают его венцом развития, поэтому оставим его в стороне. VB/Delphi/Java -- это, конечно, ещё не самый верх уровня программирования, куда можно залезть. Но в область всяких там лиспов я тоже не полезу.
Я лишь к тому, что не надо привязывать высокоуровневость языка к "фигурным скобочкам". Да, C -- это низкоуровневый язык, и он с гордостью носит неофициальное звание кроссплатформенного ассемблера. Но это вовсе не потому, что при создании C из алгола удалили begin'ы и end'ы, и заменили их фигурными скобочками.
HardWareMan wrote:Более того, я на пасе (точнее дельфи, но можно и голом пасе) напишу нужную мне тулзу за полчаса, при этом если мне надо будет ИДЕ мне прекрасно поможет в отладке. Но как правило, мой код начинает работать в 95% случаев, некоторый сразу с первого набора и компиляции, без проверки на синтаксис даже (было такое, да)...
Да все и так знают, что паскалисты любят паскаль по двум причинам, как раз по этим:
1. они отлично знают именно паскаль;
2. им очень удобна IDE под названием Delphi.
Shaos wrote: P.S. Не понимаю людей, которые прикипели к Паскалю - как им не лень набирать все эти BEGIN-ы и END-ы...
Я несколько лет назад был вынужден связаться с паскалём, и писал на паскале в emacs'е. begin/end -- это всё фигня и мелочи. При желании можно заточить текстовый редактор, чтобы он менял {} на begin/end и не знать проблем. В паскале есть куча других раздражающих неудобств, от которых избавиться сложнее.