Обновить

Комментарии 26

Вашу бы энергию, да в мирных целях :) Попробуйте писать на Scheme или Lisp.

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

По Scheme есть прекрасная книга, которую можно скачать на русском языке, "Структура и интерпретация компьютерных программ" (SICP). Это старый учебный курс MIT по конструированию программ (в наше время его упростили).

Из реализаций рекомендую Gambit Scheme, у неё очень эффективные интерпретатор и компилятор.

Стандарт Scheme r5rs умещается на 50 страницах, это короче чем предисловие к С++26. Код Схемы и Лиспа уже представлен в виде AST, поэтому на них проще делать подстановку и comptime. Есть формы begin-for-syntax, define-for-syntax для запуска кода и сохранения стэйта во время трансляции. Подход отличается от С++, изучать стоит только для расширения кругозора, практической пользы мало.

Если автора интересуют такие вещи, как реализация сложных скриптов, то из Scheme он скорее извлечёт пользу, чем из C++ :)

Напиши компилятор на лиспе, потом перепиши его на хаскель, и в конце концов придешь на собес, где тебя заставят центрировать див на css

Великолепно! Спасибо вам за ваш труд! Такие вещи очень вдохновляют. Прямо вся мощь C++ на кончиках пальцев

Думаю, что на других языках делать это было бы намного приятнее, но у меня был интерес "раздвинуть границы" плюсов =D

Ну в плюсах с каждым новым стандартом границы constexpr расширяются.

Можно просто подождать. Лет 10 =)

Байт-код почти явский, ахаха. Выделить виртуальную память и jit`атнуть туда код, вполне нормальный зрелый подход. Тем более, что MSVC уже давно поддерживает Clang, как альтернативный компилятор. Стало достаточно просто писать универсальный код, просто меняя названия функций (mmap на virtualalloc) в имплементации.

Добавим туда сборщик мусора, трединг и получим джаву

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

Идея/реализация/итог (по пятибальной шкале):

5 (норм) / 3 (код - действительно кривой) / 4 (для обучения - сойдёт)

Главный минус - modern С++. Пиши на с99/cpp98.

По нормальному универсальный парсинг в AST делается в ~300 LOC (конечно, если умеешь). Заспойлерю - сечас пишу статью на хабр про EBNF/BNF парсер https://steamclub.net/public_library/omnom.js/demo/

Если честно, я не понимаю, почему modern C++ это минус. И почему следует писать на старых стандартах.

Вся идея статьи как раз в перекладывании компиляции на этап компиляции (бадум-тс!)

На старых стандартах вытащить сигнатуры, чтобы сделать биндинги и прочее без внешних утилит вряд ли получится. А compile-time вычислений там и вовсе почти нет, если не ошибаюсь

Насколько "старых"? Сверху предложили на Лиспах писать, - вообще вроде "старьё", но люди плюсуют.

Главный вопрос: для кого Вы пишете? для людей или для машин?

"modern C++" настолько плох в плане чтения, что код на нём практически не читаем + имеет бесчисленное множество "нюансов".

Если в коде сразу не видно идей и чёткой структуры, то скачавшие его: открывают, закрывают и отправляют в мусор. То есть lifetime кода заканчивается на 40-й секунде просмотра. Никто в запутанном коде разбираться не будет. Вот это главный минус "modern C".

Спагетти-код можно написать на любом языке программирования (С)

Нормально написанный код на С++ 17, 20 нормально и читается. Причем писать сложнее

Примеры в статье читаются легко, например

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

Итого из плюсов/минусов имеем:

- подписчик

+ скрыть публикации автора.

Не понимаю, мне то это зачем писать?

Но раз попросил, минус добавил =)

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

"modern C++" настолько плох в плане чтения, что код на нём практически не читаем + имеет бесчисленное множество "нюансов".

Если в коде сразу не видно идей и чёткой структуры, то скачавшие его: открывают, закрывают и отправляют в мусор. То есть lifetime кода заканчивается на 40-й секунде просмотра. Никто в запутанном коде разбираться не будет. Вот это главный минус "modern C".

Современный C++ - это минус потому что в реальной работе на на ревью может попасться MasterMentor :)

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

Классная работа, C++26 очень многие задачи в метапрлграммировании делает значительно "чище", даже без рефлексии. А с рефлексией можно std::meta::info использовать как универсальные параметры темплейтов, чего как раз не хватало в статье. (Честные универсальные параметры вроде пока не завезли, только концепты добавили).

Пиши на перфокартах! Модерн с++ это для слабаков, тру инженеры переключают тумблеры на панели микрокомпьютера

...многое зависит и от цели экзерсисов. Если мечта жизни попасть "программистом" в условный "Яндекс", то да - зубрёжка "modern C" - необходимый элемент их toxic-шоу. Ещё алгоритмы "сортировки пузырьком" и ста вариантов reverse string выучить. Затем от пол-года+ собеседований, и место в оупенспейсе среди таких же собратьев, наверное, обеспечено. Но ИМХО это жалкий финал жизни.

вот это да!

Вот это настоящее по хорошему упоротое ненормальное программирование!

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

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации