Большая разработка — дело коллективное, и это хорошо. Что бы ни взбесило тебя в условных 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++: Я работал с истинными фанатами этой технологии – такие, знаете, старички, для которых вся молодежь – формошлепы, которые только либы дергать умеют. Дай им волю, они переписали бы все свои проекты на хранимки. Для меня было странно, что они так хорошо разбираются в перформансе, но при этом не могут писать нормальный код — такой, который смог бы понять обычный разраб, а не такой задрот как они. У меня неплохо получалось закрывать задачи, но я чувствовал, что учусь вещам, которые нигде не буду применять – и быстро свалил.
Заодно с тех пор зарекся работать на очень старых проектах – это камни, которые никогда не оживут.
Спасибо за помощь со статьей пацанам из Мы обречены, посмотрите их подкаст.
raydac
за всё не скажу, но про Prolog и FORTH мнения звучат странновато и лично для меня (как писавшего и на Prolog и пару коммерческих проектов на FORTH) выглядит, что интервьюируемые столкнулись с этими технологиями по касательной на излете вскользь
FForth
Против Форт «травм» полезна к прочтению и вторая книга по Форт от Л. Броуди. :)
ЛЕО БРОУДИ «СПОСОБ МЫШЛЕНИЯ — ФОРТ ЯЗЫК И ФИЛОСОФИЯ ДЛЯ РЕШЕНИЯ ЗАДАЧ»
P.S. Картинка СЛОВА — SWAP из первой книги Л.Броуди (авторское видение оформления иллюстраций в книге — там ещё много их интересно представленo)
raydac
у меня тот советский перевод откуда картинка досих пор в бумажном виде лежит и даж недавно один немецкий коллекционер книг по FORTH был удивлен что в СССР оказывается перевели, он решил что «пиратский», но там предисловие Чарльза Мура к советскому изданию, так что врядли пиратское, получить от него травму можно наверное только если уже на нервах и ищешь чем бы травмироваться
ApeCoder
Форт, это, фактически, ассемблер для форт-мащины. На дохлых бытовых компах типа Микрошы он позволял писать код более-менее по-человечески делать для себя DSL и так далее.
Но, он заставлял думать о стеке. Мне вообще непонятно зачем он сейчас нужен.
Ееее я почти с первого раза это написал!
raydac
FORTH это полноценный язык программирования, он заставляет думать о стеке, так же как Java заставляет думать об объектах или Erlang/Go о процессах, нужен он для все тогоже — для написания программ теми кто умеет на нем писать, а то что позволяет делать DSL дак получается время обогнал и сейчас это тренд
AnthonyMikh
DSL, в котором нужно постоянно, мать его, думать о стеке. Постоянно. Во всех известных мне языках программирования — к которым применимо понятие локальных переменных — можно заводить локальные переменные функции и не думать о том, в каком именно порядке они лягут в итоге на стек. Но только не в Forth.
А ещё в нём есть тяжкое наследие самой первой платформы, для которой он был сделан: есть только 16-битные числа, а числа с большей битностью как бы и есть, но занимают по две ячейки стека. И у набора слов вроде DUP, DROP, SWAP и ROT есть братья-близнецы DUP2, DROP2, SWAP2 и ROT2. Очень удобно, да. /s
raydac
как ни странно во всех языках надо о чем то думать постоянно и в каждом свое, если надо думать о стеке, то это не самое ужасное и как и везде это дело практики и опыта… JVM это чисто стековая машина например и через кучу вещей программиста разгружают от мыслей о стеке нагружая компилятор, но за счет этого появляются другие проблемы и в то время как в FORTH не проблема создать самому себе синтаксический сахар под себя, в Java надо ждать пока сахар будет реализован производителем компилятора
FForth
Локальные переменные появились ещё в стандарте 94-года.
Наличие стеков (в классике их два) в Форт позволяет позволяет бесшовно пропускать данные через цепочку слов, не плодить локальные переменные с коротким сроком жизни (для передачи между словами), и, кроме того, немного их кэшировать в рамках стек(а)|(ов)… При этом, уменьшается и листинг программы.
P.S. Хочется добавить каких то механизмов по «автоматическому» управлению и стеками и его синтаксическому оформлению — ничем не возброняется. Кто хотел, тот и ООП в Форт сделал и много чего ещё.
И, да Форт несколько иной язык программирования и кем то «патологически» не понимаемый по возможностям его применения в практике решения разных задач.
Forth хорошо применим для исследовательских задач, и например в робототехнике…
Как пример: Forth for Artificial Intelligence in Robots
или например, как гибкий уровень хранения каких то моделей т.к. оперирует только базовым понятием СЛОВА, а всё остальное наполнение и построение модели на откупе создателя.
Кстати, на привычке понимания привычного синтаксиса классики программирования на классических языках
«многие» «ломаются», при попытке использования Форт, как инструментария. :) Форт просто ни в каких аспектах не ограничивает мышление при программировании какой то задачи. (но кому то это то и сложно осознать)
И, да стек не единственный элемент Forth языка, чтобы его можно было отнести к понятию — Форт-системы.
Банальность, но забивать микроскопом гвозди — ещё та затея не понимая возможностей микроскопа.
Следующий комментарий смогу написать через сутки от публикации этого. :)
raydac
VARIABLE входит и в стандарт 83го года
ApeCoder
Это да. Вот только чтобы в ней разобраться надо понять что делают слова.
Сравните по семантике с
или
или
Мне хочется свои задачи решать, а не писать себе язык, потом для него инструменты.
ApeCoder
Объекты мапятся на предметную область более прямо чем стек. Стек это отдельная хрень со своим состоянием, которую очень легко испортить.
Сравните
мама.мыла(раму) мама.мыла(стол) и мама ДУП раму мыла стол мыла
Во втором случае надо думать больше, и помнить что именно сейчас лежит в стеке
Zenitchik
Это не сложнее, чем помнить приоритет операций.
ApeCoder
Сложнее, потому, что приоритет один и тот же, а состояние стека в каждый отдельный момент разное.
А еще в случае ошибки не сразу ясно где она.
Принято писать комментарии про порядок параметров слова, но инструменты соответствие количества параметров и типов не проверяют.
В-общем, мне не очень понятно зачем на этом делать что-то, кроме зобби программирования.
Хотя идея красивая
raydac
для тех кто не может в голове держать несколько элементов на стеке и их порядок, есть специальное слово VARIABLE для определения глобальной переменной и можно тогда уж работать с переменными
AnthonyMikh
Мда, просто невиданный прогресс.
raydac
ну дак сейчас на фоне лямбд и реактивщины и в повседневных языках нешибко переменные определяют, так что те кто мог держать в уме состояние стека — будут более востребованы, чем те кто без переменных не может писать
0xd34df00d
В повседневных языках pointfree-стиль все же не очень востребован, а в неповседневных по личному опыту нужны совсем не те же знания и навыки, чем когда следишь за стеком.
FForth
«Старички» отжигают: какнал Silicon Valley Forth Interest Group
ApeCoder
В лямбдах либо явные параметры которые то же самое что и переменные с точки зрения явности зависимости либо картинг, причем с поддержкой типов. Причем ide и типы подсказывают и проверяют.
Не надо следить за состоянием чего-то. Ну может в джаваскрипте каком-то но там ошибка будет раньше и чмтаемее
nickz82
Ну да, как тут не вспомнить классику из книг про ООП о том что лучше всего предметную область описывать объектами. Правда потом оказывается что объекты из языков ООП ложаться на реальный мир хорошо только в сферическом ООП в вакууме.
Color
На самом деле основная претензия к ABAP — дедовский синтаксис из кобола (который потехоньку уходит в прошлое с новыми релизами), хотя большинство тех же ФП языков страдают тем же.
Что касается IDE — сейчас все стало значительно лучше, чем было лет 5 назад, т.к. у языка появилась поддержка в эклипсе, который хоть и морально устарел, но на порядок лучше того редактора, который есть в самом SAP.
А так, если не обращать внимание на синтаксис (а со временем такие вещи перестаешь замечать, просто думаешь о функционале), то ABAP — лучший язык для работы с табличными данными как таковыми, что я видел. Действительно очень хорош для своей области, но не без недостатков, конечно.
amironov
Можете привести пример удобства работы с табличными данными в ABAP? Что в нем есть, чего нет в языках общего назначения?
Color
Да много чего, на самом деле. Если помнить, что таблица в ABAP — это массив структур, в них есть:
Может звучать не так уж впечатляюще, но для приложений, очень активно использующих данные из БД, это очень и очень полезный функционал. В других языках мне этого часто очень не хватает.
sergarcada
Но что поначалу удивляет, так это то, что таблица может не содержать строки заголовков. Да и вообще порой некоторые приемы наработанные в SQL вдруг оказываются неприменимы. Увы, сходу примеры привести не смогу.
amironov
А я вот сильно удивился, когда увидел интерфейс rfc-функции для передачи бинарных данных: таблица с длиной строки 1022 байта. Почему нельзя передать файл целиком, не дробя, я так и не понял.) В самом abap работа с бинариками также происходит? Или есть байтовые массивы или потоки (которые стримы)?
Color
Можно и blob в базе хранить и работать с ним. Другое дело, что с бинарями в абапе крайне редко приходится работать, но инструментарий есть всякий.
amironov
Фотографии, документы — информация, которую часто надо хранить в ERP. Да их не надо обрабатывать, но удобный экспорт-импорт необходим. Какие есть альтернативы таблице в sap? Хотелось бы конкретики.)
Color
Есть для и этого решения, но лично я с этим не работал, поэтому не могу сказать, насколько это хуже/лучше какого-нибудь S3 :)
amironov
Это отдельный продукт. Мне же надо всего лишь фоточки для hr передавать.)
amironov
Спасибо за ликбез. Выглядит интересно, но действительно ничего экстраординарного. На других платформах данную функцональность можно получить с помощью библиотек. Например, для C# — Linq to Objects, для Python — pandas. Так что не могу согласиться с тем, что ABAP лучший язык для работы с данными.)
Color
Вопрос не в функционале, а то, что это уже встроено в синтаксис. Можно и на си такое же реализовать, но чисто работать с этим будет очень многословно и неудобно. А тут под это уже все заточено из коробки, вот и все.
amironov
Можно пример сортировки на abap?
Color
В целом базовый функционал примерно такой же, как в SQL:
Хотите полный функионал — смотрите доки.
Ради примера, вот кусочек более сложной динамической сортировки оттуда же:
amironov
Спасибо за доки. Но в любом современном языке будет все также кратко.
Color
Ну вот сейчас пишу на Go, и там такого даже рядом нет :)
amironov
Это язык системного уровня, а никак не язык для написания бизнес логики. На нем хорошо сетевые сервисы и ситемные утилиты писать. При всем этом "golang linq" гуглится на раз.
Color
И тем не менее бизнес-логику на нем тоже пишут.
По поводу go-linq — нужно смотреть бенчмарки, есть предположение, что из-за рефлексии он будет очень медленный. Но спасибо, интересное решение.
amironov
Надо тестировать. И решить что выбрать: либо удобство, либо скорость.)
AnthonyMikh
В нормальном языке такой вопрос стоять не должен.
amironov
Назовите нормальный язык, пожалуйста.
AnthonyMikh
Rust
amironov
У каждого свои критерии нормальности.)
bonta
смешно.
amironov
На два гуглится https://ru.stackoverflow.com/questions/999033/linq-%D0%B2-go-%D0%9F%D0%BE%D1%87%D0%B5%D0%BC%D1%83-%D0%BD%D0%B5%D1%82 и https://github.com/wesovilabs/koazee.
0xd34df00d
А вы возьмите не go. Например, хаскель:
sortOn name users
.sortOn
— библиотечная функция, в синтаксис ничего не встроено, он в хаскеле вообще предельно тупой.Или, если у нас есть что-то вроде:
то можно отсортировать по вложенному полю-городу через
sortOn (city . address) users
. Как это будет выглядеть на ABAP?И, кстати, в вашем примере чуть выше можно как-то статически гарантировать, что в
direction
не будет ничего, кромеUP
илиDOWN
, чтобы не делать рантайм-обработку подобных ошибок?Color
По вложенному полю не умеет, насколько помню. Но через вариант в конце комментария с примерами можно что-то придумать.
Статически гарантировать нельзя. Можно заведомо построить таблицу с заданным условием (чтобы были только такие или такие поля), но это уже чисто на плечах разработчика (что довольно плохое решение, протому что код в абапе имеет свойство стихийно меняться разными людьми и разными компаниями на протяжении жизни проекта).
sergarcada
Можно не соглашаться, если есть выбор ;-)
А когда выбора нет, то можно либо соглашаться работать либо искать другую работу. Я краем уха слышал, что кто-то где-то пишет на java для sap, но не в моем случае точно. Я в полном смысле к abap'ерам не отношусь. Так, иногда возникает необходимость что-то подправить.
amironov
Так я и пытаюсь понять, ради чего люди страдают? Или может наоборот получают удовольствие? Для меня лично программа на abap выглядит как текст на литературном английском: буквы все знакомые, но глазу зацепится не за что.) Хотелось хотя бы сигнатуры методов научиться быстро читать.)
Color
Откройте какой-нибудь опенсорс проект на абапе и почитайте.
Синтаксис мб непривычный для тех, кто на сиподобных сидит, но сам язык по сути от джавы не сильно отличается.
Из-за самого языка никто не страдает, страдают только из-за закрытости инфраструктуры SAP.
amironov
У меня шаблоны рвутся.) Где такие найти? И как их запустить?
Дело не в сиподобном синтаксисе. С тем же питоном таких проблем не возникает.
sergarcada
Да чему тут рваться? Такое ощущение что вы на разных языках говорите. ABAP — внутренний язык SAP, отдельно от SAP нигде не используется и все опенсорс программы используются там же. Соответственно, если ваша компания использует например SAP ERP, то никуда вы от abap не денетесь. Исключением может быть разве что фронтенд для всяких порталов, форумов и прочего UI, но точно сказать не могу.
amironov
В том и дело, что от abap есть куда дется. Но приходится принимать оттуда задачи с формулировкой "не реализуемо" или "слишком дорого".)
Так где найти открытый проект на abap? Мне чисто порж… посмотреть.)
Color
Да все на абапе реализуемо, как и на любом другом языке. Мы делали тул для автоматизации регрессионного тестирования, который запускал скрипты на питоне с тестами на селениуме, и потом все это забирал обратно в сап и обрабатывал (например).
Дорого — да, потому что абап разработка — это обычно не работа с нуля, а доработка того, что поставляется самим сапом, и какие-то большие велосипеды проще и быстрее выйдет писать тупо вне экосистемы сап и общаться с сапом по сети. Такова специфика.
Опенсорс — это какие-то либы и подобные инструменты. Проекта с "боевым" кодом вы не найдете, потому что это энтерпрайзный код, который ни одна контора не разрешит опенсорсить.
amironov
Понятно, что все реализуемо, вопрос каких сил и средств это потребовало? Какая задача решалась непосредственно на abap? Запуск внешнего скрипта и закачка файлов?
Дорого не потому, что доработка, а потому что просто дорого, за любой чих надо платить, либо чихать в другую сторону.)
Думаю, что даже при наличии разрешения за пределами конкретной конторы энтерпрайзный код никому не будет нужен, так как реализует специфику конкретного предприятия.
Color
Все, кроме непосредственно скриптов тестов и обвязки было на абапе. Портал, выборка тестовых данных, формирование кейсов, управление запуском, отчетность.
Любой энтерпрайзный код никому не нужен за пределами предприятия, это не новость.
amironov
Извините за нескромный вопрос, вы делали какой-то коробочный продукт для сапа или реализовывали пожелания заказчика при внедрении?
Color
Второе. Первым непосредственно занимается сам SAP (+партнерские решение), основная масса же — внедрения этих продуктов и их поддержка.
Color
Запустить просто так не получится. Либо иметь под рукой SAP, либо зарегистрировать себе демо акк SAP Cloud Platform.
Опенсорс проекты — посмотрите тут, только те, что посвежее.
amironov
Спасибо, положил в закладки. Но надеюсь, что не пригодится.)
potan
Какие ФП языки страдают коболовским синтаксисом? Как раз там синтаксис обычно очень лаконичен, так как набор конструкций сокращен, по сравнению с императивными языками.
Color
Не коболовским, а дедовским
0xd34df00d
Так пример можно?
Color
Эрланг, лисп
tmin10
По прологу у нас был курс в университете, потом часть даже курсовые писала несложные. Необычный язык, тоже понравился тем, что вроде как само работает при описание предметной области, можно из условий решение получить и из решения условия. Но мозг поломал сначала, чтобы перестроиться от привычных языков, конечно.
raydac
язык простейший, весь синтаксис в целом ":-,;[]|()", но народ привыкший к императивному, ломает себе мозг когда надо описать компьютеру мир в котором он будет принимать решения
gatoazul
Я писал на Форте с WinAPI. Ничего такого уж страшного.
delhi_heir
А статью про то как такое делать не напишете?
(всегда мечтал изучить Forth)
raydac
тогда проще всего взять ту самую книгу Лео Броуди, которая травмировала одного из интервьюируемых, её русский перевод вполне нормально сделан, называется «Начальный курс программирования на языке ФОРТ», а если хочется более адвансед то книга академика Баранова «ФОРТ и его реализации»
delhi_heir
Спасибо!
gatoazul
На самом деле там не было ничего хитрого. Вызовы WinAPI из dll и удобные обертки поверх них. Я еще приделал туда упаковщик виджетов, который располагал их в окне по декларативному описанию.
Но я бы не сказал, что у Форта были на такой задаче какие-то особые преимущества. Писать было так же неудобно, как и на С. Особенно на Windows 95, когда любая серьезная ошибка портила систему и нужно было перезагружаться.
Писать под браузеры при всей из запутанности куда приятнее.
fedorez
моим первым языком, за программирование на котором мне платили деньги, был LISP, дело было в среде AutoCAD. По смутным воспоминаниям, язык мне нравился, и на тех кого пугали скобки, я смотрел с удивлением (равно как позже мне очень зашёл Objective-C. хз, наверное тянет меня в эту сторону :)
Единственно что не очень было, то что интерфейс нужно было писать вручную на отдельном языке DCL и подключать своеобразно… там три языка нужно было одновременно вроде… После на C# переехал как в новую реальность — всё же не ценим мы удобство и комфорт Visual Studio, как должное воспринимаем…
soymiguel
То самое, что мы заслужили на Хабре, а также рубрика «Высокопрофессиональное ИТ»: когда заметка о кодинге под SAP идет с тэгами «Ненормальное программирование» и «Старое железо».
#даннинг-крюгер
sergio_deschino
Если уж затронули ABAP и X++, то почему обошли стороной 1С? Как человек, который сталкивался и с абапом и с иксами, могу сказать, что 1с просто самый неудобный из них.
Zenitchik
Из-за того, что часто раскладку переключать приходится?
a1ex322
А что не так с 1С? Это же VBA перевели, разве что точку с запятой добавили. Ну и порог вхождения был бы не такой низкий, будь вы правы.
Zenitchik
Операции, мать их, сравнения! А ключевые слова языка и имена переменных — кириллические. Раскладка.
demoded
Отмечусь как писатель на Х++.
Язык не мертв, используется в текущих вершиях MS Dynamics 365 for Finance and Operations.
Раньше всё было действительно плохо, подсветку синтаксиса нам выдали в 2010-м, а в 2015-м стало можно фигачить прямо в Visual Studio. Правда в 2020-м так и сидим в VS2015 :) но последние релизы уже поддерживают VS2017
gwg605
Что-то программисты совсем изнежились. И код нечитаем, и язык плохой, и поддержки нет… Проблема не в языке и коде, а проблема в нас, в человеках. Получили как-то С код от заказчика, функция main с кейсом на 5000строк, 19 вложенных свичей и более ста глобальных переменных с именами ал-я a1, a2, tmp1, tmp2, tmp3 и тп. Чтобы что-то сделать надо проинициализировать магическими числами кучу переменных, тогда пара десятков тредов работающих в бекграунде сделают что-нибудь. И ничего травм не было, посмеялись, даже частично заставили работать… и выкинули. :)
DenisTrunin
Забавная статья. Пишу на X++ и немного на С#, и когда приходится переходить на С#, ощущения прямо зеркальные Филу, то что на X++ делается «мышкой» прямо из коробки(организация пользовательского интерфейса, проектирование и работа с БД), на С# совершенно не продумано, требует кучи бойлерплейт кода и проработки каждого момента с изобретением велосипедов.
Или теже records которые появились только в C#9, в X++ были изначально. Хотя конечно по кол-ву возможных вариантов использования и сложности C# впереди
Наверное все же дело понимании каждого языка:)
brom_portret
В начале своего профессионального пути 2 года (2004-2006) писал вот на таком en.wikipedia.org/wiki/OpenEdge_Advanced_Business_Language
RaFaeL-NN
Пишу на Clarion. Для бизнес-приложений синтаксис очень удобен. Все то, что выше про ABAP написано, можно также легко сделать и в нём. Жаль, десктоп сейчас мало кому нужен
WASD1
Вопрос про ABAP: а на какую ЗП сейчас миддл может рассчитывать?
Когда работал в одном холдинге — в 2008 году до кризиса программистов под SUP нанимали, за 250-300к в среднем. В 2008 году!
А сейчас гуглёж выдал вилку 130-200к.
Действительно всё настолько хуже стало или просто узкая тема, с ходу адекватную ЗП не нагуглишь?
Sedlo
Насчет 250-300 в 2008-м — это если только за фрилансеров давали. В штате — для местных звезд еще может быть, но средняя — не поверю.
Разница тогда и сейчас: раньше было много много новых проектов, сейчас в основном поддержка и вялотекущее развитие легаси тех самых версий 4.7 и 2005.
Результат импортозамещения: отток хороших специалистов за границу, у оставшихся — сильно более узкий рынок, чем 12 лет назад.
Итого на том же фрилансе абаперу-мидлу (не консультанту) на русских клиентах можно рассчитывать на все те же 15к в день (при 20 рабочих днях в месяц это 300к), при немного другом курсе USD. А на западных клиентах (в основном, пищевка, прочие FMCG) — очень индивидуально. Есть те которые и до русских по предложению недотягивают, есть более приближенные к западным расценкам.
vp1000
Активно использую FORTH в ряде коммерческих проектов. Forth-машина своей разработки. Не во всем придерживался стандартов. Например у меня нативная поддержка чисел с плавающей точкой, другой принцип файловых операций. Forth используется не как самостоятельный язык программирования (сам проект на С++), а скорее как скриптовой язык. Структура Forth машины позволяет динамически создавать и подгружать модули. Они компилируются в шитый код и в дальнейшем работают быстро. Forth — это средство для создания проблемно ориентированных языков программирования. Очень удобно для написания систем автоматизации. Только синтаксис языка непривычен для программиста, привыкшего к С++ или Java.
ApeCoder
В форте стековой машиной создается дополнительная ненужная ментальная нагрузка на программиста. Вы рассматривали использование других скриптовых языков типа lua?
Zenitchik
Несущественная.
raydac
у тех кто на стековых языках не писал ничего существенного, часто увренность что работа со стеком это сложно и запутаешься
vp1000
Ментальная нагрузка только с непривычки. Проекты о которых говорю уходят корнями в начало 2000. Тогда использование Forth было оправдано. В новых проектах используется lua.
mSnus
здесь не хватает языка программирования 1С: Бухгалтерия…
fazyloff
Этот язык сделали датские братья Дамгаард из Damgaard Company в 1998.