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

 

Made with Slides.com