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

Привет, Хабр! Представляю вашему вниманию перевод статьи Эрика Бернхардссона "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:
перевод, sql

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