精华内容
下载资源
问答
  • Scala未来是否比Java更好,或者Java开发人员为什么应该学习Scala等等。 好吧,学习Scala原因可能很多,例如,由于您在加入的公司中使用了它,或者您解决方案架构师决定使用它,您被迫学习,但这是另一回事...

    读者经常问我的问题之一是,我可以学习Scala吗? Scala的未来是否比Java更好,或者Java开发人员为什么应该学习Scala等等。 好吧,学习Scala的原因可能很多,例如,由于您在加入的新公司中使用了它,或者您的解决方案架构师决定使用它,您被迫学习,但这是另一回事。 在这里,我们将讨论鼓励Java开发人员学习Scala的原因。 最近,Scala已成为最强大的Java替代产品之一。 它一直是JVM的首选语言,
    Groovy和Clojure落后了,并且被人们首选为使用大多数代码编写的语言。

    Scala有几个优点,最强的是多范式语言。 利用功能编程习惯用法的优势,可以利用多核CPU架构,Scala很好地结合了流行的面向对象范例。

    它不仅解决了许多Java问题,例如解决了很少甚至没有样板,而且从语言的角度出发也提供了几种最佳实践和模式。 尽管提供了动态语言(如Python)的流畅性和灵活性,但它仍然是一种强静态类型的语言,可以防止您做坏事情,而在动态语言的情况下,这些事情只会在运行时发生。

    我确信Scala开发人员将在此列表中添加更多原因,但是由于Java背景和Java的热心支持者,我认为Scala肯定可以提供一些东西,并且以下原因使Java开发人员有很多学习Scala的理由。

    学习Scala编程语言的10个理由

    我认为Java程序员或每个程序员都应该学习Scala的原因如下:

    1)多天堂语言

    Scala与Java有所不同,因为它支持两种编程范例:面向对象编程(OOP)和函数编程(FP)。 为了提高编程技能,最好从不同的范例中学习至少一种语言,例如命令式,逻辑式,函数式和OOP,Scala使您有机会一起探索函数式和oop。

    实用程序员》一书还建议您每年学习一种新的编程语言。 Scala允许您定义与数据属性(具有类似C ++ / Java类的类)和行为属性(具有与Java接口相对应的特征)相关联的类型。

    与其他函数式编程语言一样,Scala函数是一流的(这意味着您可以将它们作为值传递),并且Scala还支持匿名函数和currying(多参数函数的部分应用)。

    这些功能的组合使编写简洁而优雅的Scala程序成为可能。 成为多范式是Scala的最大卖点之一,Java 8也尝试通过引入lambda表达式(请参阅Java SE 8 New Features )来尝试,但它仍然落后了几个步骤。 我认为,Scala将永远比Java具有更多的功能,但这是另一个争论的话题。

    2)与Java的互操作性

    我认为,Scala选择与Java互操作是Scala最好的事情。 Scala在Java虚拟机(JVM)上运行,并且可以与Java代码很好地互操作。 这意味着Scala开发人员可以直接从Scala代码使用Java库。

    鉴于很多Java开发人员都在使用Scala,这是利用他们多年的实际编程经验的完美方法。 也可以从Java调用Scala代码,您可以轻松地在Scala中编写程序的一部分,而在Java中编写其余部分。

    简而言之,与Java的互操作性为Scala成为主流的企业编程语言提供了巨大的潜力,因为世界上许多代码都是用Java编写的,并且全世界有很多开发人员都在使用Java进行工作。

    3) 最佳实践和模式内置语言

    关于Scala,您可能不知道的一件事是它最初是由瑞士大学EPFL开发的,它试图将编程语言研究中的最新创新应用到可以像Java一样获得主流关注的语言。

    语言本身内置了几种最佳实践和模式,例如val声明了顶级不变性 ,这比Java中重载的final更好,或者在C#中具有关联的怪异规则的const / read-only更好。

    Scala还提供了闭包,此功能已从功能编程范例中采用了Python和Ruby之类的动态语言。

    4)语言表达

    当您像我在上一篇关于Scala和Java之间区别的文章中所做的那样比较Scala 和Java时 ,Scala当然比Java得分高。 Scala本质上具有很高的表现力。 还有大量用Scala编写的非常漂亮和有用的代码。 这吸引了越来越多的Java开发人员学习Scala,他们喜欢这种漂亮的代码。

    为了给您带来一个想法,这是用Java和Scala编写的字数统计程序,您可以亲眼看到语言表达能力上的差异。 Scala仅用一条线就完成了,而Java则用了10条以上的线来实现。

    顺便说一句,可以通过使用Java 8功能在Java方面进行改进,此示例中未使用Java 8功能,但是在简洁明了的代码方面,Scala在Java方面得分很高。

    5) 适销对路

    哪个程序员不想上市? 学习新技术或框架的一个原因始终是更好的工作和职业发展。 学习Scala肯定会使您更具市场价值。 如今,许多公司正在使用或迁移到Scala,包括Twitter,LinkedIn,Foursquare和Quora。

    鉴于Scala的营销语言为可扩展语言,大型投资银行和金融机构开始寻找低延迟解决方案的Scala日子已经过去了。 Effective Java中给出的建议类似,Twitter已经共享了在Scala中将程序开发为Effective Scala的最佳实践。

    Quora的创建者花了几个月的时间来构建Scala Web框架以使用Scala。 Scala背后的人Martin Odersky现在支持Typesafe来支持商业性Scala开发。 所有事情都朝着正确的方向发展,以便Scala成为Java的第一个替代产品。

    6)静态类型语言

    通常,像Java这样的静态类型语言可以防止程序员执行不良操作,而对于像Python这样的动态语言,您只有在运行程序时才知道不良情况。

    Scala是两全其美的。 感觉像是动态的,但是它的静态类型很强,例如Haskell或Java。 Scala编译器确实很聪明,并且可以最大程度地使用类型推断。

    Scala为变量和函数提供类型推断,比Java和C#中的有限类型推断要好得多。 请参阅开始Scala编程以了解有关Scala语言功能的更多信息。

    8)不断增长的框架,例如Akka,Play和Spark

    您可能会知道Scala正在成长,而且成长非常顺利。 许多优秀的库,框架都应运而生。 已经开始使用Scala的公司也为Scala作为主流语言的最新发展做出了贡献。

    有一些不错的Scala Web框架,包括Lift和Play。 Akka是另一个基于Scala的并发框架,已将其自身建立为工具箱和运行时,用于在JVM上构建高度并发,分布式和容错的事件驱动的应用程序。

    Scala还与Apache Spark一起在大数据空间中使用,这进一步推动了许多对大数据空间感兴趣的Java开发人员对其的采用。

    7)成长中的社区

    随着语言的发展,Scala社区也正在Swift发展。 许多程序员,包括Java开发人员,都加入了Scala潮流。 越来越多的框架,库都基于Scala构建。

    越来越多的IDE开始支持Scala语法,在Eclipse和IntelliJ中提供了更好的支持。 SBT,Maven和Ant中强大的构建工具支持。 嗯,部分原因是因为Scala作为一种语言的功能,它可以像python这样的许多动态语言一样简洁,同时可以提供诸如静态类型,类型推断,功能性编程和面向对象的混合之类的功能编程。

    在最近的调查中,Scala还被吹捧为Java的第一选择。 我认为,要成长,Scala是Java的真正替代产品,因为Java 8还具有功能编程支持,因此它必须吸引越来越多的Java开发人员。 让像Twitter这样的大型组织采用Scala,无疑对社区有所帮助,因为他们拥有更多的资源和影响力。
    9)简洁语法

    长期以来,Java因其冗长而重复的语法而受到批评。 尽管它使Java更具可读性,就像英语一样,但是Scala在简洁和可读性的同时树立了新的标杆。 Scala编译器被称为scalac(记住javac ),它的功能超出了您的预期,它可以为您生成toString()equals()hasCode()和其他东西。 考虑一下用Java和Scala编写的同一类的两个代码段,然后做出选择:

    public class Book {
        private final String name;
        private final double price;
        public Star(String name, double price) {
            this.name = name;
            this.price = price;
        }
        @Override
        public int hashCode() {
            int hash = 7;
            hash = 23 * hash + Objects.hashCode(this.name);
            return hash;
        }
        @Override
        public boolean equals(Object obj) {
            if (obj == null) {
                return false;
            }
            if (getClass() != obj.getClass()) {
                return false;
            }
            final Test other = (Test) obj;
            if (!Objects.equals(this.name, other.name)) {
                return false;
            }
            if (Double.doubleToLongBits(this.price) != Double.doubleToLongBits(other.price)) {
                return false;
            }
            return true;
        }
        @Override
        public String toString() {
            return "Test{" + "name=" + name + ", distance=" + distance + '}';
        }
      
    }

    您可以使用Scala的case类编写相同的内容,如下所示:

    case class Book(name: String, price: double)

    顺便说一句,您还可以使用Lombok库( Java开发人员必不可少的库之一)来删除与getter,setter,equals,hashCode和toString相关的样板代码。 它可以自动为您生成那些。

    10)相对易学

    对于Java开发人员来说,学习经典的函数式编程语言(例如Haskell或OCaml)比Scala困难得多。换句话说,由于Scala具有oop功能,因此相对易于学习。

    在花时间学习函数式编程的同时,Java开发人员仍然可以利用现有的OOP知识在Scala中提高工作效率。 像Java一样,Scala具有简洁的语法,漂亮的库,完善的在线文档以及业内使用它的许多人。

    随着在论坛StackOverflow上越来越多的Scala社区的出现,找到任何Scala问题的答案并不难,这将增加您的学习经验。

    这就是为什么Java程序员应该学习Scala学习Scala编程语言的一些实际原因 一旦开始探索,我相信您会发现更多原因。 一旦您开始学习Scala,我相信您会爱上它。 它不仅提供了更简洁的OO代码,而且还提供了功能功能,它具有动态性(就像Python),而且具有静态类型系统,可以防止您做不好的事情。 如果您决定在2018年学习Scala,请参考以下有用的资源以进一步学习

    进阶学习

    感谢您到目前为止阅读本文。 如果您喜欢Scala并且发现我的理由有帮助,请与您的朋友和同事分享。 如果您还有其他理由要添加到此列表中,请随时添加注释。

    翻译自: https://www.javacodegeeks.com/2018/01/10-reasons-learn-scala-programming-language.html

    展开全文
  • 嗯,学习Scala原因可能很多,例如由于您已在刚加入的公司中使用它而您被迫学习它,或者您解决方案架构师决定将它用于您要工作新项目,但这是一个不同故事。 在这里,我们将讨论鼓励Java开...
    为什么要学习Scala?

    读者经常问我的一个问题是: “ Java开发人员应该学习 Scala 吗? Scala的未来会比 Java 更好 吗? Java开发人员为什么要学习Scala,等等?

    嗯,学习Scala的原因可能很多,例如由于您已在刚加入的新公司中使用它而您被迫学习它,或者您的解决方案架构师决定将它用于您要工作的新项目,但这是一个不同的故事。

    在这里,我们将讨论鼓励Java开发人员学习Scala的原因

    最近,Scala已成为最强大的Java替代产品之一。 它一直是JVM的首选语言 ,将GroovyKotlin抛在后面,并且因为人们希望使用最多的代码而成为首选语言。

    Scala有很多优点,最强的是它是一种多范式语言

    除了可以利用多核CPU架构的功能性编程惯用法的优越性之外,Scala还结合了流行的面向对象范例。

    它不仅解决了Java的许多问题,例如解决了很少甚至没有样板,而且还提供了一些语言上的最佳实践和模式,例如与val关键字和case类的不变性。

    尽管提供了动态语言(如Python)的流畅性和灵活性,但它仍然是一种强静态类型的语言,可以防止您在运行时使用动态语言发生不良行为。

    我确信Scala开发人员会在此列表中添加更多原因,但是由于Java背景和Java的热心支持者,我认为Scala确实可以提供一些东西,并且以下原因对于Java开发人员学习Scala非常有意义。 。

    事不宜迟,这是我列出程序员为什么应该学习Scala的10个原因:

    1.多天堂语言

    Scala与Java有所不同,因为它支持两种编程范例:面向对象编程( OOP )和函数编程( FP )。

    为了提高您的编程技能,最好从不同的范例中学习至少一种语言,例如命令式,逻辑式,函数式和OOP,Scala使您有机会一起探讨函数式和OOP。

    实用程序员》一书还建议您每年学习一种新的编程语言。

    程序员实用书

    Scala允许您定义与数据属性(具有类似C ++ / Java类的类)和行为属性(具有与Java接口相对应的特征)相关联的类型。

    就像在其他函数式编程语言中一样,在Scala中, 函数是一等公民 (这意味着您可以将它们作为值传递),并且Scala还支持匿名函数和currying(多参数函数的部分应用)。

    这些功能的组合使编写简洁而优雅的Scala程序成为可能。 成为多范式是Scala的最大卖点之一,Java 8也尝试通过引入lambda表达式(请参阅Java SE 8 New Features )来尝试这种方法,但是它仍然落后了几个步骤。 我认为,Scala将永远比Java具有更多的功能,但这是另一个争论的话题。

    2.与Java的互操作性

    我认为,Scala选择与Java互操作是Scala最好的事情。 Scala在Java虚拟机( JVM )上运行,并且可以与Java代码很好地互操作。

    这也意味着Scala开发人员可以直接从Scala代码使用Java库。

    鉴于许多Java开发人员都在转向Scala,这是利用他们多年的Java实际编程经验的完美方法。

    也可以从Java调用Scala代码,并且可以轻松地在Scala中编写程序的一部分,并在Java中编写其余部分。

    简而言之,与Java的互操作性为Scala成为主流的企业编程语言提供了巨大的潜力,因为世界上许多代码都是用Java编写的,并且全世界有许多开发人员正在使用Java进行工作。

    3.最佳实践和模式内置语言

    关于Scala,您可能不知道的一件事是,它最初是由瑞士大学EPFL开发的,旨在将编程语言研究中的最新创新应用到可以像Java一样获得主流关注的语言。

    语言本身内置了一些最佳实践和模式,例如val声明了顶级不变性 ,这比Java中重载的final关键字好得多,或者在C#中具有关联的怪异规则的const / read-only更好。

    它还提供了case类 ,这使得在Scala中创建不可变类变得容易。

    Scala还提供了闭包,此功能已从功能编程范例中采用了PythonRuby之类的动态语言。

    4.表现力

    当您像我在上一篇关于Scala和Java之间区别的文章中所做的那样比较Scala 和Java时 ,Scala当然比Java得分高。

    Scala本质上具有很高的表现力。 还有大量用Scala编写的非常漂亮和有用的代码。

    这吸引了越来越多的Java开发人员学习Scala,他们喜欢编写漂亮干净的代码

    为了给您带来一个想法,这是用Java和Scala编写的字数统计程序 ,您可以亲眼看到语言表达能力上的差异。

    Scala仅用一条线就完成了,而Java则用了10条以上的线来实现。

    Scala代码更加清晰简洁

    顺便说一下,可以通过使用lambdasstream之类的Java 8功能在Java方面进行改进,但在本示例中并未使用,但在简洁明了的代码方面,Scala在Java方面得分很高。

    5.适销对路

    哪个程序员不想上市? 学习新技术或框架的一个原因始终是更好的工作和职业发展。

    学习Scala肯定会使您更具市场价值。 如今,许多公司正在使用或迁移到Scala,包括Twitter,LinkedIn,Foursquare和Quora。

    考虑到Scala的营销是可扩展语言,大型投资银行和金融组织开始寻找Scala的低延迟解决方案的日子已经过去了。

    与中的建议相似 有效的Java Twitter已经分享了在Scala中开发程序的最佳实践,即有效的Scala。

    Quora的创建者花了几个月的时间来构建Scala Web框架以使用Scala。

    Scala背后的人Martin Odersky现在是Lightbend初创公司的背后, Lightbend被正式称为Typesafe,用于支持商业性Scala开发。

    一切都朝着正确的方向发展,以使Scala成为Java的主要替代产品。

    6.静态类型

    通常,像Java这样的静态类型语言可以防止程序员做坏事,而对于像Python这样的动态语言,则只有在运行程序时才知道坏事。

    Scala具有两全其美的优势。 感觉很动态,但是它是强静态类型的。 Scala编译器确实很聪明,并且在最大程度上使用了类型推断。

    Scala为变量和函数提供类型推断,比JavaC#中的有限类型推断要好得多。

    7.不断增长的框架

    您可能对生态系统了解的一件事是Scala正在增长。 有很多不错的库和框架。

    已经开始使用Scala的公司也为Scala作为主流语言的最新发展做出了贡献。

    有一些不错的Scala Web框架,包括Lift和Play。

    Akka是另一个基于Scala的并发框架,已经将自己确立为工具包和运行时,用于在JVM上构建高度并发,分布式和容错的事件驱动应用程序。

    Scala还与Apache Spark一起在大数据领域中使用,这进一步推动了许多对大数据感兴趣的Java开发人员对其的采用。

    顺便说一句,如果您对Spark感兴趣,那么您也可以在Udemy上学习从头开始学习Apache Spark课程。

    8.成长中的社区

    随着语言和相关框架的发展,Scala社区也在不断发展。 许多程序员,包括Java开发人员 ,都加入了Scala潮流。

    越来越多的IDE开始支持Scala语法,并且EclipseIntelliJ中提供了更好的支持。 SBT,Maven和Ant也提供了出色的构建工具支持。

    在最近的调查中,Scala还被吹捧为Java的第一选择。 我认为,要使Scala成为Java的真正替代产品,鉴于Java 8还具有功能编程支持,它必须吸引越来越多的Java开发人员。

    让像Twitter这样的大型组织采用Scala无疑会对社区有所帮助,因为它们拥有更多的资源和影响力。

    9.简洁语法

    长期以来,Java因其冗长而繁琐的语法而受到批评。 尽管它使Java更具可读性,就像英语一样,但是Scala在简洁和可读性的同时树立了新的标杆。

    Scala编译器被称为scalac(记住javac ),其性能超出了您的预期。 它可以为您生成toString()equals()hasCode()等。 考虑用Java和Scala编写的同一类的两个代码段,以帮助您做出选择:

    public class Book { private final String name; private final double price; public Star(String name, double price) { this.name = name; this.price = price; } public Star(String name, double price) { this.name = name; this.price = price; } @Override public int hashCode() { int hash = 7; hash = 23 * hash + Objects.hashCode(this.name); return hash; } @Override public int hashCode() { int hash = 7; hash = 23 * hash + Objects.hashCode(this.name); return hash; } @Override public int hashCode() { int hash = 7; hash = 23 * hash + Objects.hashCode(this.name); return hash; } @Override public boolean equals(Object obj) { if (obj == null) { return false; } @Override public boolean equals(Object obj) { if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } if (getClass() != obj.getClass()) { return false; } final Test other = (Test) obj; if (!Objects.equals(this.name, other.name)) { return false; } if (!Objects.equals(this.name, other.name)) { return false; } if (Double.doubleToLongBits(this.price) != Double.doubleToLongBits(other.price)) { return false; } return true; } if (Double.doubleToLongBits(this.price) != Double.doubleToLongBits(other.price)) { return false; } return true; } if (Double.doubleToLongBits(this.price) != Double.doubleToLongBits(other.price)) { return false; } return true; } @Override public String toString() { return "Test{" + "name=" + name + ", price=" + price + '}'; } @Override public String toString() { return "Test{" + "name=" + name + ", price=" + price + '}'; } }

    您可以使用Scala的case类编写相同的内容:

    case class Book(name: String, price: double)

    顺便说一句,您还可以使用Lombok库( Java开发人员必不可少的库之一)来删除与getter,setter,equals,hashCode和toString相关的样板代码。 它可以自动为您生成那些。

    10.与Haskell和其他函数式编程语言相比,它更易于学习

    对于Java开发人员而言,学习经典的函数式编程语言(例如Haskell或OCaml)比Scala困难得多。

    换句话说,Scala具有OOP功能,因此相对易于学习。

    在花时间学习函数式编程的同时,Java开发人员仍然可以利用现有的OOP知识在Scala中提高工作效率。 Java一样,Scala具有简洁的语法,漂亮的库,完善的在线文档以及许多使用它的行业人士。

    随着越来越多的Scala社区在论坛上出现,找到任何Scala问题的答案并不难,这增加了您的学习经验。

    结论

    一旦您开始学习Scala,我相信您会爱上它。 它不仅具有更简洁的OO代码,而且还具有功能,它具有动态感(例如Python),但是它具有静态类型系统,可以防止您做不好的事情。 如果您决定在2018或2019学习Scala,则这里有一些有用的资源可供进一步学习。

    1. 开始Scala编程
    2. Scala:Justin Pihony入门
    3. Java开发人员的Scala作者:Toby Weston
    4. 不耐烦的Scala
    5. Scala中的函数式编程

    进入美丽的Scala和函数式编程世界,祝一切顺利。 如果您有任何疑问或反馈,请留下笔记。

    如果您喜欢这篇文章,请与您的朋友和同事分享,不要忘记在Twitter上关注javinpaul,在Medium中关注javinpaul!

    PS-如果您需要一些免费资源,则可以查看Scala编程迷你入门训练营 -入门课程-#FREE课程,开始您的Scala之旅。

    Scala-黑客中午

    From: https://hackernoon.com/10-reasons-to-learn-scala-and-functional-programming-2fce385e6ec7

    展开全文
  • Scala未来是否比Java更好,或者为什么Java开发人员应该学习Scala等。 好吧,学习Scala原因可能很多,例如,由于您在加入的公司中使用了它或您解决方案架构师决定使用它,您被迫学习,但这是另一回事。 在...

    scala编程

    读者经常问我的问题之一是,我可以学习Scala吗? Scala的未来是否比Java更好,或者为什么Java开发人员应该学习Scala等。 好吧,学习Scala的原因可能很多,例如,由于您在加入的新公司中使用了它或您的解决方案架构师决定使用它,您被迫学习,但这是另一回事。 在这里,我们将讨论鼓励Java开发人员学习Scala的原因。 最近,Scala已成为最强大的Java替代产品之一。 它一直是JVM的首选语言,
    Groovy和Clojure落后于人们,并且被人们喜欢用其编写大多数代码的语言所青睐。

    Scala有几个优点,最强的是多范式语言。 利用功能编程习惯的优势,利用多核CPU架构,Scala可以很好地结合流行的面向对象范例。

    它不仅解决了许多Java问题,例如解决了很少甚至没有样板,而且从语言的角度出发也提供了几种最佳实践和模式。 尽管提供了动态语言(如Python)的流畅性和灵活性,但它仍然是一种强静态类型的语言,可以防止您做坏事情,而在动态语言的情况下,这些事情只会在运行时发生。

    我确信Scala开发人员会在此列表中添加更多的原因,但是由于Java背景和Java的热心支持者,我认为Scala肯定可以提供一些东西,并且以下原因使Java开发人员有很多学习Scala的理由。

    学习Scala编程语言的10个理由

    我认为Java程序员或每个程序员都应该学习Scala的原因如下:

    1)多国语言

    Scala与Java有所不同,因为它支持两种编程范例:面向对象编程(OOP)和函数编程(FP)。 为了提高编程技能,最好从不同的范例中学习至少一种语言,例如命令式,逻辑式,函数式和OOP,Scala使您有机会一起探索函数式和oop。

    实用程序员》一书还建议您每年学习一种新的编程语言。 Scala允许您定义与数据属性(具有类似C ++ / Java类的类)和行为属性(具有与Java接口相对应的特征)相关联的类型。

    与其他函数式编程语言一样,Scala函数是一流的(这意味着您可以将它们作为值传递),并且Scala还支持匿名函数和curring(多参数函数的部分应用)。

    这些功能的组合使编写简洁而优雅的Scala程序成为可能。 成为多范式是Scala的最大卖点之一,Java 8也尝试通过引入lambda表达式(请参阅Java SE 8 New Features )来尝试,但是它仍然落后了几个步骤。 我认为,Scala将永远比Java具有更多的功能,但这是另一个争论的话题。

    2)与Java的互操作性

    在我看来,Scala选择与Java互操作是Scala最好的事情。 Scala在Java虚拟机(JVM)上运行,并且可以与Java代码很好地互操作。 这意味着Scala开发人员可以直接从Scala代码使用Java库。

    鉴于很多Java开发人员都在使用Scala,这是利用他们多年的实际编程经验的完美方式。 也可以从Java调用Scala代码,并且可以轻松地在Scala中编写程序的一部分,而在Java中编写其余部分。

    简而言之,与Java的互操作性为Scala成为主流的企业编程语言提供了巨大的潜力,因为世界上许多代码都是用Java编写的,并且全世界有许多开发人员都在使用Java进行工作。

    3) 最佳实践和模式内置语言

    关于Scala,您可能不知道的一件事是它最初是由瑞士大学EPFL开发的,它试图将编程语言研究中的最新创新应用到可以像Java一样获得主流关注的语言。

    语言本身内置了几种最佳实践和模式,例如val声明了顶级不变性 ,这比Java中重载的final更好,或者在C#中具有关联的怪异规则的const / read-only更好。

    Scala还提供了闭包,此功能已从功能编程范例中采用了Python和Ruby之类的动态语言。

    4)语言表达

    当您像在上一篇关于Scala和Java之间区别的文章中所做的那样比较Scala 和Java时 ,Scala肯定比Java得分高。 Scala本质上具有很高的表现力。 还有大量用Scala编写的非常漂亮和有用的代码。 这吸引了越来越多的Java开发人员学习Scala,他们喜欢这种漂亮的代码。

    为了给您带来一个想法,这是用Java和Scala编写的字数统计程序,您可以亲眼看到语言表达能力上的差异。 Scala仅用一条线就完成了,而Java则用了10条以上的线来实现。

    顺便说一句,可以通过使用Java 8功能在Java方面进行改进,此示例中未使用Java 8功能,但是在简洁明了的代码方面,Scala在Java方面得分很高。

    5) 适销对路

    哪个程序员不想上市? 学习新技术或框架的一个原因始终是更好的工作和职业发展。 学习Scala肯定会使您更具市场价值。 如今,许多公司正在使用或迁移到Scala,包括Twitter,LinkedIn,Foursquare和Quora。

    鉴于Scala的营销语言为可扩展语言,大型投资银行和金融组织开始寻找低延迟解决方案的Scala日子已经过去了。 有效Java中提供的建议类似,Twitter已经分享了在Scala中将程序开发为有效Scala的最佳实践。

    Quora的创建者花了几个月的时间来构建Scala Web框架以使用Scala。 Scala背后的人Martin Odersky现在支持Typesafe来支持商业性Scala开发。 所有事情都朝着正确的方向发展,以便Scala成为Java的第一个替代产品。

    6)静态类型语言

    通常,像Java这样的静态类型语言可以防止程序员执行不良操作,而对于像Python这样的动态语言,您仅在运行程序时才知道不良情况。

    Scala是两全其美的。 感觉像是动态的,但是它的静态类型很强的语言,例如Haskell或Java。 Scala编译器确实很聪明,并且可以最大程度地使用类型推断。

    Scala为变量和函数提供类型推断,比Java和C#中的有限类型推断要好得多。 请参阅开始Scala编程以了解有关Scala语言功能的更多信息。

    8)不断增长的框架,例如Akka,Play和Spark

    您可能会知道Scala正在成长,而且成长非常顺利。 许多优秀的库,框架都应运而生。 已经开始使用Scala的公司也为Scala作为主流语言的最新发展做出了贡献。

    有一些不错的Scala Web框架,包括Lift和Play。 Akka是另一个基于Scala的并发框架,已将其自身建立为工具包和运行时,用于在JVM上构建高度并发,分布式和容错的事件驱动应用程序。

    Scala还与Apache Spark一起在大数据空间中使用,这进一步推动了许多对大数据空间感兴趣的Java开发人员对其的采用。

    7)成长中的社区

    随着语言的发展,Scala社区也正在Swift发展。 许多程序员,包括Java开发人员,都加入了Scala潮流。 越来越多的框架,库都基于Scala构建。

    越来越多的IDE开始支持Scala语法,在Eclipse和IntelliJ中提供了更好的支持。 SBT,Maven和Ant中强大的构建工具支持。 嗯,部分原因是因为Scala作为一种语言的功能,它可以像python这样的许多动态语言一样简洁,同时可以提供诸如静态类型,类型推断,功能性编程和面向对象的混合之类的功能编程。

    在最近的调查中,Scala还被吹捧为Java的第一选择。 我认为,要成长,Scala是Java的真正替代产品,因为Java 8还具有功能编程支持,因此它必须吸引越来越多的Java开发人员。 让像Twitter这样的大型组织采用Scala,无疑对社区有所帮助,因为他们拥有更多的资源和影响力。
    9)简洁语法

    长期以来,Java因其冗长而重复的语法而受到批评。 尽管它使Java更具可读性,就像英语一样,但是Scala在简洁和可读性的同时树立了新的标杆。 Scala编译器被称为scalac(记住javac ),它的功能超出了您的预期,它可以为您生成toString()equals()hasCode()和其他东西。 考虑一下用Java和Scala编写的同一类的两个代码段,然后做出选择:

    public class Book {
        private final String name;
        private final double price;
        public Star(String name, double price) {
            this.name = name;
            this.price = price;
        }
        @Override
        public int hashCode() {
            int hash = 7;
            hash = 23 * hash + Objects.hashCode(this.name);
            return hash;
        }
        @Override
        public boolean equals(Object obj) {
            if (obj == null) {
                return false;
            }
            if (getClass() != obj.getClass()) {
                return false;
            }
            final Test other = (Test) obj;
            if (!Objects.equals(this.name, other.name)) {
                return false;
            }
            if (Double.doubleToLongBits(this.price) != Double.doubleToLongBits(other.price)) {
                return false;
            }
            return true;
        }
        @Override
        public String toString() {
            return "Test{" + "name=" + name + ", distance=" + distance + '}';
        }
      
    }

    您可以使用Scala的case类编写相同的内容,如下所示:

    case class Book(name: String, price: double)

    顺便说一句,您还可以使用Lombok库( Java开发人员必不可少的库之一)删除与getter,setter,equals,hashCode和toString相关的样板代码。 它可以自动为您生成那些。

    10)相对易学

    对于Java开发人员而言,学习经典的函数式编程语言(例如Haskell或OCaml)比Scala困难得多。换句话说,由于Scala具有oop功能,因此相对易于学习。

    在花时间学习函数式编程的同时,Java开发人员仍然可以利用现有的OOP知识在Scala中提高工作效率。 像Java一样,Scala具有简洁的语法,漂亮的库,良好的在线文档以及许多使用它的行业人士。

    随着在论坛StackOverflow上越来越多的Scala社区的出现,找到任何Scala问题的答案并不难,这增加了您的学习经验。

    这就是为什么Java程序员应该学习Scala学习Scala编程语言的一些实际原因 一旦开始探索,我相信您会发现更多原因。 一旦您开始学习Scala,我相信您会爱上它。 它不仅具有更清晰的OO代码,而且还具有功能性功能,它具有动态性(就像Python),而且具有静态类型系统,可以防止您做不好的事情。 如果您决定在2018年学习Scala,请参考以下有用的资源以进一步学习

    进阶学习

    感谢您到目前为止阅读本文。 如果您喜欢Scala并且发现我的理由有帮助,请与您的朋友和同事分享。 如果您还有其他理由要添加到此列表中,请随时添加注释。

    翻译自: https://www.javacodegeeks.com/2018/01/10-reasons-learn-scala-programming-language.html

    scala编程

    展开全文
  • scala 函数式编程 为什么要学习Scala... 好吧,学习Scala原因可能很多,例如由于您已在刚加入的公司中使用它而您被迫学习它,或者您解决方案架构师决定将它用于您要工作新项目,但这是一个不同故事。 在...

    scala 函数式编程

    为什么要学习Scala?

    读者经常问我的问题之一是: “ Java开发人员应该学习 Scala 吗? Scala的未来会比 Java 更好 吗? Java开发人员为什么要学习Scala,等等?

    好吧,学习Scala的原因可能很多,例如由于您已在刚加入的新公司中使用它而您被迫学习它,或者您的解决方案架构师决定将它用于您要工作的新项目,但这是一个不同的故事。

    在这里,我们将讨论鼓励Java开发人员学习Scala的原因

    最近,Scala成为最强大的Java替代产品之一。 它一直是JVM的首选语言 ,将GroovyKotlin抛在后面,并且因为人们希望使用最多的代码而被首选。

    Scala有很多优点,最强的是它是一种多范式语言

    除了可利用多核CPU架构的功能性编程惯用法的优越性之外,Scala还结合了流行的面向对象范例。

    它不仅解决了Java的许多问题,例如解决了很少甚至没有样板,而且还提供了一些语言上的最佳实践和模式,例如与val关键字和case类的不变性。

    尽管提供了动态语言(如Python)的流畅性和灵活性,但它仍然是一种强静态类型的语言,可以防止您在运行时以动态语言发生的不良行为。

    我确信Scala开发人员会在此列表中添加更多原因,但是由于来自Java背景和Java的热心支持者,我认为Scala当然可以提供一些东西,并且以下原因对于Java开发人员学习Scala非常有意义。 。

    事不宜迟,这是我列出程序员为什么应该学习Scala的10个原因:

    1.多天堂语言

    Scala与Java有所不同,因为它支持两种编程范例:面向对象编程( OOP )和函数编程( FP )。

    为了提高您的编程技能,最好从不同的范例中学习至少一种语言,例如命令式,逻辑式,功能性和OOP,Scala使您有机会一起探索功能性和OOP。

    实用程序员》一书还建议您每年学习一种新的编程语言。

    程序员实用书

    Scala允许您定义与数据属性(具有类似C ++ / Java类的类)和行为属性(具有与Java接口相对应的特征)相关联的类型。

    就像在其他函数式编程语言中一样,在Scala中, 函数是一等公民 (这意味着您可以将它们作为值传递),并且Scala还支持匿名函数和currying(多参数函数的部分应用)。

    这些功能的组合使编写简洁而优雅的Scala程序成为可能。 成为多范式是Scala的最大卖点之一,Java 8也尝试通过引入lambda表达式(请参阅Java SE 8 New Features )来尝试这种方法,但是它仍然落后了几个步骤。 我认为,Scala将永远比Java具有更多的功能,但这是另一个争论的话题。

    2.与Java的互操作性

    在我看来,Scala选择与Java互操作是Scala最好的事情。 Scala在Java虚拟机( JVM )上运行,并且可以与Java代码很好地互操作。

    这也意味着Scala开发人员可以直接从Scala代码使用Java库。

    鉴于许多Java开发人员都在转向Scala,这是利用他们多年的Java实际编程经验的完美方式。

    也可以从Java调用Scala代码,并且可以轻松地在Scala中编写部分程序,并在Java中轻松编写其余部分。

    简而言之,与Java的互操作性为Scala成为主流的企业编程语言提供了巨大的潜力,因为世界上许多代码都是用Java编写的,并且全世界有许多开发人员正在使用Java进行工作。

    3.最佳实践和模式内置语言

    关于Scala,您可能不知道的一件事是,它最初是由瑞士大学EPFL开发的,它试图将编程语言研究中的最新创新应用于可以像Java一样获得主流关注的语言。

    语言本身内置了一些最佳实践和模式,例如val声明了顶级的不变性 ,这比Java中重载的final关键字好得多,或者在C#中具有关联的怪异规则的const / read-only更好。

    它还提供了case类 ,这使得在Scala中创建不可变类变得容易。

    Scala还提供了闭包,此功能已从功能编程范例中采用了PythonRuby之类的动态语言。

    4.表现力

    当您像我在上一篇关于Scala和Java之间区别的文章中所做的那样比较Scala 和Java时 ,Scala当然比Java得分高。

    Scala本质上具有很高的表现力。 还有大量用Scala编写的非常漂亮和有用的代码。

    这吸引了越来越多的Java开发人员学习Scala,他们喜欢编写漂亮干净的代码

    为了给您带来一个想法,这是用Java和Scala编写的字数统计程序 ,您可以亲眼看到语言表达能力上的差异。

    Scala仅用一条线就完成了,而Java则用了10条以上的线来实现。

    Scala代码更加清晰简洁

    顺便说一下,可以通过使用lambdasstream之类的Java 8功能在Java方面进行改进,但在本示例中并未使用,但Scala在简洁和简洁的代码方面比Java得分高。

    5.适销对路

    哪个程序员不想上市? 学习新技术或框架的一个原因始终是更好的工作和职业发展。

    学习Scala肯定会使您更具市场价值。 如今,许多公司正在使用或迁移到Scala,包括Twitter,LinkedIn,Foursquare和Quora。

    鉴于Scala的营销语言为可扩展语言,大型投资银行和金融组织开始寻找Scala的低延迟解决方案的日子已经过去了。

    与中的建议相似 有效的Java Twitter已经分享了在Scala中以有效的Scala开发程序的最佳实践。

    Quora的创建者花了几个月的时间来构建Scala Web框架以使用Scala。

    Scala背后的人Martin Odersky现在是Lightbend初创公司的背后, 后者被正式称为Typesafe,用于支持商业性Scala开发。

    一切都朝着正确的方向发展,以使Scala成为Java的主要替代产品。

    6.静态类型

    通常,像Java这样的静态类型语言可以防止程序员做坏事,而对于像Python这样的动态语言,则只有在运行程序时才知道坏事。

    Scala具有两全其美的优势。 感觉很动态,但是它是强静态类型的。 Scala编译器确实很聪明,并且在最大程度上使用了类型推断。

    Scala为变量和函数提供类型推断,比JavaC#中的有限类型推断要好得多。

    7.不断增长的框架

    您可能对生态系统了解的一件事是Scala正在成长。 有很多好的库和框​​架。

    已经开始使用Scala的公司也为Scala作为主流语言的最新发展做出了贡献。

    有一些不错的Scala Web框架,包括Lift和Play。

    Akka是另一个基于Scala的并发框架,已经将其自身建立为工具包和运行时,用于在JVM上构建高度并发,分布式和容错的事件驱动应用程序。

    Scala还与Apache Spark一起在大数据空间中使用,这进一步推动了许多对大数据感兴趣的Java开发人员对其的采用。

    顺便说一句,如果您对Spark感兴趣,那么您也可以在Udemy上学习从头开始学习Apache Spark课程。

    8.成长中的社区

    随着语言和相关框架的发展,Scala社区也在不断发展。 许多程序员,包括Java开发人员 ,都加入了Scala潮流。

    越来越多的IDE开始支持Scala语法,并且EclipseIntelliJ中提供了更好的支持。 SBT,Maven和Ant也提供了强大的构建工具支持。

    在最近的调查中,Scala还被吹捧为Java的第一选择。 我认为,要使Scala成为Java的真正替代产品,鉴于Java 8还具有功能编程支持,它必须吸引越来越多的Java开发人员。

    让像Twitter这样的大型组织采用Scala肯定会对社区有所帮助,因为它们拥有更多的资源和影响力。

    9.简洁语法

    长期以来,Java因其冗长而繁琐的语法而受到批评。 尽管它使Java更具可读性,就像英语一样,但是Scala在简洁和可读性的同时树立了新的标杆。

    Scala编译器被称为scalac(记住javac ),其功能超出了您的预期。 它可以为您生成toString()equals()hasCode()等。 考虑一下用Java和Scala编写的同一类的两个代码段,以帮助您做出选择:

    public class Book { private final String name; private final double price; public Star(String name, double price) { this.name = name; this.price = price; } public Star(String name, double price) { this.name = name; this.price = price; } @Override public int hashCode() { int hash = 7; hash = 23 * hash + Objects.hashCode(this.name); return hash; } @Override public int hashCode() { int hash = 7; hash = 23 * hash + Objects.hashCode(this.name); return hash; } @Override public int hashCode() { int hash = 7; hash = 23 * hash + Objects.hashCode(this.name); return hash; } @Override public boolean equals(Object obj) { if (obj == null) { return false; } @Override public boolean equals(Object obj) { if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } if (getClass() != obj.getClass()) { return false; } final Test other = (Test) obj; if (!Objects.equals(this.name, other.name)) { return false; } if (!Objects.equals(this.name, other.name)) { return false; } if (Double.doubleToLongBits(this.price) != Double.doubleToLongBits(other.price)) { return false; } return true; } if (Double.doubleToLongBits(this.price) != Double.doubleToLongBits(other.price)) { return false; } return true; } if (Double.doubleToLongBits(this.price) != Double.doubleToLongBits(other.price)) { return false; } return true; } @Override public String toString() { return "Test{" + "name=" + name + ", price=" + price + '}'; } @Override public String toString() { return "Test{" + "name=" + name + ", price=" + price + '}'; } }

    您可以使用Scala的case类编写相同的内容:

    case class Book(name: String, price: double)

    顺便说一句,您还可以使用Lombok库(这是Java开发人员必不可少的库)来删除与getter,setter,equals,hashCode和toString相关的样板代码。 它可以自动为您生成那些。

    10.与Haskell和其他函数式编程语言相比,它更易于学习

    对于Java开发人员而言,学习经典的函数式编程语言(例如Haskell或OCaml)比Scala困难得多。

    换句话说,Scala具有OOP功能,因此相对易于学习。

    在花时间学习函数式编程的同时,Java开发人员仍然可以利用现有的OOP知识在Scala中提高工作效率。 Java一样,Scala具有简洁的语法,漂亮的库,良好的在线文档以及许多使用它的行业人士。

    随着越来越多的Scala社区在论坛上出现,找到任何Scala问题的答案并不难,这增加了您的学习经验。

    结论

    一旦您开始学习Scala,我相信您会爱上它。 它不仅具有更清晰的OO代码,而且还具有功能,它具有动态感(如Python),但它具有静态类型系统,可以防止您做不好的事情。 如果您决定在2018或2019年学习Scala,请参考以下有用的资源以进一步学习。

    1. 开始Scala编程
    2. Scala:Justin Pihony入门
    3. Java开发人员的Scala作者:Toby Weston
    4. 不耐烦的Scala
    5. Scala中的函数式编程

    进入美丽的Scala和函数式编程世界,祝一切顺利。 如果您有任何疑问或反馈,请留下笔记。

    如果您喜欢这篇文章,请与您的朋友和同事分享,不要忘记在Twitter上关注javinpaul,在Medium中关注javinpaul!

    PS —如果您需要一些免费资源,则可以查看Scala编程迷你入门训练营 -入门课程— #FREE课程,开始您的Scala之旅。

    Scala-黑客中午

    翻译自: https://hackernoon.com/10-reasons-to-learn-scala-and-functional-programming-2fce385e6ec7

    scala 函数式编程

    展开全文
  •  为什么在中国这样的新兴证券市场中,承销商和会计事务所等中介机构不能像发达国家成熟市场中的那样,处于超然的地位,有效发挥独立公正的作用,抑制部分上市公司的恶意融资行为,反而成为它们的帮凶呢?...
  • 另外,图灵公司的论坛上丰富的资料和活跃的讨论也使我们眼界大开,受益良多。  翻译工作并非阐述自己的思想,翻译的第一要务是忠实地传达原著者的思想。虽然无法自由地表达自己的想法,然而,翻译的快乐就在于:使...
  • 另外,图灵公司的论坛上丰富的资料和活跃的讨论也使我们眼界大开,受益良多。  翻译工作并非阐述自己的思想,翻译的第一要务是忠实地传达原著者的思想。虽然无法自由地表达自己的想法,然而,翻译的快乐就在于:使...
  • Egret 童话 与 现实

    2021-01-03 14:33:25
    <p>7yue老师文章里第一个阐述问题就是 Egret 为什么选择 TypeScript ,总结一下有以下几点: <ol><li>TypeScript 是 ES6 超集,将来ES6普及时,可以平滑过渡到ES6</li><li>TypeScript 弥补了...
  • 关键还是得将架构跟自己公司的业务结合起来做选择。 而 Go kit 的缺点也可以用其它方式来弥补: <ol><li>利用工具生成代码;</li><li>怎么说呢,其它的框架还有更多概念,Go kit 算少了;...
  • 为什么选择与我们合作? Crowdfundur由专门从事众筹,营销,公共关系,发明,产品开发和业务独家团队组成。 拥有超过15年“行业”经验,我们拥有98%成功率,并且仅打算保持这种状态。 通过创建并成功实施了...
  • 序言

    千次阅读 2009-06-20 15:38:00
    五年前,在参加Autodesk的面试时,面试官问我为什么加入Autodesk,我给了他一个非常冠冕堂皇的理由:我希望自己编写的软件能够被世界各地成千上万的人使用,Autodesk正是这样一家能够为我实现这一梦想的公司。...
  • 当然,如果老外在我国市场有代理人、成立了合资或独资公司什么的,也就是说如果老外接受我们法律约束并我们市场交税话我们是没有理由打劫老外内核作者开发费,那个时候开源矿工会立即停止打劫老外内核...
  • vfp6.0系统免费下载

    2009-09-17 13:49:13
    问题 2-11: 为什么在运行时刻修改表单新 Scrollbars 属性时,表单上并不显示滚动条? 答案: 在表单建立之前,Visual FoxPro 会读入表单 Scrollbars 属性设置,因为此属性值将决定表单创建方式。如果 ...
  • 如果你不明白为什么这是大错,最好在搞清楚这之间差异之前什么也别问。 一般来说,在仔细挑选公共论坛中提问,会比在私有论坛中提同样问题更容易得到有用回答。有几个理由可以支持这点,一是看潜在回复者有...
  • 在开发Excel的两年中,我发现Microsoft虽然壮大了两倍,但许多老项目组熟知的概念并没有随着公司的壮大而传到新项目组。新程序员不象我加入Microsoft之前时的老程序员一样对容易引起错误的编码习惯特别重视,而只有...
  • 他拥有Oracle OCP DBA证书和HP UNIX System Administrator证书,曾经担任Oracle公司的高级顾问,并在AT&T、雷曼兄弟、NBC等世界顶级公司担任DBA。目前,他管理着世界上最大的Oracle数据库之一——美国童子军全国总部...
  • Oracle专家高级编程--详细书签版

    热门讨论 2012-08-21 11:57:09
     本书是一本关于使用Oracle成功开发应用程序的工具手册,由Oracle公司的资深开发人员Thomas Kyte集自己多年开发经验编写。学习本书能帮助读者彻底理解Oracle的工作原理,并将Oracle作为一个强大的计算环境来使用,...
  • Internet的出现增强了公司的联网意识,也使公司认识到采取信息保护主义态度的危险,同时,Internet和电子商务模型也带来了不可预测的挑战。 Internet决定了交易时间和地点由顾客决定。在Internet世界中,存储总是...
  • 原因很简单,Oracle给一个参数一个默认值是让它最大限度地适用于每个数据库,所以它几乎是最优的,当然,绝对有个别数据库需要适当调整,但我认为那是个例,并且,很多时候,修改这些参数的人,他们修改的理由并不是...
  • 若你作为一名管理员刚加入M公司,你认为快速原型法对公司的软件开发更加优越,请向公司副总裁写一份报告阐明你的理由,切记:副总裁不喜欢报告长度 超过一页(B5)。 参考答案提示: 应先简述瀑布模型的缺点,它已不...
  • 本书中定义了许多有用类(如网格、场景、相机和纹理等类),并且说明了这些类为什么方便易用。在某些场合下,为了使程序更加清晰易读,我们使用了面向对象编程中一些技术,如继承和多态,不过,我们并不过分强调...
  • Lucene开始是做私有项目。在1997年末,因为工作不稳定,我寻找自己一些东西来...Lucene和Lucene in Action证明了有类似兴趣人们可以完成什么,不管在人生中会碰到什么情况,都会积极地全球知识共享做出贡献。
  • 在程序实例讲解方面,主要将实例安插在android开发精髓知识章节,这初学者学习与实践结合提供了很好指导。.  本书配套有400多分钟全程开发视频光盘,指导读者快速、无障碍地学通android实战开发技术。.. ...

空空如也

空空如也

1 2
收藏数 37
精华内容 14
关键字:

为什么加入公司的理由