跳转至

引言

编程语言作为程序员控制一台计算机工作的协议,具备了协议的三要素:

  • 语法:就是这一段内容要符合一定的规则和格式
  • 语义:就是这一段内容要代表某种意义
  • 顺序:就是先干啥,后干啥

编程语言分类

源码是否可以直接运行

  • Y:解释型
  • N:编译型

声明变量时,是否需要指定类型

  • Y:静态类型,编译时检查类型
  • N:动态类型,运行时检查类型,dynamically typed

运行时是否可以改变变量类型

  • Y:弱类型,比如JS
  • N:强类型

编程范式,函数 or 方法

  • 过程式编程,只有函数:C
  • 面向对象编程(OOP),没有函数,或者说函数只能定义在类或对象内部,即方法:Java,C#
  • 多范式:Python,C++,JS

常量

命名规范:如果常量在声明前就已知了,通常可以用全大写来表示,如果需要计算得出,那么可以跟变量名一致

Python 中常量其实也是变量,JS 等语言中可能需要单独的关键字声明

Declaration 变量声明

Java

编译型、静态类型、强类型语言

int x = 1;  // 未赋值时初始值为:0

Python

解释型、动态类型、强类型语言

变量不需要关键字声明

x = 1
x = None  # 初始值可以赋值为:None

x = y = z = 1  # 同时给多个变量赋相同值
x,y,z = 1,2,3  # 同时给多个变量赋不同值,要一一对应,否则会报错,比如:x,y,z=1 或 x,y=1,2,3 都是不对的

x,y = y,x  # 值交换

print(1 + '1')  # TypeError

JavaScript

解释型、动态类型、弱类型语言

变量需要声明,但不需要指定类型

ES6 有三个关键字可以用来声明变量:var, let, const

JS 早期设计失误,并未强求用 var 声明,没有被 var 申明默认为全局变量,会带来一定的麻烦,后来推出严格模式(源码第一行加上 'use strict';),强制 var 申明,在 classmodule 中的代码会默认使用严格模式

不过 ES6 之后推荐使用 let 和 const 来声明

var x = 1;  // var是ES6前的关键字,在函数外声明的就是全局变量,函数内声明的为局部变量,如果重复声明内部变量会覆盖外部变量

let x = 1;  // let是用来改善var的,作用域为{},同作用域内不允许重复声明,声明变量可以只声明不赋值,未赋值默认为 undefined
let x = "hello world"  // JS语句可以用`;`结尾,也可以忽略
const PI = 3.14;  // const用于声明常量,作用域也是{},声明常量必须初始化赋值,且不能重新赋值

// ES6新增,解构赋值:同时给多个变量赋值
let [x, y, z] = ['hello', 'JavaScript', 'ES6'];
let {x, y} = {x: 1, y: 2}

console.log(1 + '1');  // "11"

TypeScript

解释型、静态类型、弱类型语言

let num1: number = 1;
let str: string = 'str';

console.log(1 + '1');  // "11"

基本数据类型

基本数据类型是 CPU 可以直接进行运算的类型

  • 整数:byte, short, int, long
  • 浮点数:float, double
  • 单个字符:char
  • 布尔值:bool

不同语言有各自的数据类型定义,占用空间、取值范围、默认值都有所不同

比如在 Python 中

整数类型只有 int,它可以是任意大小
浮点数只有 float,但其是双精度 64 位的
没有表示单个字符串的 char 类型,可以用长度为 1 的 str 类型表示

运算符

在 C/C++、Java、Solidity 等很多语言中,除法(/)都是取整,而在 Python、JS 等语言中是正常除

Python 中有单独的取余(%)和取整(//)运算符

JS 中也有取余(%)运算符,但取整需要使用 Math.floor() 函数

终止符

参考:编程语言中分号的简明历史

常见的编程语言(C、Java、JS等)基本都使用了 ; 分号,既可以作为分割符(满足一行多句),又可以作为终止符(满足一句多行)

在 Python 中,使用换行符来终止语句,可使用反斜杠满足一句多行(实际就是把换行符转义了),建议使用括号来换行。

代码块

参考:编程语言中花括号的简明历史

从最初的 BEGIN...END,演变为 $...$,然后到 C语言 简化为 {...},很多 类C语言 基本都沿用了花括号

Python 中使用了冒号和缩进来表示代码块,而不是花括号,更加简洁

JS 中有时可以省略花括号,比如 if语句、for语句、while语句

注释

  • # 注释符则基本上是被 Shell 和其它脚本语言所用,比如 Python,但 JS 不是
  • // 注释符基本上被 C 语言家族所用