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

Scala vs F#:函數式編程特性大比拼(二)

原創
開發 后端
本文是51CTO獨家譯稿,講述Scala和F#函數式編程特性對比的第二部分。第一部分從函數、賦值、Lambda表達式、模式匹配、列表推導和混合實現多重繼承來對Scala和F#進行對比。本文將從開發框架、數據庫操作、GUI開發、Web開發和面向對象特性等方面對Scala和F#進行對比。

【51CTO譯文】在前文里,51CTO從函數、賦值、Lambda表達式、模式匹配、列表推導和混合實現多重繼承來對Scala和F#進行對比。而比較Scala和F#編程語言時,開發人員最感興趣的可能是開發環境的對比,如:

◆為Web,GUI和數據庫開發提供的框架

◆對面向對象的支持

◆運行時環境的特性

F#是微軟主持開發的函數式編程語言,只能運行在Windows平臺上,而開源的Scala可以運行在所有平臺上,不過Scala最終是被編譯成Java字節碼的,因此需要通過Java虛擬機進行解釋執行。

應用程序開發框架

F#是一個.NET通用語言運行時(CLR)兼容的語言,適合開發各種常見的應用系統,實際上,.NET開發人員可以在Visual Studio(2008和更高版本)中象開發C#,C++或Visual Basic程序一樣,開發、調試、測試和以CLR可執行程序形式部署F#程序。(您可以參考51CTO推薦:詳細介紹Visual Studio 2010F#使用

F#和其它.NET語言的區別是它的函數執行是不變的,無狀態的,這個特性使得F#更適合科學計算,大規模并行計算和高性能計算應用。除了函數式編程特定的任務和語法外,F#也可以訪問.NET DLL,訪問和使用方式均與其它.NET語言無差別。

Scala作為一個開源的,兼容Java且編譯成Java的語音,可用在任何支持Java的操作系統上,Scala開發插件和語法定義文件也可用大部分流行的文本編輯器和IDE創建,包括Netbeans,Eclipse和IntelliJ的IDEA。

數據庫操作

F#數據庫訪問程序是語言的核心部分,它們是通過System.Data and System.Data.SqlClient庫訪問數據庫的,F#數據庫訪問實現取決于底層ADO.NET機制和.NET運行時的配置。

由于Scala運行在Java虛擬機(JVM)上,它利用Java的JDBC訪問數據庫,數據庫例行程序要么直接通過JDBC調用,要么通過Java或其它第三方數據庫擴展調用,有幾個第三方開源的庫可用,但我不敢肯定它們已經成熟和穩定。

GUI開發

使用F#進行GUI開發是通過.NET的WinForm庫支持的,GUI開發API位于System.Drawing and System.Windows.Forms庫中,它是一個標準的共享.NET DDL。

使用Scala進行GUI開發是通過Java Swing實現的,訪問Swing組件和API都使用Scala語法,因此Scala程序員開發Swing感覺會很自然。

Web開發

使用F#進行Web開發,就象數據庫開發和GUI開發一樣,它是通過.NET System.Web庫完成的,ASP開發人員可以指定F#作為服務器端語言,執行HTTP處理邏輯。

Scala沒有任何專門的Web開發組件,但有基于Scala的第三方Web開發框架,在撰寫本文時,Lift Web框架是最有名的Scala Web開發框架。

面向對象特性

雖然F#是一個函數式編程語言,但它也支持常見的面向對象(OO)的特性,如單繼承類,多重繼承接口和參數多態等。和C#和Visual Basic類似,F#也支持委派,通過語言提供的Invoke委派方法提供對對象屬性的隱式訪問,但和Scala不一樣,F#不支持任何形式的多類繼承。

Scala一種混合函數式編程和面向對象編程風格的語言,因此它的函數和函數編程特性是***類語言結構,面向對象的也是,Scala中的每一個值都是對象,此外,Scala支持參數多態,枚舉和偽多重繼承。

在我看來,F#和Scala中面向對象特性***的差別是Scala支持偽多重繼承。

#p#

編譯和程序的執行

F#編譯器和運行時都是.exe或.msi格式,目前只支持Windows平臺,要在Mac或Linux平臺上運行F#唯一的辦法是使用Mono .NET CLR實現,F#程序的擴展名是.fs,在Windows平臺上編譯后是.exe文件,開發工具一般使用Visual Studio 2008(或更高版本),但也可以用其它編輯器創建,或使用獨立的CLR編譯器編譯。

F#的安裝是通過installFSharp.msi或fsharp.zip實現的,它包含了一個交互式編譯器,因此F#程序可以通過控制臺編寫和執行。

Scala只需要下載一個JAR文件就可以了,當然也有二進制分發包,無論哪種形式,Scala編譯器/解釋器都運行在JVM之上。

Scala需要Java 1.5或更高版本,但這里也有一個專為Java 1.4制作的版本。

Scala程序也可以通過交互式解釋器REPL(read-eval-print-loop)交互運行,序也可以和其它類文件一起編譯成Jar文件,然后作為Java程序調用。

典型應用和適用領域

F#是最近才加入到.NET語言大家族中的,因此它仍然處于初級階段,微軟研究院內部在使用F#進行日志分析和自定義搜索任務,但微軟計劃將F#作為多核和高性能計算的專用語言。

據傳,在編程社區 – 特別是那些熟悉函數編程和ML編程衍生語言的社區中,對F#的反應非常積極,但由于它只能運行在.NET平臺上,可能會形成一個障礙,因為主流的科學和高性能平臺都是基于Linux的。

在Scala和F#之間,Scala的使用程度遠遠超過了F#,Twitter的整個信息處理系統都是用Scala實現的,很多高知名度的組織,如西門子,索尼,施樂和美國航天局都在各種小規模項目中使用了Scala。

因為Scala與Java集成非常靈活,它可以用于任何類型的項目中,根據歷史經驗,Scala憑借其簡潔的語法,可以大量減少代碼行數。

性能

雖然Java虛擬機可運行在所有平臺上,但它不能為Scala帶來明顯的性能優勢,甚至沒有提供開箱即用的優化配置,但F#在.NET和Windows平臺上卻可以事先優化,在Windows上.NET運行時環境范圍內,F#很可能受益于CLR專門針對它的內部優化。

由于F#天生并不支持Linux,因此比較Linux平臺上Scala和F#的性能可能會有失公平,有些中立人士表示Linux上的Mono CLR比Windows平臺上的.NET CLR要慢得多,根據專業級的基準測試,在Linux上,F#比Scala慢三倍。

原文出處:www.developer.com/

原文名:Scala vs. F#, Round 2: Application Programming Features

作者:Edmon Begoli

【51CTO譯稿,非經授權謝絕轉載,合作媒體轉載請注明原文出處、作者及51CTO譯稿和譯者!】

【編輯推薦】

  1. Scala vs F#:函數式編程特性大比拼(一)
  2. 用Java在各種框架下編譯Scala項目
  3. 淺談Visual Studio 2010下F#代碼智能糾錯
  4. Visual Studio 2010中F#十三項新特性詳解
  5. Scala:Java+函數式=后函數式?
責任編輯:佚名 來源: 51CTO譯文
相關推薦

2010-07-07 13:11:20

ScalaF#C#

2009-02-06 14:26:37

UbuntuVistaWindows7

2011-06-09 09:52:41

F#

2011-12-06 09:55:03

Ubuntu vs.F性能測試

2011-01-19 11:10:30

2010-01-07 10:04:18

F#函數式編程

2010-03-18 14:54:46

主流無線技術

2021-03-02 09:00:00

開源框架技術

2018-06-08 11:05:00

2010-07-14 13:38:51

Perl開發工具

2020-08-04 17:06:40

Merging Rebasing Git

2017-09-10 14:29:03

眼力

2010-09-08 15:41:28

SIP協議棧

2010-05-28 11:09:51

SVN功能

2011-11-08 10:29:44

2010-08-25 16:12:34

職場

2014-01-07 17:08:02

Java開源框架

2023-05-26 15:53:48

MidjourneyAI圖像

2021-03-15 21:07:17

IT行業薪酬薪水

2010-06-01 14:39:15

NoSQL
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 影音先锋中文字幕在线观看 | 亚洲成人免费电影 | 欧美成视频在线观看 | 欧美成年黄网站色视频 | 国产精品久久久久一区二区三区 | 久久久久一区二区三区 | 黄色免费av | 欧美日韩在线看 | 欧美一级久久精品 | 欧美自拍另类 | 久久高清亚洲 | a级在线免费 | 久久久久国产一区二区三区不卡 | 成人小视频在线观看 | 精品欧美乱码久久久久久1区2区 | 成人在线一区二区三区 | 97精品国产手机 | 天天天操| 米奇狠狠鲁 | 一级做a爰片性色毛片16美国 | 亚洲精品白浆高清久久久久久 | 激情国产在线 | 精品不卡 | 久草精品在线 | 91免费在线 | 国产99精品 | 视频在线一区二区 | 亚洲黄色一级毛片 | 精品av天堂毛片久久久借种 | 日韩电影中文字幕在线观看 | 在线观看涩涩视频 | 午夜寂寞影院在线观看 | 国产高清在线精品一区二区三区 | 日韩av一区二区在线观看 | 久久久久久久综合 | 中文精品视频 | 国产在线精品一区二区 | av中文字幕在线观看 | av在线免费观看网址 | 97视频在线观看网站 | 国产伦精品一区二区三区照片91 |