计算机编程语言学习要点

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

前言


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


正文


第一个是面向对象


比如说封装、继承、多态、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程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)
171 0
|
算法 程序员 C++
C++语言学习知识点总结
C++语言学习知识点总结
86 0
|
2月前
|
JavaScript 前端开发 编译器
如何系统地学习编程语言
【10月更文挑战第13天】如何系统地学习编程语言
150 64
|
7月前
|
C语言 开发者
【C 言专栏】C 语言中的模块化编程思想
【5月更文挑战第3天】本文探讨了C语言中的模块化编程思想,阐述了其概念和实现方式,如函数和头文件。模块化编程能提升代码可读性,便于维护和复用,增强程序可靠性。实践中应合理划分模块,明确接口,保持独立性和内聚性。以计算器程序为例说明模块化应用,并展望了未来发展趋势。模块化编程是构建高质量C程序的关键,有助于提高开发效率。
187 3
【C 言专栏】C 语言中的模块化编程思想
|
7月前
|
自然语言处理 Java 编译器
【软件设计师—基础精讲笔记10】第十章 程序设计语言基础
【软件设计师—基础精讲笔记10】第十章 程序设计语言基础
116 1
|
小程序 开发者
计算机语言如何学习
计算机语言如何学习
95 2
如何更好的学习一门计算机语言
如何更好的学习一门计算机语言
56 1
|
JavaScript 前端开发 Java
编程语言常识
编程语言常识
C Primer Plus 第五章 编程练习
C Primer Plus 第五章 编程练习
97 0