Автоматическое программирование - Automatic programming

В Информатика, период, термин автоматическое программирование[1] определяет тип компьютерное программирование в котором какой-то механизм порождает компьютерная программа позволить человеку программисты писать код на более высоком уровне абстракции.

Точное определение автоматического программирования практически не согласовано, главным образом потому, что его значение со временем изменилось. Давид Парнас прослеживая историю «автоматического программирования» в опубликованных исследованиях, отметил, что в 1940-х годах описывалась автоматизация ручного процесса штамповки. бумажная лента. Позже речь шла о переводе языки программирования высокого уровня подобно Фортран и АЛГОЛ. Фактически, одна из первых программ, идентифицированных как компилятор назывался Автокодирование. Парнас пришел к выводу, что «автоматическое программирование всегда было эвфемизм для программирования на языке более высокого уровня, чем тогда был доступен программисту ».[2]

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

Источник

Милдред Косс, рано UNIVAC программист объясняет: «Написание машинного кода включало несколько утомительных шагов - разбиение процесса на дискретные инструкции, назначение определенных участков памяти для всех команд и управление буферами ввода / вывода. После выполнения этих шагов для реализации математических процедур, вспомогательный компонент рутинной библиотеки и сортировки программ, наша задача заключалась в том, чтобы взглянуть на более крупный процесс программирования. Нам нужно было понять, как мы можем повторно использовать проверенный код и получить помощь машины в программировании. В процессе программирования мы исследовали процесс и пытались придумать способы абстрагировать эти шаги, чтобы включить их в язык более высокого уровня. Это привело к разработке интерпретаторов, ассемблеров, компиляторов и генераторов - программ, предназначенных для работы или создания других программ, то есть автоматическое программирование."[3]

Генеративное программирование

Генеративное программирование и связанный термин метапрограммирование[4] это концепции, с помощью которых программы могут быть написаны «для автоматического производства программных компонентов»[5] точно так же, как автоматизация улучшила «производство традиционных товаров, таких как одежда, автомобили, химикаты и электроника».[6][7]

Цель - улучшить программист продуктивность.[8] Это часто связано с темами повторного использования кода, такими как компонентная разработка программного обеспечения.

Генерация исходного кода

Генерация исходного кода это процесс генерации исходного кода на основе описания проблемы[9] или онтологический модель, такую ​​как шаблон, и выполняется с инструмент программирования например, обработчик шаблонов или интегрированная среда развития (IDE). Эти инструменты позволяют генерировать исходный код любым из способов.

Современные языки программирования хорошо поддерживаются такими инструментами, как Json4Swift (Быстрый ) и Json2Kotlin (Котлин ).

Программы, которые могут генерировать КОБОЛ код включает:

Эти генераторы приложений поддерживают вставки и переопределения COBOL.

А макрос процессор, такой как Препроцессор C, который заменяет шаблоны в исходном коде в соответствии с относительно простыми правилами, представляет собой простую форму генератора исходного кода.[нужна цитата ] Источник-источник инструменты генерации кода также существуют.[11][12]

Приложения с низким кодом

А платформа разработки low-code (LCDP) - это программное обеспечение, обеспечивающее среду программисты использовать для создания программное обеспечение через графический пользовательский интерфейс и конфигурация вместо традиционной компьютерное программирование.

Смотрите также

Примечания

  1. ^ Рикардо Алер ​​Мур "Автоматическое индуктивное программирование В архиве 2016-03-04 в Wayback Machine ", ICML 2006 Учебное пособие. Июнь 2006 г.
  2. ^ Д. Л. Парнас. "Программные аспекты систем стратегической защиты." Американский ученый. Ноябрь 1985 г.
  3. ^ Чун, Венди. «О программном обеспечении или постоянстве визуальных знаний». Серая комната 18. Бостон: 2004, стр. 30.
  4. ^ «О генеративном программировании». Генеративное программирование, как подобласть метапрограммирования, описывает практику написания программ, которые генерируют другие программы как часть их выполнения.
  5. ^ П. Койнт (2005). «К генеративному программированию». Нетрадиционные парадигмы программирования. Конспект лекций по информатике. 3566. С. 315–325. Дои:10.1007/11527800_24. ISBN  978-3-540-27884-9. Генеративное программирование (GP) - это попытка автоматизированного производства компонентов программного обеспечения путем разработки программ, которые синтезируют другие программы.
  6. ^ "Генеративное программирование: концепции и опыт (GPCE)".
  7. ^ Конференция СИГПЛАН по этой теме запланировано на ноябрь 2018 года. Предыдущие / 1970-е попытки в этой области включали Yacc и соответствующие программы Lex.
  8. ^ Джеймс Уилкокс "Слишком много платят за разработку пользовательских приложений ", Март 2011 г.
  9. ^ «Генератор приложений». PCmag.com. Программное обеспечение, которое генерирует прикладные программы на основе описания проблемы, а не путем традиционного программирования. Он находится на более высоком уровне и проще в использовании, чем язык программирования высокого уровня, такой как ...
  10. ^ «Синтаксис команды DYL-280» (PDF). Архивировано из оригинал (PDF) на 2018-07-30. Получено 2018-09-03.
  11. ^ Ноаи, Габриэль, Кристоф Жайе и Михаэль Краецки. "Переводчик исходного кода: OpenMP C в CUDA ". Высокопроизводительные вычисления и коммуникации (HPCC), 2011 г., 13-я Международная конференция IEEE, посвященная IEEE, 2011 г."
  12. ^ Куинлан, Дэн и Чуньхуа Ляо. "Инфраструктура компилятора ROSE от исходного кода к исходному ". Пользователи Cetus и семинар по инфраструктуре компиляторов, совместно с PACT. Vol. 2011. 2011.

Рекомендации

  • Генеративное программирование: методы, инструменты и приложения Кшиштоф Чарнецкий и Ульрих В. Эйзенекер, Addison Wesley, 2000.

внешняя ссылка