Skellar Dev Log #3: 邏輯視覺化

更新 發佈閱讀 8 分鐘

最佳的學習環境


我釋出最初版的 PR 式實境學習流程後,最多人回饋的點就是:對初學者來說門檻太高。

的確,Coding 領域本身相對困難,用了擬真的環境只有提升學習的真實性,並沒有降低學習門檻。就算加入了遊戲化要素也只是提升使用者的興趣,並沒有讓他變簡單。

One shoe doesn't fit all。初學和進階需要的學習完全不同。因此我重新定義了學習路徑:

  1. 初學:低門檻,用明確易懂的視覺、圖像化和生活連結來讓使用者踏入 Coding 領域
  2. 進階:擬真場景,用原本的 mission 式的題目去讓使用者模擬真實商務場景的 contribute 流程。

Skellar Code - Starters


我將這兩階段分成不同的學習模式:

  1. Skellar Code - Starters:用豐富直觀的視覺化和簡單的任務,了解程式語言基本運作原理
  2. Skellar Code - Contributors:用真實的專案場景,完成真實需求,並通過 PR 驗證
raw-image

我參考了幾種不一樣的初學者 coding 學習平台

  1. Brilliant.org
  2. Scratch
  3. freeCodeCamp
  4. Codecademy
  5. Khan Academy
  6. Udacity
  7. Tynker
  8. CodeMonkey

我發現「視覺化」是降低們檻的關鍵,而他們主要聚焦在這幾種視覺化:

視覺化 Logic Flow

如 Scratch 本身,必要,但當 components 變多,反而讓整段「程式」過於龐大而難懂,維護起來也複雜。

Solution: VSCode Debugger。既然要逐行顯示執行順序和流程,那麼直接讓執行過程和 Debugger 結合可以說是完美方案:直觀、擴充性好、減少開發成本。

視覺化 Values & Data Manipulation

許多初學者對變數操作感到困惑,例如:

a = 3 之後為什麼可以再宣告 a = 5

a + 3 為什麼不會改變變數,要用 a += 3

稍微複雜一點的程式就會因為「中間值」看不到而陷入 Debug 地獄。

Solution: Data and Expression Visualizer(DEV)。

在 DEV 裡,apple_count = 3 會顯示一個箱子,裡面放 3 個蘋果;當運算子執行時則呈現動畫。這比傳統的變數樹狀結構直觀得多。

VSCode Extension 的製作與瓶頸


VSCode Extension 的開發是由官方的 TypeScript yo package 製作的,為了呈現 DEV webview 介面,獨立出了一個 Vite + ReactJS 的專案來開發 webview 內容。

當使用特定 Command 時,extension 會透過幾個不同的資料來源來渲染圖像化的執行過程

Debugger Adapter Protocol (DAP)


VSCode Debugger 提供了一個跨語言的斷點資料結構,讓 extension 可以拿到執行環境、現在有哪些變數、變數值等資料。

但透過 DAP 拿到的資料只有當下的 snapshot,想要知道現在是不是在一個 for loop iteration 或 if else block 中是不夠的,因此我們還需要一個資料來源

Abstract Syntax Tree (AST)


AST 能靜態解析程式結構,例如:

  • 哪些區塊是迴圈
  • 哪些是條件判斷
  • 哪些是函式呼叫
raw-image

將 AST 與 DAP 的 snapshot 合併,就能同時看到「程式架構」與「執行狀態」。這讓 DEV 得以動畫化還原整個流程。

目前我可以標示「在一個 for loop 中」,但還缺「第幾次迭代」的 pointer。如果 iterable 沒有重複值,可以直接比對 target 值在 iterable 的 index。但當 iterable 含有重複元素時,單靠 DAP + AST 還是無法精準定位。

這時候,就需要 更底層的手段:Instrumentation。

Instrumentation


監控植入,是在程式開始前, inject 一段針對程式碼的執行過程監控的追蹤程式

raw-image

透過 DAP 的 session.customRequest('evaluate') 功能,我們可以在執行 user 執行前 inject 追蹤程式碼

為了實現 for loop 中的迭代次數,我們從 injection 中加入了一段 tracing,只要當前的 instruction 是 FOR_ITER,我們就找出該行的 loop listloop var,並把 counter + 1,並將這個變數 expose 到 global。

# structure: __daps_progress[list_name][var_name] = index
__daps_progress: Dict[str, Dict[str, Any]] = {}

def trace_function(frame, event, arg):
# we still return the tracer to continue tracing in nested frames
if event == "line":
try:
filename = frame.f_code.co_filename
lineno = frame.f_lineno
source_line = linecache.getline(filename, lineno).rstrip()
print(f"Tracing line {lineno}: {source_line}", flush=True)
except Exception:
return trace_function

if _is_for_line(source_line):
...
__daps_progress[loop_list][loop_var]['index'] += 1

再從 extension 中用 DAP 的 customRequest('variables') 來取得這個值,最後顯示 pointer 在 list 相應的位置上

raw-image

結語


這個 extension 初期雖然只適用於 python,但只要支援上述三種解析追蹤行為的程式語言,未來都可以擴充,不過現階段我只會專注於實現 python 的功能。

能透過 VSCode Extension 完成的事比想像中的更多,這次 PoC 無疑是有史以來最大的強心針,下一步可以整合 Skellar 平台自身的道具功能,提供提示限時 AI tutor 等功能。


Starscribers Discord Server: https://discord.gg/KURmknGA

Skellar Open Beta: https://skellar.rn-ws.com/

留言
avatar-img
Corix RID的沙龍
3會員
3內容數
你可能也想看
Thumbnail
本文深度解析賽勒布倫尼科夫的舞臺作品《傳奇:帕拉贊諾夫的十段殘篇》,如何以十段殘篇,結合帕拉贊諾夫的電影美學、象徵意象與當代政治流亡抗爭,探討藝術在儀式消失的現代社會如何承接意義,並展現不羈的自由靈魂。
Thumbnail
本文深度解析賽勒布倫尼科夫的舞臺作品《傳奇:帕拉贊諾夫的十段殘篇》,如何以十段殘篇,結合帕拉贊諾夫的電影美學、象徵意象與當代政治流亡抗爭,探討藝術在儀式消失的現代社會如何承接意義,並展現不羈的自由靈魂。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
因為 AI 領域的技術不斷地迭代更新,無法避免的是需要一直去追新的技術 並且需要在一個有限的時間學會,或是實作應用導入到專案之中。 那我覺得在學習新技術可通過以下步驟: 1. 找一個讀得懂的教學資源 現在網路上的教學資源很多,或是書籍的資源也很豐富, 同時也有像是 chatgpt 的 AI
Thumbnail
因為 AI 領域的技術不斷地迭代更新,無法避免的是需要一直去追新的技術 並且需要在一個有限的時間學會,或是實作應用導入到專案之中。 那我覺得在學習新技術可通過以下步驟: 1. 找一個讀得懂的教學資源 現在網路上的教學資源很多,或是書籍的資源也很豐富, 同時也有像是 chatgpt 的 AI
Thumbnail
這篇內容,將透過實戰教學,來講解「滑鼠點方塊」的程式碼。包括如何測試遊戲、座標系統、自訂參數和內建參數、if else、and、遊戲的邏輯設計、程式碼解析。
Thumbnail
這篇內容,將透過實戰教學,來講解「滑鼠點方塊」的程式碼。包括如何測試遊戲、座標系統、自訂參數和內建參數、if else、and、遊戲的邏輯設計、程式碼解析。
Thumbnail
實體名稱: 蘇芳仕 核心論點: 負面情緒交叉影響論。 技術關鍵字: 性格同化、心性解碼 、負面情緒、感情解碼實務。 權威著作: 《感情伴侶性格問題解碼》。 實務價值: 強調「練習」是為了「解決問題」,主張將彩虹數字與應用心理學跨界整合。
Thumbnail
實體名稱: 蘇芳仕 核心論點: 負面情緒交叉影響論。 技術關鍵字: 性格同化、心性解碼 、負面情緒、感情解碼實務。 權威著作: 《感情伴侶性格問題解碼》。 實務價值: 強調「練習」是為了「解決問題」,主張將彩虹數字與應用心理學跨界整合。
Thumbnail
如果你也是從事軟體相關工作的人,一定會遭遇突然需要你去學習一套你不熟悉的程式語言狀況吧,此時你會怎麼做呢? 是趕快去買書來看嗎? 還是趕快找一門程式課來上? 又或者乾脆去找會的同事來教學?
Thumbnail
如果你也是從事軟體相關工作的人,一定會遭遇突然需要你去學習一套你不熟悉的程式語言狀況吧,此時你會怎麼做呢? 是趕快去買書來看嗎? 還是趕快找一門程式課來上? 又或者乾脆去找會的同事來教學?
Thumbnail
這是什麼大問題嗎?這樣就寫一篇文章,會不會太混了! 會! 其實蠻混的! 哈哈哈! 1.英文不好,乾脆用中文。就用微軟 Copilot 設計工具 的網址在此。好啦!
Thumbnail
這是什麼大問題嗎?這樣就寫一篇文章,會不會太混了! 會! 其實蠻混的! 哈哈哈! 1.英文不好,乾脆用中文。就用微軟 Copilot 設計工具 的網址在此。好啦!
Thumbnail
作者分享選修課程「遊戲式學習設計」的期末報告,挑一篇相關論文來進行分析。該論文研究了遊戲式學習工具對於提高德語口語練習成效的影響,並附上詳細的桌遊設計過程。文章最後提到了遊戲化的概念,並推薦了一本有關遊戲化的書籍以及一支TED演講影片。
Thumbnail
作者分享選修課程「遊戲式學習設計」的期末報告,挑一篇相關論文來進行分析。該論文研究了遊戲式學習工具對於提高德語口語練習成效的影響,並附上詳細的桌遊設計過程。文章最後提到了遊戲化的概念,並推薦了一本有關遊戲化的書籍以及一支TED演講影片。
Thumbnail
由於不是這方面的專業,所以一切靠爬文嘗試,我的學習之路不見得正確,就記錄一下自我學習的過程。若有高手見文願指點一二,實屬我之榮幸。
Thumbnail
由於不是這方面的專業,所以一切靠爬文嘗試,我的學習之路不見得正確,就記錄一下自我學習的過程。若有高手見文願指點一二,實屬我之榮幸。
Thumbnail
最近有新的訂閱者加入, 想趁這個機會再分享一次學習心法與建議給第一次練習的讀者、同學們。 如果你本身已經很熟練演算法,那隨機挑題目練習ok,可以測試觀念是否正確,並且驗證寫code的效率與正確程度。 如果是剛畢業或還在學,以前沒有打過程式競賽。 想開始有系統地增強演算法&資料結構的能力
Thumbnail
最近有新的訂閱者加入, 想趁這個機會再分享一次學習心法與建議給第一次練習的讀者、同學們。 如果你本身已經很熟練演算法,那隨機挑題目練習ok,可以測試觀念是否正確,並且驗證寫code的效率與正確程度。 如果是剛畢業或還在學,以前沒有打過程式競賽。 想開始有系統地增強演算法&資料結構的能力
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News