Самый интересный немейнстримовый язык?[закрыто]

StackOverflow https://stackoverflow.com/questions/200721

Вопрос

Меня интересуют компиляторы, интерпретаторы и языки.

Какой самый интересный, но забытый или неизвестный язык вы знаете?И что еще более важно, почему?

Меня интересуют как компилируемые, интерпретируемые, так и виртуальные языки, но нет эзотерические языки, такие как Whitespace или BF.
Открытый исходный код, конечно, был бы плюсом, поскольку я планирую изучить его и, надеюсь, извлечь из него уроки.

Это было полезно?

Решение

Я люблю компиляторы и виртуальные машины, и я люблю Lua.

Lua не так хорошо поддерживается, как многие другие языки сценариев, но с таким мышлением, как ваше, я уверен, что вы тоже влюбитесь в Lua.Я имею в виду, что это похоже на lisp (насколько я знаю, он может делать все, что может лисп), имеет множество основных функций ADA, плюс в него встроено метапрограммирование, причем функциональное программирование и объектно-ориентированное программирование достаточно свободны, чтобы создать любой тип доменного языка, который вам может понадобиться.Кроме того, код виртуальной машины написан на простом языке C, что означает, что вы можете легко вникнуть в него, чтобы оценить его даже на этом уровне.

(И это лицензия MIT с открытым исходным кодом)

Другие советы

Я поклонник языка программирования D.Вот статья в Википедии и и интро с официального сайта.

Некоторые фрагменты статьи в Википедии:

Язык программирования D, также известный как D, представляет собой объектно-ориентированный, императивный, мультипарадигмальный системный язык программирования, разработанный Уолтером Брайтом из Digital Mars.Он возник как реинжиниринг C++, но, хотя на него преимущественно влияет этот язык, он не является вариантом C++.В языке D были переработаны некоторые функции C++, и на него повлияли концепции, используемые в других языках программирования, таких как Java, C# и Eiffel.Стабильная версия 1.0 была выпущена 2 января 2007 года.Экспериментальная версия 2.0 была выпущена 17 июня 2007 года.

по особенностям:

D разрабатывается с учетом уроков, извлеченных из практического использования C++, а не с теоретической точки зрения.Несмотря на то, что он использует многие концепции C/C++, он также отбрасывает некоторые из них и поэтому не имеет строгой обратной совместимости с исходным кодом C/C++.Он расширяет функциональность C++, реализуя проектирование по контракту, модульное тестирование, настоящие модули, сборку мусора, массивы первого класса, ассоциативные массивы, динамические массивы, нарезку массива, вложенные функции, внутренние классы, замыкания[2], анонимные функции, выполнение функций во время компиляции, отложенное вычисление и обновленный синтаксис шаблонов.D сохраняет способность C++ выполнять низкоуровневое кодирование и дополняет ее поддержкой встроенного встроенного ассемблера.Множественное наследование C++ заменено одинарным наследованием в стиле Java с интерфейсами и примесями.Синтаксис объявлений, операторов и выражений D очень похож на синтаксис C++.

Я думаю, многое зависит от того, что вы подразумеваете под «неосновным направлением».

Бы шепелявить считать неосновным?

Я бы посоветовал взглянуть на Erlang - в последнее время о нем много пишут в прессе, поэтому некоторые учебные ресурсы превосходны.Если вы использовали объектно-ориентированные и/или процедурные языки, Erlang определенно изменит ваше мышление новыми и захватывающими способами.

Erlang — это чисто функциональный язык с базовой поддержкой параллельных, распределенных и отказоустойчивых программ.Он имеет ряд интересных особенностей, в том числе тот факт, что переменные на самом деле вообще не являются переменными: их нельзя изменить после объявления, и на самом деле их лучше понимать как форму шаблона.

В блогосфере ходят разговоры о создании поверх платформы Erlang (OTP) и машинной поддержке других языков, таких как Ruby — тогда Erlang станет своего рода виртуальной машиной для одновременного запуска приложений, что было бы довольно интересной возможностью.

Недавно я влюбился в Окамл и функциональные языки в целом.

Ocaml, например, предлагает лучший из всех возможных миров.Вы получаете код, который компилируется в исполняемый машинный язык так же быстро, как C, или универсально переносимый байт-код.Вы получаете интерпретатор, который обеспечит скорость разработки REPL.Вы получаете все возможности функционального программирования для создания идеально ортогональных структур, глубокой рекурсии и истинного полиморфизма.Поверх всего этого стоит поддержка объектно-ориентированной ориентации, которая в контексте функционального языка, который уже обеспечивает все, что обещает ООП (инкапсуляция, модуляризация, ортогональные функции и полиморфная переработка), означает ООП, который вынужден на самом деле проявить себя.

Болтовня (см. обсуждение по ссылке здесь).Своего рода дедушка динамических языков (за возможным исключением Lisp и SNOBOL).Очень приятно работать, но, к сожалению, его попирает Java, а теперь и новые языки, такие как Python и Ruby.

FORTH был языком, разработанным для низкоуровневого кода на ранних процессорах.Его наиболее примечательной особенностью были математические операции на основе стека RPN.Тот же тип вычислений использовался в ранних калькуляторах HP.Например, 1+2+3+4= будет записано как 1, 2, 3, 4, + , +, +

Haskell и REBOL — замечательные языки по совершенно разным причинам.

Haskell действительно может открыть вам глаза как разработчику благодаря таким понятиям, как монады, частичное приложение, сопоставление с образцом, алгебраические типы и т. д.Это шведский стол для любознательного программиста.

REBOL тоже не отстает.На первый взгляд это обманчиво просто, но когда вы начинаете углубляться в такие понятия, как контексты, диалекты PARSE и биндология, вы понимаете, что существует гораздо больше, чем кажется на первый взгляд.Преимущество REBOL в том, что начать с ним гораздо проще, чем с Haskell.

Не могу решить, что мне больше нравится.

Бу ориентирован на платформу .NET и имеет открытый исходный код.Вдохновлен Python.

Пытаться цветForth.

PROLOG — это язык, основанный на правилах, с функцией обратного отслеживания.Вы можете создавать очень удобочитаемый (как в prosa) код.

Я нахожу языки ограничений интересными, но трудно понять, что такое забытое или неизвестное.Вот некоторые языки, о которых я знаю (это, конечно, не исчерпывающий список):

  • Чао, ЯП, SWI-Пролог, и GNU Пролог все это реализации Пролога.Я думаю, что они все с открытым исходным кодом.Ciao, gnu prolog и, возможно, другие, как это обычно бывает в реализациях Пролога, поддерживают другие типы ограничений.Например, целочисленное программирование.
  • Моцарт и Меркурий насколько я понимаю, оба являются альтернативными языками логического программирования.
  • Алиса больше относится к семейству ML, но поддерживает программирование ограничений с использованием ГЕКОДИРОВАНИЕ библиотека С++.

Немного отклоняюсь от темы....

  • Мод это интересный термин «язык перезаписи».
  • ХОЛ и COQ Обе системы механизированного доказательства широко используются в языковом сообществе.

Лямбда-Ультимейт — хорошее место, чтобы поговорить и узнать больше о языках программирования.

Я бы сказал «Схема», особенно в ее Р6РС воплощение.

Modula-2 — это неосновной язык, который мне показался наиболее интересным.Выглядит стандартно, но работает не совсем так, как мы привыкли.Во многом унаследовал от Паскаля, но при этом достаточно отличается, чтобы обеспечить интересные возможности обучения.

Взгляните на Ио на http://www.iolanguage.com/или Лизаак по адресу: https://gna.org/projects/isaac/или самостоятельно по адресу: http://self.sourceforge.net/или Сатер (теперь абсолютно забытый) или Эйфелева http://www.eiffel.com

Почему вот несколько причин.Io абсолютно минималистичен и даже не имеет «элементов потока управления» в качестве синтаксических сущностей.Lisaad — это продолжение Eiffel со многими упрощениями AFAIKT.Self является продолжением Smalltalk, и Io также многое перенял от Self.Основная вещь заключается в том, что различие между классом и объектом было утеряно.Sather — это ответ на Eiffel с несколькими другими правилами и лучшей поддержкой функционального программирования (с самого начала).

И Eiffel определенно является визитной карточкой статически типизированных объектно-ориентированных языков.Eiffel был первым языком, поддерживающим дизайн по контракту, дженерики (шаблоны) и один из лучших способов управления наследованием.Это был и остается одним из самых простых языков.Я со своей стороны нашел лучшие библиотеки для Эйфеля.....

У его создателя есть только одна проблема: он не принимал другие материалы в области объектно-ориентированного программирования.....

С уважением

Я недавно узнал о Наличие Икона от этот вопрос.С тех пор я использовал его в ответах на несколько вопросов.(1, 2, 3, 4)

Он интересен своей стратегией оценки — это единственный известный мне императивный язык, поддерживающий возврат с возвратом.Это позволяет получить хороший краткий код для многих вещей :)

Изучение любого языка, который потребует от вас переосмысления своих привычек программирования, является обязательным.Верным признаком является скорость, с которой вы просматриваете документацию по ядру языка (не по библиотеке).Здесь «быстро» означает «бесплодно».

Мой краткий список будет выглядеть так: в порядке моего знакомства и того, какие концепции я из них узнал:

  • Сборка, С:отлично подходит для изучения указателей и их арифметики.
  • С++:то же, что и C, с введением в дженерики, если только вы можете выдержать невероятно многословный синтаксис.
  • Руби/Луа:языки сценариев, динамическая типизация, написание привязок для существующих библиотек C.
  • Питон/С#/Ява:пропущенные, эти языки кажутся мне перефразированием понятий, зародившихся где-то в огромной стандартной библиотеке.Конечно, все пакеты хороши, но вы не узнаете здесь новых концепций.
  • Окамл:правильный вывод типа, частичное применение, универсальность, выведенная компилятором, неизменяемость по умолчанию, как элегантно обрабатывать значения NULL.
  • Хаскелл:лень по умолчанию, монады.

Мой €.02.

Я не могу поверить, что Лого так забыт.Хорошо, это логотип.Что-то вроде Lisp, но с немного более уродливым синтаксисом.При работе со списками в Logo можно встретить операции с очаровательными названиями «butfirst» и «butlast».=П

МЛ.Изучение и использование этого заставит вас по-другому взглянуть на проблемы программирования.В большинстве случаев это также дает терпение.Большинство.

Как насчет идти?Это совершенно новый продукт, поэтому он неизвестен и не является мейнстримом (пока).

Это интересно, потому что синтаксис выглядит так, как если бы вы поместили C и Pascal в банку и заставили их драться.

Ну, когда-то это называлось Свинка но теперь оно называется InterSystems Cachéhttp://www.intersystems.com/cache/

Первый ответ - Схема.Он не слишком широко используется, но определенно кажется надежным языком для использования, особенно учитывая надежность DrScheme (который фактически компилирует программы Scheme в собственный двоичный код).

После этого — Haskell невероятно интересен.Это язык, который правильно выполняет ленивые вычисления, и последствия невероятны (включая такие вещи, как однострочное определение последовательности Фибоначи).

Становясь все более популярным, Python все еще не получил широкого признания в деловых кругах, но к настоящему времени он определенно должен быть таковым...

ToonTalk Кена Кана, язык мультфильмов с жесткой теоретической основой:http://www.toontalk.com/

Програф: http://en.wikipedia.org/wiki/Prograph ...кажется, Програф продолжает жить как Мартен: http://andescotia.com/products/marten/

IDE Селфа была/есть прекрасна, поговорим о Flow (в смысле Чиксентмихайи)...

Однако в целом я должен сказать, что Haskell является наиболее интересным из-за потенциальных достижений в области вычислений, которые он представляет.

Гавань для динамического типа.Отличный вариант для бизнес-приложений.

Рейя!

http://wiki.reia-lang.org/wiki/Reia_Programming_Language

В Erlang есть смысл, он прекрасен, и я влюблен в него.Оно настолько неизвестно, что у него даже нет страницы в Википедии!

Первым основным языком (не BASIC), который я выучил, был Dream Maker от http://www.byond.com.Он чем-то похож на C++ или Java, но в значительной степени создан для разработки многопользовательских онлайн-игр.Это во многом основано на наследственности.Это интересный язык, особенно в качестве стартового, он быстрее дает обнадеживающие результаты, и, честно говоря, большинство людей, которые впервые учатся программировать, заинтересованы в одном...игры.

я нахожу Фактор, Оз и OCaml довольно интересно.Фактически, я начал использовать Factor для личных проектов.

Ребол конечно!Это так просто, но так мощно. Изучите это на http://reboltutorial.com

Недавно я много искал о Windows PowerShell.

Хотя это не обязательно только язык.Это потрясающая оболочка со встроенным языком сценариев.По сути, это очень усовершенствованная оболочка командной строки.

В отличие от оболочек Unix, где все представляет собой текстовый текст (что определенно имеет свои преимущества), команды PowerShell (командлеты) используют объекты.Он основан на платформе .Net, поэтому вы, ребята, которые знакомы с ней, вероятно, уже поняли, что все, что возвращает PowerShell, можно передать по конвейеру и использовать свойства и методы этого объекта.Весело сказать: «Все это объект!» Опять же, как когда ООП становился большим.

Очень аккуратная штука.Впервые в Windows реализованы некоторые инструменты интерфейса командной строки Unix, подобные grep и тому подобному.

Если вас интересуют виртуальные машины, вам следует посмотреть Попугай...Поддерживается множество языков, и это довольно удобно....

O'caml — хороший язык, если вы хотите научиться реализовывать компилятор...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top