Little or No Syntax | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Common Lisp has little or no syntax | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
I find it easier to think of CL as a sexp-based assembly language | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CL uses “)” instead of “end <...>” | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lots of syntax | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Algol, Pascal, etc. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
“end if”, “end loop”, etc. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Syntax – pros | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Allows checking code for one class of error | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
easy, well-understood | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Syntax – cons | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
noise | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
syntactic sugar is noise | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
noise hurts maintenance / understandability | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Syntactic sugar sugar needed by syntax checker but not needed after syntax checking | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
To maintain / upgrade, one must understand the design and the code and implication of changes ; syntax check is mostly unnecessary in the larger scheme (of understanding) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Syntax for Writing | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
use lots of syntax to ensure well-formedness | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Syntax for Reading | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
don’t need syntax checking after code has been compiled and checked | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Editor | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
switch between writing and reading (syntax / no syntax) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
projectional editor? | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
switch views quickly? | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||