Принципиально разные языки/парадигмы
|
|
Опубликовано: 491 день назад (16 января 2011)
|
|
Мне известны следующие классы принципиально различающихся языков и парадигм программирования:
- Семейство Си: C, C++, Java, C#, Pascal, Basic и т.п. Императивный стиль, слабая статическая типизация (местами полиморфная); некоторая поддержка ООП.
- Семейство ML: ML, Haskell, Miranda, OCaml, F#, ... - функциональный стиль, строгая статическая типизация с выводом типов, обычно отсутствие мутаций, хаскелл ленивый и обладает системой классов типов и многими другими "типовыми" штуками.
- Lisp, Scheme: строгая динамическая типизация, символьные данные, программы-макросы - богатейшая поддержка создания встроенных языков и, как следствие, его никак нельзя отнести к какой-то конкретной парадигме. Впрочем, есть уклон в сторону функционального стиля.
- APL, J, K, Q, A+, ..: программирование, основанное на массивах. Типизация строгая динамическая, но весьма скромная; функциональный стиль, обычно отсутствие мутаций, очень богатый набор сверхоптимизированных функций для любого рода операций с многомерными массивами и комбинаторов (особенно интересен J с его "вилками" и "крючками" - ни в каком другом языке нет ничего подобного).
- Mathematica - специально заточена под символьные данные и переписывание термов, а также работу с многомерными массивами.
- Пролог - логическое декларативное программирование; плохо знаком с ним, пусть лучше расскажет кто-нибудь другой
- Форт - конкатенативный и изначально низкоуровневый язык, базис - операции со стеком; насчет типизации тоже не знаю, опять же пусть расскажет кто-нибудь другой.
- Эрланг - встроенная поддержка параллелизма, отсутствие мутаций, строгая динамическая типизация, символьные данные
Известно ли вам что-то еще? Хотелось бы расширить кругозор и себе, и читателям этой группы :)
|
anton-sh
#
22 января 2011 в 17:14
0
|
|
Assembler и SQL. Описывать не буду - так красиво не получится :)
|
|
|
zheka-ki
#
2 февраля 2011 в 11:43
0
|
|
Да, про асм согласен - зря я его не упомянул. SQL тоже зря не упомянул, но это не совсем язык программирования, поэтому я его не упомянул. Хотя в качестве парадигмы сойдет.
|
|
|
dima-mir
#
11 февраля 2011 в 05:12
0
|
|
T-SQL как раз очень даже язык - для оперирования понятием множества и все что с этим связано.
- Lisp, Scheme. К ним, я бы все же прибавил (и/или вынес) ruby, smalltalk. Обмен сообщениями, все объекты и т.д.
|
|
|
anton-sh
#
8 марта 2011 в 02:24
0
|
|
Кстати, есть еще такая порнография как XSL :)
|
|
|
Qwerty-Q
#
4 апреля 2011 в 07:31
0
|
|
Objective-C, Smalltalk - ОО-парадигма. Есть возможность писать в императивном стиле, но тогда не почувствуешь весь сок этих языков.
|
|
|
ruslan-s
#
8 апреля 2011 в 11:10
0
|
|
Brainfuck не забудьте ))
|
|
|
Qwerty-Q
#
7 мая 2011 в 01:10
0
|
|
2Руслан Куда ж без него :) Это из разряда эзотерики. Just for fun, как говорится.
|
|
|
leonid-m
#
7 мая 2011 в 19:55
0
|
|
тогда добавьте еще Limbo (из семейства squeak) по описанию в некоторой степени напоминает эрланг (как я понимаю): строгая типизация, кроссплатформенность (байткод), заточенность под многопоточное исполнение
|
|
|
timur-ba
#
3 июня 2011 в 05:17
0
|
|
Нууу, еще можно выделить языки для программирования шейдеров: GLSL, HLSL, CG. Про GLSL в основе векторные операции, кот. выполняются за такт. Отсутствуют классы, рекурсия (возможно пока).
|
|
|
zheka-ki
#
21 июня 2011 в 19:53
0
|
|
XSL - да, но это типа SQL. И то и другое - декларативные языки для описания множеств и выборок.
|
|
|
ajrat-ha
#
17 августа 2011 в 08:25
0
|
|
Классная тема! Объясните пожалуйста: 1) преимущества и недостатки разных стилей и парадигм 2) может я ошибаюсь, но почему наиболее популярно семейство Си и императивный стиль(по описанию самый слабый)
|
|
|
anton-ne
#
2 сентября 2011 в 00:57
0
|
|
это бы и я непрочь знать ;) Наверное, потому что в школе его преподают - понятие алгоритма и т.д. А ООП или что-нить похлеще - только в универе, и то не всегда :(
|
|
|
zheka-ki
#
14 сентября 2011 в 19:27
0
|
|
1 - попозже расскажу 2 - сам удивляюсь. Скорее всего, это оттого, что эти языки наиболее близки к архитектуре компьютера (фон-неймановской) и поэтому исторически появились раньше, и обычно допускают компиляцию в более эффективный код (хотя, между прочим, не всегда). Ну и эти языки, так сказать, самые "надежные" с точки зрения бизнеса - на них _хоть что-нибудь_ сможет написать даже плохой программист.
|
|
|
denis-ri
#
18 сентября 2011 в 15:12
0
|
|
XSLT в функциональную парадигму. Очень интересный язык TCL, наверное, следует отнести в семейство Lisp за счет игр с конструкциями самого языка, например, подлключая библиотеку, написаную на самом TCL, добавляем поддержку ООП навыбор как в smalltalk или как в C++/Java
|
|
|
zheka-ki
#
19 сентября 2011 в 01:24
0
|
|
Не согласен, что XSLT функциональный. Там нет никаких средств комбинирования, нет функций высшего порядка. Он чисто декларативный, как SQL.
Возможно, я чего-то в нем недоглядел; Денис, поясни, что ты имел в виду.
TCL - согласен, его тоже стоит упомянуть. Жаль, я его не знаю :(
|
|
|
anton-kr
#
4 октября 2011 в 23:12
0
|
|
А как же можно было упустить из виду интерпретируемые языки программирования? Perl и shell-script - уверен, эти два примера не исключения.
|
|
|
zheka-ki
#
24 октября 2011 в 04:35
0
|
|
А чего в них такого особенного? Они императивные и динамические. Никакой новой парадигмы.
|
|
|
anton-kr
#
7 ноября 2011 в 21:46
0
|
|
Жека, я к тому, что про них не упомянули и не отнесли к каким-либо группам, что, на мой взгляд, не совсем справедливо. Очень мощные инструменты.
|
|
|
andrej-v
#
12 ноября 2011 в 14:54
0
|
|
Интерпретируемые, со строгой динамической, с лексическим обзором имён, основанные на OO с элементами FP — «скриптовые языки». А именно: Perl, Python, Ruby, PHP, etc. Кое-кто из них ближе к Scheme, кто-то — к C. Но это явно самостоятельная группа. Вообще по парадигмам см. книжку, о которой я тебе писал.
|
|
|
andrej-v
#
22 ноября 2011 в 23:31
0
|
|
@#17:18: К вопросу о парадигмах, конечно, я сам бы не назвал это парадигмой, но есть те, кто называют. В любом случае, это явно особый подход, особый стиль использования таких языков, определённая культура.
|
|