- PVSM.RU - https://www.pvsm.ru -

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Дополнение:

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

Ссылка на ветку в Hacker News [10] и Reddit r/programming [11] комментарии.

Автор: Барак Адама

Источник [12]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/programmirovanie/291896

Ссылки в тексте:

[1] "I don't want to learn your garbage query language": https://erikbern.com/2018/08/30/i-dont-want-to-learn-your-garbage-query-language.html

[2] своим SQL: https://www.splunk.com/en_us/resources/search-processing-language.html

[3] JQL: https://mixpanel.com/help/reference/jql

[4] RQL: https://docs.rollbar.com/docs/rql

[5] NRQL: https://docs.newrelic.com/docs/insights/nrql-new-relic-query-language/nrql-resources/nrql-syntax-components-functions

[6] AWQL: https://developers.google.com/adwords/api/docs/guides/awql

[7] ужасный язык запросов: https://docs.mongodb.com/manual/reference/sql-comparison/

[8] языком: https://lucene.apache.org/core/2_9_4/queryparsersyntax.html

[9] PSD2 директиве о платёжных услугах: https://en.wikipedia.org/wiki/Payment_Services_Directive

[10] ветку в Hacker News : https://news.ycombinator.com/item?id=17890760

[11] Reddit r/programming: https://www.reddit.com/r/programming/comments/9bxwba/i_dont_want_to_learn_your_garbage_query_language/

[12] Источник: http://habrahabr.ru/sandbox/123595/