蘋果的 Swift 語言是什麼原理,為什麼會有即時效果?

看了開發者大會,對Swift比較驚奇


即時效果跟語言本身無關,跟運行時(runtime) 具體實現有關。

這個東西的原型在Programming Language裡面叫REPL(Read–eval–print loop). 就像在ipython 或者是matlab 裡面你輸入一行statement就列印出來具體結果的高級版,基本上就是實時輸出當前的程序編譯運行的結果。

你甚至可以有C的REPL, 比如c-repl


視頻封面Light Table - a new IDE視頻


這種東西其實老掉牙了,在Blend for Visual Studio裡面,你用JS寫app也有一樣的效果,而且更屌的是,在運行的時候直接修改UI會自動識別並且應用在皮膚部分的代碼上。


啥?你是在說這個嗎?
JS Bin - Collaborative JavaScript Debugging


蘋果的 Swift 語言的Playground即時效果是什麼原理?

答:可以參考兩種東西

一、網頁遊戲的廣告
我們看到一個好萊塢式美輪美奐的宏大3D戰爭畫面,然後是大牌影星盛裝強力推薦。點進廣告去,一個20世紀的FC遊戲躍然屏上。真正運行Playground,沒有發布會的Demo中美輪美奐的場景,只是一個……廣告效果,你甚至不能把他放入正式的Swift程序中。

二、附贈的小布偶
正如Playground的名字一樣,這只是個雜耍般的小花樣,在整個語言中就像購物贈送的小布偶
一樣。並不是一個貫穿功能的基本特性,只是一個用來幫助入門的小練習場地。簡單的即時效果並不困難,將特定語句轉化成文字和固定模式的圖像顯示出來而已。類似可以同屏幕預覽的工具很多,比如所有的專業網頁編輯器,VB6和Python中的即時指令等。這個特性只支持簡單即時互動,對於整個語言來說無足輕重,對開發商業項目沒有作用。但對於初學者,或者特定情況下,能帶來一些趣味性和直觀性的體驗。


那個 Playground 是某種抽象解釋
你要我做我也做的出來……嗯,用 Patrisika 的框架,跑在 JS 上


它就是檢測到改變後, 重新編譯了……


Swift編程語言 http://www.kokojia.com/biancheng/video23195-1376.html這個鏈接裡面內容挺好的,有興趣的可以看看,說不定對你有所幫助。


視頻封面Bret Victor - Inventing on Principle視頻
兩年前


很好奇如果寫一個大型矩陣計算程序。。機器會不會卡死。。


Swift編程入門 可以學習一下這個,中文翻譯


看看cling吧通過llvm,c++都能REPL了


推薦閱讀:

iPhone 6 好還是 iPhone 6 Plus 好?
你用過的最好用的 iPhone 支架是哪一款?
蘋果為什麼對 『i-』 字頭前綴青睞有加?
剛買了 Macbook Air,第一次用蘋果電腦,需要做什麼?
蘋果為何要 10 億美金戰略投資滴滴出行?

TAG:蘋果中國 | 蘋果公司AppleInc | Xcode | Swift語言 |