在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

若開始自己的項目,該使用怎樣的編程語言?

5RJg_mcuworld ? 來源:未知 ? 作者:胡薇 ? 2018-10-17 09:08 ? 次閱讀

我喜歡編程語言。每種語言都有自己的特點。最近,我開始糾結一個問題:如果開始自己的項目的話,我該用什么語言。

好多優秀的編程語言

在閱讀此文之前,需要先說明幾件事情。雖然在工作中大部分的時候我都用 Java、JavaScript 和 Ruby 來創建產品應用,但我一直在學習新的語言和新的框架。我相信,語言和語言(或框架)特有的社區能給你帶來新的思想,這些思想早晚會有用處:函數式編程可以給你帶來許多面向對象的編程知識,而全職從事 Rails 應用可以給你許多測試的經驗(如果你寫測試的話)。但問題是,如果你想學會所有每種語言的優秀概念,那么最終會在各種優秀的功能中迷失方向。

另一個關鍵點是,我一直在用控制臺。我使用電腦的絕大部分時間都是在用瀏覽器和控制臺。沒錯,我編程用的是 Vim。我喜歡沒有空值的類型系統(我喜歡可選類型),這種類型系統很強大。因此我不喜歡 Java 的類型系統,但我用過的最新版本只是 Java 6,所以很有可能現在的情況不一樣了!Java 的類型系統正是我嘗試 Ruby 的原因,因為 Ruby 社區總是在談論他們與 Java 的區別。聽上去就像是,如果我寫 Java 代碼,我實際上是在幫助編譯器干活,而不是編譯器幫我干活。

我想說的最后一件事就是我在尋覓的語言可能并不是你在尋找的語言!這篇文章里我會介紹一些我在最近幾個月在工作和個人項目中用過的語言。

Ruby

我很喜歡 Ruby。Ruby 是個非常強大的描述性語言,有許多成熟的函數庫(稱為“寶石”——gem),它們能幫你快速建立應用。Rails 已經非常成熟,非常容易使用。測試在社區的融入程度比任何其他語言都要深。Ruby 是個純粹的面向對象語言,所以不管你使用什么函數庫,大多數代碼都有相同風格的 API,即類的 API。社區也很強大,Ruby 的開發者似乎會給已有的函數庫貢獻代碼,而不是每次都編寫自己的函數庫(比如廣為流傳的 ActiveRecord 和 Sequel 就是很好的例子)。這種共識幫助人們擴展函數庫,其中的例子之一就是 Rails Admin 的 gem。

在速度方面 Ruby 并不是最快的。部署通常很重,需要很長時間才能加載。使用 Ruby 很愉快,但在現實中,運行 Rails 應用需要很多時間和很多成本,特別是在 Heroku、AWS ECS 等“無服務器”的容器平臺上,因為它要占用許多內存、磁盤空間、流量和啟動時間,而這些都要額外花錢。在本地運行 Rails 完全沒問題,Bundler 也很好用,但有時候它的“熱重載”機制會出問題。

JavaScript

我也喜歡 JavaScript。絕大多數前端工作都是在 Web 上,因為每個人都有瀏覽器,所以發布很容易。所以使用其他語言似乎是件很奇怪的事情:“能招一個人為什么要招兩個?”JavaScript 也很容易學習,而且因為它流傳甚廣、易于上手,所以使用 JavaScript 基本不會有錯。使用這個簡單的語言實現原型非常容易,你可以直接啟動 node 命令行環境,或者直接打開 devtools!它們非常好用,任何開發 web 的人知道它們,所以你有很多開發者!太好了。

難怪這是我們 Wix 使用的主要語言。

但是,JS 也有問題。npm 模塊的狀態與 JS 的狀態不一樣,在類型系統方面社區有分歧(Flow vs. TS),函數庫和其他東西也是。我也有自己的喜好,所以……我覺得我也是社區的一部分。這種缺乏“社區精選”的結果就是雖然 npm 上有很多模塊,但很多模塊都不成熟。我幾年前寫過一篇文章,講述的是我在完全使用 JavaScript 幾年后又轉回 Ruby 的故事。我稱之為“倒退”。

Swift

最近我開始學習 Swift 進行 iOS 開發。之前我對它的了解為零,因為我了解的一切都只是怎樣創建 React 應用。雖然這沒什么問題,但我想嘗試些新東西。

Swift 是個靜態類型的編譯語言。它最初被用于 Apple 生態環境下的應用程序開發,但它是開源的,現在也可以用來開發 Linux 上的可執行文件。我知道的最多產的一名 npm 作者 Sindre Sorhus 說他想做更多 Swift 的工作。我完全理解他!Swift 的快速啟動時間和好用的編譯過程可以保證運行時的錯誤越來越少。而且它沒有 NULL 值,但是卻有 Optional 類型。在 throw 之前必須明確聲明函數會 throw 的內容,但并不是像 Java 那樣通過 throws 聲明進行,而是有個非常巧妙地語法糖,就像是“try 一下,如果萬一失敗還有 optional”。模式匹配通過與 Swift 枚舉類型的完美配合,變得非常強大。它還有類型推斷,雖然在方法定義中不能使用,但我覺得應該問題不大。真是個完美的語言!

但為什么 Swift 不是我的最終選擇?因為 Swift 只適合在 XCode 中使用。通常我使用 Vim,用別的編輯器會覺得效率很低。我嘗試過 VSCode 和 Atom,但都不太好。也許,最終我會寫一個 Swift CLI 工具能幫我編寫編輯器插件來改善開發體驗,但至少現在這個東西還不存在。Swift 也沒有靜態編譯,所以你必須設置好 Swift 才能使用命令行程序。對于 Mac 應用來說這不是問題,但在 Linux 服務器上,我希望編譯出的二進制文件能包含一切。

ReasonML

我很喜歡這個 Facebook 為 OCaml 做的嶄新語法。整個工具鏈感覺很成熟、很優秀。OCaml 的包管理器 OPAM 自帶表情圖標,讓這個看上去很老的工具其實不是那么老。Merlin 和 OCaml/Reason 語言服務器也非常優秀,而且能與 Vim 配合得很好。它還有個完美工作的自動完成引擎(!)、跳轉到定義、鼠標懸停類型定義和更多的功能。優秀的開發工具從編輯器中分離,對于一門語言來說這是非常好的。

Reason 可以用 BuckleScirpot 編譯成 JS,因此可以將 Reason/OCaml 代碼轉換成高性能的 JS 代碼。這非常好,因為這就相當于 JS 也有了類型系統,你還可以享受 JS 的函數庫。我很喜歡它。實際上,我唯一不喜歡的就是我得建立大量的類型定義才能使用依賴,但通常這并不是問題:我們不需要對整個模塊建模,只需要對輸入、輸出和使用到的特定函數、類和方法建模即可。因為 Reason 并不是完全的函數式(有副作用),因此在我看來, Reason 是最好的能編譯成 JS 的語言。

Reason 也能編譯成字節碼或原生代碼。使用純 OCaml/Reason 意味著只要編譯器通過,就不會有運行時的錯誤,它也能靜態編譯,生成很小的二進制文件,啟動速度也很快。而且它編譯速度非常快!

OCaml工具鏈非常快!

在嘗試原生 Reason 應用時我遇到的最大問題就是我不知道別人在干什么,別人怎樣使用函數庫。大多數人都使用OCaml,但因為 OCaml 和 Reason 可以互換,所以我可以用 Chrome 擴展把 OCaml 當做 Reason 來閱讀。但依然不清楚。一些 OCaml 代碼不能轉換成 Reason,也許是因為 Chrome 插件中缺乏 PPX。據我的理解,PPX 是一種語法擴展,基本上就是一些宏,將代碼從一種語法轉換成另一種語法。可以理解成 Babel 插件或類似的東西。原生的 Reason/OCaml 不支持多核心,但要想實現并發,可以使用 Lwt,這是個類似于 Promise 的庫。但我還沒找到哪怕一篇 Lwt 的指南或文章!

而且,似乎即使是原生 OCaml/Reason開發,入門的門檻也非常高,而且非常打擊積極性。社區不會解答問題也不會分享知識,絕大多數情況下都是要求提問者去看源代碼或借口,但我相信最終這會改變,因為這只是 JS 開發的開始。

Golang

Go 是個非常好的語言。它很容易學習,編譯和運行都很快,還有 goroutine 和通過 CSP 實現的簡單并發。它支持多核心,而且可以編譯出靜態二進制文件,能在最簡潔的Linux上快速啟動。它在變量定義時有類型推斷,但函數定義中沒有。它支持接口,看上去像是來自于有良好基礎的專業社區。

實際上,有很多很強大的模塊和應用都是用 Go 寫成的,如 Docker、Kubernetes、CockroachDB,意味著你有可能將這些二進制文件作為基礎設施的一部分,從而實現小型的、簡單的分發(如在樹莓派上)。這一點非常強大。

在公用數據結構(圖、樹等)和算法方面,它沒有泛型(也許下個版本就會加上了),我覺得這一點很奇怪:你必須每次都編寫同樣的代碼,或者使用代碼生成,雖然也能用,但我更希望編譯器能幫我完成這一切。而且,我并沒有完全理解它的模塊系統 VGO,但我猜測隨著社區對之越來越熟悉,以后會有更多的信息和更簡單的指南。最后一點個人意見,我認為語言本身不太干凈。我知道,這并不是不使用某個語言的理由,但至少我不會完整地測試它,或者在個人項目中使用它。Go 語言本身并不有趣。它很簡單,很無聊,很好。我相信最后我會在某個正式系統中使用并愛上它。人的口味會變化!

Crystal

這篇文章以 Ruby 開始,那么我們以 Crystal 結束吧。

Crystal 是另一門非常新的語言,它還沒到 1.0 版本。看上去很像 Ruby,但它是編譯語言,有靜態類型,而且很快!它像 Ruby 一樣支持 OOP,而且有很多很不錯的功能,如類型推斷、optinoal 類型、用于并發的 CSP 和編譯時宏,有點像 Golang 的 codegen,但它的編譯器本身就支持。Crystal 有幾個新的 Web 框架,比如 Lucky 和 Amber。還有 Kemal,雖然它是 Sinatra 的,但也可以用在 Crystal 上。還有 ORM,而且由于 Crystal 重構了 Ruby(用 Elixir 做了些修飾),你會發現它的 ORM 的 API 與 Ruby 幾乎相同,而且還有類型安全。這個非常重要!

由于這個語言還非常年輕,所以它還需要一段時間才能用于產品。我喜歡 Crystal 的并發,它能使用所有的核心,就像 Go 語言一樣,但 Crystal 不需要手動去 fork。我還喜歡它拋出異常會返回 result 類型,這樣錯誤處理可以明確進行了。我希望枚舉能有自己的值,這樣就能像 Swift 和 OCaml 一樣使用了。更好的編輯器支持也是必要的,自動完成、鼠標懸停類型提示都非常有用。此外,使用 Scry 可以使語言服務器的自動完成用于標準庫,但無法用于用戶自己的代碼。我還有點擔心 Crystal 不會到達發布 1.0 的那一天,但我真心希望它能發布。

可能你也看出來了,我希望未來的編程語言能夠吸取 Crystal、Go 和 ReasonML 的優點。我不確定我喜歡哪種,但我覺得這些都是候選。我覺得我只需要等待,看看這些語言在未來幾個月或幾年會變成什么樣子。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    19

    文章

    2973

    瀏覽量

    104905
  • 編程語言
    +關注

    關注

    10

    文章

    1947

    瀏覽量

    34848

原文標題:我為何要棄 Java、JavaScript、Ruby 于不顧,而去尋找新的編程語言?

文章出處:【微信號:mcuworld,微信公眾號:嵌入式資訊精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    gitee 支持的編程語言有哪些

    Gitee(碼云)是一個基于 Git 的代碼托管和研發協作平臺,類似于 GitHub 和 GitLab。它支持多種編程語言,允許開發者托管和管理代碼,進行版本控制,以及協作開發。以下是一些
    的頭像 發表于 01-06 09:50 ?90次閱讀

    Triton編譯器支持的編程語言

    Triton編譯器支持的編程語言主要包括以下幾種: 一、主要編程語言 Python :Triton編譯器通過Python接口提供了對Triton語言
    的頭像 發表于 12-24 17:33 ?393次閱讀

    如何選擇適合自己編程語言

    。 1. 確定目標和興趣 在選擇編程語言之前,首先要明確自己的目標和興趣。這包括你想要開發什么類型的項目,以及你對哪些技術領域感興趣。例如,如果你對網頁開發感興趣,那么學習HTML、C
    的頭像 發表于 11-15 09:37 ?485次閱讀

    編程語言的誤區與常見問題

    誤區一:編程語言的選擇 常見問題: 初學者在選擇編程語言時,往往會被市場上的熱門語言所吸引,而忽視了自己
    的頭像 發表于 11-15 09:35 ?342次閱讀

    MCU編程語言和開發環境介紹

    微控制器單元(Microcontroller Unit,簡稱MCU)是嵌入式系統的核心,廣泛應用于各種電子產品中。隨著技術的發展,MCU編程語言和開發環境也在不斷進步,以適應不同的應用需求。 1.
    的頭像 發表于 11-01 11:51 ?925次閱讀

    C語言與其他編程語言的比較

    C語言作為一種歷史悠久的編程語言,自其誕生以來,一直在軟件開發領域扮演著重要角色。它以其高效、靈活和可移植性強的特點,成為了系統級編程的首選語言
    的頭像 發表于 10-29 17:30 ?324次閱讀

    plc編程語言編程相關技巧有哪些

    PLC(可編程邏輯控制器)編程語言及相關編程技巧是工業自動化領域中不可或缺的知識。 一、PLC編程語言
    的頭像 發表于 10-21 16:56 ?401次閱讀

    vca810在VC小于-1.7v左右時開始自激怎么解決?

    vca810在VC小于-1.7v左右時開始自激其他范圍工作效果良好請問這是由什么產生的可以通過那些措施解決
    發表于 09-12 06:44

    plc編程st語言怎么編

    控制。下面是一個基本的ST語言編程指南,包括如何開始編寫一個簡單的程序。 1. 基本結構 ST程序通常包含變量聲明、函數(或過程)定義和主程序塊。 變量聲明 :在程序開始處聲明所有使用
    的頭像 發表于 08-25 10:05 ?1359次閱讀

    PLC的編程方式及編程語言

    在工業自動化領域,PLC(Programmable Logic Controller,可編程邏輯控制器)因其強大的控制功能和靈活的編程方式而得到了廣泛應用。PLC的編程方式和編程
    的頭像 發表于 06-27 14:08 ?847次閱讀

    abb工業機器人的編程語言是什么

    ABB工業機器人的編程語言主要是RAPID(Robot Application Programming Interface for Development),它是一種高級編程語言,專門
    的頭像 發表于 06-16 16:49 ?2684次閱讀

    PLC編程語言和C語言的區別

    在工業自動化和計算機編程領域中,PLC(可編程邏輯控制器)編程語言和C語言各自扮演著重要的角色。盡管兩者都是
    的頭像 發表于 06-14 17:11 ?3053次閱讀

    PLC常用編程語言有哪些

    在工業自動化領域,PLC(Programmable Logic Controller,可編程邏輯控制器)作為一種核心控制設備,其編程語言的選擇對于控制系統的設計、開發和維護具有重要影響。PLC的
    的頭像 發表于 06-14 16:58 ?1612次閱讀

    fpga用的是什么編程語言 fpga用什么語言開發

    fpga用的是什么編程語言 FPGA(現場可編程邏輯門陣列)主要使用的編程語言是硬件描述語言(H
    的頭像 發表于 03-14 17:09 ?3572次閱讀

    plc編程語言與c語言的聯系 c語言和PLC有什么區別

    PLC編程語言與C語言的聯系 PLC(可編程邏輯控制器)是一種針對自動化控制系統的特殊計算機。PLC編程
    的頭像 發表于 02-05 14:21 ?4280次閱讀
    主站蜘蛛池模板: 伊人天堂在线| 亚洲最大的黄色网址| 99涩涩| avtt亚洲一区中文字幕| 色噜噜人体337p人体| 久久婷婷婷| 真人实干一级毛片aa免费| 亚洲综合婷婷| 特级aaa毛片| 欧美一区二区影院| 久久精品视频免费播放| 国产精品久久久久久久久| cum4k在线| 久青草国产高清在线视频| 久久偷窥视频| 国产婷婷色一区二区三区深爱网| 成人在线亚洲| 天天做天天爱天天爽天天综合| 美女久久久久久| 人人九九精| 看a网站| 特级全黄一级毛片免费| 欧美色乱| 9久久精品| 狠狠五月天| 午夜影音| 天天视频国产精品| 免费日本黄色| a毛片免费观看完整| 免费午夜视频| 欧洲妇女成人淫片aaa视频 | 国产yin乱大巴视频| 在线视频免费观看| 国产三级观看久久| 色之综合网| 精品国产香港三级| 午夜国产在线| 一级免费看片| 狠狠夜夜| 久久中文字幕一区二区| 四虎影院一级片|