В информатике автоматическое программирование [1] — это тип компьютерного программирования , в котором некий механизм генерирует компьютерную программу , позволяющую программистам- людям писать код на более высоком уровне абстракции.
До сих пор не существует единого мнения по поводу точного определения автоматического программирования, главным образом потому, что его значение со временем изменилось. Дэвид Парнас , прослеживая историю «автоматического программирования» в опубликованных исследованиях, отмечал, что в 1940-х годах оно описывало автоматизацию ручного процесса перфорации бумажной ленты . Позже это относилось к переводу языков программирования высокого уровня, таких как Фортран и АЛГОЛ . Фактически, одна из первых программ, идентифицируемых как компилятор , называлась Autocode . Парнас пришел к выводу, что «автоматическое программирование всегда было эвфемизмом для программирования на языке более высокого уровня, чем тот, который был тогда доступен программисту». [2]
Синтез программы — это один из видов автоматического программирования, при котором процедура создается с нуля на основе математических требований.
Милдред Косс , один из первых программистов UNIVAC , объясняет: «Написание машинного кода включало несколько утомительных шагов — разбиение процесса на дискретные инструкции, назначение определенных ячеек памяти для всех команд и управление буферами ввода-вывода. После выполнения этих шагов для реализации математических процедур, библиотеки подпрограмм и программ сортировки, наша задача заключалась в том, чтобы взглянуть на более широкий процесс программирования. Нам нужно было понять, как мы можем повторно использовать проверенный код и как можно использовать машинную помощь в программировании. Во время программирования мы исследовали процесс и пытался придумать способы абстрагировать эти шаги, чтобы включить их в язык более высокого уровня.Это привело к разработке интерпретаторов, ассемблеров, компиляторов и генераторов — программ, предназначенных для работы с другими программами или их создания, то есть автоматического программирования . " [3]
Генеративное программирование и связанный с ним термин « метапрограммирование» [4] представляют собой концепции, согласно которым программы могут быть написаны «для автоматического производства компонентов программного обеспечения» [5] точно так же, как автоматизация улучшила «производство традиционных товаров, таких как одежда, автомобили, химикаты, и электроника». [6] [7]
Цель — повысить производительность программистов . [8] Это часто связано с темами повторного использования кода, такими как разработка программного обеспечения на основе компонентов .
Генерация исходного кода — это процесс генерации исходного кода на основе описания проблемы [9] или онтологической модели, такой как шаблон, и выполняется с помощью инструмента программирования , такого как процессор шаблонов или интегрированная среда разработки (IDE). Эти инструменты позволяют генерировать исходный код любым из различных способов.
Современные языки программирования хорошо поддерживаются такими инструментами, как Json4Swift ( Swift ) и Json2Kotlin ( Kotlin ).
Программы, которые могут генерировать код COBOL , включают:
Эти генераторы приложений поддерживали вставки и переопределения COBOL.
Макропроцессор , такой как препроцессор C , который заменяет шаблоны в исходном коде в соответствии с относительно простыми правилами, представляет собой простую форму генератора исходного кода. Также существуют инструменты генерации исходного кода. [11] [12]
Большие языковые модели, такие как ChatGPT , способны генерировать исходный код программы на основе описания программы, данного на естественном языке. [13]
Платформа разработки с низким кодом (LCDP) — это программное обеспечение, которое предоставляет программистам среду, которую используют для создания прикладного программного обеспечения с помощью графических пользовательских интерфейсов и конфигурации вместо традиционного компьютерного программирования .
Генеративное программирование как подобласть метапрограммирования описывает практику написания программ, которые генерируют другие программы в ходе своего выполнения.
Генеративное программирование (GP) — это попытка автоматизированного производства компонентов программного обеспечения путем разработки программ, синтезирующих другие программы.
Программное обеспечение, которое генерирует прикладные программы на основе описания проблемы, а не с помощью традиционного программирования. Он находится на более высоком уровне и его проще использовать, чем язык программирования высокого уровня, такой как...