stringtranslate.com

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

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

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

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

Источник

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

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

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

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

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

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

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

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

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

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

Большие языковые модели, такие как ChatGPT, способны генерировать исходный код программы из описания программы, данного на естественном языке. [13]

Многие системы реляционных баз данных предоставляют функцию, которая экспортирует содержимое базы данных в виде запросов определения данных SQL , которые затем могут быть выполнены для повторного импорта таблиц и их данных или переноса их в другую СУБД.

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

Платформа разработки с низким объемом кода (LCDP) — это программное обеспечение, предоставляющее программистам среду для создания прикладного программного обеспечения с помощью графических пользовательских интерфейсов и конфигурации вместо традиционного компьютерного программирования .

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

Примечания

  1. ^ Рикардо Алер ​​Мур, «Автоматическое индуктивное программирование», архив 2016-03-04 в Wayback Machine , ICML 2006 Tutorial . Июнь 2006.
  2. ^ DL Parnas. «Программные аспекты стратегических оборонных систем». American Scientist . Ноябрь 1985 г.
  3. ^ Чан, Венди. «О программном обеспечении, или сохранение визуального знания». Grey Room 18. Бостон: 2004, стр. 30.
  4. ^ "О генеративном программировании". Генеративное программирование, как подобласть метапрограммирования, описывает практику написания программ, которые генерируют другие программы в ходе своего выполнения.
  5. ^ P. Cointe (2005). «К генеративному программированию». Нетрадиционные парадигмы программирования . Конспект лекций по информатике. Том 3566. С. 315–325. doi :10.1007/11527800_24. ISBN 978-3-540-27884-9Генеративное программирование (ГП) — это попытка автоматизированного производства компонентов программного обеспечения путем разработки программ, синтезирующих другие программы.
  6. ^ «Генеративное программирование: концепции и опыт (GPCE)».
  7. ^ Конференция SIGPLAN по этой теме запланирована на ноябрь 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 IEEE 13-я международная конференция по. IEEE, 2011.
  12. ^ Куинлан, Дэн и Чуньхуа Ляо. «Инфраструктура компилятора исходного кода ROSE». Семинар по инфраструктуре компиляторов и пользователям Cetus совместно с PACT. Том 2011. 2011.
  13. ^ Tung, Liam (26 января 2023 г.). «ChatGPT может писать код. Теперь исследователи говорят, что он также хорош в исправлении ошибок». ZDNET . Архивировано из оригинала 3 февраля 2023 г. . Получено 22 июня 2023 г. .

Ссылки

Внешние ссылки