Эльфийский язык программирования
Приснилось, что китайцы сделали язык программирования с иероглифическим синтаксисом, и парень, похожий на Брюса Ли, терпеливо объясняет: иероглифов десятки тысяч, они есть на все случаи жизни и заменяют целые программные конструкции, то есть там где вы пишете страницу кода, мы ставим один иероглиф, в итоге получается намного быстрее. Ну и багов меньше, раз меньше кода.
Я ошеломленно ему говорю: так это ж сколько их надо выучить! А он, гад, хихикает: это для тупых ленивых круглоглазых проблема, вот смотри, — и начинает на ноутбуке строчить программу-иероглифы с невероятной скоростью. И даже более того — по мере набора иероглифов — бац-бац и внутренний оптимизатор на глазах упаковывает его 2–3 символьные комбинации вообще в один знак, на глазах превращая программу в предельно лаконичный мета-язык, понятный даже детям.
На этом месте я просыпаюсь в холодном поту.
Современные языки программирования
Цитата про сон в начале поста взята отсюда, и это просто пролог для сегодняшнего небольшого поста, который посвящен вечной, как жизнь, дискуссии о правильных языках программирования (цитата ниже взята отсюда):
Как известно, если ты серьёзный программист, синтаксический сахар тебе не нужен, это баловство. Ещё несколько лет назад Python считался детской погремушкой именно из-за этого. Чем вам фигурные скобки мешали? Ребячество какое-то придумали: заменить фигурные скобки на отступы табуляции. Сказал солидный дядя. Мальчики согласно покивали, виновато глядя в потолок. Через год все работали в коллективах где Питон основной язык.
Правильное развитие языков какое? А вот какое.
Дальше речь от синтаксического сахара переходит к синтаксическому мясу. Для иллюстрации приведу два коммента оттуда, сначала выпад:
Думаю, язык программирования должен быть максимально приближен к человеческому, дабы понимание языка было простым и чистым как мысли программиста. А писать всякие закорючки и при этом помнить их все все равно что изучить еще японский (грубо говоря), а потом уже на нем начать программировать, то есть два языка учить.
Ответка оттуда же:
Вы правы и неправы одновременно. Ещё раньше, чем мы начали программировать, мы брали листок бумаги и рисовали закорючки. Да и сейчас в офисе можно встретить доску на которой идёт брэйнсторм, и там в основном стрелочки и каракули. Это тоже очень по-человечески.
Тут уместно вспомнить про ФП как хорошую альтернативу всему многословному, что мы учили в 20 веке, в связи с этим хороший момент набросить цитатой взятой отсюда:
Помните, было такое «структурное программирование»? Люди в чатиках конца шестидесятых с**лись на тему СП vs. GoTo, кричали «considered harmful!», писали посты на своих печатных машинках, такая движуха была. И где оно все, почему прекратились с**чи? Все основные языки впитали в себя (или взросли на) СП, и тема рассосалась.
Наблюдая за интенсивностью тем об ФП на разных форумах, в ЖЖ, в журнале ПФП и прочих интернетах, в этом году могу констатировать аналогичную ситуацию: ФП как темы больше нет, расходимся. Все основные языки впитали в себя (или взросли на) ФП, по крайней мере полезные его части (первоклассные функции, ФВП, лямбды, замыкания, иммутабельность, произведение типов, копроизведение типов, экспонента, применение этого всего в первую очередь в виде map/filter/reduce), а бесполезные части оказались выкинуты на задворки, в уголке музея эзотерики на них всегда можно будет полюбоваться, но в основном только там.
Думаете, другая часть ФП еще себя покажет, и расширение линз Кана вправо-вверх вдоль контравариантного функтора еще выстрелит? Не будет этого, dead end.
Фрагмент полемики из комментов к этому утверждению:
Да в мейнстриме вообще всё плохо. Все только многозначительно кивают на какие-то «мейнстримовые языки», а копнешь — одно с убогим синтаксисом, отсуствием типизации и генерит тормозные бинарники размером больше, чем у хаскелла (и нет на мипсе), и устарело лет на тридцать в момент появления на свет, второе никак не родится, ломает совместимость и есть мнение, что слишком сложно для идиота и не слишком умное для не-идиота, т.е не найдет свою ЦА (и нет на мипсе), третье имеет причудливый синтаксис, убогую типизацию, медленно компилирует и вообще гвоздями прибито к JVM-у (и нет на мипсе)…
Короче — как был один Си, так и остался в этом вашем мейнстриме. Убогий, но прекрасный, как первая рыба, выбравшаяся на сушу.
Свежие ссылки по теме вдогонку:
• Как я нашел лучший в мире язык программирования.
• Семь смертных грехов разработки ПО.