Давайте изменим традиционные приоритеты в создании программ: вместо представления о нашей задаче как о создании инструкций «Что делать?» для компьютера сконцентрируемся на объяснении другим людям описаний нашего видения того, что под управлением программы должен делать компьютер.
CWEB — версия WEB, разработанная для документирования С, C++ и Java
FWEB — система программирования для языка Фортран
pyWeb - система, позволяющая создавать программы на любом языке программирования и описывать их с помощью произвольного языка разметки, например, HTML, reStructured Text или LaTeX
Rambutan — система программирования для языка Java
Noweb
FunnelWeb
CLiP, cnoweb
Эту статью следует викифицировать.
Пожалуйста, оформите её согласно правилам оформления статей.
[скрыть]Условные обозначения
+
Указанная возможность присутствует
-
Указанная возможность отсутствует
+/-
Возможность поддерживается не полностью
-/+
Возможность поддерживается очень ограниченно
?
Нет данных
x
Постановка вопроса не применима к языку
[скрыть]Сравнения языков программирования
Общее сравнение
Основной синтаксис
Основные инструкции
Массивы
Ассоциативные массивы
Операции со строками
Строковые функции
List comprehension
Объектно-ориентированное программирование
Объектно-ориентированные конструкторы
Доступ к базам данных
СУБД баз данных
Оценка стратегии
Список программ «hello world»
Влияние ALGOL 58 на ALGOL 60
ALGOL 60: Сравнения с другими языками
Сравнение ALGOL 68 и C++
ALGOL 68: Сравнения с другими языками
Совместимость C и C++
Сравнение Pascal и Borland Delphi
Сравнение Object Pascal и C
Сравнение Pascal и C
Сравнение Java и C++
Сравнение C# и Java
Сравнение C# и Visual Basic.NET
Шаблон: Просмотр • Обсуждение • Править
В приведенной ниже таблице отмечено наличие или отсутствие тех или иных возможностей в некоторых популярных сегодня языках программирования. Столбцы упорядочены по алфавиту. Если возможность в языке недоступна напрямую, но может быть эмулирована с помощью других средств, то в таблице отмечено, что её нет.
При заполнении таблицы учтены только фактические данные, при том, что наличие возможности не обязательно является преимуществом языка, а отсутствие — недостатком.
Содержание
[убрать]
1 Парадигмы
2 Типизация
3 Компилятор/интерпретатор
4 Управление памятью
5 Управление потоком вычислений
6 Типы и структуры данных
7 Объектно-ориентированные возможности
8 Функциональные возможности
9 Разное
10 Стандартизация
11 Примечания
12 Терминология
12.1 Парадигмы
12.1.1 Императивная
12.1.2 Объектно-ориентированная
12.1.3 Рефлексивная
12.1.4 Функциональная
12.1.5 Обобщенное программирование
12.1.6 Логическая
12.1.7 Доказательная
12.1.8 Декларативная
12.1.9 Распределенная
12.2 Типизация
12.2.1 Статическая типизация
12.2.2 Динамическая типизация
12.2.3 Явная типизация
12.2.4 Неявная типизация
12.2.5 Явное приведение типов
12.2.6 Неявное приведение типов без потери данных
12.2.7 Неявное приведение типов с потерей данных
12.2.8 Неявное приведение типов в неоднозначных ситуациях
12.2.9 Алиасы типов
12.2.10 Вывод типов переменных из инициализатора
12.2.11 Вывод типов переменных из использования
12.2.12 Вывод типов-аргументов при вызове метода
12.2.13 Вывод сигнатуры для локальных функций
12.2.14 Параметрический полиморфизм
12.2.15 Параметрический полиморфизм с ковариантностью
12.2.16 Параметрический полиморфизм высших порядков
12.2.17 Информация о типах в runtime
12.2.18 Информация о типах-параметрах в runtime
12.3 Компилятор/интерпретатор
12.3.1 Open-source компилятор (интерпретатор)
12.3.2 Возможность компиляции
12.3.3 Bootstrapping
12.3.4 Многопоточная компиляция
12.3.5 Интерпретатор командной строки
12.3.6 Условная компиляция
12.4 Управление памятью
12.4.1 Объекты на стеке
12.4.2 Неуправляемые указатели
12.4.3 Ручное управление памятью
12.4.4 Сборка мусора
12.5 Управление потоком вычислений
12.5.1 Инструкция goto
12.5.2 Инструкция break без метки
12.5.3 Инструкция break с меткой
12.5.4 Поддержка try/catch
12.5.5 Блок finally
12.5.6 Блок else (исключения)
12.5.7 Перезапуски
12.5.8 Легковесные процессы
12.6 Типы и структуры данных
12.6.1 Многомерные массивы
12.6.2 Динамические массивы
12.6.3 Ассоциативные массивы
12.6.4 Цикл foreach
12.6.5 List comprehensions
12.6.6 Кортежи
12.6.7 Целые числа произвольной длины
12.6.8 Целые числа с контролем границ
12.7 Объектно-ориентированные возможности
12.7.1 Интерфейсы
12.7.2 Множественное наследование
12.7.3 Мультиметоды
12.7.4 Переименование членов при наследовании
12.7.5 Решение конфликта имен при множественном наследовании
12.8 Функциональные возможности
12.8.1 First class functions
12.8.2 Лексические замыкания
12.8.3 Частичное применение
12.9 Разное
12.9.1 Макросы
12.9.2 Шаблоны/Generics
12.9.3 Поддержка Unicode в идентификаторах
12.9.4 Перегрузка функций
12.9.5 Динамические переменные
12.9.6 Именованные параметры
12.9.7 Значения параметров по умолчанию
12.9.8 Локальные функции
12.9.9 Сопоставление с образцом
12.9.10 Контрактное программирование
13 Ссылки
[править] Парадигмы
Возможность
Язык
Ada
C
C++
C#
D
Eiffel
Erlang
Prolog
F#
Groovy
Java
JavaScript
Haskell
Common Lisp
Nemerle
Perl
PHP
Python
Ruby
Scala
Smalltalk
Tcl
VB.NET
Delphi
OCaml
PureBasic
Императивная
+
+
+
+
+
+
-
-
+
+
+
+
+ [1]
+
+
+
+
+
+
+
+
+
+
+
+
+
Объектно-ориентированная
+
-
+
+
+
+
- [2]
- [2]
+
+
+
+ [3]
- [4]
+
+
+
+
+
+
+
+
+
+
+
+
-/+
Функциональная
-
-
+/-
+/-
+/-
+/-
+
+
+
+
-
+/-
+
+
+
+
+/-
+/-
+
+
+
+
+/-
-/+
+
+/-
Рефлексивная
-
-
- [5]
-/+
-
?
+
+
-/+
-/+
-/+
+
-
+
-/+
+/-
+
+
+
-/+
+
+
-/+
-/+
-
?
Обобщенное программирование
+
-
+
+
+
+/-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
-/+
Логическая
-
-
-
-
-
-
-
+
-
-
-
-
+/- [6]
+/- [7]
+/-
-
-
-
-
?
+/-
-
-
-
-
?
Декларативная
-
-
-
-/+[8]
-/+
?
+
+
+
+
-
+/-
+
+[9]
+
-/+ [10]
+
+
+
+
+/-
-
+/-
-
+
+/-
Распределенная
+ [11]
+/- [12]
+/- [12]
-/+ [13]
-
+
+
+
-
-/+
+
-
+ [14]
+/-
-
-
-
-/+
-/+
?
+/-
?
-
-
-
-
Ada
C
C++
C#
D
Eiffel
Erlang
Prolog
F#
Groovy
Java
JavaScript
Haskell
Common Lisp
Nemerle
Perl
PHP
Python
Ruby
Scala
Smalltalk
Tcl
VB.NET
Delphi
OCaml
PureBasic
[править] Типизация
Возможность
Язык
Ada
C
C++
C#
D
Eiffel
Erlang
F#
Groovy
Java
JavaScript
Haskell
Common Lisp
Nemerle
Perl
PHP
Python
Ruby
Scala
Smalltalk
Tcl
VB.NET
Delphi
OCaml
PureBasic
Статическая типизация
+
+
+
+
+
+
-
+
+
+
-
+
+/-[15]
+
+/- [16]
-
-
-
+
+/- [17]
-
+
+
+
+
Динамическая типизация
-
-
-
-/+ [18]
-
-
+
-/+[19]
+
-
+
- [20]
+
-
+
+
+
+
-
+
+
+ [21]
-/+ [22]
-
-
Явная типизация
+
+
+
+
+
+
-/+ [23]
+
+
+
-
+
+/-[15]
+
-/+ [24]
+/-
+/- [25]
-
+
+/- [26]
-
+
+
+
+
Неявная типизация
-
-
-/+
-/+[27]
+
-
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
Неявное приведение типов без потери данных
-/+ [28]
+
+
+
+
+
-
-
+
-
+
-
+
+
+
+
+
+
?
+
+
+
+
-
+
Неявное приведение типов с потерей данных
-
+
+
-
+
-
-
-
-
-
?
-
-
?
+ [29]
+
-
-
?
+
+
+
+
-
-/+
Неявное приведение типов в неоднозначных ситуациях
Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет
studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав!Последнее добавление