Список языков программирования по типам
Язык программирования списки |
---|
Это список известных языков программирования , сгруппированных по типам.
Группы пересекаются; не взаимоисключающие. Язык может быть включен в несколько групп.
Агентно-ориентированные языки программирования
[ редактировать ]Агентно-ориентированное программирование позволяет разработчику создавать, расширять и использовать программные агенты , которые представляют собой абстракции объектов, которые могут отправлять сообщения другим агентам.
Языки массивов
[ редактировать ]Языки программирования массивов (также называемые векторными или многомерными ) обобщают операции со скалярами для прозрачного применения к векторам , матрицам и многомерным массивам .
- А+
- Есть
- Аналитика
- АПЛ
- Часовня
- Дартмут БЕЙСИК
- Фортран (начиная с Фортрана 90 )
- ФриМат
- ГАУСС
- Интерактивный язык данных (IDL)
- Дж
- Юлия
- К
- МАТЛАБ
- Октава
- вопрос
- Р
- Раку [1]
- С
- Сцилаб
- Сленг
- ПоследовательностьL
- Speakeasy
- Wolfram Mathematica ( язык Wolfram )
- х10
- ЗПЛ
Аспектно-ориентированные языки программирования
[ редактировать ]Аспектно-ориентированное программирование позволяет разработчикам добавлять в код новые функции, известные как «советы», без изменения самого кода; скорее, он использует pointcut для реализации совета в блоках кода.
Языки ассемблера
[ редактировать ]Языки ассемблера напрямую соответствуют машинному языку (см. ниже ), поэтому инструкции машинного кода появляются в форме, понятной человеку, хотя между отдельным оператором и отдельной инструкцией может не быть однозначного соответствия. Языки ассемблера позволяют программистам использовать символические адреса, которые ассемблер преобразует в абсолютные или перемещаемые адреса. Большинство ассемблеров также поддерживают макросы и символические константы .
Авторские языки
[ редактировать ]Авторский язык — это язык программирования, предназначенный для использования неспециалистами в области компьютеров для легкого создания учебных пособий, веб-сайтов и других интерактивных компьютерных программ.
Языки интерфейса командной строки
[ редактировать ]Языки интерфейса командной строки (CLI) также называются пакетными языками или языками управления заданиями. Примеры:
- 4DOS (оболочка для IBM PC )
- 4OS2 (оболочка для IBM PC )
- bash (оболочка Bourne-Again от GNU , Free Software Foundation )
- CLIST ( Список команд MVS )
- CMS ИСПОЛНИТЕЛЬ
- csh и tcsh ( Билл Джой, Калифорнийский университет в Беркли )
- ЦИФРОВОЙ командный язык CLI для VMS ( DEC , Compaq , HP )
- Пакетный язык DOS (для IBM PC DOS , до Windows )
- ИСПОЛНИТЕЛЬ 2
- Expect ( инструмент автоматизации и тестирования Unix )
- рыба ( оболочка Unix )
- Оболочка Hamilton C (оболочка C для Windows)
- ksh (стандартная оболочка Unix , написанная Дэвидом Корном )
- PowerShell ( .NET ) CLI на основе
- rc (оболочка для Plan 9 )
- Рекс
- sh (стандартная Unix оболочка , автор Стивен Р. Борн )
- TACL (тандемный расширенный командный язык)
- Пакетный язык Windows (вход для COMMAND.COM или CMD.EXE )
- zsh ( оболочка Unix )
Скомпилированные языки
[ редактировать ]Это языки, обычно обрабатываемые компиляторами , хотя теоретически любой язык может быть скомпилирован или интерпретирован.
- АркТС
- ActionScript
- Ада (многоцелевой язык)
- АЛГОЛ 58
- АЛГОЛ 60 (влиятельный дизайн)
- МАЛЕНЬКАЯ машина АЛГОЛ
- АЛГОЛ 68
- Балерина → байт-кода время выполнения
- BASIC (включая первую версию Dartmouth BASIC)
- БКПЛ
- C (широко используемый процедурный язык)
- C++ (многопарадигмальный язык, производный от C)
- C# (в среду выполнения CIL )
- Цейлон (в JVM байт-код )
- ХОЛОД
- CLIPPER 5.3 (на базе DOS)
- CLEO для компьютеров Leo
- Clojure (в JVM байт-код )
- КОБОЛ
- Кобра
- Общий Лисп
- Кристалл
- Завиток
- D (в результате реинжиниринга C++)
- DASL →Java, JS , JSP, Flex.war
- Delphi ( система разработки Borland Object Pascal )
- ДИБОЛ (цифровой КОБОЛ)
- Дилан
- Эйфель (разработан Бертраном Мейером )
- Вяз
- Эмакс Лисп
- Изумруд
- Эрланг
- Фактор
- Фортран (впервые составлен IBM из Джоном Бэкусом )
- ГАУСС
- Джинн
- Иди (Взрослея)
- Госу (в JVM байт-код )
- Groovy (в JVM байт-код )
- Хаскелл
- Гавань
- HolyC
- Информировать (обычно файлы историй для Glulx или Z-code )
- Java (обычно JVM байт-код ; машинный код )
- ВЕСЕЛЫЙ
- Джулия (на лету к машинному коду)
- Kotlin (Kotlin/Native использует LLVM для создания двоичных файлов)
- ЛабВЬЮ
- Меркурий
- Меса
- Nemerle (в байт-код промежуточного языка)
- Nim
- Цель-C
- П
- Паскаль (большинство реализаций)
- PL/I (первоначально для мэйнфреймов IBM)
- Плюс
- Python (для промежуточного виртуальной машины байт-кода )
- RPG (генератор программ отчетов)
- Красный
- Ржавчина
- Scala (в JVM байт-код )
- Схема (например, Гамбит)
- SequenceL – чисто функциональный, распараллеливаемый и без гонок
- Simula (объектно-ориентированный расширенный набор АЛГОЛА 60 )
- Smalltalk , независимый от платформы виртуальной машины Байт-код
- Быстрый
- МЛ
- Стандартное ML (SML)
- OCaml
- F# (в CIL , генерирует среду выполнения)
- Тьюринг
- V (Vlang)
- Вала (система типов GObject)
- Visual Basic ( среда выполнения CIL JIT)
- Визуальный ФоксПро
- Визуальный Пролог
- Содзё
- Зиг
Конкатенативные языки программирования
[ редактировать ]Конкатенативный язык программирования — это бесточечный язык компьютерного программирования в котором все выражения обозначают функции , а сопоставление выражений , обозначает композицию функций . [4] Конкатенативное программирование заменяет применение функций , которое распространено в других стилях программирования, на композицию функций в качестве способа построения подпрограмм по умолчанию .
Параллельные языки
[ редактировать ]Языки передачи сообщений предоставляют языковые конструкции для параллелизма . Преобладающей парадигмой параллелизма в основных языках, таких как Java, является параллелизм с общей памятью . Параллельные языки, использующие передачу сообщений, обычно были вдохновлены исчислением процессов, таким как коммуникационные последовательные процессы (CSP) или π-исчисление .
- Ада – многоцелевой язык
- Алеф - параллельный язык с потоками и передачей сообщений, используемый для системного программирования в ранних версиях Plan 9 от Bell Labs.
- Ateji PX — расширение языка Java для параллелизма.
- Ballerina — язык, предназначенный для реализации и оркестрации микросервисов. Предоставляет модель параллельного выполнения на основе сообщений.
- ChucK — предметно-ориентированный язык программирования для аудио, точный контроль над параллелизмом и синхронизацией
- Cilk - одновременный C
- Cω – C Omega, исследовательский язык, расширяющий C#, использует асинхронную связь.
- Clojure — диалект Lisp для виртуальной машины Java.
- Часовня
- Совместный массив Фортран
- Параллельный Паскаль (Бринч-Хансен)
- Карри
- E – использует обещания, гарантирует, что тупиков не возникнет.
- Эйфель (через механизм SCOOP , Simple Concurrent Object-Oriented Computation)
- Эликсир (работает на виртуальной машине Erlang)
- Emerald — использует потоки и мониторы
- Erlang – использует асинхронную передачу сообщений без общего доступа.
- Схема гамбита – использование библиотеки Termite
- Gleam (работает на виртуальной машине Erlang)
- Иди (Взрослея)
- Haskell – поддерживает одновременное, распределенное и параллельное программирование на нескольких машинах.
- Ява
- Юлия
- Джоуль - язык потоков данных, общается посредством передачи сообщений.
- ЛабВЬЮ
- Лимбо — родственник Алефа , используется для системного программирования в Inferno (операционная система)
- MultiLisp — вариант схемы расширен для поддержки параллелизма.
- OCaml
- occam – под сильным влиянием коммуникационных последовательных процессов (CSP).
- occam-π — современный вариант occam Милнера . , включающий в себя идеи π-исчисления
- орк
- Oz - мультипарадигмальный язык, поддерживает параллелизм с общим состоянием и передачей сообщений, а также фьючерсы, а также кроссплатформенную систему программирования Моцарта .
- П
- Pict Милнера. - по сути исполняемая реализация π-исчисления
- Python – использует параллелизм на основе потоков и параллелизм на основе процессов. [6]
- Раку [7]
- Ржавчина
- Scala в стиле Erlang — реализует актеров на JVM.
- SequenceL – чисто функциональный, с автоматическим распараллеливанием и отсутствием гонок
- СР – исследовательский язык
- V (Vlang)
- Унифицированный параллельный C
- XPoc – язык обработки XML, обеспечивающий параллелизм
Языки программирования с ограничениями
[ редактировать ]Язык программирования с ограничениями — это декларативный язык программирования , в котором отношения между переменными выражаются в виде ограничений . Выполнение продолжается путем попытки найти значения переменных, которые удовлетворяют всем объявленным ограничениям.
Языки фигурных скобок
[ редактировать ]Язык фигурных скобок или фигурных скобок имеет синтаксис, который определяет блок как операторы между фигурными скобками, также известные как фигурные скобки. {}
. Этот синтаксис возник в BCPL (1966) и был C. популяризирован Многие языки с фигурными скобками происходят от C или находятся под его сильным влиянием . Примеры:
- ABCL/c+
- Алеф
- АВК
- АркТС
- Б
- до нашей эры
- БКПЛ
- Балерина
- C – разработан примерно в 1970 году в Bell Labs.
- С++
- С#
- Цейлон
- ChucK - язык аудио программирования
- Cilk — параллельный C для многопоточного параллельного программирования
- Cyclone – более безопасный вариант C
- Д
- Дарт
- DASL – на основе Java
- И
- ECMAScript
- ГЛСЛ
- Иди (Взрослея)
- ХЛСЛ
- Ява
- Лимбо
- ЛПК
- МЭЛ
- Nemerle (фигурные скобки необязательно) [9]
- Цель-C
- ПКАСТЛ
- Перл
- PHP
- Пико
- Щука
- PowerShell
- Р
- Раку
- Ржавчина
- Сленг
- Scala (фигурные скобки необязательно)
- но
- Солидность [10]
- СуперКоллайдер
- Быстрый
- UnrealScript
- V (Vlang)
- Йорик
- ЯСС
Языки потока данных
[ редактировать ]Языки программирования потоков данных полагаются на (обычно визуальное) представление потока данных для определения программы. Часто используется для реагирования на дискретные события или для обработки потоков данных. Примеры языков потока данных включают в себя:
Языки, ориентированные на данные
[ редактировать ]Языки, ориентированные на данные, предоставляют мощные способы поиска и управления отношениями, которые были описаны как таблицы отношений сущностей, которые отображают один набор вещей в другие наборы. [ нужна ссылка ] Примеры языков, ориентированных на данные, включают:
- Кларион
- Клипер
- dBase — язык доступа к реляционной базе данных.
- Гремлин
- MUMPS (стандартный язык общего назначения ANSI со специализацией для работы с базами данных)
- Caché ObjectScript (собственный расширенный набор MUMPS)
- ЗАБРАТЬ
- РДКЛ
- СПАРКЛ
- SQL
- Visual FoxPro — собственный движок РСУБД, объектно-ориентированный, RAD.
- ВебДНК
- Wolfram Mathematica ( язык Wolfram )
Языки таблицы решений
[ редактировать ]Таблицы решений можно использовать в качестве вспомогательного средства для разъяснения логики перед написанием программы на любом языке, но в 1960-х годах был разработан ряд языков, в которых основная логика выражается непосредственно в форме таблицы решений, в том числе:
Декларативные языки
[ редактировать ]Декларативные языки выражают логику вычислений без подробного описания потока управления. Декларативное программирование отличается от императивного программирования с помощью императивных языков программирования, где поток управления задается последовательными приказами (императивами). (Чистые) функциональные и логические языки программирования также являются декларативными и составляют основные подкатегории декларативной категории. В этом разделе перечислены дополнительные примеры, не входящие в эти подкатегории.
- Аналитика
- Ant (объединяет декларативное программирование и императивное программирование )
- Карри
- Сайфер
- Ученый-компьютерщик
- Язык спецификации распределенных приложений (DASL) (объединяет декларативное программирование и императивное программирование )
- ОКУ
- Гремлин
- Информировать (объединить декларативное программирование и императивное программирование )
- Блеск
- Меркурий
- Метафонт
- МетаПост
- модель
- Никс
- Пролог
- QML
- Оз
- РДКЛ
- SequenceL – чисто функциональный, с автоматическим распараллеливанием и отсутствием гонок
- СПАРКЛ
- SQL (только DQL, а не DDL, DCL и DML)
- Суфле
- Wolfram Mathematica ( язык Wolfram )
- xBase
- XSL-преобразования
Встраиваемые языки
[ редактировать ]В исходном коде
[ редактировать ]Встраиваемые языки исходного кода встраивают небольшие фрагменты исполняемого кода в фрагмент текста произвольной формы, часто в веб-страницу.
Встроенные языки на стороне клиента ограничены возможностями браузера или предполагаемого клиента. Они стремятся придать веб-страницам динамизм без необходимости повторного обращения к серверу.
Серверные встроенные языки гораздо более гибкие, поскольку практически любой язык может быть встроен в сервер. Целью внедрения фрагментов серверного кода в веб-страницу является динамическое создание дополнительной разметки; сам код исчезает при обслуживании страницы и заменяется ее выводом.
Серверная часть
[ редактировать ]- PHP
- VBScript
- Tcl — серверная часть NaviServer и важный компонент систем электронной промышленности.
- WebDNA – посвящен веб-сайтам, управляемым базами данных.
Приведенные выше примеры специально посвящены этой цели. Большое количество других языков, таких как Erlang , Scala , Perl , Ring и Ruby , можно адаптировать (например, превратив их в модули Apache ).
Клиентская часть
[ редактировать ]- ActionScript
- JavaScript (он же ECMAScript или JScript)
- VBScript (только для Windows)
В объектном коде
[ редактировать ]В скомпилированный исполняемый код можно встроить широкий спектр динамических языков или языков сценариев. языка По сути, объектный код интерпретатора должен быть связан с исполняемым файлом. Фрагменты исходного кода встроенного языка затем можно передать в функцию оценки в виде строк. Языки управления приложениями могут быть реализованы таким образом, если исходный код вводится пользователем. Предпочтительны языки с небольшими переводчиками.
Образовательные языки программирования
[ редактировать ]Языки разрабатывались в первую очередь с целью преподавания и изучения программирования.
Эзотерические языки
[ редактировать ]Эзотерический язык программирования — это язык программирования, созданный для проверки границ дизайна языков программирования, для доказательства концепции или для шутки.
Языки расширения
[ редактировать ]Языки программирования расширений — это языки, встроенные в другую программу и используемые для использования ее функций в сценариях расширений.
- AutoLISP (специфично для AutoCAD )
- БинШелл
- CAL
- К/АЛ (С/СТОРОНА)
- Коварство
- Эмакс Лисп
- JavaScript и некоторые диалекты, например JScript
- Lua (встроен во многие игры)
- OpenCL (расширение C и C++ для использования графического процессора и параллельных расширений процессора)
- OptimJ (расширение Java с поддержкой языка для написания оптимизационных моделей и мощными абстракциями для массовой обработки данных)
- Перл
- Щука
- PowerShell
- Python (встроен в Maya, Blender и другие пакеты трехмерной анимации)
- Рекс
- Кольцо
- Руби (Google SketchUp)
- Сленг
- SQL
- Белка
- Ткл
- Скрипт Vim (vim)
- Visual Basic для приложений (VBA)
Языки четвертого поколения
[ редактировать ]Языки программирования четвертого поколения — это языки высокого уровня, построенные на основе систем баз данных. Обычно они используются в коммерческих условиях.
- Язык программирования 1С:Предприятия.
- АБАП
- КорВижн
- CSC GraphTalk от
- CA-IDEAL (Интерактивная среда разработки для жизни приложения) для использования с CA-DATACOM/DB
- Генератор отчетов Easytieve (теперь CA-Easytieve Plus)
- ФОКУС
- IBM Информикс-4GL
- ЛИНК 4ГЛ
- LiveCode (не основан на базе данных; тем не менее, цель состоит в том, чтобы работать на более высоком уровне абстракции, чем 3GL.)
- MAPPER ( Unisys/Sperry ) – теперь часть BIS
- MARK-IV ( Стерлинг/Информатика ) теперь VISION:BUILDER of CA
- ЕСТЕСТВЕННЫЙ
- Прогресс 4ГЛ
- PV-волна
- ЗАБРАТЬ
- САС
- SQL
- Уберкод (VHLL или язык очень высокого уровня)
- Унифейс
- Визуальный DataFlex
- Визуальный ФоксПро
- xBase
Функциональные языки
[ редактировать ]Языки функционального программирования определяют программы и подпрограммы как математические функции и рассматривают их как первоклассные. Многие так называемые функциональные языки являются «нечистыми» и содержат императивные функции. Многие функциональные языки привязаны к инструментам математических вычислений. К функциональным языкам относятся:
Чистый
[ редактировать ]Нечистый
[ редактировать ]- АПЛ
- АТС
- CAL
- С++ (начиная с C++11 )
- С#
- VB.NET
- Цейлон
- Завиток
- Д
- Дарт
- ECMAScript
- Эрланг
- Фексл
- Фликс
- G (используется в LabVIEW)
- классный
- Прыгать
- Дж
- Java (начиная с версии 8)
- Юлия
- Котлин
- Лисп
- МЛ
- Стандартное ML (SML)
- OCaml
- Ф#
- Немерль
- Nim
- Опал
- ОПС5
- Перл
- PHP
- ПЛ/pgSQL
- Питон
- Q (язык эквационного программирования)
- Q (язык программирования от Kx Systems)
- Р
- Раку
- Ребол
- Красный
- Кольцо
- Руби
- РЕФАЛ
- Ржавчина
- Скала
- Быстрый
- Таблицы
- V (Vlang)
- Ткл
- Wolfram Mathematica ( язык Wolfram )
Языки описания оборудования
[ редактировать ]В электронике язык описания аппаратного обеспечения (HDL) — это специализированный компьютерный язык, используемый для описания структуры, конструкции и работы электронных схем и, чаще всего, цифровых логических схем. Двумя наиболее широко используемыми и хорошо поддерживаемыми разновидностями HDL, используемыми в промышленности, являются Verilog и VHDL . Языки описания оборудования включают:
HDL для проектирования аналоговых схем
[ редактировать ]- Verilog-AMS (Verilog для аналоговых и смешанных сигналов)
- VHDL-AMS (VHDL с расширением аналоговых/смешанных сигналов)
HDL для проектирования цифровых схем
[ редактировать ]Императивные языки
[ редактировать ]Императивные языки программирования могут быть мультипарадигмальными и включаться в другие классификации. Вот список языков программирования, которые следуют императивной парадигме :
- Есть
- АЛГОЛ 58
- АЛГОЛ 60 (очень влиятельный языковой дизайн)
- АЛГОЛ 68
- БАЗОВЫЙ
- С
- С++
- С#
- Цейлон
- ХОЛОД
- КОБОЛ
- Д
- Дарт
- ECMAScript
- ФОРТРАН
- ГАУСС
- Идти
- классный
- Икона
- Ява
- Юлия
- Два
- МАТЛАБ
- Машинные языки
- Модуль-2 , Модуль-3
- Свинка
- Nim
- OCaml
- Оберон
- Объектный Паскаль
- Открыть объект Rexx (ooRexx)
- Открытый язык программирования (OPL)
- Расширенный бизнес-язык OpenEdge (ABL)
- Паскаль
- Перл
- PHP
- ПЛ/И
- ПЛ/С
- PowerShell
- ПРОЗА
- Питон
- Раку
- Рекс
- Кольцо
- Руби
- Ржавчина
- SETL
- Speakeasy
- Быстрый
- Ткл
- V (Vlang)
- Wolfram Mathematica ( язык Wolfram )
Языки интерактивного режима
[ редактировать ]Языки интерактивного режима действуют как своего рода оболочка: выражения или операторы можно вводить по одному, и результат их вычисления виден сразу. Интерактивный режим также называется циклом чтения-оценки-печати (REPL).
- АПЛ
- БЕЙСИК (некоторые диалекты)
- Кложур
- Общий Лисп
- Dart (с инструментами разработчика Observatory или Dartium)
- ECMAScript
- Эрланг
- Эликсир (с iex)
- Ф#
- Оборка
- ГАУСС
- классный
- Коварство
- Haskell (с интерпретатором GHCi или Hugs)
- МВУ
- Дж
- Java (начиная с версии 9)
- Юлия
- Два
- MUMPS (стандартный язык общего назначения ANSI)
- Клен
- МАТЛАБ
- МЛ
- OCaml
- Перл
- PHP
- Щука
- Постскриптум
- PowerShell ( .NET ) CLI на основе
- Пролог
- Питон
- ПРОЗА
- Р
- Раку
- Ребол
- Красный
- Рекс
- Кольцо
- Руби (с IRB )
- Скала
- Схема
- Smalltalk (в любой точке среды Smalltalk)
- S-Lang (с оболочкой S-Lang, slsh)
- Speakeasy
- Быстрый
- Tcl (с оболочкой Tcl, tclsh)
- оболочка Unix
- Визуальный ФоксПро
- Wolfram Mathematica ( язык Wolfram )
Интерпретируемые языки
[ редактировать ]Интерпретируемые языки — это языки программирования, на которых программы могут выполняться интерпретатором из формы исходного кода. Теоретически любой язык можно компилировать или интерпретировать, поэтому термин «интерпретируемый язык» обычно относится к языкам, которые обычно интерпретируются, а не компилируются.
- Муравей
- АПЛ
- AutoHotkey Язык сценариев
- AutoIt Язык сценариев
- БЕЙСИК (некоторые диалекты)
- Язык программирования для бизнеса (PL/B, ранее DATABUS, в более поздних версиях добавлена дополнительная компиляция)
- Эйфель (с помощью технологии Melting Ice в EiffelStudio )
- Эмакс Лисп
- ФОКАЛЬНЫЙ
- Язык GameMaker
- классный
- Дж
- jq
- Julia (компилируется на лету в машинный код , по умолчанию также доступна интерпретация)
- JavaScript
- Lisp (ранние версии, до 1962 года, и некоторые экспериментальные; производственные системы Lisp представляют собой компиляторы, но многие из них по-прежнему предоставляют интерпретатор при необходимости)
- ЛПК
- Два
- MUMPS (стандартный язык общего назначения ANSI)
- Клен
- МАТЛАБ
- OCaml
- Паскаль (ранние реализации)
- ПКАСТЛ
- Перл
- PHP
- Постскриптум
- PowerShell
- ПРОЗА
- Питон
- Рекс
- Р
- Раку
- Ребол
- Красный
- Кольцо
- Руби
- Сленг
- Сид7
- Speakeasy
- Стандартное ML (SML)
- Вращаться
- Ткл
- Чай
- TorqueScript
- ThinBasic язык сценариев
- VBScript
- Windows PowerShell — .NET интерфейс командной строки на основе
- Некоторые скриптовые языки – ниже
- Wolfram Mathematica ( язык Wolfram )
Итеративные языки
[ редактировать ]Итеративные языки построены вокруг генераторов или предлагают их .
Языки по типу управления памятью
[ редактировать ]Языки, собранные в мусор
[ редактировать ]Сбор мусора (GC) — это форма автоматического управления памятью. Сборщик мусора пытается освободить память, которая была выделена программой, но больше не используется.
Языки с ручным управлением памятью
[ редактировать ]Этот раздел нуждается в расширении . Вы можете помочь, добавив к нему . ( ноябрь 2016 г. ) |
Языки с дополнительным ручным управлением памятью
[ редактировать ]- Реализации 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) или выделение арены (-prealloc).
- По умолчанию Vala использует подсчет ссылок, но пользователь может управлять памятью вручную, если пожелает. [23]
Языки с детерминированным управлением памятью
[ редактировать ]Этот раздел нуждается в расширении . Вы можете помочь, добавив к нему . ( апрель 2018 г. ) |
Языки с автоматическим подсчетом ссылок (ARC)
[ редактировать ]Этот раздел нуждается в расширении . Вы можете помочь, добавив к нему . ( сентябрь 2018 г. ) |
Языки на основе списков – LISP
[ редактировать ]Языки на основе списков — это тип языка со структурой данных , основанный на списковой структуре данных.
Маленькие языки
[ редактировать ]Маленькие языки [26] обслуживать специализированную проблемную область.
- awk – используется для манипуляций с текстовыми файлами.
- sed — анализирует и преобразует текст
- SQL – имеет всего несколько ключевых слов и не все конструкции, необходимые для полноценного языка программирования. [а] – многие системы управления базами данных расширяют SQL дополнительными конструкциями в качестве хранимых процедур. языка
Логические языки
[ редактировать ]Языки , основанные на логике, определяют набор атрибутов, которые должно иметь решение, а не набор шагов для получения решения.
Известные языки, следующие этой парадигме программирования, включают:
- Альф
- Альма-0
- Карри
- Ученый-компьютерщик
- Оборка
- Flix (функциональный язык программирования с первоклассными ограничениями журнала данных)
- Янус
- λProlog (язык логического программирования, включающий полиморфную типизацию, модульное программирование и программирование высшего порядка)
- Оз и система программирования Моцарта кросс-платформенные Оз
- Пролог (формулирует данные и механизм оценки программы как особую форму математической логики, называемую логикой Хорна , и общий механизм доказательства, называемый логическим разрешением )
- Меркурий (на основе Пролога)
- Visual Prolog (объектно-ориентированное расширение Пролога)
- РУП
- Суфле
Машинные языки
[ редактировать ]Машинные языки исполняются непосредственно процессором компьютера. Обычно они формулируются как битовые комбинации, обычно представленные в восьмеричном или шестнадцатеричном формате . Каждый битовый шаблон заставляет схемы ЦП выполнять одну из фундаментальных операций аппаратного обеспечения. Активация определенных электрических входов (например, контактов корпуса ЦП для микропроцессоров) и логические настройки значений состояния ЦП управляют вычислениями процессора. Отдельные машинные языки специфичны для семейства процессоров; код машинного языка для одного семейства процессоров не может работать непосредственно на процессорах другого семейства, если рассматриваемые процессоры не имеют дополнительного оборудования для его поддержки (например, процессоры DEC VAX включают режим совместимости с PDP-11). Они (по сути) всегда определяются разработчиком ЦП, а не сторонними организациями. [б] процессора Символьная версия, язык ассемблера , в большинстве случаев также определяется разработчиком. машинного кода Некоторые часто используемые наборы команд :
- РИСК-V
- РУКА
- Оригинальная 32-битная версия
- 16-битные инструкции Thumb (используется подмножество регистров)
- 64-разрядная версия (существенное изменение архитектуры)
- Декабрь :
- Интел 8008 , 8080 и 8085
- х86 :
- 16-битный процессор x86 , впервые использованный в Intel 8086.
- Intel 8086 и 8088 (последний использовался в первых и ранних IBM PC )
- Интел 80186
- Intel 80286 (первый процессор x86 с защищенным режимом , используемый в IBM PC AT )
- IA-32 , представленный в 80386.
- x86-64 — исходная спецификация была создана AMD . Существуют варианты поставщиков, но по сути они одинаковы:
- 16-битный процессор x86 , впервые использованный в Intel 8086.
- ИБМ [с]
- МИПС
- Моторола 6800 ( 8-бит )
- Серия Motorola 68000 (процессоры, использовавшиеся в ранних компьютерах Macintosh и ранних компьютерах Sun )
- Технология МОП 65xx ( 8-битная )
- 6502 (ЦП для VIC-20 , BBC Micro , Apple II и 8-битных компьютеров Atari )
- 6510 (ЦП для Commodore 64 )
- Western Design Center 65816/65802 (ЦП для Apple IIGS и (вариант) Super Nintendo Entertainment System )
- Национальный полупроводник NS320xx
- POWER , впервые использованный в IBM RS/6000.
- PowerPC — используется в Power Macintosh и во многих игровых консолях , особенно седьмого поколения .
- Power ISA — эволюция PowerPC .
- Sun Microsystems (теперь Oracle ) SPARC
- УНИВАК [с]
- МЦСТ Эльбрус 2000
Макроязыки
[ редактировать ]Макроязыки текстовой замены
[ редактировать ]Макроязыки преобразуют один файл исходного кода в другой. «Макрос» — это по сути короткий фрагмент текста, который разрастается в более длинный (не путать с гигиеническими макросами ), возможно, с заменой параметров. Они часто используются для предварительной обработки исходного кода. Препроцессоры также могут предоставлять такие возможности, как включение файлов .
Макроязыки могут быть ограничены в работе со специально помеченными областями кода (предварительно зафиксированными #
в случае препроцессора 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 объектная система ).
Единая отправка
[ редактировать ]- ЭкшнСкрипт 3.0
- Актер
- Ада 95 и Ада 2005 (многоцелевой язык)
- АПЛ
- БЕТА
- С++
- С#
- Цейлон
- Дарт
- Oxygene (ранее называвшийся Chrome)
- ЧакК
- Кобра
- КолдФьюжн
- Завиток
- Д
- Язык спецификации распределенных приложений (DASL)
- Делфи Объект Паскаль
- И
- ГНУ Е
- Эйфелева
- Фортран 2003
- Крепость
- Креветки
- Язык создателя игр
- Гавань
- Дж
- Ява
- ЛабВЬЮ
- Два
- Модуль-2 (абстракция данных, сокрытие информации, строгая типизация, полная модульность)
- Modula-3 (в Modula-2 добавлено больше объектно-ориентированных функций)
- Немерль
- НетРекс
- Оберон-2 (полная объектно-ориентированная эквивалентность в оригинальной, строго типизированной, виртовой манере)
- Объектный Паскаль
- Объект РЕКС
- Objective-C (расширенный набор C, добавляющий объектную модель, производную от Smalltalk , и синтаксис передачи сообщений)
- OCaml
- Расширенный бизнес-язык OpenEdge (ABL)
- Оз, Система программирования Моцарта
- Перл 5
- PHP
- Щука
- Програф
- Python (интерпретирующий язык, опционально объектно-ориентированный)
- Революция (программист не может выбирать объекты)
- Кольцо
- Руби
- Скала
- Speakeasy
- Simula (первый объектно-ориентированный язык, разработанный Оле-Йоханом Далем и Кристен Нюгаард )
- Smalltalk (чистая объектная ориентация, разработанная в Xerox PARC )
- ВРАЩАТЬСЯ
- СуперКоллайдер
- VBScript (язык макроскриптов Microsoft Office)
- Визуальный DataFlex
- Визуальный ФоксПро
- Визуальный Пролог
- Х++
- Содзё
- XOTcl
Объектно-ориентированные языки на основе прототипов
[ редактировать ]Языки, основанные на прототипах, — это объектно-ориентированные языки, в которых удалено различие между классами и экземплярами:
- Язык программирования 1С:Предприятия.
- Параллельный язык на основе актеров (ABCL, ABCL/1, ABCL/R, ABCL/R2, ABCL/c+)
- Сейчас
- Сесил
- ECMAScript
- ActionScript
- ECMAScript для XML
- JavaScript (сначала назывался Mocha, затем LiveScript)
- JScript
- Эти игрушки в Писке
- Этот
- Два
- ТАМ
- НьютонСкрипт
- Облик
- Р
- Ребол
- Красный
- Self (первый язык, основанный на прототипах, производный от Smalltalk )
- ЗАТЕМ
Языки правил офсайда
[ редактировать ]Языки внесторонних правил обозначают блоки кода по их отступам .
Процедурные языки
[ редактировать ]Процедурные языки программирования основаны на концепции единицы и области действия (диапазона просмотра данных) оператора исполняемого кода. Процедурная программа состоит из одного или нескольких модулей или модулей, закодированных пользователем или предоставленных в библиотеке кодов; каждый модуль состоит из одной или нескольких процедур, также называемых функцией, процедурой, подпрограммой или методом, в зависимости от языка. Примеры процедурных языков включают в себя:
- Ада (многоцелевой язык)
- АЛГОЛ 58
- АЛГОЛ 60 (очень влиятельный языковой дизайн)
- МАЛЕНЬКАЯ машина, АЛГОЛ, подобный языку
- АЛГОЛ 68
- Альма-0
- BASIC (им не хватает модульности в версиях (особенно) примерно до 1990 года)
- БКПЛ
- БЛАЖЕНСТВО
- С
- С++
- C# (аналог Java/C++)
- Цейлон
- ХОЛОД
- ChucK (синтаксис, подобный C/Java, с новыми элементами синтаксиса для времени и параллелизма)
- КОБОЛ
- Кобра
- КолдФьюжн
- CPL (комбинированный язык программирования)
- Завиток
- Д
- Язык спецификации распределенных приложений (DASL) (объединяет декларативное программирование и императивное программирование )
- ECMAScript
- ActionScript
- ECMAScript для XML
- JavaScript (сначала назывался Mocha, затем LiveScript)
- JScript
- Источник
- Эйфелева
- Форт
- Фортран (лучшая модульность в более поздних стандартах)
- ГАУСС
- Идти
- Гавань
- ГиперТок
- Ява
- ВЕСЕЛЫЙ
- Юлия
- Язык Н
- Лассо
- Модуль-2 (в основном на основе модулей)
- МАТЛАБ
- Меса
- MUMPS (первая версия была более модульной, чем другие языки того времени; с тех пор стандарт стал еще более модульным)
- Немерль
- Nim
- Оберон , Оберон-2 (улучшенное, меньшее, быстрое и безопасное продолжение Модулы-2)
- OCaml
- Оккам
- Ориэль
- Паскаль (преемник АЛГОЛА 60, предшественника Модулы-2)
- Фри Паскаль (FPC)
- Объект Паскаль , Делфи
- ПКАСТЛ
- Перл
- Щука
- ПЛ/К
- PL/I (большой язык общего назначения, первоначально для мэйнфреймов IBM)
- Плюс
- PowerShell
- ПРОЗА
- Питон
- Р
- Раку
- Лави
- РПГ
- Ржавчина
- Сленг
- VBScript
- Визуальный Бейсик
- Визуальный ФоксПро
- Wolfram Mathematica ( язык Wolfram )
- Microsoft Dynamics AX (X++)
Языки запросов
[ редактировать ]Рефлексивные языки
[ редактировать ]Рефлексивные языки программирования позволяют программам проверять и, возможно, изменять свою высокоуровневую структуру во время выполнения или во время компиляции. Это наиболее распространено в языках программирования виртуальных машин высокого уровня, таких как Smalltalk , и менее распространено в языках программирования более низкого уровня, таких C. как Языки и платформы, поддерживающие размышления:
- Бефунге
- Цейлон
- Очарование
- ЧакК
- интерфейс командной строки
- Кобра
- Компонент Pascal BlackBox Компонент Builder
- Завиток
- Сайфер
- Делфи Объект Паскаль
- ECMAScript
- Эмакс Лисп
- Эйфелева
- Гавань
- Юлия
- JVM
- Лисп
- Два
- Система Мод
- Оберон-2 — Система ETH Оберон
- Цель-C
- ПКАСТЛ
- Перл
- PHP
- Пико
- Напольное покрытие
- PowerShell
- Пролог
- Питон
- Раку [30]
- Ребол
- Красный
- Кольцо
- Руби
- Smalltalk (чистая объектная ориентация, родом из Xerox PARC )
- СНОБОЛ
- Ткл
- Wolfram Mathematica ( язык Wolfram )
- XOTcl
- Х++
- Содзё
Языки, основанные на правилах
[ редактировать ]Языки, основанные на правилах, создают экземпляры правил, когда они активируются условиями в наборе данных. Из всех возможных активаций выбирается некоторый набор и выполняются операторы, принадлежащие этим правилам. Языки, основанные на правилах, включают: [ нужна ссылка ]
- ок
- КЛИПЫ
- Клэр
- Правила обработки ограничений
- пускает слюни
- Язык программирования агента GOAL
- Джесс
- ОПС5
- Пролог
- ToonTalk – роботы – это правила
- Wolfram Mathematica ( язык Wolfram )
- XSLT [ нужна ссылка ]
Языки сценариев
[ редактировать ]- АнгелСкрипт
- AppleScript
- AutoHotKey
- АвтоИт
- АВК
- до нашей эры
- БинШелл
- Баш
- Ch (встраиваемый интерпретатор C/C++)
- интерфейс командной строки
- КЛИСТ
- КолдФьюжн
- ECMAScript
- ActionScript
- ECMAScript для XML
- JavaScript (сначала назывался Mocha, затем LiveScript)
- JScript
- Источник
- Эмакс Лисп
- CMS ИСПОЛНИТЕЛЬ
- ИСПОЛНИТЕЛЬ 2
- Язык создателя игр (GML)
- GDScript
- Этот
- ЯСС
- Julia (компилируется на лету в машинный код , по умолчанию также доступна интерпретация)
- JVM
- Кш
- Лассо
- Два
- MAXScript
- МЭЛ
- Объект REXX (OREXX, OOREXX)
- Ориэль
- Паскаль-скрипт
- Перл
- PHP (предназначен для веб-серверов)
- PowerShell
- Питон
- Р
- Раку
- Ребол
- Красный
- Рекс
- Революция
- Кольцо
- Руби
- Сленг
- но
- Ш
- Смолток
- Белка
- Чай
- Ткл
- TorqueScript
- VBScript
- WebDNA , посвященный веб-сайтам, управляемым базами данных.
- Windows PowerShell ( CLI на основе .NET )
- Многие языки команд оболочки, такие как оболочка Unix или язык DIGITAL Command Language (DCL) в VMS, обладают мощными возможностями создания сценариев.
Языки на основе стека
[ редактировать ]Языки на основе стека — это тип языка со структурой данных , основанный на структуре данных стека .
Синхронные языки
[ редактировать ]Языки синхронного программирования оптимизированы для программирования реактивных систем, систем, которые часто прерываются и должны быстро реагировать. Многие такие системы также называются системами реального времени и часто используются во встроенных системах .
Примеры:
Языки штриховки
[ редактировать ]Язык шейдеров — это язык графического программирования, адаптированный для программирования эффектов шейдеров. Такие языковые формы обычно состоят из специальных типов данных, таких как «цвет» и «нормальный». Из-за разнообразия целевых рынков компьютерной 3D-графики.
Рендеринг в реальном времени
[ редактировать ]Они обеспечивают как более высокую аппаратную абстракцию, так и более гибкую модель программирования, чем предыдущие парадигмы, в которых жестко запрограммированы уравнения преобразования и затенения. Это дает программисту больший контроль над процессом рендеринга и обеспечивает более богатый контент с меньшими затратами.
- Язык ассемблера Adobe Graphics (AGAL) [31]
- Язык ассемблера ARB (ассемблер ARB)
- Язык шейдеров OpenGL (GLSL или glslang)
- Язык шейдеров высокого уровня (HLSL) или язык ассемблера шейдеров DirectX
- Язык шейдеров PlayStation (PSSL)
- Язык шейдинга металла (MSL)
- Кг
Офлайн-рендеринг
[ редактировать ]Языки шейдеров, используемые при автономном рендеринге, обеспечивают максимальное качество изображения. Обработка таких шейдеров занимает много времени. Требуемая вычислительная мощность может быть дорогостоящей из-за их способности давать фотореалистичные результаты.
- Язык шейдеров RenderMan (RSL)
- Открытый язык шейдинга (OSL)
Языки обработки синтаксиса
[ редактировать ]Эти языки помогают создавать лексические анализаторы и парсеры для контекстно-свободных грамматик .
- АНТЛР
- Coco/R (EBNF с семантикой)
- GNU bison (версия Yacc от FSF)
- GNU Flex (версия Lex для FSF)
- lex (лексический анализ, от Bell Labs)
- М4
- Анализ грамматики выражений (PEG)
- Пролог
- Эмакс Лисп
- Лисп
- Раку [32]
- СобольCC
- Схема
- yacc (еще один компилятор-компилятор от Bell Labs)
- JavaCC
Системные языки
[ редактировать ]Языки системного программирования предназначены для задач низкого уровня, таких как управление памятью или управление задачами. Язык системного программирования обычно относится к языку программирования, используемому для системного программирования; такие языки предназначены для написания системного программного обеспечения, которое обычно требует иных подходов к разработке по сравнению с прикладным программным обеспечением.
Системное программное обеспечение — это компьютерное программное обеспечение, предназначенное для работы и управления компьютерным оборудованием, а также для обеспечения платформы для запуска прикладного программного обеспечения. Системное программное обеспечение включает такие категории программного обеспечения, как операционные системы, служебное программное обеспечение, драйверы устройств, компиляторы и компоновщики. Примеры системных языков включают в себя:
Язык | Создатель | Впервые появился | Под влиянием | Используется для |
---|---|---|---|---|
ЭСПОЛ | Корпорация Берроуза | 1961 | АЛГОЛ 60 | МКП |
ПЛ/И | IBM , ПОДЕЛИТЬСЯ | 1964 | АЛГОЛ 60, ФОРТРАН, добавить КОБОЛ | Мультикс |
ПЛ360 | Никлаус Вирт | 1968 | АЛГОЛ 60 | АЛГОЛ W |
С | Деннис Ричи | 1969 | БКПЛ | Большинство ядер операционных систем , включая Windows NT и большинство Unix-подобных систем. |
ПЛ/С | ИБМ | 196x | ПЛ/И | ОС/360 |
БЛАЖЕНСТВО | Университет Карнеги-Меллон | 1970 | АЛГОЛ-ПЛ/И [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 |
V (Vlang) | Alexander Medvednikov | 2019 | C , Go , Оберон-2 , Rust , Swift , Котлин | ОС Vinix, ядра ОС, компиляторы, игры |
Языки трансформации
[ редактировать ]Языки преобразования служат для преобразования (перевода) исходного кода, заданного на определенном формальном языке, в определенный код формата назначения. Чаще всего он используется в промежуточных компонентах более сложных суперсистем, чтобы использовать внутренние результаты для ввода в последующую процедуру обработки.
Визуальные языки
[ редактировать ]Языки визуального программирования позволяют пользователям определять программы в двухмерном (или более) виде, а не в виде одномерных текстовых строк, с помощью графических макетов различных типов. Некоторые языки программирования потоков данных также являются визуальными языками.
Вирт языки
[ редактировать ]Ученый-компьютерщик Никлаус Вирт разработал и реализовал несколько влиятельных языков.
- АЛГОЛ W
- Эйлер
- Модуль
- Оберон (Оберон, Оберон-07, Оберон-2)
- Паскаль
- Object Pascal (общее имя для Delphi , Free Pascal , Oxygene и других)
Языки на основе XML
[ редактировать ]Это языки, основанные на XML или работающие с ним .
См. также
[ редактировать ]- Парадигма программирования
- IEC 61131-3 – стандарт языков программируемых логических контроллеров (ПЛК).
- Список образовательных языков программирования
- Список языков разметки
- Эзотерический язык программирования
Примечания
[ редактировать ]- ^ Объекты SQL — это коллекции записей базы данных , называемые таблицами. Полный язык программирования может определять алгоритмы независимо от времени выполнения . Таким образом, можно считать, что алгоритм генерирует полезные результаты. Напротив, SQL может выбирать только записи, ограниченные текущей коллекцией данных, имеющихся в системе, а не выдавать утверждение о правильности результата.
- ^ Заметным исключением могут быть советские/российские процессоры серии 1801 , которые изначально использовали собственную отечественную ISA, но позже были переработаны для совместимости с PDP-11 в соответствии с политическим решением.
- ^ Перейти обратно: а б Подмодели не указаны, только базовые модели.
- ^ Концепция объекта с традиционной объектно-ориентированной семантикой с одной отправкой не присутствует в Julia, вместо этого используется более общая множественная диспетчеризация разных типов во время выполнения.
- ^ Swift использует автоматический подсчет ссылок .
Ссылки
[ редактировать ]- ^ «Операторы» . Проверено 13 мая 2024 г.
- ^ "сворачивать" .
- ^ " "Аспекты в Раку" " .
- ^ «Кристофер Диггинс: Что такое конкатенативный язык» . Drdobbs.com. 31 декабря 2008 г. Проверено 1 июля 2013 г.
- ^ «Оператор подачи» .
- ^ Документация » Стандартная библиотека Python » Параллельное выполнение
- ^ «Каналы и другие механизмы» .
- ^ «Решение проблем» .
- ^ Перейти обратно: а б «Синтаксис, основанный на отступах · rsdn/nemerle Wiki» . Гитхаб . Проверено 18 марта 2022 г.
- ^ «Solidity: Документация Solidity 0.8.11» .
- ^ «Итератор» .
- ^ «Управление памятью · БлицМакс» . Проверено 14 июля 2023 г.
- ^ «Указатели · БлицМакс» . Проверено 14 июля 2023 г.
- ^ «БРЛ.Блиц · БлицМакс» . Проверено 14 июля 2023 г.
- ^ «Использование указателей в программе ILE COBOL — Документация IBM» . ИБМ . Проверено 14 июля 2023 г.
- ^ «HEAP — Документация IBM» . ИБМ . Проверено 14 июля 2023 г.
- ^ «Измененные элементы языка OO COBOL на основе SOM - Документация IBM» . ИБМ . Проверено 14 июля 2023 г.
- ^ «Распределение памяти — документация Cython 3.0.0.dev0» . Проверено 14 июля 2023 г.
- ^ «Сбор мусора» . D Язык программирования . Проверено 18 марта 2022 г.
- ^ «Управление памятью Нима» . Проверено 18 марта 2022 г.
- ^ Adobe (февраль 1999 г.). Справочник по языку PostScript, третье издание (PDF) . Издательство Аддисон-Уэсли. стр. 56–65.
- ^ «Взаимодействие собственного кода – документация Scala Native 0.4.14» . Проверено 5 июля 2023 г.
- ^ «Проекты/Vala/ReferenceHandling — GNOME Wiki!» . Архивировано из оригинала 21 января 2024 г. Проверено 21 марта 2022 г.
- ^ «Понимание владения — язык программирования Rust» . doc.rust-lang.org .
- ^ «Умные указатели — язык программирования Rust» . doc.rust-lang.org .
- ^ Джон Бентли (AT&T), август 1986 г., CACM 29 (8) «Маленькие языки», стр. 711-721 из его колонки «Жемчужины программирования».
- ^ «Метапрограммирование: Что, почему и как» . 14 декабря 2011 г.
- ^ «Процедурные макросы для генерации кода из атрибутов» . doc.rust-lang.org .
- ^ «Классы и роли» .
- ^ «Метаобъектный протокол (MOP)» .
- ^ Скабия, Марко. «Что такое АГАЛЬ» . Связь с разработчиками Adobe . Adobe . Проверено 8 мая 2018 г.
- ^ «Грамматики» .
- ^ Вульф, Вашингтон; Рассел, Д.Б.; Хаберман, А.Н. (декабрь 1971 г.). «БЛИСС: язык системного программирования». Коммуникации АКМ . 14 (12): 780–790. CiteSeerX 10.1.1.691.9765 . дои : 10.1145/362919.362936 . S2CID 9564255 .
- ^ «Приложения C++» .
- ^ «Организации, использующие язык D» . D Язык программирования .
- ^ «Исследования Мозиллы» . 1 января 2014 г.