Intersystems Cache - Врата в ад: различия между версиями

Материал из Кафедра ИУ5 МГТУ им. Н.Э.Баумана, студенческое сообщество
Перейти к навигации Перейти к поиску
м (→‎Статья: ссылка)
м (→‎Статья: перефразирование)
Строка 41: Строка 41:
И это ещё не всё. Помните, как в конце 90 годов все начали встраивать языки программирования в HTML-страницы? ASP, PHP и прочие? Конечно же, и Caché тоже непременно должна была заиметь собственную реализацию - Caché Objectscript Pages или CSP. Тут всё хранится уже в обычных файлах, возможно потому, что Intersystems использовали модификацию Apache для их обработки. При выполнении они компилируются в классы Caché Objectscript... Ага, вот так - в нечто, что, в свою очередь, компилируется в ещё одно нечто. Как вы думаете, куда указывают ошибки?
И это ещё не всё. Помните, как в конце 90 годов все начали встраивать языки программирования в HTML-страницы? ASP, PHP и прочие? Конечно же, и Caché тоже непременно должна была заиметь собственную реализацию - Caché Objectscript Pages или CSP. Тут всё хранится уже в обычных файлах, возможно потому, что Intersystems использовали модификацию Apache для их обработки. При выполнении они компилируются в классы Caché Objectscript... Ага, вот так - в нечто, что, в свою очередь, компилируется в ещё одно нечто. Как вы думаете, куда указывают ошибки?


О да... А я вам говорил, что документация - полная дрянь? У них есть какая-то документация сродни [http://ru.wikipedia.org/w/index.php?search=javadoc&button=&title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F%3A%D0%9F%D0%BE%D0%B8%D1%81%D0%BA Javadoc], но в то время как JDK<ref>средства разработки Java</ref> даёт вам необходимую информацию (и, обычно, даже больше), их руководства до невероятия немногословны. Как-то раз я пытался вызвать статический метод класса, но получил ошибку. Оказалось, что конкретно этот класс не был перенесён в новую ООП-систему и что надо было использовать старый способ вызова, но этой информации нигде нет (с другими классами ситуация не меняется ни на чуть).
О да... А я вам говорил, что документация - полная дрянь? У них есть какая-то документация сродни [http://ru.wikipedia.org/w/index.php?search=javadoc&button=&title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F%3A%D0%9F%D0%BE%D0%B8%D1%81%D0%BA Javadoc], но в то время как JDK<ref>средства разработки Java</ref> содержит всю необходимую вам информацию (и, обычно, даже больше), их руководства до невероятия немногословны. Как-то раз я пытался вызвать статический метод класса, но получил ошибку. Оказалось, что конкретно этот класс не был перенесён в новую ООП-систему и что надо было использовать старый способ вызова, но этой информации нигде нет (с другими классами ситуация не меняется ни на чуть).


Тут можно ещё долго продолжать...
Тут можно ещё долго продолжать...

Версия от 22:12, 31 августа 2013

Это перевод статьи Intersystems Caché - Gateway to hell.

О чём идёт речь

А речь идёт о СУБД Caché, по которой нам читают курс по Постреляционным базам данных.

Ужасающее, отвратительное, с позволения сказать, ПО. Несть числа загубленным нервам, разбитым клавиатурам и потерянному времени. Убогая, мерзкая, деланная не для людей но мутантов поделка. #Ненависть.

Но это наше, студенческое мнение. А вот что пишут специалисты, люди, столкнувшиеся с Caché в своей профессиональной деятельности.

Intersystems Caché - Врата в ад

Статья

Где-то два года назад я устроился на новую работу (в сфере здравоохранения). Вскоре оказалось, что в качестве языка программирования и базы данных была выбрана Caché компании Intersystems, основанная на MUMPS (каким-то образом). Я был несколько заинтригован, так как до этого я про неё ни разу не слышал, пока местный администратор БД не представил мне её как Ответ На Главный Вопрос Жизни, Вселенной И Всего Такого.

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

Не так уж много времени мне потребовалось, чтобы понять, насколько он ошибался.

Не знаю, как устроено в самой MUMPS, но главная моя претензия к Caché заключается в том, что весь код хранится в базе данных. Весь. Сейчас, вы немного подумаете... Да, всё верно - вам необходимо пользоваться специальным приложением для написания кода. Это означает:

  • никаких простых бэкапов (придётся или бэкапить всю базу, или "экспортировать" проект в XML);
  • никакой системы контроля версий (ни CVS, ни Subversion);
  • никакого автодокументирования;
  • никаких инструментов анализа;
  • никакого вообще ничего...

Не могу передать словами, насколько это убого. IDE[1], которая называется Intersystems Studio, представляет собой лишь текстовый редактор, который умеет подсвечивать ошибки красным цветом. И всё. Когда я обратился с жалобой по поводу Studio, торговый представитель сказал мне, что "мы не девелоперская компания, мы занимаемся базами данных", а на мой следующий вопрос, можно ли, в таком случае, использовать какие-либо сторонние программные средства, последовал ответ: "Нет". Как вам такой поворот?

Язык программирования был немного изменён в последующих версиях в нечто под названием "Caché Objectscript". Это жалкая попытка внедрить принципы ООП[2] в практически мёртвый язык. Нельзя просто взять и добавить что-то, смеющее называть себя "классом" и закончить на этом. Ни обработки исключений, ни инкапсуляции, ни типизации, вообще ничего. А самое худшее, что классы "компилируются" в некую конструкцию, основанную опять же на MUMPS. Да-да, именно так. Вы пишете на языке, который компилируется в примерно такой же язык. Попахивает макроязыком[3], если хотите моё мнение.

Проблема в том, что при возникновении ошибки при выполнении, она ссылается на откомпилированный код (!), причём обычно с сообщением вроде:

Ошибка 8002 на строке 132 в процедуре НИХЕРАЧОЭТОТУТ.inc

Ну или как-то так. Но это вовсе не 142 линия в вашем коде! Это как писать на Java, когда виртуальная машина при ошибке указывает вам на байт-код... С сообщением вида:

Вот тут неправильно

И это ещё не всё. Помните, как в конце 90 годов все начали встраивать языки программирования в HTML-страницы? ASP, PHP и прочие? Конечно же, и Caché тоже непременно должна была заиметь собственную реализацию - Caché Objectscript Pages или CSP. Тут всё хранится уже в обычных файлах, возможно потому, что Intersystems использовали модификацию Apache для их обработки. При выполнении они компилируются в классы Caché Objectscript... Ага, вот так - в нечто, что, в свою очередь, компилируется в ещё одно нечто. Как вы думаете, куда указывают ошибки?

О да... А я вам говорил, что документация - полная дрянь? У них есть какая-то документация сродни Javadoc, но в то время как JDK[4] содержит всю необходимую вам информацию (и, обычно, даже больше), их руководства до невероятия немногословны. Как-то раз я пытался вызвать статический метод класса, но получил ошибку. Оказалось, что конкретно этот класс не был перенесён в новую ООП-систему и что надо было использовать старый способ вызова, но этой информации нигде нет (с другими классами ситуация не меняется ни на чуть).

Тут можно ещё долго продолжать...

На моё субъективно отнюдь не скромное мнение, Caché и их технологии - одно большое ЧОЭТОВАЩЕЗАХУЙНЯ. Самое смешное, что их почтовая рассылка и реклама смахивают на какую-то секту. Настооооолько всё у них прекрасное, и быстрее всех других. Ага, конечно...

Сейчас я перешёл на Java, J2EE и PostgreSQL. Не могу, конечно, сказать, что J2EE - лучшее достижение человечества, но по сравнению с Caché - я просто в раю.

P.S. Надеюсь, я достаточно раз упомянул Caché, Caché Objectscript и Intersystems, чтобы поднять этот пост в поисковой выдаче. Люди должны знать!

Комментарии с форума

Забавный факт: "caché" по-французски означает "скрытый". Может, это они как раз про документацию?..

- Eolianne

А "mumps" - это название болезни. Вместе получается "скрытое заболевание".

- ammoQ

Думаю, можешь занять моё место, после как я уволюсь :) Я продержался полгода в центральной больнице, там в скорой помощи использовали как раз систему, построенную на Caché.

Я могу только сказать, что ты слишком мягко обошёлся с Caché, CSP, программами, языком и прочим - это были ужасающие полгода, в жизни больше такого ни за что не хочу. Просто кошмарнейшая разработка (или, вернее сказать, администрирование БД), никогда ещё я так не мучался.

Я даже имел "удовольствие" посетить одну презентацию Caché, где они явили свои "новые" возможности ООП и прочего... потрясающая смесь рекламной брехни и хардкорных демонстрационных примеров языка (мы их потом попытались все их повторить, но ничего не получилось).

- losthobbit

Остальные комментарии можно почитать на той же странице.

Примечания

  1. интегрированная среда разработки
  2. объектно-ориентированное программирование
  3. то есть, строка, являющаяся на самом деле набором инструкций на этом же языке
  4. средства разработки Java