Принципиально разные языки/парадигмы

Автор: zheka-ki
Опубликовано: 491 день назад (16 января 2011)
Рубрика: Без рубрики
0
Голосов: 0
Мне известны следующие классы принципиально различающихся языков и парадигм программирования:
- Семейство Си: C, C++, Java, C#, Pascal, Basic и т.п. Императивный стиль, слабая статическая типизация (местами полиморфная); некоторая поддержка ООП.
- Семейство ML: ML, Haskell, Miranda, OCaml, F#, ... - функциональный стиль, строгая статическая типизация с выводом типов, обычно отсутствие мутаций, хаскелл ленивый и обладает системой классов типов и многими другими "типовыми" штуками.
- Lisp, Scheme: строгая динамическая типизация, символьные данные, программы-макросы - богатейшая поддержка создания встроенных языков и, как следствие, его никак нельзя отнести к какой-то конкретной парадигме. Впрочем, есть уклон в сторону функционального стиля.
- APL, J, K, Q, A+, ..: программирование, основанное на массивах. Типизация строгая динамическая, но весьма скромная; функциональный стиль, обычно отсутствие мутаций, очень богатый набор сверхоптимизированных функций для любого рода операций с многомерными массивами и комбинаторов (особенно интересен J с его "вилками" и "крючками" - ни в каком другом языке нет ничего подобного).
- Mathematica - специально заточена под символьные данные и переписывание термов, а также работу с многомерными массивами.
- Пролог - логическое декларативное программирование; плохо знаком с ним, пусть лучше расскажет кто-нибудь другой
- Форт - конкатенативный и изначально низкоуровневый язык, базис - операции со стеком; насчет типизации тоже не знаю, опять же пусть расскажет кто-нибудь другой.
- Эрланг - встроенная поддержка параллелизма, отсутствие мутаций, строгая динамическая типизация, символьные данные

Известно ли вам что-то еще? Хотелось бы расширить кругозор и себе, и читателям этой группы :)
Direсtx : загрузка в мэш модели из x файла с текстурами | глупый вопрос про коды символов и интернет
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: К вопросу о парадигмах, конечно, я сам бы не назвал это парадигмой, но есть те, кто называют. В любом случае, это явно особый подход, особый стиль использования таких языков, определённая культура.