Helicopterview ABAP [закрывается]

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

  • Это (Всегда) компилируется?
  • Typestem: действительно ли это со строгим контролем типов? Это использует вывод типа?
  • Наследование: единственный / muliple, подобные интерфейсу структуры?
  • Наборы: Это имеет наборы кроме массивов? Это имеет универсальные наборы? Это использует понимание Списка?
  • Как насчет (довода "против"/мятежника/в) различие в массивах, returntypes, parametertypes, переопределяя?
  • Какой-либо Exceptionhandling?
  • Какая-либо сборка в дизайне поддержки контракта?
  • Что-либо замечательное, как отклонено на другие известные языки?
  • ...

Любая общая информация о характеристиках в основном приветствовалась бы!

48
задан Marc 26 January 2010 в 08:52
поделиться

2 ответа

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

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

Типирование: это сильно набрано? Использует ли он вывод типа?

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

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

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

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

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

Как насчет (Con / Contra / in) дисперсии в массивах, Returntypes, ParametyTypes, переопределения?

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

Любое исключение?

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

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

Нет, которые я не знаю.

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

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

78
ответ дан 26 November 2019 в 18:42
поделиться

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

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

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

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

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

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

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

24
ответ дан 26 November 2019 в 18:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: