Реализации схемы - что это означает?

Я - начинающий студент в CS, и мои классы находятся главным образом в Java. Я в настоящее время прохожу "Маленького Интригана" как сам исследование, и в процессе обнаружения, как сделать это, я нашел многочисленные ссылки на "реализации" Схемы. Мой вопрос, что такое реализации?

Они - говоры Схемы, или то, что что-то еще (DrScheme, кажется, допускают различные "разновидности" языка)? Это - просто имя, данное какой-либо данной экосистеме, включающей IDE, интерпретатор, интерактивный инструмент и т.п.?

Все другие языки (например, Java) также имеют множество "реализаций", или это что-то зарезервированное для "открытия" языков?

Спасибо,

Joss Delage

6
задан JDelage 4 March 2010 в 09:24
поделиться

4 ответа

Реализацией языка программирования является компилятор или интерпретатор для этого языка. Дополнительные компоненты экосистемы, такие как IDE, могут быть частью реализации, но не являются необходимыми. Для Scheme их много, например DrScheme, Guile, Gambit.

Многие языки программирования имеют разные реализации, но все реализации определенного языка должны реализовывать (т. Е. Компилировать) один и тот же диалект. Это проще всего, если есть четкая и официальная спецификация языка, как в случае с Scheme. Конечно, большинство языковых спецификаций проходит через множество версий, поэтому разные реализации могут поддерживать разные версии языка.

Для Java существуют реализации от Sun, Oracle, IBM и, как мне кажется, еще одной.

7
ответ дан 8 December 2019 в 16:01
поделиться

реализация языка означает любую программу, которая запускает или компилирует этот конкретный язык.

В частности, в Scheme это хороший вопрос, потому что в спецификацию языка было внесено несколько серьезных изменений. Помимо этого, существует множество языков (включая исходную схему!), Которые называются схемами, которые полностью не соответствуют ни одной из спецификаций. Языки для начинающих для HTDP небольшие, чтобы немного ограничивать способ решения проблем (и, возможно, по другим причинам). GIMP до недавнего времени использовал нестандартный интерпретатор схемы под названием SIOD (Scheme In One Defun или Scheme In One Day). Есть много других примеров; см., например, Dialects Of Scheme , где PLT Scheme рассматривает поддержку языковых стандартов.

6
ответ дан 8 December 2019 в 16:01
поделиться

Реализация - это версия / продукт конкретного поставщика, который реализует (соответствует, предоставляет и т. Д.) Определенный стандарт (интерфейс класса, API, спецификацию языка и т. Д.).

Чтобы упростить понимание по аналогии, и Coca-Cola, и Pepsi можно рассматривать как реализации Soda (или, если вы так склонны, Pop). Soda / Pop - это общая концепция, а Coca-Cola и Pepsi - отдельные продукты, соответствующие этой концепции.

Точно так же Mac OS X и Linux являются реализациями единой спецификации UNIX. Компилятор GNU C ++ и компилятор Intel C ++ являются реализациями языка программирования C ++. Sun Java 6 JDK, OpenJDK и компилятор GNU для Java (GCJ) - все это реализации Java.

В Java, как вы скоро обнаружите, слово «реализует» используется как ключевое слово, когда класс предоставляет конкретное определение функции, объявленной в интерфейсе, потому что, предоставляя конкретное определение, этот класс реализует требования. общей концепции, воплощенной в интерфейсе.

Я надеюсь, что это поможет вам лучше понять значение слова «реализация».

1
ответ дан 8 December 2019 в 16:01
поделиться

Реализация - это компилятор или интерпретатор для языка программирования; это способ перевести инструкции языка в поведение. Наиболее распространенным языком с множеством реализаций сегодня, вероятно, является JavaScript.

Когда люди говорят о реализациях, они часто имеют дело с проблемами, возникающими из-за наличия нескольких реализаций. Есть преимущества - ваш любимый будет делать то, что вам нравится, - но проблемы могут расстраивать. Поскольку Chrome, Firefox, IE и Safari ведут себя немного по-разному с одним и тем же кодом JavaScript, веб-разработчикам приходится тратить много времени на тестирование своего кода в различных браузерах, определение того, какой из них вы используете, и адаптацию кода к несколько разные наборы библиотек, ошибок и т. д.

Некоторые языки определяются стандартной реализацией (ruby, perl, python), а не документом, поэтому вы не слышите о множественных реализациях этих. Даже на этих языках у вас есть проблема, связанная с тем, что разные версии имеют разное поведение.

Реализации - явление не новое: еще в школьные годы Билл Гейтс начал писать, например, одну из многих реализаций BASIC.

Что еще больше усугубляет проблемы со Scheme, чем с другими языками, так это то, что спецификация намеренно мала - пытается указать очень мало. Преимущество состоит в том, что люди, разрабатывающие языки программирования, могут относительно быстро создавать новую экспериментальную реализацию Scheme с аккуратными новыми свойствами. Как только они это сделают, они могут заявить, что даже небольшой язык, который они написали, «полезен», потому что другие показали, как расширить маленький язык до полезного. Однако в этом «простом вопросе программирования» предстоит проделать большую работу, и каждая реализация должна принимать множество решений самостоятельно, поэтому различия между реализациями многочисленны и велики. Таким образом, проблем, связанных с множественными реализациями, в Scheme много и они велики по сравнению с более полно определенными языками.

Сообщество Scheme осознает наличие проблемы, а также пользу от небольшой спецификации, и активно работает над способами сделать переход от экспериментального языка к полезному языку более понятным с новыми версиями стандарта. http://scheme-reports.org/

На данный момент (2010 г.) я лично рекомендую новым пользователям начать работу со схемой PLT, и я рад, что вы начали с нее. Пусть вас не пугает проблема множества реализаций: есть много преимуществ в работе на языке, который разработчики языков программирования разработали для себя. PLT имеет большое сообщество и хороший набор библиотек, которые помогут вам преодолеть описанные выше трудности.

С уважением, Грем

1
ответ дан 8 December 2019 в 16:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: