javascript - 请教关于多语言程序设计的问题?
有经验的前辈们劝解各种问哪个语言最厉害
的新手时常说,一个系统是用多种语言,让各语言都放在他们擅长的领域才是最好的。同时其他场合也有前辈常说,因为PHP
易部署,开发效率高,所以用来负责处理业务逻辑,而一些对分布式
,并行
等等的用java
实现,涉及数据处理
等用python
实现。但都没用提及具体设计的方法。
所以在这里问一下,怎么用多种语言设计一个系统?
根据我个人浅薄的知识,大概想出两种方案。
利用
C/C++
做底层的拓展,把各个用不同语言写的模块连接在一起。但直觉告诉我这样不科学。把各个不同语言的模块都设计成C/S的模式,模块间用socket交互,但这样感觉效率不高,而且如果所有模块都可以在同一机器上部署,也要设计成C/S的模式吗?
已经问过度娘,实在找不到需要的答案,才来这里提问,希望有相关经验的前辈分享一下经验,如果能给出相关资料更加好,十分感谢!
回复内容:
有经验的前辈们劝解各种问哪个语言最厉害
的新手时常说,一个系统是用多种语言,让各语言都放在他们擅长的领域才是最好的。同时其他场合也有前辈常说,因为PHP
易部署,开发效率高,所以用来负责处理业务逻辑,而一些对分布式
,并行
等等的用java
实现,涉及数据处理
等用python
实现。但都没用提及具体设计的方法。
所以在这里问一下,怎么用多种语言设计一个系统?
根据我个人浅薄的知识,大概想出两种方案。
利用
C/C++
做底层的拓展,把各个用不同语言写的模块连接在一起。但直觉告诉我这样不科学。把各个不同语言的模块都设计成C/S的模式,模块间用socket交互,但这样感觉效率不高,而且如果所有模块都可以在同一机器上部署,也要设计成C/S的模式吗?
已经问过度娘,实在找不到需要的答案,才来这里提问,希望有相关经验的前辈分享一下经验,如果能给出相关资料更加好,十分感谢!
thrift或者restful是常规型的多语言胶水方案
跨语言常见的有两种方式。一种是基于 SOA 架构的,服务可以由多种语言分别编写,但是接口统一。客户端也可以是多种语言编写的,只需要调用统一的服务接口。典型的例子就是各种开发接口,比如微博、微信等开发接口就是这类。在程序里调用SQL其实也可以算在这类里面。
另外一种方式就是常见的提供二次开发脚本的方式,在程序中提供一套 API 由客户按此 API 开发插件之类的东西,比如 Office 里面的 VBA。
其实最常见的多语言配合开发其实是网页,一般至少由 HTML、CSS 和 JavaScript 来配合开发,就算你不把 CSS 当语言,HTML 和 JavaScript 总是语言吧,何况还有 LESS 之类的 CSS 预处理语言。
在以前 C/C++ 里嵌汇编也是常有的事情,只是现在不多见了。
不要为了使用多种语言而使用多种语言,多种语言之前的配合也是需要成本的。有时候如果能用一种语言解决,也不一定非要用多种语言来各干各自擅长的事情了。
关键看你做什么系统,如果你比较了解各个语言的特点和现有的类库,那你大概就知道会结合你的业务做如何选择
1) C++ 追求性能极致的必须用C++,性能无出其右,缺点是开发效率低,别说什么java比C++快,那是基于C++程序员水平不行并且没有优化的前提下,试用领域: 图形图像处理、游戏后台开发,原因:没有GC,没有延迟,试想你做一个游戏后台服务器,服务器做GC导致卡顿了几十毫秒在客户端是一个什么样的糟糕的体验,目前很多做手游的也在用java,但是手游和端游是2回事,呵呵。
2) java 你如果做web或其他的对延迟没有那么苛刻的要求的,这个是比较好的选择,性能上接近c++,开发效率又没有那么低,一大堆类库和框架可以用,不论是web还是大数据,java都是个不错的选择,即使你不喜欢java,还有一大堆基于jvm的语言给你选择,对于企业来说,招一个能干活的java比招一个差不多的C++容易很多,培训几个月就能开始写java了,这点C++是绝对做不到的,很多写了半年多C++的还搞不清什么是编译期,什么是运行期。
3) 脚本,如PHP, python啥的脚本语言,糙快好省,网上一堆例子,巴拉巴拉就能写个最小粒度的能跑起来的例子了,小公司的不二之选,而且python也算是一个胶水语言,既有jython这种JVM上的, 也有.Net的实现,语法也非常容易上手,所以用python的也很多。
4) 其他的,如C#,Delphi等,不做评论了。
计划赶不上变化,我觉得楼主想的太多了。实际上没有必要这么细致,首先来说多语言共同部署,你的开发人员成本就马上增大了,然后协调成本,维护成本也相应增加,得不偿失。其实完全可以用一种语言进行先期开发,例如php这种易于部署而且比较灵活的东西,项目成型之后如果在实际使用中发现具体问题,且php无法提供好的方案时,可以再有针对性的使用其它语言解决问题。此时由于业务逻辑等已经稳定,重构的成本就降低了。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

MySQL 有免費的社區版和收費的企業版。社區版可免費使用和修改,但支持有限,適合穩定性要求不高、技術能力強的應用。企業版提供全面商業支持,適合需要穩定可靠、高性能數據庫且願意為支持買單的應用。選擇版本時考慮的因素包括應用關鍵性、預算和技術技能。沒有完美的選項,只有最合適的方案,需根據具體情況謹慎選擇。

MySQL數據庫性能優化指南在資源密集型應用中,MySQL數據庫扮演著至關重要的角色,負責管理海量事務。然而,隨著應用規模的擴大,數據庫性能瓶頸往往成為製約因素。本文將探討一系列行之有效的MySQL性能優化策略,確保您的應用在高負載下依然保持高效響應。我們將結合實際案例,深入講解索引、查詢優化、數據庫設計以及緩存等關鍵技術。 1.數據庫架構設計優化合理的數據庫架構是MySQL性能優化的基石。以下是一些核心原則:選擇合適的數據類型選擇最小的、符合需求的數據類型,既能節省存儲空間,又能提升數據處理速度

MySQL 可在無需網絡連接的情況下運行,進行基本的數據存儲和管理。但是,對於與其他系統交互、遠程訪問或使用高級功能(如復制和集群)的情況,則需要網絡連接。此外,安全措施(如防火牆)、性能優化(選擇合適的網絡連接)和數據備份對於連接到互聯網的 MySQL 數據庫至關重要。

對於生產環境,通常需要一台服務器來運行 MySQL,原因包括性能、可靠性、安全性和可擴展性。服務器通常擁有更強大的硬件、冗餘配置和更嚴格的安全措施。對於小型、低負載應用,可在本地機器運行 MySQL,但需謹慎考慮資源消耗、安全風險和維護成本。如需更高的可靠性和安全性,應將 MySQL 部署到雲服務器或其他服務器上。選擇合適的服務器配置需要根據應用負載和數據量進行評估。

直接通過 Navicat 查看 MongoDB 密碼是不可能的,因為它以哈希值形式存儲。取回丟失密碼的方法:1. 重置密碼;2. 檢查配置文件(可能包含哈希值);3. 檢查代碼(可能硬編碼密碼)。

HadiDB:輕量級、高水平可擴展的Python數據庫HadiDB(hadidb)是一個用Python編寫的輕量級數據庫,具備高度水平的可擴展性。安裝HadiDB使用pip安裝:pipinstallhadidb用戶管理創建用戶:createuser()方法創建一個新用戶。 authentication()方法驗證用戶身份。 fromhadidb.operationimportuseruser_obj=user("admin","admin")user_obj.

在 MySQL 數據庫中存儲圖像可行,但並非最佳實踐。 MySQL 存儲圖像時使用 BLOB 類型,但會導致數據庫體積膨脹、查詢速度下降和備份複雜。更佳方案是將圖像存儲在文件系統上,並在數據庫中僅存儲圖片路徑,以優化查詢性能和數據庫體積。

Navicat 使用 AES 加密算法加密密碼,並採用動態密鑰機制來保護密碼,但並非萬無一失。為了加強安全性,建議設置複雜密碼,定期修改,保持系統和軟件更新,以及防範惡意軟件。
