Выбор конца для нового динамического языка программирования? - PullRequest
13 голосов
/ 04 ноября 2008

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

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

Python (как исходный код): кажется, самый простой способ. Также было бы лучше, если бы я мог генерировать байт-код Python, но он недостаточно хорошо документирован, как AFAIK других виртуальных машин (для подробностей нужно копать исходный код Python!).

Самодельный переводчик: не может быть и речи: -)

LLVM, NekoVM, Parrot и другие варианты, которые я проверяю. Что бы вы взяли на это?

Ответы [ 14 ]

15 голосов
/ 04 ноября 2008

Не сбрасывайте со счетов .NET или JVM так быстро. Динамические языки разрабатываются как для (например, Groovy, JRuby, Jython для JVM; IronRuby, IronPython для .NET), так и для .NET - "DLR" - динамическая среда исполнения языка. (Подробнее см. блог Джима Хугунина .)

4 голосов
/ 04 ноября 2008

Parrot действительно крутой, даже если они еще не отправили «настоящий» код. Но так как проект просто для развлечения, это не должно вас останавливать: D.

4 голосов
/ 04 ноября 2008

Я бы выбрал JVM, но в основном потому, что я с ним знаком.

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

.Net лучше всего работает в Windows. Если вы выберете его, вам следует протестировать на Mono , чтобы быть более нейтральным к платформе.

Python также кажется хорошим выбором. Но я думаю, что для JVM доступно больше библиотек.

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

Другие варианты для меня новы, я посмотрю на них.

3 голосов
/ 04 ноября 2008

Возможно, вы захотите взглянуть на PyPy - хотя этот проект существует для реализации языка Python в (подмножестве) Python, подход, который они используют, позволяет использовать несколько внешних интерфейсов и несколько обратных. -концы (включая CLR, JVM, LLVM, C и даже Smalltalk и JavaScript, я думаю). Например, работа над JIT была выполнена с использованием Prolog в качестве языка интерфейса и CLR в качестве интерфейса. Таким образом, вы можете присоединиться к группе для реализации Smalltalk и позже обнаружить, что вы также помогли кому-то другому внедрить Prolog, не зная об этом ...: -)

3 голосов
/ 04 ноября 2008

Одним из преимуществ использования Parrot является то, что он поставляется с тоннами примеров языков, включая вариант Smalltalk, называемый ChitChat. Таким образом, вы можете использовать это как справку, чтобы увидеть, как кто-то еще реализовал подобный язык в Parrot.

3 голосов
/ 04 ноября 2008

Поскольку вы пытаетесь внедрить Smalltalk, почему бы не рассмотреть одну из виртуальных машин, созданных в стиле smalltalk, для Ruby , например YARV или даже rubinius . Оба вдохновлены Smalltalk и стремятся быть высокопроизводительными. YARV станет новым стандартом Ruby VM.

2 голосов
/ 02 февраля 2010

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

Моя большая вещь против .NET и JVM - огромный размер. Посмотрите, как маленький в Squeak уровень соответствия импедансов "операционная система для малого разговора" во время выполнения.

Разве забавные проекты не должны быть, ну ...... Веселые? Скрип - это много вещей, деловой не один из них, но весело ... определенно.

2 голосов
/ 04 ноября 2008

Коэффициент (http://factorcode.org/) может предложить некоторые полезные функции для этого.

1 голос
/ 04 ноября 2008

JVM более стабильна, хорошо документирована и в целом менее вероятна быть движущейся целью, чем .Net Кроме того, вы с большей вероятностью найдете людей, которые могут помочь вам, если вы пойдете с открытым исходным кодом. С талантами .Net действительно мало, и большинство из них работает на Microsoft, поэтому у них вряд ли будет время помочь.

1 голос
/ 04 ноября 2008

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

Кроме того, LLVM может быть интересным выбором, но я не уверен, насколько это «доказано», поскольку у меня не может быть зрелой языковой реализации с бэкэндом LLVM.

Я бы избегал .NET. Было бы сложнее собрать сообщество и поддержку по всему вашему новому языку, и вам это понадобится в ближайшее время. Кроме того, это не кроссплатформенный.

Что бы вы ни выбрали, вы многому научитесь, делая это.

...