scala编程读书笔记

• 从技术层面上来说,scala是一种把面向对象和函数式编程理念加入静态类型语言中的混合体。面向对象和函数式是两个不同层次的概念,它们并不是对立的,与面向对象对立的是面向过程,与函数式对立的是过程式。之所以要强调结合二者,是因为当前的编程语言在这方面做的不够好。写软件无非是两点:搭架子和添功能,所谓搭架子就是模块化,把软件拆成一个个可复用的独立模块,是软件架构的东西。而所谓添功能,就是添逻辑写代码了。面向对象是一种在工程实践中总结出来的工程设计模式,它的动机很简单:绝大多数程序都需要某种结构。最直接的方法就是把数据和操作放进某种形式的容器中。面向对象思想的伟大之处是把这种容器通用化,能够保存数据和操作,并能将这种容器保存在其它容器中,或做为参数进行传递,这种容器被称为对象。这种模式可以让最简单的对象与完整的计算机有同样的架构原则:用形式化的接口绑定数据和操作。使得构造小程序和构造大程序都可以应用同样的技术。也就是说,面向对象主要是在软件架构和模块化方面给我们带来了很大便利,是个搭架子的好帮手。面向对象有很多实现方式,最常见的就是java这种“类”的方式,另外还有javascript那种用原型的方式,还有函数式语言也能够通过高阶函数的特性实现对象的模拟。而函数式是一种编程范式,是有具体的理论依据的,过程式的理论依据是图灵机,而函数式语言的理论依据是Lambda演算。命令式编程是面向计算机硬件的抽象,有变量(对应着存储单元),赋值语句(获取,存储指令),表达式(内存引用和算术运算)和控制语句(跳转指令),一句话,命令式程序就是一个冯诺依曼机的指令序列。而函数式编程是面向数学(Lambda演算 )的抽象,将计算描述为一种表达式求值,一句话,函数式程序就是一个表达式。函数式语言之前一直不怎么流行,有一个很重要的原因是效率,现代计算机的架构:冯诺依曼体系是以图灵机为原型构建的,所以命令式语言更接近底层,函数式语言要想获得同样的效率,需要强大的编译器环境去做优化,做为语言使用者的普通程序员无法左右底层原生的东西。但编译器优化只是个时间的问题,并不阻碍人们对函数式编程精华的喜爱:写代码太爽了!一切都是表达式,非常统一;没有副作用,非常放心……因此,scala强调面向对象和函数式的结合,是出于对模块层次和代码层次两方面的自信,用面向对象构造模块,用函数式编写代码。另外讲到静态语言和动态语言,在写代码上各有优缺点,静态语言较严谨,比如有静态检查,对于一些语法拼写等简单错误,用不着运行,ide会直接报错。而动态语言写起来比较爽快,语法限制少,比如变量没有类型,都是var 定义,不用记int string什么的前缀。scala最好,即严谨又爽快,编译器强大!
• scala语言的名称来自于“可扩展的语言”。之所以这样命名,是因为它被设计成可以随着使用者的需求而扩展。从编写脚本到构建大型系统,全行,看心情。scala的几种运行方法如下:

阅读更多

从eclipse迁移到idea的配置和操作记要

IntelliJ IDEA号称是最好用的Java IDE,这两年尝试了好几次,都因为敌不过对Eclipse更加熟悉而放弃。最近几个项目都是基于Maven构建的,Eclipse的目录结构屡屡挑战我的代码洁癖,最后终于挑战成功,在一个不加班的周末,决定彻底倒戈IDEA阵营。

阅读更多

京剧音韵与英语音标

初听京剧的人都会发现一个问题:京剧唱念都是中国话,为什么不看字幕会听不全唱不顺呢?原因很简单:北京人听不全说不顺四川话,四川人听不全说不顺北京土话,门头沟和通州两地的人对对方的土话也是听不全说不顺。京剧的中国话并不是你熟练掌握的家乡话和普通话。京剧是一门“外语”。

阅读更多

scala类中成员的访问修饰符

scala中类的成员(不考虑类,只考虑类中的成员:属性和方法)一共有三种访问修饰符:public(默认)、private和protected。
java有四种访问修改符:public、private、protected和package-private(默认)。
其中,public是scala默认的访问修饰符,package-private是java的默认访问修饰符。
scala没有package-private(包内可见)修饰符,但是可以给private和protected加包和对象权限。
java的protected修饰符为包内和子类可见,scala仅为子类可见,更为严格。

阅读更多

hexo博客创建和日常操作记要

github是搭建静态博客的一件多快好省的利器,非常经济实惠,非常程序员。

阅读更多