В компьютерном программном обеспечении язык программирования общего назначения ( 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]
Различие между языками программирования общего назначения и языками программирования предметной области не всегда четкое. [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]
Ниже приведены некоторые языки программирования общего назначения:
{{cite journal}}
: Требуется цитировать журнал |journal=
( помощь ){{cite book}}
: CS1 maint: несколько имен: список авторов ( ссылка )