Эта статья имеет рейтинг List-class по шкале оценки контента Википедии . Она представляет интерес для следующих WikiProjects : | |||||||||||||||||||||||||||||||||||||||||||||||||||
|
Текущее название этой страницы — «Мультипарадигмальные языки программирования».
В английском языке, по крайней мере в американском варианте английского языка, перенос слова после префикса «multi» не нужен, за исключением случаев, когда подлежащее слово начинается с буквы «i» или является именем собственным, начинающимся с заглавной буквы. (Я не грамматик и не преподаватель английского языка. Я работаю репортером в газете на неполный рабочий день.)
См. похожий случай: Мультиплатформенность в Мультиплатформенность .
Обсуждение этого вопроса было, возможно, здесь: Wikipedia talk:Manual_of_Style
Таким образом, представляется разумным изменить название страницы соответствующим образом на «Мультипарадигмальный язык программирования».
Является ли это правильным и лучшим местом для размещения подобных запросов или есть более подходящее место?
Спасибо.
Единственная квазифункциональная функция, которая приходит мне на ум, — это поддержка анонимных функций и функций более высокого порядка, но я не думаю, что это само по себе дает основания утверждать, что она заимствована из функциональной парадигмы. Tarcieri 01:09, 2 июля 2007 (UTC)
Стоит ли нам перевести его на следующий уровень?
Ruby добавляет параллелизм в небольшой степени с DRb. Хотя DRb связан с ядром Ruby, я бы не стал считать его частью языка. Сравните с Erlang, где параллелизм является неотъемлемой частью языка. DRb в Ruby можно было бы сравнить скорее с OTP Erlang (т.е. стандартной связанной библиотекой) Tarcieri 01:09, 2 июля 2007 (UTC)
Я немного обеспокоен как правильностью, так и полезностью сравнения языков в этой статье. В этом контексте нет определения «парадигмы» и нет полного списка парадигм, из которых можно выбирать. Вместо этого концепция парадигмы является ad hoc, иногда ошибочной (например, дженерики) и в основном вводящей в заблуждение. Следовательно, категоризация почти случайна. Например, OCaml в настоящее время указан как «две парадигмы», хотя он поддерживает функциональное, императивное, объектно-ориентированное, модульное и универсальное (что, кстати, не является шаблонным метапрограммированием). Является ли модульность парадигмой (она имеет совершенно другое значение в таких языках, как Lisp)? Являются ли энергичное и ленивое вычисление двумя отдельными парадигмами? Являются ли динамическая и статическая типизация парадигмами? Является ли параметрический полиморфизм парадигмой?
Категоризация — это шутка на самом деле. Я мог бы назвать несколько примеров, но я не хочу здесь навязывать какой-то один язык. Я бы счел гораздо более полезным просто объяснить происхождение слова, его использование и проиллюстрировать это некоторыми языковыми примерами и цитатами. Слово «мультипарадигма» слишком расплывчато, чтобы использовать его в качестве спецификации сортировки языка.
Может быть, утверждение, что C++ реализует 4 парадигмы, заходит слишком далеко... если так, то C реализовал бы по крайней мере 3 (императивную, функциональную и шаблонную с макросами). Я думаю, что язык не является функциональным, если он не реализует по крайней мере несколько из этих функций: функции высшего порядка (допустимо в C и C++ через указатели функций), хвостовая рекурсия, каррирование, ленивые вычисления и, возможно, некоторые другие.
Параллельность и распределенность не следует считать полноценными парадигмами, поскольку они обычно реализуются как библиотечные средства во всех языках программирования, независимо от (основной) парадигмы.
В этой статье отсутствует Erlang.
--85.59.39.220 14:51, 20 января 2006 (UTC)
Я тоже об этом думал. Думаю, сторонники языка C++ зашли здесь слишком далеко. Но ведь они всегда сходят с ума по поводу своих шаблонов, которые являются их собственным языком.
-- Кришик Т 14:14, 9 февраля 2006 (UTC)
Здесь вы не правы: Ada реализует параллельные и распределенные парадигмы как первоклассную языковую функцию, а не через библиотеку. Поэтому правильно иметь их на странице.
Вопрос:
-- Кришик Т 14:14, 9 февраля 2006 (UTC)
::Включение стандартной библиотеки учитывается для встроенной поддержки, внешние библиотеки — нет. 188.57.101.218 (обсуждение) 19:54, 28 апреля 2013 (UTC)
Действительно ли правильно говорить, что Common Lisp поддерживает только функциональную и объектно-ориентированную парадигмы? Common Lisp поддерживает императивное программирование так же хорошо, как и такие языки, как Python или Ruby. Я бы подумал, что его (по крайней мере) следует включить в список поддерживающих функциональные, императивные и объектно-ориентированные.
--66.115.232.200 22:04, 24 февраля 2006 (UTC)
Я думаю, то же самое справедливо и для Дилана, но я бы сказал, что это не относится к схеме, поскольку в ней отсутствуют базовые циклические конструкции, и предполагается, что вы создадите свои собственные на основе функционального хвостового вызова.
Три языка LISP (Scheme, Dylan и CL) также заслуживают того, чтобы быть классифицированы как поддерживающие символьные вычисления, см. книгу Турецкого: http://www.cs.cmu.edu/~dst/LispBook/index.html или как разрабатывать программы: http://www.htdp.org/2003-09-26/Book/curriculum-ZH-1.html Их также следует классифицировать как поддерживающие метапрограммирование, т.е. написание кода, который пишет код, см. `On Lisp' Грэма или просто погуглите название языка + макросы.Jekyll 18:53, 23 июня 2007 (UTC)
Кроме того, макросы Lisp проще в использовании и мощнее шаблонов C++, поэтому здесь должно быть различие. C++ следует указать как поддерживающий «параметрический полиморфизм», потому что это единственное простое, что можно сделать с его шаблонами. Тяжелое метапрограммирование в C++, которое так нравится людям, не является естественным или простым; это как-то странно. Прочтите исходный код любой библиотеки boost, если вы мне не верите. Сравните с любым макросом Lisp. -- wg, 28 сентября 2007 г.
Объектно-ориентированный? Забавно, учитывая не только то, что www.php.net не определяет php таким образом, но и то, что там также специально указано, что PHP не является ... conio.h • talk 11:24, 8 августа 2006 (UTC)
Если concurrent — это парадигма, то Java был одним из первых современных языков со встроенной синтаксической поддержкой concurrency. Таким образом, Java будет объектно-ориентированным и concurrent.
Начиная с Java 1.5, разве Java не будет языком 4 парадигмы? См. Generics_in_Java . —Предыдущий неподписанный комментарий добавлен 206.47.254.12 (обсуждение) 20:43, 5 марта 2008 (UTC)
Согласно определению универсального программирования , Java может быть языком 4 парадигм, в противном случае информация на странице универсального программирования должна быть изменена.
Было бы полезно, если бы в этом обсуждении приняло участие больше пользователей. Dpbsmith (обсуждение) 03:27, 17 декабря 2006 (UTC)
Статья, похоже, путает термин и маркетоидизированную интерпретацию термина. Разрешает ли PHP логическое и функциональное программирование? Имеет ли Java гарантированную оптимизацию sibcall для избежания переполнения стека при использовании двух взаимно вызывающих функций итеративно? Что такое «мультипарадигма» определяется тем, легко ли ЯП допускает более одного программирования, например, функциональное (полностью, а не фиктивное), итеративное (полностью, а не фиктивное), логическое программирование (полностью, а не фиктивное) и параллельное программирование. Скоро я составлю список упомянутых ЯП, которые не являются мультипарадигмальными. Сказал: Rursus ☺ ★ 08:07, 2 июня 2007 (UTC)
Более:
Теперь, Страуструп не тот "авторитет", на которого можно ссылаться в компьютерных науках. Лучше профессор или что-то в этом роде! Страуструп сделал непрактичное "улучшение" C с серьезными недостатками дизайна, которые бесят людей, чтобы создавать Java, Csharp и D. Немультипарадигмальные PL:s, в статье:
Утверждения статьи совершенно нелепы! Добавьте еще к списку ложных утверждений сами! Сказал: Rursus ☺ ★ 08:23, 2 июня 2007 (UTC)
Еще: нет смысла считать некоторые парадигмы дважды, например, dataflow/concurrent и императивный/объектно-ориентированный. Dataflow — это потоки данных в параллельном языке программирования, а object-oriented — это данные, которые обычно используются в императивных PL. «Парадигмы» — это многообразия взглядов на то, что считать данными, а что программами, например, concurrent парадигма, рассматривающая процессы (запущенные программы) как сущности (данные). Многопарадигмальный PL реализует такие многообразия без видимых явных проектных решений, чтобы полностью позволить программисту строго придерживаться той или иной парадигмы. Например, возможность определять функции в C не делает C функциональным языком программирования, поскольку функциональное программирование заключается в создании бесконечных циклов (не переполнений стека) с помощью вызова самой себя функцией. Сказал: Rursus ☺ ★ 08:53, 2 июня 2007 (UTC)
Я часто захожу сюда и смотрю, что произошло. И всегда есть инфляция парадигм различными защитниками языка, не имеющими никаких доказательств. Я думаю, что отсутствие доказательств и ответственности является здесь главной проблемой. Интересно, было ли полезно просто удалить всю страницу и начать заново.
Я мог бы представить, что новая страница больше не будет сортироваться по количеству парадигм - это заставляет сторонников языка слишком завидовать. Вместо этого я предлагаю сортировать по названию языка - с небольшой статьей о том, как язык поддерживает какую парадигму.
Надеюсь, такие маленькие статьи предотвратят быстрое добавление записей типа "я тоже" . Авторам придется думать о том, что они пишут. Кроме того, любые ложные заявления будут легко обнаружены.
Ах да, ★ не могли бы вы прочитать wikibooks:Ada_Programming/Tasking и сказать мне, чего именно не хватает в типе задачи, чтобы он подпадал под определение процессов (запускаемых программ) как сущностей (данных) . (Конечно, я также сторонник языка, но, по крайней мере, я добавляю ссылки на свои утверждения) -- Krischik T 07:40, 25 марта 2009 (UTC)
Я думаю, что предупреждения в конце статьи достаточно: тот, кто добавил все эти дурацкие теги «Требуется цитирование», действительно испортил статью.
Предлагаю удалить его, так как это CLI. -- QuicksilverPhoenix ( обсуждение ) 19:45, 24 января 2008 (UTC)
Я думаю, что Prolog — это тоже язык программирования. Я не прав? --Controll (обсуждение) 15:54, 15 февраля 2008 (UTC)
Эта статья, похоже, является упражнением в чрезмерной классификации того, что во многих отношениях является нечеткими концепциями. Поскольку никто не согласен на 100%, что можно квалифицировать как язык ООП, как классифицировать язык, который является ООП лишь частично (по какому-то конкретному определению)? Считается ли это поддержкой 2,5 парадигм? Конечно, вопрос о том, поддерживает ли данный язык данную парадигму (что бы это ни значило), является вопросом степени? Это не вопрос «да/нет». Поэтому подсчет поддерживаемых парадигм и классификация языков в соответствии с количеством парадигм кажутся усугублением греха. У Ричарда Докинза есть термин для того, что эта статья, похоже, пытается сделать — он называет это «Тирания прерывистого разума» (т. е. поиск жестких и быстрых границ там, где их на самом деле не существует в реальности).
Все вышесказанное, разве Аспектно-ориентированное программирование не считается парадигмой? А как насчет Метапрограммирования ?
Небольшое предложение: Haskell. Менее незначительное предложение: добавьте таблицу с языками в строках и парадигмами в столбцах, чтобы было легче понять «различия» между любыми двумя. — Предыдущий неподписанный комментарий добавлен 99.162.208.204 ( обсуждение ) 14:38, 29 июня 2008 (UTC)
Я считаю полезным число поддерживаемых "числа парадигм", я сортирую по нему. Я предлагаю "Абстрактные типы данных (ADT)" как способ зафиксировать различие "не полностью ОО". Страница о CLU (язык программирования) фиксирует это различие. Кроме того, многие столбцы в сравнительной таблице должны быть сгенерированы из информационного поля для каждого языка. Информационное поле должно перечислять парадигмы, поддерживаемые языком. Таким образом, будет меньше "оригинальных исследований" или неподтвержденных заявлений. rhyre ( talk ) 11:02, 1 ноября 2014 (UTC)
Я не уверен, как "официально" предложить слияние, но я думаю, что эта тема должна быть перенаправлена в Programming paradigm . Поскольку практически каждый язык общего назначения может быть классифицирован как "мультипарадигмальный", большая часть этой статьи сводится к мелочам. Список языков можно полностью удалить или, возможно, скопировать в Comparison of programming languages , как предлагалось выше. Поскольку список в основном не имеет источников, неполон и даже спорен, я бы согласился на удаление. Кто-нибудь согласен? Не согласен? Maghnus ( обсуждение ) 03:15, 6 июля 2008 (UTC)
Извините, если вопрос глупый, но действительно ли Java поддерживает ФП?
Если так, кто-нибудь должен добавить это на страницу Java_(programming_language) , так как там говорится, что это только OO, структурированный и императивный язык.-- 189.29.141.31 (обсуждение) 07:49, 2 сентября 2008 (UTC)
int f (int x) { return 1 + f(x); }
Конвейер? Серьёзно? Парадигма? Признаюсь, я не знаю PowerShell, но мне трудно поверить, что соединение вывода одной программы с вводом другой программы можно назвать «парадигмой». Я могу связать исполняемый файл C и скрипт Perl вместе. Делает ли это эти два языка «поддерживающими парадигму конвейера»? Есть ли что-то ещё в этой «конвейеризации» PowerShell, что отличает её от этого? Или это попытка увеличить «количество парадигм» PowerShell? -- DevSolar ( обсуждение ) 08:00, 7 июля 2011 (UTC)
Programming newb здесь. Процедурное программирование обсуждается в этих статьях, ссылки на которые приведены здесь, как парадигма программирования , но здесь оно не указано. Если оно в основном отсутствует здесь, потому что (что сбивает с толку) в этой статье оно рассматривается как тип языка, а не парадигма, то его следует удалить из Python (и переместить Python в 3-парадигму?). Или, если это парадигма, Python не может быть единственным языком, который подходит. Спасибо, "alyosha" (обсуждение) 19:29, 25 августа 2012 (UTC)
Согласно Higher-Order Perl , Perl также поддерживает декларативное программирование и другие вещи, так почему же он отмечен как "Нет"? Это также был бы хороший источник для цитат, так как это бесплатная (доступная онлайн) книга. --Athaba ( обсуждение ) 09:42, 30 января 2013 (UTC)
Я не совсем понимаю, в какой степени язык должен поддерживать рефлексию, чтобы получить «Да» в этой колонке. Perl поддерживает рефлексию для объектов, но не для скаляров, массивов или хэшей. Это считается? -- 12.146.21.163 (обсуждение) 18:53, 5 февраля 2014 (UTC)
https://en.wikipedia.org/wiki/Racket_%28programming_language%29 Мультипарадигма: функциональная, процедурная (императивная), модульная, объектно-ориентированная, логическая, рефлексивная, метапрограммирование — Предыдущий неподписанный комментарий добавлен BearnHeart ( обсуждение • вклад ) 19:25, 31 марта 2015 (UTC)
D поддерживает метапрограммирование через шаблонное метапрограммирование и строковые миксины. Можем ли мы сделать адекватные изменения, чтобы отразить это.
Я написал следующий черновик на своей странице пользователя здесь
См. http://dlang.org/template.html и http://dlang.org/mixin.html
Добавлены эти изменения 16 ноября 2015 г. Machinistprogrammer ( обсуждение ) 02:02, 16 ноября 2015 г. (UTC)
Уже упомянутый в викиучебнике «Проектирование через интроспекцию» описывает его так:
″можно спроектировать шаблонный класс или структуру таким образом, чтобы он проверял свои аргументы шаблона во время компиляции на предмет различных возможностей, а затем адаптировался к ним. Например, конструкция составного распределителя может проверять, предоставляет ли родительский распределитель перераспределение, и эффективно делегировать ему полномочия или откатываться к реализации перераспределения с помощью malloc() и free(), или вообще не предлагать его. Преимущество выполнения этого во время компиляции заключается в том, что пользователь указанного распределителя может знать, следует ли ему использовать reallocate(), вместо того чтобы получать загадочные ошибки времени выполнения″
Эту идею впервые описал здесь (стр. 44) Андрей Александреску.
Мысли?
Как насчет добавления Go_(programming_language) — Предыдущий неподписанный комментарий, добавленный Long.mindworker ( обсуждение • вклад ) 16:37, 8 декабря 2015 (UTC)
Machinistprogrammer ( обсуждение ) 06:21, 13 ноября 2015 (UTC)
Не знаю. Go императивен, рефлексивен и параллелен, но эта страница не описывает многопарадигменность. Для пущего эффекта библиотеки и расширения языка, похоже, подходят, но так много парадигм могут быть эмулированы друг другом с помощью соответствующих шаблонов проектирования. Мистер Мормон ( обсуждение ) 22:57, 4 февраля 2016 (UTC)
На ум приходят F# и Elixir. Достаточно ли идиоматических |> или составных .? — Предыдущий неподписанный комментарий добавлен Mister Mormon ( talk • contribs ) 04:18, 20 февраля 2016 (UTC)
Что считается парадигмой? Только один раз в таблице? Или мы должны также учитывать "другие парадигмы", которые не указаны/не связаны? Аноним~dewiki ( обсуждение ) 21:25, 25 октября 2016 (UTC)
Здравствуйте, уважаемые википедисты!
Я только что изменил одну внешнюю ссылку на Comparison of multi-paradigm programming languages . Пожалуйста, уделите немного времени, чтобы просмотреть мои правки. Если у вас есть какие-либо вопросы или вам нужно, чтобы бот игнорировал ссылки или страницу в целом, посетите этот простой раздел FaQ для получения дополнительной информации. Я внес следующие изменения:
Закончив просмотр моих изменений, вы можете следовать инструкциям в шаблоне ниже, чтобы исправить любые проблемы с URL-адресами.
Это сообщение было опубликовано до февраля 2018 года . После февраля 2018 года разделы страниц обсуждения "Внешние ссылки изменены" больше не генерируются и не отслеживаются InternetArchiveBot . Никаких специальных действий в отношении этих уведомлений на страницах обсуждения не требуется, кроме регулярной проверки с использованием инструкций инструмента архивации ниже. Редакторы имеют право удалять эти разделы страниц обсуждения "Внешние ссылки изменены", если они хотят очистить страницы обсуждения от загромождения, но перед выполнением массовых систематических удалений ознакомьтесь с RfC . Это сообщение динамически обновляется через шаблон (последнее обновление: 5 июня 2024 г.) .{{source check}}
Привет.— InternetArchiveBot ( Сообщить об ошибке ) 17:19, 11 августа 2017 (UTC)