OK here we go . . .
Programming languages are for lightweights.
Claude, write me a religion!
Naming a new programming language "Rue" sounds like an acknowledgment of doubt about the project's prospects, if you take "Rue" to mean "regret." But veteran software developer Steve Klabnik, known for his contributions to Rust and to Ruby on Rails, says there's more to it than that. "Rust as a name evokes a few things," he …
... the best way to get rich, supposedly said one L Ron Hubbard at an apocryphal dinner attended by three broke sci fi writers (another one might have been Phillip K Dick who did die broke, after selling Blade Runner's movie rights for $2500).
Hopefully Claude can do a better job than LRH, whose writing was inane in the extreme, both in the religious design space - Xenu and the 4 quadrillion year old universe. And for those truly masochistic, in SF books. Battlefield Earth probably makes its film adaptation look good in comparison: despite the negative reviews it's hard to fathom a movie possibly being worse than that 1000+ page turd.
> Hopefully Claude can do a better job than LRH
He didn't do too bad a job, from the p.o.v. that Scientology can still afford to use the Faraday Building[1] near Fleet St in London. Having a really absurd storyline, that only gets worse as you progress to the inner circle, helps to keep people around: admit you've been suckered so incredibly badly or stay in the religion (and enforce it on the others), which is easier to handle?
> Battlefield Earth
Mostly useful for hand-to-hand combat; you'd think it was suitable for hurling but the aerodynamics are dreadful.
[1] oh, the irony
Battlefield Earth probably makes its film adaptation look good in comparison: despite the negative reviews it's hard to fathom a movie possibly being worse than that 1000+ page turd.
I think the film is probably better because it cuts out the interminable bits such as designing something so that it can't be reverse engineered and how to build a financial system based on gold. But the book as I remember it from my youth (bought, amusingly with a voucher awarded to me for 100% school attendance) was okay. Sure it was a bit long but my memory tells me I enjoyed most of it.
But I liked the film as well. I've seen it twice (the last time being fairly recently) and it's fun. I think the problem with it is that reviewers and a lot of people who watch it try and take it too seriously. It should be viewed as more along the lines of a comic than as serious science fiction. I'd class it as pure escapism with a dose of weird camera angles.
I feel that happens with a lot of films that get slammed. Unless it's an adaptation of a comic people seem to expect something cerebral and get annoyed when they are presented with something that doesn't take itself seriously.
So neither are great works of art but the film at least is good for a laugh and takes you out of your normal headspace for a while and at least when you've finished the book you can pat yourself on the back for your staying power.
I nicked it from some bloke in the pub. That was in my single days when I used to go into the pub at 7.30, get St. Ivelled (5 pints) and then go home at 10:30, about 750 pages later. It took a day and a bit and didn't particularly inspire me, albeit I remember thinking that if a small thin gold disk on a pioneer probe was how you found a planet, what the fuck was wrong with wireless sigint? Before that I read as a fantasy, one of which was "Slaves of sleep". Good enough for the 17 year old who read it. After the sad failure of dianetics to become a fiasco I didn't read any more. But nicked books were free.
It was good enough for a "b fillum" but trivial and ignorant of anything but bullshit. It was good enough to keep me going through the 1000 pages aided by 5 pints. So that is what it was worth to me.
I could see a lot of the Rust work around memory (and other) safety might also be used in automatic memory managed (garbage collected) systems to direct more effective and efficient collection.
As a simple example it is not too hard to envisage a suitable language being able to pass object lifetime hints to the memory manager at compile time - possibly a real win for generation scavenging systems.
Rust might ultimately have its greatest effect through the transference of ideas and techniques to existing and successor systems.
It is memory safe and has a Java-like garbage collector. Or rather, Java is the New Algol.
There exist mainframe OSes written in ALGOL. One of them you can still buy from Unisys.
But if you believe the bozos, C and Unix are so much better, because they dominate the market like McDonalds does.
Who needs quiches, if you can get the same $hit burger all over the world ?
> There exist mainframe OSes written in ALGOL
ALGOL-58 and -60
> One of them you can still buy from Unisys
Unisys certainly still support the poor bastards who got stuck on their ALGOL-based products, the same as COBOL products sre still supported (for a price). Doesn't mean any sane person should consider starting anything new one either. Especially as the Unisys stuff is all very sole-supplier, using their own peculiar extensions to ALGOL instead of any standard version.
> has a Java-like garbage collector
You are getting confused with ALGOL-68 (or a proprietary extension, see above) rather than any ALGOL that was used by any notable percentage of people.
> C and Unix are so much better, because they dominate the market like McDonalds
Odd, isn't Windows the McDonalds of computing? With its history of weird relishes, like shoving Pascal calling conventions into C code...
> Who needs quiches, if you can get the same $hit burger all over the world ?
Well, precisely, that is why the Unix derivatives are so well loved, you can whatever flavour suits your tastes.
Theoretically Java could do limited lifetime analysis during compilation and zap some shortlived objects programmatically rather than in a GC. e.g. maybe there is a loop where a temporary collection gets dereferenced and it and the objects inside are obviously not referenced elsewhere so just force their destruction from the bytecode. Or maybe an object which is expended / drained / nilled or whatever you want to call it could say so to the runtime to expedite its removal.
But this is only going to work in trivial cases because Java and similar high level languages don't enforce how many references an object has at a time so either the object says "I'm done", or the language has to track and enforce it.
Garbage collection can also be a huge problem for things like games, or real time, or running on anything which only has physical RAM where you have to strictly budget heap to avoid out of memory situations. If you can reasonably foresee GC being an issue, then don't use that language to write the thing.
I've always preferred RAII. It doesn't work for all use cases but it works for most things. I reckon the vast majority of software processes are hierarchical in nature.
Toward the end of my time using C++ I hardly ever used new or delete. Just stick everything on the stack or as a member of an object either directly or via some kind of smart pointer. Stack unwinding and destructor execution handles the clean up automatically and deterministically.
If you're using a smart pointer then you're using the heap and have a new somewhere, or some kind of std::make_unique from a std::move going on. If you just declare your class / struct in a block of code then it'll be in the stack, but of course member variables might use the heap, e.g. if you had a string or collection in your struct.
The danger with C++ is that using smart pointers is optional and it's still possible to dereference a pointer or subvert reference counting. It's still better than GC in most cases but object ownership and destruction order can get pretty disgusting for shared (ref counted) pointers.
It'd be surprising if it didn't; e.g. ARC-enabled Objective-C* is smart enough to know when it needn't put things in the autorelease pool**.
* which is not garbage-collected but also definitely, definitely has nothing to say about static memory safety. So not otherwise like Java and definitely not like Rust, in case the mention of anything Apple-related brings the usual red mist amongst any readers.
** a dynamic, runtime-collected list of things that can be freed when the call stack next returns all the way up to the event loop. Objective-C is [almost-]everything-on-the-heap but uses the autorelease pool to allow for temporaries where another language might just use a stack-based object. But with ARC enabled, the compiler doesn't necessarily put things in the autorelease pool, it also sometimes just deallocates them when they've been fully used. But with no scope guarantees, sometimes leading to bugs by C++ developers who mistake ARC as a means of doing RAII for things like mutexes.
Good.
Keep it that way.
If you are really going for a systems programming language, don't open yourself up to all the problems and security holes that come about just because your users are unable to figure* out how to add a library into their build - and, more importantly, their version control.
* Sorry, but if you can't manage "download & unpack to new subdirectory, use provided makefile or add new build script (just crib from the one building your own code), add to INCLUDE PATH, commit into VCS" then the chances of writing any non-trivial system, with your own code in libraries (i.e. all the previous steps bar the download) that are invoked by the unit tests, are bugger all. And claiming that the "convenience" of the "package manager" specific to a programming language is worth any of the risks we've seen with package hijacking...
I totally agree with the sentiment, what I am really not sure about is of that is so much more secure. Now the dev has to download the source file from somewhere. Is that location trustworthy? Like, really trustworthy? Or do they just pull it from a URL somebody posted on stackoverflow? I'm not really sure this is so much better. Maybe more difficult to exploit on a really large scale, I guess.
For my own code I often rely on libraries that I can just pull in using apt-get, things like BLAS (or variants of it). I can link to them statically, or dynamically and build a package with dependencies. And there we have a package manager again....
I totally agree npm and the ilk are a complete mess, though!
I don't really see how you fix systems like NPM & Maven...
1) They make it far easier to pull in unnecessary and dangerous dependencies
2) Consequently they make it a lot harder to for developers to actually understand and reduce the dependencies.
They are working as they are intended to work, I'm not sure how you can "fix" them beyond limiting yourself to a subset of "trusted" upstream repos and hope for the best. Sometimes a bit of impedance to development is a good thing, it's the universe's way of telling you that what you attempting is a bad idea (in this case accumulating a large & complex set of dependencies).
> Or do they just pull it from a URL somebody posted on stackoverflow
If you have someone around who is doing that then you have probably already lost (what other shortcuts have they been taking?).
Personally, I get libraries by looking for their home page (which may mean starting with a suggestion from SO but never just downloading without verifying) and cross-ref'ing that this is agreed to be *the* homepage. Looking at what Big Distros list as their sources for the sources is useful as well.
And, yes, if I can't find anything that looks trustworthy then I do without. What precisely "looks trustworthy" means is still a personal call, but an afternoon looking at the diff history from the last version one used is time well spent, IMO.
> I can just pull in using apt-get
That does, at least, have the advantage that it isn't "yet another language-specific package manager" and has plenty of tried and tested options for checking where you are getting packages from, usually someplace more controlled than the npm free-for-all (you are trusting the Devuan* team for everything you've installed so far, a bit more is reasonable).
* Other distros are available
Maybe he's just taking the piss.
As a French person occasionally and lamentably exposed to perfidious Anglos making fun of my pronunciation, "Rue" is my goto word to return the compliment and fart in their general direction.
(It combines the unpronounceable rolling R and alien U vowel sounds, for great effect. A guaranteed hoot with 99% of attempters who claim to speak French).
X'cuse-me sir … could you please direct me to the rue de la truie-qui-file sa quenouille … ? ;)
Fun for everyone here. Pronunciation for non-French, parsing for the French (as long as they don't need to explain it to their kids).
Quenouille sounds obviously French but is gloriously obscure to track down in both its meanings. Larousse dumbly enough ignoring that it's obsolete slang for, as one might have guessed, "the virile member" and instead insisting it's got something to do with textile engineering among other weird meanings.
https://www.larousse.fr/dictionnaires/francais/quenouille/65631 (open incognito as it won't display without accepting cookies)
https://www.argoji.net/page.php?l=FrFr&a=Quenouille
Truie being a sow.
Object escape analysis can figure out the scope of many local objects while GC takes care of shared objects.
Wasn't there a project for a compact Java runtime? Imagine all the runtime optimizations that could be performed if you're not trying to benchmark well with gigabytes of bloated "enterprise" code (Spring Boot).
It sounds a bit like 'Rue' to my Anglo ears. Its a cooking base made from fats (usually left over from browning ingredients) and flour that's used to thicken sauces.
Maybe its just me but I've got an inbuilt bias against non-deterministic software. I know we use it all the time because its cheap and convenient but where the rubber meets the road (often literally) you really need to have the confidence of knowing exactly what the code's doing at all times. So garbage collection -- in other words, fixing a fragmented or disordered heap -- is not compatible with systems programming.....sorry......
> "is a systems programming language that aims to provide memory safety without garbage collection, while offering higher-level ergonomics than languages like Rust and Zig."
I agree with you, but, if I understood it correctly, he's staying away from garbage collection as well, but trying to smooth the syntax a bit from Rust.
It's an interesting idea. COBOL has the no-garbage collection field to itself for business apps. Its successor in that space, Java, does use garbage collection. It would be nice to have a really high performance, fully compiled, with predetermined memory allocation language to use in that field. But it needs to be somewhat easier to use than Rust, to allow for the level of competency of the average biz programmer.
IMHO, that's really what it should shoot for: business apps. Rust is a nice evolution from C/C++ (assuming one isn't competent in C/C++), but I can't see being used for business software. However, if you're running really high throughput stuff like banking or payrolls, having something modern more pedal-to-the-metal than Java would be a boon. Trading algos can throw the required $$$$ at top programmers to use C/C++/Rust, but that won't fly with the average enterprise app providers outsourcing coding to India.
Roux is the primary ingredient for a mac and cheese: butter - flour. Then add milk, then cheddar. Add bacon or whatever you fancy and pour onto macaroni. Takes 10 minute to make and makes you look like you know what you are doing in a kitchen, easy. See also broccoli and cheese. And roux is exactly how Anglophones say rue.
Canadian market Kraft dinner is sorta passable if there is absolutely zero left to eat, well as long as someone keeps the ketchup hidden from the Canucks (YUCK),
the red boxed UK version from Kraft on the other hand......smells like rancid and EXTREMELY sweaty fetid feet *green face*
A roux is somewhat synonym-ish to a bechamel, but possibly not entirely. Plus, I think the word may be of French origin as well. A roux allows for the flour and butter mix to get toasted to a darker coloring (and more assertive taste) by prolonged heating before adding the milk. Which you would not do with a bechamel. This, I believe, is what is done with the base for gumbo. No idea what Mornay consists of, I am not actually overly fond of French cuisine, which I find lacks in bite, spice-wise and is rarely amenable to quick cooking from scratch. Although I have made a mean coq au vin.
But, yeah, mixing butter and fat (and then possibly adding milk) is a base staple for many recipes worldwide.
(of course, I am only a Google or chatgpt away from getting to the bottom of these terms, but deliberately doing it from memory)
Why not Zag?
Or...
"Zig-A-Zig-Ah"?
https://www.marieclaire.co.uk/news/celebrity-news/spice-girls-zig-ah-meaning-521860
Was there ever a "Coding Spice" - a "Sixth Spice" to the "Fifth Beatle"?
In actual coding space... there's SPICE and LTSpice... https://en.wikipedia.org/wiki/SPICE
"Zippy" from Rainbow...
https://en.wikipedia.org/wiki/Rainbow_(TV_series)
An AI Coding assistant named Zippy?
Zippy was extremely boastful and would frequently brag about his superior intelligence and singing skill (both of which proved to be completely unfounded when put to the test)
Zippy's mouth is a zip, and when he became too bossy or irritating, this was zipped shut to prevent him from continuing
has been around a long time: The ML kit compiler, which uses region-based memory management (similar to what Rust uses), but mostly hides it from the user, so it is easier to use. The ML kit compiler also has optional GC on top of region-based memory management to make it fully transparent to the programmer -- it will fall back on GC if the region-based management does not reclaim sufficient memory (which it usually does).
It appears they used the wrong file photo.
Fascinating timing. Bernard Lambeau (author of the Bmg ruby gem) just released Elo (https://elo-lang.org/) this very week using the exact same modus operandi with Claude.
It seems we've reached a tipping point where the "Senior Architect + AI Implementer" pattern is becoming a viable reality for building DSLs and languages. Like Klabnik, Bernard focused entirely on the semantics and design (the prompts), letting the AI handle the compiler implementation, test suite, and documentation.
It really changes the economics of building custom tooling.