日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
專訪鄧草原:從對象和函數(shù)式到現(xiàn)實世界的項目

【獨家特稿】在09年7月,開發(fā)頻道的一篇譯文中,一位名叫Neil的美國開發(fā)者向我們廢了半天的口舌說明一個好的入門編程語言應該要盡可能的鼓勵學生發(fā)展天生的好奇心,最好是像Python一樣簡單,而千萬不要用Scheme這種可能是“最好”的學習編程的方式去扼殺了大多數(shù)年輕人的熱情。當然無論Neil持怎樣的觀點,事實上Scheme在美國的很多著名大學中都被列入第一年的計算機課程,而Neil也并不否認Scheme能夠為今后的編程學習打下簡單而堅實的基礎,并認為教授Scheme的學校很可能都是一流的。那么,這個Scheme是個什么樣的語言呢?

左貢網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、APP開發(fā)、響應式網(wǎng)站建設等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)公司于2013年創(chuàng)立到現(xiàn)在10年的時間,我們擁有了豐富的建站經驗和運維經驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設就選創(chuàng)新互聯(lián)公司。

“Scheme是Lisp語言的一個分支,它是現(xiàn)今仍然在使用的最古老的編程語言之一。它提供了最少的語法和極少幾個操作符。同樣重要的是,Scheme支持函數(shù)式編程范式,這意味著它可以用數(shù)學函數(shù)表達式來編程?!?/p>

今天這篇文章的主角不是Scheme——這個古老的語言在國內幾乎可以說是鮮為人知。不過,這個語言跟我們今天要討論的話題有很深的關系:為什么我們要開始關注和學習函數(shù)式語言。在剛剛結束不久的QCon 2010大會上,開發(fā)頻道有幸面對面的采訪到了NetBeans上的Erlang和Scala插件的作者鄧草原先生,對函數(shù)式語言在最近幾年的普及進行了探討。(值得一提的是,草原最初接觸的函數(shù)式語言正是Scheme和Lisp。)

鄧草原,宏爵財經資訊技術主管。除了NetBeans Erlang和Scala插件項目之外,他也是開源軟件AIOTrade項目的主創(chuàng)者,以及NetBeans夢之隊成員。在2009年11月,開發(fā)頻道曾經就Scala IDE的開發(fā)情況對草原做過一次郵件訪談,感興趣的讀者們可以參考這篇文章。

本次采訪的內容主要從兩個角度探討了函數(shù)式語言的普及:開發(fā)者的角度,以及項目的角度。從市場而言,這是一個供需的關系:因為項目需要這種特點的編程語言,所以需要招聘掌握此種語言的開發(fā)者,所以開發(fā)者需要開始學習。軟件領域是一個日新月異的產業(yè),雖然說函數(shù)式語言是一個計算機界的老古董,但這個埋了許久的金子在近幾年來開始發(fā)光了起來。也許是時候開始仔細考慮這樣一個選擇,迎著風險前進了。

以下是訪談實錄。

項目的角度:為什么要考慮函數(shù)式語言?

函數(shù)式語言近年來開始流行,原因何在?

草原:一個是我們現(xiàn)在的程序員適應變化,開發(fā)的周期比以前要加快了。以前一個程序寫出來,可能一年去開發(fā),然后兩三年間只需要小的修修補補就可以了。但是現(xiàn)在一個很明顯的特點就是,很多程序都是要求你去非常快的,根據(jù)需求的變動,根據(jù)系統(tǒng)的壓力,不斷地做一些滾動的開發(fā)。這個時候,對于一個語言的抽象能力就會有些新的要求。比如在Java里頭,我們可能會用到很多事件處理,內部類,匿名類這些東西,但是Java在語言的簡潔性方面,可以說一直到Java 6以來都沒有考慮的太遠。從這個角度來講,函數(shù)式編程它首先在語言的簡潔性方面帶來很多新的機制;或者說,函數(shù)式語言它提供了另外一種抽象的能力,可以讓你的代碼更加簡潔。

另外,有些問題本來就是適合用函數(shù)式來處理的。原來我們沒有這種手段的時候,這些問題可能要寫一堆命令式的代碼;那么現(xiàn)在有這種手段之后,我們就可以很快的跟實際問題通過函數(shù)的方式把它對上,代碼本身的質量也會得到很大的提高。

當然還有一個原因就是現(xiàn)在多核時代,并發(fā)和并行計算的要求。并發(fā)和并行,尤其是并行,相對而言是希望能夠把一個任務分配到多個CPU上去運行。因為相對來說,函數(shù)式語言強調的是引用透明,就是說,一個函數(shù)只要你給我一個相同的輸入,那么按理來說我會給出一個相同的輸出。像這種應用就是一個很好的并行計算的基本顆粒,這些顆??梢院唵蔚陌阉峙涞讲煌腃PU上面或者不同的節(jié)點上面去運行。這個是函數(shù)式語言現(xiàn)在受到更多關注的一個重要原因。

在項目中應用函數(shù)式語言,主要面對哪些障礙?

草原:我一直有這樣一個觀點:我們的語言是為了解決現(xiàn)實世界中的問題,而現(xiàn)實世界應該從對象和函數(shù)兩個角度去看?;蛘邞撨@樣說,現(xiàn)實世界既是函數(shù),又是對象。所以從這個角度來看,如果我們用一個純函數(shù)式的語言去解決我們現(xiàn)實問題的時候,而不是為了解決一個學術問題或是做一些計算,那么做這些工作的時候就會發(fā)現(xiàn),純函數(shù)語言只發(fā)揮了語言抽象能力的一面而已。所以我認為,如果讓函數(shù)式語言能夠得到更好的發(fā)展,最好的途徑是像Scala這樣:它是一個融合了OO和FP(函數(shù)式風格)的,而且融合的相當好的語言。我覺得更多的人以后會發(fā)現(xiàn),從函數(shù)的角度去抽象,Scala會幫助他們漸進的了解這一點。

使用函數(shù)式語言與其他語言進行多語言混合編程的效果如何?

草原:從多語言混合編程的角度來看,它們之間交互的關鍵我覺得還不是在它們是函數(shù)式或者是OO。因為現(xiàn)在,比如說Ruby,Erlang,還有Scala,Java,它們之間的互操作一般都是會通過一些特定的協(xié)議。只要這個協(xié)議得到保證,那么不管你之前在某個部件上面,或者是應用的某一塊上使用了Ruby或者Erlang,實際上都沒有關系。所以從這個角度而言,當你在一個項目中使用不同語言的時候,你重點考慮的可能是,我現(xiàn)在所要解決的這一塊是不是這個語言所適合的。

比如說我們以前有一個例子,是我們做過的一個銀行的項目,就是一個非常典型的混合語言的項目。這是個兩三年前的項目,那時候,銀行的業(yè)務系統(tǒng)是用Java編寫的,中間有一個Erlang的程式來把手機發(fā)過來的信息轉換成后臺的業(yè)務系統(tǒng)需要的協(xié)議,并且從后臺業(yè)務系統(tǒng)返回來的數(shù)據(jù)再轉換成手機上需要的協(xié)議。這個轉換過程是用Erlang來做的。但是在轉換過程中,我們用到了大量的XML文件的解析,這個解析本身,說實話,Erlang它并不擅長做這種字符串或是文本的處理,所以這一塊我們是用Scala寫的。Scala它包裝了一個XML的庫,這個時候,Scala就可以發(fā)揮它在JVM上運算的效率優(yōu)勢。Erlang和Scala之間的通訊使用的是Erlang的那套IPC通訊機制。然后在我們的前端還有個Web應用,這個Web應用在那時是用Ruby寫的。所以這是一個非常典型的混合語言的應用,試圖發(fā)揮不同的語言在做不同事情時的優(yōu)點。

但說實話,我本人是希望能找到一種更一般化的語言,能夠同時具有不同的抽象能力,它能同時在不同的領域用不同的方式去解決不同的問題。如果現(xiàn)在我再設計這套系統(tǒng)的話,可能里面就只剩Scala了。

#p#

開發(fā)者的角度:如何學習函數(shù)式語言?

:您是如何開始了解函數(shù)式語言的?

草原:我本身對函數(shù)式語言了解的話,可能是源于大學里頭了。大學里頭對于Lisp或是Scheme有過一些了解,只是那時候的了解還不夠深入,大概有個概念。真正把它應用到自己的實際項目當中應該是從Erlang開始的。這個大概是在三、四年前。那時候開始認真的去考慮,一個純函數(shù)式的語言,能夠在應用中能帶來哪些新的,或者說,抽象的手段,還有處理問題的手段。

:您覺得學習函數(shù)式語言的難點都有哪些?

草原:掌握函數(shù)式語言,我覺得相對來說,數(shù)學的基礎要扎實一些。如果實在是覺得自己在這方面有所欠缺的話,沒有關系,你可以把過去的很多算法啊,數(shù)學方面的這些東西都拿回來看一看。然后你再回頭去看函數(shù)式編程,那個時侯你可能會理解的更深一點。

另外呢,還要多做練習。因為如果你長久以來都是在做OO的開發(fā),忽然轉到函數(shù)式風格的編程,可能是需要一個適應的過程。這個時候,一些教程和練習就能起很大的作用。

:函數(shù)式編程的技術門檻會比較高嗎?

草原:以Scala為例,如果我從Java轉過去使用Scala的話,這個過渡實際上是比較循序漸進的。我可以按照傳統(tǒng)的風格寫很多命令式的代碼,但是在寫的過程中你會發(fā)現(xiàn),Scala提供了非常多的能夠以函數(shù)式風格處理的API,你可能慢慢的就會熟悉這種API。熟悉了API之后,可能就會慢慢有了函數(shù)式編程的習慣。我覺得這是最切實可行的轉變的一種手段,這也是為什么我比較看好Scala的原因。

【相關閱讀】

Scala如何改變了我的編程風格:從命令式到函數(shù)式

這篇可以算是是Artima總編Bill Venners的一個函數(shù)式語言初步體驗感言。在學習Scala的過程中,Bill總結道:“函數(shù)化的編程風格強調不可變對象、變量可被初始化但不能重新賦值(Java中的最終變量)、數(shù)據(jù)結構轉換,以及方法和控制的構造,最終產生一個沒有副作用的結果。這個領域的另一端是命令式的風格,以可變對象、變量可被重新賦值(Java里的正常變量)、在數(shù)據(jù)結構中索引、以及帶副作用的方法和控制構造為特征?!?/p>

因并發(fā)而生 因云計算而熱:Erlang專家訪談實錄

在08年對國內Erlang陣營的兩位先驅者,趙東煒和成立濤兩人的訪談。云計算的背景和多核的需求使函數(shù)式語言開始復蘇,但Erlang的學習的確有很大難度:“它主要是把一個程序拆成各個不同的任務,在并行上面跑,這其實不是很徹底的、完全新的東西,比如說我們從Google的地圖里面可以看到這個思想,但這就是并發(fā)的思想。它對我們大家目前所熟悉的語言會造成沖擊,這個思維模式會是一個難點,除此之外語言的語法是一個難點。”

F#簡明教程一:F#與函數(shù)式編程概述

這是一個系列文章,適合剛剛開始起步學習F#的開發(fā)者。F#是微軟.NET開發(fā)平臺的一門編程語言,其最大的特點是對函數(shù)式編程(FP,F(xiàn)unctional Programming)的引入;F#對面向對象(OOP)編程的支持也很出色,使用F#語言,開發(fā)人員可以自由選擇函數(shù)式編程或面向對象編程來實現(xiàn)他們的項目。此外,F(xiàn)#還可以與.NET平臺上C#、VB等其他編程語言緊密結合。

兩個相關技術專題:Scala編程語言 | F#函數(shù)式編程語言

專訪鄧草原視頻請見下一頁

#p#

視頻采訪實錄


網(wǎng)站標題:專訪鄧草原:從對象和函數(shù)式到現(xiàn)實世界的項目
本文來源:http://www.5511xx.com/article/djcgpsj.html