誰來設計個可以取代 Excel 的 DSL?
設計 DSL 來解決程式設計的問題
這兩天的一早,我的好友 Nigel Daly 傳了訊息,告訴我 LLM 又有了什麼新的進展。比方說,LLM 在解進階程式設計題目的分數又提高了。
我一點也不興奮又或是焦慮,因為我十年前就已經放棄進階程式設計,因為我實在是說服不了自己,在白板上旋轉紅黑樹對於產業或是人類的發展有什麼意義…。
另一方面,最近我剛解完的問題,似乎可以跟友人解釋什麼是軟體工程師的工作。
客戶提供的資料是一分Excel 。
Excel 文件中含有一個矩陣。該矩陣對應於客戶的資料庫,標示出需新增、刪除或合併的項目。
以上圖為例:
綠色表示這兩格是要新增的。
紫色表示這一格是要刪除的。
紅色表示這兩個 columns 要合併成為一個 column 。
我需要交出的程式裡應提供以下功能:
讀取 Excel 檔,分析這個矩陣,並且生成對應的 SQL 語句。
高層次地來講,這個程式應該包含以下幾個步驟:
讀取 Excel
解析顏色
為每一種顏色,做出合適的 SQL 語句轉換。
這邊只有第三步驟的複雜度,讓我覺得沒有話講,畢竟已經是 SQL 了。
第一步與第二步都因為 Excel 的關系而複雜了非常多:Excel 的儲存格所儲存的顏色資訊,除了儲存格背景色之外,還有儲存格字型顏色。此外,儲存格背景色的資訊裡,顏色也並不是只有 RGB 而已這麼單純,還有色度 (Tints) 也要考慮在內。
理想中的解法
在我想象的理想世界裡,我們會有一種概念類似 Markdown 格式的 DSL ,取名叫 marksheet ,是純文字的格式。一般人可以用 marksheet 來表現 Excel 表的部分語意,比方說:儲存格、顏色、公式等。marksheet 的語法簡單易讀,同時也可以快速被轉換成 Excel 。
當使用者有一些需求,比方說,要修改資料庫,本來只有 Excel 的時候,自然是在 Excel 裡畫矩陣來呈現。一旦有了 marksheet 這種 DSL ,就可以透過 marksheet 來呈現。而其它的程式要處理 marksheet 也會比處理 Excel 要來得簡單得多。
簡單來說,如果說 Markdown 取代了 M$ word ,這個 marksheet 就是用來取代 Excel 。
當然,我知道 marksheet 還不存在,而且可能也很不好設計。然而,如果 marksheet 存在的話,我最近開發用來解析 Excel 生成 SQL 的程式,就有機會可以大幅地簡化。
不知道未來輔助編程的 LLM 會不會順手幫我設計個 marksheet ?如果會的話,我想屆時我可以考慮轉行了。


