自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何成為多編程語言人才?這有一份獨(dú)門訣竅

開發(fā) 后端
學(xué)習(xí)一種新的編程語言就像學(xué)一門新的語言。相信許多學(xué)習(xí)兩門或多門語言的朋友都會認(rèn)同,在雙語或多語言間轉(zhuǎn)換難免令人混淆。

 本文轉(zhuǎn)載自公眾號“讀芯術(shù)”(ID:AI_Discovery)

學(xué)習(xí)一種新的編程語言就像學(xué)一門新的語言。相信許多學(xué)習(xí)兩門或多門語言的朋友都會認(rèn)同,在雙語或多語言間轉(zhuǎn)換難免令人混淆。

[[391151]]

例如,我的母語是英語,在學(xué)校里參加了沉浸式法語課程。這一方面使我的英法雙語都達(dá)到了十分流利的水平,一方面也對我英語的使用造成了意想不到的效果。

很長一段時(shí)間中,我都會在許多單詞末尾加上“E”,或是在數(shù)字后面加上美元符號(32$而不是$32),這些要求都只存在于法語當(dāng)中,而非英語。經(jīng)過一段時(shí)間的練習(xí),我終于不再混淆,現(xiàn)在能夠英法雙語無縫切換了。

然而,這種情況又一次發(fā)生了——我試圖從C#和Java 轉(zhuǎn)換到Python。大學(xué)時(shí),我所有的課程都圍繞著C#這樣嚴(yán)謹(jǐn)?shù)木幊陶Z言展開。如今我準(zhǔn)備進(jìn)軍數(shù)據(jù)科學(xué),現(xiàn)在正在學(xué)習(xí)Python。

對于喜歡有條理有組織的事物的人來說,Python簡直是一個(gè)噩夢。對我而言,分號、花括號和類型變量嚴(yán)重不足,就好像我正在學(xué)習(xí)一門新語言,而它與我的母語(C#)截然不同。

學(xué)習(xí)相似的編程語言(比如C#,Java和JavaScript)就像學(xué)習(xí)幾種相似的語言。比如,因?yàn)槲視ㄕZ,所以學(xué)習(xí)意大利語、葡萄牙語、西班牙語這些相似的語言也會比較容易。但我目前所掌握的語言卻無助于學(xué)習(xí)編程語言(Python),因?yàn)樗鼈冊谡Z義上完全不同,就像我會法語也無助于我學(xué)習(xí)冰島語或普通話。

要想熟練掌握多種編程語言,你需要用到一些掌握多種自然語言時(shí)的基本知識和技巧。

首先學(xué)習(xí)靜態(tài)類型和句法特定的語言。

幾乎每篇標(biāo)題為“我應(yīng)該先學(xué)習(xí)哪種編程語言?”的文章都認(rèn)為Python是最適合初學(xué)者的編程語言。我同意Python句法簡單,結(jié)構(gòu)靈活,適合入門,但卻無法學(xué)到一些后期必要的編程基礎(chǔ)知識。因此,我要提的建議似乎聽起來很不合理:首先學(xué)習(xí)靜態(tài)類型和句法特定的語言。

與其學(xué)習(xí)溫和的入門級編程語言,不如學(xué)容錯(cuò)率極低的編程語言,一旦漏掉分號就會立馬出錯(cuò),一旦數(shù)據(jù)類型錯(cuò)誤就會停止運(yùn)行。

  • 靜態(tài)類型的語言

靜態(tài)類型的語言(例如C#和Java)需要將數(shù)據(jù)類型分配給它們的變量。數(shù)據(jù)類型包括字符串、整數(shù)和布爾值等等。變量在初始化時(shí)必須與所分配的數(shù)據(jù)類型綁定,并且不能更改,否則運(yùn)行前代碼將會出錯(cuò)。

動(dòng)態(tài)類型化的語言(例如Python)則無需在變量初始化時(shí)分配數(shù)據(jù)類型,而是在程序編譯并運(yùn)行后,再檢查變量類型是否正確。

通過學(xué)習(xí)靜態(tài)類型變量,學(xué)習(xí)者將對以后需要使用的數(shù)據(jù)類型有一個(gè)基本的了解。例如,JavaScript是一種簡單易懂的編程語言,能輕松結(jié)合整數(shù)和字符串。

但如果不了解數(shù)據(jù)類型,就可能在程序出錯(cuò)時(shí)遇到問題。通過嚴(yán)格的學(xué)習(xí)和對數(shù)據(jù)類型的深入了解,就能在學(xué)習(xí)帶變量的動(dòng)態(tài)類型語言時(shí)省去不少麻煩,從而即時(shí)更改數(shù)據(jù)類型。此外,先學(xué)靜態(tài)類型的語言有助于增強(qiáng)編碼過程的邏輯性。

  • 語法特定的語言

學(xué)習(xí)新的自然語言時(shí),首先要學(xué)習(xí)字母,然后學(xué)習(xí)單詞、句子結(jié)構(gòu)、標(biāo)點(diǎn)符號和語法。學(xué)習(xí)編程語言的過程也是類似的,因?yàn)槊糠N語言都有特定的語法,必須使用它才能讓代碼正常工作。換句話說,每種編程語言都有特別的遣詞造句、形成段落的方式。

有些語言(例如Java和C#)的語法非常具體,哪怕只少了一個(gè)分號(通常位于代碼行末尾,類似于句子末尾的句號,放在句子的末尾以表示句子結(jié)束),都會導(dǎo)致無法運(yùn)行。而有些語言(例如Python)則幾乎沒有硬性的語法規(guī)則。例如,與C#相比,Python中需要用到的分號和花括號都相對較少。

先學(xué)語法特定的編程語言有助于充分了解寫代碼時(shí)需要用到的結(jié)構(gòu),比如縮進(jìn)結(jié)構(gòu)、代碼行必須以分號結(jié)尾、函數(shù)要加花括號等。這能使寫出的代碼更簡單易懂,條理清晰,方便維護(hù)調(diào)試。而且,其還可以提供一個(gè)寫代碼的模板,方便在學(xué)習(xí)其他語法不那么嚴(yán)謹(jǐn)?shù)木幊陶Z言時(shí)使用。

總之,先掌握嚴(yán)格的規(guī)則,將來定會收獲回報(bào)。

熟練掌握第一語言

如果世界上每種語言都懂一點(diǎn),卻沒有一種能說得流利,那你將會很難生存。既沒有龐大的詞匯量,也無法理解別人的話,甚至無法使用谷歌翻譯與來自異國的人交流,最后只會使雙方困惑不已。

編程語言也是如此。與其蜻蜓點(diǎn)水地學(xué)習(xí)很多種語言,卻全都淺嘗輒止,不如熟練掌握初學(xué)的那門語言,或是專攻一門。這并不是說任何人都必須先精通一種編程語言,然后才能開始學(xué)習(xí)另一種。但在嘗試學(xué)習(xí)新語言之前,要對先一種語言的編程概念有深刻的了解。

為什么呢?學(xué)習(xí)一種語言的代碼基礎(chǔ)時(shí),可以假設(shè)另一種語言大致相同。例如,每種編程語言中的if/else的作用都相同,唯一的不同就在于怎么表示它。例如,C#中的if / else必須位于花括號中,而Python中的if / else沒有花括號,而是用冒號和縮進(jìn)來分隔。但根本上說,if / else的句式在兩種語言中的作用相同。

就像用母語說“你好”和“再見”一樣。一旦理解了含義,明白了如何使用,就可以學(xué)會用多種不同的語言說“你好”和“再見”。這幾個(gè)詞在不同的語言中代表相同的含義,唯一的區(qū)別就是寫法不同。

通過了解編程語言是單級還是多級、有無特定的變量命名法,或是否要求目標(biāo)導(dǎo)向型結(jié)構(gòu),學(xué)習(xí)者可以更加熟練地掌握第一語言以及后來學(xué)習(xí)的其他語言。精通一種語言后,就能夠越來越快地了解語言之間的細(xì)微差別。

編碼不要帶“口音”

用自然語言交流時(shí),即使別人口音很重,通常我們也能理解。例如,雖然我說法語口音很重,但法國人也能聽懂。這是因?yàn)槲易裱朔ㄕZ的慣例,所以即使句子結(jié)構(gòu)彎彎繞繞或單詞念錯(cuò),他們也能理解我想要傳達(dá)的內(nèi)容。

要掌握一門新的編程語言,不能把它當(dāng)作一門“已經(jīng)會了的語言”來進(jìn)行編碼,否則很可能事與愿違,或者效率極低。

我就曾掉進(jìn)過這樣的陷阱。大學(xué)時(shí)我最出色的項(xiàng)目以Angular作為系統(tǒng)前端,我當(dāng)時(shí)很熟悉JavaScript,我知道Angular與JavaScript相似,于是嘗試套用JavaScript的方法,用Angular編碼。

糟糕的是,這種“帶口音”的編碼成果欠佳,這可能是不了解Angular的規(guī)則所致。我的代碼全部用Angular編寫,但卻帶著濃重的JavaScript“口音”。不要和我犯一樣的錯(cuò)——遵循新語言的規(guī)則,不要帶“口音”編碼。

只有使自己沉浸在新語言的環(huán)境中,強(qiáng)迫自己理解所有特殊規(guī)則,才能正確使用新語言進(jìn)行編碼。這樣就能在掌握多種語言的同時(shí)不帶“口音”。

例如,如果一個(gè)英語母語者決定速成五種新語言,最終他也許能說俄語、意大利語、斯瓦希里語、意第緒語和阿拉伯語,但出口都帶著濃厚的英語口音和習(xí)慣。相反,如果去學(xué)習(xí)俄語講話的習(xí)慣,那么俄語母語者就能聽懂。其他語言也是如此。如果用典型的英語句式說斯瓦希里語,那肯尼亞人可能會聽不懂。

花些時(shí)間閱讀編程語言的文獻(xiàn),去感受某種語言的習(xí)慣。這不僅有助于掌握這門語言,也使你在團(tuán)隊(duì)項(xiàng)目中更有價(jià)值,讓其他也會這門語言的人對你抱有期待。

最初你可能不得不強(qiáng)迫自己不帶“口音”地編碼,但當(dāng)你能流暢切換兩種語言之時(shí),就是努力得到回報(bào)之日。

本文概述了我在學(xué)習(xí)多種編程語言過程中的一些竅門。這些小訣竅對我?guī)椭艽?,但為了盡善盡美,這里也要提出幾個(gè)更常規(guī)的方法:

  • 閱讀相關(guān)語言的文獻(xiàn)、閱讀源代碼、把用來做例子的代碼用新語言寫出來、列一份有關(guān)新語言的備忘錄,通過這些方法讓自己完全沉浸在所學(xué)語言的環(huán)境中。
  • 利用各種資源(例如Youtube、Medium和StackOverflow)學(xué)習(xí)編碼語言的教程。要更勇于嘗試,換句話說,學(xué)習(xí)新的編程語言需要主動(dòng)學(xué)習(xí)。
  • 用所學(xué)語言把以前做過的項(xiàng)目再做一次(哪怕是特別簡單的項(xiàng)目),并盡可能發(fā)揮它的用處。
  • 參加黑客馬拉松、卡格爾比賽等需要用到所學(xué)語言的編程比賽。
  • 和熟知這門語言的人合作。我總是在搭檔編程項(xiàng)目中受益匪淺。傾聽他們在寫代碼時(shí)的思考過程,為了解編程語言的運(yùn)作方式和原理提供許多啟發(fā)。

我能給出的最好的建議是持之以恒。學(xué)習(xí)一門新的語言很難,編程語言也不例外。不要因?yàn)橛悬c(diǎn)難學(xué)就放棄這門語言。所幸網(wǎng)上有很多資源可供使用,能讓學(xué)習(xí)過程更輕松自然一些。

最重要的是,學(xué)習(xí)新語言時(shí)要盡可能利用手邊的設(shè)備和工具。長此以往,不僅能幫助你更好地理解這門語言,也能讓你成為更好的開發(fā)人員或數(shù)據(jù)科學(xué)家。

 

責(zé)任編輯:華軒 來源: 讀芯術(shù)
相關(guān)推薦

2023-03-21 09:44:34

模型AI

2024-03-20 12:44:35

AI訓(xùn)練

2018-02-08 18:48:42

區(qū)塊鏈食品安全

2020-07-28 17:34:42

攜號轉(zhuǎn)網(wǎng)運(yùn)營商套餐

2021-04-05 17:11:34

App蘋果移動(dòng)應(yīng)用

2018-12-27 14:35:25

物聯(lián)網(wǎng)安全物聯(lián)網(wǎng)IOT

2024-07-10 12:11:30

數(shù)據(jù)經(jīng)營分析業(yè)務(wù)

2013-05-23 13:32:30

編程攻誠獅工程師

2019-03-24 14:14:40

代碼閱讀源代碼

2023-10-19 13:57:00

AI模型

2018-07-29 15:33:04

2015-03-19 15:17:11

2019-11-25 09:33:48

機(jī)器學(xué)習(xí)人工智能計(jì)算機(jī)

2022-04-29 08:48:25

開源

2016-11-16 13:17:29

大數(shù)據(jù)人才流動(dòng)

2017-03-16 14:01:00

2021-12-01 10:01:52

AI 游戲人工智能

2020-12-03 18:07:07

H5主題用戶
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號