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

Scala.Net和Scala与MartinOdersky

我们与Typesafe主席兼首席架构师,Typesafe的共同创始人MartinOdersky讨论了Scala.Net(支持.Net的Scala版本&#

我们与Typesafe主席兼首席架构师,Typesafe的共同创始人Martin Odersky讨论了Scala.Net(支持.Net的Scala版本)以及一般的Scala。 Martin是Scala编程语言的创建者,也是瑞士领先的技术大学EPFL的编程研究小组的教授。 在他的整个职业生涯中,Martin的唯一目标是使编写程序的基本工作变得更快,更容易和更有趣。

在此过程中,他亲自编写的Java和Scala代码行比世界上几乎任何其他人都要多。 他写了javac(即当今大多数Java程序员使用的编译器)和scalac(即快速增长的Scala社区使用的编译器)。 他撰写了有关Scala的畅销书“ Scala中的编程”。 1989年,他从ETHZürich获得了Pascal的创建者Niklaus Wirth的博士学位,之后,他曾在IBM Research,耶鲁大学,卡尔斯鲁厄大学和南澳大利亚大学任职。

InfoQ:几年前,已经有一个.NET的Scala版本消失了。 那么,为什么您认为在.NET上提供Scala重要呢?

马丁·奥德斯基(Martin Odersky): Scala .Net具有复杂的历史,在黑客社区之外很少讨论。 像Nikolay Mihaylov和Lukas Rytz这样的人在创建交叉编译器方面取得了长足的进步,EPFL Scala小组的成员Miguel Garcia一直在努力工作,以使交叉编译器实际上将自己引导到.Net环境-为了拥有一个可执行的Scala.net,它可以编译自己的源代码-他将其称为“比例巨大的经典鸡肉和鸡蛋问题”。

此外,对于开发人员和一般公司来说,在.Net上使用Scala有价值的原因有很多。 开发人员只需学习一种语言即可适应两种环境,并且公司可以轻松地在平台之间移动稀缺的资源,优秀的开发人员,以节省资金并提高灵活性。

鉴于Scala简洁而高效的本质,通过在.Net上使用Scala,开发人员可以在两个主要的行业平台JVM和.Net上快速部署应用程序。 .Net为多种语言提供了一个集成平台,Scala的此实现可以很好地互操作。 您可以使用现有的.Net库或应用程序,而无需在Scala中重新编写所有内容。 最终,这意味着可以将为.Net和JVM环境创建的许多工具和应用程序相互移植。 这对每个人都有利。

InfoQ:您如何认为Scala.Net将与F#竞争?

马丁·奥德斯基(Martin Odersky):很少,也许随着时间的流逝会更多。 Scala提供了完全不同的功能,即面向对象与功能编程风格的集成。 .Net上的Scala为希望编写希望同时在JVM和.Net上运行的代码的开发人员提供了最大的收益。 大多数使用F#的人很可能会继续使用它。

有些人可能也开始在.Net上使用Scala,因为它将允许他们在JVM上运行该代码。

InfoQ:将支持哪些Scala版本?

Martin Odersky:将支持最新版本的Scala,在构建和测试.Net版本时,可能会延迟几天。

InfoQ:您究竟如何将Scala迁移到.NET,主要的优点和挑战是什么?

Martin Odersky:根据Miguel Garcia的说法,主要挑战之一是Scala程序大量使用Java JDK,而.Net只是不支持此功能。 因此,我们必须提出一个为.Net生成合适代码的编译器。 尽管交叉编译器是一项艰巨的工作,但它只能在JDK上运行,因此其源代码对JDK API有着很多依赖性。

由Jeroen Frijters驱动的一个长期运行的开源项目IKVM(可将Java程序转换为MSIL)和一个提供基本JDK支持的.Net库,为将Scala库移植到.Net奠定了良好的基础。 IKVM编译器采用JVM字节代码并将其转换为.net程序集。 字节代码级别的更改虽然迈出了一大步,但它本身并没有使我们真正地进行引导,因为我们仍然剩下JDK依赖项。 因此,任务变成了创建预处理器,该预处理器将修改Scala源代码,直接用IKVM .Net等效项替换JDK依赖项,这是主要的映射练习。

InfoQ:有一个可供下载的初步版本。 我应该如何使用Scala for .NET开发程序?

Martin Odersky:因此,您可以直接在MS Visual Studio中开发Scala程序。 今年秋天,用于Scala的Visual Studio插件将支持IDE预期的基本功能:代码完成,代码浏览,换行符,表达式换行和异常报告等。

目前,当前插件尚不支持代码完成或代码浏览,因此某些开发人员可能更喜欢使用Eclipse或Intellij在JVM上编写代码,然后在Visual Studio下进行最终调试。 您可以在此处找到“使用方法”指南,并在此处找到Scala.Net项目的幻灯片演示概述。

当前的实现已经非常强大。 Scala.Net编译器会自行编译,大约100k行Scala代码。

InfoQ:在JVM和CLR上运行的Scala应用程序将如何互操作?

Martin Odersky: .Net虚拟机CLR提供的原始类型是JVM类型的超集。 还有一些值类型,类似于记录。 从编译器作者的角度来看,很容易从一种转换为另一种。 字符串可以很好地与转换过程配合使用。 经过充分测试,不太可能遗漏任何极端情况。 IKVM在IKVM社区中已有多年使用。

InfoQ:现在让我大致切换到Scala。 如果我要您用一个句子描述Scala,那么该句子的外观如何?

Martin Odersky: Scala是一种简洁,高效的编程语言,在与Java应用程序代码无缝集成的同时融合了面向对象和功能样式。

InfoQ:如果有人计划启动一个Scala项目,她的同事将要求概念证明。 那么,目前使用Scala的最大应用程序是什么?用途是什么?

Martin Odersky:在EDFT和Trafigura等公司,有许多基于Scala的大型应用程序,从NASA发射控制到关键业务交易应用程序。 Twitter,Foursquare和LinkedIn的公众每天都在使用其中一些最大的应用程序,其中Scala应用程序每天处理数十亿次网络事务。

InfoQ:您对经理说什么,为什么他应该信任Scala而不是使用他最喜欢的Java平台?

Martin Odersky:出于对Java平台的信任,您可以信任Scala。 它使用相同的高度可靠的JVM。 Scala编译器可靠可靠,由Martin Odersky编写,Martin Odersky是编写用于Java程序的参考javac编译器的人。 Scala应用程序与Java应用程序无缝集成,并且操作部署是相同的。 最重要的是,您将获得更高效的开发,更快的项目周转时间和更低的维护成本。 并且得到Typesafe的全面商业支持。

InfoQ:如果我们谈论未来的1,2年,Scala将进行的下一步变更或扩展是什么?

Martin Odersky: Scala研发的重点是努力使开发人员的事情变得更简单。 多核和基于GPU的系统就在这里,而利用当今的编程模型很难利用这种能力。 程序员必须担心规模,同步,竞争,死锁和许多其他并发问题。 未来的Scala版本将使开发人员能够使用更简单的模型,并确保无论部署在单个多核系统上还是包含GPU样式处理器的异构系统上,一切都可以正常工作。

今天,您有了Scala并行集合,使程序员能够使用现有的Scala代码,并且进行较小的更改即可获得多核系统提供的性能。 通过Typesafe,您可以使用Akka大大简化了分布式处理模型,从而提供了基于健壮消息传递的计算(如Erlang)。 EPFL和斯坦福大学的联合研究旨在为异构系统在机器学习,机械设计,气流模拟,财务风险分析,蒙特卡洛等众多大型scala并行应用中提高性能并简化程序员模型。 在接下来的1-2年中,您将开始看到这些东西到达Scala。

InfoQ:那么您认为Scala在5年后在语言及其周围生态系统方面会是什么样?

马丁·奥德斯基(Martin Odersky):我希望它将成为一种已建立的编程语言,并在业界得到广泛使用。 我还希望,即使Scala社区目前Swift发展,也将保持其如今的智慧和友好水平。

InfoQ:您对Java的未来有何个人看法?

Martin Odersky:看来Java平台将继续在服务器上占据主导地位。 我希望该平台之上的语言多样性比迄今为止所看到的更多。

InfoQ:您最近成立了Typesafe公司。 那么公司的目标和商业模式是什么?

Martin Odersky:该公司旨在为Scala的商业和社区用户提供最佳产品和支持。 它将为开发人员提供尽可能简单地创建可扩展应用程序的工具。 公司的业务模型基于对开源堆栈的支持,类似于Red Hat,Spring Source或Cloudera。

InfoQ:马丁,谢谢你接受我们的采访。

关于被访者

Martin Odersky是Typesafe的共同创始人,是Scala编程语言的创建者,并且是瑞士领先的技术大学EPFL的编程研究小组的教授。 在他的整个职业生涯中,Martin的唯一目标是使编写程序的基本工作变得更快,更容易和更有趣。 在此过程中,他亲自编写的Java和Scala代码行比世界上几乎任何其他人都要多。 他写了javac(即当今大多数Java程序员使用的编译器)和scalac(即快速增长的Scala社区使用的编译器)。 他撰写了有关Scala的畅销书“ Scala中的编程”。 1989年,他从ETHZürich获得了Pascal的创建者Niklaus Wirth的博士学位,之后,他曾在IBM Research,耶鲁大学,卡尔斯鲁厄大学和南澳大利亚大学任职。

翻译自: https://www.infoq.com/articles/ScalaNETInterview/?topicPageSponsorship=c1246725-b0a7-43a6-9ef9-68102c8d48e1




推荐阅读
  • 初探PLC 的ST 语言转换成C++ 的方法
    自动控制软件绕不开ST(StructureText)语言。它是IEC61131-3标准中唯一的一个高级语言。目前,大多数PLC产品支持ST ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
  • 本文介绍了响应式页面的概念和实现方式,包括针对不同终端制作特定页面和制作一个页面适应不同终端的显示。分析了两种实现方式的优缺点,提出了选择方案的建议。同时,对于响应式页面的需求和背景进行了讨论,解释了为什么需要响应式页面。 ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • Introduction(简介)Forbeingapowerfulobject-orientedprogramminglanguage,Cisuseda ... [详细]
  • FIN7后门工具伪装成白帽工具进行传播
    fin7,后门,工具,伪装,成,白, ... [详细]
  • 我正在尝试将Firebase添加到涉及添加以下内容的现有应用程序中:classpath'com.googl ... [详细]
  • 与.Net大师Jeffrey Richter面对面交流——TUP对话大师系列活动回顾(多图配详细文字)...
    与.Net大师JeffreyRichter面对面交流——TUP对话大师系列活动回顾(多图配文字)上周末很有幸参加了CSDN举行的TUP活动, ... [详细]
  • 刚开始crousera上学习<algorithmspart1>但对JAVA实在是不熟。******************************************** ... [详细]
  • IB 物理真题解析:比潜热、理想气体的应用
    本文是对2017年IB物理试卷paper 2中一道涉及比潜热、理想气体和功率的大题进行解析。题目涉及液氧蒸发成氧气的过程,讲解了液氧和氧气分子的结构以及蒸发后分子之间的作用力变化。同时,文章也给出了解题技巧,建议根据得分点的数量来合理分配答题时间。最后,文章提供了答案解析,标注了每个得分点的位置。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
author-avatar
忽然想起你_静_970
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有