1.內(nèi)部使用 C 的 longjmp 機(jī)制讓出一個協(xié)程。?因此,如果一個 C 函數(shù) foo 調(diào)用了一個 API 函數(shù), 而這個 API 函數(shù)讓出了(直接或間接調(diào)用了讓出函數(shù))。 由于 longjmp 會移除 C 棧的棧幀, Lua 就無法返回到 foo 里了。
2.為了回避這類問題, 碰到 API 調(diào)用中調(diào)用讓出時,除了那些拋出錯誤的 API 外,還提供了三個函數(shù): lua_yieldk, lua_callk,和 lua_pcallk 。 它們在讓出發(fā)生時,可以從傳入的 延續(xù)函數(shù) (名為 k 的參數(shù))繼續(xù)運行。
3.我們需要預(yù)設(shè)一些術(shù)語來解釋延續(xù)點。?對于從 Lua 中調(diào)用的 C 函數(shù),我們稱之為 原函數(shù)。?從這個原函數(shù)中調(diào)用的上面所述的三個 C API 函數(shù)我們稱之為 被調(diào)函數(shù)。 被調(diào)函數(shù)可以使當(dāng)前線程讓出。 (讓出發(fā)生在被調(diào)函數(shù)是 lua_yieldk, 或傳入 lua_callk 或 lua_pcallk 的函數(shù)調(diào)用了讓出時。)
4.假設(shè)正在運行的線程在執(zhí)行被調(diào)函數(shù)時讓出。?當(dāng)再次延續(xù)這條線程,它希望繼續(xù)被調(diào)函數(shù)的運行。 然而,被調(diào)函數(shù)不可能返回到原函數(shù)中。 這是因為之前的讓出操作破壞了 C 棧的棧幀。 作為替代品,Lua 調(diào)用那個作為被調(diào)函數(shù)參數(shù)給出的 延續(xù)函數(shù) 。 正如其名,延續(xù)函數(shù)將延續(xù)原函數(shù)的任務(wù)。
5.注意這里那個額外的顯式的對延續(xù)函數(shù)的調(diào)用:Lua 僅在需要時,這可能是由錯誤導(dǎo)致的也可能是發(fā)生了讓出而需要繼續(xù)運行,才會調(diào)用延續(xù)函數(shù)。 如果沒有發(fā)生過任何讓出,調(diào)用的函數(shù)正常返回, 那么 lua_pcallk (以及 lua_callk)也會正常返回。 (當(dāng)然,這個例子中你也可以不在之后調(diào)用延續(xù)函數(shù), 而是在原函數(shù)的調(diào)用后直接寫上需要做的工作。)
6.Lua 會把延續(xù)函數(shù)看作原函數(shù)。?延續(xù)函數(shù)將接收到和原函數(shù)相同的 Lua 棧,其接收到的 lua 狀態(tài)也和 被調(diào)函數(shù)若返回后應(yīng)該有的狀態(tài)一致。 (例如, lua_callk 調(diào)用之后, 棧中之前壓入的函數(shù)和調(diào)用參數(shù)都被調(diào)用產(chǎn)生的返回值所替代。) 這時也有相同的上值。 等到它返回的時候,Lua 會將其看待成原函數(shù)的返回去操作。
7.我們需要預(yù)設(shè)一些術(shù)語來解釋延續(xù)點。?對于從 Lua 中調(diào)用的 C 函數(shù),我們稱之為 原函數(shù)。 從這個原函數(shù)中調(diào)用的上面所述的三個 C API 函數(shù)我們稱之為 被調(diào)函數(shù)。 被調(diào)函數(shù)可以使當(dāng)前線程讓出。 (讓出發(fā)生在被調(diào)函數(shù)是 lua_yieldk, 或傳入 lua_callk 或 lua_pcallk 的函數(shù)調(diào)用了讓出時。)
8.假設(shè)正在運行的線程在執(zhí)行被調(diào)函數(shù)時讓出。?當(dāng)再次延續(xù)這條線程,它希望繼續(xù)被調(diào)函數(shù)的運行。 然而,被調(diào)函數(shù)不可能返回到原函數(shù)中。 這是因為之前的讓出操作破壞了 C 棧的棧幀。 作為替代品,Lua 調(diào)用那個作為被調(diào)函數(shù)參數(shù)給出的 延續(xù)函數(shù) 。 正如其名,延續(xù)函數(shù)將延續(xù)原函數(shù)的任務(wù)。
希望能幫到你,謝謝!
會的,為什么?
2013 年,美國在線編程教育網(wǎng)站 code.org 發(fā)起“編程一小時”活動,時任美國總統(tǒng)奧巴馬不僅拍攝了一段宣傳片支持,并且親身上陣寫了一段 Java 代碼,這也讓他成為美國史上*位會寫代碼的總統(tǒng)。奧巴馬之后,美國科技圈名人比爾蓋茨、扎克伯格等也紛紛發(fā)言,號召編程要從娃娃抓起。
現(xiàn)在已2021年,國內(nèi)少兒編程已經(jīng)得到一二線城市大多數(shù)家長的認(rèn)可,在個別地區(qū)政策上也得到了支持,編程開始走進(jìn)*課堂。
您好,我們是國內(nèi)技術(shù)領(lǐng)先的兒童編程教育軟/硬件提供商,**人工智能學(xué)會合作教育企業(yè)。
關(guān)于課程質(zhì)量、師資力量等可以進(jìn)入我們官網(wǎng)詳細(xì)查看,教學(xué)方面可以讓孩子學(xué)習(xí)免費的體驗課程,來切身體會。
希望可以幫助到您。
童程童美通過趣味編程教育培養(yǎng)興趣;同時發(fā)現(xiàn)在編程領(lǐng)域有天賦的孩子,提供成為下一個IT精英的職業(yè)編程教育。少兒編程需要什么軟件分享:
1.Scratch(麻省理工)
Scratch是麻省理工為孩子開發(fā)的一種0元編程語言,這是一種0元語言,輔以入門課程、家長指導(dǎo)和強(qiáng)大的用戶社區(qū)。
Scratch使用程序積木塊的可視化界面為孩子(和家長)創(chuàng)造更有趣的體驗。孩子可以將程序積木塊(如動作、事件和運算符)堆疊在一起。
每個程序積木塊的形狀只允許它與兼容對象相結(jié)合,例如,“重復(fù)循環(huán)”的形狀就像一個橫向的“U”,讓孩子知道需要在循環(huán)的開始和結(jié)束之間放置一個塊。
Scratch可以用來制作真實的動畫和游戲,它有許多圖片和角色,可以自己上傳圖片和角色。如果計算機(jī)沒有連接到互聯(lián)網(wǎng),也可以使用Scratch,孩子們可以選擇在Scratch的在線社區(qū)分享自己的作品。
建議年齡:8-16歲
要求:運行Mac、Windows或Linux的計算機(jī)
2.Blockly(谷歌)
Blockly是谷歌對Scratch的改進(jìn),它借鑒了Scratch的可拖動程序積木塊的交互設(shè)計方法,但它可以用幾種不同的編程語言輸出代碼,如、Python、PHP、Lua和Dart。
Blockly和Scratch的區(qū)別在于,將程序積木塊鏈接在一起時,可以在屏幕的一側(cè)看到代碼,并且可以隨時切換編程語言來查看同一程序的語法差異。這使得Blockly成為所有年齡段教學(xué)代碼的理想選擇,包括年齡較大的孩子和成人。
如果這聽起來像是Scratch的驚人轉(zhuǎn)變,谷歌實際上是在與麻省理工合作開發(fā)基于Blockly平臺的下一代Scratch。
建議年齡:10歲以上
要求:運行Windows,MacOS或Linux的計算機(jī)
3.Alice
Alice是一個0元的3D編程工具,旨在教授面向?qū)ο缶幊陶Z言的概念,如C++。它使用熟悉的積木式方法,允許孩子通過編程相機(jī)運動、3D模型和場景來創(chuàng)建游戲或動畫。
Alice是由卡內(nèi)基梅隆*開發(fā)的。
建議年齡:10歲以上
要求:運行Mac,Windows或Linux的計算機(jī)
學(xué)編程是很有用的,會對孩子的學(xué)習(xí)奠定良好的學(xué)習(xí)基礎(chǔ)。少兒編程課程的目的并不是把孩子培養(yǎng)成一個程序員,而是以興趣為導(dǎo)向,著重培養(yǎng)孩子的創(chuàng)造力、創(chuàng)新力、想象力和人格健全能力。因此少兒編程教育在當(dāng)前看來還是很有用的。
學(xué)習(xí)少兒編程的好處:
1、鍛煉孩子的邏輯思維能力。少兒編程是跨*整合知識的*途徑,可以讓孩子慢慢學(xué)會如何取組織和完善自己的想法,把自己的想法努力變成一個生動和完整的作品,以此來增強(qiáng)孩子的自信心。
2、輔助學(xué)習(xí)。隨著大數(shù)據(jù)技術(shù)的發(fā)展,未來的學(xué)習(xí)過程將更加智能化,更多的智能體將以教育的形式走進(jìn)人們的生活,而編程語言是與這些智能體進(jìn)行交流的重要方式之一,所以掌握編程語言對于學(xué)習(xí)也有重要意義。
3、方便生活。隨著5G的落地應(yīng)用,未來在生活場景中會有越來越多可編程的智能體,掌握編程技術(shù)可以更加方便的按照自己的需求進(jìn)行各種個性化的設(shè)定。【學(xué)少兒編程可以提高孩子邏輯思維、專注力!】
如果對少兒編程感興趣,推薦咨童程童美。童程童美,成立于2015年,經(jīng)過6年的發(fā)展,打造出適合*孩子編程教育的解決方案,形成以人工智能編程、智能機(jī)器人編程、信息學(xué)奧賽編程等課程為核心的課程體系。230+學(xué)習(xí)中心,覆蓋*50+城市, 2000+真人講師。【童程童美少兒編程體驗課,點擊可免費報名試聽】
只要一個電話
我們免費為您回電