第二课细读Scala
SecondWIthProgrammingInScala
结合之前的学习和感想 ,顺序细读一遍Scala的书 ,整理
- 为了方便查看和管理代码 ,书中包含的脚本/Scala解释器部分我都用mian函数去测试 ,方便记录
- 当然Scala的解释器和脚本运行方式也是要去尝试一下的 ,也是很特别的
任务完成
- 利用这段空闲时间阅读完了Programming In Scala中文版的书 ,对Scala有了一个大致的了解 .中文版的书一共33章(第33是综合章节 ,书写一个GUI) ,都通过代码+注释的方式进行了阅读和理解
总结
- 作为一个以Java入门的程序猿 ,Scala给我的印象非常深 .在写Java的时候可能需要写很大一片代码 ,才能描述清楚一个继承关系/接口定义/工厂类 .使用Scala的话 ,从语法上就较少了冗余(比如类型定义).
- Scala提倡的函数式思想 ,val+递归的使用也耗费了我不少脑细胞去思考如何重构(虽然效率上需要谨慎考虑).显然 ,这是一门”随性的”语言 ,不同的人写出来的代码是非常不一样的.
个人看法
关于语言的争论 ,从 语言种类>2 时候就开始了 ,特别是Java是被吐槽的最多的 ,”一次编译 ,全平台运行”这个最初的特点也被不少人嘲笑 .现在一些新的语言在很多方面确实优于Java或是其他语言 ,但是”存在即合理”
Scala ,可以充分发挥程序猿自己的能力 ,你有多了解这门语言/了解JVM/了解JAVA/了解计算机结构 ,你就能重构你的代码 ,甚至制定你自己的编译规则(语法糖) ,对你自己来说可以减少非常多的工作量 .
- 不过 ,个性化的东西越多 ,当另一个人接手的时候需要花更多的时间去熟悉”你的规则”
- 在工程开发中 ,语言只是一个工具 ,选择一个工具 ,依赖的应该是成本(包括人力/技术/附属产品) ,这也是Java语言不怎么样 ,但是Java生态圈确是主流的原因 .
不管怎么样 ,往广度走 “技多不压身” ,有充分的选择 ;往深度走 ,”学而精” ,用命令行都能写出操作系统.
package SecondWithProgrammingInScala
import java.awt.Font
import java.io._
import javax.swing.border._
import scala.collection.mutable.ListBuffer
import scala.swing.{BoxPanel, _}
import scala.swing.event.ButtonClicked
import scala.util.Random
object WhereEatDinner extends SimpleSwingApplication {
override def top: Frame = new MainFrame {
preferredSize_=(new Dimension(500, 600))
//参数
var optionList = DinnerOption.getOptionsFromFile