4 ms·
> And we should aim for that, the babel tower of languages doesn't really help anyone. What exactly do you mean with this? That the amount of programming langu
by CaptainOfCoit 1y ago
> And we should aim for that, the babel tower of languages doesn't really help anyone.
What exactly do you mean with this? That the amount of programming languages available isn't actually helpful, it's detrimental?
- Mountain_Skies 1y agoEveryone should be free to unite behind my choices. It's obviously what is best for everyone.
- js8 1y agoThat's a rather cheap retort. I am not saying everybody should use raw untyped lambda calculus for their programming, just that we would all benefit if we could translate languages we use to and from it, because then we could interoperate with any other code, refactor it, etc.
- actionfromafar 1y agoIsn’t structure lost in the compilation process? I mean, we already have bits and pieces of what you want, like an assembler to C decompiler, but the output isn’t very nice without the types. And how many languages can run on the CIL in dotnet. Say we create a CIL to lambda calculus compiler. Where do we go from there?
- js8 1y agoA CIL to LC compiler is effectively an emulator of CIL in LC. That is, every primitive of CIL has a corresponding LC term, which operates on the CIL execution state. So then you can express functions from .NET standard library as terms in LC. Now let's say you do the same for JVM. Now you can start looking at all these lambda terms and search for some similarities. For example, you might notice that some list functions are equivalent if you transform the representation in a certain invertible way. This gives you a way to express functions from one standard library in the other. In general, I think we should try to translate wide variety of human programs into lambda calculus and then try to refactor/transform the lambda terms to spot the common patterns.
- actionfromafar 1y agoThat sounds very thankless, but on the other hand we have very fast computers and maybe "the bitter lesson" of just throwing more compute at finding patterns can be applied here, as well.
- justin66 1y agoHas even a single programming language made the complete documentation and implementation effort you're describing? It'd be interesting to read about.
- js8 1y agoWell, I feel that lot of code is written again and again, just in different languages. If we could automatically compare and translate different implementations, I think it would be beneficial for finding bugs. Everytime somebody comes up with a new programming language, I am like, yeah, so you added these abstraction, just in a different syntax. I think people who come up with new languages should implement the primitives on top of lambda calculus (which really is the simplest logical system we know), then we could potentially have automated translators between languages, and that way we could cater to everyone's preferences, and expand a standard library across different languages. So in short, yes, I think proliferation of programming languages without formal understanding of their differences is detrimental to interoperability of our computer systems. It would also allow wider notion of metaprogramming - automated manipulation of programs. For example, let's say I need to upgrade my source code from one interpreter version to another. If both interpreters are represented as a set of terms in lambda calculus, I can see how express one in the other, and formalize it as some kind of transformation. No more manual updates when something changes. It would also allow to build a library of universal optimizations, etc. So I think programmers would benefit from having a single universal language.
- CaptainOfCoit 1y ago> Everytime somebody comes up with a new programming language, I am like, yeah, so you added these abstraction, just in a different syntax. I got this feeling too, until I started to explore languages outside of the C/Algol-like syntaxes. There is a wide range of languages out there, from array languages to lisps, and they don't give me the feeling of "just a different syntax" but actually changed the way I think. So yeah, I love lisp now and spend most of my days writing it, but it also comes with the downside that now Java, C# and Golang look more similar than different to each other. > It would also allow to build a library of universal optimizations, etc. So I think programmers would benefit from having a single universal language. I think assuming everyone would use the same hardware, same environment and same workflows to solve the same problems, this would make a lot of sense and would be hugely beneficial! But in reality lots of problems need different solutions, which has to be made in different ways, by different people who think differently. So because the world is plural, we need many programming languages too. Overall I feel like that's a benefit.
- lproven 1y agoCertainly that is how I read it. It divides effort, spreads it too thinly among too many disparate projects with essentially the same goals, and as a result, they all advance much more slowly. Examples: how many successors to C are there now? Hare, Odin, Joy, Zig, Nim, Crystal, Jai, Rust, D... And probably as many again that are lower-profile or one-person efforts. For a parallel example, consider desktop environments on FOSS xNix OSes. I have tried to count and I found about 20. A "desktop" here meaning that it provides a homogenous environment, including things like a file manager and tools to switching between apps, plus accessories such as text editors, media viewers, and maybe even an email client, calendar, and/or address book. I am trying to explicitly exclude simple window managers here. The vast majority are simply re-implementations of the Windows 9x desktop. Taskbar along 1 edge of the screen, with buttons for open apps, start menu, system tray, hierarchical file explorer, a Control Panel app with icons for individual pages, etc. This includes: * KDE Plasma (and Trinity) * GNOME Flashback (AKA GNOME Classic, including the Consort fork) * Cinnamon * Xfce * Budgie * MATE * LXDE (including Raspberry Pi PIXEL) * LXQt * UKUI (from Ubuntu Kylin, openKylin, etc.) * DDE (from Deepin but also UOS, Ubuntu DDE and others) * Enlightenment (and Moksha etc.) * ChromeOS Aura And more that are now obsolete: * EDE * XPde * Lumina That's about 15, more if you count variants and forks. There are more. The main differences are whether they use Gtk 2, 3 or 4, or Qt. That's it. It's easier to count the ones that aren't visibly inspired by Windows >= 95: * GNOME Shell, ElementaryOS's Pantheon, Ubuntu's Unity. Arguably: GNUstep (whose project lead angrily maintains is not a desktop after all), and the long-dormant ROX Desktop... So, arguably, 3 you can run on a modern distro today. CDE is older than Linux or Free/NetBSD so doesn't count. I only know 1 distro that offers it, anyway: Sparky Linux. MAXX Interactive Desktop looks interesting but it's not (yet?) FOSS. All that effort that's gone into creating and maintaining 8-10 different Win9x desktops in C using Gtk. It's tragic. And yet there is still no modern FOSS classic-MacOS desktop, or Mac OS X desktop, or GEM desktop, or Amiga desktop, or OS/2 Workplace Shell... it's not like inspiration is lacking. There are at least 3 rewrites of AmigaOS (AROS, MorphOS, AmigaOS 4.x) but despite so much passion nobody bothered to bring the desktop to Linux? Defenders of each will vigorously argue that theirs is the best and there are good reasons why it's the best, I'm sure, but at the end of the day, a superset of all of the features of all of them would not be visibly different from any single one. That's rather sad, IMHO.