393 karma · joined June 16, 2019
Someone posts something on x obscure subject and people find it interesting and then research x on their own and post about x a lot.
Depending on what you're doing, Python is usually great at performance where the time it saves the user writing code is more valuable than the performance itself (a lot of exploratory scientific research).
Prolog is neat, but I wouldn't use it for text processing and database access, so the logic programming piece to me makes better sense as embedded functionality in a more general purpose language, which is what I'm guessing you did here?
https://boyscouttrail.com/content/game/night_infiltration-42...
The above blurb does it poor justice though. Imagine a boy-led troop with around 60 scouts on a camp out and nearly zero adult involvement outside of transportation. We had a leadership group of boys in highschool (usually 16 & 17 year olds) and they performed the roll of sentries (~6 boys) and they had flashlights. These represented sniper rifles. Each sentry got one shot (straight line...they can't wave it around) before having to loudly count to 10 representing reload time. I'm from the American south where hunting is big, so it wasn't uncommon for full on camoflauge from nearly all participants...even those rediculous suits you see snipers wear in movies. There is one hidden individual making a quite noise every 20 seconds or so (you'd have to be pretty close to hear it). There are two teams and each scout (X or O team) tries to sneak their paper message (X or O on it) to the hidden individual if they can find them. At the end of the game, the team with the most messages wins.
This is always at night and very dark in pretty thick woods. Running is absolutely forbidden as so many scouts have twisted ankles or even broken collar bones by running at night. If you get "shot" by a sentry, you have to go back to base to get another message (like respawning) and I think there is a wait period. If someone in your group finds the hidden agent, they'll naturally want to get the word out to all their fellow group without letting the other team notice, but it can sometimes be difficult. A fascinating and super fun game. In all the years I played as a non-sentry, I only found the hidden agent on my own a few times and with help a few more times. There were games when I never even found him and had to ask afterwards and was blown away by the location sometimes (inside a thorn thicket wth). It was always an amazing experience though. We played on a very large area too depending on forest density. The thicker the foliage, the smaller the need for additional area. Keep in mind that this is a pretty dangerous game from an injury frequency perspective. I'd also recommend the buddy system is used to prevent someone from getting injured and lost (think unconscious). I'd also only recommend playing in areas with no predatory animals (I wouldn't play this in New Mexico where bears and cougars exist).
Edit: which Julia group should I get into contact with over this?
Any chance ya'll could eventually use a test model and script from me in a benchmark test suite.
Ex: I have a large synthetic test model from a university and plan on writing some code that uses a bunch of the sparse matrix and linear solve functionality of the language. This would be on a sparse ~70k row/column square matrix.
Funny enough though. Those that I work with still write a lot of what I would call scripts, but they're super over architected and a lot of time is wasted and it is hard to read them. Sometimes simplicity is best as you observed.
There has been a lot of mainframe related posts on HN lately.
The first thing I do when evaluating languages for myself is to look at processing text files line by line or all at once and splitting strings. If that is complicated, then the language might not be well suited to my needs.
With types, a repl, native support for scientific computing and sparse matrices, LLVM JIT, LLVM assembly code inspector, all kinds of macros and support for macros, s-expression macro inspector, speed, easy package manager, large community, good graphics packages...etc, I'm really liking Julia.
Kind of like how KDB+ is so expensive as they're targeting a niche audience. Even though that is purely software.
In the PC world, my computer has a certain number of FLOPS even though it has no impact on my day to day work where I care more about RAM and such.
They also have rediculously high up times and much higher security (probably mostly via obscurity).
Unfortunately, they're insanely expensive.
Edit: googled it and they use MIPS (millions of instructions per second).
For a long time I've wanted a language that I could use with just a text editor and the command prompt or terminal.
I've been able to get programs to easily compile on both my Linux home and windows work machine without any complex install magic as it should be in my opinion. The programs produced were binary executables and tiny to boot (especially Windows where HelloWorld was ~367 KB iirc and ~1.1 MB on Ubuntu).
It is nice to not need an in-depth understanding of the JVM or CLR. The hardest part for me (I usually favor languages like Python) is not having a REPL, but I'll live.
The one place where I could use some help (similar to most of the advanced languages... although Rust is good here) is in the documentation which is more meant for power users than onboarding new folks. Compare and contrast the Nim section on types with D's classes/structs/unions. The D documentation is more like a reference manual and Nim is more tutorial. I think I'll try Andrei's book and see if that gets me far enough to where the technical doc becomes straightforward.
On another note, I see D has some functional programming support. If possible, I'd like to avoid having to model my own domain logic with OO classes. Is the proper way to do this with structs and the stdlib's map!, fold!, & filter! constructs.
Sorry for rambling!
Take it with a grain of salt of course. Smalltalk is amazing, but the way you store code in an image isn't for s everyone.
I don't understand your last paragraph...can you please elaborate? What cute sayings are you referring to?
I like PicoLisp and wish it was more popular. There are some decent resources on it and the mailing list is pretty active.
I kinda disagree with the primary author's "need for speed" article on why performance doesn't matter anymore. I think there is definitely the majority of common uses in the business where he is right, but we're getting to a point (think data science) where faster is better and necessary. Using C++ is still too painful for most (pointers anyone), so I'm betting languages like Nim, Rust, and D will continue to grow in popularity to some degree.
The above are all pretty cool though and each (as Larry Wall would put it) are the perfect examples of modernism. Each one takes a single idea to a fault.
Lisp => lists, Haskell => functions, Scheme => lists and recursion, Prolog => logic, Smalltalk => objects, Forth => concatenative and extreme minimalism, and APL => arrays.
Most post-modern languages combine many of the above in more practical and less elegant ways. Python is OO at heart, but can be written in a functional style, and can do array programming with Numpy.
So there is value (I think) to looking back at those languages from an educational point of view even if you're not using them in your personal projects or production.
The more novel ones that the author posted are probably also educational in their own way, but probably don't ram just one idea home. I think we're mostly past that now as Wall has stated. Perl6 might not run very fast or be very mature or popular, but it is a very interesting language that does a good job showing the post modern system. It pulls what the language designers felt were the best features from all the past languages (Perl5, Python, APL, Haskell, Smalltalk, Awk, Java, C#...etc).
I've read a little on Picat.