vit_r: default (Default)
[personal profile] vit_r
По следам беседы
vak
В последнем стандарте языка Си++ 2020 появилась поддержка сопрограмм (coroutines).

juan_gandhi
Я как-то не понимаю внезапного интереса к этой древней фигне. Я ее имплементировал в 1974-м году, побаловался, употребил в продакшене, не понравилось, ну и завязал.

vit_r
Это индийский пулемёт для стрельбы в ногу.

Когда-то люди отказывались от лишних возможностей, чтобы сократить вероятность ошибок. Сейчас тренд обратный.

juan_gandhi
У меня был именно такой опыт. Ни хрена не отследишь, состояния меняются загадочным образом, и впараллель.

vit_r
Сейчас именно непредсказуемые загадочные эффекты и ценятся в средствах разработки. Мы вступили в эпоху магии.

Кстати, хорошая идея, надо будет обдумать.



Искусство стрельбы в ногу



Мастерство -- понятие неопределённое. Раньше люди с ним сильно мучились.

Как определить мастера? Должен ли он что-то создать? Должен ли он рассказать о том, что что-то создал? Должен ли он поделиться своими идеями о том, что он бы мог создать, если бы начал создавать?

Неопределённости... Неопределённости и неясности.

К счастью, старые времена прошли.

Скажите, видели ли вы чтобы больница искала врача, умеющего выписывать тетрациклин и освоившего аспирин Форте последней модели? Знает ли логистическая фирма, что ей нужны водители красных самосвалов с пронзительным гудком? Не с громким, а, именно, с пронзительным? Ищет ли застройщик маляра, умеющего красить восточный фасад с третьего по седьмой этаж валиком шириной пятнадцать дюймов?

Нет.

А знаете почему?

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

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

Запомните, а ещё лучше распечатайте большими буквами и повесьте над монитором: Мастера определяет инструмент.

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

Вот о главном вопросе карьеры и пойдёт сейчас речь.

Естественно, вопрос этот в приличном месте не стоит задавать. На него с жаром ответит любой. И молодой программист, ещё не знающий разницу между битом и байтом, и седой профессор, давно забывший и одно, и другое.

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

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

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

Уникальность этой лекции в том, что мы отбросим всю, пусть и прекрасную, шелуху, и дойдём до основной сути.

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

Потому что принципы важнее.

Итак, первым принципом правильно выбранного инструмента является универсальность.

Раньше было как? Специалист таскал с собой целый ящик. А всё потому, что инструменты были специальными.

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

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

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

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

Удобный и простой инструмент унижает. В самом инструменте должна быть сосредоточена радость творчества в процессе освоения инструмента.

И тут стоит отметить следующее важное качество: загадочность.

Не тяжесть освоения, не сложность понимания. Скрытая суть инструмента должна быть иррациональна.

Раньше как было? Открывает специалист ящик, и даже ребёнок смотрит и понимает: Молоток, чтобы бить, пила, чтобы пилить, сверло, чтобы сверлить.

Разве может человек с понятным инструментом сойти за специалиста?

Демонстрация инструмента должна вызывать оторопь, удивление, а ещё лучше, священный ужас. (Последнее свойство полезно в общении с менеджерами.)

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

Незнакомые слова -- просто незнакомые. А непонятные -- это те, которые означают не то, что слушатель ожидает от них.

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

-- Кот? Силосом? У меня нет кота.

-- Не коТ, а коД. Исходный код твоего модуля.

-- Что?

-- Вот, смотри. Тут красная лампочка и сумма сто тридцать два. Сто пять -- это было бы ещё дуновение тлена. А сто тридцать два -- это силос и есть.

Что может ответить на это ошарашенный грешник силоса? Будет ли он спрашивать? Будет ли он спорить с красной лампочкой? Или просто ответит:

-- Спасибо, я понял.

А теперь сравните это с куцыми возможностями специалиста отсталых времён.

-- Гвоздь забит криво.

-- Тыльную поверхность надо было тоже шлифовать.

-- В формуле длина не в дюймах, а в сантиметрах.

Вызывают ли такие замечания священный трепет? Подавляют ли на корню желание спорить?

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

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

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

А какие возможности открывает это для междоусобных войн!

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

Это не просто звучит. Это звучит гордо.

А теперь сравните с банальной "Конференцией пильщиков".

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

Далее, надо обратить внимание на процесс творчества.

Возьмём простого инженера, закованного в кандалы ГОСТов. Или европейского, мучимого ДИНами и придавленного ИСО.

О чём он может думать в такой ситуации? Только о том, как решить задачу.

Ещё раз обратим внимание: решить, но не решать.

Радость творчества только в процессе. Готовая работа творца интересовать не должна, потому что за ней он сразу видит новые цели. Таким образом, правильный инструмент должен творцу расправлять крылья.

Что такое чертёж? Можем даже не рассматривать компьютерную модель, потому что в ней нет ни капли ручного труда. Возьмём артефакт: древний чертёж на бумаге, к которому инженер-конструктор приложил руку. На котором он чертил карандашом, подтирал резинкой, а потом проводил чистовые линии рейсфедером.

Что это?

Это изделие ремесленника.

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

В чертеже нет индивидуальности, а потому чертёж не является произведением искусства

Теперь рассмотрим исходный код.

Да. Я видел исходный код, сделанный как чертёж. Через двадцать лет, как его написали, можно прочитать и понять, что программа делает. Можно добавить новые опции. Можно изменить параметры.

И, если не посадить на поддержку кода творческого человека, через двадцать лет можно будет сделать то же самое.

Что говорит нам этот факт?

Он говорит, что код стабилен.

Стабильность вызывает скуку, трудности озаряют путь к победе.

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

У кого-нибудь возникает идея подкрасить волосы Мона Лизе Да Винчи или заменить пращу в руке Давида Микеланджело?

Правильно!

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

И дело не в том, что произведение совершенно. Даже убогий по виду предмет искусства может быть уникальным.

Наконец-то эту истину поняли и в айти: Написание должно быть однократным, а результат -- одноразовым. Только правильный инструмент способен обеспечить необходимую для полёта фантазии свободу.

Избегайте простых решений. Цель -- ничего, дорога -- всё.

И тут мы открываем главное свойство правильного инструмента: он должен быть неожиданным.

Представьте городок на Диком Западе. Герой посреди улицы. Слева -- салун, справа -- тюрьма, чтобы далеко не тащить. Из салуна высыпал народ и делает ставки, шериф вышел на крыльцо тюрьмы, недалеко у церкви гробовщик задумчиво переводит взгляд то на злодея, то на героя, прикидывает что-то в уме и потирает руки.

Колокол на церкви отбивает двенадцатый удар.

-- Бах!

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

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

-- Бах!

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

Что говорит нам этот пример?

Нельзя выбирать простой работающий инструмент, если надо создать существенный объём работы.

А теперь представим ту же картину, но с современным, правильным инструментом.

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

Колокол на церкви отбивает двенадцатый удар.

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

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

-- Бах!

Все замирают. Потом оглядываются.

Ничего.

-- Бах!

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

Герой откашливается, делает серьёзное лицо.

-- Бах! Бах! Тра-та-та.

Тишина.

Неожиданно падает шериф, которому крокодил откусил ногу.

Вы спросите, откуда крокодил? О! Этот интереснейший вопрос занимает всех следующие полтора месяца. Особенно активен шериф, который поспорил с гробовщиком.

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

Наконец выясняется, что вся проблема в "Бах! Бах! Тра-та-та".

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

А появляется он только, когда "Бах! Бах! Тра-та-та". Причём, между "Бах!" и "Бах!" должно быть не более, чем полторы секунды. Если "Бах! Тра-та-та", то может произойти что-то плохое.

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

Через две недели от производителя приходит ответ. С благодарностью за информацию. Проблема известна, но не актуальна. Разработчик уволился и модуль, в котором жил крокодил, заменён.

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

Иногда -- точно ещё не выяснили, но, похоже, это как-то связано с порядковым номером каждой третьей нечётной секунды, делённой на фазу Луны -- в процессе применения Инструмента из-за угла высовывается бегемот и делает: "Фр-р-р-р-р!"

Проблема не стоит упоминания, но есть маленькая деталь: высовывается из-за угла бегемот не тем концом, с которого рот. А "Фр-р-р-р-р!" у него на двадцать-тридцать метров, хотя некоторые свидетели утверждают, что бывает на пятьдесят.

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

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

Но, если бегемот высунулся из-за ближнего угла, нужно учитывать последствия.

Бежать нельзя. Можно упасть в яму для крокодила.

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

Таким образом, приоритет проблемы снижен и она переведена в задокументированные особенности системы.

К тому же, если пятьдесят, бежать всё равно бесполезно.

Падать рекомендуется ногами от бегемота и прикрывать голову руками. Хотя, это тоже бесполезно.

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

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

Производитель рекомендует держать глаза открытыми, чтобы не пропустить происходящее между "Фр-р-р-р-р!" и тем моментом, когда бегемот уже убежал. К сожалению, пользователи не готовы оказать помощь и утверждают, что при всём желании глаза у них срабатывают инстинктивно.

Производитель благодарит за использование продукта, надеется на дальнейшее сотрудничество и добавляет, что на вариант Голд ещё две недели действует особая скидка.

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

Тот задумывается на пару секунд, а потом пожимает плечами.

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

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

И я видел, как это работает.

Рассказывать подробности я, естественно, не могу, а потому возвратимся в городок на Диком Западе.

По улице идут двое. Один кивает головой в сторону банка и говрит:

-- Вот там стрелялись кривой Джо и однорукий Билл.

-- Тот, который украл десять коров?

-- Нет, тот который ограбил поезд.

-- Взял столько денег и такая глупая смерть.

-- Нет, ограбил поезд Джо после того, как убил Билла.

-- А чего тогда хотел Билл?

-- А фиг его знает.

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

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

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

Итак, та же сцена, но в том месте, где был использован Правильный Инструмент.

По улице идут двое. Один резко кладёт другому руку на плечо, прижимает палец к губам и шёпотом говорит:

-- Стой! Вон там, стрелялись красавчик Джонни и говорун Билли.

-- Где? -- также шёпотом отвечает второй.

Первый показывает рукой в сторону разрушенного банка и шепчет:

-- Вон там, от нас всего в паре сотен шагов.

-- Бежим!

-- Решение, конечно, правильное, но ты же хотел на ту сторону?

-- Может обойдём?

-- А как ты думаешь?

-- Неужели совсем?

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

-- Может прорвёмся бегом?

-- Ни в коем случае! Вот тут и дотуда передвигаемся ползком. Потом влезаем в это окно, проходим в заднюю комнату и через каминную трубу влезаем на крышу. Сегодня она зелёная. В крайнем случае, подскользнёмся и упадём. Когда красная, надо выходить через старый хлев. В принципе, достаточно безопасно, но потом долго отмывать сапоги. С крыши слезаем там. Сразу на корточки и по диагонали гуськом вот до того угла. Смотри, чтобы черепицей не задело. Она не падает с крыши, а вылетает из того окна. Если зазеваешься, сложно пригнуться. Падай, или подставляй спину. И запомни, ни в коем случае не вставать и гуськом спиной вперёд. Можно приставным шагом, если лицом туда, но обычно ноги быстро устают.

-- А дальше?

-- Дальше ползком по обстановке. Осторожно проверяй почву -- можно провалиться. Но бывает и зыбучий песок.

-- Чёрт!

-- А как ты думал? К банку не приближайся. Максимум на пятнадцать шагов. И то, если припрёт. После того, как всё случилось, глупые люди думали, что сломают заднюю стену и смогут вытащить то, что там осталось. Стену они сломали. В пролом вошли. Больше их никто не видел. Дальше проще. За кустами от того дома можно тихо вдоль стен по западной стороне. Если услышишь скрип, падай. Но это ерунда. Просто поехала крыша. Если громко, то уже стена, но обычно тоже не страшно. Ну что, хочешь идти?

-- Не хочу, но надо.

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

-- Ну, с Богом!

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

Каждый инструмент окружён своим особым ореолом и эксклюзивным кругом почитателей, но теперь мы знаем универсальные основы теории, а также такие важные термины как "Ловить Крокодила" и "Ждать Бегемота".

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

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

Инструмент должен позволять сделать быстро и просто, чтобы потом можно было заняться более интересным делом: выяснять почему сделанное не работает.

Только выбрав правильный инструмент, специалист может обеспечить себе правильную насыщенную жизнь.

Потому отнеситесь к выбору инструмента со всей серьёзностью. В айти это главный, если не единственный важный вопрос.

Date: 2021-06-27 08:07 pm (UTC)
rampitec: (Default)
From: [personal profile] rampitec
Офигенно! Надо сказать нам повезло с Инструментом. У нас есть целый Коммитет академиков-маразматиков, который раз в несколько лет неизменно улучшает наш Инструмент, так что у нас появляется возможность раз за разом рефакторить старый код, используя новые изобразительные средства. Это собственно позволяет не менять сам Продукт, но заниматься интересным и полезным делом. Коммитет мы очень любим и им дорожим, так что главной задачей становится не допустить в него ремесленников, сделавших в жизни хоть что-то рабочее. Поэтому самых опытных и лучших людей мы иногда, отрывая от сердца, отправляем служить в Коммитет.

Коммитет

Date: 2021-06-27 09:15 pm (UTC)
From: [personal profile] idan11
Лучше всё-таки разделить - Комми-тет.
Сразу веет чем-то до боли знакомым и ламповым.

Re: Коммитет

Date: 2021-06-27 09:33 pm (UTC)
rampitec: (Default)
From: [personal profile] rampitec
Действительно. И собрания у них съезды на самом деле.

Date: 2021-06-27 09:34 pm (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi

Очень правдоподобно расписано. Спасибо.

Date: 2021-06-28 07:29 am (UTC)
From: [personal profile] ionial

Главное, что совершенно непонятно, зачем пихать в нормальный язык подобные расширения, сохраняя еще и обратную совместимость. Это превращается в нечитаемое говно, которое непонятно, как отлаживать и что делать, если надо расширить/добавить функциональность. ИМХО, функциональное программирование лучше всего идет на языке с ясным синтаксисом, например, на лиспе. Там сразу ясно, где оператор, где операнды и можно раскрутить и раскусить "ленивость". В С++ же, это превращается в шараду, где любая позиция в выражении может оказаться переопределенным оператором или еще чем-то.

Я просто положу здесь кусок кода из попавшегося неделю назад -- это инфраструктура seastar.


  303 
  304 /*!
  305  * \brief capture a range and return a serialize function for it as a json array.
  306  *
  307  * To use it, pass a range and a mapping function.
  308  * For example, if res is a map:
  309  *
  310  * return make_ready_future(stream_range_as_array(res, [](const auto&i) {return i.first}));
  311  */
  312 template< typename Container, typename Func>
  313 SEASTAR_CONCEPT( requires requires (Container c, Func aa, output_stream< char> s) { { formatter::write(s, aa(*c.begin())) } -> std::same_as< future<>>; } )
  314 std::function< future<>(output_stream< char>&&)> stream_range_as_array(Container val, Func fun) {
  315     return [val = std::move(val), fun = std::move(fun)](output_stream< char>&& s) {
  316         return do_with(output_stream< char>(std::move(s)), Container(std::move(val)), Func(std::move(fun)), true, [](output_stream< char>& s, const Container& val, const Func& f, bool& first){
  317             return s.write("[").then([& val, & s, & first, & f] () {
  318                 return do_for_each(val, [& s, & first, & f](const typename Container::value_type& v){
  319                     auto fut = first ? make_ready_future<>() : s.write(", ");
  320                     first = false;
  321                     return fut.then([& s, & f, & v]() {
  322                         return formatter::write(s, f(v));
  323                     });
  324                 });
  325             }).then([& s](){
  326                 return s.write("]").then([& s] {
  327                     return s.close();
  328                 });
  329             });
  330         });
  331     };
  332 }
  333 
Edited Date: 2021-06-28 07:36 am (UTC)

Date: 2021-06-28 02:56 pm (UTC)
From: [personal profile] anonim_legion
>это инфраструктура seastar.

Сам по себе Seastar это вещь очень сложная.

И обратите внимание: SEASTAR_CONCEPT. Это ж они концепты реализовали, то ли на макросе, то ли на шаблоне каком. Потому что в стандарте их ещё не было.

Что же до "совершенно непонятно, зачем пихать в нормальный язык": С++ никогда не был нормальным языком, а особенно после того, как люди выяснили, что можно написать на шаблонах, и понаписали, собственно. Нету у вас такой волшебной палочки*, чтобы сказать участникам индустрии "ну-ка, заканчивайте воротить то, что вы воротите, и переходите на более нормальный язык". Поэтому не взлетел DLang.

*волшебная палочка: см. "немец с железной палкой", https://oldmann.livejournal.com/125252.html, раньше там было "фашист с железной палкой", хотя возможно это моя ложная память.

Date: 2021-06-29 08:49 pm (UTC)
From: (Anonymous)
D не взлетел потому что был написан плюсовиками с ихним извращённым мировоззрением.
Для взлёта требуется нечто ещё более извращённое, типа го.

Date: 2021-06-28 09:55 pm (UTC)
uselessextras: (Default)
From: [personal profile] uselessextras
Подсказал бы кто комитету, что-ли, что в приведенном коде много лишних ретурнов. Зачем они нужны? Надо улучшить!

Date: 2021-06-29 08:37 pm (UTC)
From: (Anonymous)
Ну шой-то вас понесло, товарисч.
С сопрограммами я тоже баловался на заре своей юности, лет 30 назад. Под netware. Писал NLM-ки, каюсь. Но сейчас мне, например, эти сопрограммиы в плюсях очень даже интересны. Конечно, это зло как и все плюсы, ибо рулит только чистый си, но эта мелкософтовская реализация давно уже гуляет в других исыках, так почему бы ей не быть в плюсах? Говно и так уже ничем не испортишь.
Я деанонимизируюсь, пожалуй: https://declassed.art

Date: 2021-07-01 12:32 am (UTC)
From: [identity profile] johnconst.livejournal.com
Вот зачатки универсального инструмента :)
https://copilot.github.com/

Profile

vit_r: default (Default)
vit_r

January 2026

S M T W T F S
    12 3
456 78910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 8th, 2026 05:15 pm
Powered by Dreamwidth Studios