当前位置: 首页 > news >正文

各种开发语言主要语法对比

  各类主流编程语言的语法有着显著差异,这些差异源于语言设计哲学(简洁性 vs 显式性)、应用领域(系统级、Web、数据科学)、运行方式(编译 vs 解释)以及支持的范式(面向对象、函数式、过程式)的不同。
以下是一些主要语言核心语法层面的对比(Python, JavaScript, Java, C++, C#, Go, TypeScript, PHP, Ruby, Swift, Kotlin)。

一、​变量声明与类型

​显式类型声明 (Static Typing):​​
​C++:​​ int age = 30; std::string name = “Alice”;
Java:​​ int age = 30; String name = “Alice”; (注意 String 是对象类型)
​C#:​​ int age = 30; string name = “Alice”; (string 是关键字别名)
​Go:​​ var age int = 30 或 age := 30(类型推断)name := “Alice” (字符串)
​TypeScript:​​ let age: number = 30; let name: string = “Alice”; (也可以 let age = 30; 推断)
​Swift:​​ var age: Int = 30 或 var age = 30 var name = “Alice” (强类型推断)
​Kotlin:​​ var age: Int = 30 或 var age = 30 var name = “Alice”

隐式类型声明 (Dynamic Typing / Strong with Inference):​​
​Python:​​ age = 30 name = “Alice” (强类型,运行时确定)
​  JavaScript:​​ let age = 30; let name = ‘Alice’; (弱类型,可以 age = “thirty”😉
​PHP:​​ $age = 30; $name = “Alice”; (弱类型)
​Ruby:​​ age = 30 name = ‘Alice’ (强类型,鸭子类型)

​二、常量声明

  ​Python:​​ PI = 3.14159 (约定全大写,但语法上可变,主要靠约定)
​JavaScript:​​ const PI = 3.14159;
​Java:​​ final double PI = 3.14159;
​C++:​​ const double PI = 3.14159; (或 constexpr)
​C#:​​ const double Pi = 3.14159; 或 readonly double Pi = 3.14159; (类级常量)
​Go:​​ const pi = 3.14159 (类型可省略)
​TypeScript:​​ const PI = 3.14159;
​PHP:​​ define(“PI”, 3.14159); (传统) 或 const PI = 3.14159; (5.3+)
​Ruby:​​ PI = 3.14159 (约定全大写,可变但会警告)
​Swift:​​ let pi = 3.14159
​Kotlin:​​ val pi = 3.14159

三、​基本控制结构

1、​条件语句 (if)

所有语言都有类似结构。​​
Python:​​ 严格要求缩进,无括号 (除非用于明确优先级),elif

if x > 10:print("Large")
elif x > 5:print("Medium")
else:print("Small")

JavaScript/Java/C++/C#/Go/PHP:​​ 语法非常相似:括号和花括号

if (x > 10) {System.out.println("Large");
} else if (x > 5) {System.out.println("Medium");
} else {System.out.println("Small");
}

Ruby:​​ 关键字 end,有 elsif

if x > 10puts "Large"
elsif x > 5puts "Medium"
elseputs "Small"
end

Swift/Kotlin:​​ 类似但用 else if,类型安全和可选的括号,关键字后无括号

if x > 10 {print("Large")
} else if x > 5 {print("Medium")
} else {print("Small")
}

2、循环 (for, while):​​

while 循环在各语言中非常相似。​
for 循环差异大:​
​C-style (计数器):​​ for (int i = 0; i < 10; i++) { … } (C++, Java, C#, JavaScript, PHP)
​  范围迭代/遍历 (Foreach):​​
​    Python:​​ for item in my_list: 或 for i in range(0, 10):
​JavaScript (ES5+):​​ for (let item of myArray) { … } (值) 或 for (let index in myObject) { … } (属性键)
​Java (5+):​​ for (String s : myCollection) { … } (增强for循环)
​C# (foreach):​​ foreach (var item in collection) { … }
​Go:​​ for index, value := range mySlice { … } (range 万能)
​PHP:​​ foreach ($myArray as $key => $value) { … }
​Ruby:​​ my_array.each do |item| … end (块迭代器) 或 for item in my_array … end (少用)
​Swift:​​ for item in myArray { … } 或 for i in 0…<10 { … }
​Kotlin:​​ for (item in collection) { … } 或 for (i in 0 until 10) { … }

四、函数/方法定义

​语法:​​
​  ​Python:​​ def func_name(param1, param2=‘default’): …
​​JavaScript:​​ function funcName(param1, param2) { … } 或 const funcName = (param1, param2) => { … } (箭头函数)
​​Java:​​ public ReturnType methodName(Type param1, Type param2) { … }
​​C++:​​ ReturnType functionName(Type param1, Type param2) { … } (头文件中声明)
​​C#:​​ public ReturnType MethodName(Type param1, Type param2) { … }
​​Go:​​ func functionName(param1 Type1, param2 Type2) ReturnType { … } (支持多返回值 (Type, Type))
​​PHP:​​ function functionName($param1, $param2 = ‘default’) { … }
​​Ruby:​​ def method_name(param1, param2 = ‘default’) … end
​​Swift:​​ func functionName(param1: Type, param2: Type = defaultValue) -> ReturnType { … } (参数标签)
​​Kotlin:​​ fun functionName(param1: Type, param2: Type = defaultValue): ReturnType { … }
返回值:​​
​​Python/JavaScript/PHP/Ruby:​​ 函数可以没有 return 语句,返回 None/undefined/null。
​  ​Java/C++/C#/Go/Swift/Kotlin:​​ 声明了返回类型的函数必须通过 return 显式返回该类型(void 除外)。Go 可以有多个命名返回值。

五、​面向对象编程

​类定义:​​
​​  Python:​​ class MyClass(BaseClass): def init(self, param): …
​  ​JavaScript (ES6):​​ class MyClass { constructor(param) { … } }
​​  Java:​​ public class MyClass extends BaseClass { public MyClass(Type param) { … } }
​  ​C++:​​ class MyClass : public BaseClass { public: MyClass(Type param); … };
​  ​C#:​​ public class MyClass : BaseClass { public MyClass(Type param) { … } }
​​  PHP:​​ class MyClass extends BaseClass { public function __construct($param) { … } }
​  ​Ruby:​​ class MyClass < BaseClass def initialize(param) … end end
​  ​Swift:​​ class MyClass: BaseClass { init(param: Type) { … } }
​  ​Kotlin:​​ class MyClass(param: Type) : BaseClass() { … } (主构造函数)

访问控制:​​
​  ​Python:​​ _(约定私有)、__(名称修饰),无严格关键字。
​  ​JavaScript (ES6):​​ # (私有字段,需用 # 声明和使用)
​  ​Java:​​ public, protected, private, package-private(默认)。
​​  C++:​​ public:, protected:, private:
​  ​C#:​​ public, protected, internal, protected internal, private
​​  PHP:​​ public, protected, private
​​  Ruby:​​ public, protected, private (方法默认为public)
​  ​Swift:​​ public, internal, fileprivate, private (默认internal)
​  ​Kotlin:​​ public, protected, internal, private (默认public)

六、​错误处理

​异常处理:
​  ​Python:​​ try: … except Exception as e: … else: … finally: …
​  ​JavaScript:​​ try { … } catch (error) { … } finally { … }
​  ​Java:​​ try { … } catch (ExceptionType e) { … } finally { … }
​​  C++:​​ try { … } catch (const ExceptionType& e) { … }
​  ​C#:​​ try { … } catch (ExceptionType e) { … } finally { … }
​  ​PHP:​​ try { … } catch (ExceptionType $e) { … } finally { … }
​  ​Ruby:​​ begin … rescue ExceptionType => e … else … ensure … end
​  ​Swift:​​ do { try … } catch ExceptionType { … } catch { … } try? try!
Kotlin:​​ try { … } catch (e: ExceptionType) { … } finally { … }
​无异常或显式错误返回:​​
​​  Go:​​ 不依赖异常。错误是值。使用多返回值 (value, err := func(); if err != nil { … }) 和 panic()/recover()(用于严重错误)。

七、​注释​

​单行:​​ // (Java, JavaScript, C++, C#, Go, Swift, Kotlin),# (Python, Ruby, PHP - shell风格)
​多行:​​ /* … */ (大多数类C语言),Python/Ruby用三个引号 ‘’'/“”" 或 =begin … =end (Ruby)。

八、​特殊语法糖/特性

​​  ​Python:​​ 列表推导式 [x*2 for x in range(10) if x%2==0], 上下文管理器 with open(…) as f:, 装饰器 @decorator。
​​  ​JavaScript:​​ 箭头函数 () => {}(无this绑定), 解构赋值 const {a, b} = obj;, 模板字符串 Hello ${name}, 可选链 ?., 空值合并 ??。
​​  ​Java:​​ Lambda 表达式 § -> expr (Java 8+), try-with-resources, 模式匹配 (instanceof - 新特性)。
​​  ​C#:​​ LINQ (Language Integrated Query), Lambda表达式 p => expr, async/await 异步编程, 属性 {get; set;}, 元组解构 (var x, var y) = point;。
​​  ​Go:​​ Goroutines (go 关键字), Channels (chan), defer 语句 (defer f.Close()), 接口隐式实现。
​​  ​Ruby:​​ 强大的块(Block)语法 do |x| … end 或 { |x| … }, 强大的元编程能力。
​​​  Swift:​​ 可选类型 Type? / 强制解包 ! / 可选绑定 if let / guard let, defer, 计算属性 var computed: Int { get {…} set {…} }。
​​  ​Kotlin:​​ 空安全 Type?, 扩展函数, 数据类 data class, 协程 (suspend), 属性委托。

九、总结与选择建议

​​​  ​追求简洁易学、脚本、自动化、数据科学、快速原型:​​ ​Python​
​​​  ​Web前端开发(浏览器交互动态内容):​​ ​JavaScript​
​​​  ​大型企业级应用、安卓开发、高并发服务端:​​ ​Java​ (稳固成熟)
​​​  ​高性能、系统编程、游戏引擎:​​ ​C++​​
​​  ​​Windows/.NET生态开发、Unity游戏开发、企业级应用:​​ ​C#​​(现代、优雅、.NET Core跨平台)
​​  ​​高并发微服务、命令行工具、基础设施(Docker/K8s)、追求简单高效的编译执行:​​ ​Go​ (Goroutines & Channels是其灵魂)
​​​  ​安全、现代的iOS/macOS/watchOS/tvOS开发:​​ ​Swift​
​​​  ​安全、现代、简洁的Android/全栈开发(与Java互操作):​​ ​Kotlin​ (JVM语言中的明日之星)
​​  ​​Ruby on Rails 框架开发、注重开发效率和表达力的脚本语言:​​ ​Ruby​
​​​  ​大型复杂Web前端应用(需要强类型):​​ ​TypeScript​ (JS的超集)
​​​  ​传统Web后端开发(尤其WordPress等):​​ ​PHP​ (市场巨大,版本进化快)

​​  ​了解这些语法差异的核心在于理解不同语言的设计目标和使用场景。没有绝对“最好”的语言,只有最适合特定任务和团队偏好的语言。学习新语言时,关注其独特的设计理念和解决特定问题的优势,能更快上手并有效利用。

http://www.xdnf.cn/news/1119223.html

相关文章:

  • Codeforces Round 1019 (Div. 2) A-D
  • GPU网络运维
  • UV vs Pip:Python 包管理的革命性进化
  • 【安卓笔记】进程和线程的基础知识
  • 实现高效、可靠的基于骨骼的人体姿态建模(第二章 基于三维人体姿态回归的语义图卷积网络)
  • 马蹄集 BD202401补给
  • Elasticsearch 9.x 升级变化
  • Swift 解 LeetCode 326:两种方法判断是否是 3 的幂,含循环与数学技巧
  • APK安装器(安卓端)一键解除VX限制!轻松安装各种手机应用
  • 一键获取android公钥/ios公钥工具
  • Java面试总结(经典题)(Java多线程)(一)
  • 基于Hadoop的竞赛网站日志数据分析与可视化(上)
  • 八、nginx搭建,实现vue跳转nginx跳转gateway
  • 基于hadoop的竞赛网站日志数据分析与可视化(下)
  • pycharm恢复出厂设置,可以解决大多数pycharm存在的问题
  • idea下无法打开sceneBulider解决方法
  • LINUX714 自动挂载/nfs;物理卷
  • Relocations in generic ELF (EM: 40)
  • OPENPPP2 VEthernet 网络协议堆栈(CTCP)VNetStack 深度技术解析
  • #Paper Reading# Apple Intelligence Foundation Language Models
  • 硬件工程师笔试面试高频考点汇总——(2025版)
  • ROS2中的QoS(Quality of Service)详解
  • Lucene原理
  • Linux | 数据库操作基础
  • 从文本中 “提取” 商业洞察“DatawhaleAI夏令营”
  • MCP 服务开发到发布
  • 1.1.5 模块与包——AI教你学Django
  • 大模型微调(一):基于Swift框架进行自我认知微调(使用Lora微调Qwen3-8B模型)
  • 系规备考论文:论IT服务部署实施方法
  • 17.使用DenseNet网络进行Fashion-Mnist分类