这是一种横向对比,通过这种对比认识开发语言本质是一种编程语言,背后有更深层次的逻辑:逻辑语言。
而道德经有言:无名天地之始,有名万物之母。无名是混沌状态,有名就可以衍生万象。所以命名很重要。当然这是另外一个话题。
这里会涉及JavaScript、Java、Pyhthon、Go、PHP、C++开发语言。也就是三种强类型语言和三种弱类型语言。强类型语言:Java、Go、C++,弱类型语言:JavaScript、Pyhthon、PHP。
JavaScript声明变量
在JavaScript中,声明变量有以下要求:
-
使用关键字
var
、let
或const
进行声明。var
是旧版的声明变量的方式,let
和const
是ES6引入的新的声明变量的方式。 -
变量名必须是有效的标识符,即由字母、数字、下划线(_)或美元符号($)组成,且不能以数字开头。
-
变量名是区分大小写的,
myVariable
和myvariable
是不同的变量名。 -
变量名不能是JavaScript的保留字,如
var
、let
、const
、if
、for
等。 -
变量声明后可以选择是否初始化变量,即给变量赋初始值。例如:
var x = 10;
。 -
使用
let
或const
声明的变量具有块级作用域,而使用var
声明的变量具有函数级作用域。
以下是一些示例:
javascript
var x; // 声明一个变量x
let y = 5; // 声明一个变量y并初始化为5
const PI = 3.14; // 声明一个常量PI并初始化为3.14
x = 10; // 给变量x赋值为10
y = 7; // 给变量y重新赋值为7
console.log(x); // 输出: 10
console.log(y); // 输出: 7
console.log(PI); // 输出: 3.14
Java
在Java中,声明变量有以下要求:
-
使用关键字
int
、double
、boolean
、char
等进行声明,具体取决于变量的数据类型。 -
变量名必须是有效的标识符,即由字母、数字、下划线(_)或美元符号($)组成,且不能以数字开头。
-
变量名是区分大小写的,
myVariable
和myvariable
是不同的变量名。 -
变量名不能是Java的保留字,如
int
、double
、boolean
、if
、for
等。 -
变量声明后可以选择是否初始化变量,即给变量赋初始值。例如:
int x = 10;
。 -
变量的作用域取决于其声明的位置。在方法内部声明的变量具有方法级作用域,而在类内部但方法外部声明的变量具有类级作用域。
以下是一些示例:
java
int x; // 声明一个整型变量x
double y = 5.0; // 声明一个双精度浮点型变量y并初始化为5.0
boolean flag; // 声明一个布尔型变量flag
x = 10; // 给变量x赋值为10
y = 7.5; // 给变量y重新赋值为7.5
flag = true; // 给变量flag赋值为true
System.out.println(x); // 输出: 10
System.out.println(y); // 输出: 7.5
System.out.println(flag); // 输出: true
Java是一种强类型语言,变量在声明时必须指定其数据类型,并且变量的类型在声明后不能更改。
PHP
在PHP中,声明变量有以下要求:
-
变量名必须以美元符号( <math xmlns="http://www.w3.org/1998/Math/MathML"> )开头,后面跟着变量名,例如 ' )开头,后面跟着变量名,例如 ` </math>)开头,后面跟着变量名,例如'myVariable`。
-
变量名必须是有效的标识符,即由字母、数字、下划线(_)组成,且不能以数字开头。
-
变量名是区分大小写的,
$myVariable
和$myvariable
是不同的变量名。 -
变量声明后可以选择是否初始化变量,即给变量赋初始值。例如:
$x = 10;
。 -
PHP是一种动态类型语言,变量的类型是根据赋值的值自动推断的,无需显式指定。
以下是一些示例:
php
$x; // 声明一个变量x
$y = 5; // 声明一个变量y并初始化为5
$z = "Hello"; // 声明一个变量z并初始化为字符串"Hello"
$x = 10; // 给变量x赋值为10
$y = 7; // 给变量y重新赋值为7
echo $x; // 输出: 10
echo $y; // 输出: 7
echo $z; // 输出: Hello
C++
在C++中,声明变量有以下要求:
-
变量名必须是有效的标识符,即由字母、数字、下划线(_)组成,且不能以数字开头。
-
变量名是区分大小写的,
myVariable
和myvariable
是不同的变量名。 -
变量声明时必须指定其数据类型,例如
int
、double
、bool
、char
等。 -
变量声明后可以选择是否初始化变量,即给变量赋初始值。例如:
int x = 10;
。 -
C++是一种静态类型语言,变量的类型在声明时确定,并且变量的类型在声明后不能更改。
以下是一些示例:
cpp
int x; // 声明一个整型变量x
double y = 5.0; // 声明一个双精度浮点型变量y并初始化为5.0
bool flag; // 声明一个布尔型变量flag
x = 10; // 给变量x赋值为10
y = 7.5; // 给变量y重新赋值为7.5
flag = true; // 给变量flag赋值为true
cout << x; // 输出: 10
cout << y; // 输出: 7.5
cout << flag; // 输出: 1 (true的值为1)
Go
在Go语言中,声明变量有以下要求:
-
使用关键字
var
或:=
进行声明。var
用于声明变量,:=
用于声明并初始化变量。 -
变量名必须是有效的标识符,即由字母、数字、下划线(_)组成,且不能以数字开头。
-
变量名是区分大小写的,
myVariable
和myvariable
是不同的变量名。 -
变量声明时必须指定其数据类型,例如
int
、float64
、bool
、string
等。 -
变量声明后可以选择是否初始化变量,即给变量赋初始值。例如:
var x int = 10;
或y := 5.0;
。 -
Go是一种静态类型语言,变量的类型在声明时确定,并且变量的类型在声明后不能更改。
以下是一些示例:
go
var x int // 声明一个整型变量x
var y float64 = 5.0 // 声明一个双精度浮点型变量y并初始化为5.0
z := true // 声明一个布尔型变量z并初始化为true
x = 10 // 给变量x赋值为10
y = 7.5 // 给变量y重新赋值为7.5
z = false // 给变量z重新赋值为false
fmt.Println(x) // 输出: 10
fmt.Println(y) // 输出: 7.5
fmt.Println(z) // 输出: false
Python
在Python中,声明变量有以下要求:
-
变量名可以是任何有效的标识符,即由字母、数字、下划线(_)组成,且不能以数字开头。
-
变量名是区分大小写的,
myVariable
和myvariable
是不同的变量名。 -
变量声明时无需指定数据类型,Python是一种动态类型语言,变量的类型是根据赋值的值自动推断的。
-
变量声明后可以选择是否初始化变量,即给变量赋初始值。例如:
x = 10
。
以下是一些示例:
python
x = 10 # 声明一个整型变量x并初始化为10
y = 5.0 # 声明一个浮点型变量y并初始化为5.0
z = "Hello" # 声明一个字符串变量z并初始化为"Hello"
x = 20 # 给变量x重新赋值为20
y = 7.5 # 给变量y重新赋值为7.5
print(x) # 输出: 20
print(y) # 输出: 7.5
print(z) # 输出: Hello
总结
以上变量声明要求来自chatgpt。
可以看出除了PHP外,其他语言变量名都必须是有效的标识符,即由字母、数字、下划线(_)组成,且不能以数字开头。PHP除去开头的$外,变量名和其他语言要求一致。看来这种命名规则已经是约定俗成了。
强类型语言要一开始就指定变量的数据类型,而且后面不能修改。而弱类型是可以不指定数据类型。
变量声明后,均可以直接赋值或者暂时不赋值。
可以看出声明上,弱类型大体一致,强类型大体一致,而实际上不管是声明还是其他语法,都有很大相似之处,这说明其背后有一致性。这大概就能体现开发语言是对逻辑的体现吧。