Bruce Dodson |
|
雖然這些年來我在 SciTE 中做出了許多外科改良,但我迄今最大的、也許最廣獲好評的貢獻,便是將 Lua 5 整合到 SciTE 中。
此專案建構於先前的努力成果之上。特別是在幾年前,Lua 3.2 的早期原型嵌入作為 SciTE 擴充介面的例證而撰寫。我相信 PhilippeLhoste 有參與,儘管這在很大程度上也許也是 NeilHodgson? 的作品。2003 年 11 月,我讓這段程式復活,並使其與當前的 SciTE 程式碼庫配合使用。12 月,根據 PhilippeLhoste 和 JeremyCowgar 等人的催促,我重新裝配這段程式供 Lua 5 使用。1 月,我讓它達到大致穩定的狀態,而從那時起,我便致力於提升其可用性,並納入 SciTE 社群的想法。這項工作量很大,但樂趣也很多。
就指令碼語言而言,Python 過去一直是我的首要選擇,儘管在務實考量下我也使用 Perl。對於嵌入,Python 一直是我的首選,因為它容易嵌入,並為主機應用程式提供了許多表現能力(例如 http://avpython.sf.net/)。然而,正如你們當中的一些人所知,Python 使用者認為,儘管 Python 擁有豐富、友善的嵌入 API,比起嵌入,擴充才是一種更好的做法。(我反對教條立場的看法在 AVPython 的案例中獲得實踐,因為我嵌入 Python 的應用程式早已撰寫完成,而且沒有附帶原始碼。)
我大約在 1995/1996 年時首次在擔任 Dr. Dobbs 讀者期間認識 Lua。(由於雜誌縮水但價格上漲,所以我不再閱讀該雜誌了。)這些年來,我曾混用它,但直到 SciTE Lua 嵌入專案為止,都沒有將它用於任何嚴肅用途。
SciTE 清單上曾被問及,「許多 SciTE 使用者來自 Python;為何 Python 未成為 SciTE 的延伸程式語言?」對此,有一些答案。最初的主要原因是 Lua 夠小,可以納入而不會讓 SciTE 臃腫,且對使用者而言,Python 使用者很容易就能上手,因為這是一種不錯的動態語言。Lua 3.x 有一個嵌入式 API,與 Python 的 API 一樣友善,因此很容易就上手。當改寫成 Lua 5 時,我發現一開始會覺得新的 API 帶點特異性,它會揭露底層堆疊。雖然在我逐漸習慣的過程中,這已成為一些錯誤的導因,但我已開始欣賞此種方法的優點。