【知乎】如何看待deepin推出中國(guó)首款信創(chuàng)生態(tài)自研IDE?
?如何看待deepin推出中國(guó)首款信創(chuàng)生態(tài)自研IDE?

圖靈的貓
給歲月以文明,給時(shí)代以AI | CDA I級(jí)持證人
這波是貼臉開(kāi)大,但不得不說(shuō),開(kāi)的好,就該打隔壁某些騙經(jīng)費(fèi)項(xiàng)目的臉。
說(shuō)回IDE本身——Deepin的倉(cāng)庫(kù)我之前是關(guān)注過(guò)的,社區(qū)里非?;钴S,開(kāi)放生態(tài)做的很不錯(cuò)。

雖然底層是用到了scintilla以及一些開(kāi)源部件,但deepin也做了很多本地化的適配和魔改,核心代碼是自己寫的——以任何社區(qū)的標(biāo)準(zhǔn)來(lái)看,它都屬于純純的自研。
就我使用過(guò)的版本來(lái)看,deepin-IDE除了包含IDE最基本的智能編輯器之外,還包括:
支持主流版本控制系統(tǒng)Git、SVN;
支持C++、C、java、python、javascript五大類常用編輯語(yǔ)言,支持常用構(gòu)建工具CMake、Maven、Ninja、Gradle等;
支持反向調(diào)試、實(shí)時(shí)性能分析工具
支持高可擴(kuò)展命令系統(tǒng)、工程管理、代碼版本管理集成、構(gòu)建管理、插件系統(tǒng)

以及一些比較新的IDE特性,比如代碼遷移、語(yǔ)義補(bǔ)全、語(yǔ)法高亮、重構(gòu)支持等。

東西這么好,為啥現(xiàn)在才端上來(lái)?
我查了下開(kāi)發(fā)日志和commit記錄,發(fā)現(xiàn)deepin-IDE 并不是突然冒出來(lái)的,而是悄咪咪的封閉開(kāi)發(fā)了很久——期間都不斷完善功能、攻克一些技術(shù)難題,只是因?yàn)檫€沒(méi)有達(dá)到非常完善的地步,所以一直捂著不對(duì)外(游戲科學(xué):”我彷佛聽(tīng)見(jiàn)有人在說(shuō)我“)。
IDE整體采用基于模塊化框架開(kāi)發(fā),支持 C/C++、Java、Python等多種編程語(yǔ)言,每一種開(kāi)發(fā)語(yǔ)言均是以插件的方式接入:

如上圖所示,帶顏色的模塊均和特定的語(yǔ)言相關(guān),對(duì)應(yīng)通信中間件用的是 LSP(Language Server Protocol)?語(yǔ)言服務(wù)協(xié)議,可以基于該協(xié)議實(shí)現(xiàn)語(yǔ)法高亮、符號(hào)樹、語(yǔ)法樹等功能;
調(diào)試相關(guān)的用的是 DAP(Debug Adapter Protocol) 調(diào)試適配協(xié)議,可以基于該協(xié)議實(shí)現(xiàn)被調(diào)試程序的啟動(dòng)、運(yùn)行、斷點(diǎn)命中、單步跳入跳出等常用調(diào)試功能(很常見(jiàn)的功能,但自研難度并不低)
為了進(jìn)一步提高擴(kuò)展性,前、后端均以插件方式實(shí)現(xiàn)。
在前端通過(guò)接入一個(gè)新的語(yǔ)言插件來(lái)實(shí)現(xiàn)新語(yǔ)言的擴(kuò)展,該插件用于實(shí)現(xiàn)語(yǔ)言相關(guān)的、特殊的業(yè)務(wù)邏輯,不用編寫全量的代碼,從而減輕了語(yǔ)言插件的代碼負(fù)擔(dān)。
在后端,通過(guò)插件方式可以更容易接入一個(gè)語(yǔ)言服務(wù)提供者。語(yǔ)言相關(guān)的頂層數(shù)據(jù)流圖如下:

開(kāi)發(fā)庫(kù)方面,Deepin官方是這么說(shuō)的:
操作系統(tǒng)已經(jīng)擁有了自己的 DTK(Development ToolKit)開(kāi)發(fā)套件,具備4個(gè)核心模塊、220+個(gè)類、2300+函數(shù)接口、11個(gè)輔助功能模塊、10+個(gè)擴(kuò)展接口模塊,已經(jīng)能夠滿足日常圖形應(yīng)用、業(yè)務(wù)應(yīng)用、系統(tǒng)定制應(yīng)用的開(kāi)發(fā)需求。
雖然跟VS Code這類老牌IDE還有一定差距,但畢竟剛起步,跟麒麟9000S一樣,自研水準(zhǔn)做到這樣已經(jīng)很不錯(cuò)的。從目前公開(kāi)的資料來(lái)看,Deepin 操作系統(tǒng)上自研的瀏覽器、音樂(lè)、郵件等 40 余款原生應(yīng)用全部使用 DTK 開(kāi)發(fā),說(shuō)明在開(kāi)發(fā)生態(tài)上已經(jīng)相對(duì)可用,并不是紙上談兵。
當(dāng)然,它目前的問(wèn)題也很多,除了官方自己調(diào)侃的”缺一個(gè)設(shè)計(jì)師“外,還有
文件描述符占用過(guò)多導(dǎo)致崩潰
存在部分翻譯缺失的問(wèn)題
底部交互區(qū)暫不支持多頁(yè)面
符號(hào)樹解析精度不高
等等問(wèn)題——但瑕不掩瑜,也感謝同行襯托,這個(gè)IDE目前顯得格外和藹可親,想來(lái)開(kāi)發(fā)者社區(qū)也會(huì)抱有更大的耐心,等待deepin逐漸迭代完善。
至于為什么直接開(kāi)源,他們自己也說(shuō)了,IDE能做出來(lái)是站在了“開(kāi)源”這個(gè)巨人的肩膀上,為了避免重復(fù)造輪子,采用了一些開(kāi)源終端組件、功能組件,所以希望更多開(kāi)發(fā)者加入進(jìn)來(lái),一起來(lái)完善這個(gè)IDE:
GitHub:?https://github.com/linuxdeepin/deepin-unioncode
Gitee:?https://gitee.com/deepin-community/deepin-unioncode
最后,現(xiàn)有的集成開(kāi)發(fā)環(huán)境存在不支持國(guó)產(chǎn)軟硬件適配、調(diào)試性能差等諸多問(wèn)題,加大了國(guó)產(chǎn)操作系統(tǒng)上應(yīng)用開(kāi)發(fā)的難度,阻礙了國(guó)產(chǎn)軟件發(fā)展?,F(xiàn)在的市場(chǎng)迫切需要一款自主可控的集成開(kāi)發(fā)環(huán)境,這也讓蛀蟲們有空可鉆,把真正需要的經(jīng)費(fèi)拿來(lái)中飽私囊,實(shí)際既沒(méi)有滿足需求,還對(duì)國(guó)產(chǎn)IDE的自研之路造成了毀滅性打擊。
我覺(jué)得deepin-IDE的路子能走通,才是最能說(shuō)明問(wèn)題的——我們國(guó)家從來(lái)不缺優(yōu)秀開(kāi)發(fā)者,只要腳踏實(shí)地去做事,一定會(huì)有人支持。雖然這套IDE現(xiàn)在還是個(gè)蹣跚學(xué)步的小孩,但未來(lái)隨著越來(lái)越多人的加入,社區(qū)逐漸壯大后,統(tǒng)一軟件開(kāi)發(fā)方式和開(kāi)發(fā)庫(kù),降低軟件開(kāi)發(fā)成本,最終解決集成開(kāi)發(fā)環(huán)境領(lǐng)域卡脖子問(wèn)題,可能就不再是個(gè)調(diào)侃了。
發(fā)布于 2023-09-05 21:03