欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

來自ZeroTurnaround的新JVM語言Frostbyte怎么用

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)來自ZeroTurnaround的新JVM語言Frostbyte怎么用,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

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

ZeroTurnaround很榮耀地發(fā)布了Frostbyte ,一種新的基于JVM棧的語言。該語言在出于使用標(biāo)準(zhǔn)Java軟件棧與工具的無奈下產(chǎn)生的。此語言很有希望成為過去多年來大量的JVM語言的答案。我們有些許信心并相信Frostbyte將會一并解決軟件開發(fā)者處理的社會與工程問題。

Frostbyte作為一個基于棧的語言最關(guān)鍵的創(chuàng)新是使用了帶括號的波蘭表達式語法。取代了以往先將指令壓入棧然后再執(zhí)行一條命令的方式,我們讓你能夠使用另外一種方式編碼,一種讓你感覺更加自然的方式。

Frostbyte代碼映射非常接近Java字節(jié)碼,任何代碼的系統(tǒng)開銷都表現(xiàn)得非常明顯。我們擇優(yōu)的挑選了一些能夠兼顧語言簡潔與功能強健,讓你能夠替換了大多數(shù)的Java程序。

示例

先看看最基本的hello world例子:

fun main :=    (call echo „Hello World!“)

Frostbyte允許你定義二進制塊,它總是用內(nèi)聯(lián)方式調(diào)用。例如,以下就是一個使用標(biāo)準(zhǔn)庫echo二進制塊的例子:

chunk echo :=    (with System (with (get out) (call println ...)))

擴展hello world以后:

fun main :=    (with System (with (get out) (call println „Hello World!“)))

Frostbyte使用Ropes作為主要的文本類型來取代String,但是Ropes會被轉(zhuǎn)換為String,例如實現(xiàn)已有的Java代碼:

fun main (args: Rope[]) :=    (echo (with „Hello, “ (call concat (args head))))

如果上面的代碼保存為hello.fb文件,你可以用fb命令執(zhí)行它:

> fb hello Jim  Hello, Jim

Frostbyte語言是完全國際化的語言。事實上,內(nèi)建的默認語言是Estonian(愛沙尼亞語),但是語言會被從每一個源文件中檢測到。其他的語言提供簡單的轉(zhuǎn)換文件--英語(英國)與俄語被默認支持了。例如:

Köis=Rope  esik=main  kaja=echo  võttes=with  kutsu=call  jätka=concat  head=pea

Estonian(愛沙尼亞語)表達的hello.fb如下:

fun esik(argumendid: Köis[]) :=    (kaja (võttes „Hello, “ (kutsu jätka (võttes argumendid (kutsu pea)))))

你可以為你自己的代碼提供翻譯映射--轉(zhuǎn)義將會作為聲明存儲在.class文件中。Frostbyte IDE(即將推出)將會懂得這些轉(zhuǎn)義并根據(jù)你選擇的語言給與代碼自動完成功能。

當(dāng)然,一個語言介紹沒有處理Fibonacci問題是不完整,一下我們有幾種方式可以處理。使用if語句與遞歸是一種方法。我們嘗試免去使用if語句,因為它確實是一種退化的模式匹配形式。在Frostbyte一種模式匹配的方法是在函數(shù)參數(shù)中描述模式并為每一種情況提供分離的函數(shù)體。

fun fib (0) := 0 fib (1) := 1 fib (n) := + (call fib (- n 1)) (call fib (- n 2))

正如你所看到的,例如+與*操作符需要call關(guān)鍵字。你也可以用op關(guān)鍵字穿件自己的操作符。

模式匹配也可以以表達式的方式出現(xiàn)在函數(shù)體內(nèi),一下是一個Estonian(愛沙尼亞語)的示例。我們將要介紹代碼塊,循環(huán)/閉包 和 let(olgu) 關(guān)鍵字。

// get current time as Aeg (Time) type  amps praegu: Aeg := p&ouml;&ouml;ra (v&otilde;ttes System (kutsu currentTimeMillis)) Aeg     // Funktsioon, mis leiab raamatukogust laenutatud raamatud,   // mille tagastamisega on hilinetud v&otilde;i mis on rikutud  fun leiaHilinenudRaamatud := (   olgu raamatud := v&otilde;ttes Andmebaas (kutsu leiaLaenutatudRaamatud);   v&otilde;ttes raamatud (kutsu koonda ( raamat ->     ons? (< (v&otilde;ta t&auml;htaeg) (kutsu praegu)) ->       (uus Hilinemine raamat)     ons? (v&otilde;ta rikutud?) ->       (uus Rikkumine raamat)   ))  )

為了讓Estonian(愛沙尼亞語)能看懂,下面列出了翻譯映射:

amps=chunk  praegu=now  Aeg=Time  p&ouml;&ouml;ra=convert  olgu=let  koonda=collect (filter + map)  ons?=case (introduce a pattern)  uus=new raamatud=books  raamat=book  t&auml;htaeg=due date  etc.

復(fù)雜示例

讓我們來看看更加復(fù)雜的關(guān)于類的介紹:

class Vector2(x: Double, y: Double) :=   // dot product   op &zwnj;&middot;(that: Vector2) :=     + (* (get this x) (get that x)) (* (get this y) (get that y))

我們可以將(get this x)寫為(with this (get x)),但是我們也with關(guān)鍵字來縮短:

op &zwnj;&middot;(that: Vector2) :=    (with this (      + (* (get x) (get that x)) (* (get y) (get that y))    ))

但更重要的是,如果我們編寫 with X or Y,那么X和Y的元組將被放入棧中,任何訪問這些域或者方法將會在X和Y兩者間交替。

op &middot;(that: Vector2) :=   (with this or that (     + (* (get x) (get x)) (* (get y) (get y))   ))

我們可以再看看一切循環(huán)的模式,然后將其循環(huán)減少:

(with this or that (     + (* dup (get x)) (* dup (get y))   ))

dup 關(guān)鍵字將復(fù)制接下來的二進制碼指令,但是結(jié)合this or that使用意味著***個(get x)將會 變成 this.x并且下一個(get x將會編程that.x),這是多么屌的特性啊。

二進制碼

我敢打賭你一定對Frostbyte生成的二進制碼很好奇。讓我們再看看展開了的hello world吧。

fun main := (with System (with (get out) (call println &bdquo;Hello World!“)))

javap將生成這些:

0:   getstatic       #16; //Field java/lang/System.out:Ljava/io/PrintStream;  3:   ldc             #22; //String Hello World!  5:   invokevirtual   #24; //Method java/io/PrintStream.println:(Ljava/lang/String;)  8:   return

確實這個轉(zhuǎn)換相當(dāng)?shù)刂苯樱簑ith System(get out)在這種情況下轉(zhuǎn)換為getstatic。然后“Hello World”變成ldc,然后call invokevirtual。call總是被轉(zhuǎn)換為invokestatic,invokevirtual或者invokespecial ,除了當(dāng)它被用來擴充一個chunk ,在這種情況下它會被chunk替換,任何的參數(shù)將會被插入到bitemarks(例如在echo chunk中,...便是一個bitmark)

chunk echo := (with System.out (call println ...))

Frostbyte 1.0發(fā)展藍圖

該語言仍在發(fā)展壯大中,但是我們工作已經(jīng)很接近***個公測版了。為了做好1.0版,我們有一些很牛逼的計劃:

  • First class co-monads

  • Kabanov-Raudj&auml;rv type inference

  • Lazy chunks

  • goto statement with labels

  • Dynamorphisms

然而,我們?nèi)栽诓粩嗯Φ臑楣冒鎶^斗著。以下是一些讓你能夠熟悉該語言以及大版本更新的一些鏈接:

  • Frostbyte 1.0 Language Specification

  • Documentation, Tutorials and Examples

  • API reference

上述就是小編為大家分享的來自ZeroTurnaround的新JVM語言Frostbyte怎么用了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

新聞名稱:來自ZeroTurnaround的新JVM語言Frostbyte怎么用
當(dāng)前URL:http://aaarwkj.com/article20/gihpjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、移動網(wǎng)站建設(shè)、用戶體驗營銷型網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站網(wǎng)頁設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
久久精品视频视频视频| 日韩成人在线高清视频| 九九视频免费观看91| 国产欧美日韩午夜激情| 91亚洲国产成人精品性色| 亚洲成人黄色在线网站| 自拍偷拍欧美日韩第一页| 暖暖免费中文高清日本三区| 一区二区三区欧美日| 蜜臀视频一区二区在线播放| 精品国产av一区二区麻豆| 亚洲国产中文字幕高清| 日本一欧美一欧美一亚洲| 男女真人啪啪视频免费| 熟女高潮av一区二区| 午夜情色视频在线观看| 婷婷国产成人精品一区二| 国产自偷一区二区三区| 国内精日韩欧中文的话| 国产三级在线观看91| 欧美颜射一区二区三区| 懂色粉嫩蜜臀久久一区二区| 欧美亚洲另类色自拍偷拍| 国产天美剧情av一区二区| 国产美女精品一区二区三区| 下载一个日韩暴力黄色录像| 久久国产精品亚洲av四虎| 天堂av在线资源观看| 麻豆久久精品国产亚洲精品超碰热| av免费在线不卡一区| 亚洲午夜黄色生活片观看| 国产三级网站在线观看播放| 丰满人妻被猛烈进入中| 亚洲欧美日韩国产一区二区三区| 人妻丝袜中文字幕在线| 国产日韩欧美在线精品| 成人在线免费黄色小说| 亚洲第一狼人天堂在线| 国产91日韩欧美在线| 亚洲av无毛在线观看| 欧美日韩高清一区二区三区|