谈谈学习Scala的心得
----读《快学Scala》有感
对于Scala从没有接触过,但我想学习它。有两个原因:
首先,想挑战一下自己在大学期间所掌握的学习方法论,检验一下自己学习能力情况;
第二,马上将要就业了,即将到来的工作不一定是用现在学会的面向过程的C或面向对象的java,说不定马上要用上Scala了。
在阅读的过程中,我分两步阅读,现在总结也分两步去总结:
第一步:前言与目录
这部分给我了很大的学习启发。很重要的一句话“Scala是一门以Java虚拟机(JVM)为目标运行环境并将面向对象和函数式编程语言的最佳特性结合在一起的编程语言。”明确了以下几点:
1.JVM运行环境,要求我们要有java基础,跟java有很大关系;
2.面向对象,说明这个语言中也会有类与对象,一些面向对象的设计模式也可以应该到这里面去,还有面向对象思想会渗入其中;
3.函数式编程语言,要了解函数式编程。上网找到来自wiki的定义:In computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data.
大概意思:在计算机科学中,函数式编程是一种编程模型,将计算机运算看作是数学中函数的计算,同时避免了状态以及变量。
第二步,实例与实战总结
相对于用java或C++,用Scala真的能大大提高效率,有些人说代码量会比用JAVA少三分之二,通过阅读真的有这个可能性,因为它具如下的几个特点:
1.书写简单与简洁
很多东西都变得十分的简单,用这个就好像之前用JQuery的感觉,从很繁琐的javaScript解脱出来,简洁表现为:类型只有一个,所有类型都是类;而我们以前纠结的基本类型与类就不存在了;函数调用如果没有参数不用写参数;强大的循环;创建定长数组,直接new Array;可以用相同的代码处理不同的数据结构。
2.名副其实的面向函数
编码风格基本都是函数的形式的,无论是运算(例如a+b等价于a.+(b))还是类型的转换(例如”22.3”.toDouble)都是函数。
3.没有“语句”,只有“表达式”
表达式有值,语句执行动作,Scala全是有值的。例如if表达式、块都有值。
4.考虑很周全的语言,例如,readLine函数,可以带提示字符的。字符串遍历不使用下标。
5.Scala与javas相互操作。
6.不存在状态,对并发编程很大的优势
一般在采用函数式编程,意味着状态不保存在变量中。经过查阅资料,函数式编程使用参数保存状态,最好的例子就是递归。而对于递归太多,对于栈出现的溢出,一般采用尾递归来解决。
看完这本书,总结出学习语言类书籍方法论:
第一,编程语言基于什么思想;就像前面提到的那样,Scala语言基于面向对象与面向函数编程模式。
第二,多多练习(掌握语法),与以前学习的语言进行类比;《快学Scala》整篇都在与JAVA和C++进行了比较。
第三,思考然后反复前面一二点。无论学习什么都得支持与勤奋。
另外,从另一个方面觉得,一门新的语言其实就是一个新的工具,就像C与JAVA,Scala能实现,他们也能实现,可是,新语言新工具的出现与热捧必有它的优势之处,Scala就是简便,用起来简结。从这此刻让我想到了基础的重要性,很多语言都是一脉相承的,第一步我学习了C,C掌握后,接着java前面的基本语法不用学习,直接奔到java/的类与对象;现在学习Scala语言,在掌握JAVA 的基础上去带有区别地去学习Scala语言,同时加上以前学习过ActionScript,语言一点不陌生,反复练习掌握不难。
最后,学习C并不单纯是学习C,以C为一类的面向过程语言思想掌握,学习java把面向对象掌握了。同理,学习Scala的语言,并不是为学习Scala语言本身,目标得把掌握面向函数风格与思想掌握,将来可以把Scala作为基础学习其它语言。
分享到:
相关推荐
Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。 Scala 运行在Java虚拟机上,并兼容现有的Java程序。 Scala 源代码被编译成Java字节码,所以它可以运行于...
在这个名为"学习scala好的项目"的压缩包中,我们可以期待找到一系列有助于初学者掌握Scala编程的知识资源。 首先,让我们深入探讨Scala的基础知识。Scala的语法简洁而富有表现力,它的类型系统支持静态类型检查,有...
零基础学习scala 全面的scala教程整理 零基础学习scala 全面的scala教程整理
其次,网络上有大量的免费Scala学习资源可供参考。比如,通过google搜索“programminginscala2ndedition.pdf”,我们可以找到《Programming in Scala》这本书的第二版电子版资源。这本书由Scala语言的主要设计师和...
本课件是针对Scala学习者精心准备的资源,旨在帮助你深入理解和掌握Scala的核心概念,并进一步熟悉在Spark框架中的应用。 首先,我们从"Scala进阶之路-part01-基础.pdf"开始,这部分内容主要涵盖了Scala的基础知识...
对于想要学习Scala的开发者来说,基础的计算机编程知识是必要的,特别是有Java编程背景的开发者会更容易上手。一个简单的Scala“Hello, World!”程序如下: ```scala object HelloWorld { def main(args: Array...
这个"scala学习源代码"的压缩包文件很可能包含了用于教学或自我学习Scala编程的基础示例。让我们深入了解一下Scala语言的关键概念和特性。 首先,Scala运行在Java虚拟机(JVM)上,这意味着它可以无缝地与Java库...
同时,由于Scala构建在Java平台上,了解Java对于Scala学习者来说是非常有帮助的,因为可以将Java的生态和已有的知识无缝迁移到Scala上。 深入学习Scala,除了阅读书籍和文档之外,还需要大量的实践。参与开源项目、...
这个压缩包“scala学习资料(带书签)”提供了一个全面的学习路径,从基础到高级,帮助你深入理解和掌握Scala语言。 **入门篇** 1. **基础语法**:Scala的基础包括变量声明、类型系统、控制结构(如if/else、循环)...
Scala是一种强大的多范式编程语言,它融合了面向对象...总之,Scala以其强大的功能和灵活性在大数据和并发领域占据了一席之地,学习Scala不仅可以提升你在Spark开发中的效率,还能让你更好地理解和应用函数式编程思想。
这个"scala学习帮助文件"包含了Scala编程的第一发行版,第六版本的详细内容,是学习Scala语言的宝贵资源。 在 Scala 编程中,基础概念包括变量、常量、数据类型(如基本类型Int、Double、String,以及类类型和集合...
Scala3,也被称为Scala 3或Dotty,是Scala编程语言的一个重大更新,旨在提高其简洁性、可读性和类型安全性。...学习和掌握Scala3的这些变化对于任何想要深入理解这个现代多范式编程语言的人来说都是至关重要的。
Scala和Spark是大数据分析领域中的两个重要工具,它们在处理大规模数据时表现出强大的性能和灵活性。Scala是一种静态类型的函数式编程语言,而Spark是一个分布式计算框架,尤其适合于大数据处理和分析。本教程将深入...
### Scala学习笔记(全) #### 一、Scala概述与特点 Scala是一种多范式的编程语言,旨在集成面向对象编程和函数式编程的各种特性。它运行于Java平台(Java虚拟机JVM),并且能够完全兼容所有的Java程序。这使得Scala...
通过学习和使用Scala SDK,开发者可以利用其丰富的语言特性来构建复杂的软件系统,尤其是在大数据处理、Web应用、云计算等领域,Scala已经展现出了强大的生命力。例如Apache Spark,一个流行的分布式计算框架,就是...
Scala学习笔记,大全笔记
在"scala学习笔记整理"中,我们可以深入探讨以下关键知识点: 1. **基础语法**:Scala的基础语法与Java有相似之处,但也有很多独特的特点。例如,它支持变量的不可变性(immutability),使用`val`声明常量,`var`...
### Scala学习之路(一)—— 开发环境搭建与首个程序 #### 一、Scala简介 Scala是一种多范式编程语言,旨在实现可扩展性,并融合了面向对象编程和函数式编程的最佳特性。作为一种与Java非常相似的语言,Scala能够...
- Scala与其他技术的结合:如Spark、Akka等,学习如何在实际项目中应用Scala。 总的来说,Scala是一种强大的工具,它的设计哲学是提供一种既能充分利用面向对象编程的优势,又能发挥函数式编程优点的语言。通过学习...