Monad(程序员们学好这门编程语言,钱多活少……)
2023年11月11日 靓嘟嘟 浏览量:次
先看StackOverflow上的三张图——
【1】
在米国挣钱多的编程语言
【2】
在数学领域挣钱多的编程语言
【3】
在数据科学领域挣钱多的三种编程语言组合
看完前两张图知道今天为大家介绍的编程语言是什么吗?看第三张图大家知道我想说啥了吗?
先回答第二个问题,在大数据时代,学点Python、JS估计可以走遍天下了。
第一个问题——今天向大家介绍Scala,一门功能强大的混合式编程语言,Spark、Kafka、Flink、Akka都是由这位兄台一手打造的。
我们先来看看Scala的特性。
运行在 JVM 和 JavaScript 之上
Scala 不仅利用了 JVM 的高性能以及最优化性,Java 丰富的工具及类库生态系统也为其所用。不过 Scala 并不是只能运行在 JVM 之上! Scala.js(http://www.scala-js.org)正在尝试将其迁移到 JavaScript 世界。
静态类型
在 Scala 语言中,静态类型是构建健壮应用系统的一个工具。Scala 修正了 Java 类型系统中的一些缺陷,此外通过类型推演(type inference)也免除了大量的冗余代码。
混合式编程范式——面向对象编程
Scala 完全支持面向对象编程。Scala 引入特征(trait)改进了 Java 的对象模型。trait 能通过使用混合结构(mixin composition)简洁地实现新的类型。在 Scala 中,一切都是对象,即使是数值类型。
混合式编程范式——函数式编程
Scala 完全支持函数式编程,函数式编程已经被视为解决并发、大数据以及代码正确性问题的最佳工具。使用不可变值、被视为一等公民的函数、无副作用的函数、高阶函数以及函数集合,有助于编写出简洁、强大而又正确的代码。
复杂的类型系统
Scala 对 Java 类型系统进行了扩展,提供了更灵活的泛型以及一些有助于提高代码正确性的改进。通过使用类型推演,Scala 编写的代码能够和动态类型语言编写的代码一样精简。
简洁、优雅、灵活的语法
使用 Scala 之后,Java 中冗长的表达式不见了,取而代之的是简洁的 Scala 方言。Scala 提供了一些工具,这些工具可用于构建领域特定语言(DSL),以及对用户友好的 API 接口。
可扩展的架构
使用 Scala,你能编写出简短的解释性脚本,并将其粘合成大型的分布式应用。以下四种语言机制有助于提升系统的扩展性:1) 使用 trait 实现的混合结构;2) 抽象类型成员和泛型;3) 嵌套类;4) 显式自类型(self type)。
打动你了吗?
So,有本学习该编程语言的重点书即将上市了,介绍给大家。有男神解读哦!
《Scala程序设计(第2版)》全面介绍Scala这种针对JVM的编程语言,它集成了现代对象模型、函数式编程和先进类型系统的所有优势。通过代码示例,向你展示如何即刻高效地利用该语言和生态系统,同时解释为何Scala是开发高可扩展、以数据为中心的应用程序的理想语言。这一版还介绍了Scala的新特性,新增了模式匹配和高级函数式编程章节。此外,你还会学到Scala的命令行工具、第三方工具、库等。
作者简介
Dean Wampler,Typesafe公司大数据架构师。另著有《面向Java开发者的函数式编程》《Hive编程指南》。
Alex Payne,Simple合伙创始人,曾任Twitter平台组长,负责开发服务,以供程序员在其上开发流行的社交通讯服务。
译者简介
王渊,现任Amazon中国研发工程师,拥有十余年编码经验,曾就职于Borland、Adobe等多家公司,担任工程师及技术经理等职位,擅长分布式系统以及高性能网站开发。
陈明,毕业于天津大学,现就职于奇虎360,担任服务端工程师。主要从事C++服务器引擎的开发和海量数据的实时处理。
这是一本非常全面深入的图书,初级读者无须阅读所有内容便可以使用 Scala 进行编程。本书的前 3 章“零到六十:Scala 简介”“更简洁,更强大”和“要点详解”,简要概括了 Scala 的核心语言特性。 第 4 章“模式匹配”和第 5 章“隐式详解”描述了使用 Scala 编程每天都会用到的两类基本工具,通过对这两类工具的描述将读者引领到更深的领域。
函数式编程(FP)是一种重要的软件开发方案,假如你之前从未接触过 FP,那么阅读第 6 章能通过 Scala 学习函数式编程。紧接着第 7 章将说明 Scala 对 for 循环的扩展,以及如何使用该扩展提供的简洁语法实现复杂而又符合规范的函数式代码。
接下来,第 8 章将介绍 Scala 是如何支持面向对象编程的。为了强调 FP 对于解决软件开发问题的重要性,作者将 FP 相关章节放到 OOP 章节之前。如果将 Scala 当作“更好的面向对象的Java”,那会较容易上手,但这样会丢掉这门语言最有力的工具。第 8 章的大多数内容在概念上很容易理解,读者将学到在 Scala 中如何定义类、构造函数等与Java相似的概念。
第 9 章将继续探索 Scala 的功能——使用 trait 对行为进行封装。Java 8 受到了 Scala trait 机制的影响,通过对接口进行扩展,新增了部分 trait 功能。对于这部分内容而言,即便是有经验的 Java 程序员也需要花时间理解。
接下来的 4 章,从第 10 章到第 13 章,“Scala 对象系统(I)”“Scala 对象系统(II)”“Scala 集合库”以及“可见性规则”,详细地讲解了 Scala 的对象模型和库类型。由于第 10 章包含了一些必须要尽早掌握的基本知识,因此阅读时要务必仔细。第 11 章讲述了如何正确地实现普通类型层次,你可以在第一遍阅读本书时略过这一章。第 12 章讨论了集合设计问题并提供了合理使用集合的相关信息。再重申一遍,假如你初次接触 Scala,那么请先略过此章,当你试图掌握集合类 API 的详细内容时,再回来学习。最后,第 13 章详细解释了 Scala 是如何对 Java 的 public、protected 以及 private 可见性概念进行细粒度扩展的。可以快速阅览此章。
从第 14 章开始,我们将进入更高级的主题:Scala 复杂类型。这部分内容划分为两章:第 14 章包含了 Scala 新手相对容易理解的概念,而第 15 章则讲述了更高级的内容,你可以选择以后再进行阅读。
类似地,第 16 章“高级函数式编程”讲述的内容中包括了更多高级的理论概念,例如,Monad 和仿函式(Functor)这些起源于范畴论的概念。一般水平的 Scala 开发者在最初并不需要掌握这些内容。
第 17 章“并发工具”有助于开发大型服务的程序员实现并发性的可伸缩性和可扩展性。这一章既论述了 Akka 这一基于 actor 的富并发模型,又讲述了像 Future 这类有助于编写异步代码的库类型。
第 18 章“Scala 与大数据”,通常而言,在大数据以及其他以数据为中心的计算领域里,应用 Scala 和函数式编程能够构造杀手级应用。
第 19 章“Scala 动态调用”和第 20 章“Scala 的领域特定语言”是较为高级的专题,探讨了可用于构建富领域特定语言的一些工具。
第 21 章“Scala 工具和库”讨论了一些 IDE 和第三方库。假如你是 Scala 新手,那么请阅读 IDE 和编辑器支持的相关小节,同时阅读关于 Scala 公认的项目构建工具:SBT 的相关小节。本章最后列出了可以引用的库列表。第 22 章“与 Java 的互操作”对于那些需要互用 Java 和 Scala 代码的团队而言很有帮助。
第 23 章“应用程序设计”是为架构师和软件组长而写的。我在这一章分享了自己在应用设计方面的一些观点。传统模式使用了相对较大的 JAR 文件,而这些 JAR 文件又包含了复杂的对象图谱。因此我认为这种模式是一种不良模式,需要进行变更。
最后,第 24 章“元编程:宏与反射”介绍了本书最高级的主题。当然,如果你是初学者,也可以略过这一章。
附录 A 总结了一些资料,供读者进一步阅读。
StackOverflow关于编程语言的其他统计:
http://stackoverflow.com/research/developer-survey-2016#technology-most-loved-dreaded-and-wanted
来,钱多活少的编程语言学起来!
- 贵州天岛湖(这里是天岛湖,不是千岛湖,来这里居住据说会长寿。)
- 丰泽电器(金融面皮下的暗规则,把金融投机的窍门说透了,值得去看)
- 澳大利亚珀斯(我在澳洲珀斯砌砖,这里对女性很友好,老太太头发五颜六色没人说)
- 佐餐(有一道佐餐小菜,味似芥末,又比芥末爽口,它就是远安冲菜)
- 七盛角(传承大宋中原民风民俗内涵的七盛角)
- 美则(刘慈欣:科幻文学之美体现在科学美和技术美)
- 巴黎塞纳河(“塞纳河不能游泳”将成历史法媒:迎奥运,巴黎加快治理塞纳河步伐)
- 固始县(固始县城市管理局开展健康巡讲“五进”活动)
- 威海神雕山动物园(从日本刚回来的大熊猫“香香”有望与在山东的“舅舅”认亲)
- 天津西站属于哪个区(天津西站附近景点,天津西站行李寄存位置)