Язык программирования общего назначения
В компьютерном программном обеспечении язык программирования общего назначения ( GPL ) — это язык программирования для создания программного обеспечения в самых разных областях применения . И наоборот, предметно-ориентированный язык программирования (DSL) используется в определенной области. Например, Python — это лицензия GPL, а SQL — это DSL для запросов к реляционным базам данных .
История [ править ]
Ранние языки программирования, как и компьютерное оборудование, были разработаны для научных вычислений (численных расчетов) или коммерческой обработки данных. Научные языки, такие как Fortran и Algol, поддерживают вычисления с плавающей запятой и многомерные массивы, а бизнес-языки, такие как COBOL, поддерживают форматы файлов с фиксированными полями и записи данных . Гораздо менее широко использовались специализированные языки, такие как IPL-V и LISP, для обработки символьных списков ; COMIT для манипуляций со строками; APT для станков с числовым программным управлением . Системное программирование, требующее манипулирования указателями, обычно выполнялось на языке ассемблера , хотя JOVIAL использовался для некоторых военных приложений. [1]
Система IBM System /360 , анонсированная в 1964 году, была спроектирована как унифицированная аппаратная архитектура, поддерживающая как научные, так и коммерческие приложения, и IBM разработала для нее PL/I как единый язык общего назначения, поддерживающий научное, коммерческое и системное программирование. . Действительно, подмножество PL/I использовалось в качестве стандартного языка системного программирования для операционной системы Multics .
Со времени PL/I различие между научными и коммерческими языками программирования уменьшилось: большинство языков поддерживают основные функции, необходимые обоим, а большая часть обработки файлов специального формата делегируется специализированным системам управления базами данных .
Начиная с 1960-х годов также были разработаны многие специализированные языки: GPSS и Simula для моделирования дискретных событий; MAD , BASIC , Logo и Pascal для обучения программированию; C для системного программирования; JOSS и APL\360 для интерактивного программирования. [1]
GPL против DSL [ править ]
Различие между языками программирования общего назначения и языками программирования предметной области не всегда четкое. [2] Язык программирования может быть создан для конкретной задачи, но использоваться за пределами этой исходной области и, таким образом, считаться языком программирования общего назначения. Например, COBOL , Fortran и Lisp были созданы как DSL (для бизнес-обработки, числовых вычислений и символьной обработки), но со временем перешли под лицензию GPL. [ сомнительно – обсудить ] И наоборот, язык может быть разработан для общего использования, но применяться на практике только в определенной области. [3] Язык программирования, который хорошо подходит для решения задачи, будь то язык общего назначения или DSL, должен минимизировать требуемый уровень детализации, оставаясь при этом достаточно выразительным в предметной области. [4] Как следует из названия, язык общего назначения является «общим» в том смысле, что он не может обеспечить поддержку нотации, специфичной для предметной области, в то время как DSL могут быть разработаны для различных проблемных областей для решения этой проблемы. [4] Языки общего назначения предпочтительнее DSL, когда предметная область приложения недостаточно понятна, чтобы гарантировать использование собственного языка. В этом случае вместо него может использоваться язык общего назначения с соответствующей библиотекой типов данных и функций для предметной области. [5] Хотя DSL обычно меньше GPL, поскольку они предлагают меньший диапазон обозначений абстракций, некоторые DSL фактически содержат целую GPL в качестве подъязыка. В этих случаях DSL способны предложить выразительную силу для конкретной предметной области наряду с выразительной силой GPL. [6]
Все языки программирования общего назначения полны по Тьюрингу , а это означает, что они теоретически могут решить любую вычислительную задачу. Специализированные языки часто также являются полными по Тьюрингу, но не только так.
Преимущества и недостатки [ править ]
Языки программирования общего назначения чаще используются программистами. Согласно исследованию, C , Python и Java были наиболее часто используемыми языками программирования в 2021 году. [7] Одним из аргументов в пользу использования языков программирования общего назначения по сравнению с предметно-ориентированными языками является то, что больше людей будут знакомы с этими языками, что избавит от необходимости изучать новый язык.
Кроме того, для многих задач (например, статистического анализа, машинного обучения и т. д.) существуют тщательно протестированные и оптимизированные библиотеки. Теоретически наличие этих библиотек должно устранить разрыв между языками общего назначения и предметно-ориентированными языками. [4]
Эмпирическое исследование 2010 года было направлено на измерение эффективности решения проблем и производительности между GPL и DSL, предлагая пользователям задачи, которые были знакомы с GPL ( C# ) и незнакомы с DSL ( XAML ). В конечном итоге пользователи этого конкретного предметно-ориентированного языка показали лучшие результаты на 15%, хотя они были лучше знакомы с GPL, что требует дальнейших исследований. [4]
Примеры [ править ]
С [ править ]
Предшественник C , B , был разработан в основном для конкретной цели: системного программирования . [8] Напротив, C нашел применение в различных вычислительных областях, таких как операционные системы , драйверы устройств , прикладное программное обеспечение и встроенные системы .
C подходит для использования в самых разных областях из-за своей универсальности. Он обеспечивает экономичность выражения, управление потоками, структуры данных и богатый набор операторов, но не ограничивает пользователей использовать его в каком-либо одном контексте. [9] В результате, хотя его создатели впервые использовали его для переписывания ядра операционной системы Unix , [10] его легко адаптировать для использования при разработке приложений, встроенных системах (например, программировании микропроцессоров), видеоиграх (например, Doom ) и так далее. Сегодня C остается одним из самых популярных и широко используемых языков программирования. [11]
С++ [ править ]
Задуманный как расширение C, C++ представил объектно-ориентированные функции, а также другие удобства, такие как ссылки, перегрузка операторов и аргументы по умолчанию. Как и C, универсальность C++ позволяла использовать его в широком диапазоне областей. Хотя основной областью применения C++ является системное программирование (из-за способности C++ предоставлять доступ к низкоуровневой архитектуре), [12] он широко использовался для создания настольных приложений, видеоигр, баз данных, финансовых систем и многого другого. [13] Крупнейшие компании-разработчики программного обеспечения и финансовые компании, такие как Microsoft , Apple , Bloomberg и Morgan Stanley , по-прежнему широко используют C++ в своих внутренних и внешних приложениях. [13]
Питон [ править ]
Python был задуман как язык, в котором особое внимание уделяется читаемости и расширяемости кода. [14] [15] Первый позволял инженерам, не связанным с программным обеспечением, легко изучать и писать компьютерные программы, а второй позволял специалистам в предметной области легко создавать библиотеки, подходящие для их собственных случаев использования. По этим причинам Python использовался в широком спектре областей.
Ниже приведены некоторые области использования Python: [16]
- Веб-разработка. Такие платформы, как Django и Flask, позволяют веб-разработчикам создавать надежные веб-серверы, которые также могут использовать преимущества более широкой экосистемы Python.
- Наука и академические круги: Научные библиотеки и библиотеки данных, такие как SciPy и Pandas , позволили использовать Python в научных исследованиях. [17]
- Машинное обучение. Такие библиотеки, как scikit-learn и Tensorflow, повысили доступность машинного обучения для разработчиков. [18]
- Общая разработка программного обеспечения: разработка пользовательских приложений, программ для очистки веб-страниц, игр и другого общего программного обеспечения.
Список [ править ]
Ниже приведены некоторые языки программирования общего назначения:
См. также [ править ]
Ссылки [ править ]
- ^ Jump up to: Перейти обратно: а б Жан Э. Саммет, «Языки программирования: история и будущее», Communications of ACM 15 :7:601-610 (июль 1972 г.) дои : 10.1145/361454.361485
- ^ «Предметно-ориентированные языки: аннотированная библиография». CiteSeerX 10.1.1.33.8207 .
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ Берри, Джерард (май 2006 г.). «Программирование в реальном времени: языки специального или общего назначения» . HAL Открытая наука .
- ^ Jump up to: Перейти обратно: а б с д Косар, Томаз (май 2010 г.). «Сравнение языков общего назначения и языков для конкретной предметной области: эмпирическое исследование» (PDF) . Информатика и информационные системы . 7 (2): 247–264. дои : 10.2298/CSIS1002247K .
- ^ ван Дёрсен, Ари (декабрь 1998 г.). «Маленькие языки: мало ухода?» . Журнал обслуживания программного обеспечения: исследования и практика . 10 (2): 75–92. doi : 10.1002/(SICI)1096-908X(199803/04)10:2<75::AID-SMR168>3.0.CO;2-5 .
- ^ ван Дёрсен, Ари; Клинт, Пол; Виссер, Йост (июнь 2000 г.). «Предметно-ориентированные языки: аннотированная библиография» . Уведомления ACM SIGPLAN . 35 (6): 26–36. дои : 10.1145/352029.352035 . ISSN 0362-1340 . S2CID 1049872 .
- ^ «Самые популярные языки программирования – 1965/2021 – Новое обновление – Статистика и данные» . Статистикаanddata.org . Проверено 3 июня 2022 г.
- ^ Томпсон, К. (7 января 1972 г.). «Титульный лист технического меморандума» (PDF) . Телефонные лаборатории Белла . Архивировано (PDF) из оригинала 11 июня 2015 г. Проверено 3 июня 2022 г.
- ^ В., Керниган, Брайан (2016). Язык программирования Си . Прентис Холл. ISBN 978-0-13-110370-2 . OCLC 1004153413 .
{{cite book}}
: CS1 maint: несколько имен: список авторов ( ссылка ) - ^ Ричи, Деннис (апрель 1993 г.). «Развитие языка Си» (PDF) . Уведомления ACM SIGPLAN . 28 (3): 201–208. дои : 10.1145/155360.155580 .
- ^ «Индекс ТИОБЕ» . ТИОБЕ . Проверено 3 июня 2022 г.
- ^ Страуструп, Бьярн (1995). Язык программирования C++ . Аддисон-Уэсли.
- ^ Jump up to: Перейти обратно: а б «Приложения C++» . www.stroustrup.com . Проверено 3 июня 2022 г.
- ^ «Артима — Создание Python» . www.artima.com . Проверено 3 июня 2022 г.
- ^ «Общие часто задаваемые вопросы по Python — документация Python 3.10.4» . docs.python.org . Проверено 3 июня 2022 г.
- ^ «Приложения для Python» . Python.org . Проверено 3 июня 2022 г.
- ^ «Популярность языков программирования в 12 086 исследовательских статьях – количественная оценка здоровья» . Проверено 3 июня 2022 г.
- ^ Педрегоса, Фабиан (2011). «Scikit-learn: машинное обучение на Python» (PDF) . Журнал исследований машинного обучения . 12 : 28:25–28:30. arXiv : 1201.0490 . Бибкод : 2011JMLR...12.2825P .