成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

在.NET平臺上使用Scala語言(上):初嘗

開發(fā) 后端
Scala是Java平臺上的一門新興起的語言,我也不止一次在博客上提到它。我非常希望它可以取代Java這種劣質(zhì)語言,讓Java平臺的生產(chǎn)力上一個臺階。事實上,Scala從一開始——或者說“很早”就對生成.NET程序集提供了支持。只可惜,畢竟還是Java平臺的東西,.NET方面的資源少之又少,不過我們還是可以進(jìn)行一番嘗試的。

Scala是Java平臺上的一門新興起的語言,我也不止一次在博客上提到它。我非常希望它可以取代Java這種劣質(zhì)語言,讓Java平臺的生產(chǎn)力上一個臺階。事實上,Scala從一開始——或者說“很早”就對生成.NET程序集提供了支持。只可惜,畢竟還是Java平臺的東西,.NET方面的資源少之又少,不過我們還是可以進(jìn)行一番嘗試的。

有人經(jīng)常把F#和Scala進(jìn)行比較——可能都是新語言吧,畢竟C#和Java之爭也有很長的歷史沉淀了。不過,我倒不認(rèn)為兩者有什么可比性。F#是一門“擁有面向?qū)ο筇匦缘暮瘮?shù)式編程語言”,而Scala是一門“擁有函數(shù)式編程特性的面向?qū)ο缶幊陶Z言”。事實上,從設(shè)計思路來說,Scala與C#或Java是同根的,與C#在函數(shù)式編程方便更有可比性——雖然它在追求語言靈活性的道路上走得有些極端。因此,我認(rèn)為Scala可以定位作Java語言的替代品,而F#卻不是C#的替代品。因為一旦F#替代了C#,便幾乎代表函數(shù)式編程范式替代了面向?qū)ο缶幊谭妒健?/p>

Scala語言的名字取做“Scalable”,暗指這是一門“伸縮性”強(qiáng)的語言。為什么說它伸縮性強(qiáng)呢?我的理解是它希望可以做幾乎“任何形式/風(fēng)格”的程序設(shè)計。這點(diǎn)并非玩笑,Scala的確在走這條路。Scala的語言非常靈活,語法的“變化”非常復(fù)雜。我一直說,這門語言實在是太甜了——到處是糖,而且可謂“無所不用其極”。Scala似乎希望在一切可以節(jié)省的地方,如括號,標(biāo)識符,進(jìn)行節(jié)省。還例如,Scala的import支持引入整個包,包的一部分,整個包但排除某個類,甚至在方法內(nèi)部引入成員。再例如成員的訪問級別,除了典型的public,protected,private之外,它還引入了“當(dāng)前對象”這種訪問級別(private是相同“類”)。

但是,要知道Scala最終還是編譯為Java平臺上的二進(jìn)制格式,也就是說Scala的功能事實上是受平臺限制的。因此,使用Scala一些高級功能編譯出的結(jié)果,其實是無法被Java語言體現(xiàn)出來的——這也是我為什么會說Scala的定位像是“取代”Java,而不是與Java共存。

至于我嘗試Scala.NET的原因在于:

  • 熟悉Scala語言。目前有一些有趣的,有用的類庫是用Scala實現(xiàn)的,相信以后也會越來越多。
  • 借Scala語言及.NET平臺與Java平臺的差異。
  • 觀察Scala一些語言特性在IL上的表現(xiàn)——畢竟.NET領(lǐng)域?qū)τ贗L的追求,比Java領(lǐng)域追求Byte Code有群眾基礎(chǔ)得多,且我更熟悉.NET平臺。

此外,由于難免需要在Java平臺上編寫程序,如果可以用Scala的話,我真的不想再使用Java語言了。

對于Scala@.NET來說,Scala官方文檔上的指導(dǎo)是基于Scala 1.4(最新的Scala是2.7.7)的,已經(jīng)完全不可用。如果在互聯(lián)網(wǎng)上查找內(nèi)容,也寥寥無幾。最終我借助這篇文章起步。

首先,你需要先去下載Scala的SDK,并將其解壓縮。例如,我現(xiàn)在將它存放在D:\scala-2.7.7.final中,其中包含幾個目錄,比較重要的有:

  1. bin <- 各工具及腳本  
  2. lib <- 工具或類庫的jar包  
  3. src <- 源文件  
  4. code <- 我創(chuàng)建的文件夾,用于存放測試代碼 

首先,Scala SDK中并不直接包含“好用”的輔助腳本,我們需要使用sbaz.bat獲取.NET的支持腳本。sbaz.bat會調(diào)用sbaz.jar包里的程序,它相當(dāng)于Scala的包或腳本管理器。于是:

D:\scala-2.7.7.final> bin\sbaz.bat install scala-msil

執(zhí)行后,bin目錄下會多出scalac-net.bat及其他一些文件,在lib目錄下則多出三個文件,分別是mscorlib.dll,predef.dll和scalaruntime.dll。然后我們在code目錄下放置一個test.scala文件,內(nèi)容是:

  1. import System.Console  
  2.  
  3. object test extends Application {  
  4. override def main(args: Array[String]) = {  
  5. Console.WriteLine("Hello .NET World!")  
  6. }  
  7. }  

然后使用scalac-net.bat將它編譯成IL文件:

D:\scala-2.7.7.final\code> ..\bin\scalac-net.bat test.scala

這樣在code目錄下便生成了test.msil,再使用ilasm便可以將其轉(zhuǎn)化為.NET程序集了:

D:\scala-2.7.7.final\code> ilasm test.msil /exe

最后,還需要將在lib目錄里的3個dll文件復(fù)制到與test.exe的相同目錄中。

運(yùn)行,成功。

原文鏈接:http://www.cnblogs.com/jeffreyzhao/archive/2009/12/18/scala-for-dotnet.html

【編輯推薦】

  1. Java千萬級別數(shù)據(jù)生成文件思路和優(yōu)化
  2. 詳細(xì)介紹Scala面向?qū)ο缶幊?/a>
  3. Scala登陸.NET平臺
  4. Scala語言編程入門指南
  5. “Scala” 一個有趣的語言
責(zé)任編輯:林師授 來源: 趙劼的博客
相關(guān)推薦

2012-04-25 14:27:03

JavaScala

2013-04-08 13:50:19

.NET系統(tǒng)架構(gòu)設(shè)計DDD

2013-04-11 09:52:17

.NET設(shè)計模式TDD

2017-03-20 17:20:35

iOSTensorFlow

2012-04-26 13:37:43

ScalaJavaQCon

2011-07-20 09:27:37

Scala

2013-08-27 10:31:05

Headless模式Java SE設(shè)計模式

2020-09-04 15:05:50

GitHub代碼空間特定倉庫

2010-06-09 17:46:53

2017-02-23 13:51:05

2022-01-21 10:35:03

Windows 11微軟安卓

2011-07-28 15:07:23

iOS猜數(shù)游戲

2010-05-19 16:53:31

MySQL代碼

2013-07-09 09:43:04

函數(shù)式思維函數(shù)式編程編程

2023-04-20 17:26:40

FreeDOSC 語言

2012-06-08 09:28:15

EclipseScalaAndroid

2009-07-08 12:43:59

Scala ServlScala語言

2015-07-08 11:28:53

云服務(wù)平臺Docker MachDocker

2019-06-19 16:05:51

AppImageFlathubLinux
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 欧美中文字幕一区二区三区亚洲 | 久久国产区 | 成人a在线观看 | 精品入口麻豆88视频 | 国产一区二区在线视频 | 欧美精品在欧美一区二区 | 日韩在线播放第一页 | 久久久九九九九 | 草久久久 | 精品一区二区三区四区五区 | 国产欧美日韩综合精品一区二区 | 亚洲成人av| 国产精品日女人 | 成人国产在线视频 | 国产精品伦理一区 | 亚洲网址在线观看 | 久久精品久久久久久 | av香蕉| 91精品国产自产精品男人的天堂 | 精品av天堂毛片久久久借种 | 国产精彩视频 | 日韩第一夜 | 久草视频在线播放 | 久久亚洲天堂 | 亚洲福利视频一区二区 | 特级毛片 | 欧美在线观看一区 | 国产视频三级 | 7777精品伊人久久精品影视 | 亚洲精品国产综合区久久久久久久 | 亚洲天堂av在线 | 国产精品视频一区二区三区不卡 | 91精品国产麻豆 | 一区二区三区观看视频 | 成人中文网| 亚洲国产精品一区二区久久 | 久久久爽爽爽美女图片 | 狠狠干网站 | 91精品国产综合久久久密闭 | 在线日韩 | 一区二区福利视频 |