多語言或多語言解決方案允許您將語言應用於他們最適合的問題。然而,至少在我的經驗中,軟件商店傾向於將「超級」語言應用於他們試圖解決的所有問題。即使有另一種語言可以簡單自然地解決問題,堅持用這種語言來「地獄或高水」。爲什麼你或你沒有使用多邊形繪圖解決方案?爲什麼你或你不使用多邊形解決方案?
回答
我遇到的一個問題是,Visual Studio不允許在單個項目中混合多種語言,迫使您將每個語言的內容抽象爲單獨的DLL,但這不一定是理想的。
但我懷疑主要原因是認爲在許多不同的語言之間來回切換會導致程序員效率低下。這是有道理的,我不斷地在JavaScript,C#,VBScript和VB.NET之間切換,當我從一種語言切換到另一種語言時,我有點失去了時間,因爲我混合了一些語法。
不過,絕對有更多的「多語種」解決方案的空間,特別是超越使用JavaScript和任何後端編程語言。
你是說你的IDE是問題嗎? – dacracot 2008-10-09 19:08:55
我很幸運能夠在小型項目中工作,可以爲我的任務提供合適的語言。例如C作爲一種低級語言,將Lua擴展爲高級/原型設計已經非常成功,在新的嵌入式平臺上快速加速。對於任何更大的項目,我總是傾向於使用兩種語言,特定領域的項目適合特定項目。它爲快速嘗試新功能增添了很多表現力。
然而,對於一個更傳統的項目來說,要克服的第一個障礙是選擇使用哪種語言,而當腳本語言傾向於立即看起來像是「新人」而沒有市場推動或「嚴肅「的形象。
我幾乎總是在解決方案空間中提倡超過1種語言(實際上,超過2個,因爲SQL是如此之多的項目的一部分)。即使客戶喜歡具有明確打字和大量人才的語言,我也主張使用腳本語言進行管理,測試和數據清理等。
許多語言的優點歸結爲「正確的工具爲了工作。」
有合法的缺點,雖然:
- 更難有集體代碼所有權(不是每個人在所有精通語言)
- 整合問題(減少在管理平臺)
- 從增加運行時開銷基礎設施庫(這通常很重要)
- 增加的工具成本(IDE,分析工具等)
- 當切換fr時的認知「顛簸」一個到另一個。這是一把雙刃劍:對於那些經驗豐富的人來說,不同的範例是互補的,當一個問題出現時,經常會出現一個「但是在X中我會用Z解決這個問題!」問題迅速得到解決。然而,對於那些不太喜歡範例的人來說,在試圖理解「這是什麼?「
我也覺得應該說,如果你打算去與多國語言,在我看來,你應該去與顯著不同方法的語言。我不認爲你獲益良多就解決問題而言,通過在一個項目中同時擁有C#和VB,我認爲除了你的主流語言外,你還希望擁有一種腳本語言(對於較小和一次性的任務來說是高生產力)和一種語言一個嚴重不同的認知風格(Haskell,Prolog,Lisp等)
多語言解決方案的最大問題是涉及的語言越多,尋找程序員的難度越大e適當的技能組合。特別是如果任何一種語言甚至略微深奧,或者來自完全不同的設計學校(例如 - 功能性與程序性或面向對象)的冰雹。是的,任何一個優秀的程序員都應該能夠了解他們需要的東西,但管理層往往希望有人能夠「跑到地面」,無論這是多麼不現實。
其他原因還包括代碼複用,增加了複雜性的不同語言之間的接口,並在其語言的特定代碼位應屬於不可避免的地盤之爭。
所有這一切都表示,認識到許多系統都通曉多國語言通過設計 - 使用數據庫的任何東西除了一些其他語言之外還將具有SQL。而且還經常涉及腳本,無論是實際代碼還是構建系統。
幾乎所有我的專業編程經驗已在上述類別。通常有一種核心語言(C或C++),不同程度的SQL,shell腳本以及可能的外圍Perl代碼或python代碼。
我的僱主的態度一直是使用什麼工作。
這意味着,當我們發現一些有用的Perl
模塊(如實現「本福德定律」,Statistics::Benford
的一個),我不得不學習如何使用ActiveState的PDK
。
當我們決定將間隔數學添加到我們的項目時,我不得不學習Ada以及如何使用GNAT
和ObjectAda
。
當請求高速字符串庫時,我必須重新學習彙編程序並習慣於MASM32
和WinAsm
。
當我們想要有一個libiconv
(基於Delphi Inspiration的代碼)的COM DLL時,我重新認識了Delphi
。
當我們想要使用Bill Poser博士的libuninum
時,我不得不重新學習C
以及如何使用Visual C++
的IDE。
我們仍然在VB6
和VBScript
中對原型進行了原型設計,因爲它們很擅長。
也許某段時間,我最終會在Forth,Eiffel或D,或天堂幫助我做Haskell(我沒有任何反對語言本身的東西,它只是一個非常不同的範例。)
那麼,所有的網頁現在都是polyglot,後面是Java/PHP/Ruby,前面是JavaScript ... 想到其他例子 - 一種用低級語言(C或C++)和嵌入式高級語言(Python,Lua,Scheme)編寫的靈活複雜系統,以提供自定義和腳本接口。 Microsoft Office和VBA,Blender和Python。
可以在腳本語言來完成,比如Python與C.
兩個JVM和CLR都獲得了大量的新的有趣的腳本語言兼容完成性能關鍵還是依賴於操作系統的塊一個項目。 Java + Groovy,C#+ IRonPython等。
- 1. 你怎麼知道你的解決方案從哪裏打開?
- 2. 爲什麼看不到解決方案
- 3. 你如何部署你的SharePoint解決方案?
- 4. 爲什麼多語言解決方案不起作用?
- 5. 爲什麼不使用TFS作爲構建/ CI解決方案?
- 6. 爲什麼你可以使用方法
- 7. 你爲什麼使用T4?
- 8. 請問爲什麼不能使用此解決方案?
- 9. 你怎麼解決蟒蛇
- 10. 歐拉3解決方案,爲什麼?
- 11. 當你有多個visual studio解決方案時,如何使用重構工具?
- 12. 解決方案有什麼不同
- 13. 你叫什麼以及如何閱讀? (解析方案)
- 14. 地圖解決方案給AC和解決方案與unordered_map給WA。爲什麼?
- 15. 你使用什麼文件格式爲你的應用程序,爲什麼?
- 16. 我的遞歸解決方案不起作用,但DP解決方案工作,我不知道爲什麼
- 17. 多租戶和多用戶解決方案有什麼區別?
- 18. 如果你不用Java進行克隆,那麼你做什麼,你叫什麼?
- 19. 爲什麼Border radious不支持Chrome和IE10。你可以給任何解決方案
- 20. 你可以在FQL中做什麼,你不能使用圖形API
- 21. 你爲什麼要用fmt.Sprint?
- 22. 你什麼時候使用新方法?
- 23. Visual Studio Extensibility,你如何枚舉解決方案中的項目?
- 24. 你會如何在visual studio中創建這個解決方案?
- 25. 爲什麼每個解決方案(或基因型)多於一個染色體?
- 26. Android - 你能解釋爲什麼你可以刪除代碼嗎?
- 27. 如果你有一個Android XML佈局,你只需要改變3件事(2個textViews和1個圖標),你認爲最好的解決方案是什麼?
- 28. 爲什麼你需要Gitosis或Gitolite?
- 29. 你如何解決? formtastic:label_method不再可用
- 30. 你能用原生iPhone開發什麼,你不能使用phoneGap?
多語言通常用於語言不可知的算法環境,而不是由許多語言組成的解決方案。一個工作人員是一個能夠用多種語言編碼的人。 – DevelopingChris 2008-09-17 18:34:47
@DevelopingChris我以前曾經看到過使用「polyglot」這個詞。 – 2012-06-06 23:21:25