Jump to content

Список языков программирования по типам

Это список известных языков программирования , сгруппированных по типам.

Группы пересекаются; не являются взаимоисключающими. Язык может быть включен в несколько групп.

Агентно-ориентированные языки программирования

[ редактировать ]

Агентно-ориентированное программирование позволяет разработчику создавать, расширять и использовать программные агенты , которые представляют собой абстракции объектов, которые могут отправлять сообщения другим агентам.

Языки массивов

[ редактировать ]

Языки программирования массивов (также называемые векторными или многомерными ) обобщают операции со скалярами для прозрачного применения к векторам , матрицам и многомерным массивам .

Аспектно-ориентированные языки программирования

[ редактировать ]

Аспектно-ориентированное программирование позволяет разработчикам добавлять в код новые функции, известные как «советы», без изменения самого кода; скорее, он использует pointcut для реализации совета в блоках кода.

Языки ассемблера

[ редактировать ]

Языки ассемблера напрямую соответствуют машинному языку (см. ниже ), поэтому инструкции машинного кода появляются в форме, понятной человеку, хотя между отдельным оператором и отдельной инструкцией может не быть однозначного соответствия. Языки ассемблера позволяют программистам использовать символические адреса, которые ассемблер преобразует в абсолютные или перемещаемые адреса. Большинство ассемблеров также поддерживают макросы и символические константы .

Авторские языки

[ редактировать ]

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

Языки интерфейса командной строки

[ редактировать ]

Языки интерфейса командной строки (CLI) также называются пакетными языками или языками управления заданиями. Примеры:

Скомпилированные языки

[ редактировать ]

Это языки, обычно обрабатываемые компиляторами , хотя теоретически любой язык может быть скомпилирован или интерпретирован.

Конкатенативные языки программирования

[ редактировать ]

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

Параллельные языки

[ редактировать ]

Языки передачи сообщений предоставляют языковые конструкции для параллелизма . Преобладающей парадигмой параллелизма в основных языках, таких как Java, является параллелизм с общей памятью . Параллельные языки, использующие передачу сообщений, обычно были вдохновлены исчислением процессов, таким как коммуникативные последовательные процессы (CSP) или π-исчисление .

Языки программирования с ограничениями

[ редактировать ]

Язык программирования с ограничениями — это декларативный язык программирования , в котором отношения между переменными выражаются в виде ограничений . Выполнение продолжается путем попытки найти значения переменных, которые удовлетворяют всем объявленным ограничениям.

Языки фигурных скобок

[ редактировать ]

Язык фигурных скобок или фигурных скобок имеет синтаксис, который определяет блок как операторы между фигурными скобками, также известные как фигурные скобки. {}. Этот синтаксис возник в BCPL (1966) и был C. популяризирован Многие языки с фигурными скобками происходят от C или находятся под его сильным влиянием . Примеры:

Языки потока данных

[ редактировать ]

Языки программирования потоков данных полагаются на (обычно визуальное) представление потока данных для определения программы. Часто используется для реагирования на дискретные события или для обработки потоков данных. Примеры языков потока данных включают в себя:

Языки, ориентированные на данные

[ редактировать ]

Языки, ориентированные на данные, предоставляют мощные способы поиска и управления отношениями, которые были описаны как таблицы отношений сущностей, которые отображают один набор вещей в другие наборы. [ нужна ссылка ] Примеры языков, ориентированных на данные, включают:

Языки таблицы решений

[ редактировать ]

Таблицы решений можно использовать в качестве вспомогательного средства для разъяснения логики перед написанием программы на любом языке, но в 1960-х годах был разработан ряд языков, в которых основная логика выражается непосредственно в форме таблицы решений, в том числе:

Декларативные языки

[ редактировать ]

Декларативные языки выражают логику вычислений без подробного описания потока управления. Декларативное программирование отличается от императивного программирования с помощью императивных языков программирования, где поток управления задается последовательными приказами (императивами). (Чистые) функциональные и логические языки программирования также являются декларативными и составляют основные подкатегории декларативной категории. В этом разделе перечислены дополнительные примеры, не входящие в эти подкатегории.

Встраиваемые языки

[ редактировать ]

В исходном коде

[ редактировать ]

Встраиваемые языки исходного кода встраивают небольшие фрагменты исполняемого кода в фрагмент текста произвольной формы, часто в веб-страницу.

Встроенные языки на стороне клиента ограничены возможностями браузера или предполагаемого клиента. Их цель — придать веб-страницам динамизм без необходимости повторного обращения к серверу.

Серверные встроенные языки гораздо более гибкие, поскольку практически любой язык может быть встроен в сервер. Целью внедрения фрагментов серверного кода в веб-страницу является динамическое создание дополнительной разметки; сам код исчезает при обслуживании страницы и заменяется ее выводом.

Серверная часть

[ редактировать ]
  • PHP
  • VBScript
  • Tcl — серверная часть NaviServer и важный компонент систем электронной промышленности.
  • WebDNA – посвящен веб-сайтам, управляемым базами данных.

Приведенные выше примеры специально посвящены этой цели. Большое количество других языков, таких как Erlang , Scala , Perl , Ring и Ruby , можно адаптировать (например, превратив их в модули Apache ).

Клиентская часть

[ редактировать ]

В объектном коде

[ редактировать ]

В скомпилированный исполняемый код можно встроить широкий спектр динамических языков или языков сценариев. языка По сути, объектный код интерпретатора должен быть связан с исполняемым файлом. Фрагменты исходного кода встроенного языка затем можно передать в функцию оценки в виде строк. Языки управления приложениями могут быть реализованы таким образом, если исходный код вводится пользователем. Предпочтительны языки с небольшими переводчиками.

Образовательные языки программирования

[ редактировать ]

Языки разрабатывались в первую очередь с целью преподавания и изучения программирования.

Эзотерические языки

[ редактировать ]

Эзотерический язык программирования — это язык программирования, созданный для проверки границ дизайна языков программирования, для доказательства концепции или для шутки.

Языки расширения

[ редактировать ]

Языки программирования расширений — это языки, встроенные в другую программу и используемые для использования ее функций в сценариях расширений.

Языки четвертого поколения

[ редактировать ]

Языки программирования четвертого поколения — это языки высокого уровня, построенные на основе систем баз данных. Обычно они используются в коммерческих условиях.

Функциональные языки

[ редактировать ]

Языки функционального программирования определяют программы и подпрограммы как математические функции и рассматривают их как первоклассные. Многие так называемые функциональные языки являются «нечистыми» и содержат императивные функции. Многие функциональные языки привязаны к инструментам математических вычислений. К функциональным языкам относятся:

Нечистый

[ редактировать ]

Языки описания оборудования

[ редактировать ]

В электронике язык описания аппаратного обеспечения (HDL) — это специализированный компьютерный язык, используемый для описания структуры, конструкции и работы электронных схем и, чаще всего, цифровых логических схем. Двумя наиболее широко используемыми и хорошо поддерживаемыми разновидностями HDL, используемыми в промышленности, являются Verilog и VHDL . Языки описания оборудования включают:

HDL для проектирования аналоговых схем

[ редактировать ]
  • Verilog-AMS (Verilog для аналоговых и смешанных сигналов)
  • VHDL-AMS (VHDL с расширением аналоговых/смешанных сигналов)

HDL для проектирования цифровых схем

[ редактировать ]

Императивные языки

[ редактировать ]

Императивные языки программирования могут быть мультипарадигмальными и входить в другие классификации. Вот список языков программирования, которые следуют императивной парадигме :

Языки интерактивного режима

[ редактировать ]

Языки интерактивного режима действуют как своего рода оболочка: выражения или операторы можно вводить по одному, и результат их вычисления виден сразу. Интерактивный режим также называется циклом чтения-оценки-печати (REPL).

Интерпретируемые языки

[ редактировать ]

Интерпретируемые языки — это языки программирования, на которых программы могут выполняться интерпретатором из формы исходного кода. Теоретически любой язык можно компилировать или интерпретировать, поэтому термин «интерпретируемый язык» обычно относится к языкам, которые обычно интерпретируются, а не компилируются.

Итеративные языки

[ редактировать ]

Итеративные языки построены вокруг генераторов или предлагают их .

Языки по типу управления памятью

[ редактировать ]

Языки, собранные в мусор

[ редактировать ]

Сбор мусора (GC) — это форма автоматического управления памятью. Сборщик мусора пытается освободить память, которая была выделена программой, но больше не используется.

Языки с ручным управлением памятью

[ редактировать ]

Языки с дополнительным ручным управлением памятью

[ редактировать ]
  • Реализации Ada не обязаны обеспечивать сборку мусора, но семантика языка поддерживает ее, и многие реализации ее включают.
  • Blitz BASIC (также известный как BlitzMax) обычно имеет подсчет ссылок. [12] а также поддерживает сборщик мусора. Однако он также поставляется с дополнительными утилитами для использования указателей. [13] и для непосредственного выделения и освобождения памяти. [14]
  • COBOL поддерживает указатели [15] и распределение кучи [16] начиная с COBOL 2002, вместе со сборщиком мусора. [17]
  • Cython обеспечивает дополнительное ручное управление памятью, позволяя пользователю импортировать malloc, realloc, и free из C, который затем можно использовать в коде Python. [18]
  • D предоставляет программистам полный контроль над собственным сборщиком мусора, включая возможность его полного отключения. [19]
  • По умолчанию Nim обычно собирает мусор или подсчитывает ссылки, в зависимости от его конфигурации, но программист может использовать переключатель --mm:none освободить память вручную. [20]
  • Objective-C и Objective-C++ поддерживают дополнительный подсчет ссылок и сбор мусора в качестве альтернативы ручному управлению памятью (Apple прекратила поддержку сборщика мусора).
  • Первоначально PostScript требовал от разработчиков вручную освобождать память с помощью команды save и restore операторы. PostScript Level 2 представил сборщик мусора, но его использование не является обязательным. [21]
  • Rust поддерживает дополнительный подсчет ссылок, но предпочтительнее ручное управление памятью.
  • Scala обычно автоматически управляет памятью в своих целях JVM и JavaScript. Однако компилятор Scala Native на базе LLVM поддерживает использование указателей, а также выделение кучи в стиле C (например, malloc, realloc, free) и распределение стека ( stackalloc). [22]
  • Swift обычно использует подсчет ссылок, но также позволяет пользователю вручную управлять памятью, используя malloc и free. На платформах Apple эти функции импортируются из стандартной библиотеки C (которая импортируется из Foundation, AppKit или UIKit); в Linux разработчику необходимо импортировать Glibc, и ucrt в Windows.
  • V (Vlang) для удобства пользователя по умолчанию использует GC, который можно отключить (-gc none). Пользователи могут управлять памятью вручную. Также можно использовать autofree (-autofree) или выделение арены (-prealloc).
  • По умолчанию Vala использует подсчет ссылок, но пользователь может управлять памятью вручную, если пожелает. [23]

Языки с детерминированным управлением памятью

[ редактировать ]

Языки с автоматическим подсчетом ссылок (ARC)

[ редактировать ]

Языки на основе списков – LISP

[ редактировать ]

Языки на основе списков — это тип языка со структурой данных , основанный на списковой структуре данных.

Маленькие языки

[ редактировать ]

Маленькие языки [26] обслуживать специализированную проблемную область.

  • awk – используется для манипуляций с текстовыми файлами.
  • sed — анализирует и преобразует текст
  • SQL – имеет всего несколько ключевых слов и не все конструкции, необходимые для полноценного языка программирования. [а] – многие системы управления базами данных расширяют SQL дополнительными конструкциями в качестве хранимых процедур. языка

Логические языки

[ редактировать ]

Языки , основанные на логике, определяют набор атрибутов, которые должно иметь решение, а не набор шагов для получения решения.

Известные языки, следующие этой парадигме программирования, включают:

Машинные языки

[ редактировать ]

Машинные языки напрямую исполняются процессором компьютера. Обычно они формулируются в виде битовых комбинаций, обычно представленных в восьмеричном или шестнадцатеричном формате . Каждый битовый шаблон заставляет схемы ЦП выполнять одну из фундаментальных операций аппаратного обеспечения. Активация определенных электрических входов (например, контактов корпуса ЦП для микропроцессоров) и логические настройки значений состояния ЦП управляют вычислениями процессора. Отдельные машинные языки специфичны для семейства процессоров; код машинного языка для одного семейства процессоров не может работать непосредственно на процессорах другого семейства, если рассматриваемые процессоры не имеют дополнительного оборудования для его поддержки (например, процессоры DEC VAX включают режим совместимости PDP-11). Они (по сути) всегда определяются разработчиком ЦП, а не сторонними организациями. [б] процессора Символьная версия, язык ассемблера , в большинстве случаев также определяется разработчиком. машинного кода Некоторые часто используемые наборы команд :

Макроязыки

[ редактировать ]

Макроязыки текстовой замены

[ редактировать ]

Макроязыки преобразуют один файл исходного кода в другой. «Макрос» — это по сути короткий фрагмент текста, который разрастается в более длинный (не путать с гигиеническими макросами ), возможно, с заменой параметров. Они часто используются для предварительной обработки исходного кода. Препроцессоры также могут предоставлять такие возможности, как включение файлов .

Макроязыки могут быть ограничены в работе со специально помеченными областями кода (предварительно зафиксированными # в случае препроцессора C). В качестве альтернативы они могут и не делать этого, но в этом случае часто нежелательно (например) расширять макрос, встроенный в строковый литерал , поэтому им все равно необходимо элементарное знание синтаксиса. В этом случае они часто по-прежнему применимы более чем к одному языку. Сравните с встраиваемыми в исходный код языками, такими как PHP , которые являются полнофункциональными.

  • cpp (препроцессор C)
  • m4 (первоначально от AT&T, в комплекте с Unix)
  • ML/I (макроспроцессор общего назначения)
  • ТТМ (разработан в Калифорнийском технологическом институте)

Прикладные макроязыки

[ редактировать ]

Языки сценариев, такие как Tcl и ECMAScript ( ActionScript , ECMAScript for XML , JavaScript , JScript ), были встроены в приложения. Их иногда называют «макроязыками», хотя и в несколько ином смысле, чем макросы текстовой замены, такие как m4 .

Языки метапрограммирования

[ редактировать ]

Метапрограммирование — это написание программ, которые пишут или манипулируют другими программами, включая самих себя, в качестве своих данных или выполняют часть работы, которая в противном случае выполняется во время выполнения во время компиляции . Во многих случаях это позволяет программистам сделать больше за то же время, которое им потребовалось бы для написания всего кода вручную.

Мультипарадигмальные языки

[ редактировать ]

Мультипарадигмальные языки поддерживают более одной парадигмы программирования . Они позволяют программе использовать более одного стиля программирования . Цель состоит в том, чтобы позволить программистам использовать лучший инструмент для работы, признавая, что ни одна парадигма не решает все проблемы самым простым и эффективным способом.

  • Язык программирования «1С:Предприятие» (обобщенный, императивный, объектно-ориентированный, прототипный, функциональный)
  • Ада ( параллельная , распределенная , универсальная ( метапрограммирование шаблонов ), императивная , объектно-ориентированная ( на основе классов ))
  • АЛФ ( функциональный , логический )
  • Альма-0 (ограничение, императив, логика)
  • APL (функциональный, императивный, объектно-ориентированный (на основе классов))
  • БЕТА (функциональная, императивная, объектно-ориентированная (на основе классов))
  • C++ (обобщенный, императивный, объектно-ориентированный (на основе классов), функциональный, метапрограммирование)
  • C# (обобщенный, императивный, объектно-ориентированный (на основе классов), функциональный, декларативный)
  • Цейлон (обобщенный, императивный, объектно-ориентированный (на основе классов), функциональный, декларативный)
  • ChucK (императивный, объектно-ориентированный, основанный на времени, параллельный, на лету)
  • Кобра (общий, императивный, объектно-ориентированный (на основе классов), функциональный, договорной)
  • Common Lisp (функциональный, императивный, объектно-ориентированный (на основе классов), аспектно-ориентированный (пользователь может добавлять дополнительные парадигмы, например, логику))
  • Curl (функциональное, императивное, объектно-ориентированное (на основе классов), метапрограммирование)
  • Карри (параллельный, функциональный, логический)
  • D (обобщенный, императивный, функциональный, объектно-ориентированный (на основе классов), метапрограммирование)
  • Дарт (общий, императивный, функциональный, объектно-ориентированный (на основе классов))
  • Delphi Object Pascal (обобщенный, императивный, объектно-ориентированный (на основе классов), метапрограммирование)
  • Дилан (функциональный, объектно-ориентированный (на основе классов))
  • ECMAScript (функциональный, императивный, объектно-ориентированный (на основе прототипа))
  • Эйфелев (императивный, объектно-ориентированный (на основе классов), общий, функциональный (агенты), параллельный (SCOOP))
  • F# (функциональный, универсальный, объектно-ориентированный (на основе классов), языково-ориентированный)
  • Fantom (функциональный, объектно-ориентированный (на основе классов))
  • Go , Golang (императивный, процедурный),
  • Groovy (функциональный, объектно-ориентированный (на основе классов), императивный, процедурный)
  • Гавань
  • Прыгать
  • J (функциональный, императивный, объектно-ориентированный (на основе классов))
  • Юлия (императив, множественная диспетчеризация («объектно-ориентированная»), функционал, метапрограммирование)
  • LabVIEW ( визуальный , потоковый , параллельный, модульный, функциональный, объектно-ориентированный, скриптовый)
  • Lua (функциональный, императивный, объектно-ориентированный ( на основе прототипов ))
  • Меркурий (функциональный, логический, объектно-ориентированный)
  • Метаобъектные протоколы (объектно-ориентированные (на основе классов, на основе прототипов))
  • Nemerle (функциональное, объектно-ориентированное (классовое), императивное, метапрограммирование)
  • Objective-C (императивный, объектно-ориентированный (на основе классов), рефлексивный)
  • OCaml (функциональный, императивный, объектно-ориентированный (на основе классов), модульный)
  • Oz (функциональная (оценка: нетерпеливая , ленивая ), логическая, ограничивающая , объектно-ориентированная (на основе классов), параллельная, распределенная) и кроссплатформенная система программирования Моцарта , императивная
  • Object Pascal (императивный, объектно-ориентированный (на основе классов))
  • Perl (императивный, функциональный (не может быть чисто функциональным), объектно-ориентированный, класс-ориентированный, аспектно-ориентированный (через модули))
  • PHP (императивный, объектно-ориентированный, функциональный (не может быть чисто функциональным))
  • Pike (интерпретируемый, общего назначения, высокоуровневый, кроссплатформенный, динамический язык программирования)
  • Prograph (поток данных, объектно-ориентированный (на основе классов), визуальный)
  • Python (функциональный, компилируемый, интерпретируемый, объектно-ориентированный (на основе классов), императивный, метапрограммирование, расширение, нечистый, интерактивный режим, итеративный, рефлексивный, скриптовый)
  • R (массив, интерпретируемый, нечистый, интерактивный режим, на основе списков, объектно-ориентированный на основе прототипов, сценарии)
  • Ракетка (функциональная, императивная, объектно-ориентированная (классовая) и может расширяться пользователем)
  • Раку (параллельный, конкатенативный, функциональный, общий метапрограммирование, императивный, объектно-ориентированный на отражение, конвейерный, реактивный и через ограничения библиотек, распределенный)
  • Ребол (функциональный, императивный, объектно-ориентированный (на основе прототипов), метапрограммирование (диалектный))
  • Красный (функциональный, императивный, объектно-ориентированный (на основе прототипа), метапрограммирование (диалектный))
  • ROOP (императивный, логический, объектно-ориентированный (на основе классов), на основе правил)
  • Кольцо (императивное, функциональное, объектно-ориентированное (на основе классов), метапрограммирование, декларативное, естественное)
  • Ruby (императивный, функциональный, объектно-ориентированный (на основе классов), метапрограммирование)
  • Rust (параллельный, функциональный, императивный, объектно-ориентированный, общий, метапрограммирование, компилируемый)
  • Scala (функциональная, объектно-ориентированная)
  • Seed7 (императивный, объектно-ориентированный, общий)
  • SISAL (параллельный, поток данных, функциональный)
  • Таблицы (функциональные, визуальные)
  • Swift (протокольно-ориентированный, объектно-ориентированный, функциональный, императивный, блочно-структурированный)
  • Tcl (функциональный, императивный, объектно-ориентированный (на основе классов))
    • Чай (функциональный, императивный, объектно-ориентированный (классовый))
  • V (Vlang) (функциональный, императивный, процедурный, структурированный, параллельный)
  • Windows PowerShell (функциональная, императивная, конвейерная, объектно-ориентированная (на основе классов))
  • Wolfram Mathematica ( язык Wolfram )

Численный анализ

[ редактировать ]

Несколько языков программирования общего назначения, таких как C и Python , также используются для технических вычислений. В этом списке основное внимание уделяется языкам, почти исключительно используемым для технических вычислений.

Языки, не основанные на английском языке

[ редактировать ]

Объектно-ориентированные языки на основе классов

[ редактировать ]

классов на основе Объектно-ориентированные языки программирования поддерживают объекты, определенные их классом. Определения классов включают данные членов. Передача сообщений — ключевая концепция, если не основная концепция объектно-ориентированных языков.

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

Единая отправка

[ редактировать ]

Объектно-ориентированные языки на основе прототипов

[ редактировать ]

Языки, основанные на прототипах, — это объектно-ориентированные языки, в которых удалено различие между классами и экземплярами:

Языки правил офсайда

[ редактировать ]

Языки внесторонних правил обозначают блоки кода по их отступам .

Процедурные языки

[ редактировать ]

Процедурные языки программирования основаны на концепции единицы и области действия (диапазона просмотра данных) оператора исполняемого кода. Процедурная программа состоит из одного или нескольких модулей или модулей, закодированных пользователем или предоставленных в библиотеке кодов; каждый модуль состоит из одной или нескольких процедур, также называемых функцией, подпрограммой или методом, в зависимости от языка. Примеры процедурных языков включают в себя:

Языки запросов

[ редактировать ]

Рефлексивные языки

[ редактировать ]

Рефлексивные языки программирования позволяют программам проверять и, возможно, изменять свою высокоуровневую структуру во время выполнения или во время компиляции. Это наиболее распространено в языках программирования виртуальных машин высокого уровня, таких как Smalltalk , и менее распространено в языках программирования более низкого уровня, таких C. как Языки и платформы, поддерживающие размышления:

Языки, основанные на правилах

[ редактировать ]

Языки, основанные на правилах, создают экземпляры правил, когда они активируются условиями в наборе данных. Из всех возможных активаций выбирается некоторый набор и выполняются операторы, принадлежащие этим правилам. Языки, основанные на правилах, включают: [ нужна ссылка ]

Языки сценариев

[ редактировать ]

Языки на основе стека

[ редактировать ]

Языки на основе стека — это тип языка со структурой данных , основанный на структуре данных стека .

Синхронные языки

[ редактировать ]

Языки синхронного программирования оптимизированы для программирования реактивных систем, систем, которые часто прерываются и должны быстро реагировать. Многие такие системы также называются системами реального времени и часто используются во встроенных системах .

Примеры:

Языки штриховки

[ редактировать ]

Язык шейдеров — это язык графического программирования, адаптированный для программирования эффектов шейдеров. Такие языковые формы обычно состоят из специальных типов данных, таких как «цвет» и «нормальный». Из-за разнообразия целевых рынков компьютерной 3D-графики.

Рендеринг в реальном времени

[ редактировать ]

Они обеспечивают как более высокую аппаратную абстракцию, так и более гибкую модель программирования, чем предыдущие парадигмы, в которых жестко запрограммированы уравнения преобразования и затенения. Это дает программисту больший контроль над процессом рендеринга и обеспечивает более богатый контент с меньшими затратами.

Офлайн-рендеринг

[ редактировать ]

Языки шейдеров, используемые при автономном рендеринге, обеспечивают максимальное качество изображения. Обработка таких шейдеров занимает много времени. Требуемая вычислительная мощность может быть дорогостоящей из-за их способности давать фотореалистичные результаты.

Языки обработки синтаксиса

[ редактировать ]

Эти языки помогают создавать лексические анализаторы и синтаксические анализаторы контекстно -свободных грамматик .

Системные языки

[ редактировать ]

Языки системного программирования предназначены для задач низкого уровня, таких как управление памятью или управление задачами. Язык системного программирования обычно относится к языку программирования, используемому для системного программирования; такие языки предназначены для написания системного программного обеспечения, которое обычно требует иных подходов к разработке по сравнению с прикладным программным обеспечением.

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

Язык Создатель Впервые появился Под влиянием Используется для
ЭСПОЛ Корпорация Берроуза 1961 АЛГОЛ 60 МКП
ПЛ/И IBM , ПОДЕЛИТЬСЯ 1964 АЛГОЛ 60, ФОРТРАН, добавить КОБОЛ Мультикс
ПЛ360 Никлаус Вирт 1968 АЛГОЛ 60 АЛГОЛ W
С Деннис Ричи 1969 БКПЛ Большинство ядер операционных систем , включая Windows NT и большинство Unix-подобных систем.
ПЛ/С ИБМ 196x ПЛ/И ОС/360
БЛАЖЕНСТВО Университет Карнеги-Меллон 1970 ALGOL-PL/I [33] ВМС (порции)
ПЛ/8 ИБМ 197x ПЛ/И ЭКС
ЛП/МП и ЛП/МИ ИБМ 197x ПЛ/И КПФ , ОС/400
ПЛ-6 Ханивелл, Инк. 197x ПЛ/И КП-6
СИМПЛ CDC 197x ВЕСЕЛЫЙ Подсистемы NOS , большинство компиляторов, редактор FSE
С++ Бьерн Страуструп 1979 С , Симула См. Приложения C++. [34]
Есть Джин Ичбиа , С. Такер Тафт 1983 Алгол 68 , Паскаль , C++ , Java , Эйфель Встраиваемые системы, ядра ОС, компиляторы, игры, симуляции, CubeSat , управление воздушным движением и авионика.
Д Цифровой Марс 2001 С++ Несколько доменов [35]
Nim Андреас Румпф 2008 Ада , Модуль-3 , Лисп , C++ , Object Pascal , Python , Оберон Ядра ОС, компиляторы, игры
Ржавчина Исследования Мозиллы [36] 2010 С++ , Хаскелл , Эрланг , Руби Механизм компоновки сервоприводов , Redox OS
Быстрый Apple Инк. 2014 C , Objective-C , Ржавчина macOS , для iOS разработка приложений [и]
Зиг Эндрю Келли 2016 C , C++ , LLVM IR , Go , Rust , JavaScript В качестве замены C
В (Вланг) Alexander Medvednikov 2019 C , Go , Оберон-2 , Rust , Swift , Котлин ОС Vinix, ядра ОС, компиляторы, игры

Языки трансформации

[ редактировать ]

Языки преобразования служат цели преобразования (перевода) исходного кода, указанного на определенном формальном языке, в определенный код формата назначения. Чаще всего он используется в промежуточных компонентах более сложных суперсистем, чтобы использовать внутренние результаты для ввода в последующую процедуру обработки.

Визуальные языки

[ редактировать ]

Языки визуального программирования позволяют пользователям определять программы в двухмерном (или более) виде, а не в виде одномерных текстовых строк, с помощью графических макетов различных типов. Некоторые языки программирования потоков данных также являются визуальными языками.

Вирт языки

[ редактировать ]

Ученый-компьютерщик Никлаус Вирт разработал и реализовал несколько влиятельных языков.

Языки на основе XML

[ редактировать ]

Это языки, основанные на XML или работающие с ним .

См. также

[ редактировать ]

Примечания

[ редактировать ]
  1. ^ Объекты SQL — это коллекции записей базы данных , называемые таблицами. Полный язык программирования может определять алгоритмы независимо от времени выполнения . Таким образом, можно считать, что алгоритм генерирует полезные результаты. Напротив, SQL может выбирать только записи, которые ограничены текущей коллекцией данных, имеющихся в системе, а не выдавать утверждение о правильности результата.
  2. ^ Заметным исключением могут быть советские/российские процессоры серии 1801 , которые изначально использовали собственную отечественную ISA, но позже были переработаны для совместимости с PDP-11 в соответствии с политическим решением.
  3. ^ Перейти обратно: а б Подмодели не указаны, только базовые модели.
  4. ^ Концепция объекта с традиционной объектно-ориентированной семантикой с одной отправкой не присутствует в Julia, вместо этого используется более общая множественная диспетчеризация разных типов во время выполнения.
  5. ^ Swift использует автоматический подсчет ссылок .
  1. ^ «Операторы» . Проверено 13 мая 2024 г.
  2. ^ "сворачивать" .
  3. ^ " "Аспекты в Раку" " .
  4. ^ «Кристофер Диггинс: Что такое конкатенативный язык» . Drdobbs.com. 31 декабря 2008 г. Проверено 1 июля 2013 г.
  5. ^ «Оператор подачи» .
  6. ^ Документация » Стандартная библиотека Python » Параллельное выполнение
  7. ^ «Каналы и другие механизмы» .
  8. ^ «Решение проблем» .
  9. ^ Перейти обратно: а б «Синтаксис, основанный на отступах · rsdn/nemerle Wiki» . Гитхаб . Проверено 18 марта 2022 г.
  10. ^ «Solidity: Документация Solidity 0.8.11» .
  11. ^ «Итератор» .
  12. ^ «Управление памятью · БлицМакс» . Проверено 14 июля 2023 г.
  13. ^ «Указатели · БлицМакс» . Проверено 14 июля 2023 г.
  14. ^ «БРЛ.Блиц · БлицМакс» . Проверено 14 июля 2023 г.
  15. ^ «Использование указателей в программе ILE COBOL — Документация IBM» . ИБМ . Проверено 14 июля 2023 г.
  16. ^ «HEAP — Документация IBM» . ИБМ . Проверено 14 июля 2023 г.
  17. ^ «Измененные элементы языка OO COBOL на основе SOM - Документация IBM» . ИБМ . Проверено 14 июля 2023 г.
  18. ^ «Распределение памяти — документация Cython 3.0.0.dev0» . Проверено 14 июля 2023 г.
  19. ^ «Сбор мусора» . D Язык программирования . Проверено 18 марта 2022 г.
  20. ^ «Управление памятью Нима» . Проверено 18 марта 2022 г.
  21. ^ Adobe (февраль 1999 г.). Справочник по языку PostScript, третье издание (PDF) . Издательство Аддисон-Уэсли. стр. 56–65.
  22. ^ «Взаимодействие собственного кода – документация Scala Native 0.4.14» . Проверено 5 июля 2023 г.
  23. ^ «Проекты/Vala/ReferenceHandling — GNOME Wiki!» . Архивировано из оригинала 21 января 2024 г. Проверено 21 марта 2022 г.
  24. ^ «Понимание владения — язык программирования Rust» . doc.rust-lang.org .
  25. ^ «Умные указатели — язык программирования Rust» . doc.rust-lang.org .
  26. ^ Джон Бентли (AT&T), август 1986 г., CACM 29 (8) «Маленькие языки», стр. 711-721 из его колонки «Жемчужины программирования».
  27. ^ «Метапрограммирование: Что, почему и как» . 14 декабря 2011 г.
  28. ^ «Процедурные макросы для генерации кода из атрибутов» . doc.rust-lang.org .
  29. ^ «Классы и роли» .
  30. ^ «Метаобъектный протокол (MOP)» .
  31. ^ Скабия, Марко. «Что такое АГАЛЬ» . Связь с разработчиками Adobe . Adobe . Проверено 8 мая 2018 г.
  32. ^ «Грамматики» .
  33. ^ Вульф, Вашингтон; Рассел, Д.Б.; Хаберман, А.Н. (декабрь 1971 г.). «БЛИСС: язык системного программирования». Коммуникации АКМ . 14 (12): 780–790. CiteSeerX   10.1.1.691.9765 . дои : 10.1145/362919.362936 . S2CID   9564255 .
  34. ^ «Приложения C++» .
  35. ^ «Организации, использующие язык D» . D Язык программирования .
  36. ^ «Исследования Мозиллы» . 1 января 2014 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: fd38d30f9bf134744ae3b130326dbdc6__1723063800
URL1:https://arc.ask3.ru/arc/aa/fd/c6/fd38d30f9bf134744ae3b130326dbdc6.html
Заголовок, (Title) документа по адресу, URL1:
List of programming languages by type - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)