LINUX.ORG.RU

Ушат помоев в сторону крестолюбов

 , , ловите наркомана,


15

14

Восседая в уютненьком кресле с чашечкой сладкого чая, внезапно ощутил приток жопной боли напополам с лирическим настроением и решил излить сию благодать куда руки дотянулись.

Последние 7 лет я пишу сугубо на C, и только под Linux (да, да -std=gnu99 и accept4, dup3, __attribute__((cleanup(dtor))) и прочие приятности, позволяющие сделать волосы шелковистее на 15.5%) и не понимаю, для чего вообще нужен C++? То, что на сишке делается красиво и элегантно, в крестах напоминает соитие парализованных дцпшников (к сожалению, утерял картинку, но именно этот образ всплывает в голове, когда вижу очередную порцию крестолапши).

Давайте посмотрим на типичного C++ разработчика: он использует STL, boost, многие любят Qt (не только для GUI), якобы чтобы «писать кроссплатформенный код». В итоге болезный не знает током ни WinAPI, ни POSIX — ничерта. Он абсолютно не разбирается, как работает целевая система, для которой пишет код! Крестокодер просто не осознает, какой лютый ужас кроется за его любимыми iostream-ами, какое лютое говно лежит в boost::filesystem::path, насколько убого-низкоуровневым является boost::asio в 2016 году.

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

Также эти убогие завистливо смотрят на type inference в языках, проектировавшихся не как «C на стероидах», и в ответ начинают лепить template и auto не к месту, от чего код адово пухнет и даже IDE перестает его понимать.

Серьезно, просто прекратите писать на этом языке. В следующий раз, начиная новый проект, выберите java (щютка)/go/swift/rust/c. Прекратите насиловать труп и отравлять зловонием все вокруг!

Перемещено true_admin из talks

★★★★

Последнее исправление: a1batross (всего исправлений: 2)

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

На жабе я ни одного приложения вспомнить не могу даже. (LOR не считается)

Eclipse, NetBeans, IDEA, CLion, Android Studio

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

Я бы с удовольствием програмил на чем-то типа крестов, но мне просто неприятно смотреть на тот уровень культуры кода, сложившийся у этого ЯП. Если у Си исходники еще могут выглядят нормально. То кресты... вот смотрел недавно Vulkan - просто ад адский.

Сейчас к ржавому присматриваюсь, может хоть тут люди по адекватнее будут.

foror ★★★★★
()
Последнее исправление: foror (всего исправлений: 2)
Ответ на: комментарий от foror

Правда?

Ну расскажите, пожалуйста, какая польза в C++ от «главного класса».

Или зачем нужны неймспейсы в однофайловой утилитке (или DLL-ке, которая собирается из одно файла)?

Или как в C++ сделать удобное логирование с указанием имени функции, имени файла и номера строки без макросов.

С примерами, пожалуйста. Чтобы все могли видеть уровень мастерства оратора.

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

Рекомендую начать с чтения книги по паттернам проектирования GOF
Потом Совершенный Код

Лол :-)

после if должна всегда быть { )

Хахаха :-) Лол :-)

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

Зачем мне это? Я просто прочитал пункты предыдущего оратора и фактически прочитал пересказ из уважаемых книг по программингу. Книги на все времена, оратор некоторые из них указал.

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

foror ★★★★★
()
Последнее исправление: foror (всего исправлений: 1)
Ответ на: комментарий от stevejobs

книги по паттернам проектирования GOF

очень много паттернов представляют собой костыли для жабки, которые в плюсах не нужны :)

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

Зачем мне это?

Может чтобы ваше мнение хоть чего-нибудь да стоило?

Ярлыками «говнокодеры» бросаться легко. Продемонстрировать что сам не такой уже слабо.

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

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

Я смотрю у джавистов снобизм не хуже лисперов.

вот смотрел недавно Vulkan - просто ад адский.

Vulkan? Он же на си и это просто API.

может хоть тут люди по адекватнее будут

Я на нём пишу. Можете сразу бежать.

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

Вот Go прыгнул в нравящуюся мне сторону, но как то перепрыгнул (зеленые треды вместо системных и сборщик мусора вместо alloc и free). Так бы неплохой именно системный язык получиться мог. Если б с тем же синтаксисом, но без большого рантайма.

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

Vulkan? Он же на си и это просто API.

Да я не сами исходники, я смотрел примеры его использования на крестах.

Я на нём пишу. Можете сразу бежать.

Не вы задаёте культуру кода ржавого, по крайне-мере вас пока меньшинство. Подписался на гитхаб тренды, код выглядит более-менее вменяемо, грамотно.

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

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

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

Я раст не знаю, это нормально?

...
    a = a.arg(gen_flag!(Key::RemoveVersion, "true"));
    a = a.arg(gen_flag!(Key::RemoveNonsvgAttributes, "true"));
    a = a.arg(gen_flag!(Key::RemoveUnreferencedIds, "true"));
    a = a.arg(gen_flag!(Key::TrimIds, "true"));
    a = a.arg(gen_flag!(Key::RemoveTextAttributes, "true"));
    a = a.arg(gen_flag!(Key::RemoveUnusedCoordinates, "true"));
    a = a.arg(gen_flag!(Key::RemoveDefaultAttributes, "true"));
    a = a.arg(gen_flag!(Key::RemoveXmlnsXlinkAttribute, "true"));
    a = a.arg(gen_flag!(Key::RemoveNeedlessAttributes, "true"));
    a = a.arg(gen_flag!(Key::RemoveGradientAttributes, "false"));
    a = a.arg(gen_flag!(Key::MoveStylesToGroup, "true"));
    a = a.arg(gen_flag!(Key::JoinStyleAttributes, "true"));
    a = a.arg(gen_flag!(Key::ApplyTransformToGradients, "true"));
    a = a.arg(gen_flag!(Key::RemoveUnresolvedClasses, "true"));
...

Первый же модуль, который я открыл, на 80% состоит из С-с С-v.

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

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

Ниче, что у GoF примеры на плюсах? Не сильно так шаблон рвет?

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

Серьёзно, но это ниша, в изначальном заявлении говорилось про «все пишут». И если мы даже в мобайлсофт опустились то тогда нужно взять любые аппаратные платформы и сравнивать там, но мы же не будем академическое исследование проводить? Бараном не буду блея отстаивать своё мнение как единственно верное, но слово «все» как ни крути не катит.

Касаясь мобильного софта, у разрабов не очень то большой выбор юзать там java или нет.

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

Это генератор допустимых аргументов CLI. Макрос для удобства. Как его улучшить - я не знаю. Заводить таблицу и циклом загонять особого смысла нет.

Разве что можно 'a = a' убрать.

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

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

Я смотрю у джавистов снобизм не хуже лисперов.

Поциент просто еще слишком юн. Вот вляпается в ИНДУСтрию, поймет. Или сделает вдоль, если слишком впечатлительный. Ты впрочем тоже неадекват.

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

Я стараюсь не вляпаться ИНДУСтрию, точнее когда был юн вляпался, но быстро сообразил и ушел делать собственные проекты.

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

CLion

Жалкое тормозящее говно, которое не умеет в нативную тему, нативные шрифты и HiDPI от слова «совсем».

активно развиваются и аналогов на C/C++, к сожалению, не имеют.

Палю годноту: KDevelop.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 2)
Ответ на: комментарий от Deleted

зеленые треды вместо системных

Там M:N планировщик.

сборщик мусора вместо alloc и free

Паузы до 100 микросекунд.

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

Да я же в шутку, я указал на частичную свою не правоту. :D

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

Как вы не видели хорошего кода в плюсах, так и я не видел хорошего кода на Си. Сейчас изучаю сорцы cairo и librsvg - там ад космический. glib, gtk даже вспоминать не хочу. Плюсы, по сравниванию с этим ужасом, просто верх совершенства.

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

CLion
Жалкое тормозящее говно, которое не умеет в нативную тему, нативные шрифты и HiDPI от слова «совсем».
Палю годноту: KDevelop.
Много ошибок в слове QtCreator :)

Ребят, я же пооошууутииил чво вы ну ::)

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

Паузы до 100 микросекунд.

Ааа! Как страшно жить!!111 Хард-риалтайм хацкеры в треде, все в машину!

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

QtCreator хуже анализирует код, менее удобная навигация. Но тоже сойдёт.

В QtCreatore отличная навигация же. Слева внизу поле вводе - вводи все что нравится и очень быстро находишь нужное место. Ну и ctrl+click очень радуют. Только на auto часто затыкается (в нашем большом проекте), но это хороший повод, кстати, взглянуть на код и подумать «а не стоит ли мне назвать в этом месте тип, чтобы код все же был более читабельным» :)

invy ★★★★★
()
Последнее исправление: invy (всего исправлений: 1)
Ответ на: комментарий от anonymous

То есть я неадекват потому, что такой код меня вымораживает?

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

Копипасты не хватает, ах да, вот она: https://github.com/GNOME/librsvg/blob/master/rsvg-styles.c#L262

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

неплохой именно системный язык получиться мог

Не мог. Убери GC и получим сишку с методами. Кому это нужно? Так что все правильно сделали, хотя язык и говно (это вкусовщина).

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

То есть я неадекват потому, что такой код меня вымораживает?

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

anonymous
()

stl, boost, Qt - это библиотеки С++, а не сам С++. Типичный С++ - это шаблоны.

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

утверждение «7 лет пишу на С» вне контекста ничего не значит. Как бы «пишу на С сайт» и «пишу на С драйвер» имеют разный градус идиотизма.

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

Вот эта функция меня сильно вымораживает:

https://github.com/GNOME/librsvg/blob/master/rsvg-styles.c#L112

Типичный Сишный говнокод :) 80 строк инициализации структуры при том там, где этому совсем не место (hint: в конструкторе место).

invy ★★★★★
()
Последнее исправление: invy (всего исправлений: 1)
Ответ на: комментарий от invy

Какая разница на чем написаны примеры?

Бггг! GoF вообще то старались для крестомакак, чтобы хоть немного вас приобщить к инженерной культуре. Но не в коня корм.

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

Ну так default member initializer нету, вот и приходится страдать.

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

Всё из перечисленного такое ненужно, что кушать не могу.

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

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

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

Уже есть Rust.

Это психоделическая сишка. А ему хочется нормальную, без веществ. Хотя зачем не ясно, нормальная уже есть. Без сахара, это даже полезно.

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