2011-09-09 57 views
3

爲工程專業的學生具有較強的mathemathical背景,我處理一些像這樣的問題在大學:與能力原型的語言要快

  • (數值)模擬
  • AI問題
  • 機器人
  • 控制系統
  • 和一些

,因爲你可以看到一些只是數字的,其他的則需要處理一些符號。 目前我正在使用java,但我不是很滿意它(​​不能確切地說爲什麼,可能是一種個人的品味),現在我正在尋找一種編程語言,我可以在其中輕鬆地創建新算法,比如在python中,並且不關心低級別的東西,但是如果需要的話可以加快速度,例如併發/並行編程等(在Python編寫,並用C重寫/ C++是不是一個真正的選擇我喜歡...)

來概括:

  • 容易原型但
  • 加快算法時沒有樣板東西
  • 語法與Java
  • 語法,易於閱讀的能力(我知道這可能是與被achived最,但有些語言鼓勵你更多... )

我在網站看了看四周,像http://rosettacode.org/,拿起2或3的最愛:去吧,Lisp的(也許哈斯克爾),但其他recommandations歡迎

+0

mathematica/matlab? –

+0

對不起,忘記了,它應該是免費的(儘管我可以在大學免費獲得matlab) – Moe

+1

我希望有人會在Lisp中編寫python,所以我們可以輕鬆編程而不需要執行期間的開銷;-)與numpy可能會是你的理想。 – phkahler

回答

6

使用SBCL的常見Lisp速度非常快,如果您花時間使其更快。

爲什麼這符合你想要的?

  • 符號計算
  • 相當數量的處理
  • 編譯爲本地在默認情況下的需求
+2

默認編譯爲本地代碼 –

2

如何F#?

F#是原型,原因如下顯着的語言:

F#有一個互動的模式,讓您評估直接代碼塊,無需編譯整個項目。 類型推斷有助於保持代碼小,並使得對類型層次結構進行相對簡單的重構。這在生產代碼中可能並不那麼重要,但我發現在原型設計過程中非常有價值。與.NET的F#集成使您可以輕鬆對原有產品的擴展進行原型設計。在原型變成產品(由於時間限制)的情況下,也很容易將F#代碼集成到.NET產品中。 如果原型構成整個開發過程的重要組成部分,那麼F#確實可以幫助您加快編碼速度。

我不認爲F#會產生比其他.NET語言快得多的代碼。編程的功能風格,特別是純粹性(無副作用)可以應用於其他編程語言,這意味着使用其他語言編寫併發程序也同樣容易。不過,在F#中這樣做「感覺更自然」。

F#有Option類型,可以用來代替空值。可以在編譯時保證代碼相對於空指針異常的可靠性,這是一個巨大的好處。

最後,請注意,F#仍處於開發階段,並且存在問題,其中一些問題可能會隨着時間消失,但​​不是全部。例如,請參閱devhawk和Oliver Sturm關於它的說明(特別是關於線性範圍和相互依賴的類,其他問題(如重載,更好的Visual Studio集成已經解決))。

這文章指出:https://stackoverflow.com/questions/328329/why-should-i-use-f

通過JOH

+0

你知道單聲道項目已經有多成熟嗎?我使用linux作爲我的主要操作系統 – Moe

+0

我會說單聲道達到了一個很好的成熟度,我從來沒有從它的問題 – Isaiah

3

嘗試Clojure的;它滿足您的大部分要求。

  • 使用Java庫,編譯成Java字節碼,並具有的Java IDE插件,所以一些關於Java及其生態系統現有的知識能派上用場。

  • 原型非常簡潔,易讀,易用性極高。

  • 對不同的併發策略有很大的支持。

  • 性能越來越好;典型的東西是對Java 2的速度的因素中,慢的東西通常可以做出快速的與最小混雜的變化(例如幾個類型在這裏和那裏暗示使用Java原語)。

+0

這是一個非常偉大的語言,但我發現它更難以學習常見的儘管downvote lisp – Isaiah

4

我會使用Python與cython:http://www.cython.org一起加速您的代碼。對於符號計算,您有http://code.google.com/p/sympy/

+1

:如果我讀你的「總結它」,蟒蛇是你的任務的理想語言....在cython中編寫擴展只是寫了一些添加了類型聲明的python代碼......它使用了distutils構建過程,沒有額外的框架,沒有額外的構建工具...... – rocksportrocker

+0

不錯的建議,從來沒有考慮過cython,我絕對會給試試,謝謝 – Moe

3

Common Lisp的替代方案是方案的實現。到目前爲止我最喜歡的是Racket。

http://racket-lang.org/

當我第一次進入Lisp的我開始與方案,並最終能夠幾天之內學會它。 Lisp-wise Racket是一個非常完整的語言,在DrRacket中有一個體面的IDE。