为什么Java和C++在语法上有相似之处
Why do Java and C++ have syntactical similarities?
我注意到C++和Java在语法方面似乎有许多共同的特点,尽管我认为它们是完全不同的语言。例如,这两种语言都支持强制转换和定义函数,方法是先指定返回类型,然后指定函数的名称。for
循环似乎也非常相似。此外,它们都对各种语句和结构使用大括号。
这有什么原因吗?例如,Java和C++是否有一些共同的前身,或者一个的语法基于另一个?还是我只是读得太多了?
Java只是C风格语言家族(即语法上基于C编程语言的语言(的成员。该系列包括以下语言:
C++, Java, JavaScript, PHP, Perl
例如,在1990-s和2000-s开始时非常受欢迎。
今天的流行
Python,Ruby,Rust,Kotlin,Swift等。
稍微将焦点从C风格的语言上移开。摆脱 C 风格的原因之一是 C 具有上下文相关的语法,而新语言往往具有几乎与上下文无关的语法,这使得其解析更容易且更可预测。
任何设计新语言的人都无法通过对相同的操作使用不同的语法来获得任何好处。因此,例如,如果该语言的潜在用户习惯于将"a++"作为一个变量"a",其值递增但返回a的现有值,或者他们习惯于将大括号分隔代码块,那么新语言没有理由不使用这些相同的东西。如果这种新语言确实改变了这些东西,那么它们可能会使人们感到困惑并阻止人们使用它。
这不仅扩展到Java和C++,还扩展到其他一些语言。例如,JavaScript 和 Perl 使用了许多与 Java 和 C++相同的语法功能。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 助记符和指向成员语法的指针
- 有人能分解一下这个c++模板的语法吗
- C++避免重复声明的语法是什么
- QMetaObject invokeMethod的基于函数指针的语法
- 模板元程序查找相似的连续类型名称
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 为什么包含windows.h会产生语法错误,从而阻止类的实例化?(C2146,C2065)
- 单独定义模板化嵌套类方法的正确语法
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- 错误 C2760:语法错误:映射迭代器上意外的标记"标识符",预期的";"
- 为什么我会收到错误 C2143 语法错误:缺少"*"之前的';'?
- 奇怪的代码抛出编译错误模板< J,int aSize=10> C2143:语法错误:在"<"之前缺少";"
- 为什么这些完全相似的代码不起作用?
- 使用基类指针调用基类的值构造函数的语法是什么?
- 很好的语法来获取对向量/数组数据的大小引用?
- C++语法运算符功能?
- C++使用 rand 定义函数语法
- 这两个代码片段相似,但显示的结果不同
- 为什么Java和C++在语法上有相似之处