Русский
Русский
English
Статистика
Реклама

Что за X? Что за ABAP? Древние языки, про которые интересно слушать, но не дай бог на них писать

Большая разработка дело коллективное, и это хорошо. Что бы ни взбесило тебя в условных Go или JS, точно найдется сотня-другая разрабов с такой же болью. Преодолевать ее вместе легче и когда ломаешь голову над рабочей задачей, и когда просто собираешься с товарищами поныть, как все плохо.

Но почти в каждой компании в этот момент найдется человек со взглядом на сотню ярдов в пустоту, который будет вспоминать, как 10 лет назад в своем НИИ ШМИИ ИПИАН Меловой период его заставляли переписывать гигантскую систему с Лиспа на Си. И у всех в этот момент пробежит холодок по спине потому что никто не застрахован от рефакторинга чего-нибудь древнего и страшного.

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

Здесь мы собрали вместе людей, которые писали на Prolog, Forth, ABAP и X++, и дали им выговориться.


Что это за языки

Вагиф, Prolog

В незапамятные времена с 1985 по 1990 год я пользовался языком Prolog.

Я учился в МИЭМе (ныне часть ВШЭ), и ходил на группу прикладной логики. Там заинтересовался символьными вычислениями, попробовал Lisp, но Prolog особенно привлек меня своей декларативностью описываешь правила предметной области, а дальше все идет как бы само.

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

Тогда не было осознания, насколько огромных вычислительных ресурсов требуют такие задачи а главное, что к ним не всегда применимы обычные логические умозаключения. Казалось (мне по крайней мере), что задекларировав достаточное количество правил предметной области, получишь возможность пропускать все это через мощные компьютеры, которые тебе и диагнозы поставят, и теоремы докажут.

Тогда казалось, что мы решим все задачи.

Лиза, ABAP

Я SAP-разработчик и пишу на ABAP. Это проприетарный язык, по синтаксису тот же COBOL. Он используется собственно в SAP SE и компаниях, занимающихся разработкой и консалтингом для бизнес-приложений и промежуточного ПО SAP. Конкретно я пишу модули SAP ERP, их расширения и все такое.

Фил, X++

У меня был Язык X++. Это внутренний ЯП Microsoft, который они сделали специально для своего ERP-проекта Axapta, потому что нужен был язык, в котором можно было писать SQL-запросы прямо в коде, с компайл-тайм чеками и полной поддержкой синтаксиса и фич базы. Язык, конечно, достаточно отсталый. При этом он работает на .NET, а туллинг ему сделали почти как у C#.

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

Василий, Forth

Я начинал работать в конторе, которая занималась всякой автоматизацией на микроконтроллерах. Местные деды (в самом лучшем значении этого слова люди зарабатывали внедрением своих разработок на заводах по всей стране) начинали кодить на древних МК, еще когда их делал Intel, и происходило все это на ассемблере. Им чем-то не угодил C, и они очень вдохновились идеей Форта. Поэтому я и угодил в разработку на этом языке.


Каково на них писать

Лиза, ABAP: У нас просто древнейшие тулзы. Я начинала работу с платформы SAP NetWeaver, очень не хватало всех этих подсветочек и прочих свистелок из более популярных IDE, вроде той же Intellij IDEA. Пока не привыкла, казалось, что пишешь в блокноте.

Интерфейс тоже древний. Есть новые темы, но они не очень удобные, поэтому я обхожусь без них. В целом, SAP GUI причина боли меня как маковода, но всё же одно из самых удобных мест для разработки под SAP, пусть и умирающее. Модные ребята сейчас переходят на VS Code, адекватные на Eclipse, я до сих пор сижу в чём начинала.

Главное удобство языка нативная поддержка SQL, хотя и было бы странно ее отсутствие.

Фил, X++: Первое что бросилось в глаза невероятно уродский синтаксис и кодстайл. Это было в 2015-ом, а они там на полном серьезе фигачили всякие префиксы в стиле field-db-name. X++ был во многом похож на C#, только огромного количества привычных фич просто не было, а вещи, которые в том же C# автоматизируются на раз-два, здесь приходилось топить в тоннах бойлерплейта.

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

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

А при миграции на другую архитектуру достаточно переписать только базовый минимум. И все ваши любовно наработанные годами библиотеки (словари в реальности Форта) остаются с вами. Можно даже сделать свой процессор на FPGA с личной системой команд и запустить на нем Форт. Некоторые пункты и по современным меркам звучат неплохо.

Вагиф, Prolog: Хорошая иллюстрация программирования на Прологе вычисление производной в символьном виде. Математики говорят, что, в отличие от интегрирования, дифференцировать можно научить даже лошадь. Лошадь может и можно научить, но попробуйте написать программу символьного дифференцирования на Си. На Прологе такая программа занимает столько же строк, сколько есть правил дифференцирования, т.е. укладывается в одну страницу. Это все выглядело многообещающе, и мы другом и коллегой всерьез занялись идеей написания медицинской экспертной системы на Прологе. У нас несколько лет был небольшой кабинет в институте эндокринологии там мы писали базу знаний, собирая эти знания у местных врачей. Врачи толком не понимали, что из этого может получиться, но заражались нашим энтузиазмом и полагались на нас. Так к 1990 году родилась экспертная система Эндокрин, приказавшая долго жить, когда ее создатели уехали работать в другую страну.


Худший опыт, который стал уроком

Василий, Forth: Для обучения Форту нам показали пару примеров и дали в руки книгу Броуди по основам языка. Она запомнилась мне картинкой про swap эта психотравма навсегда со мной:

Потом потребовалось написать приложение мониторинга под Винду, и почему-то так получилось, что надо писать под WinAPI что тогда было нормально, но не на Форте.

Мне еще повезло, я писал что-то вроде простенького UI-фреймворка, а коллеги делали утилиты с графиками, кучей контролов, отображением состояния конечных автоматов. Те преимущества, которые Форт давал для разработки под embedded, не работали под десктоп. Ну или их надо было специфически готовить, и был ли бы от этого профит неизвестно. Точно не в скорости разработки.

Кончилось все, когда мой приятель психанул, переписал за неделю свою часть на C++, а на Форте писать зарекся. Мне же дали новый ARM-контроллер, я установил нормальную IDE с дебаггером и тоже ушел писать на C++.

Вагиф, Prolog: О причинах заката Пролога многое написано, они примерно те же, что и причины неудачи японского проекта пятого поколения. Вычислительные ресурсы переоценили, символьные вычисления переоценили.

Вместе с тем язык обладал очень интересным подходом к поиску решений по правилам, пробегаясь по множеству возможных решений вперед и назад (так называемый backtracking). К нему по-прежнему возвращаются, есть нынешние версии думаю, в основном для исследовательских целей. Есть SWI-Prolog, я читал об использовании его для анализа человеческой речи. Есть разработанный в Австралии язык Mercury под .NET, фактически на базе Пролога. Для ранних версий дотнета (под Моно) разрабатывался язык P# Пролог, транслируемый в C#.

Я считаю, что владение Прологом меня очень развило как разработчика, подготовило к восприятию разных парадигм программирования. То, что я сейчас работаю на F#, отчасти можно списать на это я довольно рано осознал, что надо стремиться выходить за пределы мейнстримных языков. Тогда, даже оставаясь на них, начинаешь писать по-другому.

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

Конечно, язык с очень узкой сферой применения не может тягаться с мультитулами вроде C# или Java, поэтому количество ярых фанатов ABAP стремится к нулю. Но умрет он только со смертью платформы, а платформа слишком много где используется и тесно вплетена в процессы корпораций вроде Johnson & Johnson, Mercedes-Benz и им подобных, переходить на что-то новое очень дорого и пока нецелесообразно.

Вообще, ABAP мне позволил заглянуть во внутренние процессы компаний-гигантов пощупать, что у них и как, это интересно. Плюс опыт работы с коллегами вдвое (иногда втрое) старше тебя или заказчиками, которые могут целиком купить твой город.

Фил, X++: Я работал с истинными фанатами этой технологии такие, знаете, старички, для которых вся молодежь формошлепы, которые только либы дергать умеют. Дай им волю, они переписали бы все свои проекты на хранимки. Для меня было странно, что они так хорошо разбираются в перформансе, но при этом не могут писать нормальный код такой, который смог бы понять обычный разраб, а не такой задрот как они. У меня неплохо получалось закрывать задачи, но я чувствовал, что учусь вещам, которые нигде не буду применять и быстро свалил.

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


Спасибо за помощь со статьей пацанам из Мы обречены, посмотрите их подкаст.

Источник: habr.com
К списку статей
Опубликовано: 19.11.2020 18:06:36
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Ненормальное программирование

Prolog

Forth

Старое железо

Abap

X++

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru