Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - Astrobe

#31
Quote from: "jopython"What is DUMB about (openFile sourceFile)?  It seems so natural to me.


Simply that one "visually" repeats that one deals with a file. There are minor implications too: more typing, and on systems that manage a shared pool of strings "openFile" being unique, it takes its own space; whereas if it's just "open", the "pointer" to the existing symbol name (e.g. for windows) may be reused.
#32
I think the real benefit of the features of what is called FOOP is the ability to overload functions. It always feel a little dumb to me to have to write e.g. (openFile sourceFile); FOOP features allow for writing (:open sourceFile) and (:open sourceWindow) and this is great.



That said, I don't like the name, because FOOP is neither really "functional" (no immutability) nor really "OOP" (awkward inheritance) if one is a slight bit purist. The same feature could be achieved without (self), if only Newlisp passes the 'object' to the 'method':



(define (Person:name p) (p 1))

(set 'foo '(Person "JohnDoe"))

(println (:name foo))



I've hacked my newLisp to just do that, and it actually saves a few lines of code in the interpreter. I have yet to determine, though, if the extra parameter doesn't slows down too much compared to the 'self' version. I believe that Newlisp's ORO model makes it more interesting to move towards the functional paradigm rather than the Object paradigm. Apparently newLisp has evolved in the opposite direction.
#33
Quote from: "conan"
When you said that, do you mean it is possible to build a debugger which can point to the proper line of code ?


One can write an interpreter of newlisp in newlisp itself. It could load the file and keep track of the line numbers.
#34
I second the suggestion of adding line numbers to error messages. The debugger could also use some improvements.



I am an embedded systems programmer, and I'm quite used to debug using only printf, but the lack of support from Newlisp in this area makes things more difficult than it should be.



Since I'm in the process of butchering....errr, I mean hacking the guts of Newlisp, I took a look at the problem. It doesn't seem easy to do, but it has to be done imho.
#35
Quote from: "refrainrence" I think i must have it to develop a real 3D game, not just a proof of concept.


You have to be aware that Newlisp is a scripting language. Like most of the scripting languages it is likely to be too slow to perform directly 3D, real time rendering.



Rather, you should consider picking up an existing, full-blown 3D engine (like Irrlicht or Ogre 3D), and create Newlisp bindings for it. Newlisp in this scenario would drive what's to be drawn and delegate the drawing itself to the engine. That's what people do with Lua, another scripting language which is however very fast.
#36
Whither newLISP? / Re: How to get newLISP popular?
January 15, 2013, 03:23:47 PM
I think that trying to be more popular requires a strategy rather than 'stuff'



  • * lower the barrier of entry helps with retaining people who "heard about that newLisp thing" and give it a try. This means better documentation, better tutorials, community management (consider you're ok with that when you have an IRC running with enough people connected to answer questions and chat 24/7).



    * versatility. The more domains newLisp covers (GUI, web, systems programming), the more potentially interested people in newLisp you get. Also: portability, more platforms, more people. For instance, I think it would be nice to have a portable GUI toolkit that doesn't use Java. Aside from the classic GUI toolkits (Qt, GTK, ...), GUI in the browser might be a good enough solution.



    * The batteries-included philosophy is key factor to the success of Python, and the no-batteries-included style of Lua is, I believe, one of the things that hold it back. So some more batteries should be included



    * Communication, advertisement. To talk about newLisp in Lisp related forums is probably the most efficient way to communicate about it, but some members of the Lisp community sometimes can become aggressive. When doing that, one has to prepare an answer that dodges flamewars. Aside from that, newLisp should try to steal a seat wherever the other major scripting languages (Python, Perl, Tcl, Lua) are, be it in software directories, benchmark sites, etc.



    * Although this topic is dear to my heart, performance is to be looked at last but not neglected. Some people look closely at benchmarks even tho what they want to do does not require high perfs. At least providing up-to-date benchmarks would make them feel more secure.



I'm aware of the fact that newLisp is not doing bad for most of the points I've listed; it's all about improving it.

Finally I would add that it's all about community. Lutz has a great job already; for having done myself a scripting language of my own I can tell you that newLisp is an impressive piece of work. But he cannot do all that all by himself. Attracting people, integrating them into the community, have them benefit from it, and have them contribute further to the project is what will make newLisp grow, more visible and more popular (ain't that obvious after all?).



PS: now if just want killer-app ideas I think that a system that combines the live, online experience of IRC and the delayed, offline experience of mail (and/or mailing lists) could be an interesting project that seems quite well fitted to newLisp.
#37
Whither newLISP? / registering C functions to Newlisp
January 15, 2013, 02:19:59 PM
I'd like to use Newlisp on system that runs uClinux, which does not support shared libraries. I also would like to use some C++ libraries.



My first idea was to hack a bit Newlisp so that one could relatively easily add "foreign" functions to the list of primitives functions. But another difficulty is to link C and C++ together. The best way is to compile the C files (newlisp) with C++ (my libraries), but compiling newlisp as C++ fails (it might be possible, but I also have to use a quite old version of gcc).



Another idea is to use the newlisp-as-library way: compile a small main() and my libraries with G++, then link the newlisp static library to it. The extra step to make it work is to be able to register, with a C function provided by the newlisp library, another C function (which would in my case just be an interface for calling C++ stuff). I took a look at nl-import.c and the code that imports C functions from shared libraries and it seems to me it's possible to do that.



I'm not yet familiar with newlisp's internal and I'd like to hear your opinion on how easy or hard it would be to do that before diving in.
#38
One may easily connect to IRC from a browser. There's Firefox' Chatzilla extension for instance. There's also the Opera browser which has a built-in IRC client (among other interesting things).
#39
newLISP newS / Re: newLISP Advocacy
January 11, 2010, 02:21:45 PM
I recently came to newLisp thanks to this blogpost (via Reddit).

Kazimir's blog (in particular its answer to the comments of some diehard Lisper) is indeed convincing (despite of the "I-killz-ur-Iz" theme :-)



I'm an embedded systems C/C++ developer in my day job. In my hobby time, I implemented a Forth dialect, and I'm [stuck in the process of] implementing a new language.



I know very few of Lisp; I prefer statically-typed languages. But I'm willing to give a try to dynamic languages. I'm trying newLisp because it seems quite efficient and has a descent documentation, and because it is a dialect of the so-praized Lisp.



A few requests somehow related to the topic:

- could the benchmarks be updated with the timing of the lastest release? Also, it would be nice to add a Lua benchmark, because it is the king of the hill as far as interpretation speed is concerned.

- in the framed doc, the adding a TOC would be helpful.



BTW: there's a mistake in the README file: "make home_install" instead of "make install_home"