七周七语言

理解多种编程范型

目录

  • 简介
  • Ruby
  • Io

简介

票数最高的八门候选语言

Ruby、Python、JavaScript、Haskell、Scala、Erlang、Clojure、Prolog。

语言的类型模型是什么?强类型(Java)或弱类型(C语言) ,静态类型(Java)或动态类型 (Ruby) 。

语言的编程范型是什么?是面向对象(object-oriented,OO) 、函数式、过程式,还是它们的综合体?

怎样和语言交互?语言可编译也可解释,可以有虚拟机也可以没有。

语言的判断结构(decision construct)和核心数据结构是什么?或许你会惊讶,在作判断时,居然如此多的语言都用到了与if和while的各种变型都不相同的结构。

哪些核心特性让这门语言与众不同?有些语言支持并发编程的高级特性,有些语言提供独一无二的高级结构

谁不应该买这本书

  • 超越语法
  • 不是安装指南
  • 不是编程参考

Ruby

有糖相伴好下药。

Java像一位地主家的孩子,小时候天真可爱,但长大后开始巧取豪夺,方圆百里之内听不到一丝欢声笑语

Visual Basic像一位浓妆艳抹的美发师,虽对全球变暖问题一无所知,理发却是一把好手,言谈风趣幽默总能把人逗得开怀大笑。

先来认识一下Ruby,我的最爱之一。她偶尔会搞怪,却总是很妩媚;带有那么点神秘,却有着百分百的魅力。

Ruby出身于所谓的脚本语言家族, 是一种解释型、 面向对象、 动态类型的语言。

  • 解释型,意味着Ruby代码由解释器而非编译器执行。
  • 动态类型, 意味着类型在运行时而非编译时绑定。
  • 面向对象,意味着Ruby支持封装(把数据和行为一起打包) 、类继承(用一棵类树来组织对象类型) 、多态(对象可表现为多种形式)等特性。

鸭子类型

对于面向对象设计的清晰性来说,鸭子类型至关重要。在面向对象设计思想中,有这样一个重要原则:对接口编码,不对实现编码

过往经验表明,多继承不仅复杂,且问题多多。Java采用接口解决这一问题,而Ruby采用的是模块。

在Java中,这种依赖关系是显式的,即类会实现一个约束方法名的接口;而在Ruby中,这依赖关系是隐式的,即通过鸭子类型来实现

元编程

元编程,说白了就是“写能写程序的程序”

不足之处

  1. 性能
  2. 并发和面向对象编程
  3. 类型安全

Io

问题不是“我们要干点儿什么”而是“我们有什么不能干”

简介

如同Lua、JavaScript一样,Io是一种原型语言,这意味着每个对象都是另一个对象的复制品。

在原型语言中,每个对象都不是类的复制品,而是一个实实在在的对象。

Prolog

Prolog是一门声明式编程语言