为什么编程语言需要这种方式来声明变量?

Bil*_*ina 1 language-agnostic variables types programming-languages

我正在学习C,而且我知道如何在Mathematica上编程.

在Mathematica上,我可以简单地通过编写来声明变量:

a=9
a="b"
a=9.5
Run Code Online (Sandbox Code Playgroud)

似乎Mathematica通过简单地阅读并在其上找到某种模式,自然地了解这是什么类型的变量.(Int,char,float).我猜Python有相同的功能.

在C语言中,我必须先说出它是什么:

int num;
char ch;
float f;

num=9;
ch='b';
f=9.5;
Run Code Online (Sandbox Code Playgroud)

我知道这延伸到其他languanges.所以我的问题是:为什么编程语言需要这种变量声明?

关于该主题的参考将非常有用.

Jim*_*ter 6

Mathematica,Python和其他"动态类型"语言具有由值和类型组成的变量,而像C这样的"静态类型"语言具有仅由值组成的变量.这不仅意味着存储变量需要更少的内存,而且动态类型语言必须在运行时设置和检查变量类型以了解变量包含的值的类型,而使用静态类型语言的类型,以及操作的内容可以/需要在它上面执行,在编译时是已知的.因此,静态类型语言要快得多.

此外,现代静态类型语言(例如C#和C++ 11)具有类型推断,这通常使得不必提及类型.在像Haskell这样的类型推断的一些非常先进的静态类型语言中,可以在不指定类型的情况下编写大型程序,从而提供静态类型语言的效率以及动态类型语言的简洁性和便利性.