Введение
Язык программирования, используемый во многих областях применения.
В компьютерном программном обеспечении язык программирования общего назначения (GPL) — это язык программирования для разработки программного обеспечения в широком спектре областей. В отличие от него, язык программирования, специфичный для конкретной области (DSL), используется в пределах определенной сферы. Например, Python является GPL, а SQL — DSL для работы с реляционными базами данных.
In computer software, a general purpose programming language (GPL) is a programming language for building software in a wide variety of application domains. Conversely, a domain specific programming language (DSL) is used within a specific area. For example, Python is a GPL, while SQL is a DSL for querying relational databases.
История
Ранние языки программирования были разработаны для научных вычислений (численных расчетов) или коммерческой обработки данных, как и компьютерное оборудование. Научные языки, такие как Fortran и Algol, поддерживали вычисления с плавающей точкой и многомерные массивы, в то время как бизнес-языки, такие как COBOL, поддерживали форматы файлов с фиксированными полями и записи данных. Гораздо менее широко использовались специализированные языки, такие как IPL V и LISP для обработки символических списков; COMIT для манипулирования строками; APT для станков с числовым программным управлением. Системное программирование, требующее манипулирования указателями, обычно выполнялось на языке ассемблера, хотя JOVIAL использовался для некоторых военных приложений. IBM System/360, представленный в 1964 году, был разработан как единая аппаратная архитектура, поддерживающая как научные, так и коммерческие приложения, и IBM разработала PL/I для него как единый язык общего назначения, поддерживающий научное, коммерческое и системное программирование. Фактически, подмножество PL/I использовалось в качестве стандартного языка системного программирования для операционной системы Multics. С появлением PL/I различие между научными и коммерческими языками программирования стало менее выраженным, большинство языков поддерживают основные функции, необходимые для обоих, а обработка специальных форматов файлов в значительной степени делегирована специализированным системам управления базами данных. Многие специализированные языки также были разработаны, начиная с 1960-х годов: GPSS и Simula для дискретного моделирования; MAD, BASIC, Logo и Pascal для обучения программированию; C для системного программирования; JOSS и APL\360 для интерактивного программирования. Язык программирования может быть создан для конкретной задачи, но использоваться за пределами этой исходной области и, следовательно, считаться языком программирования общего назначения. Например, COBOL, Fortran и Lisp были созданы как DSL (для бизнес-обработки, численных расчетов и символьной обработки), но со временем стали GPL. Обратно, язык может быть разработан для общего использования, но применяться только в конкретной области на практике. Язык программирования, который хорошо подходит для решения проблемы, будь то язык общего назначения или DSL, должен минимизировать уровень необходимой детализации, оставаясь при этом достаточно выразительным в данной предметной области. Как следует из названия, язык общего назначения является "общим", поскольку он не может обеспечить поддержку специфической нотации предметной области, в то время как DSL могут быть разработаны в различных проблемных доменах для решения этой задачи. В то время как DSL обычно меньше, чем GPL, поскольку они предлагают меньший диапазон обозначений и абстракций, некоторые DSL фактически содержат целый GPL в качестве подязыка. В этих случаях DSL могут предложить выразительную силу, специфичную для предметной области, наряду с выразительной силой GPL. Языки программирования общего назначения все являются Тьюринг-полными, что означает, что они теоретически могут решить любую вычислительную задачу. Языки, специфичные для предметной области, часто также являются Тьюринг-полными, но не всегда.
Преимущества и недостатки
Программисты чаще используют языки программирования общего назначения. Согласно исследованию, C, Python и Java были наиболее часто используемыми языками программирования в 2021 году. Одним из аргументов в пользу использования языков программирования общего назначения вместо специализированных языков является то, что с этими языками знакомо большее количество людей, что избавляет от необходимости изучать новый язык. Кроме того, для многих задач (например, статистический анализ, машинное обучение и т. д.) существуют тщательно протестированные и оптимизированные библиотеки. Теоретически, наличие этих библиотек должно сближать языки общего назначения и специализированные языки. В отличие от этого, C находит применение в различных областях вычислений, таких как операционные системы, драйверы устройств, прикладное программное обеспечение и встраиваемые системы. C подходит для использования в различных областях благодаря своей универсальности. Он обеспечивает лаконичность, управление потоком выполнения, структуры данных и богатый набор операторов, но не ограничивает пользователей каким-либо конкретным контекстом использования. В результате, хотя изначально его создатели использовали для переписывания ядра операционной системы Unix, он был легко адаптирован для разработки приложений, встраиваемых систем (например, программирования микропроцессоров), видеоигр (например, Doom) и так далее. Сегодня C остается одним из самых популярных и широко используемых языков программирования.