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

Прошлое настоящее

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

  1. Будущее программирования
  2. Ева Ланг
  3. Темный язык

Назад в будущее

Брет Виктор сделал вдохновляющий доклад на конференции Dropbox DBX еще в 2013 году.
Действие происходит между 60-ми и 70-ми годами.

Он рассказывает о том, как могло бы выглядеть компьютерное программирование благодаря нескольким неординарным проектам: Система NLS, Система Грааля, редактор Smalltalk и Платон.
Короче говоря, идея его выступления заключается в том, что если бы мы следовали и улучшали такие технологии в конце 60-х, в настоящее время мы могли бы разрабатывать приложения, как Тони Старк в Ironman: легко и разумно.

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

Логическое программирование и визуальная реализация

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

Все эти концепции заставляют нас переосмыслить способ разработки.
В настоящее время у нас есть множество инструментов и сервисов, на которые опираются наши приложения.
Подумайте об этом на мгновение: если бы вы начали создавать новый API с нуля, сколько шагов нужно предпринять, чтобы заставить его работать и сделать его доступным для всех?
Вам приходится иметь дело с большим количеством шаблонов кода, сторонними зависимостями, такими инструментами, как линтеры, компиляторы, пакет менеджеров, и с самой сложной частью: развертыванием. Выберите облачную платформу, узнайте, как с ней взаимодействовать, и, наконец, разверните первую версию своего API «hello world».
Ситуация усложняется, когда вам нужно выпустить новые версии API, но давайте остановимся на этом.
Вам не кажется, что вместо того, чтобы упростить разработку, мы усложнили ее?
Итак, что мы можем сделать, чтобы переломить тенденцию?

Вход в Dark Lang

Эллен Чиса, Пол Биггар и их команда сделали шаг назад и придумали простой способ улучшить ситуацию. Если проблема в сложности, что нам делать, чтобы ее упростить?

Что, если мы заберем вещи? (Эллен Чиса)

Именно это они и сделали.
В Языке программирования для мира непрерывной доставки Эллен представляет, что такое Dark Lang и как он меняет развитие.

Этот язык программирования находится на начальной стадии и все еще находится в стадии бета-тестирования.
Однако Dark уже демонстрирует существенный сдвиг парадигмы, предоставляя пользователю чрезвычайно простую платформу для разработки серверных сервисов.
Вместо того, чтобы тратить часы на настройку конвейер CI / CD для публикации приложения и изучения совершенно новой экосистемы, Dark фокусируется на упрощении вещей, предоставляя несколько, но мощных компонентов:

  • Конечные точки API (REST)
  • Фоновые рабочие (со встроенной системой событий / очередей)
  • Запланированные задания / cron
  • Постоянные хранилища данных (ключ-значение / хэш-карта)
  • REPL (внутренние инструменты)
  • Функции (многоразовый код)

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

История проблемы программирования

Позвольте мне рассказать вам историю.
Недавно у меня возникла проблема с кодированием.
Меня попросили реализовать ETL: получить 3 разных файла CSV с одинаковой структурой из S3 bucket и перенесите их в базу данных. Последний шаг, необходимый для публикации решения на известной облачной платформе.
Я решил его с помощью Typescript, Node.js, Postgres и Heroku.
Затем я сделал это снова, но на этот раз с Dark Lang. Просто для развлечения 😁

Это хранилище моего первого решения: https://github.com/wilk/outlier-coding-challenge
Как видите, мне пришлось:

  • определить структуру проекта с помощью NPM, Git и Typescript
  • определить модель Sequelize для Postgres
  • определить задание, используя внешнюю библиотеку для получения данных (node-fetch)
  • определить проект Heroku с помощью подготовленного экземпляра Postgres
  • определить переменные среды как для локальной, так и для производственной среды

А теперь решение с Dark Lang, состоящее только из следующих двух скриншотов:

С помощью Dark Lang я определил:

  • 2 конечные точки HTTP Rest
  • рабочий, содержащий асинхронную логику для анализа данных CSV и передачи их в базу данных
  • база данных ключ-значение
  • общая функция, используемая работником

Вот и все. Разница огромная.
ETL такой же, но есть два существенных отличия:

  1. мне потребовалось почти 3 часа, чтобы реализовать задачу кодирования с помощью Node.js, в то время как всего 30 минут с Dark Lang
  2. при реализации с Node.js мне пришлось многое знать: платформу Node.js, Javascript, язык Typescript и CLI, NPM, Git, платформу Heroku и CLI, Postgres, Docker, Sequelize ORM и пару внешних библиотек. .

Не говоря уже о конечных точках HTTP: если бы я хотел иметь их с решением Node.js, мне пришлось бы настроить веб-сервер Express и определить пару маршрутов с соответствующими обработчиками.
Надо было еще поработать. Больше инструментов. Еще кое-что.
Еще сложнее.

Новая надежда

Путь ясен: мы должны изменить способ создания программного обеспечения.
Это необходимо по многим причинам: для новичков, приближающихся к компьютерному программированию; для компаний и их растущих затрат на развитие; для недовольных и разочарованных разработчиков.
Dark Lang обладает огромным потенциалом, чтобы возглавить эту революцию: давайте дадим ему шанс!

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

Спасибо

Я хочу поблагодарить Алессандро Рабитти, Мишель Бертоли и Эллен Чиса за рецензирование этой статьи 🙏