日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

王垠:如何掌握所有的程序语言

發(fā)布時間:2023/12/20 编程问答 193 豆豆
生活随笔 收集整理的這篇文章主要介紹了 王垠:如何掌握所有的程序语言 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

點擊查看全文


對的,我這里要講的不是如何掌握一種程序語言,而是所有的……

很多編程初學(xué)者至今還在給我寫信請教,問我該學(xué)習(xí)什么程序語言,怎么學(xué)習(xí)。由于我知道如何掌握“所有”的程序語言,總是感覺這種該學(xué)“一種”什么語言的問題比較低級,所以一直沒來得及回復(fù)他們 :P 可是逐漸的,我發(fā)現(xiàn)原來不只是小白們有這個問題,就連美國大公司的很多資深工程師,其實也沒搞明白。

今天我有動力了,想來統(tǒng)一回答一下這個擱置已久的“初級問題”。類似的話題貌似曾經(jīng)寫過,然而現(xiàn)在我想把它重新寫一遍。因為在跟很多人交流之后,我對自己頭腦中的(未轉(zhuǎn)化為語言的)想法,有了更精準(zhǔn)的表達。

如果你存在以下的種種困惑,那么這篇文章也許會對你有所幫助:

  • 你是編程初學(xué)者,不知道該選擇什么程序語言來入門。
  • 你是資深的程序員或者團隊領(lǐng)導(dǎo),對新出現(xiàn)的種種語言感到困惑,不知道該“投資”哪種語言。
  • 你的團隊為使用哪種程序語言爭論不休,發(fā)生各種宗教斗爭。
  • 你追逐潮流采用了某種時髦的語言,結(jié)果兩個月之后發(fā)現(xiàn)深陷泥潭,痛苦不堪……

雖然我已經(jīng)不再過問這些世事,然而無可置疑的現(xiàn)實是,程序語言仍然是很重要的話題,這個情況短時間內(nèi)不會改變。程序員的崗位往往會要求熟悉某些語言,甚至某些奇葩的公司要求你“深入理解 OOP 或者 FP 設(shè)計模式”。對于在職的程序員,程序語言至今仍然是可以爭得面紅耳赤的宗教話題。它的宗教性之強,以至于我在批評和調(diào)侃某些語言(比如 Go 語言)的時候,有些人會本能地以為我是另外一種語言(比如 Java)的粉絲。

顯然我不可能是任何一種語言的粉絲,我甚至不是 Yin 語言的粉絲 ;) 對于任何從沒見過的語言,我都是直接拿起來就用,而不需要經(jīng)過學(xué)習(xí)的過程。看了這篇文章,也許你會明白我為什么可以達到這個效果。理解了這里面的東西,每個程序員都應(yīng)該可以做到這一點。嗯,但愿吧。

重視語言特性,而不是語言

很多人在乎自己或者別人是否“會”某種語言,對“發(fā)明”了某種語言的人倍加崇拜,為各種語言的孰優(yōu)孰劣爭得面紅耳赤。這些問題對于我來說都是不存在的。雖然我寫文章批評過不少語言的缺陷,在實際工作中我卻很少跟人爭論這些。如果有其它人在我身邊爭論,我甚至?xí)魃隙鷻C,都懶得聽他們說什么 ;) 為什么呢?我發(fā)現(xiàn)歸根結(jié)底的原因,是因為我重視的是“語言特性”,而不是整個的“語言”。我能用任何語言寫出不錯的代碼,就算再糟糕的語言也差不了多少。

任何一種“語言”,都是各種“語言特性”的組合。打個比方吧,一個程序語言就像一臺電腦。它的牌子可能叫“聯(lián)想”,或者“IBM”,或者“Dell”,或者“蘋果”。那么,你可以說蘋果一定比 IBM 好嗎?你不能。你得看看它里面裝的是什么型號的處理器,有多少個核,主頻多少,有多少 L1 cache,L2 cache……,有多少內(nèi)存和硬盤,顯示器分辨率有多大,顯卡是什么 GPU,網(wǎng)卡速度,等等各種“配置”。有時候你還得看各個組件之間的兼容性。

這些配置對應(yīng)到程序語言里面,就是所謂“語言特性”。舉一些語言特性的例子:

  • 變量定義
  • 算術(shù)運算
  • for 循環(huán)語句,while 循環(huán)語句
  • 函數(shù)定義,函數(shù)調(diào)用
  • 遞歸
  • 靜態(tài)類型系統(tǒng)
  • 類型推導(dǎo)
  • lambda 函數(shù)
  • 面向?qū)ο?/li>
  • 垃圾回收
  • 指針?biāo)阈g(shù)
  • goto 語句

這些語言特性,就像你在選擇一臺電腦的時候,看它里面是什么配置。選電腦的時候,沒有人會說 Dell 一定是最好的,他們只會說這個型號里面裝的是 Intel 的 i7 處理器,這個比 i5 的好,DDR3 的內(nèi)存 比 DDR2 的快這么多,SSD 比磁盤快很多,ATI 的顯卡是垃圾…… 如此等等。

程序語言也是一樣的道理。對于初學(xué)者來說,其實沒必要糾結(jié)到底要先學(xué)哪一種語言,再學(xué)哪一種。曾經(jīng)有人給我發(fā)信問這種問題,糾結(jié)了好幾個星期,結(jié)果一個語言都還沒開始學(xué)。有這糾結(jié)的時間,其實都可以把他糾結(jié)過的語言全部掌握了。

初學(xué)者往往不理解,每一種語言里面必然有一套“通用”的特性。比如變量,函數(shù),整數(shù)和浮點數(shù)運算,等等。這些是每個通用程序語言里面都必須有的,一個都不能少。你只要通過“某種語言”學(xué)會了這些特性,掌握這些特性的根本概念,就能隨時把這些知識應(yīng)用到任何其它語言。你為此投入的時間基本不會浪費。所以初學(xué)者糾結(jié)要“先學(xué)哪種語言”,這種時間花的很不值得,還不如隨便挑一個語言,跳進去。

如果你不能用一種語言里面的基本特性寫出好的代碼,那你換成另外一種語言也無濟于事。你會寫出一樣差的代碼。我經(jīng)常看到有些人 Java 代碼寫得相當(dāng)亂,相當(dāng)糟糕,卻罵 Java 不好,雄心勃勃要換用 Go 語言。這些人沒有明白,是否能寫出好的代碼在于人,而不在于語言。如果你的心中沒有清晰簡單的思維模型,你用任何語言表述出來都是一堆亂麻。如果你 Java 代碼寫得很糟糕,那么你寫 Go 語言代碼也會一樣糟糕,甚至更差。

很多初學(xué)者不了解,一個高明的程序員如果開始用一種新的程序語言,他往往不是去看這個語言的大部頭手冊或者書籍,而是先有一個需要解決的問題。手頭有了問題,他可以用兩分鐘瀏覽一下這語言的手冊,看看這語言大概長什么樣。然后,他直接拿起一段例子代碼來開始修改搗鼓,想法把這代碼改成自己正想解決的問題。在這個簡短的過程中,他很快的掌握了這個語言,并用它表達出心里的想法。

在這個過程中,隨著需求的出現(xiàn),他可能會問這樣的問題:

  • 這個語言的“變量定義”是什么語法,需要“聲明類型”嗎,還是可以用“類型推導(dǎo)”?
  • 它的“類型”是什么語法?是否支持“泛型”?泛型的 “variance” 如何表達?
  • 這個語言的“函數(shù)”是什么語法,“函數(shù)調(diào)用”是什么語法,可否使用“缺省參數(shù)”?
  • ……

注意到了嗎?上面每一個引號里面的內(nèi)容,都是一種語言特性(或者叫概念)。這些概念可以存在于任何的語言里面,雖然語法可能不一樣,它們的本質(zhì)都是一樣的。比如,有些語言的參數(shù)類型寫在變量前面,有些寫在后面,有些中間隔了一個冒號,有些沒有。

這些實際問題都是隨著寫實際的代碼,解決手頭的問題,自然而然帶出來的,而不是一開頭就抱著語言手冊看得仔仔細細。因為掌握了語言特性的人都知道,自己需要的特性,在任何語言里面一定有對應(yīng)的表達方式。如果沒有直接的方式表達,那么一定有某種“繞過方式”。如果有直接的表達方式,那么它只是語法稍微有所不同而已。所以,他是帶著問題找特性,就像查字典一樣,而不是被淹沒于大部頭的手冊里面,昏昏欲睡一個月才開始寫代碼。

掌握了通用的語言特性,剩下的就只剩某些語言“特有”的特性了。研究語言的人都知道,要設(shè)計出新的,好的,無害的特性,是非常困難的。所以一般說來,一種好的語言,它所特有的新特性,終究不會超過一兩種。如果有個語言號稱自己有超過 5 種新特性,那你就得小心了,因為它們帶來的和可能不是優(yōu)勢,而是災(zāi)難!

同樣的道理,最好的語言研究者,往往不是某種語言的設(shè)計者,而是某種關(guān)鍵語言特性的設(shè)計者(或者支持者)。舉個例子,著名的計算機科學(xué)家 Dijkstra 就是“遞歸”的強烈支持者。現(xiàn)在的語言里面都有遞歸,然而你可能不知道,早期的程序語言是不支持遞歸的。直到 Dijkstra 強烈要求 Algol 60 委員會加入對遞歸的支持,這個局面才改變了。Tony Hoare 也是語言特性設(shè)計者。他設(shè)計了幾個重要的語言特性,卻沒有設(shè)計過任何語言。另外大家不要忘了,有個語言專家叫王垠,他是早期 union type 的支持者和實現(xiàn)者,也是 checked exception 特性的支持者,他在自己的博文里指出了 checked exception 和 union type 之間的關(guān)系 :P

很多人盲目的崇拜語言設(shè)計者,只要聽到有人設(shè)計(或者美其民曰“發(fā)明”)了一個語言,就熱血沸騰,佩服的五體投地。他們卻沒有理解,其實所有的程序語言,不過是像 Dell,聯(lián)想一樣的“組裝機”。語言特性的設(shè)計者,才是像 Intel,AMD,ARM,Qualcomm 那樣核心技術(shù)的創(chuàng)造者。

合理的入門語言



點擊查看全文


總結(jié)

以上是生活随笔為你收集整理的王垠:如何掌握所有的程序语言的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产午夜福利一区 | 美女av毛片 | 超碰一区二区 | 五月婷婷丁香综合 | 欧美日韩视频免费观看 | 日韩av免费网址 | 日韩不卡一二三区 | 一区二区视频免费在线观看 | 欧美激情第1页 | 欧美性受xxxx黑人xyx性 | 亚洲AV无码成人片在线观看 | 少妇脚交调教玩男人的视频 | 欧美性生交xxxxx久久久缅北 | 丁香六月久久 | 91精品一区二区三区在线观看 | 久草香蕉视频 | 亚洲一区二区电影网 | 国产网站在线免费观看 | 久久九九国产 | 713电影免费播放国语 | 欧美日韩一级大片 | 国产在线一 | 女优中文字幕 | 欧美色炮 | 久久精品免费观看 | 久久久久亚洲AV成人无码国产 | 国产精品成人69xxx免费视频 | 女人被男人躁得好爽免费视频 | 欧美一级淫片 | 丁香花婷婷 | 99热亚洲精品 | 午夜精品视频 | 伊人久久大香线蕉av色婷婷色 | 91精品国产99久久久久久 | 久久久综合久久 | 午夜精品久久久久久久96蜜桃 | www.日韩av| 国产二区自拍 | 国产精品国产三级国产aⅴ无密码 | 九一在线观看免费高清视频 | 日本中文字幕精品 | 欧美日韩中字 | 成人午夜又粗又硬又大 | 亚洲专区在线视频 | 一区二区三区高清不卡 | 天天操天| a√天堂资源 | 高清无码视频直接看 | 欧美日韩另类视频 | 成人亚洲网 | 91精品视频免费在线观看 | 欧美乱论视频 | 97在线免费 | 久久久久久国产免费a片 | 在线观看免费中文字幕 | 熟妇人妻无码xxx视频 | 古装做爰无遮挡三级视频 | 九色porn | 国产老肥熟 | 波多野结衣一区二区三区高清 | 华人色 | 超碰人人人人 | 亚洲精品aⅴ中文字幕乱码 国产精品调教视频 | 日本三级网站在线观看 | se婷婷| 欧美巨鞭大战丰满少妇 | 欧美成人午夜免费视在线看片 | 久久无码人妻精品一区二区三区 | 国产精品三级 | 337p日本欧洲亚洲大胆精筑 | 日本一本二本三区免费 | 国产成人三级在线播放 | 日韩一二区 | 日狠狠 | 欧美一区二区在线播放 | 黄色香蕉视频 | 国产精品18久久久 | 野战少妇38p | 日本特黄一级大片 | 精品免费看 | 天天色天天射天天干 | 中文字幕在线官网 | 国产成人精品无码免费看81 | 一级片播放| 日韩资源在线 | 久久国产成人精品 | 久久久久性 | 69精品久久久久久 | 特大巨交吊性xxxx | 亚洲精品麻豆 | 色欲av伊人久久大香线蕉影院 | 日本黄色免费网址 | 蜜桃av噜噜一区二区三区麻豆 | 亚洲欧美综合一区二区 | 无码精品人妻一区二区 | 少女情窦初开的第4集在线观看 | 日本人性爱视频 | 久久成人精品视频 | 日本高清免费看 |