Статья списка Викимедиа
Это список известных языков программирования, сгруппированные по типу.
Не существует общей схемы классификации языков программирования. Таким образом, во многих случаях язык указывается под несколькими заголовками.
Содержание
- 1 Языки массивов
- 2 Языки ассемблера
- 3 Языки разработки
- 4 Языки программирования с ограничениями
- 5 Языки интерфейса командной строки
- 6 Скомпилированные языки
- 7 Параллельные языки
- 8 языков с фигурными скобками
- 9 языков потока данных
- 10 языков, ориентированных на данные
- 11 языков таблиц решений
- 12 декларативных языков
- 13 встраиваемых языков
- 13.1 в исходном коде
- 13.1.1 Сторона сервера
- 13.1.2 Сторона клиента
- 13.2 В объектном коде
- 14 Образовательные языки
- 15 Эзотерические языки
- 16 Языки расширений
- 17 Языки четвертого поколения
- 18 Функциональные языки
- 19 Языки описания оборудования
- 19.1 HDL для проектирования аналоговых схем
- 19.2 HDL для проектирования цифровых схем
- 20 императивных языков
- 21 языков интерактивного режима
- 22 интерпретируемых языка
- 23 итеративных языка
- 24 языков по типу управления памятью
- 24.1 Сборщик мусора d языки
- 24.2 Языки с ручным управлением памятью
- 24.3 Языки с детерминированным управлением памятью
- 24.4 Языки с автоматическим подсчетом ссылок (ARC)
- 25 Языки на основе списков - LISP
- 26 Маленькие языки
- 27 Языки на основе логики
- 28 Машинные языки
- 29 Макроязыки
- 29.1 Языки макросов с текстовой заменой
- 29.2 Языки прикладных макросов
- 30 Языки метапрограммирования
- 31 Многопарадигмальные языки
- 32 Числовые анализ
- 33 неанглийских языка
- 34 объектно-ориентированных языков на основе классов
- 34.1 множественная отправка
- 34.2 одиночная отправка
- 35 объектно-ориентированных языков на основе прототипов
- 36 выкл. языки сторонних правил
- 37 процедурные языки
- 38 языки запросов
- 39 рефлексивный язык
- 40 основанные на правилах языки
- 41 языки сценариев
- 42 языки на основе стека
- 43 синхронные языки
- 44 языка шейдинга
- 44.1 Визуализация в реальном времени
- 44.2 Автономная визуализация
- 45 Языки обработки синтаксиса
- 46 Системные языки
- 47 Языки преобразования
- 48 Визуальные языки
- 49 Языки Wirth
- 50 языков на основе XML
- 51 См. Также
- 52 Примечания
- 53 Ссылки
Языки массивов
Программирование массивов (также называемые векторными или многомерными) языки обобщают операции над скалярами для прозрачного применения к векторам, матрицам и многомерные массивы.
Ассемблерные языки
Ассемблер языки напрямую соответствуют машинному языку (см. ниже), хотя между отдельным оператором и отдельной инструкцией может не быть отображения 1-1, поэтому инструкции машинного кода появиться в форме, понятной h уманс. Языки ассемблера позволяют программистам использовать символические адреса, которые ассемблер преобразует в абсолютные или перемещаемые адреса. Большинство ассемблеров также поддерживают макросы и символические константы.
языки разработки
язык разработки - это язык программирования, используемый для создания учебных пособий, веб-сайтов и других интерактивные компьютерные программы.
Языки программирования с ограничениями
A язык программирования с ограничениями является декларативным язык программирования, где отношения между переменными выражаются как ограничения. Выполнение продолжается путем попытки найти значения переменных, которые удовлетворяют всем заявленным ограничениям.
Языки интерфейса командной строки
Языки интерфейса командной строки (CLI) также называются языками пакетной обработки или языками управления заданиями. Примеры:
- 4DOS (расширенная оболочка командной строки для IBM PC )
- bash (оболочка Bourne-Again из GNU, Free Software Foundation (FSF))
- CLIST (MVS Список команд)
- CMS EXEC
- csh и tcsh (C-подобная оболочка из Билл Джой в UC Беркли )
- DIGITAL Command Language (DCL) - стандартный язык интерфейса командной строки для VMS (DEC, Compaq, HP )
- пакетный язык DOS (стандартный интерфейс командной строки / пакетный язык для IBM PC с операционными системами DOS, популярный до Windows )
- EXEC 2
- Expect (инструмент для автоматизации и тестирования Unix )
- fish (Unix shell)
- Hamilton C shell (C shell для Windows)
- JCL (перфокарта -ориентированный язык управления пакетами для мейнфреймов семейства IBM System / 360 )
- ksh (стандартный Оболочка Unix, написанная Дэвидом Корном )
- Rc (оболочка командной строки для Plan 9 )
- Rexx
- sh (стандартный Unix s черт возьми, написано Стивеном Р. Борном )
- TACL (тандемный расширенный командный язык)
- Пакетный язык Windows (язык пакетного файла Windows в понимании COMMAND.COM и CMD.EXE )
- Windows PowerShell (.NET -based CLI)
- zsh (Unix shell)
Скомпилировано languages
Это языки, обычно обрабатываемые компиляторами, хотя теоретически любой язык может быть скомпилирован или интерпретирован. См. Также скомпилированный язык.
- ActionScript
- Ada (многоцелевой язык)
- ALGOL (очень влиятельный дизайн языка; второй компилятор языка высокого уровня)
- SMALL Machine ALGOL Like Language
- Ballerina (скомпилирован в байт-код, специфичный для Ballerina Runtime (BVM))
- BASIC (некоторые диалекты, включая первую версию Dartmouth BASIC)
- BCPL
- C (один из наиболее широко используемых процедурных языков)
- C ++ (широко используемый многопарадигмальный язык, производный от C)
- C# (скомпилирован в CIL, генерирует собственный изображение во время выполнения)
- Ceylon (скомпилировано в JVM байт-код )
- CHILL
- CLIPPER 5.3 (язык программирования для программного обеспечения на основе DOS)
- CLEO (чистый язык для выражения приказов) на британских компьютерах Leo
- Clojure (скомпилирован в JVM байт-код )
- COBOL
- Cobra
- Common Lisp
- Crystal
- Curl
- D (от реинжиниринга C ++)
- DASL компилируется в в Java, JavaScript, JSP, Flex и т. д. как файл.war
- Delphi (система разработки Borland Object Pascal )
- DIBOL (Цифровой интерактивный бизнес-ориентированный язык)
- Дилан
- eC
- Эйфель (объектно-ориентированный язык, разработанный Бертраном Мейером )
- Elm
- Emacs Lisp
- Emerald
- Erlang
- F# (скомпилирован в CIL, для создания образа среды выполнения)
- Factor
- Fortran (первый скомпилированный язык высокого уровня от IBM 's John Backus )
- GAUSS
- Go
- Gosu (скомпилировано в JVM байт-код )
- Groovy (скомпилировано в JVM байт-код )
- Haskell
- Harbour
- Java (обычно компилируется в JVM байт-код, хотя существуют предварительные компиляторы (AOT) которые компилируются в машинный код )
- JOVIAL
- Julia (скомпилирован на лету в машинный код)
- Kotlin (Kotlin / Native использует LLVM для создания собственного двоичные файлы)
- LabVIEW
- Mercury
- Mesa
- Nemerle (скомпилирован в байт-код промежуточного языка)
- Nim
- Objective-C
- P
- Pascal (большинство реализаций)
- PL / I (язык общего назначения, первоначально для Мэйнфреймы IBM)
- Plus
- Python (компилируется в промежуточный байт-код VM )
- RPG (генератор программ отчетов)
- Rust
- Scala (скомпилирован в JVM байт-код )
- Схема (некоторые реализации, например Gambit)
- SequenceL - чисто функциональный, с автоматическим распараллеливанием и без гонок
- Simula (первый объектно-ориентированный язык, надмножество ALGOL 60 )
- Smalltalk компилируется в независимый от платформы байт-код для виртуальной машины
- Swift
- ML
- Turing
- Vala (компилятор для система типов GObject)
- Visual Basic (используйте Common Intermediate Language (CIL), который JIT скомпилирован в собственную среду выполнения)
- Visual FoxPro
- Visual Prolog
- Xojo
Параллельные языки
Передача сообщений языки предоставляют языковые конструкции для параллелизма. Преобладающей парадигмой параллелизма в основных языках, таких как Java, является разделяемая память параллелизм. Параллельные языки, использующие передачу сообщений, как правило, были вдохновлены вычислениями процессов, такими как взаимодействующие последовательные процессы (CSP) или π-исчисление.
- Ada - multi -цель language
- Alef - параллельный язык с потоками и передачей сообщений, используемый для системного программирования в ранних версиях Plan 9 от Bell Labs
- Ateji PX расширение языка Java для параллелизма
- Ballerina - язык, предназначенный для реализации и оркестровки микросервисов. Предоставляет модель параллелизма, основанную на сообщениях.
- ChucK - предметно-ориентированный язык программирования для аудио, точный контроль над параллелизмом и синхронизацией
- Cilk - параллельный C
- Cω - C Omega, исследование язык, расширяющий C #, использует асинхронную связь
- Clojure - диалект Lisp для виртуальной машины Java
- Chapel
- Co-array Fortran
- Concurrent Pascal (Бринч-Хансен)
- Concurnas, многопарадигмальный язык программирования для параллельных, распределенных и реактивных приложений, с синтаксисом, подобным Python, с поддержкой вычислений на GPU и управлением памятью вне кучи.
- Curry
- E - использует обещания, обеспечивает невозможность возникновения взаимоблокировок
- Eiffel (с помощью механизма SCOOP, Simple Concurrent Object-Oriented Computing)
- Elixir (выполняется на Erlang VM)
- Emerald - использует потоки и мониторы
- Erlang - использует асинхронную передачу сообщений без общего доступа
- Схема гамбита - с использованием Term библиотека ite
- Go
- Haskell - поддерживает параллельное, распределенное и параллельное программирование на нескольких машинах
- Java
- Join Java - параллельный язык на основе Java
- X10
- Julia
- Joule - язык потока данных, общается посредством передачи сообщений
- Limbo - родственник Alef, используется для системного программирования в Inferno (операционная система)
- MultiLisp - Вариант схемы, расширенный для поддержки параллелизма
- occam - в значительной степени подвержен влиянию Последовательных процессов с коммуникацией (CSP)
- occam-π - современный вариант occam, который включает идеи из π-исчисления
- Orc
- Oz Милнера - многопарадигмального языка, поддерживает параллелизм с разделяемым состоянием и передачей сообщений, а также фьючерсы, а также систему программирования Моцарта кроссплатформенный Oz
- P
- Pict - по сути исполняемая реализация π-исчисления Милнера
- Rust
- Scala - реализует в JVM акторов в стиле Erlang
- SequenceL - чистый y функциональный, с автоматическим распараллеливанием и без гонок
- SR - язык исследования
- Unified Parallel C
- XProc - язык обработки XML, обеспечивающий параллелизм
Языки с фигурными скобками
с фигурными скобками или языки программирования с фигурными скобками имеют синтаксис, который определяет блоки операторов с помощью фигурных скобок или скобок {
и }
. Этот синтаксис возник в BCPL (1966) и был популяризирован в C. Многие языки с фигурными скобками произошли от C. Примеры языков с фигурными скобками:
- ABCL / c +
- Alef
- AWK
- B
- bc
- BCPL
- Ballerina
- C - разработан примерно в 1970 г. в Bell Labs
- C ++
- C#
- Цейлон
- ChucK - язык программирования аудио
- Cilk - параллельный C для многопоточного параллельного программирования
- Cyclone - более безопасный вариант C
- D
- Dart
- DASL - на основе Java
- E
- eC
- ECMAScript
- GLSL
- HLSL
- ICI
- Java
- LPC
- MEL
- Nemerle - объединяет функции C # и ML, обеспечивает возможности расширения синтаксиса
- PCASTL
- Perl
- PHP
- Pico
- Pike
- PowerShell
- R
- Rust
- S-Lang
- Scala
- sed
- SuperCollider
- Swift
- UnrealScript
- Yorick
языки потока данных
языки программирования потока данных полагаются на (обычно визуальное) представление потока данных для указания программы. Часто используется для реагирования на дискретные события или для обработки потоков данных. Примеры языков потоков данных включают:
Языки, ориентированные на данные
Языки, ориентированные на данные, предоставляют мощные способы поиска и управления отношениями, которые были описаны как таблицы отношений сущностей, которые отображают один набор вещей в другие наборы. Примеры языков, ориентированных на данные, включают:
- Clarion
- Clipper
- dBase язык доступа к реляционной базе данных
- Gremlin
- MUMPS (стандартный ANSI язык общего назначения со специализацией для работы с базами данных)
- Caché (аналогично MUMPS)
- RDQL
- SPARQL
- SQL
- Tutorial D - см. Также Третий манифест
- Visual FoxPro - родной движок СУБД, объектно-ориентированный, RAD
- WebDNA
- Wolfram Language
Языки таблиц решений
Таблицы решений могут использоваться в качестве помощи для разъяснения логики перед написанием программы на любом языке, но в 1960-х годах был разработан ряд языков, в которых основная логика выражается непосредственно в форме таблицы решений, включая:
Декларативные языки
Декларативные языки выражают логику вычислений без подробного описания потока управления. Декларативное программирование отличается от императивного программирования через императивные языки программирования, где поток управления определяется последовательными порядками (императивами). (Чистый) функциональные и основанные на логике языки программирования также являются декларативными и составляют основные подкатегории декларативной категории. В этом разделе перечислены дополнительные примеры, не относящиеся к этим подкатегориям.
Встраиваемые языки
В исходном коде
Встраиваемые исходные языки встраивают небольшие фрагменты исполняемого кода внутри фрагмента текста произвольной формы, часто веб-страницы.
Клиентские встроенные языки ограничены возможностями браузера или предполагаемого клиента. Они стремятся обеспечить динамизм веб-страниц без необходимости повторного подключения к серверу.
Серверные встроенные языки - это гораздо больше. гибкий, так как почти любой язык может быть встроен в сервер. Целью внедрения фрагментов серверного кода в веб-страницу является динамическое создание дополнительной разметки; сам код исчезает при обслуживании страницы и заменяется ее выводом.
На стороне сервера
- PHP
- VBScript
- SMX - предназначен для веб-страниц
- Tcl - на стороне сервера в NaviServer и является важным компонентом в электронике отраслевые системы
- WebDNA - посвящены веб-сайтам, управляемым базами данных
Приведенные выше примеры специально предназначены для этой цели. Большое количество других языков, таких как Erlang, Scala, Perl и Ruby, можно адаптировать (например, сделав в модули Apache ).
Клиентская сторона
В объектном коде
Широкий спектр динамических или языки сценариев могут быть встроены в скомпилированный исполняемый код. По сути, объектный код для языкового интерпретатора необходимо связать с исполняемым файлом. Фрагменты исходного кода для встроенного языка затем могут быть переданы в функцию оценки в виде строк. Таким образом могут быть реализованы языки управления приложениями, если исходный код вводится пользователем. Предпочтительны языки с небольшими переводчиками.
Образовательные языки
Языки, разработанные в первую очередь для обучения программированию.
Эзотерические языки
An эзотерический язык программирования - это язык программирования, разработанный как проверка границ проектирования языков программирования, доказательство концепции или шутка.
Языки расширений
Языки программирования расширений - это языки, встроенные в другую программу и используется для использования его функций в сценариях расширения.
- AutoLISP (специфический в AutoCAD )
- BeanShell
- CAL
- C / AL (C / SIDE)
- Guile
- Emacs Lisp
- JavaScript и некоторые диалекты, например, JScript
- Lua (встроено во многие игры)
- OpenCL (расширение C и C ++ для использования GPU и параллельных расширений CPU)
- OptimJ (расширение Java с поддержкой языка для написания моделей оптимизации и мощных абстракций для обработки больших объемов данных)
- Perl
- Pike
- Python (встроенный в Maya, Blender и другие пакеты трехмерной анимации)
- Rexx
- Ruby (Google SketchUp)
- S-Lang
- SQL
- Squirrel
- Tcl
- сценарий Vim
- Visual Basic для приложений (VBA)
- Windows PowerShell
Языки четвертого поколения
Языки программирования четвертого поколения - это языки высокого уровня, созданные на основе систем баз данных. Обычно они используются в коммерческой среде.
- 1С: Язык программирования для предприятий
- ABAP
- CorVision
- CSC GraphTalk
- CA-IDEAL (интерактивная среда разработки для жизни приложения) для использования с CA-DATACOM / DB
- Easytrieve генератор отчетов (теперь CA-Easytrieve Plus)
- FOCUS
- IBM Informix-4GL
- LINC 4GL
- MAPPER (Unisys / Sperry ) - теперь часть BIS
- MARK-IV (Sterling / Informatics ) теперь VISION: BUILDER of CA
- NATURAL
- Progress 4GL
- PV- Wave
- LiveCode (не основан на базе данных; тем не менее, цель - работать на более высоком уровне абстракции, чем 3GL)
- SAS
- SQL
- Ubercode (VHLL, или Язык очень высокого уровня)
- Uniface
- Visual DataFlex
- Visual FoxPro
- xBase
Функциональные языки
Функциональное программирование языки определяют программы и подпрограммы как математические функции и рассматривают их как первоочередные. класс. Многие так называемые функциональные языки являются «нечистыми» и содержат императивные особенности. Многие функциональные языки привязаны к инструментам математических вычислений. Функциональные языки включают:
Pure
Impure
Языки описания оборудования
В электронике - оборудование язык описания (HDL) - это специализированный компьютерный язык, используемый для описания структуры, конструкции и работы электронных схем, и чаще всего цифровых логических схем. Двумя наиболее широко используемыми и хорошо поддерживаемыми разновидностями HDL, используемыми в промышленности, являются Verilog и VHDL. Языки описания оборудования включают:
HDL для проектирования аналоговых схем
- Verilog-AMS (Verilog для аналоговых и смешанных сигналов)
- VHDL-AMS (VHDL с аналоговыми / смешанными- Расширение сигнала)
HDL для проектирования цифровых схем
Императивные языки
Императивные языки программирования могут быть мультипарадигмальными и присутствовать в других классификациях. Вот список языков программирования, которые следуют обязательной парадигме :
языки интерактивного режима
Языки интерактивного режима действуют как своего рода оболочка: выражения или утверждения можно вводить по одному, и результат их оценки виден сразу. Интерактивный режим также называется циклом чтения – оценки – печати (REPL).
- APL
- BASIC (некоторые диалекты)
- Clojure
- Common Lisp
- Dart (с инструментами разработчика Observatory или Dartium)
- ECMAScript
- Erlang
- Elixir (с iex)
- F#
- Fril
- GAUSS
- Groovy
- Haskell ( с интерпретатором GHCi или Hugs)
- IDL
- J
- Java (начиная с версии 9)
- Julia
- Lua
- MUMPS (стандартный язык общего назначения ANSI)
- Maple
- Mathematica (язык Wolfram )
- MATLAB
- ML
- OCaml
- Perl
- PHP
- Pike
- PostScript
- Prolog
- Python
- PROSE
- R
- REBOL
- Rexx
- Ruby (с IRB )
- Scala
- Scheme
- Smalltalk (где угодно в среде Smalltalk)
- S-Lang (с оболочкой S-Lang, slsh)
- Speakeasy
- Swift
- Tcl (с оболочкой Tcl, tclsh)
- оболочкой Unix
- Windows PowerShell (.NET -based CLI)
- Visual FoxPro
Интерпретируемые языки
I Интерпретируемые языки - это языки программирования, на которых программы могут выполняться интерпретатором из формы исходного кода. Теоретически любой язык может быть скомпилирован или интерпретирован, поэтому термин интерпретируемый язык обычно относится к языкам, которые обычно интерпретируются, а не компилируются.
- Ant
- APL
- AutoHotkey язык сценариев
- AutoIt язык сценариев
- BASIC (некоторые диалекты)
- Язык программирования для бизнеса (PL / B, ранее DATABUS, в более поздних версиях добавлена необязательная компиляция)
- DM
- Eiffel (с помощью технологии Melting Ice в EiffelStudio )
- Emacs Lisp
- GameMaker Language
- Groovy
- J
- Julia ( скомпилирован на лету в машинный код , но транспилятор Julia2C существует)
- JavaScript
- Lisp (ранние версии, до 1962 года и некоторые экспериментальные; производственные системы Lisp являются компиляторами, но многие из них по-прежнему предоставляют интерпретатор при необходимости)
- LPC
- Lua
- MUMPS (стандартный язык общего назначения ANSI)
- Maple
- Mathematica
- MATLAB
- OCaml
- Pascal (ранние реализации)
- PCASTL
- Perl
- PHP
- PostScript
- PowerShell
- PROSE
- Python
- Rexx
- R
- REBOL
- Ruby
- S-Lang
- Speakeasy
- Standard ML (SML)
- Spin
- Tcl
- T ea
- TorqueScript
- thinBasic язык сценариев
- VBScript
- Windows PowerShell - CLI на основе.NET
- Wolfram Language
- Некоторые языки сценариев - ниже
Итерационные языки
Итеративные языки построены на основе или предлагают генераторы.
Языки по типу управления памятью
Языки со сборкой мусора
Языки с ручным управлением памятью
Языки с детерминированным управлением памятью
Языки с автоматическим подсчетом ссылок (ARC)
Языки на основе списков - LISP
Языки на основе списков являются типом языков, основанных на структуре данных list.
Маленькие языки
Маленькие языки обслуживают специализированную проблемную область.
- awk - используется для обработки текстовых файлов.
- Comet - используется для решения сложных комбинаторных задач оптимизации в таких областях, как распределение ресурсов и планирование
- sed - анализирует и преобразует текст
- SQL - имеет всего несколько ключевых слов и не все конструкции, необходимые для полноценного языка программирования - многие системы управления базами данных расширяют SQL дополнительными конструкциями как a хранимая процедура язык
Языки на основе логики
Языки на основе логики определяют набор атрибутов, которые должно иметь решение, а не набор шагов для получения решения.
Известные языки, следующие этой парадигме программирования, включают:
- ALF
- Alma-0
- CLACL (CLAC-Language)
- Curry
- Fril
- Janus
- λProlog (язык логического программирования с полиморфной типизацией, модульным программированием и программированием высшего порядка)
- Oz и система программирования Моцарта кроссплатформенность Oz
- Prolog (формулирует данные и механизм оценки программы в виде специальной формы математической логики, называемой Логика Хорна, и общий механизм проверки, называемый логическим разрешением )
- Меркурий (на основе Пролога)
- Визуальный Пролог (объектно-ориентированное расширение Prolog)
- ROOP
Машинные языки
Машинные языки напрямую выполняются процессором компьютера. Обычно они формулируются в виде битовых шаблонов, обычно представленных в восьмеричном или шестнадцатеричный. Каждая битовая комбинация заставляет схемы в ЦП выполнять одну из основных операций оборудования. Активация определенных электрических Все входы (например, контакты корпуса ЦП для микропроцессоров) и логические настройки для значений состояния ЦП управляют вычислениями процессора. Отдельные машинные языки специфичны для семейства процессоров; машинный код для одного семейства процессоров не может работать непосредственно на процессорах другого семейства, если рассматриваемые процессоры не имеют дополнительного оборудования для его поддержки (например, процессоры DEC VAX включают режим совместимости PDP-11). Они (по сути) всегда определяются разработчиком ЦП, а не третьими сторонами. Символическая версия, язык ассемблера процессора, в большинстве случаев также определяется разработчиком. Некоторые часто используемые наборы инструкций машинного кода :
- ARM
- Исходные 32-битные
- 16-битные инструкции Thumb (используется подмножество или регистры)
- 64 -бит (значительное изменение архитектуры, больше регистров)
- DEC :
- 18-бит: PDP-1, PDP-4, PDP-7, PDP-9, PDP-15
- 12-битный: PDP-5, PDP-8, LINC-8, PDP-12
- 36-бит: PDP-6, PDP-10, DECSYSTEM-20
- 16-бит: PDP-11 (под влиянием VAX и M68000)
- 32-бит: VAX
- 64-бит: Alpha
- Intel 8008, 8080 и 8085
- x86 :
- 16-битный x86, впервые использованный в Intel 8086
- Intel 8086 и 8088 (последний использовался в первом и раннем IBM PC )
- Intel 80186
- Intel 80286 (первый процессор x86 с защищенным режимом, использовался в IBM AT )
- IA-32, представленный в 80386
- x86-64 Исходная спецификация была создана на AMD. Существуют варианты поставщиков, но они по сути одинаковы:
- IBM
- MIPS
- Motorola 6800
- Семейство Motorola 68000 (процессоры, используемые в ранних компьютерах Apple Macintosh и ранних Sun )
- Технология MOS 65xx
- National Semiconductor NS320xx
- POWER, впервые использовался в IBM RS / 6000
- Sun Microsystems (сейчас Oracle ) SPARC
- UNIVAC
- 30-битные компьютеры: 490, 492, 494, 1230
- 36-битные компьютеры
- MCST Эльбрус 2000
Макроязыки
Макроязыки текстовой подстановки
Макро языки преобразуют один файл исходного кода в другой. «Макрос» - это, по сути, короткий фрагмент текста, который расширяется в более длинный (не путать с гигиеническими макросами ), возможно, с подстановкой параметров. They are often used to preprocess source code. Preprocessors can also supply facil Такие вещи, как включение файла.
Макроязыки могут быть ограничены воздействием на специально помеченные области кода (предварительно зафиксированные с помощью #
в случае препроцессора C). В качестве альтернативы, они не могут, но в этом случае по-прежнему часто нежелательно (например) расширять макрос, встроенный в строковый литерал , поэтому им все еще требуется элементарное знание синтаксиса. В этом случае они часто применимы более чем к одному языку. В отличие от языков с встраиваемым исходным кодом, таких как PHP, которые являются полнофункциональными.
- cpp (препроцессор C)
- m4 (первоначально от ATT, в комплекте с Unix)
- ML / I (макропроцессор общего назначения)
Языки прикладных макросов
Языки сценариев, например Tcl и ECMAScript (ActionScript, ECMAScript для XML, JavaScript, JScript ) были встроены в приложения. Иногда их называют «макроязыками», хотя в несколько ином смысле, чем макросы с текстовой подстановкой, такие как m4.
языки метапрограммирования
метапрограммирование - это написание программ, которые пишут или манипулируют другими программами, включая самих себя, в качестве своих данные или которые выполняют часть работы, которая в противном случае выполняется во время выполнения во время времени компиляции. Во многих случаях это позволяет программистам делать больше за то же время, которое им потребовалось бы для написания всего кода вручную.
Многопарадигмальные языки
Многопарадигмальные языки поддерживают более одной парадигмы программирования. Они позволяют программе использовать более одного стиля программирования. Цель состоит в том, чтобы позволить программистам использовать лучший инструмент для работы, признавая, что ни одна парадигма не решает все проблемы самым простым и эффективным способом.
- язык программирования 1С: Предприятие (общий, императивный, объектно-ориентированный, прототипный, функциональный)
- Ada (параллельный, распределенный, общий (шаблонное метапрограммирование ), императивный, объектно-ориентированный (на основе классов ))
- ALF ( функциональный, логический )
- Alma-0 (ограничение, императив, логика)
- APL (функциональный, императивный, объектно-ориентированный (на основе классов))
- БЕТА (функциональный, императивный, объектно-ориентированный (на основе классов))
- C ++ (общий, императивный, объектно-ориентированный (на основе классов), функциональный, метапрограммирование)
- C# (общий, императивный, объектно-ориентированный (на основе классов), функциональный, декларативный)
- Ceylon (общий, императивный, объектно-ориентированный (на основе классов), функциональный, декларативный)
- ChucK (императивный, объектно-ориентированный, основанный на времени, параллельный, на лету)
- Cobra (общий, императивный, объектно-ориентированный (на основе классов), функциональный, договорный)
- Common Lisp (функциональный, императивный, объектно-ориентированный (на основе классов), аспектно -ориентированный (пользователь может добавить дополнительные парадигмы, например, логику))
- Curl (функциональный, императивный, объектно-ориентированный. ориентированный (на основе классов), метапрограммирование)
- Карри (параллельный, функциональный, логический)
- D (общий, императивный, функциональный, объектно-ориентированный (на основе классов), метапрограммирование)
- Delphi Object Pascal (общий, императивный, объектно-ориентированный (на основе классов), метапрограммирование)
- Дилан (функциональный, объектно-ориентированный (на основе классов))
- eC (общий, императивный, объектно-ориентированный (на основе классов))
- ECMAScript (функциональный, императивный, объектно-ориентированный (на основе прототипов))
- Eiffel (императивный, объектно-ориентированный (на основе классов), общий, функциональный (агенты), параллельный (SCOOP))
- F# (функциональный, общий, объектно-ориентированный (на основе классов), ориентированный на язык)
- Fantom (функциональный, объектно-ориентированный (на основ е классов))
- Go (императивный, процедурный),
- Groovy (функциональный, объектно-ориентированный (на основе классов), императивный, процедурный)
- Harbour
- Hop
- J (функциональный, императивный, объектно-ориентированный (на основе классов))
- Юлия (императивная, множественная отправка («объектно-ориентированная»), функциональная, метапрограммирование)
- LabVIEW (поток данных, визуальный )
- Lava (объектно-ориентированный (на основе классов), визуальный)
- Lua (функциональный, императивный, объектно-ориентированный (на основе прототипов ))
- Me rcury (функциональный, логический, объектно-ориентированный)
- Протоколы метаобъектов (объектно-ориентированный (на основе классов, на основе прототипов))
- Nemerle ( функциональный, объектно-ориентированный (на основе классов), императив, метапрограммирование)
- Objective-C (императивный, объектно-ориентированный (на основе классов), отражающий)
- OCaml (функциональный, императивный, объектно-ориентированный (на основе классов)), модульный)
- Oz (функциональный (оценка: нетерпеливый, ленивый ), логический, ограничение, императивный, объектно-ориентированный (на основе классов), параллельный, распределенный) и Mozart Programming System кроссплатформенный Oz
- Object Pascal (императивный, объектно-ориентированный (на основе классов))
- Perl (императивный, функциональный (не может быть чисто функциональным), объектно-ориентированным, ориентированным на классы, аспектно-ориентированным (через модули))
- PHP (императивный, объектно -ориентированный, функциональный (не может быть чисто функциональным))
- Pike
- Prograph (поток данных, объектно-ориентированный (на основе классов), визуальный)
- Python (функциональный, скомпилированный, интерпретирующий ed, объектно-ориентированный (на основе классов), императивный, метапрограмми рование, расширение, нечистый, интерактивный режим, итеративный, отражающий, скриптовый)
- R (массив, интерпретируемый, нечистый, интерактивный режим, основанный в списке, объектно-ориентированный прототип- на основе сценариев)
- Racket (функциональный, императивный, объектно-ориентированный (на основе) и может быть предоставен пользовательскими классами)
- REBOL (функциональный, императивный, объектно-ориентированный (прототип- на основе), метапрограммирование (диалект))
- Красный (функциональный, императивный, объектно-ориентированный (на основе прототипа), метапрограммирование (диалект))
- ROOP (императивный, логический, объектно-ориентированный (на основе классов), на основе правил)
- Ruby (императивный, функциональный, объектно-ориентированный (на основе классов), метапрограммирование)
- Rust (параллельный, функциональный, императивный, объектно-ориентированный, общий, метапрограммирование, скомпилированный)
- Scala ( функц иональный, объектно-ориентированный)
- Seed7 (императивный, объектно-ориентированный, универсальный)
- SISAL (параллельный, поток данных, функциональный)
- Таблицы (функция конечный, визуальный)
- Swift (протокольно-ориентированный, объектно-ориентированный, функциональный, императивный, блочно-структурированный)
- Tcl (функциональный, императивный, объектно-ориентированный (на основе классов))
- Tea (функциональный, императивный, объектно-ориентированный (на основе классов))
- Windows PowerShell (функциональный, императивный, конвейерный, объектно-ориентированный (на основе классов))
- Wolfram Language
Численный анализ
Несколько языков программирования общего назначения, таких как C и список Python, также используются для технических вычислений, этот посвящен почти исключительно используемым языкам для технических вычислений.
Неанглийские языки
Объектно-ориентированные языки на основе классов
На основе классов Языки объектно-ориентированного программирования база объектов определяется их классом. Определения включают данные членов. Передача сообщений является ключевым понятием (если не передает понятием) объектно-ориентированных языков.
Полиморфные функции, параметры классом некоторых из их аргументов, обычно называются методами. На языках с разовая рассылка классы обычно также включают определение методов. На языках с множественной отправкой методы универсальными функциями. Существуют исключения, когда методы однократная отправка являются универсальными функциями (например, объектная система Bigloo ).
На основе прототипов языков - это объектно-ориентированные языки, в которых различие между классами и экземплярами было удалено:
Off-side rule languages
Внешнее правило языки обозначают блоки кода их отступом.
- ISWIM, абстрактным языком, который ввел правило
- ABC, родительский элемент Python
- Miranda, родитель Haskell
- Эликсир (, do: блоки)
- F#
- Ним
- Оккам
- SPIN
Процедурные языки
Процедурные языки программирования основаны на концепции и области действия (диапазон просмотра данных) оператор исполняемого кода. Процедурная программа состоит из одного или нескольких модулей, либо закодированных, либо предоставленных в библиотеке кода; каждый модуль состоит из одной или нескольких процедур, называемых функцией, подпрограммой, подпрограммой или методом, в зависимости от языка. Примеры процедурных языков включают:
- Ада (многоцелевой язык)
- АЛГОЛ (очень влиятельный дизайн языка; второй компилятор языка высокого уровня)
- МАЛЕНЬКИЙ Машинный АЛГОЛ, подобный языку
- Alma-0
- BASIC (им не хватает большей части модульности в (особенно) версии примерно до 1990 года)
- BCPL
- BLISS
- C
- C ++ (C с объектами плюс многое другое, например, обобщения через STL)
- C# (аналогично Java / C ++)
- Ceylon
- CHILL
- ChucK (синтаксис, подобный C / Java, с новыми элементами синтаксиса для времени и параллелизма)
- COBOL
- Cobra
- ColdFusion
- Комбинированный язык программирования (CPL)
- Curl
- D
- Распределенный язык в спецификации приложений (DASL) (объединяет декларативное программирование и императивное программирование )
- eC
- ECMAScript
- Eiffel
- Fortran (улучшенная модульность в более поздних стандартах)
- GAUSS
- Go
- Harbour
- HyperTalk
- Java
- JOVIAL
- Julia
- Language H
- Lasso
- Modula-2 (в основном на основе модулей)
- Mathematica
- MATLAB
- Mesa
- MUMPS (первый выпуск был более модульным, чем другие языки того времени; с тех пор стандарт еще более модульным)
- Nemerle
- Nim
- Oberon, Oberon-2 (улучшенные, меньшие, более быстрые, безопасные дополнения для Modula-2)
- OCaml
- Occam
- Oriel
- Pascal (преемник ALGOL 60, предшественник Modula-2)
- PCASTL
- Perl
- Pike
- PL / C
- PL / I (большой язык общего назначения, установлен для Мэйнфреймы IBM)
- Plus
- PowerShell
- PROSE
- Python
- R
- Rapira
- RPG (доступно только в IBM System i компьютеры среднего уровня)
- Rust
- S-Lang
- VBScript
- Visual Basic
- Visual FoxPro
- Wolfram Language
- Microsoft Dynamics AX (X ++)
Языки запросов
Рефлексивный язык
Рефлексивный языки позволяют программам проверять и, возможно, изменить свою измененную форму высокого уровня во время выполнения или во время компиляции. Это наиболее часто встречается на языках программирования виртуальных машин высокого уровня, таких как Smalltalk, и менее распространено на языках программирования нижнего уровня, таких как C. Языки и платформу, поддерживающие отражение:
Языки, основанные на правилах
Основанные на правилах правила при активации в наборе данных. Из всех активаций выбирается некоторый набор и выполняются операторы, принадлежащие этим правилам. К языкам на основе системы защиты:
Языки сценариев
"Язык сценариев "имеет два явно разных, но на самом деле похожих значений. Много сложных приложений, встроенных программ, позволяющих пользователям автоматизировать задачи, которые обычно включают вызов или передачу команд внешних программ.
В последнее время используются многие приложения встроенных традиционных языков сценариев, такие как Perl или Visual Basic, но все еще используются довольно много родных языков сценариев. я в байт-коде, а затем этот (обычно) независимую платформу байт-кодаться через виртуальную машину (сравните с представленной машиной Java ).
- AppleScript
- AutoHotKey
- AutoIt
- AWK
- bc
- BeanShell
- Bash
- Ch (встраиваемый интерпретатор C / C ++)
- CLI
- C# (скомпилирован в байт-код и работает JIT внутри ВМ)
- CLIST
- ColdFusion
- ECMAScript
- Emacs Lisp
- CMS EXEC
- EXEC 2
- F-Script
- Language Game Maker (GML)
- ICI
- Io
- JASS
- Джулия (по-прежнему компилируется на лету в машинный код )
- JVM
- Ksh
- Lasso
- Lua
- MAXScript
- MEL
- Объект REXX (OREXX, OOREXX)
- Oriel
- Pascal Script
- Perl
- PHP (предназначен для веб-серверов)
- PowerShell
- Python
- R
- REBOL
- Red
- Rexx
- Revolution
- Ruby
- Sh
- Smalltalk
- S-Lang
- sed
- Tea
- Tcl
- TorqueScript
- VBScript
- WebDNA, предназначенный для веб-сайтов, управляемых базами данных
- Windows PowerShell (.NET CLI)
- Winbatch
- Многие языки команд оболочки, такие как оболочка Unix или язык DIGITAL Command Language (DCL) в VMS, обладающими мощными возможностями сценариев.
Языки на основе стека
Языки на основе стека - это типы, основанные на структуре данных стек.
- Beatnik
- Canonware Onyx
- Factor
- Forth
- Joy (все функции работают со стеками параметров вместо именованных параметров)
- Piet
- Poplog через его язык POP-11
- PostScript
- RPL
- S-Lang
Синхронные языки
Синхронные языки программирования оптимизированы для программирования реактивных систем, систем, которые часто прерываются и должны реагировать быстро. Многие такие системы также называются системами реального времени и часто используются во встроенных систем.
Примеры:
Языки затенения
A язык затенения - это язык программирования графики, адаптированный для программирования эффектов шейдера. Такие языковые формы обычно состоят из специальных языковых данных, таких как «цвет» и «нормальный». В связи с разнообразием целевых рынков компьютерной 3D-графики.
Рендеринг в реальном времени
Они обеспечивают более высокую жесткую абстракцию, так и более гибкую модель программирования, чем предыдущие парадигмы, которые запрограммировали преобразование и затенения. Это дает программисту больший контроль над процессом рендеринга и предоставляет более богатый контент с меньшими накладными расходами.
- язык ассемблера графики Adobe (AGAL)
- язык ассемблера ARB (сборка ARB)
- язык шейдинга OpenGL (GLSL или glslang)
- язык шейдинга высокого уровня (HLSL) или DirectX Shader Assembly Language
- PlayStation Shader Language (PSSL)
- Metal Shading Language
- Cg
- Shining Rock Shading Language (SRSL)
- Spark
- Nitrous Shading Language
- Godot Shading Language
Автономный рендеринг
Языки шейдинга, используемые при офлайн-рендеринге, обеспечивают максимальное качество изображения. Обработка таких шейдеров требует много времени. Требуемая вычислительная мощность может быть дорогостоящей из-за их способности давать фотореалистичные результаты.
Языки обработки синтаксиса
Эти языки помогают создавать лексические анализаторы и анализаторы для контекстно-свободных грамматик.
- ANTLR
- Coco / R (EBNF с семантика)
- GNU bison (версия Yacc для FSF)
- GNU Flex (версия Lex для FSF)
- glex / gyacc (компилятор компилятора GoboSoft для Eiffel)
- lex (Lexical Analysis, from Bell Labs)
- M4
- Грамматика выражения синтаксического анализа (PEG)
- Prolog
- Emacs Lisp
- Lisp
- SableCC
- Схема
- yacc (еще один компилятор компилятора, от Bell Labs)
- JavaCC
Системные языки
языки системного программирования предназначены для задач низкого уровня, таких как управление памятью или управление задачами. Под языком системного программирования обычно понимается язык программирования, используемый для системного программирования; такие языки предназначены для написания системного программного обеспечения, которое обычно требует иных подходов к разработке по сравнению с прикладным программным обеспечением.
Системное программное обеспечение - это компьютерное программное обеспечение, предназначенное для работы и управления компьютерным оборудованием, а также для обеспечения платформы для запуска прикладного программного обеспечения. Системное программное обеспечение включает такие категории программного обеспечения, как операционные системы, служебные программы, драйверы устройств, компиляторы и компоновщики. Примеры системных языков:
Язык | Originator | Впервые появился | Испытал влияние | Используется для |
---|
ESPOL | Burroughs Corporation | 1961 | АЛГОЛ 60 | MCP |
PL / I | IBM, SHARE | 1964 | АЛГОЛ, ФОРТРАН, немного COBOL | Multics |
PL360 | Niklaus Wirth | 1968 | ALGOL 60 | ALGOL W |
C | Dennis Ritchie | 1969 | BCPL | Большинство ядер операционных систем, включая Windows NT и большинство Unix-подобных систем |
PL / S | IBM | 196x | PL / I | OS / 360 |
BLISS | Университет Карнеги-Меллона | 1970 | ALGOL-PL / I | VMS (части) |
PL / 8 | IBM | 197x | PL / I | AIX |
PL-6 | Honeywell, Inc. | 197x | PL / I | CP-6 |
SYMPL | CDC | 197x | JOVIAL | NOS подсистемы, большинство компиляторов, редактор FSE |
C ++ | Bjarne Stroustrup | 1979 | C, Simula | См. Приложения C ++ |
Ada | Jean Ичбия, | 1983 | АЛГОЛ 68, Паскаль, C ++, Java, Eiffel | Встроенные системы, ядра ОС, компиляторы, игры, моделирование, CubeSat, управление воздушным движением и авионика |
D | Digital Mars | 2001 | C ++ | Несколько доменов |
Nim | Андреас Рампф | 2008 | Ada, Modula-3, Lisp, C ++, Object Pascal, Python, Oberon | Ядра ОС, компиляторы, игры |
Rust | Mozilla Research | 2010 | C ++, Haskell, Erlang, Ruby | Servo layout engine, Redox OS |
Swift | Apple Inc. | 2014 | C, Objective-C, Rust | macOS, iOS разработка приложений |
Языки трансформации
Визуальные языки
Визуальные языки программирования позволяют пользователям определять программы в двух (или более) изм ерениях. Таким образом, вместо одномерных текстовых строк, через графические макеты разных типов. Некоторые языки программирования потока данных также являются визуальными языками.
Wirth языки
Информатик Никлаус Вирт разработал и реализовал несколько влиятельных языков.
- АЛГОЛ W
- Эйлер
- Модула
- Оберон (Оберон, Оберон-07, Оберон-2)
- Pascal
Языки на основе XML
Это языки, основанные на на XML.
- Ant
- Cω
- ECMAScript для XML
- MXML
- LZX
- XAML
- XPath
- XQuery
- XProc
- Расширяемые преобразования языка таблиц стилей (XSLT )
См. Также
Примечания
Ссылки