為什么要學習更多的編程語言?同時認為 Go 是最佳
page head
我與編程語言的開放式關系
迄今為止我已經編程四年了。從開始的基于 C# 的游戲開發,然后使用 python 處理機器學習。學習使用 Javascript 以及 Typescript 做前端工作。后來想要做移動端應用,所以又學習了 Ionic,React,React Naive。為了達到更好的后端性能,Go 是一個最佳選擇。隨著 Flutter 的誕生,所以我學習了 Dart 來編寫更多的移動應用。我從一些大學課堂上學習 Java,當我在 Facebook 工作時學習使用 PHP。
我不敢說在這些語言中我稱得上專家,但是我比其他人有更多的關于語言和框架的經驗。為什么我熱衷于學習編程語言?因為我是容易被誘惑的,當我看到一些語言中的一些優異的特性時,我就忍不住去學習它。
page middle
那么我為什么讓你做同樣的事呢?因為在你不了解有哪些工具,這些工具具體是做什么之前,你也不可能去選擇正確的工具。選擇正確的工具和武器可以幫助你贏得大部分的戰爭。我個人發現這一點在生活中十分有用。選擇合適的語言,可以極大地減少解決問題所需要付出的努力。
解決真實世界中的問題
我來舉一個真實的例子,使用合適的語言可以節省很多時間,而只關注問題的主要部分。幾個月前,我選購了一個藍牙耳機 AirPods。可以說是蘋果發布的最好的技術了。我嘗試了很多藍牙耳機,但是沒有一個像這個一樣方便。但是,主要問題是我個人使用的是 Windows 筆記本以及 Android 手機。AirPods 可以自動連接到我的手機,但是筆記本卻不是這樣。我每次必須設置并且手動連接,這是一個痛苦的過程。因為我一直想在手機以及筆記本電腦間切換。我需要一個可以將 AirPods 一鍵連接到筆記本的快捷按鈕。
我的第一個想法是使用 python, 因為我確信可以找控制電腦藍牙的庫。但并不是這樣,沒有一個維護良好的庫可以完成這個工作。下一個選擇是 Node.js。后來我發現了一個可以控制藍牙的 Javascript 庫。通過運行以下腳本,我可以將 AirPods 立即連接到我的電腦。
- // App.js
- const device = new bluetooth.DeviceINQ();
- const airpodsAddress = "18:81:0E:B2:6B:A6"
- const airpodsName = "Akshat's Airpods";
- device.findSerialPortChannel(airpodsAddress, function (channel) {
- // make bluetooth connect to remote device
- bluetooth.connect(airpodsAddress, channel, function (err, connection) {
- if (err) return console.error(err);
- console.log('YAY! Airpods Connected');
- // Don't need a communication stream between the two
- // so let's just exit the stream.
- setTimeout(() => process.exit(0), 5000);
- });
- });
現在我需要一個可以運行該腳本的一個快捷方式。我以為可以直接將腳本放在任務欄,但是 windows 不允許任何非可執行文件放在工具欄。我寫了一個批處理文件,希望掛載在任務欄,但還是失敗了。那么什么語言可以創建一個可執行文件呢? Golang 是一個不錯的選擇,我寫了一個腳本來運行 Node.js 腳本.
- // main.go
- package main
- import (
- "fmt"
- "os/exec"
- )
- func main() {
- output, err := exec.Command("npm", "start").CombinedOutput()
- if err != nil {
- fmt.Println(err.Error())
- }
- fmt.Println(string(output))
- }
在任務欄放置該可執行文件的快捷方式,設置圖標。太棒了!一個便于訪問的按鈕,可以讓我很快的連接到 AirPods。
我知道通過使用 C# 我也可以獲得相同的結果。但我不想在我的筆記本電腦上安裝 Visual Studio 這樣一個怪異的 IDE。我還可以使用 nexe 等其他工具將我的 Nodejs 應用程序打包到 exe 中,但這只是不必要的工作。 這只是一個簡單的例子,說明了解不同的工具如何幫助您輕松解決問題。如果我所知道的只是 Python 或 Java 或 Go,那將是一件非常困難的事情。我有更多的例子,知道使用正確的語言,大大減少了解決問題所需的時間和精力。
重點
-
學習不同語言真的很有趣。此外,它還可以擴展您的視野,讓您置身于舒適區之外。
-
學習更多語言的另一個原因是訓練自己思考一種語言或范式之外的問題。面向對象編程很棒,但也需要了解功能編程或程序編程。一旦你可以訓練自己去思考特定語言之外的編程,你將不再受限于它的限制。
-
你學習的第一語言將是困難的,第二語言將更難,但在那之后就是信手拈來了。這只是語法變化和一些陷阱的避免。然后,您可以了解該語言的特定庫和框架。
-
我能想到學習更多語言的另一個令人信服的理由是 WASM。 Web Assembly 將允許您在瀏覽器上運行所需的任何語言。這意味著如果您學習更快速的語言(如 C ++),可以充分利用瀏覽器的快速性并創建像 https://squoosh.app/ 這樣的精彩內容。
最后的思考
-
你是一個Javascript或python開發人員。我強烈建議學習低級語言。你可以直接學習 C 或 C ++,但我會建議 Golang。您可以輕松獲得類似 C++ 的速度,而不會受到 C 系列的挫折。
-
對于所有低級語言開發人員,請嘗試使用 python 或 Javascript。如果您還沒有嘗試過這些語言,那么您就錯過了。 Python 就像偽代碼,現在 Javascript 無處不在。這兩種語言都可以讓您使用低級語言。您可以為 Node.js 和 Python 編寫C ++模塊。相信我,它會改變你的生活。
我希望我已經說服你與你的主要語言建立開放的關系,并獲得一些新的令人興奮的經歷。 如果你知道兩種截然不同的語言,到目前為止你的經驗是什么?您認為它對您的職業生涯有何幫助?請在評論中告訴我。