將 Java 作爲入門編程語言有錯嗎?

  還記得你學習的第一門編程語言是什麼嗎?

  就從 11 級軟件工程出身的筆者而言,《Java 程序設計》是大學課程中必學科目,且學分相比其他課程都要高出不少。

  不過,近幾年隨着人工智能的崛起,各大初高中、甚至是幼兒園都在將 AI 教學列入基本教學範疇。這不前幾日,由×××自動化所、Google 及其他相關高校的 AI 專家專爲幼兒園學生設計的 AI 教材也被曝光。

  


  隨之而來的是,作爲 AI 領域的首選編程語言 Python 也水漲船高,甚至不少高校將其取代了 Java 的基本教學任務。對於這種現狀,本文作者不禁提出疑問,如今倘若仍將 Java 作爲學習編程的入門課程教給學生究竟對還是不對?如果不對,在學習編程時又該學什麼呢?Python 嗎?

  


  Java 依然是最流行的編程語言,但很少有人認爲它是最酷的編程語言。一些人甚至認爲,Java 已進入垂暮之年,因此許多從事教育的人都不願意教 Java。

  於是問題來了:學校和大學是否依然應該教學生 Java 編程?如果不應該,那麼教什麼語言最好?

  


  新貴 Python 或將攔截 Java 的教學推廣後路?

  在我上大學的時代——其實就是十年前,Java 還是計算機科學的入門課程中的必學語言。如果你想學其他語言,比如 C、Python、PHP,你就得專門選那個語言的課程,或者選相關的應用。

  但是現在,Java 不再受大學的青睞。根據國際計算機協會(ACM)的研究發現,截至 2014 年,Python 已經取代 Java 成了主流大學計算機入門課程必學的語言。

  但這個研究並不全面,因爲它只覆蓋了最主要的美國大學,而且它代表的只是幾年前的一個時間點而已。但是,我依然強烈地感覺到,如果現在對計算機科學的入門課程使用的計算機語言做一次全面調查,那麼很可能會發現 Java 並不是最受歡迎的語言。

  我敢肯定許多學院依然在教 Java,但我也懷疑大多數已經把入門課程改成了其他語言(很可能是 Python)。甚至高中的計算機教學也有同樣的現象。

  


  爲什麼 Java 不再適合作爲學習編程的入門語言?

  Java 的衰退是好事還是壞事?當然,答案取決於你問的人是誰。但是一般而言,有幾點很好的理由支持我們應當在計算機學習的過程中儘早改變教授編程語言的方式。

  Java 太冗長。Java 程序員自己都承認,Java 是個極其冗長的語言,比大多數語言都要冗長,完成非常簡單的任務都要寫大量代碼。也許對於能快速寫代碼的專業程序員來說無所謂吧。

  但是,對於學習編程的學生來說,他會願意寫三四行代碼只爲了在控制檯輸出一行字符串嗎?其他語言(比如 Python)只需要一行代碼:

  echo 'my string';鄭州中原科大婦科醫院 http://www.120zzzzyy.com/

  可學習性的因素。你也許認爲,Java 是使用最廣泛的語言,所以每個人都應該學習它。畢竟,許多專業的程序員每天都在使用 Java。許多重要的應用程序也是用 Java 寫的,而且,就算現在所有人都不再寫 Java,未來幾十年中我們依然需要維護舊的 Java 代碼。

  但是,僅憑最流行的企業語言以及依然會廣泛流行幾十年這點,並不能說明我們應當總是讓學生首先學習 Java。如果你是新入學的計算機科學的學生,希望用簡單的辦法探索應用程序設計和開發的精髓,那麼 Java 並不是好的起點。

  Java 是編譯語言。如果你是 DevOps 工程師,在 Jenkins 流水線中構建 Java 應用程序,那這是件好事。但如果你只想學習編程,那嘗試之前需要先編譯就不太理想了。最好還是使用一門腳本語言。

  如果職業需要,你可以稍後再學習構建過程和發佈的流水線。而且你有可能根本不需要。並不是每個選了計算機入門課程的人都會成爲專業的開發者並且編譯代碼。

  有許多 Java 的替代品。你經常聽到的學習 Java 的理由之一就是“它是面向對象的!”沒錯,Java 是面向對象編程(OOP)的標誌性語言。但許多其他語言也可以使用 OOP。

  而且,教 OOP 的原理並不需要特定的語言。OOP 只是一種概念,是一種結構性的策略,而不是語言的特性。除此之外,微服務的趨勢已經讓 OOP 變得不再那麼重要了。就像微服務部署削弱了單一架構一樣,也許以後根本就不再需要 OOP 了。

  Java Development Kit(JDK)沒有統一的標準。Oracle JDK、OpenJDK 和許多其他廠商的 JDK 平臺都不一樣,這可能會造成許多困惑。不同 JDK 之間的口味不同,意味着你在一個平臺上的代碼可能無法在另一個平臺上正確工作,這會讓初次學習編程的學生感到沮喪。

  當然,你可以通過要求所有學生使用同一個 JDK 來避免這個問題。但爲什麼不乾脆避免這個問題本身呢?許多其他語言都只有一個實現標準,而且通常是開源的。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章