445IT之家
首頁 運營策劃 推廣優化 網上賺錢 站長新聞 網站制作 站長雜談 網頁制作 服務器 編程 電腦相關 論壇
您現在的位置:首頁 >> 站長雜談 >> 內容

如何掌握所有的編程語言?

時間:2018/9/11 12:26:11 點擊:

  核心提示: 我想在這里討論的不是如何掌握一門編程語言,而是掌握所有的編程語言。 許多初學者會寫信給我,問我應該學習哪種編程語言,以及如何學習編程語言。起初我總覺得這個問題太低級。但是漸漸地,我發現不僅是初學者,即便是許多知名科技公司的高級工程師實際上也對這個問題頗為不解。 今天,我打算花點時間回答這個擱置了很...

我想在這里討論的不是如何掌握一門編程語言,而是掌握所有的編程語言。

許多初學者會寫信給我,問我應該學習哪種編程語言,以及如何學習編程語言。起初我總覺得這個問題太低級。但是漸漸地,我發現不僅是初學者,即便是許多知名科技公司的高級工程師實際上也對這個問題頗為不解。

今天,我打算花點時間回答這個擱置了很久的“低級”問題。我也希望與更多開發者分享我的想法。

如果你有以下幾種困惑,那么本文會對您所有幫助:

你是初學者,不知道選擇哪門語言入門。

你是高級程序員或團隊負責人,但你對新興語言感到困惑,不知道該投資哪門語言。

你的團隊針對使用哪門語言爭論不休,甚至發生了一些不必要的沖突。

你選用了一些時尚的編程語言,但是兩個月后發現它們都很坑。

就我個人而言,如果遇到沒見過的語言,我會直接使用,而不會花很長時間學習。閱讀本文后,也許你會明白為什么我可以做到這一點。通過了解語言的特征,每個程序員都可以像我一樣實現這個目標。至少我希望如此。

▌關注語言的特征,而非語言本身

許多開發人員很在意他們或別人是否可以熟練使用某種語言,他們常常會對不同語言的優點和缺點爭論不休。然而,對于我來說這些問題都不存在。盡管我撰寫了很多批評語言的文章,但我很少在實際工作中爭論語言本身。我發現最根本的原因是相對于語言本身,我更加重視語言的特征。我可以用任何語言甚至很糟糕的語言寫出優秀的代碼。

任何語言都是各種語言特征的集合。例如,編程語言就像一臺計算機。其品牌可能是IBM、戴爾或蘋果。但是,你能說蘋果的電腦就一定比IBM好嗎?不能。首先你必須了解計算機的配置,例如處理器型號、內核數量、CPU的時鐘頻率、一級緩存、二級緩存……,內存和硬盤,顯示分辨率,還有顯卡、網卡等等。有時你還需了解每個硬件的兼容性。

對于編程語言來說,這些計算機的配置則等同于語言特征。以下是語言特征的一些例子:

  • 變量定義
  • 數學運算
  • for循環語句,while循環語句
  • 函數定義,函數調用
  • 遞歸
  • 靜態類型系統
  • 類型推斷
  • Lambda表達式
  • 面向對象
  • 垃圾收集
  • 指針運算
  • Goto語句

語言特征與計算機配置類似。在選擇計算機的時候,沒人會說戴爾的計算機就一定是最好的,他們會說這臺計算機的CPU是Intel i7處理器,比i5好,DDR3的內存比DDR2快很多,SSD硬盤的讀寫速度比普通硬盤快很多,ATI的顯卡性能很差,等等。

編程語言也是如此。每種語言都有一組通用的特征,例如變量、函數、條件語句和循環語句。只要你學習一種編程語言,并掌握基本概念,就可以將這些知識應用到其他語言中。因此,我們可以掌握語言的特征,而不用浪費時間來選擇語言。

當一個聰明的程序員開始接觸一種新的編程語言時,他們通常不會花費很多時間閱讀語言的手冊或書籍,而是選擇直接使用該語言來解決實際問題。例如,我用R語言執行一些復雜計算時遇到了一個問題。首先我會花幾分鐘瀏覽R語言手冊,了解該語言的特征。然后我會從網上找到與該問題相關的R語言的程序,并對其進行修改,直到解決問題。在解決問題的過程中,你可以很快掌握該語言。

▌選擇一門合適的入門語言

作為初學者,你應該選擇一門沒有明顯缺陷的合適的編程語言。首先你應該掌握這門語言的特征,然后將這些語言特征應用到其他編程語言上。哪種語言作為入門最合適呢?我個人認為可以從下列語言著手:

  • Scheme
  • C
  • Java
  • Python
  • JavaScript

相反,我不推薦用下列語言作為入門:

  • Shell
  • PowerShell
  • AWK
  • Perl
  • PHP
  • Basic
  • Go

一般來說,不應該使用腳本語言作為入門語言,尤其是那些源自早期的Unix系統的語言。雖然與Unix shell相比,PowerShell有所改進,但它依然沒有擺脫腳本語言的根本問題——他們的設計者不知道自己在干什么。

初學者利用腳本語言學習編程時無法掌握到關鍵點,這是一個非常嚴重的問題。腳本語言經常會將一些系統工具的知識(例如正則表達式、互聯網等)添加到語法中,這不僅浪費了初學者的很多時間,而且導致他們無法真正掌握編程最關鍵的概念:變量、函數、遞歸、類型等等。

▌掌握關鍵特征,忽略次要特征

初學者應該關注編程語言最關鍵的特征,而不要為次要內容分神。我發現在許多編程課的開頭,經常有學生在學習用“printf”函數輸出“Hello World!”時,老師要求他們記住“printf”函數的諸多復雜的輸出格式,例如%d、%F、 %. 2f等等。

然而,眾所周知,輸入和輸出操作根本不是語言的主要部分。與核心的特征相比,這都是次要的。一些初學者在學習了幾周的Java后,仍然對“printf”功能感到惱火。雖然他們寫了幾百行“printf”函數,但仍然不明白變量和函數是什么,甚至不知道如何使用算數語句和循環語句!

許多初學者認為編程很難學的最大的一個原因是,他們以為記不住%d、%F、 %. 2f就不可能深入學習!

▌自己動手實現語言的特征

在學習了基本的語言特征并使用它們編寫代碼之后,下一步就是實現這些特征。只有你動手實現不同的語言特征,才能算是完全掌握了它們。

一位編程大師曾經說過,理解一門編程語言的最佳方式是自己動手實現它,這意味著你需要編寫一個解釋器來實現它的語義。但是我認為可以對這句話做略微的改動:完全掌握語言的一個特征的最佳方式是自己動手實現它。你不需要實現整個語言,因為歸根結底我們要使用是語言的特征。只要你自己動手實現了語言的一個特征,那么你就可以掌握所有語言中這個特征的實現與使用。

例如,在學習SICP時,很多人可能會選擇使用Scheme來實現一個面向對象系統。面向對象系統的Scheme的語法與其他語言(如Java、C ++、Python等)有很大的不同。但是,它可以幫助你理解所有面向對象(OOP)語言中面向對象的概念。它甚至可以幫助你理解各種面向對象實現方法之間的差異。

直接學習面向對象編程語言無法掌握這一點,因為在你學習Java、C ++、Python等語言時,你只是一個用戶,在使用Scheme親自動手實現面向對象系統之后,你就成為了創造者。

▌總結

無論是初學者還是高級程序員,你都應該更加關注語言的特征,而不是使用哪種語言。只有這樣,你才能快速掌握新語言并編寫高質量的代碼。

作者:不詳 來源:網絡
發表評論
  • 大名:
  • 內容:
評論列表
  • 好站推薦
  • 笑死人不償命的笑話
  • 文章閱讀網
  • 關于愛情的句子
  • 好句子大全
  • 最新個性簽名
  • 英語作文帶翻譯
  • 傷心網
  • 汽車之家報價
  • 汽車之家論壇
  • 汽車改裝網
  • 汽車改裝網
  • 汽車銷量排行榜
  • SUV銷量排行榜
  • SUV銷量排行榜
  • 汽車排行榜
  • 網站介紹 | 投稿指南 | 廣告合作 | 聯系我們 | 又問必答
  • 445IT之家(www.lbegpf.tw) © 2018 版權所有 All Rights Reserved.
  • 冀ICP備:05024815號
  • Powered by 445IT之家
  • 内蒙古十一选五走势图下载