Подтвердить что ты не робот

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

Мне интересны компиляторы, переводчики и языки.

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

по функциям:

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

Ответ 3

Я предполагаю, что многое зависит от того, что вы подразумеваете под "non-mainstream".

Будет lisp считать как не основной?

Ответ 4

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

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

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

Ответ 5

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

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

Ответ 6

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

Ответ 7

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

Ответ 8

Haskell и REBOL - оба захватывающие языки, по самым разным причинам.

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

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

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

Ответ 9

Boo предназначен для платформы .NET и является открытым исходным кодом. Вдохновленный Python.

Ответ 11

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

Ответ 12

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

  • Ciao, YAP, SWI-Prolog, и GNU Prolog - все Пролог. Я думаю, что они все с открытым исходным кодом. Ciao, gnu prolog и, возможно, другие также, как это часто встречается в реализациях Prolog, поддерживают другие типы ограничений. Например, программирование с целым числом.
  • Mozart и Меркурий - оба, как я понимаю, альтернативные логические языки программирования.
  • Alice больше в семействе ML, но поддерживает программирование ограничений с помощью GECODE Библиотека С++.

Дрейфуя немного от темы....

  • Maude - интересный термин переписать язык.
  • HOL и COQ являются механизированными системами доказательства, которые обычно используются в сообществе языков.

Lambda-the-Ultimate - это хорошее место, где можно поговорить и узнать больше о языках программирования.

Ответ 13

Я бы сказал Scheme, особенно в нем R6RS воплощение.

Ответ 14

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

Ответ 15

Взгляните на Io на http://www.iolanguage.com/ или Lisaac at: https://gna.org/projects/isaac/ или Self at: http://self.sourceforge.net/ или Сатер (теперь совершенно забытый) или Eiffel http://www.eiffel.com

Почему здесь несколько причин. Ио абсолютно минималистичен и даже не имеет "элементов управления потоком" в качестве синтаксических объектов. Lisaad является продолжением Эйфеля со многими упрощениями AFAIKT. "Я" - это продолжение Малтталк, и Ио тоже довольно много от "Я". Основная вещь заключается в том, что различие между классом и объектом было отказано. Sather является ответом Эйфелю с несколькими другими правилами и лучшей поддержкой функционального программирования (с самого начала).

И Eiffel определенно является отличительной чертой для статически типизированных OO-языков. Эйфель был первым langauge, который поддерживал дизайн по контракту, generics (aka templates) и один из лучших способов обработки наследования. Это был и остается одним из самых простых языков. Я со своей стороны нашел лучшие библиотеки для Eiffel.....

У создателя только одна проблема, он не принимал других вкладов в поле OO.....

Привет

Ответ 16

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

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

Ответ 17

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

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

  • Assembly, C: отлично подходит для обучения указателям и их арифметике.
  • С++: то же, что и C с введением в generics, если вы можете выдержать невероятно подробный синтаксис.
  • Ruby/Lua: языки сценариев, динамически типизированные, записи привязок для существующих библиотек C.
  • Python/С#/Java: пропущенные, эти языки смотрят на меня как на переосмысление понятий, происходящих в другом месте с огромной стандартной библиотекой. Конечно, все пакеты хороши, но здесь вы не узнаете новые понятия.
  • OCaml: введите infererence done right, частичное приложение, компилятор, выведенный в качестве типичности, неизменность по умолчанию, как правильно обрабатывать nulls.
  • Haskell: лень по умолчанию, монады.

My & euro;.02.

Ответ 18

Я не могу поверить, что логотип настолько забыт. Хорошо, это логотип. Похоже на lisp, но с немного более уродливым синтаксисом. Несмотря на то, что он работает со списками в логотипе, вы встречаете восхитительно названные операции "butfirst" и "butlast". = P

Ответ 19

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

Ответ 20

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

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

Ответ 22

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

После этого - Хаскелл невероятно интересен. Это язык, который делает ленивую оценку правильно, и последствия невероятны (включая такие вещи, как однострочное определение последовательности fibonnaci).

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

Ответ 23

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

Prograph: http://en.wikipedia.org/wiki/Prograph... кажется, Prograph живет как Мартен: http://andescotia.com/products/marten/

Self IDE был/является прекрасным, расскажите о Потоке (в смысле Csíkszentmihályi)...

В целом, однако, я должен сказать, что Haskell является самым интересным, для потенциальных преимуществ в вычислениях, которые он представляет.

Ответ 24

Harbour для динамического типа. Отличное решение для бизнес-приложений.

Ответ 25

Схема сразу приходит на ум, лучше Lisp.

Кроме того, я знаю, что ваш вопрос дисквалифицирует эзотерические языки, но рассмотрите INTERCAL. У этого есть экзистенциальный оператор COME FROM (например, GOTO, но помещенный в пункт назначения перехода, а не точка перехода). Этот оператор кажется странным, но можем ли мы сказать, что его влияние наблюдается в Аспектно-ориентированном программировании? В АОП советы часто указываются в каком-то внешнем месте, просто просмотр рекомендуемого кода не всегда делает поток управления прозрачным. Однако, глядя на совет, он информирует читателя, откуда берется контроль.

Похоже, что еще один человек согласен со мной, что COME FROM похож на AOP

Ответ 26

Mathematica, потому что это уникально успешный термин-переписать язык (совершенно другой метод оценки кода!).

Ответ 27

REIA!

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

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

Ответ 28

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

Ответ 29

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

Ответ 30

Rebol конечно! Это так просто, но так мощно изучить его на http://reboltutorial.com