The Raku Programming Language
-
@error said in The Raku Programming Language:
@pie_flavor said in The Raku Programming Language:
@Applied-Mediocrity said in The Raku Programming Language:
close to metal code
This, it should be noted, is entirely bullshit.
So what would a modern close-to-metal language actually look like?
-
@topspin I have been summoned, and so I appear.
-
@Gąska I see you didn't read any of what that was in response to.
-
people. people. Taste like , talk like people.
-
@pie_flavor so rather something like LLVM (as per the article) or more something like CUDA, which exposes all kinds of parallelism, NUMA / cache hierarchies, etc.? Both are still abstract in a sense.
-
@pie_flavor said in The Raku Programming Language:
For bonus points, see if you can guess what the difference is between
»+»
,«+«
,«+»
, and»+«
.You never gave the solution to this.
-
@topspin said in The Raku Programming Language:
@pie_flavor said in The Raku Programming Language:
For bonus points, see if you can guess what the difference is between
»+»
,«+«
,«+»
, and»+«
.You never gave the solution to this.
-
@topspin CUDA is more what I am talking about, yes.
-
@topspin said in The Raku Programming Language:
@pie_flavor said in The Raku Programming Language:
For bonus points, see if you can guess what the difference is between
»+»
,«+«
,«+»
, and»+«
.You never gave the solution to this.
I've no fucking clue, and neither do the docs.
-
@topspin said in The Raku Programming Language:
@Applied-Mediocrity said in The Raku Programming Language:
@Mason_Wheeler said in The Raku Programming Language:
How times have changed! When I was a kid ... C was considered a high-level language
Hey, those are personalized and non-transferable!
And if you've truly earned yours, you do not give it away! We wear our with pride!
-
@topspin said in The Raku Programming Language:
and I can break your parser with one mistake.
I would really appreciate it if you stopped writing those Blu-ray config scripts.
-
@boomzilla said in The Raku Programming Language:
@Gąska said in The Raku Programming Language:
@Applied-Mediocrity said in The Raku Programming Language:
But there are reasons state of the art is not being adopted, and it's not just the cost of re-training.
Actually, it is just the cost of re-training. People strongly opposed OOP too at one point. And before lambdas became ubiquitous, people ignored them as completely useless. Async/await also spent most of its time as only an academic curiosity. Hell, to this day some people argue that scoped resources are stupid. Literally the only reason people refuse(d) to use these features was lack of training.
Basically every idea that's so obviously good that most programmers can't imagine not wanting them, has been initially rejected by nearly everyone. Also, a significant part of your posts is about Rust being one of the few exceptions from the general rule of new language being completely unnecessary and new ideas belong in academia and not real world programming. Are you aware that Rust was released just 5 years ago, and its revolutionary borrow checking algorithm was first conceived in the mid-90s?
The Blub Paradox is worthless in any actual discussion, because it's a Kafka trap: any argument claiming that I am not falling victim to the Blub Paradox can be explained away by me having fallen victim to the Blub Paradox.
-
@Mason_Wheeler said in The Raku Programming Language:
@boomzilla said in The Raku Programming Language:
@Gąska said in The Raku Programming Language:
@Applied-Mediocrity said in The Raku Programming Language:
But there are reasons state of the art is not being adopted, and it's not just the cost of re-training.
Actually, it is just the cost of re-training. People strongly opposed OOP too at one point. And before lambdas became ubiquitous, people ignored them as completely useless. Async/await also spent most of its time as only an academic curiosity. Hell, to this day some people argue that scoped resources are stupid. Literally the only reason people refuse(d) to use these features was lack of training.
Basically every idea that's so obviously good that most programmers can't imagine not wanting them, has been initially rejected by nearly everyone. Also, a significant part of your posts is about Rust being one of the few exceptions from the general rule of new language being completely unnecessary and new ideas belong in academia and not real world programming. Are you aware that Rust was released just 5 years ago, and its revolutionary borrow checking algorithm was first conceived in the mid-90s?
The Blub Paradox is worthless in any actual discussion, because it's a Kafka trap: any argument claiming that I am not falling victim to the Blub Paradox can be explained away by me having fallen victim to the Blub Paradox.
Yes, ignorance is often like that.
-
@boomzilla said in The Raku Programming Language:
@Mason_Wheeler said in The Raku Programming Language:
@boomzilla said in The Raku Programming Language:
@Gąska said in The Raku Programming Language:
@Applied-Mediocrity said in The Raku Programming Language:
But there are reasons state of the art is not being adopted, and it's not just the cost of re-training.
Actually, it is just the cost of re-training. People strongly opposed OOP too at one point. And before lambdas became ubiquitous, people ignored them as completely useless. Async/await also spent most of its time as only an academic curiosity. Hell, to this day some people argue that scoped resources are stupid. Literally the only reason people refuse(d) to use these features was lack of training.
Basically every idea that's so obviously good that most programmers can't imagine not wanting them, has been initially rejected by nearly everyone. Also, a significant part of your posts is about Rust being one of the few exceptions from the general rule of new language being completely unnecessary and new ideas belong in academia and not real world programming. Are you aware that Rust was released just 5 years ago, and its revolutionary borrow checking algorithm was first conceived in the mid-90s?
The Blub Paradox is worthless in any actual discussion, because it's a Kafka trap: any argument claiming that I am not falling victim to the Blub Paradox can be explained away by me having fallen victim to the Blub Paradox.
Yes, ignorance is often like that.
...the one accusing the other of it frequently doesn't realize they're the ignorant one?
-
@Mason_Wheeler a sphincter says what?
-
This has got to be one of those "Esoteric" or "Joke" programming languages, like BrainFu*k, or Ook, or K&R C. Honestly, you'd need a keyboard like this to be able to use such a stupid language.
-
@pie_flavor said in The Raku Programming Language:
The docs strongly recommend you install WinCompose.
-
@pie_flavor said in The Raku Programming Language:
The docs strongly recommend you install WinCompose.
And if you're not using Windows? A platform on which Perl was never particularly prevalent? You're just SOL?
The only benefit to come out of this is that Perl may finally become extinct. As a "write only" language (much like Regex), the extinction of Perl would be a major step forward in the evolution of computer science into a real "engineering" or "scientific" discipline.This reminds me of a long lost civilization which used a complex series of pictograms for writing. They also worshiped cats, so I guess it's fitting for the times we find ourselves in.
-
@Applied-Mediocrity said in The Raku Programming Language:
Some languages are more suitable for certain tasks than others. Is any area presently badly covered? I don't think so. You folks tell me.
It's very very difficult to think of how to express ideas before the creation of language to do so, and so it's also difficult to think of tasks that are badly covered precisely because the poor covering is what makes the area hard to think of. Pioneering is orders of magnitude more difficult than following on behind.
-
@bobjanova said in The Raku Programming Language:
most of its ideas got pinched for .Net
Not just ideas. Some of the same people worked on both; C# is arguably the primary successor to Delphi.
-
@Watson said in The Raku Programming Language:
Minimum Publishable Units. If they have something to say, they break it down into MPUs and write a paper for each one. Because if you're not getting papers published why are we keeping you on again?
This is a practice that varies hugely between countries. The US tends to go for a “never mind the quality, feel the width” approach. The UK only counts the top X papers in the assessment period, and that greatly reduces the number of crappy papers that say nothing, voluminously.
-
@caffiend said in The Raku Programming Language:
@pie_flavor said in The Raku Programming Language:
The docs strongly recommend you install WinCompose.
And if you're not using Windows? A platform on which Perl was never particularly prevalent? You're just SOL?
I see you are unaware that WinCompose is a program replicating a built-in feature of Lunix. In fact the docs have a full page on entering unicode characters.
-
@error said in The Raku Programming Language:
So what would a modern close-to-metal language actually look like?
LLVM IR.
Having used it a fair bit, it's not much nicer to code in than raw assembler. I like to call C the first sane stop above bare metal, since it's at the point where you get structured programming and structured types with named fields. Below that, you're writing
goto
a lot and indexing into things with numbers rather than by name.
-
@Mason_Wheeler said in The Raku Programming Language:
The Blub Paradox is worthless in any actual discussion
Except when talking to someone proposing that LISP should be used (for anything). Then you should use it as soon as possible in order to wipe the smugness off their face.
-
@dkf Except the problem is identical.
-
@pie_flavor Which problem?
-
@dkf said in The Raku Programming Language:
@pie_flavor Which problem?
The one quoted in the post you were responding to.
-
@pie_flavor if C isn't low-level because its abstract machine doesn't match modern CPU architectures, then we have a bit of a problem, because the raw x86 assembly itself doesn't match the architecture either. Everything compiling to x86 assembly is high-level because x86 assembly is high-level.
-
@Gąska
@pie_flavor said in The Raku Programming Language:@Applied-Mediocrity I should note that I do not endorse the article's title, and think C is a low-level language. But it is not bare-metal because what it is doing and what the metal is doing are barely correlated.
Repeating myself is fun!
-
@pie_flavor so what problem did you refer to in your recent post where you said the problem with LLVM IR is identical?
Edit: would you agree with my post if I replaced "low-level" with "bare metal"?
Edit 2: I disagree with that use of the term "bare metal", though, as it usually means running a program without operating system, and is unrelated to the characteristics of the particular programming language other than being able to run without operating system.
-
@pie_flavor said in The Raku Programming Language:
The one quoted in the post you were responding to.
Oh, the one where an old fart complains that machine code has a non-trivial mapping to how gates are controlled and says that the important thing was that he had an onion on his belt, which was the style at the time?
-
@Gąska the problem is that LLVM IR has very little to do with what the actual hardware is doing. Instruction parallelism is not exposed, nor is the cache, nor are any of the actual hardware features of the CPU. Rust is an abstraction model over LLVM is an abstraction model over the instruction set is an abstraction model over the actual processor.
-
@dkf No, not that one.
-
@pie_flavor said in The Raku Programming Language:
@Gąska the problem is that LLVM IR has very little to do with what the actual hardware is doing. Instruction parallelism is not exposed, nor is the cache, nor are any of the actual hardware features of the CPU. Rust is an abstraction model over LLVM is an abstraction model over the instruction set is an abstraction model over the actual processor.
So, as I said - all that applies to x86 asm too. And because asm is the only interface available, there's nothing anyone can do about it.
In other words - LLVM is the lowest level it could possibly be.
-
@Gąska Yes. Glad we got that sorted. For something to truly be bare-metal, it'd actually need to have access to the parallelism and the cache and so forth, such as CUDA.
-
@caffiend said in The Raku Programming Language:
"Joke" programming languages, like BrainFu*k, or Ook, or K&R C.
-
@caffiend said in The Raku Programming Language:
This reminds me of a long lost civilization which used a complex series of pictograms for writing. They also worshiped cats, so I guess it's fitting for the times we find ourselves in.
The similarity to
Unicode:woman_cooking_avocado_in_steamy_room_medium-light_skin_tone:
and is striking.
-
@pie_flavor said in The Raku Programming Language:
I see you are unaware that WinCompose is a program replicating a built-in feature of Lunix. In fact the docs have a full page on entering unicode characters.
You're correct, I wasn't aware of such functionality. I've simply never needed it. And even during self-isolation, I have better things to do than read documentation about a language who's mascot is a "bug".
If Python's white-space sensitivity didn't cause enough trouble with source control systems, and people's "favorite" editor and settings, I can only imagine how successfully all these Unicode characters are going to survive being round-tripped through everyone's different editor, different OS's and SCM systems.
-
@caffiend said in The Raku Programming Language:
If Python's white-space sensitivity didn't cause enough trouble with source control systems,
and people's "favorite" editor and settings
OK, fair enough. (Python's why you have a spaces-only mode.)
-
@caffiend You seem to operate in a magic space where it is still 1990 and the only language that matters is English. People have been managing to write Hindi and Russian and fun scripts like those, in computing, for a long while now. Having Unicode operators is a bit dumb, since it requires special input methods, but having, for example, Unicode identifiers is so sane that Java has been doing it since 1995.
-
@pie_flavor said in The Raku Programming Language:
but having, for example, Unicode identifiers is so sane that Java has been doing it since 1995.
Allowing Unicode identifiers is sane. If people want to write in a script that’s different from the one I use, power to them. But having them by default is stupid.
-
@pie_flavor said in The Raku Programming Language:
You seem to operate in a magic space where it is still 1990 and the only language that matters is English.
Not at all the case, just a world where Source Code files generally conform to the lowest common denominator character set, so as they are robust against the various different Unicode implementations, and when working in teams, where people chose to use different editors or IDEs, and SCM systems are known to mangle obscure constructs (even Python has this problem when not everyone on the team uses the same tabstop settings).
I may be naive, but I don't think that people write code in Hindi, or West-Indian Patois, or even Mandarin.
Internationalization is usually handled by a resource based system for internationalization of the UI at runtime or compile time.
Although, I've seen a fair bit of source code with Mandarin comments, however was unaware that you could use Unicode variable names, and am fairly certain that syntactic constructs are always part of the original ASCII character set.
-
@caffiend said in The Raku Programming Language:
just a world where Source Code files generally conform to the lowest common denominator character set, so as they are robust against the various different Unicode implementations, and when working in teams, where people chose to use different editors or IDEs
Living in the 90s is a correct description for that.
If you're using an editor or IDE or SCM that cannot handle or doesn't default to UTF-8 in 2020, you're .
-
@caffiend said in The Raku Programming Language:
robust against the various different Unicode implementations
How is life in that timepod?
-
@dfdub said in The Raku Programming Language:
There have been advances in language design and compiler technology in the meantime and many popular languages are basically decades behind the state of the art. So why on earth shouldn't we try to take advantage of that to make it easier to write correct software?
I think I’ll agree here with some old point of Blakey, that pretty much the opposite is usually achieved instead. It should be possible to make programming far more accessible than it is, yet the direction it mostly goes into is making it less so.
-
@dfdub said in The Raku Programming Language:
@caffiend said in The Raku Programming Language:
just a world where Source Code files generally conform to the lowest common denominator character set, so as they are robust against the various different Unicode implementations, and when working in teams, where people chose to use different editors or IDEs
Living in the 90s is a correct description for that.
If you're using an editor or IDE or SCM that cannot handle or doesn't default to UTF-8 in 2020, you're .
VS code doesn't default to utf-8. I think most Microsoft stuff didn't surrender to utf8 yet.
-
@sockpuppet7 said in The Raku Programming Language:
VS code doesn't default to utf-8.
I don't know what you did to your copy of VS Code, but mine definitely uses UTF-8 for new files by default.
I think most Microsoft stuff didn't surrender to utf8 yet.
They even (finally) have a UTF-8 code page now, so you can finally use the standardized C/C++ APIs to interact with files and the environment on Windows:
-
You may have noticed, either here or elsewhere, me using
$^varname
syntax. What's that mean? Well, sometimes an automatic function parameter is useful for closures. For example, in Kotlin,x.map { it * 2 }
is short forx.map { x -> x * 2 }
. Raku takes this one steps further and allows you to define arbitrary auto-variable names:x.map -> { $^multiplicand * 2 }
. But not just closures. You can define it that way for regular functions - as I mentioned,~~
is definedsub infix:<~~> { $^a.ACCEPTS($^b) }
. (You may notice that I use both Java-stylea.b(c)
syntax and Ruby-stylea.b c
syntax for function invocation. Raku allows both. Why? No reason.) But it doesn't stop there: it's also valid in loops.for @elems { do-thing-with($^elem) }
Finally,sub foo { $^a / $^b }
is a different function fromsub foo { $^b / $^a }
, because such auto-params are ordered alphabetically. If you don't like it, then use:
instead of^
, which does it as a named parameter instead of a positional parameter.
-
@dfdub said in The Raku Programming Language:
I don't know what you did to your copy of VS Code, but mine definitely uses UTF-8 for new files by default.
Sorry, it's their c++ compiler that wasn't using utf-8 by default. Unless you put a bom on it
-
@pie_flavor the more I read about Raku, the more it sounds like the devs were on a really long lasting pot high the whole time. Sure man, that sounds good. Just throw it in! Pass the Cheetos!