Вертолетное интервью ABAP

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

  • Он (всегда) скомпилирован?
  • Typestem : Это строго типизировано? Использует ли он вывод типов?
  • Наследование: одиночные/множественные интерфейсные структуры?
  • Коллекции: есть ли коллекции помимо массивов? Есть ли общие коллекции? Использует ли он понимание списка?
  • Как насчет (con/contra/in) дисперсии в массивах, возвращаемых типах, типах параметров, переопределении?
  • Любая обработка исключений?
  • Любая сборка в дизайне по контрактной поддержке?
  • Что-нибудь примечательное по сравнению с другими известными языками?
  • ...

Приветствуется любая общая информация о характеристиках!


person Marc    schedule 26.01.2010    source источник


Ответы (2)


Он (всегда) скомпилирован?

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

Typestem : Это строго типизировано? Использует ли он вывод типов?

Строго типизированный с системой универсальных типов поверх. Обратите внимание, что в язык встроен полный словарь данных, что очень удобно.

Наследование: одиночные/множественные интерфейсные структуры?

Одиночное наследство. Поддерживаются интерфейсы, в том числе составные интерфейсы и переименование компонентов реализации (два интерфейса IF_FOO и IF_BAR могут оба определять метод BAZ, а класс, реализующий оба интерфейса, будет иметь два метода IF_FOO~BAZ и IF_BAR~BAZ).

Коллекции: есть ли коллекции помимо массивов? Есть ли общие коллекции? Использует ли он понимание списка?

То, что вы знаете как «массив» в других языках программирования, на самом деле не существует в ABAP — вместо этого вы обычно используете так называемые «внутренние таблицы». Подумайте о структурированных таблицах в памяти, подобных базам данных. Есть некоторые идеи классов коллекций, разбросанных по разным модулям, но канонический способ сделать это — использовать внутренние таблицы — определить так называемый табличный тип строк, которые либо представляют ссылки на экземпляры, либо структуры, содержащие такую ​​ссылку.

Как насчет (con/contra/in) дисперсии в массивах, возвращаемых типах, типах параметров, переопределении?

Массивы: см. выше. Переопределение: вы не можете изменить сигнатуру метода при реализации метода интерфейса или переопределении методов суперкласса. Что касается параметров - это зависит от того, передаете ли вы данные (или ссылки на данные) или ссылки на объекты. В общем, приведение вверх может происходить неявно, в то время как приведение вниз нужно выполнять явно.

Любая обработка исключений?

да. Более чем одним способом - опять же по историческим причинам (обратная совместимость). Поддерживаются исключения на основе классов.

Любая сборка в дизайне по контрактной поддержке?

Нет, о чем я знаю.

Что-нибудь примечательное по сравнению с другими известными языками?

Много вещей. Вы можете проверить http://www.volker-wegert.de/en/node/17 и http://www.volker-wegert.de/en/node/21 за откровенно предвзятый обзор :-)

person vwegert    schedule 26.01.2010
comment
Отличный ответ, меня тоже много просветил. Любопытно, что сторонник на volker-wegert.de использует бесплатный Drupal на основе PHP с открытым исходным кодом для предоставления контента управление своим сайтом. Любопытно, потому что могли бы быть интересные комбинации, если бы существовал интерфейс между SAP и Drupal. Сохраняя системы отдельными в разработке, но когда они объединяются, могут возникнуть некоторые интересные возможности, например. мощный веб-интерфейс/веб-приложения для SAP, предоставляемые Drupal. - person therobyouknow; 15.03.2010
comment
@Rob: мне больше нравится смешивать Java, EMF, XText и ABAP. PHP и ABAP на самом деле не мой фетиш :-) - person vwegert; 15.03.2010
comment
@vwegert: звучит хорошо для меня. Это отличная возможность, если ваша организация или установка приобрели лицензии на использование Java с SAP, поскольку они кажутся надстройками и не у каждой организации они есть. Кроме того, не каждая организация позволяет разработчикам-пользователям, не входящим в центр компетенции SAP, заниматься ее разработкой. Еще раз спасибо за ответ, буду продолжать с интересом смотреть комментарии про ABAP и SAP. - person therobyouknow; 16.03.2010
comment
@Rob: отрицательно, вам не нужны дополнительные лицензии для использования Java с R/ с использованием вызовов RFC :-) - person vwegert; 17.03.2010
comment
@vwegert: спасибо - похоже, мне дали дезинформацию. Итак: вы говорите, что любая и каждая установка SAP поставляется со встроенной возможностью для Java-программы напрямую общаться с SAP? На самом деле я думаю, что заявление о стоимости лицензирования было основано на необходимости дополнительного пользовательского места для этого общения. Требуется ли дополнительный пользователь? Что ж, отрадно знать, что SAP, возможно, не такой солипсист, в конце концов :) - person therobyouknow; 17.03.2010
comment
@vwegert: Является ли Java с R/ использованием вызовов RFC таким же, как SAP Netweaver? - person therobyouknow; 17.03.2010
comment
@Rob: Пожалуйста, не используйте термин NetWeaver без необходимости - это расплывчатое маркетинговое название для многих вещей. R/ должно было быть R/3 (опечатка). Конечно, вам нужны пользовательские лицензии, если вы хотите работать с системой R/3, но вам не нужны дополнительные лицензии, если у вас уже есть лицензии для приложений ABAP (AFAIK и IANAL). И возможности: Да, взгляните на JCo (и, может быть, RCER, бессовестный штекер...) - person vwegert; 17.03.2010

Я попытаюсь предоставить некоторые вещи, которых нет в предыдущем ответе, пропуская то, что они упоминали:

Он (всегда) компилируется?
Что ж, интерфейс для программиста говорит "Активировать", а не компилировать, но это потому, что есть встроенное управление версиями. Когда вы что-то активируете, оно компилирует это и делает исходную и бинарную версии «активной» версией. Если кто-то попытается запустить исходный код, который не скомпилирован, он будет автоматически скомпилирован при запуске.

Typestem : это строго типизированный текст?
В принципе, да. ABAP — это странная помесь Pascal и COBOL. Есть «символы поля», похожие на указатели. Также теперь есть универсальные типы. (И общие указатели полей). Одна из самых крутых вещей заключается в том, что между типами ABAP и типами баз данных нет разницы. Любая таблица, которую вы создадите, автоматически станет типом структуры. Другими словами, ABAP интегрирован с базой данных так, как почти никакие другие языки. Вы также можете написать SQL, который на самом деле является частью ABAP, а не просто строкой, как в других языках.

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

Коллекции: есть ли коллекции помимо массивов? Есть ли общие коллекции? Использует ли он понимание списков?
Более того, у него есть «Внутренние таблицы», которые в основном представляют собой тип динамического массива. Они могут быть объявлены практически из любого типа, в том числе из словаря данных. Их можно зацикливать, сортировать и т. д. Существует несколько типов, в том числе хешированные и отсортированные варианты.

Какая-либо обработка исключений?
Как ООП, так и не ООП.

Что-нибудь примечательное по сравнению с другими известными языками?
Как сказал другой автор, многое. Он очень хорош во всем, что касается операций с базами данных и повторного использования сложных структур и типов данных. Это, естественно, кросс-база данных и кросс-платформа (ОС и процессор). Он имеет очень хорошую систему управления версиями и транспортную систему. Вся система SAP имеет очень хорошую многоязычную поддержку. Вы можете автоматически получать простые экраны с соответствующими заголовками и полями выбора, а это означает, что вы можете меньше программировать и больше работать. Вам не нужно сопоставлять типы БД с типами языков и т. д.
Вещи, в которых он не очень хорош:
1. Числа обычно хранятся в формате ASCII, поэтому во многих приложениях он менее чем быстр в математических вычислениях.
2. Большинство структур данных очень нормализованы, то есть иногда ваши данные могут быть разбросаны по 50 таблицам. «Звездные» запросы очень распространены. В таких случаях вам помогут встроенные функции для извлечения данных (например, логические базы данных).
3. SAP старается быть всем для всех, поэтому существует множество параметров конфигурации и т. д., а иногда функция не работает. делайте то, что вы ожидали, основываясь на прошлом поведении.
4. ABAP иногда очень многословен. Попробуйте использовать кнопку "Шаблон" на чем-то простом, например GUI_DOWNLOAD.
5.SAP была очень амбициозна в том, что они взяли на себя, и поэтому на раннем этапе столкнулась с ограничениями аппаратного обеспечения, операционных систем и систем RDBM. Таким образом, у них есть унаследованные кладжи, чтобы справиться с этим, которые не очень хороши. (пул-таблицы, кластерные таблицы и т. д.)
6. Когда вы активируете программу, она не выполняет полную проверку совместимости с используемыми функциональными модулями. Бывают ситуации, когда что-то активируется без проблем, но затем происходит сбой во время выполнения, даже если это могло быть перехвачено во время компиляции.

person Noah    schedule 08.02.2010