I don't think both aspects are to be analyzed at once. Or unless maybe through the lens of minimization.
In most mainstream languages you have a large syntax, lots of idiosyncracies, and limited ability to hack with the innards of your tool. Scheme is small, regular and freeing.
Now personally, after my first year of college, I asked why on earth can't we access the methods in an object (java4 at the time) to generate a UI to dispatch / interact with it. Teacher rapidly walked me off the room while mumbling "but that would be metaprogramming!". I left confused about his annoyed tone.
Not until year 4 we had the chance to see reflection/intercession, lisps, macros.. I wish someone showed that to me when I was 12.
ps: it might not be obvious, and maybe I'm wrong but I see adhoc DSL's everywhere I work. ORM, build tools, they're all pseudolanguages.. and people keep reinventing them. Scheme/lisp offers it on a silver plater for you.
In most mainstream languages you have a large syntax, lots of idiosyncracies, and limited ability to hack with the innards of your tool. Scheme is small, regular and freeing.
Now personally, after my first year of college, I asked why on earth can't we access the methods in an object (java4 at the time) to generate a UI to dispatch / interact with it. Teacher rapidly walked me off the room while mumbling "but that would be metaprogramming!". I left confused about his annoyed tone.
Not until year 4 we had the chance to see reflection/intercession, lisps, macros.. I wish someone showed that to me when I was 12.
ps: it might not be obvious, and maybe I'm wrong but I see adhoc DSL's everywhere I work. ORM, build tools, they're all pseudolanguages.. and people keep reinventing them. Scheme/lisp offers it on a silver plater for you.