2009-01-27 130 views
0

什麼是腳本語言,使他們很容易做快速原型?只是它們不是靜態類型的?腳本語言

我是C#程序員,並沒有太多的經驗與JavaScript或Python ..或任何其他的腳本語言。

我越瞭解他們就越覺得她們可能是答案的一些我運行中面臨的問題,當我需要得到一個快速的原型準備好「概念證明」

回答

0

我想這是所有你沒有寫的代碼,以及如何關注激光,你可以解決你的問題和解決方案。

您的代碼主要有兩個用途。首先是解決您的域問題。其次是讓你的編譯器/解釋器高興。

當我使用javascript和actionscript同時編寫​​代碼時,這變得很清楚,因爲actionscript基本上都是JavaScript,並帶有所有聲明性開銷。兩者之間的區別正是你所描述的。這有點像信噪比的一種形式。如果你的工作去解決你的問題多少錢,你的工具需要多少錢?

0

當你的變量是動態類型的時候,ORM可以非常簡單。腳本語言(普通高級語言)的語法可以更簡單和寬容。儘管如此,儘管我認爲在你熟悉的語言方面你的工作效率最高。

3

對於我來說,單一的功能,最有利於快速發展,其中大部分腳本語言已經和大多數編譯語言不這樣做,是打破了應用程序在運行時的能力,更改代碼,然後繼續不運行失去了所有應用程序的對象和變量的現有狀態。

2

幾天前,Jeff Atwood在Coding Horror上有一個post。請注意,我認爲動態打字和做我的意思是編程世界中最邪惡的東西(任何能夠在運行時間不好的情況下檢測到錯誤的東西,恕我直言),所以我不同意他的大部分帖子,但它仍然是信息。

+0

這就是那個導致這個問題的編碼恐怖片。我一直想問這個問題很長一段時間......傑夫的帖子最終促使我問...... – Developer 2009-01-27 21:20:35

0

我也聽到了很多。

我從來沒有理解腳本的原型參數。不要誤解我的意思,我喜歡使用腳本語言,但是當你用最終不會使用的語言編寫代碼時,我不明白你是如何證明的。你可能只需要編寫僞代碼。

例如,如果我用javascript寫東西,那麼我無法訪問.net庫。如果我打算用C#編寫程序,這是一件大事。我發現你使用的庫對你的代碼有很大的影響。並因此在你的原型上。

什麼是腳本語言,使他們很容易做快速原型?

我不會去想腳本語言什麼使得他們很容易做到有用原型。就我個人而言,我儘可能接近真實的原型。我覺得這是確定是否有可能的最好方法。

+0

C#不是.NET庫唯一的語言參與者。您可以輕鬆使用IronPython(一種腳本語言)來調用您的原型所需的任何.NET庫。 – 2009-01-28 20:44:33

0

腳本或更精確的動態語言對他們來說有幾個方面,可以使快速原型無痛化。首先,如果你想使用int作爲一個字符串,反之亦然,它們的輸入很弱。由於編譯階段幾乎被刪除,它們有更快的代碼,編譯和測試周期。他們也傾向於使編碼更像你的思維過程。我正在考慮grep,地圖,注入(紅寶石),lambda函數,匿名函數等。

0

好東西。

你不花時間編譯。

壞事

你不會從編譯器錯誤幼稚得到幫助。

腳本語言對於快速的事情是了不起的。甚至足夠大的。但是當談到團隊開發時,並非每個人都有經驗來檢測或理解像「空指針異常」這樣簡單的事情,編譯器就有所作爲。

0
  1. 內存管理是在PHP/Ruby的魔法

  2. 指針被包裹,並幾乎完全原子參考文獻管理處理

  3. 沒有編譯時

  4. 更高的執行水平餘地爲更容易調試鉤子入口

    我一直在使用腳本局域網現在已經有十多年的歷史了,我發現使用它們的勝利組合就像膠水一樣可以用於更強大的動態鏈接/集成機器代碼,比如c/C++。微軟公司正在/正在採用它的ActiveX技術,但沒有涉及微軟。

7

兩個字:即時滿足。

喬爾有關此方面的工作條件Joel Test會談:

這裏的麻煩。我們都知道, 知識工作者通過獲取 成「流」最好的工作,也被稱爲「在 區」之中,在那裏他們完全 集中於自己的工作,充分 調出他們的環境...的 麻煩的是,進入「區域」是不容易的。當您嘗試測量它時,它看起來需要平均爲 15分鐘才能開始工作,最大生產率爲 ......另一個問題是 ,它很容易被淘汰區域的 。噪音,打來的電話, 吃午飯,不得不開車5 分鐘到星巴克喝咖啡, 中斷同事 - 特別是同事打斷 - 所有敲你離開區域。

作爲一名長期的Java程序員,我喜歡關於PHP的一件事,就是看看事情是否有效就像點擊'Save'然後在我的瀏覽器上重新加載一樣簡單。我立即看到它是否有效。現在,如果我必須做一個構建(可能需要1-15分鐘),部署(任何從10秒到一兩分鐘),並重新啓動我的應用服務器(另一個30秒或更多取決於複雜性),然後我失去了我的思路(「退出了這個區域」)。

另一張海報提到了Jeff的專欄文章,它的內容與此相同。

腳本語言是很好的,因爲當您得到即時反饋時,您的工作效率更高。

0

您只需在腳本語言中編寫較少的代碼,然後您就可以在c#中編寫代碼。當你拿出所有的變量刪除,所需的類別刪除等等時,它會驚奇地發現更小的東西。我還發現腳本語言對我來說更加高效,因爲我是一個文本編輯器而不是IDE用戶。無需返回到命令提示符並輸入重新編譯命令,每次運行程序只會節省兩秒鐘,但這會加起來。

1

一般來說,幾件事情浮現在腦海中:

  • 讀-EVAL-打印循環(REPL),可讓您快速迭代的代碼塊。有了像Emacs這樣的東西,你通常可以快速修復一個函數,用關鍵筆劃將更新後的版本發送給解釋器,然後跳轉到解釋器並對其進行測試。而且這不會丟失當前的程序狀態。

  • 更高層次的編碼。對散列表,列表(以及列表解析)等的語言級別的支持使得使用它們的障礙非常低。代碼往往比使用它們的庫版本更簡潔。

  • 模糊的數據和代碼。如果你有一個常量表來初始化,你通常可以直接寫出來。你願意寫些什麼:

    constants = {"Pi": 3.141, "e": 2.718}
    或類似
    HashTable constants = new HashTable(); 
    constants.insert("Pi", new Float(3.141)); 
    constants.insert("e", new Float(2.718));
    這種差異只會在更復雜的結構中變得更加明顯。

  • 動態打字。不需要類型註釋或者說明結構中每個數據類型的類型。這也導致了諸如鴨子打字之類的事情,在那裏不需要編寫界面樣板。你只需調用一個方法,它可以工作,調用回退或觸發異常。