Wolf<p>I think any large interesting program you might write could well have an embedded language within it, in which the user can write stuff that is just as good, and just as deep as built-in functionality. You want this. It’s a thing that makes programs compelling.</p><p>In <a href="https://hachyderm.io/tags/Vim" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Vim</span></a>, that embedded language is <a href="https://hachyderm.io/tags/VimScript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>VimScript</span></a>. In <a href="https://hachyderm.io/tags/emacs" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>emacs</span></a>, that’s <a href="https://hachyderm.io/tags/elisp" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>elisp</span></a> (which in fact, I think the whole thing is written in). In a <a href="https://hachyderm.io/tags/smalltalk" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>smalltalk</span></a> environment, you control the entire environment with Smalltalk, just as elisp applies to Emacs. For many, many things, that language is <a href="https://hachyderm.io/tags/lua" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>lua</span></a> ( <a href="https://hachyderm.io/tags/NeoVim" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>NeoVim</span></a>, many games, <a href="https://hachyderm.io/tags/pandoc" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>pandoc</span></a>, <a href="https://hachyderm.io/tags/redis" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>redis</span></a>, this list goes on).</p><p>I used to think there were really two reasonable mainstream languages you could use here: <a href="https://hachyderm.io/tags/Python" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Python</span></a> or <a href="https://hachyderm.io/tags/javascript" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>javascript</span></a>. Between those two, for a long time I felt that JavaScript was the winner. I think that has changed as Python has gotten faster, more powerful, and better known. But also, I think the answer might actually not be either of these two. It might be Lua. Lua is simpler and faster than either JavaScript or Python. It’s more embeddable. It’s designed specifically for this purpose. It’s in much wider use as an embedded scripting language. I don’t want Lua to be the answer. I like Python better. But I think Lua actually is the right answer.</p>