Что такое Dotty?

Я читаю о Scala 3 и обнаружил точку. Я пытаюсь понять, что это такое. Где-то я читал "Это новый компилятор", где-то я читал "Это часть Scala 3", и где-то я читал "Dotty - новая Scala 3".

Может кто-нибудь, пожалуйста, объясните мне, что именно точечное? В непрофессионале и технических условиях?

PS: Я уже прочитал информацию о теге в StackOverflow, но на самом деле не понял.

Ответ 1

Позвольте мне объяснить с основания Scala 3:

Зависимые типы объектов (DOT) - это новая основа для Scala, которая должна быть Scala 3. DOT - это базовое исчисление для зависимых от пути типов, которые повышают уровень языка Scala и его систем типов до следующего уровня.

Согласно этому блогу Мартина Одерского:

"Что вы получите, если варите Scala на медленном огне и ждете, пока все случайные черты испаряются и только самые концентрированные сущности остается? Делая это в течение 8 лет, мы считаем, что у нас есть ответ: его DOT, исчисление зависимых типов объектов, лежащих в основе Scala. "

Поэтому в Scala 3 DOT - зависимый тип объекта был реализован как основа Scala, а DOTTY - это проект по разработке Scala 3 с DOT., Кроме того, Scala 3 работает над новым компилятором, который также называется Dotty, который поддерживает DOT, и который является более мощным, чем текущая версия компилятора Scala. Технически, для Scala 2 и ниже, scalac является компилятором, но для Scala 3, dotc является компилятором.

Итак, спецификации языка одинаковы в Scala 2 (ниже) и Scala 3, но компилятор является новым, десугарным для DOT. Кроме того, с DOT в качестве основы, в Scala 3 есть дополнительные новые функции, например, типы объединения, тип пересечения и т.д.

DOTTY - новый язык программирования?

Dotty - это имя проекта для языка и компилятора, который должен стать Scala 3.0. Это означает, что DOTTY - это следующая версия языка программирования Scala с новым компилятором (также называемым Dotty).

Я надеюсь, что это даст вам понимание новичка Дотти.

Ответ 2

Может кто-нибудь, пожалуйста, объясните мне, что именно точечное?

Как следует на странице dotty github:

Dotty is a research compiler that will become Scala 3

Кроме того, прочитайте пост Мартина Одерского " К скале 3", в котором упоминается Scala 2 и Scala 3:

Стоит подчеркнуть, что Scala 2 и Scala 3 в основном являются одним и тем же языком. Компилятор является новым, но почти все, что программисты Scala уже знают о Scala 2, относится и к Scala 3, и самый обычный Scala 2-код также будет работать на Scala 3 с незначительными изменениями.

Так почему же точка?

Scala 3 станет большим шагом к реализации полного потенциала слияния ООП и fp в типизированной настройке

И вы можете видеть, что они разрабатываются по-разному:

Для получения дополнительной информации о Reddit thread К Scala 3

Ответ 3

Проект Dotty содержит три идеи:

  • Язык программирования Dotty
  • Компилятор dotc
  • Формат сериализации TASTY

Все они способствуют нескольким вещам:

Dotty: язык, основанный на исчислении DOT

Исчисление DOT (зависимые типы объектов) - новое исчисление, разработанное группой Мартина Одерского. Он специально разработан, чтобы хорошо моделировать язык, похожий на Scala. Он заменяет более старое ν Object Calculus (что греческая буква ν, произносится как "новая"), которая также была предназначена для моделирования Scala, но содержала функции, которые позже были удалены из Scala. DOT намного проще.

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

Dotty: тестовый стенд для дальнейшей эволюции Scala

Dotty разработан не только для того, чтобы быть надмножеством исчисления DOT, но также для того, чтобы быть достаточно похожим на Scala, которые функции, проверенные и тестируемые в Dotty, могут быть позже перенесены на Scala.

В частности, Dotty теперь стала основой Scala 3, что является значительным перепроектированием Scala (например, Scala 3, Scala станет первым основным языком для удаления Generics с языка, что в точности противоположно какие другие языки, такие как Java, C♯, VB.NET или C++). Тем не менее, хотя Scala 3 является значительным перепроектированием Scala, предполагается, что любой код, который компилируется без предупреждений и без ограничений в Scala 2.13, может быть автоматически преобразован в Scala 3. IOW: процесс преобразования из Scala 2.13 в Scala 3 является чисто механическим и не требует вмешательства человека.

dotc: dotc стенд для новых компиляторов

Компилятор dotc использует новый дизайн, который вдохновлен временными базами данных. Это полностью не зависит от DOT, языка Dotty или Scala. Он может (и будет) использоваться для улучшения компилятора Scala, но идеи могут быть применены к любому компилятору для любого языка.

dotc: Основа для нового компилятора Scala

dotc - это не просто dotc стенд для новых идей в дизайне компилятора в целом, он также (и это его вторая основная цель, будучи компилятором для Dotty), основа для полной перестройки стареющего нового компилятора Scala ( текущая, вторая, итерация компилятора Scala после оригинала, написанного на Java).

Дизайн dotc позволяет использовать множество функций, которые ожидаются от современных компиляторов, которые в настоящее время не удовлетворяют традиционные проекты пакетного компилятора. Работа современного компилятора заключается не только в том, чтобы превратить один язык в другой (например, Scala в JVML), он должен

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

Компилятор презентаций NSC и набор инструментов могут многое сделать, но dotc был разработан с самого начала с учетом этих требований.

TASTY: формат сериализации семантических деревьев

Третий вклад в проект Dotty - TASTY. TASTY - это формат сериализации промежуточного представления компилятора, который поддерживает forwards- и обратную совместимость, компактен, легко анализируется и содержит всю информацию, необходимую для восстановления исходной программы, в то же время оставляя ненужные детали.

TASTY позволяет сохранить внутреннее представление компилятора, а затем загрузить его в другой компилятор и продолжить компиляцию.

Зачем вам это делать? Он позволяет иметь промежуточный формат распространения между исходным кодом и двоичным кодом (например, .class или .jar). Распространение кода Scala как .jar теряет много информации о коде Scala. Если вы хотите связать этот код с каким-либо другим кодом Scala, вы можете столкнуться с проблемами, особенно с Scala 3, который перемещает некоторую безопасность типа от фазы компиляции до фазы ссылки.

Распространяя его как исходный код OTOH, требуется, чтобы для использования библиотеки требуется полная среда разработки Scala.

Для тех, кто это помнит, цели несколько схожи с тем, что ANDF пытался сделать в 1980-х годах.

Ответ 4

Официально Dotty является исследовательским компилятором, который станет Scala 3, то есть является новым компилятором Scala, который реализует Scala 3. Scala 3 в основном на том же языке, что и Scala 2, но направлена на исправление бородавок и улучшение поддержки некоторых сценариев программирования, Набор функций, поддерживаемых Dotty, развивается, и языковые дополнения будут в конечном итоге пересмотрены комитетом SIP.

Среди других изменений система типов для Scala 3 основана на новом фундаменте, называемом исчислением DOT; использование этого фонда влияет на типы, которые вы можете использовать в своей программе, и повышает уверенность в том, что, если программа проходит Dotty typechecker, эта программа не будет иметь ошибок типа.