2008-09-26 75 views

回答

0

速度通常是主要答案。儘管這些日子已經不再是一個問題。

+5

速度在很大程度上取決於實現的質量,並且與語言是動態還是靜態類型很少有關。良好的Common Lisp編譯器當然可以與C競爭,壞C編譯器可以比CPython慢​​得多。 – 2008-09-28 08:08:39

0

速度至關重要。動態語言變得越來越快,但仍然不能接近編譯語言的性能。程序員的

3

熟悉並願意與語言進行工作。

您的動態語言可能是我的靜態語言。

3

系統級開發是一個關鍵的軟件組,通常不應該是動態語言。 (驅動程序,內核級別的東西等)。

基本上任何需要具有的性能和低級別的硬件訪問每盎司,應該是在一個較低的水平語言。

另一個指標是如果它是高度數字運算,如科學數據的數字運算。也就是說,如果它需要快速運行並進行數字運算。

我認爲一個共同的主題是處理器密集型的問題......在這種情況下,你會很容易看到的性能差異,你會發現,動態語言就是不能讓你有效地使用硬件的功率。

這就是說,如果你是做處理器密集型的工作,你不介意的性能命中,那麼你仍然可以潛在地使用動態語言。


更新:

注意,對於數字處理,我是說真的長期運行在科學領域的數字運算,其中進程正在運行數小時或數天......在這種情況下,2倍的性能增益是極大的相...如果它的規模小得多,那麼動態語言仍然可以使用。

+1

好吧,數字運算和動態語言並不是正交的,只要有合適的庫。認爲Python和Numpy,或星* P等 – tzot 2008-09-26 23:58:45

-1

interop怎麼樣?是否有可能從Ruby或Python調用COM組件?

+0

幾乎無痛。 Ruby和據我所知Python都有用於此目的的Win32Ole模塊。 .Net互操作也是可能的,但我認爲它在IronRuby/IronPython實現方面效果更好。 – JasonTrue 2008-09-26 22:51:26

+0

動態語言通常在標籤「膠水語言」下提供,所以互操作性在工作描述:) – tzot 2008-09-27 00:00:19

0

動態語言完全可以使用Interop。 (還記得經典的Visual Basic,它有「懶惰綁定」?)它需要COM組件編譯一些額外的,雖然幫助他們的呼叫者按名稱呼叫。

我不認爲數字運算必須被靜態編譯,最常見的是如何解決的問題。 Matlab是數字運算的一個很好的例子,它有一個非編譯語言。然而,Matlab對數字和矩陣有非常特定的運行時間。

0

我相信你應該總是選擇靜態類型的語言儘可能。我並不是說C#或Java具有良好的靜態系統,但C#正在接近。良好的type inference是關鍵,因爲它會給你動態語言帶來的好處,同時還給你靜態類型的安全和功能。問題解決了 - 沒有更多的火焰戰。

+0

這是非常主觀的......甚至類型推斷不能總是做一些動態語言可以做的事情,至少並不是沒有對類型系統進行很大的改變...... – 2008-09-26 22:10:32

0

嵌入式系統的系統級代碼。一個可能的問題是動態語言有時會隱藏單個簡單前瞻性語句的性能影響。

像這樣說的Perl聲明:

@contents = <FILE>; 

如果文件是一個幾兆,那麼這是一個消耗資源的語句 - 你可能會耗盡你的堆,或導致看門狗超時,或一般減緩嵌入式系統的響應。

如果你想「更接近金屬」,你可能想要使用靜態類型和「中等」語言。

1

視頻卡的設備驅動程序

2

在很大程度上,編程語言是一種風格的選擇。使用你想使用的語言,你將獲得最大的生產力和快樂。如果出於某種原因,這是不可能的,那麼希望你的最終決定將基於一些有意義的事情,比如你必須面對的平臺或真實的經驗性能數字,而不是別人的任意樣式選擇。

相關問題