CoffeeScript 已死,CoffeeScript 萬歲!
正如你可能已經聽說的,JavaScript今年又準備推出一個新版本-ES6。這個名字源於它遵循了“ECMAScript”編碼標準的第六個重要版本:ECMA-262。在這個期待已久的釋出中,將包括一些對絕大多數JavaScript開發者處理問題大有裨益的新特性。
一些光芒四射的流行語……類、字串插值、生成器函式、箭頭函式、迭代器與for/of迴圈。這些都是具有重大意義的進步,但你可能也知道,這些特性中的許多或更多已經以CoffeeScript的形式存在了一段時間了,那是“一個被編譯成JavaScript的小型語言”。
我使用CoffeeScript編碼已經有一些年頭。一個開發者在構建一個複雜的應用程式時,他必須在能夠看到程式碼的同時,快速瞭解這段程式碼是做什麼的。CoffeeScript讓我在進行這些工作的時候比使用JavaScript時更加高效,我愛CoffeeScript,愛它因簡介的語法而來的生產力提升,也愛它因視覺雜亂而來的自由。
ES6中新加入了很多好東西。但是,像一個被用水衝得過淡的美式咖啡,它還遠沒有對我的口味。作為一個CoffeeScript的粉絲,我很高興聽到一些我喜歡的CoffeeScript新特性(如箭頭函式)現在被加入到了JavaScript中。然而,他們沒有使用相同的靈活性去實現,還有其他的尷尬事情在裡面。
CoffeeScript可以讓你這麼做:
solipsism = true if mind? and not world?
非常優雅是不是?在ES6中,你仍然不得不去處理那些畸形的東西,就像這樣:
if ((typeof mind !== "undefined" && mind !== null) && (typeof world === "undefined" || world === null)) { solipsism = true; }
這還沒完。在字串插值中使用反撇號(`)還只是普通的怪異,圓括號和花括號在任何時候都是必需的。甚至是在星期日。
許多第一次嘗試 CoffeeScript 的開發者會抱怨它的空格敏感特性。說實話,這傢伙在一開始也坑了我幾次。但我發現這些問題是很容易避免的,而且與這些小問題相比,更重要的是:我的程式碼能夠始終遠離分號,括號,·this·關鍵字的汙染,就像在 AI Gore 會議上的豐田普銳斯。
ES6 中很多新特性明顯受到 CoffeeScript 的啟發。所以為何不敢擁抱這些變化?當前形式的 JavaScript 是由委員會設計的教科書式的樣例軟體,充斥著委員們衝突的意見和強烈的分歧。幾年前,ES6 的開發前身:ES4,由於(委員們)在架構上的意見分歧和爭論不得不被放棄。在這個委員會模式中,這個軟體只有當每個人都厭倦了爭論時才能釋出。(委員會的)人們不情願地妥協了,認輸了,然後點了一份比薩慶祝他們的成果。
CoffeeScript 不會受到妥協的拖累。它是人們對於 JavaScript 能夠是什麼樣的有點烏托邦式的願景。這種狹窄的關注點大概是CoffeeScript獲得如此兩極分化名聲的原因吧。開發者對它要麼愛不釋手,要麼嗤之以鼻。如果你能夠就它的表面價值而接受它,CoffeeScript 就已經出色地完成了它的使命了。
這是一次對“標準”的背離,就像最初的亮彩色的 iMac 一樣,是對20世紀90年代時,那些清一色令人厭惡的灰褐色PC一次令人耳目一新的背離。一開始,人們強烈哭訴:“我沒有軟碟機怎麼活”。當然啦,每個人只有在經歷了1個月左右的時間後,才會猛然意識到他們根本不需要軟碟機。哦,好像你口袋裡平滑玻璃鏡面的 Android 手機或者 iPhone 也是這樣?我記得微軟的 Steve Ballmer 曾大聲宣稱 iPhone 只是個玩具,“不可能”有市場——因為它沒有所有‘正式’智慧手機應該有的鍵盤。標準只有在它們自己的方向上足夠純粹,才是好的。
記住它是至關重要的,除非你正在使用匯編語言程式設計或者機器語言本身,但任何程式語言都是一種抽象。我們討論的是,有多少抽象才是適量的,以及在我們的工作中應該有什麼作用與實際上的標準相干。這基本上可能由個人來決定的,對於每位開發人員與每個團隊來說,都沒有對與錯的答案。
對於我們的團隊來說,這個問題主要是圍繞在一個協同環境與我們想猛拉大馬車,這種所謂的技術活中來關注諸多開發人員的工作。可以有把握的說,我們有一個正在進行的討論。(諸多意見,對嗎?)在堅持既定的標準之間,我們的團隊正努力找到一種平衡,同時留有餘地的提供給開發人員來創新和選擇為他們工作的工具。
我想CoffeeScript可能會繼續伴隨著JavaScript,並推動JavaScript的創新。畢竟,這並不是一個非此即彼的命題。即使有一天CoffeeScript消失了,我想就像CoffeeScript一樣的超程式設計語言(Metaprogramming Language)也會有很高的價值,因為它讓程式設計師以一種新的方式去想象和理解他們的程式碼。這有助於提高每個人的藝術層次。
做一個善於交際的人,快來分享!
相關文章
- CoffeeScript和Sass提高Web開發效率Web
- 【轉】Lisp 已死,Lisp 萬歲!Lisp
- .NET已死,.NET萬歲 - Richard Reedy
- 在 Laravel 中使用 TypeScript 、CoffeeScript 、pug 提高開發效率LaravelTypeScript
- SQL已死? - thenewstackSQL
- Spark已死?DBT會替代?Spark
- SQL 已死,但 SQL 將永存!SQL
- “A牌已死,霸業當立”
- 測試已死,我看未必
- ChatGpt的出現,前端真的已死?ChatGPT前端
- 致所有不學習的人:你將“死”於35歲
- Docker 大勢已去,Podman 萬歲Docker
- 驀然回首,Java 已經 24 歲了!Java
- 雲端計算崛起,大型機已死?
- 甭做啦,軟體測試已死……
- 作業系統已死?容器勝出!作業系統
- 程式設計已死?資料勝出!程式設計
- 《鏡子》《過去已死》閱讀筆記筆記
- UML已死?其實是敏捷惹的禍?敏捷
- CentOS已死:RedHat稱Stream不是替代品CentOSRedhat
- DevOps已死?2024年的DevOps將如何發展dev
- 關於UML已死的謠言都是假的
- 【深入學習JVM 04】回收“已死”物件的過程JVM物件
- 深入淺出JVM(十一)之如何判斷物件“已死”JVM物件
- JVM 判斷物件已死,實踐驗證GC回收JVM物件GC
- 國家統計局:中國20歲至40歲男性比女性多1752萬人
- 冒險遊戲已逝?冒險遊戲萬歲!遊戲
- SATA介面已死:PCI-E SSD將成市場主流
- 廠商支援的開源資料庫是否已死? - Dotan資料庫
- WHO:全球一年74.5萬人“過勞死”
- 靜安58歲男子餓死家中?不實!同樓居民還原事情經過
- 30歲,沒有月入過萬算失敗嗎?用視覺化分析30歲的人收入真相視覺化
- VR已死?三年VR美術談從業經驗VR
- 科技愛好者週刊(第 244 期):大資料已死大資料
- Linux檢視磁碟用量,以及殺死已刪除檔案的程式Linux
- 企業服務匯流排ESB已死! 服務網格上位
- 笨辦法學C 後記:“解構 K&R C” 已死
- 《Temtem》全球銷量已破50萬份
- 19 歲程式設計師找 bug 居然賺到 100 萬美元程式設計師