When you were not fluent, the myriad different symbols would overload your working memory, making it very hard to program. Just needing to find the symbols in the keyboard would make you program slowly. It had some nice ideas about matrix programming, probably they are similar of pandas or tidy verse. Cool, but the steeeeep learning were really terrible.
Read the article! Great reminiscences from one of greatest computer science elders. Made me understand better the language.
https://qph.fs.quoracdn.net/main-qimg-07327016425ac646009769...
I think its so beautiful, just the math written down.
Ohm, the successor to the parser (Ometa) used by Nile: https://github.com/harc/ohm
Maru, Nile's compiler/interpreter/whatever: https://www.reddit.com/r/programming/comments/157xdz/maru_is...
Nile itself: https://github.com/damelang/nile (pdf presentation in README) https://programmingmadecomplicated.wordpress.com/2017/10/11/...
Gezira, svg drawing lib on top of Nile: https://github.com/damelang/gezira/blob/master/nl/stroke.nl http://web.archive.org/web/20160310162228/http://www.vpri.or... https://www.youtube.com/watch?v=P97O8osukZ0 https://news.ycombinator.com/item?id=8085728 (check the demo video) https://www.youtube.com/watch?v=ubaX1Smg6pY (live demo on stage later on) https://github.com/damelang/gezira/tree/master/js/demos (downloadable and runnable in browser)
KScript, UI building on top of Nile: https://www.freudenbergs.de/bert/publications/Ohshima-2013-K... http://tinlizzie.org/dbjr/KSWorld.ks/
Final Viewpoint Research Institute report, where the entire system (antialiasing, font rendering, svg, etc) was rendered using Nile into Frank, the word/excel/powerpoint equivalent written completely in Nile + Gezira + KScript): http://www.vpri.org/pdf/tr2012001_steps.pdf
VPRI wiki restored from archive.org: https://web.archive.org/web/20171121105004/http://www.vpri.o...
Shadama, which the Nile author (Dan Amelang) worked on too: https://2017.splashcon.org/event/live-2017-shadama-a-particl...
Partial DOM reimplementation on top of Gezira: https://github.com/damelang/mico/blob/master/gezira/svg.js
Partial reimplementation of Gezira: https://github.com/Twinside/Rasterific
And the famous Nile Viewer itself (everything interactive): http://tinlizzie.org/dbjr/high_contrast.html https://github.com/damelang/nile/tree/master/viz/NileViewer
Commentary: http://lambda-the-ultimate.org/node/4325#comment-66502 https://fonc.vpri.narkive.com/rtIMYQdk/nile-gezira-was-re-1-... http://forum.world.st/Vector-Graphics-was-Pi-performance-fun...
Since Alan Kay himself is on Hacker News, maybe he can comment with more links I couldn't find. It's hard to fire up the live Frank environment, though understandably reproducing the working env might not have been a top goal. Maybe someone more cunning can merge these into a single executable repo or whatever so that I can stop playing archaeologist =)
It would've been good to see specific criticism instead of being just like classic APL.
I think many of APL/k/j verbs/adverbs can be generalized to working on streams (dataflow programming). Perhaps Dan Amelang's very interesting work on "2.5D" graphics can be cast into such an extended version....
compositeSrc:{x} // output first arg
compositeDst:{y} // output second arg
compositeInvert:{+(1-x[;0];1-x[;1];1-x[;2];x[;3])}
// take a column, invert r, g, b columns and transpose
where x[i;0 1 2 3] == ith (r,g,b,a) of x. No need for "∀ (A, B) >>". This is implicit as k/APL work on whole collections. Basic operations are already overloaded. There would need to be a way to define tuples. "x[i;2]" to refer to ith blue value is a bit cryptic. You can define verb "blue x[i]" to do the same but may be some language syntax would help. I can't grasp enough of Nile through the examples I've seen so far but seems doable. d:{_sqrt+/(y-x)^2}
ls: 2 10 # 20 _draw 0 // a list of 10 random points
+/d':ls // total length
Now if x, y above are vectors of points (as opposed to vectors of pairs), and if points have their own - verb, total length becomes "+/{y-x}':ls". But to define such a - for point, you'd need conversion verbs (or enclose/disclose).And yeah, it'd interesting to build one. Is there enough info on it to build such compiler though? That NileVM.js is helpful. I've posted a list of resources in another comment below, but maybe I've missed a few