typescript vs go vs rust

typescript 后端選型:

Express &Typescript &trpc 廣泛使用,靈活,快速,穩定
Nestjs 企業級,標準化,像java ,依賴注入,
Hono , web standards framework. Support for any JavaScript runtime.


思考:

最近我和幾個用Go和Java/Kotlin寫后端的開發者聊過。他們說TypeScript差遠了,Go和Java/Kotlin才是真正的現代后端語言。但是當我問到具體原因時,他們卻很難說出什么具體的來。他們聲稱,例如,這些語言的工具比TypeScript要好。

我過去在前端編程(React)中大量使用過TypeScript,并沒有用它做過很多后端開發。但我認為TypeScript 是一門強大的語言,它非常靈活,而且有類型系統。我對后端工具不太熟悉,所以他們在這點上可能是對的。

但是當涉及到微服務時,我看不出使用Go/Kotlin比TypeScript有什么優勢。你只需要用一個Docker容器,做一個Express的endpoint,就完事了。

另外,我認為在后端使用TypeScript的優勢在于,你可以用同一種語言做前后端,這對小型公司/初創公司特別有用,因為它們通常擁有更多全棧開發者,而不是嚴格區分前后端開發者。


TypeScript本身比前端更適合后端領域,因為你的類型更多的是圍繞領域邏輯而不是DOM。所以從這個意義上說,它真的很好。

很多人吹捧Go,我在一些大量使用Go的地方工作過,但我個人始終無法接受它在美學上的丑陋。我幾乎在各個方面都更喜歡Rust。

這里有很多關于性能的討論,但是取決于你的領域,你可能不會注意到區別。如果你使用的是現代基礎設施,例如無服務器架構,那么TypeScript在很多用例中實際上性能更好——例如HTTP API。如果你受限于更傳統的選項,例如Docker,那么TypeScript可能不是最佳選擇。

如果你已經熟練掌握了TS和TS工具,那么在后端使用它完全沒問題。但我個人討厭Express和其他Node生態系統的框架,所以我需要補充一點,如果我不能使用Lambda/無服務器生態系統,我會避免使用TS。

TS比Java/C#最大的優勢在于它默認情況下不是面向對象的語言。當然,你可以將TS與OOP一起使用,但是能夠自由地編寫操作數據的自由函數非常令人解放。我不再想把所有東西都塞進一個類里了。

還有其他優點。例如,我們運行微服務和微前端。對于使用全棧TypeScript的團隊來說,這意味著他們的服務可以是一個小型單體倉庫,其后端和前端在同一個倉庫中共享API契約類型。我想,那些在后端使用C#的團隊必須做其他事情,例如契約測試。

然后還有測試框架、ESLint、IDE配置等等。能夠停留在相同的工具集中是很好的。

老實說,對于任何需要企業級規模并需要能夠快速構建和維護的項目,TS都是我的后端默認選項。但如果我做的是計算密集型的工作,我會選擇Rust——這幾乎總是后臺作業,所以我的API幾乎總是用TS。


是的!在無服務器環境中使用 TS 太棒了,fp-ts TaskEither 真的非常適合那些可能以奇奇怪怪的方式失敗的異步 API。


對我來說,關鍵在于編譯時間和運行時間。我們必須記住,JS嚴格來說不是強類型語言,所以在你的程序編譯掉那些類型之后,如果出現問題,你該怎么辦?我更傾向于對后端密集型的東西,比如支付系統,使用強類型語言。
對我來說,另一個重要的事情是企業級應用的包,特別是像支付系統這樣高風險的東西。我更喜歡那些內置庫更多,而且經過多年驗證的庫,而不是一些JS開源庫。尤其是在考慮安全性的情況下。JS的依賴性簡直是地獄。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/85610.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/85610.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/85610.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

OpenGL和OpenGL ES區別

OpenGL(Open Graphics Library)和OpenGL ES(OpenGL for Embedded Systems)都是用于圖形渲染的API,但它們的目標平臺和設計定位有所不同。 1. 目標平臺 OpenGL 主要用于桌面平臺(如Windows、macOS、Linux&a…

PyTorch 入門之官方文檔學習筆記(一)

目錄 1 張量 1)張量的初始化和屬性 2)張量操作 3)使用 NumPy 進行橋接 2 torch.autograd 1)背景 2)在 PyTorch 中的使用 3)Autograd 的微分機制 4)計算圖原理 5)從計算圖中…

King’s LIMS 系統引領汽車檢測實驗室數字化轉型

隨著汽車保有量的持續攀升和車齡的增長,消費者對汽車的需求已悄然轉變,從最初對外觀和性能的追求,逐漸深化為對安全性、可靠性、耐久性、性能與舒適性以及智能化功能的全方位關注。這無疑讓汽車檢測行業在保障車輛質量、滿足市場需求方面肩負…

Neo4j常見語句-merge

merge用法&#xff1a;MERGE 是 Neo4j 中一個強大的操作符&#xff0c;用于確保圖中存在特定的節點或關系。它的核心邏輯是&#xff1a;如果目標存在則匹配&#xff0c;不存在則創建 基本語法與邏輯&#xff1a; MERGE <pattern> [ON CREATE <create_clause>] //…

Mem0多級記憶實現機制詳解

在人工智能交互場景中,記憶能力是實現個性化服務與智能決策的關鍵。Mem0 通過設計分層記憶架構,實現了對用戶、會話和智能體狀態的多級管理。各層級記憶既相互獨立存儲,又通過精密的關聯機制協同運作,確保在不同場景下都能提供精準的上下文支持,顯著提升 AI 交互的智能性與…

Python 爬蟲入門 Day 5 - 使用 XPath 進行網頁解析(lxml + XPath)

Python 第二階段 - 爬蟲入門 &#x1f3af; 今日目標 掌握 XPath 的基本語法使用 lxml.etree 解析 HTML&#xff0c;提取數據與 BeautifulSoup 比較&#xff1a;誰更強&#xff1f; &#x1f4d8; 學習內容詳解 ? 安裝依賴 pip install lxml&#x1f9e9; XPath 簡介 XPa…

變幻莫測:CoreData 中 Transformable 類型面面俱到(六)

概述 各位似禿似不禿小碼農們都知道&#xff0c;在蘋果眾多開發平臺中 CoreData 無疑是那個最簡潔、擁有“官方認證”且最具兼容性的數據庫框架。使用它可以讓我們非常方便的搭建出 App 所需要的持久存儲體系。 不過&#xff0c;大家是否知道在 CoreData 中還存在一個 Transfo…

Vuex(一) —— 集中式的狀態管理倉庫

目錄 Vue組件間通信方式回顧 組件內的狀態管理流程組件間通信方式 父組件給子組件傳值 (最簡單的一種方式)子組件給父組件傳值不相關組件之間傳值其他常見方式($ref) 簡易的狀態管理方案 上面組件間通信方式的問題集中式的狀態管理方案 Vuex 什么是Vuex?什么情況下使用Vuex?…

操作系統---內存管理上

文章目錄 1. 內存的基礎知識1.1 什么是內存&#xff0c;有何作用1.2 進程運行的基本原理1.2.1 指令的工作原理1.2.2 邏輯地址 VS 物理地址 1.3 如何實現地址轉換&#xff08;邏輯 -> 物理&#xff09;1.3.1 絕對裝入1.3.2 可重定位裝入&#xff08;靜態重定位&#xff09;1.…

醫學圖像處理期末復習

目錄 考試范圍第1章 緒論1.1 數字圖像處理的概念1.2 數字圖像處理的應用領域1、醫學領域2、其他領域 1.3 數字圖像處理基礎1.4 數字圖像基礎運算 第2章 醫學圖像灰度變換與空間濾波2.1 醫學圖像灰度變換線性灰度變換非線性灰度變換 2.2 直方圖均衡化√2.3 空間平滑濾波線性空間…

類圖:軟件世界的“建筑藍圖”

本文來自「大千AI助手」技術實戰系列&#xff0c;專注用真話講技術&#xff0c;拒絕過度包裝。 類圖&#xff08;Class Diagram&#xff09;&#xff1a;軟件世界的“建筑藍圖” 類圖&#xff08;Class Diagram&#xff09;是統一建模語言&#xff08;UML&#xff09; 中最重要…

利用DevEco Studio對RK3588的HiHopesOS-4.1.110(OpenHarmony)進行Qt程序編寫

文章目錄 熱身準備添加Qt庫運行qml程序 熱身 可以先看我這篇文章【DevEco Studio中使用Qt&#xff0c;編寫HarmonyOS程序】 準備 板子的主要信息 目前由于系統版本&#xff08;API 11&#xff09;及其他原因&#xff0c;只能用4.1版本的DevEcoStudio來編寫&#xff0c;更高…

設計模式精講 Day 5:原型模式(Prototype Pattern)

【設計模式精講 Day 5】原型模式&#xff08;Prototype Pattern&#xff09; 文章內容 在“設計模式精講”系列的第5天&#xff0c;我們將深入講解原型模式&#xff08;Prototype Pattern&#xff09;。作為創建型設計模式之一&#xff0c;原型模式通過復制已有對象來創建新對…

深度學習——第2章習題2-1分析為什么平方損失函數不適用于分類問題

深度學習——第2章習題2-1 《神經網絡與深度學習》——邱錫鵬 2-1 分析為什么平方損失函數不適用于分類問題。 平方損失函數&#xff08;Quadratic Loss Function&#xff09;經常用在預測標簽y為實數值的任務中&#xff0c;定義為 L ( y , f ( x ; θ ) ) 1 2 ( y ? f (…

【Linux】運行腳本后打屏同時保存到本地

命令&#xff1a; sh run.sh 2>&1 | tee output.log sh run.sh 2>&1 | tee output_$(date "%Y%m%d%H%M").log作用&#xff1a;運行腳本&#xff0c;并同時將輸出&#xff08;包括標準輸出和錯誤輸出&#xff09;顯示到終端&#xff0c;并保存到文件中…

Spark 在小眾日常場景中的實戰應用:從小店數據到社區活動

Spark 在小眾日常場景中的實戰應用&#xff1a;從小店數據到社區活動? 提起 Spark&#xff0c;大家往往會聯想到大型互聯網公司的數據處理、金融行業的復雜分析。但實際上&#xff0c;Spark 在許多小眾、貼近生活的場景中也能大顯身手。結合學習與實踐&#xff0c;我探索了 S…

mysql 執行計劃 explain命令 詳解

explain id &#xff1a;select查詢的序列號&#xff0c;包含一組數字&#xff0c;表示查詢中執行select子句或操作表的順序select_type&#xff1a;查詢類型 或者是 其他操作類型table &#xff1a;正在訪問哪個表partitions &#xff1a;匹配的分區type &#xff1a;訪問的類…

讓大模型“更懂人話”:對齊訓練(RLHF DPO)全流程實戰解析

網羅開發 &#xff08;小紅書、快手、視頻號同名&#xff09; 大家好&#xff0c;我是 展菲&#xff0c;目前在上市企業從事人工智能項目研發管理工作&#xff0c;平時熱衷于分享各種編程領域的軟硬技能知識以及前沿技術&#xff0c;包括iOS、前端、Harmony OS、Java、Python等…

GO 原子操作面試題及參考答案

Go 的 sync/atomic 包和 sync.Mutex 的根本區別是什么&#xff1f; Go 語言中的 sync/atomic 包和 sync.Mutex 都用于處理并發編程中的同步問題&#xff0c;但它們的實現機制、應用場景和性能特性存在根本差異。理解這些差異對于編寫高效、安全的并發代碼至關重要。 sync/atomi…

MATLAB 山脊圖繪制全解析:從數據生成到可視化進階

一、引言&#xff1a;當數據分布擁有「層次感」—— 山脊圖的魅力? 在數據可視化的世界里&#xff0c;我們常常需要同時展示多個分布的形態差異。傳統的重疊密度圖雖然能呈現整體趨勢&#xff0c;但當分布數量較多時&#xff0c;曲線交疊會讓畫面變得雜亂。這時候&#xff0c…