免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
什么是現(xiàn)代化編程?

【導(dǎo)讀】:現(xiàn)代化編程應(yīng)該是:不強(qiáng)制用相同的 IDE,統(tǒng)一的代碼風(fēng)格,方便的依賴管理,持續(xù)集成,版本控制等。


在我的青少年時(shí)期,我涉獵了編程基礎(chǔ)和一些匯編。當(dāng)我學(xué)習(xí)了 Turbo Pascal 之后這事更進(jìn)了一步,它提供了一種最早期的集成開(kāi)發(fā)環(huán)境(IDE)。我覺(jué)得這下合我心意了。實(shí)際上,IDE 是一種讓你在一個(gè)友好的環(huán)境內(nèi),方便地編寫、編譯、調(diào)試和運(yùn)行代碼的程序。Turbo Pascal 沒(méi)有太多的圖形界面(它基于文本),但它有菜單和窗口。你可以進(jìn)入調(diào)試模式,跟蹤變量的值等等。

然后我轉(zhuǎn)到了 Delphi (一種圖形化的 Turbo Pascal),它擁有到今天看來(lái)仍然不錯(cuò)的出色 IDE。我用  Visual Basic 設(shè)計(jì)了一個(gè)“會(huì)報(bào)時(shí)的鐘”,當(dāng)時(shí)發(fā)表在 Bulletin Board Systems(使用 Windows 3.1 的一個(gè)系統(tǒng))。那之后我發(fā)現(xiàn)了 Visual Studio。有好幾年我的 C++ 編程都是借用的 Visual Studio。以上就是我一直使用的所有 IDE。

早在八十年代初,Smalltalk 就有了著名的強(qiáng)大圖形化 IDE(Youtube 視頻)。

我認(rèn)為,使用 IDE 并不代表著“現(xiàn)代化”?,F(xiàn)在的 IDE 和過(guò)去的 IDE 非常相像。雖然我們編程的內(nèi)容改變了,但在很多情況下,我們?nèi)绾尉幊虆s沒(méi)有改變。在我的 Dell 筆記本電腦里裝著最新版 Visual Studio。換做 20 年前的我,也能完美地輕松上手它。調(diào)試、代碼補(bǔ)全、遠(yuǎn)程代碼執(zhí)行,它和以前很像。事實(shí)上,Visual Studio 從未與 Turbo Pascal 相差很大過(guò)。而我發(fā)現(xiàn)這非常令人沮喪。我以為我們應(yīng)該取得比這更快的進(jìn)步。

我提出了現(xiàn)代化編程在桌面外觀上難有作為的觀點(diǎn)。圖形化用戶界面(GUI)只是表層。現(xiàn)代化編程技術(shù)都是關(guān)于流程和實(shí)際工具的,而不是它們之上的表層。我不在乎你是否使用 Eclipse 或 Emacs,這和你如何現(xiàn)代化毫不相關(guān)。

那么,什么是“現(xiàn)代化”?

編碼是社會(huì)化的

在 20 年前,要求你公司里的每個(gè)人都使用相同的 IDE,并且要唯一依賴于這種 IDE 來(lái)構(gòu)建、測(cè)試和部署代碼,這是很明智的。但在你公司外有很多聰明的人,他們往往不使用你這種 IDE。如今,你可以觸及他們了。這意味著對(duì)于所采用的工具和流程你必須明智。

如果你嘲弄使用 Atom 文本編輯器、Visual Studio 或者 Emacs 編程的人,那你就不是社會(huì)化的。你需要盡可能的包容,否則就會(huì)付出代價(jià)。

Go 語(yǔ)言有自己的格式化工具

我不在乎在你保存的時(shí)候,是不是自動(dòng)重新格式化代碼,或者有沒(méi)有點(diǎn)擊重新格式化按鈕,或者是不是輸入 go fmt,這些都一樣。但它無(wú)疑是一個(gè)卓越的現(xiàn)代化的想法。這就是進(jìn)步。所有的編程語(yǔ)言都應(yīng)該為用戶強(qiáng)加一個(gè)唯一的代碼格式。別再 bikeshedding(過(guò)于關(guān)心旁枝末節(jié),而忽視主要問(wèn)題)。

我們很清楚 Java 擁有規(guī)范,但規(guī)范是不夠的。我們需要一個(gè)工具,能把代碼作為輸入,并生成一個(gè)唯一定義了的輸出,它能處理從行長(zhǎng)度到空格的所有問(wèn)題。

這個(gè)工具的目標(biāo)是對(duì)于應(yīng)該如何格式化代碼,不再有任何可能有的爭(zhēng)議,而且產(chǎn)生正確的格式不費(fèi)吹灰之力。我簡(jiǎn)直無(wú)法告訴你這是多么的重要。

像 Rust、Go、Swift 這樣的編程語(yǔ)言有自己的程序包管理系統(tǒng)

因此,例如在 Swift 中,我可以創(chuàng)建一個(gè)名為 Package.swift 的小文本文件,并把它放入我項(xiàng)目的根文件,在那里聲明我的依賴。

Swift
1
2
3
4
5
6
7
8
9
10
11
import PackageDescription
let package = Package(
    name: "SwiftBitsetBenchmark",
    dependencies: [
   .Package(url: "https://github.com/lemire/SwiftBitset.git",  
          majorVersion: 0),
   .Package(url: "https://github.com/lemire/Swimsuit.git",  
          majorVersion: 0)
    ]
)

(源碼實(shí)例)

然后我可以輸入 swift build,軟件會(huì)自動(dòng)抓取依賴代碼,并構(gòu)建我的程序。這在 Swift 運(yùn)行的所有地方通用。你使用哪種文本編輯器和 IDE 都沒(méi)關(guān)系。

你不想使用文本編輯器,而更喜歡圖形界面?可以。都沒(méi)有區(qū)別。

為什么那樣顯得現(xiàn)代化?因?yàn)樽詣?dòng)地解決依賴關(guān)系而不費(fèi)吹灰之力,對(duì)于 20 年前的我來(lái)說(shuō)就像魔術(shù)。并且自動(dòng)地、系統(tǒng)地解決依賴關(guān)系是極其重要的。我不想永遠(yuǎn)都不得不手動(dòng)安裝和部署一個(gè)依賴項(xiàng)。我希望其他人能夠在幾秒內(nèi)把我的庫(kù)添加到他們項(xiàng)目中,而不是幾分鐘或是幾小時(shí)。

是的,你可以將它添加到現(xiàn)有的語(yǔ)言(如:Java 的 Maven 或是 IED)但需要有一個(gè)唯一的方法讓它起效。

像 Rust、Go、Swift 這樣的編程語(yǔ)言,在一開(kāi)始就支持單元測(cè)試。

比如在 Go 里,創(chuàng)建一個(gè) filemyproject_test.go,然后添加 func TestMyStuff(t * testing.T)這樣的函數(shù),然后輸入 go test 既可。

在 20 年前,幾乎沒(méi)有人測(cè)試他們的代碼,而今天已經(jīng)是一個(gè)必要要求,您和它需要以一種唯一的方式來(lái)做,這樣你就可以在項(xiàng)目之間移動(dòng),還總是知道如何測(cè)試了。

如果不能在你的代碼中立刻認(rèn)出健全的單元測(cè)試,我會(huì)設(shè)想你的代碼嚴(yán)重?fù)p壞了。

持續(xù)集成

代碼更改時(shí),你想要一個(gè)遠(yuǎn)程工具來(lái)獲取新代碼,并測(cè)試它,以便可以提前停止回歸。人們可以在你的代碼上運(yùn)行測(cè)試還不夠,他們還需要看到自動(dòng)化測(cè)試的結(jié)果,自行檢查最終的故障。

持續(xù)集成是較大規(guī)模計(jì)劃的一部分:你必須在你編程的時(shí)候瘋狂地自動(dòng)化程序。體力勞動(dòng)應(yīng)該最小化。有時(shí)候這意味著你真的應(yīng)該只是點(diǎn)擊一個(gè)按鈕,無(wú)論是通過(guò)一個(gè)圖形化用戶界面,還是命令窗口,但它不意味著需要反復(fù)地遵循一系列復(fù)雜的命令。

版本控制

20 年前,你在桌面上編寫代碼,并通過(guò)電子郵件發(fā)送新代碼(作為補(bǔ)?。┦侵v得通的。但這只在緩慢的合作節(jié)奏中有意義。如今,這么做是愚蠢的。任何差于 Git 的都是落后的。注意,如今甚至微軟構(gòu)建 Windows 也使用 Git。

 

那么,當(dāng)你共事于從來(lái)沒(méi)有聽(tīng)過(guò)現(xiàn)代編程的聰明學(xué)生會(huì)發(fā)生什么呢?他們看一個(gè)類似 go get 的命令,只看得到表層(一個(gè)命令行)。他們認(rèn)為這是落后的。漂亮的圖形在哪?

他們使用一個(gè)好看的 IDE 工作,像是 Visual Studio 或 Eclipse,并確信自己是現(xiàn)代化的,完全無(wú)視 IDE 可以追溯到幾十年前的事實(shí)。然后并沒(méi)有使用 IDE 的優(yōu)勢(shì),比如更好的功能可見(jiàn)性和更快的操作,而是在其他地方使用現(xiàn)代化編程技術(shù)。他們堅(jiān)持守舊派編程:

  • 沒(méi)有測(cè)試。至少,沒(méi)有自動(dòng)化和系統(tǒng)化的測(cè)試。
  • 在一個(gè)具體的設(shè)置上難以處理依賴關(guān)系。
  • 沒(méi)有自動(dòng)化。沒(méi)有持續(xù)集成,沒(méi)有自動(dòng)化部署。

他們編程就像我?guī)资昵笆褂?nbsp;Turbo Pascal 入門的時(shí)候。盡管 Turbo Pascal 有圖形化用戶界面(GUI),但它是非常古老的學(xué)校。


本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Delphi與C#之父:安德斯
這16種編程語(yǔ)言學(xué)會(huì)任何一種 再不愁找工作_編程語(yǔ)言_酷勤網(wǎng)
C#之父Anders Hejlsberg演講解讀:編程語(yǔ)言大趨勢(shì)
編程語(yǔ)言的發(fā)展趨勢(shì)及未來(lái)方向(1)
地球程序員之神
用Vim編程——配置與技巧
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服