如何使用多種程式語言而又不失理智

Bart Copeland發表於2018-11-29

多語言程式設計環境是一把雙刃劍,既帶來好處,也帶來可能威脅組織的複雜性。

如今,隨著各種不同的程式語言的出現,許多組織已經變成了數字多語種組織digital polyglots。開源開啟了一個語言和技術堆疊的世界,開發人員可以使用這些語言和技術堆疊來完成他們的任務,包括開發、支援過時的和現代的軟體應用。

與那些只說母語的人相比,通曉多種語言的人可以與數百萬人交談。在軟體環境中,開發人員不會引入新的語言來達到特定的目的,也不會更好地交流。一些語言對於一項任務來說很棒,但是對於另一項任務來說卻不行,因此使用多種程式語言可以讓開發人員使用合適的工具來完成這項任務。這樣,所有的開發都是多語種的;這只是野獸的本性。

多語種環境的建立通常是漸進的和情景化的。例如,當一家企業收購一家公司時,它就承擔了該公司的技術堆疊 —— 包括其程式語言。或者,隨著技術領導的改變,新的領導者可能會將不同的技術納入其中。技術也有過時的時候,隨著時間的推移,增加了組織必須維護的程式語言和技術的數量。

多語言環境對企業來說是一把雙刃劍,既帶來好處,也帶來複雜性和挑戰。最終,如果這種情況得不到控制,多語言將會扼殺你的企業。

棘手的技術繞口令

如果有多種不同的技術 —— 程式語言、過時的工具和新興的技術堆疊 —— 就有複雜性。工程師團隊花更多的時間努力改進程式語言,包括許可證、安全性和依賴性。與此同時,管理層缺乏對程式碼合規性的監督,無法衡量風險。

發生的情況是,企業具有不同程度的程式語言質量和工具支援的高度可變性。當你需要和十幾個人一起工作時,很難成為一種語言的專家。一個能流利地說法語和義大利語的人和一個能用八種語言串成幾個句子的人在技能水平上有很大差異。開發人員和程式語言也是如此。

隨著更多程式語言的加入,困難只會增加,導致數字巴別塔的出現。

答案是不要拿走開發人員工作所需的工具。新增新的程式語言可以建立他們的技能基礎,併為他們提供合適的裝置來完成他們的工作。所以,你想對你的開發者說“是”,但是隨著越來越多的程式語言被新增到企業中,它們會拖累你的軟體開發生命週期(SDLC)。在規模上,所有這些語言和工具都可能扼殺企業。

企業應注意三個主要問題:

  1. 可見性: 團隊聚在一起執行專案,然後解散。應用程式已經發布,但從未更新 —— 為什麼要修復那些沒有被破壞的東西?因此,當發現一個關鍵漏洞時,企業可能無法瞭解哪些應用程式受到影響,這些應用程式包含哪些庫,甚至無法瞭解它們是用什麼語言構建的。這可能導致成本高昂的“勘探專案”,以確保漏洞得到適當解決。

  2. 更新或編碼: 一些企業將更新和修復功能集中在一個團隊中。其他人要求每個“比薩團隊”管理自己的開發工具。無論是哪種情況,工程團隊和管理層都要付出機會成本:這些團隊沒有編碼新特性,而是不斷更新和修復開源工具中的庫,因為它們移動得如此之快。

  3. 重新發明輪子: 由於程式碼依賴性和庫版本不斷更新,當發現漏洞時,與應用程式原始版本相關聯的工件可能不再可用。因此,許多開發週期都被浪費在試圖重新建立一個可以修復漏洞的環境上。

將你組織中的每種程式語言乘以這三個問題,開始時被認為是分子一樣小的東西突然看起來像珠穆朗瑪峰。就像登山者一樣,沒有合適的裝置和工具,你將無法生存。

找到你的羅塞塔石碑

一個全面的解決方案可以滿足 SDLC 中企業及其個人利益相關者的需求。企業可以使用以下最佳實踐建立解決方案:

  1. 監控生產中執行的程式碼,並根據應用程式中使用的標記元件(例如,常見漏洞和暴露元件)的風險做出響應。
  2. 定期接收更新以保持程式碼的最新和無錯誤。
  3. 使用商業開源支援來獲得程式語言版本和平臺的幫助,這些版本和平臺已經接近尾聲,並且不受社群支援。
  4. 標準化整個企業中的特定程式語言構建,以實現跨團隊的一致環境,並最大限度地減少依賴性。
  5. 根據相關性設定何時觸發更新、警報或其他型別事件的閾值。
  6. 為您的包管理建立一個單一的可信來源;這可能需要知識淵博的技術提供商的幫助。
  7. 根據您的特定標準,只使用您需要的軟體包獲得較小的構建版本。

使用這些最佳實踐,開發人員可以最大限度地利用他們的時間為企業創造更多價值,而不是執行基本的工具或構建工程任務。這將在軟體開發生命週期(SDLC)的所有環境中建立程式碼一致性。由於維護程式語言和軟體包分發所需的資源更少,這也將提高效率和節約成本。這種新的操作方式將使技術人員和管理人員的生活更加輕鬆。


via: https://opensource.com/article/18/11/multiple-programming-languages

作者:Bart Copeland 選題:lujun9972 譯者:heguangzhi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

相關文章