编程概念

各个语言看起来差异很大,其实每个编程语言所使用的编程概念是一样的,一门语言用了这几个概念,另一门语言用了另外几个概念,他们还可能共同使用了一些编程概念。

1.面向对象

比如说封装、继承、多态,Prototype,Mixin,Traits,Duck Typing等。这些概念每个语言都一样,只是在语法层面有所区别。

2.函数式编程

得搞明白高阶函数,闭包,惰性求值,递归,不可变状态,无副作用 这些概念。

可以去看看JVM上的 Lisp:Clojure

3.元编程

Java的动态代理,CgLib这些工具初步具备了元编程的能力,可以在运行时创建新的类;而Ruby,Python的开放性让它们的元编程更强一些,可以在运行时修改现有类,但是要想真正地理解元编程,还得去看Lisp的宏。
尤其是,要感受到代码即数据的强大力量!

4.并发模型

Java主要是对线程做支持,还要学习其他并发模型,比如: Python有协程,Go有Go routine, Erlang采用的是 Actor。
在这些并发发模型中,还得考虑 同步与互斥,锁,死锁,软件事物内存等技术。

5.虚拟机和垃圾回收

现在很编程语言都是通过虚似机来执行的,理解了虚拟机的实现,就能非常透彻地理解编程语言。为了解放 程序员,垃圾回收几乎成为编程语言的标配,一定得了解!
而JVM垃吸回收是个集大成者,可以以它为突破囗。

6.静态类型,动态类型,类型推导

静态类型的语言在编译器就能确定类型,编译器能帮忙发现错误,做些优化,但是会加代码量;
动态类型是在运行期确定类型,非常灵活,但是运行期才能发现错误。

所谓:动态一时爽,重构火葬场。

而类型推导在Java10就引入了。

7.抽象语法树(AST)

且乎所有的主流编程语言,都要转换成AST这么一个形式。有些语言还可以对AST做一些操作

8.指针

指针是c语言的精华,虽然现在的Java,Python,Ruby等编程语言已经把指针给干掉了,但理解指针对理解计算机的底层运作大有好处。

还有一些简单的,例如:错误处理(异常),泛型,同步异步,序列化等。

这些概念都需要有语言作为载体才能体现出来。


总结自码农翻身

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://halo.sherlocky.com/archives/bian-cheng-gai-nian

Buy me a cup of coffee ☕.