2012-05-14 38 views
0

經過一段時間瀏覽大項目的源代碼,特別是像this這樣的應用程序服務器,我明白這些項目並不是通過一種語言開發的。他們中的許多人使用python作爲輔助語言。爲什麼在應用程序服務器項目中使用多種語言?

現在我有四個問題:

  1. 爲什麼使用一種以上的語言嗎?
  2. 爲什麼python經常用於中學?
  3. 爲什麼python不用於開發項目的所有部分,他們仍然在使用c/C++?
  4. 哪些項目的部分應該用python開發,哪些部分項目使用c/C++?

回答

0
  1. 有時python不夠好。

    處理計算機視覺,圖像或聲音處理,計算數據的音調並不是真正的Python擅長什麼。像C或C++這樣的其他語言在這些領域非常擅長。

  2. 支持您的主要語言是java,並且您想將其他語言粘合到一個項目中。那就是我們需要Python的地方。 Python是衆所周知的膠水語言。您可以使用ctype,SWIG,Jython,ironPython或其他方法來綁定多種語言。

  3. 想我在1

  4. 極品飛車回答了這個問題。去C或C++。更多關注生產力,請使用Python。

2

軟硬層

編程語言設計往往以「高層次」的特點,這在速度爲代價提高程序員的工作效率,而「低層次」的特點,這需要之間進行權衡很多程序員的努力,但產生非常快的代碼。

因此有時很有意義的使用兩種語言的一個項目:

  1. 寫這是很容易編寫和維護的表現,高級語言90%的代碼。
  2. 編寫的10%性能至關重要代碼採用較難編寫的低級語言,但允許進行全面優化。

c2wiki稱此爲HardAndSoftLayers模式:

憑藉優化的第一條規則的,繼續前進,編寫大部分代碼中,你可以找到的最高級別的語言。

憑藉優化的第三條規則,必要時使用分析器並找到程序的慢速部分。拿這些部分,用低級語言寫下來。

作爲參考,rules of optimisation是:

  1. 首先規則優化中 - 不要。
  2. 第二優化規則 - 不要 ... 還沒有。
  3. 檔案之前優化
1

規則很簡單:基於開發人員選擇的語言(S)以下規定 - 或多或少:

  1. 他們與它熟悉
  2. 您可以輕鬆完成使用該語言的任務
  3. 如何適合lan瓜哥具體任務

今天,大多數在這個語言環境所做的發展是巨大的解決方案,其中不同的組件需要溝通,交換數據或簡單地做它由多於一個步驟的工作。用Python這樣的語言編寫通信/數據解釋/任何包裝必要部分比較容易,然後用一些較低級別的語言完成實時和快速的需要工作,而這些語言直接編譯而不需要口譯員。

讓我們深入一點。

  1. 開發人員對編程語言的熟悉程度取決於每個開發人員的背景。如果他們得到自由選擇,顯然他們會選擇他們最熟悉的語言,除非有別人的遊說......管理鏈中通常較高。 Python不一定是選擇的語言,python只是一個易於使用和學習的語言,非常適合大多數任務。我們的項目中沒有python,只有大量的ruby代碼。因爲當時主要的開發者喜歡紅寶石,所以我們一直堅持下去。

  2. 如果你知道一種以上的編程語言,你知道他們每個人都以不同的方式做同樣的事情。例如,創建套接字,連接到服務器,讀取東西並打印出來只是Erlang代碼的幾行代碼,但在C++中執行它需要很多工作(例如...)你有一項任務,你知道如何用你要堅持的特定語言輕鬆解決。人們很懶惰,除非需要,否則他們不一定會學習新東西。

  3. 很顯然你不打算在python中編寫設備驅動程序,使用java創建完整的web服務要比使用普通的C更容易,但你仍然需要解決方案的一部分硬件密切的東西。當你有一項任務時,你要仔細衡量要求和含義,並明智地選擇語言,因爲它會永久堅持下去。

0

沒有提及您發送的項目,我會給你我爲什麼在我工作的公司,至於爲什麼我們在我們的項目中使用Python經常50C。

首先,我們沒有涉及到軟件解決方案本身的python代碼。所有的python代碼都涉及協助開發,機器設置,用於測試的通用框架工具部署以及大量的代碼生成。

  1. 爲什麼使用多種語言?

當我們查看所有企業級解決方案或大規模實施時,我們所從事的項目只有一種語言。

這主要是由於我們的層級是使用各種語言編寫的,這些語言分別在各個級別提供最佳性能和可用性。例如,用於快速核心後端服務的C++和用於快速開發的C#.NET,併爲前端提供良好的用戶界面。

  1. 爲什麼python常用於中學?

就個人而言,除了對我的原因如上所述,我們不使用Python的「常繼發」。我們使用C++/C#作爲最常見的對,但取決於平臺,可能是其他對。

  1. 爲什麼Python是不是用來開發項目的所有部分,他們仍然是使用C/C++?

Python非常適合快速解決方案和做你希望你的shell可以做的事情。這在很大程度上涉及文件管理等。

C++可能是編譯速度最快的語言,爲核心操作和大量使用的操作提供最佳使用。

基於此,以及市場在C++方面擁有更多知識和經驗(出於許多原因)的事實,C++是更受歡迎的選擇。

  1. 和項目的部分應使用Python開發和項目的一部分是用C/C++?

我相信我可能已經解決了上述問題。

-

我希望我能幫上忙,請記住這只是我個人的意見,決不意味着這被視爲事實。