Lisping at JPL (2002)
flownet.com
flownet.com
I'm going to print this on a Louisville Slugger and bring it to architecture and design meetings.
I mean, how do you iterate and refine if it takes ages to compile stuff? The flow of your of thoughts has probably gone to shit before the compile is over.
Apparently the guys at CERN love it so much they created an interpreter http://root.cern.ch/drupal/content/cint for it. No wonder the Higgs boson hasn't been discovered yet (or has it?)
In my experience, many people who use ROOT at least have vague feelings that it is making their life more difficult then it rightly should. Nearly everyone I know that writes code that other people use feel even more strongly that ROOT's poor design leads to productivity losses.
http://www.insectnation.org/howto/problems-with-root
Then since ROOT violates three basic principles of OO (encapsulation, inheritance, virtuality) we are compelled to conclude that ROOT can't be considered as an OO software. ROOT is a bright example of people having jump to C++ but missed totally the point of OO. At least it will probably stay in the history of software because of that.
What could be the improvements in a ROOT major revision ?
o at least fix the name ! Is it ROOT, Root, root ? (Hell, we are pretty sure that any Bazaar model software have at least converged on that !)
o have then a correct namespacing of classes and libs.
o restore encapsulation (then get rid of the g pointers).
o revisit the inheritances. At least have a good histogram class. And arrange the storage area to be stable (then "fix" the TTree). And please, have an introspection class that looks like an introspection class.
o use pure abstract interfaces to separate domains. And stick strongly to the idea to have them pure.
o etc, etc, etc, etc, etc, etc, etc, etc, etc, etc,...
http://openscientist.lal.in2p3.fr/osc_web_16.11/html/faq.htm...
Global variables begin with g
http://root.cern.ch/root/htmldoc/guides/users-guide/GettingS...
While it's true that indiscriminate use of global variables can turn code into spaghetti nearly as quickly as unrestrained use of goto, global variables do have legitimate uses and exist in one form or another in almost every programming language.
Lisp's version of global variables, dynamic variables, are both more useful and more manageable.
Common Lisp provides two ways to create global variables: DEFVAR and DEFPARAMETER.