Hi all,
I'm afraid my knowledge about the deeper architecture of Basic, C , etc .. is rather poor.
But in Lisp uses the pointer as building block ( just something known "As Any Pointer" , no "pitch" etc.. declared -- it is hidden anyway and completely controled by the system).
This makes that if you say a=b ( a := b ; not a==b ) then it just means a and b share the same pointer whatever the object it points to may be. This already needs some care (when dynamical scoping is used) and the reason you need several mechanism (as an example) to test equality -- do they point at a same object , or is if not is the outcome of the function they point to the same .. (eql a b) versus (= a b) .. (NewLisp uses lexical scoping and here in both cases "=" can be used ).
Working with ponters make it easy to nest objects of any type, size, depth and manipulate them .. the objects do not move in memory, just the pointers are manipulated - it consequently needs frequent and intensive garbage collection (once again NewLisp uses ORO memory management .............
http://www.newlisp.org/MemoryManagement.htmlother tech. info (web quotes ) :
"In Lisp, functions are first class objects-- they're a data type just like integers, strings, etc, and have a literal representation, can be stored in variables, can be passed as arguments, and so on."
" In Lisp, all variables are effectively pointers. Values are what have types, not variables, and assigning or binding variables means copying pointers, not what they point to."
" Lisp programs are trees of expressions, each of which returns a value. (In some Lisps expressions can return multiple values.) This is in contrast to Fortran and most succeeding languages, which distinguish between expressions and statements.
It was natural to have this distinction in Fortran because (not surprisingly in a language where the input format was punched cards) the language was line-oriented. You could not nest statements. And so while you needed expressions for math to work, there was no point in making anything else return a value, because there could not be anything waiting for it.
This limitation went away with the arrival of block-structured languages, but by then it was too late. The distinction between expressions and statements was entrenched. It spread from Fortran into Algol and thence to both their descendants.
When a language is made entirely of expressions, you can compose expressions however you want."
"There is no real distinction between read-time, compile-time, and runtime. You can compile or run code while reading, read or run code while compiling, and read or compile code at runtime.
Running code at read-time lets users reprogram Lisp's syntax; running code at compile-time is the basis of macros; compiling at runtime is the basis of Lisp's use as an extension language in programs like Emacs; and reading at runtime enables programs to communicate using s-expressions, an idea recently reinvented as XML. "
Basic and Lisp -- The Two Kings' Children ?? -- the water between them may be very deep ?
from the link John gave :
http://www.paulgraham.com/rootsoflisp.htmlI think I prefer a full strength Basic and a full strength Lisp working together over one of these simulating the other ...
4 fun (from the people of Viaweb)
"During the years we worked on Viaweb I read a lot of job descriptions. A new competitor seemed to emerge out of the woodwork every month or so. The first thing I would do, after checking to see if they had a live online demo, was look at their job listings. After a couple years of this I could tell which companies to worry about and which not to. The more of an IT flavor the job descriptions had, the less dangerous the company was. The safest kind were the ones that wanted Oracle experience. You never had to worry about those. You were also safe if they said they wanted C++ or Java developers. If they wanted Perl or Python programmers, that would be a bit frightening-- that's starting to sound like a company where the technical side, at least, is run by real hackers. If I had ever seen a job posting looking for Lisp hackers, I would have been really worried."
best Rob -- as said, my knowledge about the lower architecture of imperative languages is probably too low to make a fair compare ....