各種開發語言主要語法對比

??各類主流編程語言的語法有著顯著差異,這些差異源于語言設計哲學(簡潔性 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.pswp.cn/web/88857.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/88857.shtml
英文地址,請注明出處:http://en.pswp.cn/web/88857.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

小鵬汽車6月交付車輛34,611輛,同比增長224%

小鵬汽車-W(09868)發布公告&#xff0c;2025年6月&#xff0c;小鵬汽車共交付智能電動汽車34,611輛&#xff0c;同比增長224%&#xff0c;這標志著小鵬汽車已連續第八個月交付量超過了30,000輛。2025年第二季度&#xff0c;小鵬汽車共交付103,181 輛智能電動車&#xff0c;創下…

深入理解觀察者模式:構建松耦合的交互系統

在軟件開發中&#xff0c;我們經常遇到這樣的場景&#xff1a;一個對象的狀態變化需要通知其他多個對象&#xff0c;并且這些對象需要根據變化做出相應的反應。比如&#xff0c;用戶界面中的數據變化需要實時反映到多個圖表上&#xff0c;或者電商系統中的庫存變化需要通知訂單…

React強大且靈活hooks庫——ahooks入門實踐之常用場景hook

什么是 ahooks&#xff1f; ahooks 是一個 React Hooks 庫&#xff0c;提供了大量實用的自定義 hooks&#xff0c;幫助開發者更高效地構建 React 應用。其中場景類 hooks 是 ahooks 的一個重要分類&#xff0c;專門針對特定業務場景提供解決方案。 安裝 ahooks npm install …

Qt常用控件之QWidget(一)

Qt常用控件之QWidget&#xff08;一&#xff09;1.QWidget2.enabled屬性2.geometry&#x1f31f;&#x1f31f;hello&#xff0c;各位讀者大大們你們好呀&#x1f31f;&#x1f31f; &#x1f680;&#x1f680;系列專欄&#xff1a;【Qt的學習】 &#x1f4dd;&#x1f4dd;本…

AIOT開發選型:行空板 K10 與 M10 適用場景與選型深度解析

前言 隨著人工智能和物聯網技術的飛速發展&#xff0c;越來越多的開發者、學生和愛好者投身于創意項目的構建。 在眾多的開發板中&#xff0c;行空板 K10 和 M10 以其獨特的優勢脫穎而出。 本文旨在為讀者提供一份詳盡的行空板 K10 和 M10 對比分析&#xff0c;從適用場景、…

redis匯總筆記

語雀完整版&#xff1a; https://www.yuque.com/g/mingrun/embiys/calwqx/collaborator/join?tokensLcLnqz5Rv8hOKEB&sourcedoc_collaborator# 《Redis筆記》 Redis 一般問題 Redis內存模型&#xff08;I/O多路模型&#xff09;多路復用IO如何解釋 為什么Redis要使用單線…

STM32用PWM驅動步進電機

硬件介紹&#xff1a;連線&#xff1a;注意這里stp連的是pwm脈沖&#xff0c;dir連的是方向到時候代碼pwm波形就是從這里來的&#xff0c;具體接線根據你的代碼來注意要點&#xff1a;步進電機和舵機驅動是不一樣的&#xff0c;它是根據步長來移動的&#xff0c;所以要開一個中…

力扣25.7.10每日一題——重新安排會議得到最多空余時間 II

Description 今天這道題和昨天類似&#xff0c;只是允許順序變化。 Solution 把會議區間視作桌子&#xff0c;空余時間視作空位&#xff0c;我們要把一個桌子移到別的空位中。 初步想法是枚舉桌子&#xff0c;找一個長度大于等于桌子長度的空位移過去。看上去&#xff0c;找…

IP報文分片與重組原理及實現分析

IP報文分片與重組原理及實現分析 引用&#xff1a; ppp/net/packet/IPFragment.hppp/net/packet/IPFragment.cpp 1. IP分片原理 當IP數據包大小超過MTU&#xff08;最大傳輸單元&#xff09;時&#xff0c;路由器/主機將其分割為多個片段傳輸&#xff0c;每個片段包含&…

[python]在drf中使用drf_spectacular

安裝drf_spectacular 文檔 pypi鏈接:https://pypi.org/project/drf-spectacular/ 文檔鏈接:https://drf-spectacular.readthedocs.io/en/latest/readme.html 安裝步驟 在環境中添加 pip install drf-spectacular在setting的INSTALLED_APPS中添加 INSTALLED_APPS [# ALL…

【Datawhale AI 夏令營】 用AI做帶貨視頻評論分析(二)

5.預訓練模型跑分 回顧賽題 回顧賽題任務 挑戰與難點&#xff1a; 標注數據少 ——> 半監督學習 or 數據增強 聚類分析噪點影響嚴重 回顧Baseline 問題&#xff1a; TF-IDF無法捕捉以下語義。聚類分析粗糙&#xff0c;未評估聚類質量。 提升方案&#xff1a; 分類任務…

SPSSPRO:數據分析市場SaaS挑戰者的戰略分析

目錄 第一部分&#xff1a;執行摘要 第二部分&#xff1a;平臺解構&#xff1a;產品、架構與用戶體驗 2.1 SaaS范式轉移&#xff1a;架構與起源 2.2 功能能力&#xff1a;分析師的工具箱 2.3 “智能分析”的價值主張 第三部分&#xff1a;市場滲透與受眾細分 3.1 目標用戶…

低版本hive(1.2.1)UDF實現清除歷史分區數據

目標&#xff1a;通過UDF實現對表歷史數據清除 入參&#xff1a;表名、保留天數N 一、pom文件 <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.…

C++中頂層const與底層const

在C中&#xff0c;const關鍵字用于定義常量&#xff0c;但它在指針和引用上下文中會產生兩種不同的常量性&#xff1a;頂層const&#xff08;top-level const&#xff09;和底層const&#xff08;low-level const&#xff09;。理解它們的區別是避免編譯錯誤和提高代碼質量的關…

“SRP模型+”多技術融合在生態環境脆弱性評價模型構建、時空格局演變分析與RSEI指數生態質量評價

集成云端、桌面端等環境&#xff0c;結合遙感云計算、GIS空間分析&#xff0c;R語言統計分析的優勢&#xff0c;以分析生態環境脆弱性的時空演變為主線。通過本課程的學習&#xff0c;您將掌握&#xff1a;第一&#xff0c;收集各類指標數據&#xff0c;構建的“生態壓力度-生態…

算法學習筆記:17.蒙特卡洛算法 ——從原理到實戰,涵蓋 LeetCode 與考研 408 例題

在計算機科學和數學領域&#xff0c;蒙特卡洛算法&#xff08;Monte Carlo Algorithm&#xff09;以其獨特的隨機抽樣思想&#xff0c;成為解決復雜問題的有力工具。從圓周率的計算到金融風險評估&#xff0c;從物理模擬到人工智能&#xff0c;蒙特卡洛算法都發揮著不可替代的作…

Tortoise 設置

如何關閉 Windows 下 TortoiseGit 任務欄里窗口標題的分支顯示 一、引言 TortoiseGit 是一個專為團隊協作設計的 Git 圖形化客戶端&#xff0c;旨在解決版本控制中常見的問題&#xff0c;如沖突、回滾、歷史查看等。本文檔是 TortoiseGit 的使用手冊前言部分&#xff0c;旨在向…

[論文閱讀] 人工智能 + 軟件工程 | AI助力軟件可解釋性:從用戶評論到自動生成需求與解釋

AI助力軟件可解釋性&#xff1a;從用戶評論到自動生成需求與解釋 Automatic Generation of Explainability Requirements and Software Explanations From User ReviewsarXiv:2507.07344 Automatic Generation of Explainability Requirements and Software Explanations From …

C語言---自定義類型(上)(結構體類型)

結構體結構體的定義與聲明結構體其實和數組一樣&#xff0c;都是一些值的集合&#xff0c;只不過數組是一系類相同類型的值&#xff0c;而結構體里邊的成員可以是不同的數據類型。關于它的聲明&#xff0c;所用到的關鍵字是struct。聲明的語法如下&#xff1a;struct 結構體名{…

Java觀察者模式實現方式與測試方法

一、實現方式 自定義實現 通過手動定義Subject和Observer接口&#xff0c;實現一對多依賴關系&#xff1a; // 觀察者接口 public interface Observer {void update(float temp, float humidity, float pressure); } // 主題接口 public interface Subject {void registerObser…