圖書館與語言擴展有什麼區別?具體在斯卡拉。圖書館與語言擴展
圖書館與語言擴展
回答
這是有效無論是Scala和Java來說,一個庫可以定義爲:
在計算機科學中,庫是用於開發軟件資源的集合。這些可能包括預先編寫的代碼和子例程,類,值或類型規範。
這意味着(我知道,我簡化了不少)一庫是你在代碼中使用,以實現一個算法程序的集合。它們可以節省您一次又一次編寫相同的代碼(例如,每次必須將字符串打印到控制檯時,您都不需要重新發明輪子)。
一個語言擴展是不是代碼,你會打電話給(或使用)直接從您的代碼,但東西會改變你如何編寫你的程序。它可能會改變(通常是)語言本身的語法,並且通常它是編譯器的插件。添加到Java語言中的許多功能都是擴展功能(例如泛型)。
例如會話Scala是由雙方的擴展:
- 庫管理並行編程(代碼,你可以直接從你的代碼中調用)。
- 語言擴展:爲了讓你編寫的代碼更加清晰(有時稱爲語法糖),它改變了語言的語法,使其庫函數的使用更加容易(我應該說不錯?)
舉例來看看this page。
這就是說,通常在Scala中,由於語法的原因,擴展語言並不是真的需要(即使它很容易編寫,比.NET語言更容易)。我想到的第一件事情是infix操作符,但總的來說,它的方法調用的所有語法都可以簡單地將它用作沒有DSL的DSL。
如果通過語言擴展來表示一個編譯器插件,那麼它可以在編譯時檢查或轉換給定的源代碼爲其他普通的Scala代碼。但是,使用相同原始源代碼的其他人也必須安裝編譯器插件來編譯代碼。
另一方面,在斯卡拉的庫可能看起來像一個語言擴展感謝斯卡拉的支持infix notation/suffix notation和symbolic methods。然而,在編譯時沒有什麼特別的,儘管任何人編譯然後運行相同的源代碼都需要任何引用的庫來完成。
This is the Scala language specification。如果可以用本規範描述的語言編寫它,那麼它是一個庫。如果您對本文檔描述的語言進行更改,不能用語言本身編寫,那麼它是一種語言擴展。
+1喜歡它,不能更簡潔! –
- 1. 可擴展的課程和圖書館
- 2. 圖書館與圖書館項目與外部圖書館的區別
- 3. 圖書館與fftwf_plan_dft_r2c_1d?
- 4. 擴展C#語言?
- 5. C++語言擴展
- 6. PHP擴展與C語言編寫的
- 7. 圖書館對圖書館的引用
- 8. 味道與圖書館?
- 9. 圖書館間接與dlsym
- 10. VS擴展架構(包API/Visual Studio中圖書館)
- 11. HybriAuth - Hybriauth圖書館所需要的JSON PHP擴展
- 12. Ruby Squeel圖書館對核心擴展的棄用
- 13. 擴展圖書館中層次結構中的超類 -
- 14. 不同語言的圖書館執行情況?
- 15. 語言環境不更新我的圖書館爲Android應用
- 16. 使一個圖書館在GO中可用於其他語言
- 17. 如何Rivr Java的VoiceXML的圖書館指定addPrompt()語言
- 18. 擴展表達式語言
- 19. 多語言Safari擴展
- 20. VSCode的Python語言擴展
- 21. SyntaxHighlighter圖書館
- 22. SimpleHTMLDom圖書館
- 23. AndroidPdfViewer圖書館
- 24. 從圖書館
- 25. VS2005圖書館
- 26. 圖書館
- 27. 什麼是擴展語言?例如:python可以用作擴展語言
- 28. 圖書館目錄搜索sql語句
- 29. 圖書館與谷歌圖表互動
- 30. 擴展Simple.Data與斷言
你的意思是說什麼*語言擴展*? –