计算机编程语言学习要点

简介: 计算机编程语言学习要点

前言


“我告诉你一个秘诀,一下子学会所有编程语言”——《半小时漫画计算机》


正文


第一个是面向对象


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

附上程序世界的一则笑话:

面试官:“你知道什么是对象吗”

程序员:“知道!但是我工作努力,上进心墙,暂时还没有打算找对象!”

面试官:“既然这样,那你知道什么是类吗?”

程序员:“我这人实在,工作努力,不知道什么叫累!”

面试官:“那知道什么是继承吗?”

程序员:“知道!但是我一分钱都没继承下来,我要努力工作,为自己,为公司创造价值!”


第二个是函数式编程


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


第三个是元编程


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


第四个是并发模型


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


第五个是虚拟机和垃圾回收


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


第六个是静态类型、动态类型和类型推导


静态类型的语言在编译器就能确定类型,编译器能帮忙发现错误,做些优化,但是会增加代码量;动态类型是在运行期确定类型,非常灵活,但是在运行期间才能发现错误。所谓“动态一时爽,重构‘火葬场’”。而类型推导在 Java10 就引入了。



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


第八个是指针


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


尾声


编程语言之后是相互借鉴的,你把这些基本的概念学会了,将来出现了新的语言,你也没什么担心的,除非计算机不是冯·诺依曼计算机了。

目录
相关文章
|
算法 程序员 API
C 语言和 C++ 有什么区别?老程序员居然这样理解,不怕你不懂
C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)
154 0
|
算法 程序员 C++
C++语言学习知识点总结
C++语言学习知识点总结
84 0
|
1月前
|
JavaScript 前端开发 编译器
如何系统地学习编程语言
【10月更文挑战第13天】如何系统地学习编程语言
120 64
|
5月前
|
存储 Python
牢记python语言基础知识
【6月更文挑战第20天】 `input` & `print` - `print()`支持任意数量的位置参数,默认用空格分隔,可通过`sep`和`end`定制输出。 - 可重定向`print`到文件,如`print("hello!", file=f)`。 - `flush=True`确保立即输出,避免大字符串滞后。 ## 2. 基本数据类型 - `str`, `bytes`, `int`, `bool`, `float`, `complex`。 - `bytes`是底层I/O的基础,`sys.stdout.buffer`处理字节输出。
53 5
牢记python语言基础知识
|
5月前
|
存储 人工智能 算法
计算机编程:从基础到实践,探索编程的奥秘
计算机编程:从基础到实践,探索编程的奥秘
61 1
如何更好的学习一门计算机语言
如何更好的学习一门计算机语言
51 1
|
C++
C++语言学习面向对象编程应用案例
C++语言学习面向对象编程应用案例
83 1
|
JavaScript 前端开发 Java
编程语言常识
编程语言常识
|
算法 Unix Java
初学者值得一看:什么是编程/C语言,编程学习建议,编程解疑与误区注意
初学者值得一看:什么是编程/C语言,编程学习建议,编程解疑与误区注意
178 0
|
Java 程序员 编译器
Yin 语言:学习设计和实现一门编程语言
大多数语言没能吸取历史教训 大多数语言受到宗教性的推崇,拥有一个过于狂热的社区,因此难以改正自己的错误 有些语言为程序员做得太少,有些语言为程序员做得太多 有些语言提供了太少的抽象,有些语言提供了太多的抽象 有些语言太不顾及可用性,游戏语言过于重视可用性而忽视了可用性之外的东西 有些语言从数学和逻辑那里学得太少,有些语言学得太多 有些语言太不顾及类型,有些语言对类型考虑过多
583 0
Yin 语言:学习设计和实现一门编程语言