编程语言,实际就是组织机器语言,让机器按照人类预期的方式执行。

编程语言的理论基础是图灵机

编码思维

这个最简单,就是图灵机只会“认识”已经通过规则表指定的字符集。例如,我们可以规定图灵机认识 0 和 1,也可以教它认识 0-9,a-z 这样的字符。

在规定的过程中,同时我们已经完成了对数据的编码。计算机能做的,其实就是对信息数据的计算,而编码则是计算的第一步。

封装思维

在主流的高级编程语言中,例如 Java,会用不同的方式封装代码块。例如“类”就是对相似功能代码的逻辑封装,同时类又可以被拓展、继承,这就是对封装的拓展。

函数式编程: JavaScript。虽然其也有“类”,但是它的底层逻辑更像是“函数”。其中类的实现在底层也是函数。JavaScript 的函数可以返回一个值也可以返回一个对象。这里的函数就是一种对代码的封装。

有了函数的封装,我们就可以完成更多高级的操作。例如在闭包把变量通过函数封装在一个作用域内(JS),还可以利用链运算符操作同一个对象(JS),或者用函数套函数做成装饰器(Python)。

数据一致性和内存安全

数据一致性指的是输入输出和代码对计算机来说是一样的,都是数据。“程序”对应的是图灵机的规则表,也是我们每天写的代码。“输入输出”对应就是纸带上的数据。一个字符串,可以是程序也可是输入输出数据,也就是说,我们写的程序在特定情况下可以是输入输出,输入输出也可以变为程序。

为什么写代码的时候要讲究内存安全?因为不安全的内存溢出等问题会让计算机混淆内存里待处理的数据与程序。这种情况下,计算机可能将本应该当作输入输出的数据当作程序来执行,这就成了安全漏洞(一般是注入),黑客可以用这样的方法来上传自己的代码让目标计算机执行。

内存安全就是保证该被当作程序的数据一定是程序,该被当作输入的就一定是输入,两者不被混淆。

命名规范

10分钟了解代码命名规范(Java、Python) - 短短的路走走停停 - 博客园

几种命名规范:

  • CamalCase 驼峰
    • lowerCamelCase 小驼峰:一般用于Java 和 JS 的方法名
    • CamelCase 大驼峰:看起来就很正式,一般用于类名,Python 也是
  • snake_case 蛇形:一般用于 Python 的变量和方法名
  • kebab-case 串式:像烤串一样,一般用于路径的表示