热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Dotty究竟是什么?

如何解决《Dotty究竟是什么?》经验,为你挑选了3个好方法。

我正在阅读Scala 3并发现了dotty.我试图了解它是什么.我在某处读到"这是新的编译器",在某处我读到"它是Scala 3的一部分",在某处我读到"Dotty是新的Scala 3".

有人可以向我解释一下究竟是什么?在外行和技术方面?

PS:我已经在StackOverflow上读过了dotty的标签信息但是并没有真正理解它.



1> Ra Ka..:

让我解释一下Scala 3的基础:

的从属对象类型(DOT)是用于Scala的一个新的基础这是要斯卡拉3.DOT是路径依赖类型核心计算,它将Scala语言及其类型系统提升到新的水平.

根据Martin Odersky撰写的这篇博客:

"如果你在缓慢的火焰中煮沸Scala并等到所有偶然特征蒸发并且只剩下最浓缩的精华,你会得到什么?这样做8年之后我们相信我们有答案:它是DOT,依赖对象类型的微积分这是斯卡拉的基础."

因此,在Scala 3中,DOT - 依赖对象类型已经被实现为Scala的基础,DOTTY是用于使用DOT开发Scala 3的项目.此外,Scala 3适用于新编译器,也称为支持DOT的Dotty,它比当前版本的Scala编译器更强大.从技术上讲,对于Scala 2及更低版本,scalac是编译器,但对于Scala 3,它dotc是一个编译器.

因此,Scala 2(下面)和Scala 3中的语言规范是相同的,但是编译器是新的,它不需要DOT.此外,以DOT为基础,Scala 3还有其他新功能,例如联合类型,交叉类型等.

DOTTY是新的编程语言吗?

斑点狗是一种语言和编译器,即将成为斯卡拉3.0项目名称,这意味着,疯疯癫癫的是Scala编程语言下一个版本,一个新的编译器(也叫斑点狗).

我希望这会让你初学者洞察傻瓜.


dottyc不存在,编译器工具称为dotc。而且语言规范必须针对Scala 3进行发展。

2> prayagupd..:

有人可以向我解释一下究竟是什么?

正如dotty github页面提到:

Dotty is a research compiler that will become Scala 3

另外,阅读Martin Odersky的博客文章Towards Scala 3,其中提到了Scala 2 vs Scala 3:

值得强调的是,Scala 2和Scala 3基本上是同一种语言.编译器是新的,但几乎所有Scala程序员已经了解Scala 2的内容也适用于Scala 3,大多数普通的Scala 2代码也可以在Scala 3上运行,只需进行少量更改.

那么,为什么多点的?

Scala 3将是朝着实现OOP和fp在打字环境中融合的全部潜力迈出的一大步

你可以看到他们的发展方式不同:

scalac:https://github.com/scala/scala

dotc:https://github.com/lampepfl/dotty

有关更多信息,请阅读reddit主题向Scala 3


dottyc不存在,编译器工具称为dotc。

3> Jörg W Mitta..:

Dotty项目包含三个想法:

Dotty编程语言

dotc编译器

TASTY序列化格式

所有这些都带来了很多事情:

Dotty:一种基于DOT微积分的语言

DOT微积分(相关对象类型)是由马丁·奥德斯基的研究小组开发出一种新的结石。它专门设计用来很好地建模类似Scala的语言。它替代了同样用于建模Scala 的较旧的ν对象演算(即希腊字母ν,发音为“ new”),但其中包含的特征后来被从Scala中删除。DOT更简单。

Dotty是一种语言,其类型系统和语义深深植根于DOT演算中,因此,DOT演算的属性和证明也适用于Dotty。

Dotty:Scala进一步发展的测试平台

斑点狗的目的不仅是要DOT演算的一个超集,但为类似足以斯卡拉该功能试用和测试斑点狗以后可以移植到Scala的。

特别地,Dotty现在已成为Scala 3的基础,这是对Scala的重大重新设计(例如,对于Scala 3,Scala将成为第一种从该语言中删除泛型的主流语言,这与Java,C?,VB.NET或C ++等其他语言也在做什么)。但是,即使Scala 3是对Scala的重大重新设计,也可以将任何在没有警告且没有弃用的情况下在Scala 2.13中编译的代码都可以自动转换为Scala3。IOW:从Scala 2.13到Scala 3的转换过程完全是机械的,不需要人工干预。

dotc:新颖的编译器设计的测试平台

所述dotc编译器使用由时间数据库启发的新颖设计。这完全独立于DOT,Dotty语言或Scala。它可以(并且)用于改进Scala编译器,但是这些思想可以应用于任何语言的任何编译器。

dotc:新的Scala编译器的基础

dotc通常,它不仅是编译器设计中新颖思想的试验台,而且(在成为Dotty的编译器之后,这是它的第二个主要目的)是完全重新设计陈旧的New Scala编译器(当前,其次是Scala编译器在原始Java编写之后的迭代)。

的设计dotc允许当今现代编译器所期望的许多功能,而传统批处理编译器设计无法很好地满足这些功能。现代编译器的工作不仅仅是将一种语言变成另一种语言(例如,从Scala到JVML),它还应该

报告(人类可读,易于理解的)错误

建议(甚至执行)这些错误的可能修复

报告相关和有用的警告

建议(甚至执行)这些警告的可能改进

执行重构

提供词汇,句法和语义突出显示

协助代码完成

并在编写代码的同时立即使用不完整的代码

NSC的演示文稿编译器和工具箱可以完成很多工作,但dotc这些设计都是从头开始考虑这些要求的。

TASTY:语义树的序列化格式

Dotty项目的第三项贡献是TASTY。TASTY是一种中间编译器表示形式的序列化格式,具有向前和向后兼容性,紧凑,易于解析,并包含重构原始程序所需的所有信息,同时省去了不必要的细节。

TASTY允许保存编译器的内部表示,然后将其加载到其他编译器中并继续进行编译。

你为什么想做这个?它使您可以在源代码和二进制代码(例如.class.jar文件)之间使用中间分发格式。将scala代码分发为.jars会丢失许多有关Scala代码的信息。然后,如果您想将此代码与其他Scala代码链接,则可能会遇到问题,尤其是 Scala 3,它将一些类型安全性从编译阶段移至链接阶段。

将其作为源代码OTOH分发时,要求用户需要具有完整的Scala开发环境才能使用该库。

对于那些记得它的人,目标有些类似于ANDF在1980年代尝试做的。


推荐阅读
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 关于CMS收集器的知识介绍和优缺点分析
    本文介绍了CMS收集器的概念、运行过程和优缺点,并解释了垃圾回收器的作用和实践。CMS收集器是一种基于标记-清除算法的垃圾回收器,适用于互联网站和B/S系统等对响应速度和停顿时间有较高要求的应用。同时,还提供了其他垃圾回收器的参考资料。 ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
荆州房产网
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有