[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4762: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3897)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4764: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3897)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4765: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3897)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4766: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3897)
newlispfanclub.alh.net • View topic - Newlisp vs Lua

Newlisp vs Lua

For the Compleat Fan

Newlisp vs Lua

Postby Astrobe » Tue Sep 12, 2017 7:41 am

Let's Rock'n'Troll!

I've lurked on comp.lang.forth for a long time. One thing I couldn't understand is why people constantly compared Forth with C, which was pointless in my eyes because they where in whole different categories.
It became even more pointless when Lua began to gain traction, because as a lightweight interpreted language, it was a serious contender. That's even more true for Newlisp.

+ Lua and Newlisp are about the same binary size, but Newlisp packs a lot more functionality out of the box
+ Newlisp doesn't rely on garbage collection (but the pass-by-value semantics that ORO requires are sometimes difficult to deal with)
+ Newlisp has macros
+ Newlisp's documentation is better
+ Newlisp is a simpler language, so I believe that parsing speed is better than Lua.
- Lua is faster, even without JIT
- Lua has better debugging support
- Lua has coroutines (Newlisp has IPC but it's heavier and not 100% multi-platform)
- Lua has much more mind share (nothing you can do about it, except make Newlisp better)

All points are not equally important. Lacking lightweight threads isn't a big deal as long as one has non-blocking I/O. Debugging support is important because bug squashing can kill productivity - especially for late-bound dynamic languages in which a simple typo can result in a bug (that's why most such languages have a so-called "strict mode"). Being slow can be acceptable to some extend, as long as interfacing with C (or eventually with external programs but that's really a last resort) is easy.
Astrobe
 
Posts: 39
Joined: Mon Jan 11, 2010 9:41 pm

Re: Newlisp vs Lua

Postby TedWalther » Tue Sep 12, 2017 4:20 pm

I've been thinking about coroutines over the past 2 years. To my surprise, I think I've found a way to implement coroutines for newlisp that doesn't involve any assembly language or tricky C. It is just pure AST manipulation. However, it definitely wouldn't be lexically scoped. :) I went back and read the original LISP paper by McCarthy, and the manual for LISP version 1, and it opened my eyes; newLisp is actually a "third way" with Common Lisp and Scheme being the other branches. I think SmallTalk is also in the family, but just a little TOO different to really count.

I talked to Chuck Moore in person and asked him point blank about the similarities between FORTH and LISP, and he agreed. Before it got pushed too much in an academic direction, LISP also was small and practical and close to the machine, allowing you to easily drop down into Assembler, and had primitive functions to twiddle with the machine registers, stack frames, etc. I think SmallTalk originally also had this property and maybe still does, at least if you count the Virtual Machine as the assembly language level.

LISP version 1 was 50kilobytes in size without the built in assembler/compiler, about 150 kilobytes with. Wonder how hard it would be to implement that today. But with all the different CPU out there, probably no worthwhile. :( Unless we go the VM route, then that brings us to Lua, Erlang and Java VMs, which ones to choose. Or even the TCL byte-code VM. Or the emacs VM. And finally, LLVM.
Cavemen in bearskins invaded the ivory towers of Artificial Intelligence. Nine months later, they left with a baby named newLISP. The women of the ivory towers wept and wailed. "Abomination!" they cried.
TedWalther
 
Posts: 605
Joined: Mon Feb 05, 2007 1:04 am
Location: Abbotsford, BC

Re: Newlisp vs Lua

Postby TedWalther » Tue Sep 12, 2017 4:26 pm

About Mind-share, Lua has licensed a bit differently in a way that allows proprietary software. And it has a university department that has been developing and promoting it for decades. Guy Steele wrote about the initial user communities for a language being crucial to it taking off. So, what is the killer app that would make newLisp "take off"? Also, does Lutz want it to take off more than it already has? :) To read Guy Steele's paper, look up "Evolution of Lisp" and "History of Lisp" by Guy Steele.
Cavemen in bearskins invaded the ivory towers of Artificial Intelligence. Nine months later, they left with a baby named newLISP. The women of the ivory towers wept and wailed. "Abomination!" they cried.
TedWalther
 
Posts: 605
Joined: Mon Feb 05, 2007 1:04 am
Location: Abbotsford, BC

Re: Newlisp vs Lua

Postby rickyboy » Tue Sep 12, 2017 6:27 pm

(λx. x x) (λx. x x)
rickyboy
 
Posts: 595
Joined: Fri Apr 08, 2005 7:13 pm
Location: Front Royal, Virginia

Re: Newlisp vs Lua

Postby TedWalther » Tue Sep 12, 2017 8:21 pm

Cavemen in bearskins invaded the ivory towers of Artificial Intelligence. Nine months later, they left with a baby named newLISP. The women of the ivory towers wept and wailed. "Abomination!" they cried.
TedWalther
 
Posts: 605
Joined: Mon Feb 05, 2007 1:04 am
Location: Abbotsford, BC

Re: Newlisp vs Lua

Postby rickyboy » Tue Sep 12, 2017 8:29 pm

Good point. I wonder if Lutz would be willing to dual license newLISP. Then, you could have some fun on your project. :)
(λx. x x) (λx. x x)
rickyboy
 
Posts: 595
Joined: Fri Apr 08, 2005 7:13 pm
Location: Front Royal, Virginia

Re: Newlisp vs Lua

Postby TedWalther » Wed Sep 13, 2017 1:46 am

A thought on co-routines; how do you implement them so the call stack doesn't blow up? Is such an implementation possible under the ORO memory manager? The bash shell uses ORO, and Unix pipes have been compared to coroutines, maybe there is some insight to be gleaned there. If coroutines require code to avoid stack blowup, then maybe tail calls would make sense too. But then debuggability goes down the toilet.
Cavemen in bearskins invaded the ivory towers of Artificial Intelligence. Nine months later, they left with a baby named newLISP. The women of the ivory towers wept and wailed. "Abomination!" they cried.
TedWalther
 
Posts: 605
Joined: Mon Feb 05, 2007 1:04 am
Location: Abbotsford, BC

Re: Newlisp vs Lua

Postby Astrobe » Wed Sep 13, 2017 9:26 am

Astrobe
 
Posts: 39
Joined: Mon Jan 11, 2010 9:41 pm

Re: Newlisp vs Lua

Postby joejoe » Fri Feb 02, 2018 8:39 am

joejoe
 
Posts: 158
Joined: Thu Jun 25, 2009 5:09 pm
Location: Denver, USA

Re: Newlisp vs Lua

Postby TedWalther » Fri Feb 02, 2018 10:46 pm

Cavemen in bearskins invaded the ivory towers of Artificial Intelligence. Nine months later, they left with a baby named newLISP. The women of the ivory towers wept and wailed. "Abomination!" they cried.
TedWalther
 
Posts: 605
Joined: Mon Feb 05, 2007 1:04 am
Location: Abbotsford, BC

Re: Newlisp vs Lua

Postby TedWalther » Fri Feb 02, 2018 10:48 pm

joejoe, you are fundamentally misunderstanding the issue here. Creating an application, then "compiling" it in into a standalone binary, which means the newlisp executable plus the newlisp source code tacked onto the end, doesn't alter newlisp in any way. Using the GPL here prevents distributing such a "compiled binary" without also distributing the source to your application.

Even the GNU C compiler allows you to compile a static binary, which includes a substantial part of the libc, without having to give away the source code to your application. That is why the library exception, the LGPL, was put in place. Richard Stallman acknowledged the reality that Free Software may be desirable, but isn't possible or practical in all instances.

Since you try to quote GNU to me, who has been developing GNU software for 20 years, read this link:

https://www.gnu.org/licenses/gcc-exception-3.1.en.html
Cavemen in bearskins invaded the ivory towers of Artificial Intelligence. Nine months later, they left with a baby named newLISP. The women of the ivory towers wept and wailed. "Abomination!" they cried.
TedWalther
 
Posts: 605
Joined: Mon Feb 05, 2007 1:04 am
Location: Abbotsford, BC

Re: Newlisp vs Lua

Postby joejoe » Sat Feb 03, 2018 2:14 am

joejoe
 
Posts: 158
Joined: Thu Jun 25, 2009 5:09 pm
Location: Denver, USA


Return to Anything else we might add?

Who is online

Users browsing this forum: No registered users and 1 guest

cron