Pull to refresh

Я не хочу учить ваш мусорный язык программирования

Привет, Хабр! Представляю вашему вниманию перевод статьи Эрика Бернхардссона "I don't want to learn your garbage query language". Авторский стиль изложения по возможности сохранён в вольном переводе.


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


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


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


Взять, например ORM'ки. Их предполагаемые плюсы в том, что они сокращают время на разработку. Но вместо того, чтобы писать SQL, который все и так знают, я знаю как скроллить взад-вперед в документации некоторой ORM'ки чтобы узнать как написать свой запрос. Мало того, я должен потратить время на дебаг чтобы узнать почему ORMка превратила мой запрос в нечто монструозное, нечто что join'ит 17 таблиц не используя индексы. Вместо того, чтобы придерживаться SQL, в котором возможно легко оптимизировать запросы( используйте индексы по where полям, не перебарщивайте с join'ами и т.д.), я должен мириться с непрозрачным слоем абстракции, скрывающим итоговый запрос. Плюс к тому, появляются много высокоуровневых абстракций вместо понятных кортежей или словарей, который содержат данные в чертовски простой и легко доступной для последующего чтения форме.


Можно не говорить, что есть пять тысяч ORM'ок, так что вместо изучения SQL единожды — я должен выучить 34 разных ORM'ки. Получается изучение очередной ORM'ки вместо изучения SQL.


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



Что хуже цестерн с данными? Цестерны с данными, которые изобретают свои собственные языки запросов.


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


В довершении ко всему, каждая БД старается переизобрести языки запросов. Mongo имеет свой собственный ужасный язык запросов, который я никогда не приму. Lucene тоже со своим языком. И так далее и тому подобное.


О чём я прошу? Не о многом:


  1. Каждая SaaS-платформа должна иметь штуку, которая из коробки позволяет скопировать все данные, чтобы поместить из в SQL-подобную БД( в моём случае — Postgres/Redshift). Я не хочу их кастомный DSL. Может Европейский Союз может принудить к этому в их следующем PSD2 директиве о платёжных услугах.
  2. Должен существовать 30-летный мораторий на изобретение новых языков запросов.
  3. Давайте развеем миф? что ORM'ки делают код чище. Присоединяйтесь к движению за чистый SQL и откройте для себя мир с более читабельным, гораздо более лаконичных способом запросов к базе.

Умные дети говорят НЕТ DSL'ам

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

Дополнение:

Этот пост вызвал много трафика, так что можно сказать? что это касается очень многих людей.

Ссылка на ветку в Hacker News и Reddit r/programming комментарии.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.