2020年8月25日 星期二

上程式設計課程選Python,選Java有什麼差別嗎? (上)

程式設計課程兩大熱門PythonJava,你可知道兩者有什麼差異嗎?你又該怎麼選擇呢?

​程式設計課程選Python和選Java,兩者到底有什麼差異你知道嗎?    ​


▲ 由上圖中可看出:同樣是列印出「Hello world」的程式,左側的 Python 只要寫一行,右側的 Java 相對冗長。

PythonJava 都相當受歡迎、可是兩者是有很多不同之處的程式語言。求職面來看,兩者是需求最多的語言榜首,Java 工程師一直各大求職網站常見的職缺;而隨著 Python 的熱度持續上升,求職市場對會此語言的需求越來越高。

推薦閱讀:Python 取代 Java 奪得亞軍!2020 第 3 季 RedMonk 程式語言榜大洗牌?

相信不少想進入程式設計一行的朋友們,一開始是都會苦惱該選擇哪個,希望能避免最後徒然耗費金錢、精力和時間。當然這兩種語言各有各的市場,不管選擇哪種語言,在職場上一定用的到,差別在於哪個語言更方便、更有效率。

推薦閱讀:APCS 程式檢定,高中生該從 C、Java 還是 Python 下手?

本次我們將要比較 PythonJava 各自的特色,幫你分析你的第一堂程式設計課程,該從哪個語言下手。

Python 、 Java 有什麼差別?

讓我們比較一下 PythonJava 的編寫方式,以及如何影響編寫體驗:

1. 物件導向程式設計(Object-oriented programming,OOP)

「物件導向程式設計」可以被視作一種在程式中包含各種獨立、而又互相呼叫的類別(Class)和物件(Object)的思維,OOP 中的每一個物件都應該能夠接受資料、處理資料並將資料傳達給其它物件,因此它們都可以被看作一個小型的機器、或者說是肩負責任的角色。

Python 中,從數值、字串、字典、元組對象、它們所對應的類別、函數、模塊等等,都是「物件」。而 Java 中的函數,基本數據類型等都不算物件。但是光想弄清楚數據如何成為物件的概念,對 程式設計課程 初學者來說就已經是容易混淆的難題了。

所以很多人偏好 Python 的理由,也包含了它「支援多種程式範式(Multi-paradigm programming language)」的特性,就是除了物件導向之外,Python 還支援了命令式、函數式和程序式程式。其本身擁有一個巨大而廣泛的標準庫──這表示著你可以由上而下創建函數式或命令式代碼,對於只想用幾行編碼就寫出一個應用程式的程式設計師來說,使用 Python 將會非常簡潔快速。

(當然,從技術上講,Java 也可以用來編寫函數式或命令式代碼,但 Python 更適合此類代碼。)

2. 可讀性和空白字元(Readability & White Space)

Python 不強制使用任一種編程範式(註:「範式」告知何時使用哪種設計架構,共有三種:結構化程式設計、物件導向程式設計與函數式程式設計),這樣的特性讓 Python 更加適合初學者學習編程,也適合整合不同的程式語言,做語法決策。

Java 相比、大部分情況下 Python 可以用更精簡的程式來完成更多事。如 Python 使用大量空白字元(包含空格、TAB字元、換行符號等)取代其他程式語言的分號等,因此不需要在每個語句的末尾都使用分號。

Java 等其他的程式語言中,一個小小的分號足以讓你功虧一簣!例如:你可能孜孜不倦地寫出長達百萬行的程式,但最後忘記了分號而無法運作!無論是新生菜鳥還是江湖老手,這都有可能發生,這會迫使你寫出井井有序的代碼,以避免往後可能造成的混亂,其他語言在語法結構上也同樣嚴格。

另外還有外觀上的差異:對於變數、函數、類和文件等的命名,Java 是使用以大小寫作區分的「camel-case(駝峰式命名法)」;而 Python 使用的「snake_case(蛇形命名法)」則統一小寫,且字與字中間使用底線「_」區隔,輸入相對方便。

一項研究指出,與駝峰式命名法相比、大腦可以更快地辨識蛇形命名法。

總體而言,Python 的程式碼往往不那麼令人生畏、閱讀起來更近於口語;而 Java 可以使你更加井然有序、條理分明,特別是在還不熟悉程式語言的情況下。

本系列文章未完,請點此看下一篇

相關文章:

前端工程師該懂的後端技能 : MySQL教學-DDL DML DQL DCL

使用 Java、Python、C 等 22 種程式語言寫出「Hello World」!

人工智慧電影/影集:Netflix《我的全像情人》探討人與 AI 是否有真愛

介面、體驗大不同!UI設計/UX設計工作內容完整剖析

UI設計網站超值大禮包!設計師們不可不看(一)

Python課程超強大!讓非本科轉職為大醫院網站工程師!

硬體工程師為何進修Java課程轉戰軟體工程師!?