Вопрос

Я начал студент в CS, и мои занятия в основном в Java. В настоящее время я прохожу через «Little Scremer» как самостоятельное исследование, и в процессе выявления того, как сделать это, я обнаружил многочисленные ссылки на «Реализации» схемы. Мой вопрос, что такое реализации?

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

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

Спасибо,

Джосс Сладь

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

Решение

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

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

Для Java есть реализации от солнца, Oracle, IBM, и я думаю, что еще один.

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

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

На схеме в специфике это хороший вопрос, потому что были несколько основных ревизий языковой спецификации. Помимо этого, есть много языков (включая оригинальную схему!), Которые называются схемы, которые полностью не следуют никаких спецификаций. Языки новичков для HTDP маленькие, чтобы быть немного ограничительным о том, как проблемы решаются (и, вероятно, по другим причинам). GIMP до совершенно недавно использовал нестандартную схему интерпретатора, называемую Siod (схема в одном дегуне или схеме за один день). Есть много других примеров; См., Например Диалекты схемы Для схемы PLT возьмите на языковую стандартную поддержку.

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

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

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

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

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

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

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

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

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

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

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

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

Лучший, Грем

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