什麼因素表明項目解決方案不應該用動態語言編碼?什麼情況下動態語言不適合?
回答
速度通常是主要答案。儘管這些日子已經不再是一個問題。
速度至關重要。動態語言變得越來越快,但仍然不能接近編譯語言的性能。程序員的
熟悉並願意與語言進行工作。
您的動態語言可能是我的靜態語言。
系統級開發是一個關鍵的軟件組,通常不應該是動態語言。 (驅動程序,內核級別的東西等)。
基本上任何需要具有的性能和低級別的硬件訪問每盎司,應該是在一個較低的水平語言。
另一個指標是如果它是高度數字運算,如科學數據的數字運算。也就是說,如果它需要快速運行並進行數字運算。
我認爲一個共同的主題是處理器密集型的問題......在這種情況下,你會很容易看到的性能差異,你會發現,動態語言就是不能讓你有效地使用硬件的功率。
這就是說,如果你是做處理器密集型的工作,你不介意的性能命中,那麼你仍然可以潛在地使用動態語言。
更新:
注意,對於數字處理,我是說真的長期運行在科學領域的數字運算,其中進程正在運行數小時或數天......在這種情況下,2倍的性能增益是極大的相...如果它的規模小得多,那麼動態語言仍然可以使用。
好吧,數字運算和動態語言並不是正交的,只要有合適的庫。認爲Python和Numpy,或星* P等 – tzot 2008-09-26 23:58:45
動態語言完全可以使用Interop。 (還記得經典的Visual Basic,它有「懶惰綁定」?)它需要COM組件編譯一些額外的,雖然幫助他們的呼叫者按名稱呼叫。
我不認爲數字運算必須被靜態編譯,最常見的是如何解決的問題。 Matlab是數字運算的一個很好的例子,它有一個非編譯語言。然而,Matlab對數字和矩陣有非常特定的運行時間。
我相信你應該總是選擇靜態類型的語言儘可能。我並不是說C#或Java具有良好的靜態系統,但C#正在接近。良好的type inference是關鍵,因爲它會給你動態語言帶來的好處,同時還給你靜態類型的安全和功能。問題解決了 - 沒有更多的火焰戰。
這是非常主觀的......甚至類型推斷不能總是做一些動態語言可以做的事情,至少並不是沒有對類型系統進行很大的改變...... – 2008-09-26 22:10:32
嵌入式系統的系統級代碼。一個可能的問題是動態語言有時會隱藏單個簡單前瞻性語句的性能影響。
像這樣說的Perl聲明:
@contents = <FILE>;
如果文件是一個幾兆,那麼這是一個消耗資源的語句 - 你可能會耗盡你的堆,或導致看門狗超時,或一般減緩嵌入式系統的響應。
如果你想「更接近金屬」,你可能想要使用靜態類型和「中等」語言。
視頻卡的設備驅動程序
在很大程度上,編程語言是一種風格的選擇。使用你想使用的語言,你將獲得最大的生產力和快樂。如果出於某種原因,這是不可能的,那麼希望你的最終決定將基於一些有意義的事情,比如你必須面對的平臺或真實的經驗性能數字,而不是別人的任意樣式選擇。
- 1. 這種情況下最適合的語言/技術是什麼?
- 2. 什麼語言是最適合自動執行的事情?
- 3. 動態情況下
- 4. 哪種語言最適合用動態語言開頭
- 5. 這種情況下最適合的認證技術是什麼?
- 6. 在什麼情況下VkFence比vkQueueWaitIdle更適合vkQueueSubmit?
- 7. 在什麼情況下動態符號不會被混淆?
- 8. 爲什麼這種上下文無關的語法語言不適合?
- 9. 如何在不使用動態語言的情況下搜索XML文件?
- 10. 未聲明語言理想情況下
- 11. 爲什麼autoboxing在這種情況下不適用於泛型?
- 12. 在什麼情況下.htaccess不適用於Apache?
- 13. 爲什麼在這種情況下,respondsToSelector不適用於我?
- 14. 在我的情況下合併的情況下選擇什麼方式?
- 15. 什麼情況下phys_base不是0?
- 16. 什麼使編程語言符合動態?
- 17. 爲什麼在某些情況下不能合併()和gt()?
- 18. 這是否適合使用動態函數創建的情況?
- 19. 在不改變當前頁面的情況下切換語言
- 20. 不知道語言的情況下摺疊UTF-8
- 21. 什麼響應代碼適合這種情況?
- 22. 什麼是最適合這種情況的android異常?
- 23. 什麼analzyer是適合我的情況? hibernate搜索案例
- 24. 什麼是Javascript框架最適合這種情況?
- 25. 如何在沒有不合適的情況下解除克隆?
- 26. 以下情況的適當設計模式是什麼?
- 27. 這種情況下removeListener的適當用法是什麼?
- 28. 爲什麼在這種情況下只適用一個參數?
- 29. 什麼功能語言最適合數據庫應用程序?
- 30. 什麼編程語言最適合創建roguelike遊戲?
速度在很大程度上取決於實現的質量,並且與語言是動態還是靜態類型很少有關。良好的Common Lisp編譯器當然可以與C競爭,壞C編譯器可以比CPython慢得多。 – 2008-09-28 08:08:39