Reading over the 'about' webpage, I noticed a few spelling errors. Putting the webpage content into MS Word made it easy for me to correct those, but then I got carried away.
For what's it's worth, here's what I produced. Let me know if you'd like a version with just spelling errors corrected. I'll gladly produce that for you, without the additional editing.
-Noah
Code: Select all
About newLISP
Last updated June 8th, 2006
1. What is newLISP and what can I do with it?
2. Why newLISP, why not one of the other standard LISPs?
3. How do I study newLISP?
4. How does newLISP compare in speed?
5. Does newLISP have matrices?
6. Does newLISP have hash tables?
7. Does newLISP have automatic memory management?
8. Isn't value parameter passing slow for big lists?
9. How does variable scoping work in newLISP?
10. Can I program with threads?
11. How about Object Oriented programming?
12. How about packages and modules?
13. What are some differences between newLISP and other LISPs?
14. Does newLISP run on XYZ operating system?
15. Can newLISP handle the special characters of my country and language?
16. Can I use newLISP for distributed computing tasks?
17. Can newLISP be embedded in other programs?
1. What is newLISP and what can I do with it?
newLISP is a LISP-like scripting language for doing things you typically do with scripting languages: CGI programming, system administration, text processing, gluing other programs together, etc. newLISP is a scripting LISP for people who are fascinated by LISP's beauty and power of expression, but who need it stripped down to easy-to-learn essentials. newLISP is small on resources like disk space and memory but has a deep, practical API.
2. Why newLISP, why not one of the other standard LISPs?
LISP is an old language born, grown, and standardized in times very different from today, times when programming was for highly educated people who engineered programs. newLISP is LISP reborn as a scripting language: pragmatic and casual, simple to learn without requiring you to know advanced Computer Science concepts. Like any good scripting language, newLISP is quick to get into and gets the job done without fuss. It has all the essential elements which made LISP famous: symbol processing, lists, anonymous functions (lambda expressions) and S-expressions as a simple syntax for both data and program.
newLISP has a modern relevant API (Application Programming Interface) with networking, regular expression, advanced math, simulation, statistics, financial, HTTP, and XML functions built right into it. newLISP modules are available let you connect newLISP to databases, mailservers, and more. newLISP can interface to standard shared libraries on Win32 and Linux/UNIX systems to add even more functionality. The newLISP API is user driven and adapts over time to the ever-changing requirements of tomorrow’s applications.
3. How do I study newLISP?
At least in the beginning you don't study newLISP, you use it. If you understand this:
(+ 1 2 3) ; computes the sum of 1,2,3 => 6
and this:
(define (double x) (+ x x)) ; defines a new function
(double 123) ; computes the double of 123 => 246
then you have learned enough to start programming in newLISP. There are a few more concepts like anonymous functions, applying functions, name spaces (or contexts), and implicit indexing. You will pick up those later while using newLISP.
Don't read books about LISP to learn newLISP. Most books deal with Common LISP or Scheme, two different older standards of LISP. These books teach you concepts that you don’t need to know to learn newLISP. newLISP does things differently than the older standards, in ways that are more applicable to today’s programming tasks. If you study other LISPs before trying to understand newLISP, you won’t learn to solve problems the newLISP way. But if you want a deeper understanding of newLISP, read the Users Manual section of the newLISP manual, which offers only a little theory but a lot of examples.
Start to write your first program now. Look at the small program snippets throughout the manual and on this web site. If you have questions, go to a discussion group hosted here and ask.
4. How does newLISP compare in speed?
It compares well to popular scripting tools like Perl or Python, not only in general computing speed but even more when it comes to startup time and memory/disk foot print. Have a look at some benchmarks .
5. Does newLISP have arrays?
Yes, it does. For applications with random access in large lists, access can be made faster using newLISP arrays.
6. Does newLISP have hash tables?
newLISP has fast scalable symbol processing using Red-black binary trees . Symbols in newLISP are used to build dictionaries for associative data access, similar to how hash tables are used in other scripting languages. See the newLISP manual for more details.
7. Does newLISP have automatic memory management?
Yes, it does. But it is not the typical garbage collecting process you find in other interactive languages. Just like traditional garbage collecting languages, newLISP recycles unused memory, but does it in a new, much more efficient way. newLISP's unique automatic memory management is one of the reasons for its speed, small size, and efficient memory usage.
8. Isn't passing parameters by value slow when passing large lists and strings?
newLISP passes symbols and context objects by reference. Parameter passing is done simply by wrapping a list or string buffer with a context object.
9. How does variable scoping work in newLISP?
newLISP offers a combination of dynamic and lexical scoping. It is dynamically scoped inside lexically separated contexts or name spaces. Contexts can be dynamically created during runtime. Contexts in newLISP allow lexical closure over more than one lambda function.
10. Can I program with threads?
Since version 8.2.0, Linux/UNIX versions of newLISP programs can have threads. Win32 versions can spawn child processes. Semaphores are used to synchronize threads or processes and shared memory can be used for communications between threads and processes. Semaphores and shared memory are available on all versions of newLISP.
11. How about Object Oriented programming?
newLISP uses contexts as objects for prototype-based object oriented programming. Objects can be created or destroyed during runtime, referred to by variables, and passed by reference to other functions.
12. How about packages and modules?
newLISP uses contexts for building packages and modules. Modules exist for database access to MySQL and SQLite databases and other databases through ODBC. Additional modules support FTP, POP3, and SMTP internet protocols. Because newLISP contexts are lexically closed, newLISP lets programmers treat modules like black boxes. This is suitable for large application development.
newLISP can also call shared libraries on Linux/UNIX and Win32 operating systems to expand its functionality.
13. What are some differences between newLISP and other LISPs?
newLISP’s differences with other LISPs include: differences in the working of lambda expressions; the existence of namespaces (or contexts); differences in parameter passing; and of course the newLISP API (function repertoire). Overall newLISP's new ways of LISP programming make it faster, smaller and easier to understand and learn. For a more detailed discussion, see Differences with Other LISPs .
14. Does newLISP run on XYZ operating system?
It probably does. newLISP has a minimum of dependencies; it only uses standard 'C' libraries to compile. If your system has GNU tools such as the GCC compiler and make utility, then newLISP should compile and link right away using one of the makefiles in its source distribution.
newLISP is built using one of several makefiles, each written for a specific platform. There are no complex make scripts. The makefiles are short and easy to change and adapt if your platform or configuration is not included already.
15. Can newLISP handle the special characters of my country and language?
In most parts of the Western World, you will only need to set your locale using the newLISP function set-locale.
More than half of the countries in the world use a decimal comma instead of a decimal point. newLISP will correctly read and write decimal commas when switched to the correct locale.
Most alphabets in the Western Hemisphere fit in 256-place character code tables and each character needs only one 8 bit byte to be encoded. If the written language of your country uses multibyte characters, then you need the UTF-8 enabled versions of newLISP. Makefiles for Win32 and Linux are included to compile UTF-8 versions of newLISP. In the UTF-8 version many character handling functions are able to handle multibyte characters. See the localization and UTF-8 chapter in the manual for details.
16. Can I use newLISP for distributed computing tasks ?
Some of today’s bigger applications run distributed across multiple computers, dividing their complex tasks between multiple CPUs. newLISP can be run as a server for evaluating commands sent by other newLISP client processes connected to it. A net-eval directive encapsulates all network handling required to communicate with other computers on the network, distribute code and computing tasks and collect results in a blocking or event-driven fashion.
17. Can newLISP be embedded in other programs ?
newLISP can be compiled as a UNIX shared library or Win32 DLL (dynamic link library). So the shared library versions of newLISP can be used inside other programs that are able to import shared library functions.
On Win32 systems, newLISP has been used inside MS Excel, MS Visual Basic, and the NeoBook GUI application builder. On UNIX, newLISP has been used inside the GNumeric spreadsheet. On Mac OS X, newLISP has been used as an extension language for the BBEdit editor.