ChanServ changed the topic of #picolisp to: PicoLisp language | Channel Log: | Picolisp latest found at | check also for more information
<clacke[m]> beneroth: > later learned picolisp as my first lisp language.
<clacke[m]> Perhaps the only person in human history :-D
<clacke[m]> C is an important language to learn at some point. Probably not as an introduction to programming, but as the second or third language, once you have grasped the fundamentals of programming and need to learn about computers.
<clacke[m]> C++ isn't an important language for any other reason than lots of legacy code using it. Which might be a good enough reason to learn it, but I'd learn it on the job.
<clacke[m]> I think the languages clearly wanting to replace C++ are Java, C# and D. Rust obviously is a C++ replacement in the sense that it came from Mozilla wanting to get away from C++. But I see Rust more as something other than "C++, but good", which is quite the focus of the mentioned three, even though they each also have their own directions that are separate from just being a better C++.
<clacke[m]> > C/C++ programs (or even just parts of it) can easily be used with picolisp. how is this with scheme?
<clacke[m]> Can't do it in standardized Scheme, but all of Racket, Guile, Chicken, Chibi, Scheme48, Gambit, Chez can do it by calling C over an FFI and/or being embedded in a C program.
orivej has quit [Ping timeout: 260 seconds]
orivej has joined #picolisp
<beneroth> interesting, thanks clacke[m] :D
<beneroth> when I wanted to learn lisp, I looked at CL: compiler-dependencies, lib dependencies - I didn't want that, this was one of the main reasons (beside increasing developer speed) I wanted to get away from C++. so I looked for other lisps and landed here. Didn't know about scheme then.
f8l has quit [Ping timeout: 246 seconds]
<cess11_> Good morning.
<Regenaxer> Hi beneroth, cess11_
<beneroth> Good morning cess11_, Regenaxer :)
Regenaxer has quit [*.net *.split]
Regenaxer has joined #picolisp
rob_w has joined #picolisp
<clacke[m]> scheme and CL are pretty similar in how you use them. The main differences are how you spell things, how big the standard library is and of course whether functions and variables occupy the same slot in the symbols or not.
<clacke[m]> There are compilers, possibly linkers, so there are macros and compile-time and run-time. picolisp just doing interpretation and fexprs are conceptually simpler for sure.
<clacke[m]> is*
<Regenaxer> Right. The similar "feel" results from being compiler-oriented, static, (Scheme more than CL) I think
<beneroth> picolisps architecture is extreme, no doubt about it. the point is that it is practical without all the (bloat-causing) usual compromises
<beneroth> people were/are told that doesn't work that they can't believe it and have a hard time even thinking about it :)
<beneroth> bbl
<clacke[m]> the trick is that most code isn't tight, number-crunching loops, and most people can't accept that because that kind of performance is the holy grail
<beneroth> T
<Regenaxer> cu beneroth
<clacke[m]> and the second trick is of course then when you're indeed in that kind of loop, you can just farm that out to a language that does that
<beneroth> it reduces their self-image becoming aware that most things they do is bad code glueing ;)
<clacke[m]> when it comes to static typing, racket is an interesting beast
<clacke[m]> there is typed-racket
<clacke[m]> yeah, that's low-status work
<clacke[m]> our product is awesome so it needs to idle really fast
<Regenaxer> :)
alexshendi has quit [Ping timeout: 264 seconds]
<clacke[m]> so typed-racket, if you write everything in typed-racket, is faster than plain racket. but if you mix your rackets, each transition is costly. basically each call from dynamic to static needs runtime type checking
mtsd has joined #picolisp
<clacke[m]> and even some of the core for typed-racket is dynamic
<clacke[m]> so it really really depends
<clacke[m]> you can't even be sure that perf monotonically increases as you convert module by module. covert the wrong module first, and that may introduce lots of transitions.
<cess11_> Sounds tricky.
<cess11_> As for D and Rust I think the former seems more like an attempt to recreate C++ but with elegance, with Rust going more for 'who cares, let's just add the things that would make it easier to use'.
<clacke[m]> yes, D is about making things possible and compiling fast, and Rust is about zero-cost (at runtime) abstractions and memory management without gc
<clacke[m]> the framework we are developing has racket and typed-racket at the top, with the ability to go into Rust when required
<clacke[m]> the Rust parts are pre-existing, we are doing Racket integration and IDE work now (in Racket)
orivej has quit [Ping timeout: 246 seconds]
alexshendi has joined #picolisp
alexshendi has quit [Ping timeout: 276 seconds]
<beneroth> re
<beneroth> interesting :)
<cess11_> '+Link can point to any object, no? So a '(+List +Link) could be used for ad hoc collections of static data for viewing in a GUI?
<cess11_> As in manually set up but browseable as a web GUI page that just iterates over the objects in that field and assuming a field exists in those objects renders that data and some button for following its links.
<Regenaxer> yes, so perhaps (+List +Link) to (+Any)
alexshendi has joined #picolisp
<cess11_> Great, thanks.