多少人在用scala开发?

Ivar_PredixCN 2017-06-16 11:24:58
感兴趣的举手?
另外能不能说下使用的HTTP server和client解决方案?

...全文
221 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ivar_PredixCN 2017-06-19
  • 打赏
  • 举报
回复
scala下面的akka akka-http目前还远不够成熟 finagle貌似是一个不错的选择, 活着finch
函数式编程(FP)是一种软件开发风格,它注重不依赖于编程状态的函数。函数式代码易于测试和复用,容易实现并发,且不容易受到bug的攻击。Scala是一种能很好支持函数式编程的新兴JVM语言。《Scala函数式编程》是针对希望学习FP并将它应用于日常编码中的程序员而写的,内容包括:函数式编程的概念;函数式编程相关的各种“为什么”和“怎么做”;如何编写多核程序;练习和检测。 从OOP到FP,思路的转化 我是使用scala做完一个项目之后,开始阅读本书。 介绍下背景: 1 程序员 2 前C程序员,linux平台,没有很深的java背景 3 用scala做过一个2年期的项目 在使用scala的过程中,碰到的问题主要体现在: 1 scala的很多语法糖不理解,不知道为啥要这么写,有种为了这么写的简洁而这么写的感觉 2 scala很多库在设计的时候,不理解原因,包括Option,Collection的很多看似有冗余的地方 3 很多scala的默认写法,不理解 4 多态的具体化,尤其是协变的意义所在 5 各种重载的符号使用 之前读过 programming in scala,对语言的整体还停留在: 1 scala用起来比java更灵活 2 强大的collection,可以更加方便的处理collection类的数据 3 不同于java的并行处理方法,有点像c的逻辑思路 4 开发成本比java小,但是语言学习成本比java高很多 正在阅读这本书的过程中,只能一点一点说。 第一部分快要读完了,习题也快要做完了。 1 第一部分主要着墨点正是回答我上述问题的1,2,3的。很大篇幅都放在,使用scala实现scala默认库文件的API中,通过对简单的函数式编程逻辑的介绍和实践,主要是实践,建立起来一个比较明晰的scala思维模式,或者叫函数式编程的思维模式。 2 无副作用的函数式编程,同时也解释了为什么在scala中,val和var的区分为什么那么重要。 3 在做习题的过程中,尤其是在做类型推导的过程中,对原来oop,命令式编程向函数式编程转变有很大作用;而且简洁的语法,确实让人有享受编程的感觉。
Scala编程(第三版)中英文,代码全 Martin Odersky 是Scala 编程语言的缔造者。他是瑞士洛桑理工学院(EPFL)的教授,同时也是Typesafe, Inc.(已更名为Lightbend)的创始人。他的研究方向是编程语言和系统,更具体地说,就是如何将面向对象和函数式编程风格有机地结合在一起。自2001 年起,他的主要精力集中在设计、实现和改进Scala 上。在此之前,他作为Java 泛型的合作设计者参与了Java 编程语言的开发,同时也是当前javac 参考实现的作者。他还是ACM 院士。Lex Spoon 是Semmle Ltd. 的一名软件工程师。他在EPFL 作为博士后围绕着Scala 开展了两年的工作。他拥有Georgia Tech 的博士学位,在那里他的主攻方向是动态编程语言的静态分析。除Scala 外,他还帮助开发了各类编程语言,包括动态语言Smalltalk、科学计算语言X10,以及支撑Semmle 的逻辑编程语言。他和他的夫人一起生活在Atlanta,他们有两只猫和一只吉娃娃。Bill Venners 是Artima Inc. 的主席,Artima 开发者网站(ww.artima.com)的发行人,以及Escalate Software, LLC 的联合创始人。他著有《Inside theJava Virtual Machine》,这是一本面向程序员讲解Java 平台架构和内部实现原理的书。他在《JavaWorld》杂志上的专栏很受欢迎,主题涵盖Java 内部实现、面向对象的设计和Jini。Bill 从Jini 社区创立之初便十分活跃,领导了Jini 社区的ServiceUI 项目,其API 成为Jini 服务事实上的UI 标准。他还是ScalaTest 的主要开发者和设计者,一个面向Scala 和Java 开发者的开源测试工具。 高宇翔,资深软件开发工程师和系统架构师,同时也是Scala在国内的早期布道者和实践者,曾译有《快学Scala(第2版)》、《快学Scala》(第1版)和《Scala编程》(第1版)等专业书籍。
Scala编程语言抓住了很多开发者的眼球。如果你粗略浏览Scala的网站,你会觉得Scala是一种纯粹的面向对象编程语言,而又无缝地结合了命令式编程和函数式编程风格。Christopher Diggins认为: 不太久之前编程语言还可以毫无疑意地归类成“命令式”或者“函数式”或者“面向对象”。Scala代表了一个新的语言品种,它抹平了这些人为划分的界限。 根据David Rupp在博客中的说法,Scala可能是下一代Java。这么高的评价让人不禁想看看它到底是什么东西。 Scala有几项关键特性表明了它的面向对象的本质。例如,Scala中的每个值都是一个对象,包括基本数据类型(即布尔值、数字等)在内,连函数也是对象。另外,类可以被子类化,而且Scala还提供了基于mixin的组合(mixin-based composition)。 与只支持单继承的语言相比,Scala具有更广泛意义上的类重用。Scala允许定义新类的时候重用“一个类中新增的成员定义(即相较于其父类的差异之处)”。Scala称之为mixin类组合。 Scala还包含了若干函数式语言的关键概念,包括高阶函数(Higher-Order Function)、柯里化(Currying)、嵌套函数(Nested Function)、序列解读(Sequence Comprehensions)等等。 Scala是静态类型的,这就允许它提供泛型类、内部类、甚至多态方法(Polymorphic Method)。另外值得一提的是,Scala被特意设计成能够与Java和.NET互操作。Scala当前版本还不能在.NET上运行(虽然上一版可以-_-b),但按照计划将来可以在.NET上运行。 Scala可以与Java互操作。它用scalac这个编译器把源文件编译成Java的class文件(即在JVM上运行的字节码)。你可以从Scala中调用所有的Java类库,也同样可以从Java应用程序中调用Scala的代码。用David Rupp的话来说, 它也可以访问现存的数之不尽的Java类库,这让(潜在地)迁移到Scala更加容易。 这让Scala得以使用为Java1.4、5.0或者6.0编写的巨量的Java类库和框架,Scala会经常性地针对这几个版本的Java进行测试。Scala可能也可以在更早版本的Java上运行,但没有经过正式的测试。Scala以BSD许可发布,并且数年前就已经被认为相当稳定了。 说了这么多,我们还没有回答一个问题:“为什么我要使用Scala?”Scala的设计始终贯穿着一个理念: 创造一种更好地支持组件的语言。(《The Scala Programming Language》,Donna Malayeri) 也就是说软件应该由可重用的部件构造而成。Scala旨在提供一种编程语言,能够统一和一般化分别来自面向对象和函数式两种不同风格的关键概念。 藉着这个目标与设计,Scala得以提供一些出众的特性,包括: * 面向对象风格 * 函数式风格 * 更高层的并发模型 Scala把Erlang风格的基于actor的并发带进了JVM。开发者可以利用Scala的actor模型在JVM上设计具伸缩性的并发应用程序,它会自动获得多核心处理器带来的优势,而不必依照复杂的Java线程模型来编写程序。 * 轻量级的函数语法 o 高阶 o 嵌套 o 局部套用(Currying) o 匿名 * 与XML集成 o 可在Scala程序中直接书写XML o 可将XML转换成Scala类 * 与Java无缝地互操作 Scala的风格和特性已经吸引了大量的开发者,比如Debasish Ghosh就觉得: 我已经把玩了Scala好一阵子,可以说我绝对享受这个语言的创新之处。 总而言之,Scala是一种函数式面向对象语言,它融汇了许多的特性,而同时又运行于JVM之上。随着开发者对Scala的兴趣日增,以及越来越多的工具支持,无疑Scala语言将成为你手上一件必不可少的工具。 Scala与Groovy的对比 一篇名为“Scala,Groovy的杀手? ”的博客对Scala和Groovy进行了对比: Scala和Groovy之间的核心区别在于前者是静态类型的。有些人可能争辩说这使得达到脚本化目标变得更加复杂了,而脚本化正是Groovy的动机。然而,Scala有完整的体系特征,这使Groovy看上去更像个玩具。比如,Scala有“sequence comprehensions”。该要素导致对算法的表述非常紧凑和强大。 Scala还有更多被证明是非常有用的特性,如嵌套类,currying和代数类型模式匹配。它还支持类似于JDK1.5所增加的泛型和注解。这些还都只是冰山一角。 之后,Derek Young撰文“Scala对比Groovy:静态类型是性能的关键”。在文中他举了一个实际的例子,试图说明针对同样的算法,Scala的性能远高于Groovy。 然而,Scala并不是尽善尽美的,它也有一些明显的缺陷。Rick Hightower在发表的一篇博客中,尖锐地批评了Scala的语法问题: Scala并不是更好的选择。在阅读了Scala的文档之后,我的想法是:虽然这种语言的特性听起来挺好,但是语法却让我想放弃。为什么事情非要为了不同而不同?Scala让Groovy看起来比以前更加美味可口。 憎恨是个很强烈的词。我恨Scala的语法。请不要再推进这种语法了。……Scala有好的思想吗?有。借用过来就行了…… 总而言之,Scala看起来像下一个被过度宣传的语言。只需要把其精华引入到Groovy中,然后扔掉那些糟糕的语法。我最喜欢的Scala特性是推理类型和强类型。C#3.0也有这些。(我不用C#,不见得我不喜欢它的一些特性。)

163

社区成员

发帖
与我相关
我的任务
社区描述
GE的Predix平台整合云计算可扩展性、大数据管理和高级分析技术来助力新一代的数字化企业。结合GE自己作为全球工业界领导者的经验,Predix云平台为开发高级工业应用程序提供可连接性、安全和高性能。
云计算大数据 技术论坛(原bbs)
社区管理员
  • GE Predix工业互联网开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧