В информатике термин автоматическое программирование [1] обозначает тип компьютерного программирования, в котором некоторый механизм генерирует компьютерную программу, позволяющую программистам писать код на более высоком уровне абстракции.
Точное определение автоматического программирования практически не согласовано, в основном из-за того, что его значение со временем изменилось. Дэвид Парнас , прослеживая историю «автоматического программирования» в опубликованных исследованиях, отметил, что в 1940-х годах в нем описывалась автоматизация ручного процесса перфорации бумажной ленты . Позже речь шла о переводе языков программирования высокого уровня, таких как Fortran и ALGOL . Фактически, одна из самых ранних программ, идентифицируемых как компилятор, называлась Autocode . Парнас пришел к выводу, что «автоматическое программирование всегда было эвфемизмом.для программирования на языке более высокого уровня, чем тогда был доступен программисту » [2]
Синтез программ - это один из видов автоматического программирования, при котором процедура создается с нуля на основе математических требований.
Источник
Милдред Косс , один из первых программистов UNIVAC , объясняет: «Написание машинного кода включало несколько утомительных шагов - разбиение процесса на дискретные инструкции, назначение конкретных участков памяти для всех команд и управление буферами ввода-вывода. После выполнения этих шагов для реализации математических процедур, библиотеки подпрограмм и программ сортировки, наша задача заключалась в том, чтобы взглянуть на более крупный процесс программирования. Нам нужно было понять, как мы могли бы повторно использовать проверенный код и получить машинную помощь в программировании. Когда мы программировали, мы исследовали процесс и пытался придумать способы абстрагироваться от этих шагов, чтобы включить их в язык более высокого уровня. Это привело к разработке интерпретаторов, ассемблеров, компиляторов и генераторов - программ, предназначенных для работы с другими программами или их создания, то есть автоматического программирования . " [3]
Генеративное программирование
Генеративное программирование и связанный с ним термин метапрограммирование [4] - это концепции, согласно которым программы могут быть написаны «для автоматизированного производства компонентов программного обеспечения» [5], так же как автоматизация улучшила «производство традиционных товаров, таких как одежда, автомобили, химикаты, и электроника ". [6] [7]
Цель - повысить продуктивность программиста . [8] Это часто связано с темами повторного использования кода, такими как разработка программного обеспечения на основе компонентов .
Генерация исходного кода
Генерация исходного кода является процесс генерации исходного кода , основанного на описании задачи [9] или онтологической модели , такие как шаблон и осуществляется с помощью инструмента программирования , таких как процессор шаблона или интегрированной среды разработки (IDE). Эти инструменты позволяют генерировать исходный код любым из различных способов.
Современные языки программирования хорошо поддерживаются такими инструментами, как Json4Swift ( Swift ) и Json2Kotlin ( Kotlin ).
Программы, которые могут генерировать код COBOL, включают:
- серии DYL250 / DYL260 / DYL270 / DYL280 [10]
- SB-5 корпорации Business Controls
- Пакет генератора прикладных программ PMM2170 от Peat Marwick Mitchell
Эти генераторы приложений поддерживали вставки и переопределения COBOL.
Макро процессор, такие как C препроцессор , который заменяет шаблоны в исходном коде в соответствии с относительно простых правил, является простой формой исходного кода генератора. [ необходима цитата ] Также существуют инструменты генерации исходного кода. [11] [12]
Низкокодовые приложения
Платформа разработки низкого кода (LCDP) это программное обеспечение , которое обеспечивает среду программистов использовать для создания прикладного программного обеспечения с помощью графических пользовательских интерфейсов и конфигураций вместо традиционного компьютерного программирования .
Смотрите также
- Автоматическое исправление ошибок
- Автоматизированное машинное обучение
- Сравнение инструментов генерации кода
- Функционально-ориентированное программирование
- Языко-ориентированное программирование
- Язык моделирования
- Трансформация программы
- Семантический перевод
- Преобразование на основе словарного запаса
- Язык программирования четвертого поколения
- Платформы разработки low-code
Заметки
- ^ Рикардо Aler Мур, " Автоматическая Индуктивный Программирование в архив 2016-03-04 в Wayback Machine ", ICML 2006 Учебное пособие . Июнь 2006 г.
- ^ DL Парнас. « Программные аспекты систем стратегической защиты» . Американский ученый . Ноябрь 1985 г.
- ^ Чун, Венди. «О программном обеспечении или постоянстве визуальных знаний». Серая комната 18. Бостон: 2004, стр. 30.
- ^ «О генеративном программировании» .
Генеративное программирование как подобласть метапрограммирования описывает практику написания программ, которые генерируют другие программы как часть их выполнения.
- ^ П. Койнт (2005). «К генеративному программированию». Нетрадиционные парадигмы программирования . Конспект лекций по информатике. 3566 . С. 315–325. DOI : 10.1007 / 11527800_24 . ISBN 978-3-540-27884-9.
Генеративное программирование (GP) - это попытка производить компоненты программного обеспечения автоматизированным способом путем разработки программ, которые синтезируют другие программы.
- ^ «Генеративное программирование: концепции и опыт (GPCE)» .
- ^ Конференция SIGPLAN по этой теме запланирована на ноябрь 2018 года. Ранее / 1970-х попытки в этой области включали Yacc и связанные с ним программы Lex.
- ^ Джеймс Уилкокс, « Слишком много платят за разработку пользовательских приложений », март 2011 г.
- ^ «Генератор приложений» . PCmag.com.
Программное обеспечение, которое генерирует прикладные программы на основе описания проблемы, а не путем традиционного программирования. Он находится на более высоком уровне и проще в использовании, чем язык программирования высокого уровня, такой как ...
- ^ «Командный синтаксис DYL-280» (PDF) . Архивировано из оригинального (PDF) 30.07.2018 . Проверено 3 сентября 2018 .
- ^ Noaje, Габриэль, Кристоф Jaillet и Микаэль Krajecki. « Преобразователь исходного кода в исходный: OpenMP C в CUDA ». Высокопроизводительные вычисления и коммуникации (HPCC), 13-я Международная конференция IEEE 2011 г. IEEE, 2011.
- ↑ Куинлан, Дэн и Чуньхуа Ляо. « Инфраструктура компилятора ROSE от исходного текста к исходному ». Пользователи Cetus и семинар по инфраструктуре компиляторов, совместно с PACT. Vol. 2011. 2011.
Рекомендации
- Генеративное программирование: методы, инструменты и приложения Кшиштофа Чарнецкого и Ульриха В. Эйзенекера, Addison Wesley, 2000.
Внешние ссылки
- Генерация кода для чайников