beneroth changed the topic of #picolisp to: PicoLisp language | The scalpel of software development | Channel Log: https://libera.irclog.whitequark.org/picolisp | Check www.picolisp.com for more information
chexum has quit [Remote host closed the connection]
chexum has joined #picolisp
TeddyDD has quit [Ping timeout: 244 seconds]
TeddyDD has joined #picolisp
payphone has quit [Ping timeout: 255 seconds]
payphone has joined #picolisp
mario-goulart has quit [Remote host closed the connection]
mario-goulart has joined #picolisp
Hunar[m] has quit [Quit: You have been kicked for being idle]
calle has joined #picolisp
calle has quit [Quit: Leaving]
xigoi has joined #picolisp
<xigoi> Hi, I just stumbled upon PicoLisp. I'm wondering, how fast is it? According to the website, it's faster than other lisps. Are there any benchmarks?
<beneroth> Hi xigoi
<beneroth> it's usually faster in interactive mode as other lisps, true. But PicoLisp is not compiled and cannot be compiled (because it uses F-EXPRs instead of Macros...)
<beneroth> the picolisp vm/interpreter is very small and as such fast with very low startup time.
<beneroth> question is.. what do you want to do with it? E.g. PicoLisp is not for heavy number crunching, but it's great for wrapping C/C++ libraries or other programs (similiar as factually python is doing it, and picolisp is usually quite faster than python..)
<xigoi> Thanks! I don't have anything particular in mind, I just like learning about new languages :)
<xigoi> How does it compare to other lisps in general?
<beneroth> the main focus and strengths of picolisps are: flexibility, small (pico) code, small number of concepts, high expressive power. It's mainly used for various scripting (e.g. instead of complex bash scripts) and for business applications (ERP systems, data warehouses, ...) using the built-in OOP/graph database
<beneroth> It was mostly influenced by MacLisp and Forth. It's quite different to most lisps, as most aim to compile and as such widely dropped FEXPRs.
<xigoi> Interesting
<beneroth> optimised interpreter.
<beneroth> FEXPRs are functions which don't evaluate their arguments on call, meaning they themselves decide if/how/when to evaluate their arguments. Think functions which are interpreters in themselves. FEXPRs are more powerful than macros, but some FEXPRs can fundamentally not be compiled (as the input can change everything), that's why most lisps dropped them in favour of macros. PcioLisp goes here the other way and completely drops compiling in favour of
<beneroth> some picolispers are also into scheme, especially chicken scheme.
<beneroth> so I guess there are some similarities, but I don't know this well.
<beneroth> compared to Common Lisp it's quite different. It might actually be easier to learn PicoLisp without first knowing Common Lisp, as one would need to unlearn/differentiate as PicoLisp does some things radically different.
<beneroth> we're an absolute tiny but opinionated/stubborn community. How did you find PicoLisp? :)
<beneroth> you can have a look at PicoLisp code compared to other languages on Rosetta: http://rosettacode.org/wiki/Category:PicoLisp
<xigoi> What can fexprs do that macros can't?
<beneroth> change behavior depending on input during runtime
<xigoi> I like small & opinionated communities :D
<beneroth> PicoLisp takes the core lisp concept of "code is data" very serious
<beneroth> yeah, we have quite different backgrounds here, but people finding their way here are usually somewhat similar minded, filtering through self-selection ;)
<beneroth> picolisp has no compiler and no-byte-code, no just in time compilation, just direct pure interpretation. As a side effect, the actual program running is exactly the same as the source code (well except for read-macros which get executed during parsing, but they're only few and rarely used).
<xigoi> I found it through this list https://github.com/ostera/awesome-alt-langs
<beneroth> the representation of the source code in memory is of course binary, cells and pointers, but otherwise it's directly the same structure as the source code. so shorter and nicer source code gives also shorter and therefore faster runtime behaviour.
<beneroth> cool, didn't know that one, thanks!
<xigoi> I always wonder who has time to submit all those RosettaCode examples. There's an overwhelming number of them.
<beneroth> the main documentation of picolisp is the reference: https://software-lab.de/doc/ref.html here also with searching and further links: https://software-lab.de/doc/index.html
<beneroth> unfortunately, outside of the main reference the documentation is a bit all over the place
<beneroth> some stuff can be found on picolisp.com, and the mailing list archive is also good place to check out: https://www.mail-archive.com/picolisp@software-lab.de/
<xigoi> Wow, picolisp is 34 years old?
<beneroth> and of course here in this IRC you can get answers, we're always happy to help. our main time is mostly more in the european daytime, but if you leave a message here someone will likely answer it later, and you could find it in the log (see channel title)
<beneroth> even a bit older I believe, but for a while it was not public really.
<xigoi> I'm also European, I'll have to go to sleep soon :D
<beneroth> hehe, yeah
<beneroth> Alexander Burger (here as abu[m] and also known as Regenaxer) made most of his professional career with picolisp.. programming ERP systems for businesses (custom solutions) based on picolisp and its database
<beneroth> I'm doing similar kinds of applications with it, in my own company. And there are at least two more guys regularly here in IRC who use it for their own companies, but I think they use it more often for scripting to manage servers and management services.
<beneroth> the mailing list community is quite larger than the IRC group, with a lot of diverse backgrounds (teachers, data journalists, dunno, like everything,...) but is less often interacting than the IRC group here.
<beneroth> what is your background?