X programming languages in Y weeks
Erlang
这是一门要写句号的语言
Difference
- Concurrency Oriented
- Functional Programming
- Robustness
- Real time
- Fail-fast (Let it crash)
特征
- 无线程模型解决 C10K 问题
- 不要靠共享内存来通讯,而是靠通讯来共享内存
- 无处不在的模式匹配
原子
变量必须以大写开头,是 Juju 而不是 juju
控制体
没有 for 循环
一切靠递归
函数
在满足条件下自带尾递归优化,函数结尾要写句号
二进制速位匹配
<<4:4, 5:4, ToS:8, ToL:16, Id:16, Flags:3, FlagOffset:13, TTL:8, 6:8, Checksum:16, SrcIP:32, DstIP:32, Payload/binary>> = X.
% 一行怒解 tcp packet
OTP
全称:开放性电信平台,真正的企业级别的通讯相关的库,超过 20 年历史,具备各类功能,例如热插拔,容错机制,数据库,etc
Scala
呵呵,这是我第 N + 1 次学它了
Scala:想解决Java表达能力不足的问题
Groovy:想解决Java语法过于冗长的问题
Clojure:想解决Java没有函数式编程的问题
Kotlin:想解决Java
Scala具有可用于非研究型语言之上最高级的类型系统之一,当然也是运行在在JVM之上最高级的类型系统。它在没有破坏面向对象的前提下,还结合了许多函数式语言的概念和特征,但是它对函数式语言特征的折衷,使其损失了一些函数式语言的狂热者。
Features
- 运行在 JVM 上,与 Java 类库有良好的操作性
- 混合式编程语言 FP + OOP
- 可能是 C++ 之后这个宇宙最复杂的语言
- Actor Model
- higher kinded types (HKT)
- 能用于生产,解决实际问题 (Spark、Akka、Kafka)
- 基于类型和函数式而得到的超强的表达力
- TypeSafe
Dotty
Lua
它的诞生是为了更好的挖石油
Features
- 短小精干,却依然有很强的表达力
- 超小的解释器,因此非常易于集成 (比如当年的魔兽世界
- 多风格编程 - 过程式、OOP、Event drived
- 曾经是世界上最快的脚本语言 (before V8)
- 基于 Table 的元编程能力
- Coroutine (semi continuation)
Lua is an elegant, easy-to-learn language with a mostly procedural syntax, featuring automatic memory management, full lexical scoping, closures, iterators, coroutines, proper tail calls, and extremely practical data-handling using associative arrays.
目前来看,Lisp 可以被认为是高级动态语言功能的「全集」,其它语言都或多或少有所裁减。Lua 只裁减了两个功能:宏和 Full-continuation。另一方面,Lua 提供了非常强也非常快的 load,也不能说没有 code-as-data。Lua 没有 full-continuation,不过实现了 coroutine 可以认为是 one-shot semi-continuation。注意不是所有的号称 coroutine 的机制都能叫做 one-shot semi-continuation。Lua 实现的是 full asymmetric coroutine
X programming languages in Y weeks
By 知白 Saviio
X programming languages in Y weeks
- 665