如何熟練掌握多種程式語言

2021-03-02 DotNet開發跳槽

出處:https://developer.51cto.com/art/202101/641238.htm

作者:聞數起舞來源:今日頭條

學習一種新的程式語言很像學習說一種新的自然語言。

但是,正如我確定我的許多雙語和通俗的朋友會同意的那樣,有時在兩種或多種語言之間切換可能會造成混淆。

例如,我的母語是英語,但是我在學校裡被法語浸入法登記。雖然這肯定能使我精通兩種語言,但在我用英語工作時確實產生了一些意想不到的後果。在最長的時間裡,我會在許多單詞上加上E或將美元符號放在一組數字的末尾(32美元而不是32美元),這都是法語的要求,但並不存在用英語。經過時間和實踐,這些混淆最終消失了,我現在可以無縫地(或多或少)在兩種語言之間切換。

我已經注意到這種情況再次發生,儘管這次,我正在嘗試從C#和Java的結構化世界過渡到Python。在上大學時,我所有的課程都圍繞嚴格的程式語言(例如C#)進行。現在,我正在嘗試向數據科學過渡,而我目前正在學習Python。對於喜歡井井有條的事物的人來說,Python是一場噩夢。對我來說,嚴重缺乏分號,花括號和類型變量。好像我正在學習一種新語言(Python),這與我的母語(C#)完全不同。

學習類似的程式語言(例如C#,Java和JavaScript)類似於學習類似的自然語言。例如,通過了解法語,我很容易掌握類似的語言,例如義大利語,葡萄牙語和西班牙語。但是,學習一種與我所知道的語義不同的程式語言(Python)類似於學習冰島語或普通話對我的法語背景沒有多大幫助。

但是,正如我過去發現的那樣,學習一種新的程式語言與學習一種新的自然語言相同。此外,能流利使用多種程式語言涉及一些與我能流利使用多種自然語言時相同的基礎知識和技巧。

首先學習靜態類型和語法特定的語言

幾乎每篇標題為"我應該首先學習哪種程式語言?"的文章表明Python是某人學習的理想的第一語言。儘管我同意Python具有簡單的語法和靈活性,因此它是一種很好的第一語言,但我相信以後將不再需要學習一些編程基礎知識。

因此,我將提供一些違反直覺的建議:首先學習靜態類型的和語法特定的語言。

與其學習會束手無策的語言,並為您提供進入編程世界的舒適途徑,不如學習一種會因分號而忘記分號或因為數據類型不正確而拒絕工作的語言。錯誤。

靜態類型的語言

靜態類型的語言(例如C#和Java)要求將數據類型分配給它們的變量。數據類型包括字符串,整數和布爾值,僅舉幾例。變量綁定到它們在初始化時分配的數據類型,並且不能更改,否則,在運行之前,代碼中將引發錯誤。

另一方面,動態類型化的語言(例如Python)不需要在變量初始化時分配數據類型。將在運行時(在程序已編譯並運行之後)檢查變量類型,以查看類型是否正確。

通過學習如何使用靜態類型的變量,您將對將來可以建立的數據類型有基本的了解。例如,JavaScript是一種快樂的小程式語言,將整數和字符串加在一起沒有問題。但是,不了解數據類型會在以後出現錯誤時引起問題。通過嚴格地學習並獲得對數據類型的深刻理解,當您學習動態變量語言時,可以輕鬆地避免很多麻煩,因為該語言具有可以隨時更改數據類型的變量。此外,首先學習靜態類型的語言將為您的編碼過程邏輯添加一層。

特定於語法的語言

學習新的自然語言時,首先要學習字母,然後再學習該語言的單詞,句子結構,標點符號和語法。

學習程式語言是相似的,因為每種語言都有必須使用的特定語法,代碼才能正常工作。換句話說,每種程式語言都有一種方式,使它喜歡構造其句子並形成其段落。

某些語言(例如Java和C#)的語法非常具體,如果您忘記了一個分號(分號通常放在代碼行的末尾,類似於句號),則它們將無法工作。放在句子的末尾以表示其結尾)。其他語言(例如Python)相對沒有必須遵循的語法結構。例如,與C#相比,Python相對沒有分號,並且幾乎沒有花括號來組織其代碼。

首先學習語法特定的程式語言將使您對編寫代碼時需要遵循的適當結構有充分的了解。通過了解適當的縮進結構,以分號結尾的代碼行的必要性以及在大括號內編寫函數的要求,您將能夠編寫出以下代碼:易於理解,更有條理,易於維護和調試。此外,這將為您提供一個模板,當您開始嘗試使用語法上不那麼嚴格的新語言時,可使用該模板編寫代碼。

從本質上講,現在就學習該學科,然後再獲得回報。

能夠流利使用您的母語

很難說一門世界上每一種語言的生活,而不是很好地講一種語言,不是嗎?此外,如果您只懂每種語言,那麼您對任何人都不會有用嗎?由於您既不會掌握很大的詞彙量,也不會對任何特定語言有很強的理解力,因此您甚至無法在Google Translate中輸入內容來嘗試與來自世界各地的人進行交流。可能是你們兩個最終都會非常困惑!

我認為,程式語言也是如此。與其嘗試學習幾種不同的語言,而又不熟練地理解其中的任何一種,不如精通您的母語或所選語言。

我並不是建議您必須精通一種程式語言,然後再學習另一種。但是,在嘗試學習一種新語言之前,您應該對一種語言的編程概念有深刻的了解。

為什麼?好吧,當您學習一種語言的代碼基礎時,可以假定另一種語言的基礎基本相同。例如,if / else語句在您遇到的每種程式語言中都執行相同的功能,但是唯一的區別在於您用於傳達它們的語法。例如,C#中的if / else語句要求使用大括號來組織語句,而Python中的if / else語句沒有大括號,而是使用單個冒號和代碼縮進來分隔每個語句。從根本上講,該語句在兩種語言中的工作方式相同。

就像您學會用母語說"你好"和"再見"一樣。一旦理解了這些詞的含義以及如何使用它們,就可以學習如何用多種不同的語言說"你好"和"再見"。這些單詞在不同的語言中將具有相同的含義,唯一的區別是您使用不同的語法編寫它們並按照不同的約定使用它們。

通過了解您的第一種程式語言是偏愛單個類還是多個類,具有特定的變量命名約定,或者是否需要面向對象的結構,您將逐漸掌握第一語言和後續語言。。精通一種語言後,隨著您對程式語言之間的差異有了更深入的了解,您將能夠更快地了解其他語言的細微差別。

不要用重音編碼

說自然語言時,如果有人說的很重,您就可以理解。例如,即使我說法語很重,我也被母語為法語的人所理解。因為我使用的是法語約定,所以即使我使用了迴旋的句子結構或錯誤地讀了一個單詞,他們也理解了我想要傳達的內容。

為了能流利使用一種新的程式語言,您不能像使用已經知道的語言一樣對其進行編碼。如果您這樣做,則可能是該語言不一定會理解您要執行的操作,或者它會以非常低效的方式來執行您要執行的操作。

在我使用Angular作為系統前端時,我在大學的頂峰項目期間陷入了這個陷阱。我當時非常了解JavaScript,並且知道Angular與JavaScript相似,所以我嘗試使用與JavaScript相似的約定在Angular中進行編碼。對我來說不幸的是,嘗試使用重音符號無法產生良好的代碼,這可能是由於不了解Angular的約定。我的代碼全部用Angular編寫,但是用沉重的JavaScript口音講話。

換句話說,請不要重複我的錯誤-按照原意使用新語言,並且不要帶有重音符號。

通過使自己沉迷於新語言並強迫自己理解其所有獨特約定,您將學習如何以預期的方式使用該語言進行編碼,而無需將其用作已經知道的語言。這將使您能夠流利地使用多種語言,而不會用濃重的口音講所有這些語言。

例如,如果英語是您的母語,但是您決定快速學習其他五種新語言,那麼您最終可能會說俄語,義大利語,斯瓦希裡語,意第緒語和阿拉伯語,而且所有這些都帶有強烈的英語口音並使用英語約定。如果您選擇學習俄語的慣例,那麼俄語母語的人就會明白您的意思。其他語言也是如此。如果您嘗試使用典型的英語句子結構說斯瓦希裡語,那麼肯亞的某個人可能不會理解您。

花些時間閱讀程式語言提供的文檔,並對該語言的特定約定有所了解。這不僅會使您更加流利的語言,而且在與理解該語言並希望您能夠遵守其約定的其他人一起進行團隊項目時,也將使您變得更有價值。

您最初可能不得不強迫自己編碼時沒有任何口音,但是當您可以輕鬆地從一種語言切換到另一種語言時,辛勤的工作將獲得回報。

最後的想法

本文概述了成為多語言程式語言時遇到的一些更獨特的想法,使之成為多語言程式語言。這些提示都對我有很大的幫助,但是如果我不提及其中一些更常規的提示,那將不會是一本非常有用的文章:

閱讀語言文檔,閱讀原始碼,使用自己的新語言用"單詞"複製代碼示例,為新語言編寫備忘單等,從而完全沉迷於該語言。

繼續使用各種語言(例如Youtube,Medium和StackOverflow)使用新語言編寫編碼教程。學習新的程式語言時,您需要樂於助人。換句話說,積極學習將成為您的朋友。

使用您正在學習的新語言重新創建您已經完成的項目(甚至是簡單的項目),並盡力使用新語言。

參加要求您使用新語言的黑客馬拉松,Kaggle競賽和編碼挑戰。

與非常了解該語言的人合作。與那些精通我要學習的語言的人一起,我從配對編程中學到了很多東西。在他們編寫特定代碼的過程中聽到他們的思考過程,使他們對語言的工作原理以及為什麼他們以特定方式編碼解決方案有了很多了解。

我能提供的最佳建議是堅持不懈。學習新語言很困難,程式語言也不例外。如果需要一點努力學習,請不要放棄該語言。幸運的是,網際網路上的多種資源可以幫助使學習過程更輕鬆,更直觀。

最重要的是,在學習新語言時,請不要忘記應用可用的建議和工具。從長遠來看,您不僅會更好地理解語言,而且還將成為更好的開發人員或數據科學。

原文連結:

https://towardsdatascience.com/how-to-become-fluent-in-multiple-programming-languages-9f473c146b90

版權申明:本文來源於網友收集或網友提供,如果有侵權,請轉告版主或者留言,本公眾號立即刪除。



相關焦點

  • 如何學會600多種程式語言
    在與CEO的會見期間,我發現了一個對如何做一個程式設計師的認識上的盲區。起初我以為,想擴展自己的軟體職業道路,那就要學很多各種的語言。我現在就要告訴你,事情不是這樣的。 我們一共有多少種程式語言?你只需看一下維基百科上的清單,600多種!說實話,就我個人的情況,我不相信我能學會數百種語言。因為有太多的文檔需要看,它們之間有太多的差異需要注意。
  • 你真的需要了解多種程式語言嗎?
    你真的需要了解多種程式語言嗎? 我的同事剛剛得知我即將離開公司的消息。大多數表示理解。但讓他們困惑的是,我現在的公司是一家Windows商店,用C#和.net編寫代碼。然 而,我要去擔任的是Linux環境下主要語言為Java的開發工作。
  • 如何快速學習計算機程式語言
    如何快速學習計算機程式語言呢?這是很多零基礎同學想要知道的答案。隨著網際網路的飛速發展,程式設計師的工資越來越高,很多人想加入程式設計師的隊列,想要快速掌握編程技術。那麼應該如何快速學習計算機程式語言呢?1、首先應該知道自己為什麼學習計算機程式語言,如果只是盲目的追求高薪,對電腦程式沒有濃厚的興趣,那麼零基礎想要快速學習計算機程式語言是非常困難的。想計算機程式語言,應該擁有濃厚的興趣,再加上堅持不懈的精神,這樣才能更快地學習程式語言。
  • 哪種程式語言更適合初學者!
    編程初學者先學什麼這是一個讓很多計劃學習編程的學生糾結的問題,會有人說到高大數據離不開JAVA啦,搞人工智慧離不開Python啦等等。說的都沒有錯,那到底如何選擇呢?事實上,很難想像一名合格的程式設計師只掌握了一種程式語言,因為大型項目都不是某一種語言獨立擔當的。多數程式設計師都是掌握了多種語言,按需使用的。所以入門時學習那種語言不是那麼重要,因為當熟練掌握了一種語言後,再學習其他語言會容易得多。當然既然大家都有選擇方面的問題,小編也給出了以下的建議。
  • 教育部:編程教育將納入中小學相關課程,培養一批熟練掌握編程技能...
    每經編輯:步靜12月9日,教育部在給全國政協委員的答覆函中稱,教育部高度重視學生信息素養提升,已制定相關專門文件推動和規範編程教育發展,培養培訓能夠實施編程教育相關師資,將包括編程教育在內信息技術內容納入到中小學相關課程,幫助學生掌握信息技術基礎知識與技能、增強信息意識、發展計算思維、提高數位化學習與創新能力、樹立正確的信息社會價值觀和責任感
  • 滿足哪些條件才算是真正掌握了一門程式語言
    隨著當今社會逐漸進入到智能化時代,學習一門程式語言已經成為了很多學生和職場人的常見選擇,由於程式語言的學習具有一定的難度,所以一定要制定一個系統的學習計劃,而且要有一個明確的學習目標。按照歷史經驗來看,學習程式語言一定要有一定的連續性,直到完全掌握一門程式語言,很多人在學習到一半的時候就停止學習了,或者是並不知道應該達到一種什麼樣的學習目標,這是普通人學習程式語言比較常見的問題。通常情況下,真正掌握一門程式語言,應該滿足以下幾個方面的要求:第一:全面了解程式語言的基本語法。
  • 如何學會所有的程式語言?
    不過,比得到答案更重要的是:掌握學習新程式語言的能力。授之以魚不如授之以漁對於一個編程老手來說,學習新的程式語言應該很容易。他們只需要一個周末甚至是幾個小時就可以開始用新學的程式語言寫代碼了。優秀的程式設計師可以為了完成某個任務使用任何一門程式語言。畢竟,程式語言只是工具。
  • 熟練掌握多種語言文字對我的成長很重要——訪全國政協委員,內蒙古...
    如何從政治、法理、文化傳承等方面來理解?阿拉坦倉:我覺得二者應該是辯證統一的關係。只強調推廣國家通用語言而不保護發展民族語言,或者只強調保護發展民族語言而忽略國家通用語言,這都是不對的,並且這兩者是沒有矛盾的。從政治上來看,新時代我國社會主要矛盾已經轉化為人民日益增長的美好生活需要和不平衡不充分的發展之間的矛盾。
  • 初學者是否有必要學習多門程式語言
    首先,程式語言與開發場景有較為密切的關係,如果程式設計師需要面對多種不同的開發場景,那麼掌握多種不同的程式語言是有必要的,但是如果面對的開發環境比較單一,掌握多種語言也沒有太多的實際價值,所以是否需要掌握多種程式語言,主要由崗位開發任務來決定的。
  • 甘肅專升本公共課計算機理工類編程 C語言編程的複習方法
    甘肅專升本公共課計算機理工類編程 C語言編程基本語法,對於甘肅專升本公共課計算機理工類要求的編程題,考試大綱的具體要求如下:程序和程序設計語言的基本概念。掌握算法的基本概念及表示。掌握程序設計的基本步驟和方法。
  • 如何從零學習一門程式語言,並由此拿到高薪?
    有必要談談的是:如何由淺入深的學習一門程式語言?學習所有程式語言有沒有一個相對統一的學習方法?為此,我特意請教了一位資深程式設計師大咖,希望能給正準備入門編程的同學一些參考。這位程式設計師接觸過不少程式語言:Java、Python、Javascript、C、C++、Shell等等。
  • 九大程式語言優缺點第四期:c++
    上一期給大家介紹了C語言,理所應當的本期給大家了解下C語言的超集,c++那麼接下來給大家介紹主流程式語言:C++、JavaScript、C#、Ruby、PHP以及Objective-C,對於這幾種語言,大家都能看到由其打造的頂尖應用,我們一起來了解一下吧。
  • 機器人10大流行程式語言對比,你掌握了哪種?
    也許更恰當的問題應該是先從哪種程式語言開始學起?但是,你仍然會得到不同的看法,但是許多機器人專家會同意從關鍵程式語言開始學。對於機器人專家來說,最重要的事情是開拓你的」編程思維」,而不是精通一種特定的程式語言。從很多方面來說,從哪種程式語言開始學習真的無關緊要。
  • 學習編程和學習程式語言是兩碼事
    但問題是,當我不知道如何下手時,我忘記了應該去探索要做什麼,而不是尋找正確的工具。程式語言的奇怪之處在於它們總是在變化。程式語言幾乎每天都在變化,跟進非常困難。而且大多數優秀的程序僅用到了程式語言的一小部分。優先學習程式語言的問題就像在學習木工之前學習如何使用木工鋸、錘子和各種切割機。木工需要注意:想法、可行性分析、度量、測試、用戶使用習慣,老木匠更關注這些。
  • 程式語言學習心得 (1)-- 掌握編程範式優於牢記語法
    這門課程的想法就是幫助那些已經掌握了一門程式語言的工程師快速學習Go語言。在課程中為了便於有編程基礎的朋友快速掌握Go,採用了諸如類比等的講述方式,非常高興這門課程得到了很多朋友的肯定。也從留言中看到了大家的學習熱情,這些都是對我最大的鼓舞。
  • C語言編程培訓好嗎
    C語言編程培訓好嗎,美裡湖校區位於槐蔭區西沙路490號,校園環境優美,現代化設施先進。C語言編程培訓好嗎, 精通遊戲開發中的常用算法和數據結構,對面向對象編程有深刻理解,熟練使用各種設計模式。多年項目開發經驗,精通C、OC、JAVA等多種程式語言,了解Windows、Linux、Mac OS等作業系統環境。
  • 如何熟練地掌握多國語言
    韓語不是說幾句「撒浪嘿喲」,也不是會叫幾聲「亞麻跌」就代表你掌握日語。語言學習是一個長期的過程,所謂的速成也只是治標不治本的便利快餐。一些乾貨文的介紹過於形上學,因朋友的建議,在此細細的剖析下學習的主幹。樓主海外留學黨,母語中文,已考取的證書有:大學英語四級水平歐標B2; 四年前義大利語CELI B1,現已接近B2; 西班牙語DELE B1。
  • 機器人熱門程式語言及優缺點分析
    機器人程式語言最早於20世紀70年代初期問世,到目前為止已有多種程式語言出現,在眾多機器人程式語言中究竟哪種程式語言最好呢?這個問題困擾了很多新手學者,但遺憾的是,這是一個沒有準確答案的問題,你問不同的人會得到不同的答案,對於機器人學者來說建立「編程思維「才是最關鍵的,而不是用一種特定語言去衡量,在很多方面,學習哪種機器人程式語言並不是最重要的,重要的是通過編程思維來不斷提升自己的技能。
  • 人工智慧時代,程式語言的學習方向該如何選擇?
    學習哪種程式語言來深入探索 AI?一個擁有大量優秀機器學習和深度學習庫的語言當然是首選。哪一種程式語言適合人工智慧?你所熟練掌握的每一種程式語言都可以是人工智慧的開發語言。人工智慧程序可以使用幾乎所有的程式語言實現,最常見的有:Lisp,Prolog,C/C++,近來又有Java,最近還有Python.話不多說,上數據。我搜索了與「機器學習」和「數據科學」一起使用的技能,搜索選項包括程式語言Java、C、C+++和JavaScript。
  • [探討]如何創建比C語言更快的程式語言?
    單從程式語言特性來判斷,雖然Fortran語言也以快而著稱,但開發者們還是將C語言稱之為領導者。開發者創建新一門語言通常以C語言為參照對象,將語言編譯時間與C語言進行對比,會因比C語言慢多少而引以自傲。然而,很少有語言能夠擊敗C。那麼,什麼樣的語言才能比C更快呢?