vit_r: default (Default)
[personal profile] vit_r
Давно хотел написать, всё руки не доходили. Но тут увидел, как [dreamwidth.org profile] vak восхищается исподвыпопердностью С++ в интерпретации Scott Meyers.

Этот самый Meyers написал введение в книге Andrey Alexandrescu "Modern C++ Design", но я процитирую сейчас кусок из дефирамбов, которые помещены следующими:
Code generators have held comparable promise for years, but my own research and practical experience have convinced me that, in the end, code generation doesn't compare. You have the round-trip problem, the not-enough-code-worth-generating problem, the inflexible-generator problem, the inscrutable-generated-code problem, and of course the I-can't-integrate-the-bloody-generated-code-with-my-own-code problem. Any one or these problems may be a showstopper; together, they make code generation an unlikely solution for most programming challenges.

Wouldn't it be great if we could realize the theoretical benefits of code generation -- quicker, easier development, reduced redundancy, fewer bugs -- without the drawbacks? What's what Andrei's approach promises. Generic components implement good designs in easy-to-use, mixable-and-matchable templates. They do pretty much what code generators do: produce boilerplate code for compiler consumption. The difference is that they do it within C++, not apart from it. The result is seamless integration with application code.

John Vlissides
IBM T.J. Watson Research
September 2000



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

"Кодогенерация -- вчерашний день. Пробовал через жопу, какая-то хуйня получается! Хотите прочувствовать настоящие извращения? Ебитесь с темплейтами!"

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

Тема очень большая, но сейчас времени нет. На днях узнал, что детки с шаловливыми ручками опять поломали Perl. Попытки номер 6 им оказалось мало, так что они психоделической версии дали совсем другое имя, а для новых художеств перескочили сразу на цифру 7.

Date: 2020-06-30 01:47 pm (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi
Vlissides.

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

У нас в Скале много такой аналогичной фигни. Tagless finals, free monads, вся эта ненужная хрень... ну, могла бы быть и нужной, если бы с ней можно было работать, а не сидеть гадать, что компилятор скажет, если вообще скажет, а не зависнет.

Date: 2020-06-30 02:39 pm (UTC)
From: [personal profile] iamjaph
Про Perl. Так это все разные люди. Те, кто в 200x годах писали Perl6 (Parrot) - они переругались: главный архитектор и ведущий разработчик не могли найти общий язык. Архитектору надоело - он ушел. Без него главный еще год коммитиил, пока оно не заглохло. Через лет 5-7 женские руки подобрали то, что получилось. Собрала новую команду, но было все плохо: под NET и JVM Perl6 работал быстрей, чем под Parrot. А то, что сейчас есть с Raku - это один человек сделал виртуальную машину MoarVM под NQP (это в 2012 году).

Date: 2020-07-01 12:29 pm (UTC)
thedeemon: (Default)
From: [personal profile] thedeemon
Не цените вы искусство! Это ж художники и поэты, они так видят и самовыражаются.

Date: 2020-06-30 03:18 pm (UTC)
From: [personal profile] werefox
Так итог-то какой? На чем быдлокодить в 2020 юноше, обдумывающему житье?

Date: 2020-06-30 03:38 pm (UTC)
chaource: (Default)
From: [personal profile] chaource
Haskell, Elm, Rust.

Date: 2020-06-30 03:56 pm (UTC)
From: [personal profile] moneo1337
подучить питон, тензорфлоу, назваться дата сайентистом, просить 200 баксов в час. профит )))

Date: 2020-06-30 05:15 pm (UTC)
From: [personal profile] werefox
Пчелы у меня уже есть. Это ко мне младшее чадушко пристало, а я в этой отрасли 20 лет не работаю.

Date: 2020-06-30 08:43 pm (UTC)
From: [personal profile] anonim_legion
Дайте ему Аду-2012, она хоть и деревянная по уши, зато однозначно понятная и без странностей. То есть, писать в прод на ней вряд ли придётся, но как учебный язык она хорошая. Как better Pascal.

Дополнение:
image
Edited Date: 2020-06-30 09:15 pm (UTC)

Date: 2020-06-30 10:41 pm (UTC)
vak: (Default)
From: [personal profile] vak
Язык Си можно сравнить с остро отточенным топором. Умеючи можно много полезного соорудить, вплоть до строительства дома без единого гвоздя. Но штука опасная, неумеючи легко покалечиться.

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

Date: 2020-06-30 10:55 pm (UTC)
dmm: (Default)
From: [personal profile] dmm
> Если можете не писать на Си++ - не пишите.

Вот!

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

Right. However, vanilla use of templates is necessary, because the standard library is STL, and STL is what one should use. So, a very plain, very simple-minded use of templates, without any tricks, is OK (if one is already in that miserable situation of using C++).

Date: 2020-07-01 09:25 am (UTC)
mend0za: (Default)
From: [personal profile] mend0za
На прошлой неделе проходил за казённый кошт тренинг по параллельному программированию на threads в C++. Лектор виртуозно бегал вокруг граблей, всё время стараясь не наступить на главную - в C++ и библиотеках by design поддержки многопоточности нет. Только сбоку прибитые костыли.

В C++ мне также очень нравятся извращения над ключевым словом static. Которое в 4 разных местах может значить абсолютно разное, в зависимости от контекста.

Date: 2020-07-01 07:14 am (UTC)
From: [personal profile] jamhed
> Perl 7 is mostly Perl v5.32, but with all of the features enabled by default.

А как вот это вот проинтерпретировать как "детки с шаловливыми ручками опять поломали Perl"?

Date: 2020-07-01 11:52 am (UTC)
From: [personal profile] jamhed
Я про другое: perl 7 это perl 5.32 с включенными по умолчанию опциями, которые и так все разумные разработчики включают, с опцией отключить включенные по умолчанию опции если уж очень хочется, для обратной совместимости. Как по мне так здравый и разумный эволюционный подход, в связи с чем и интересуюсь -- что же именно тут детского, шаловливого и поломанного?

Потом, означенный perl 7 "детки" прогнали по всему CPAN, и решили что работает достаточно хорошо (=не так много поломано, и если уж поломано, то поделом). Если вы думаете что не хорошо, то какие таки у вас аргументы, без отсылок на ненаписанные тома?

Date: 2020-07-01 12:03 pm (UTC)
From: [personal profile] jamhed
Хм, на этот комментарий у вас время есть, а по существу ответить -- нет? Ну ок, что.

Date: 2020-07-01 09:33 am (UTC)
mend0za: (Default)
From: [personal profile] mend0za
Mr. John Vlissides похоже имеет вавку на коре головного мозга. И пытался кодогенерацией делать всё подряд, а не подходящие для неё задачи. То есть имеет проблему с анализом требований и инструментов.

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

Profile

vit_r: default (Default)
vit_r

July 2025

S M T W T F S
   12 345
67 89 1011 12
1314 15 16 1718 19
20 212223242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 23rd, 2025 02:21 pm
Powered by Dreamwidth Studios