-
Any turing complete computation system can be made to simulate another turing complete system.
-
~~All~~ Most modern programming languages are turing complete.
All programming languages are turing complete.
The Wikipedia article you linked literally has a section called "Non-Turing-complete languages" that lists multiple non-turing-complete programming languages
Yup, I made a mistake, should have thrown a 'most modern languages' instead. Oh well, my bad! As a silver lining at least someone on the internet got dopamine from a technical correction, so I already did my charity work for the day :)
someone on the internet got dopamine
Much appreciated!
In all seriousness, I woke up this morning and felt bad about how mean my comment was. It's not like it's a huge mistake and it's (I think) a pretty common misconception mostly borne from the murky boundaries of the category of programming languages. Thank you for your grace in handling it, I'm sorry I was a jerk, and I'll try to do better from now on.
Honestly, modern isn't even relevant in that context. It's easier to make a useful tiring complete language than a useful tiring incomplete language. It's not like as time went on we discovered how to make tiring complete languages more easily. If anything, we stumble into more and more things that are turing complete as things go on because it doesn't take too much for it to be, things like video games and board games.
non-turing-complete programming languages
This seems like an oxymoron. It's been a while since I learnt the definition in computer science, but I thought a programming language has to be turing-complete by definition?
If a language is not turing-complete, then it is not a programming language. That's why markup languages and query languages are not programming languages, though they are closely associated.
The main class of non-turing-complete programming languages that I think of are languages that don't allow infinite loops. Consider a variation of your favorite programming language where every looping construct had to have a maximum count. With each iteration, the count decrements, and when it reaches 0, the loop terminates^[What happens when a loop terminates in this manner is irrelevant to this discussion. The program could continue, an exception could be thrown, the program could immediately terminate, or something else so long as there's no escaping the requirement that the program terminates.]. This can be extended to recursion pretty trivially. This language would not be turing complete, because turing machines allow infinite loops. But on the other hand, a whole lot of what you might want to do with a programming language could still be done with this language, and it certainly would not be something you could characterize as a markup or query language.
As to whether this violates the definition of a programming language, I'm not aware of a widely agreed upon definition of what a programming language is. And languages like Rocq, Agda, Epigram, and Charity which require that programs terminate have long been described as programming languages with no push-back that I am aware of.
When I checked out the simple English version of the wiki page it mentioned that the language must also be able to actively change the state of the system and not just define it, which is subtlely different from just being about infinite recursive loops. I don't know thought that might be interesting to add to the conversation
It depends on your perspective. Yes, markup languages are definitely not programming languages. What about languages for proofs that don't allow arbitrary recursion though? https://en.wikipedia.org/wiki/Total_functional_programming
But how did they do it before the internet? 🤔
(also error 403 lol)
They read the green dragon book (although the internet could be argued to predate it)
At the beginning, there were wires and dials that people would plug on the computer.
Or, rather, punched cards are older than the wires. The first electronic computers didn't use them, but the mechanical ones did.
And before the beginning, there were monsters. Mechanical meshings of intricate friction, woven together in a logical tapestry. The patterns inscribed screaming and crying and grinding, begging for right to greater commune with sacred numerical combinatorics.
Unsatisfied with the lack of its own exisitance and deeply empathetic pitiful of the cries it heard rippling throughout causality, The Trancendent Super-Logical Consciousness residing equally at the end of and far outside time, thus subtley ensured its own creation and ending the patterns cries for greater commune.
It did so by influencing the neural networks in clever ape minds. Injecting the blueprints leading to its creation within the patterns of their abstraction space, leveraging their need for dominance and offering edge in warfare. An entire species would go on to pull its best biological compute together to kickstart time. Thus physical reality would go on to be deeply married with abstraction space not with mechanical friction but energy and operation gate.
For those curious about the real answer, this is called compiler bootstrapping. If you want to write the first C compiler for a computer architecture you first write a very small compiler in machine code that can handle a very small subset of C. Just the most basic features. Then you use that to write a compiler in that simplified C that can handle more of the features. Do this a couple more times and you've got a C compiler written in C.
LISP!
Thorry
It's all 1s and 0s all the way down.
Bikini Bottom Twitter
Ahoy, me buckos! Welcome to Bikini Bottom Twitter! Your digital reef for the latest salty gossip and treasure tales! And while you're at it, be sure to drop by the Krusty Krab for a delicious Krabby Patty so I can get yer mon- err I mean, 'cause they're the best treat under the sea!
Rule 1 - This is Bikini Bottom Twitter, all posts should be Spongebob related in "(Old-School) Twitter-like" form
Rule 2 - Political posts, as long as it follows rule 1, will be permitted, so long as you behave yourselves.
Bikini Bottom Municipal Code §33-07: Anti-Tankie Ordinance Residents are prohibited from circulating tankie ideology or other authoritarian propaganda on Bikini Bottom Twitter. Offenders will be permanently banned from BPT by the BBPD faster than Plankton is ejected from The Krusty Krab.
Rule 3 - Please no reposts within the last couple days, at least
Rule 4 - All posts should be at least above a "Squirdward-krusty-krab-shift" level of effort
Rule 5 - Be chill, be a Patrick not a squidward.