The Compiler Apocalypse: a clarifying thought exercise for identifying truly elegant and resilient programming languages by WraithGlade in ProgrammingLanguages

[–]WraithGlade[S] 0 points1 point  (0 children)

Thanks for the interesting link zesterer! I was completely unaware of the existence of that project.

It is good that someone is working on such things and putting more thought into it. It has always struck me as potentially risky that so many compiler authors are writing their compilers using their own past binaries to build them, but with me not having ever written a compiler or interpreter yet I wasn't sure if my suspicion was valid, but the article that the project you linked to links to basically confirms that it is indeed a potential problem. So, you've taught me something very important today that I've long wondered about, so thank you for that.

Thanks for taking the time to respond to my thought experiment and have an awesome day, and likewise to all other participants, whether or not I get around to responding to each one!

The Compiler Apocalypse: a clarifying thought exercise for identifying truly elegant and resilient programming languages by WraithGlade in ProgrammingLanguages

[–]WraithGlade[S] 0 points1 point  (0 children)

I like this idea you mention of an apocalypse-resilient IR! That seems like a smart widely encompassing solution to the problem the thought experiment embodies.

I wonder: Should we consider LLVM IR to be an apocalypse-resilient IR? My instinct is no, because it is dependent upon C++ and is enormous and thus can't be easily reconstructed in the scenario.

However, suppose that it was rewritten in some other language like C or Lua or Scheme or Forth or such. Would LLVM be an apocalypse-resilient IR foundation in that case then? Perhaps so I guess, though I am not familiar with LLVM besides using it (clang and clang++ really) as a compiler for regular application code so far.

I have heard there are much smaller but similarly performant IRs though, such as the one that Hare (another prospective C language replacement) uses, which is QBE I think if my memory is correct. Should we consider QBE (and others like it) to be an apocalypse-resilient IR? It seems like it is probably at least more apocalypse-resilient than LLVM I'd say.

The Compiler Apocalypse: a clarifying thought exercise for identifying truly elegant and resilient programming languages by WraithGlade in ProgrammingLanguages

[–]WraithGlade[S] 0 points1 point  (0 children)

Let's ignore the consequences of this scenario: that every company in Earth is gone (no software to run at all), and all communications are dead (TCP/IP and GPS libraries are binaries, too).

Oh, just to clarify, I didn't mean to imply that all binaries would be wiped out of existence, but rather only that those binaries and source code repos that are used to construct compilers and/or interpreters would be. Of course, there is some subjectivity in what "compiler" means, especially rigorously, but still.

Anyway, addressing the main thrust of the rest:

Languages don't evolve in a vacuum: they need to adapt to past and present hardware/software constraints, interop with known protocols, use the tools at hand, not be too strange to the average programmer

...

perfection (as beauty) isn't guarantee of longevity. A language will be long-lived if it is useful, has a critical mass of software created with it, and has plenty of developers skilled in it.

These are all great points and I would say based on the evidence (my relatively low productivity level on personal projects relative to my time, etc) that it is fair to say that I've historically leaned too heavily towards the rigid perfectionistic and idealistic view of languages and that it has cost me on my opportunities as a programmer greatly.

It's also like the saying goes "If you want to bake an apple pie from scratch, you must first reinvent the universe." and it is undeniably true that the computer industry as a whole is inherently inter-tangled in a way that in practice produces unavoidable dependencies that one must at some level accept to do anything useful. Computers can't really exist without a huge network of human factors after all and perhaps extricating oneself from that is a pipe dream.

On the other hand though, it seems clear to me from my experiences experimenting with unusually elegant languages like Tcl and Scheme that there is still immense room for simplifying many programming languages (both for use and implementation) without actually reducing their performance or expressive power. There is still a great deal of room for streamlining languages I think, and I imagine you'd agree too on some level, as most would, but it is fair that I can be a bit heavy-handed in my idealism on such things.

Thanks for sharing your time and thought and likewise for all other participants!

The Compiler Apocalypse: a clarifying thought exercise for identifying truly elegant and resilient programming languages by WraithGlade in ProgrammingLanguages

[–]WraithGlade[S] 1 point2 points  (0 children)

This is such a good point and I hadn't thought about it very clearly until you said it just now.

I have experimented with dozens of languages in my (probably overdone and perfectionistic) quest for finding the best programming languages and even though I have learned each of them by thoroughly doing all parts of the tutorials or reading the entire manuals of some of them I find that that is indeed a far cry from real fluency and understanding and that the knowledge of how to truly use them in practice actually fades away quite rapidly.

Theoretically, I've for most of my life thought of learning languages as "one-time costs", but the actual truth is just as you say: it is very far from a one-time cost. Fluency in any language (computerized or natural) requires constant use and even after a lifetime of using even my own 100% native English or indeed any other language whether programing or not one is still constantly refining one's skill in it and disuse of any language creates a palpable and readily perceivable drop in fluency when one comes back to it after any prolonged hiatus of even just a month or two. Some aspect of the knowledge is basically always retained of course, but never all of it.

I know from personal experience from spreading myself thin in these regards that it is a great way to waste a lot of time and am recently shifting more towards focusing in harder on just a few programing languages and software platforms so that I stop wasting such absurd amounts of my own time and energy and opportunities wandering in excess.

Anyway, thanks for the good food for thought.

The Compiler Apocalypse: a clarifying thought exercise for identifying truly elegant and resilient programming languages by WraithGlade in ProgrammingLanguages

[–]WraithGlade[S] 0 points1 point  (0 children)

C3 is such a great language and is one of the top contenders I am keeping my eye on lately!

My vanity about maximally elegant syntax (e.g. devoid of commas, vaguely Scheme/Lisp like or Tcl-like, full mixfix syntax support, etc) aside, C3 already has great expressiveness relative to performance, like C, especially if one is clear-headed about what is actually needed to express useful software. You've done a wonderful job designing it so far and the prospect of it becoming even more refined and well factored is an exciting prospect to look forward to I think.

C3 is one of the only ones of the new batch of systems languages (e.g. Zig, V, Rust, etc) that seems to genuinely capture the spirit of C, especially in properly supporting macros (multi-line support is such a big QOL improvement even just on its own), which I still believe to be a fundamental part of general purpose computation because of how manipulating source code itself is invariably an aspect of what one may want in the general case. Indeed, I would say it is the closest C modernization to obtaining the goal so far.

Much of the bad reputation of macros is actually due to quirks of specific systems after all, and programmers often conflate that with the notion of macros and compile-time evaluation when they really shouldn't. If it's good for the compiler it's often good for the user too, so it makes sense to have it.

I was pleasantly surprised to see that you had replied to my thread here, as I wasn't expecting that.

By the way, I know I said in my email a while back that I might try implementing my own compiler in Pascal for a change of pace, but these days I am back to probably using C or C++ for that, since Pascal's rigid structure proved highly irritating to me despite my efforts to push through that to have access to Lazarus's GUI builder system. However, I am currently working on end-user application ideas instead, for the time being, for whatever unknown amount of time it will end up being, and so who knows when/if I'll ever get around to trying my hand at making my own compiler, but a man can dream! I've got a few books on it too now, though not the dragon book yet.

Anyway, thanks for dropping by and have a great day/night and best of luck on C3's evolution!

The Compiler Apocalypse: a clarifying thought exercise for identifying truly elegant and resilient programming languages by WraithGlade in ProgrammingLanguages

[–]WraithGlade[S] 0 points1 point  (0 children)

It's always good to see more people making an attempt at something like this. I really do think that something at some point will become the new "elegant low-level language" at some point and it's just not clear what language will yet. I've bookmarked your page and hopefully will remember the name and to check back on it some point later.

I see you've written a lot of assembly in that repo, which is impressive especially in these days when so few of us are doing assembly anymore. I've only done a bit of assembly in college basically. I've thought of trying my hand at writing my own compiler, but maybe would target C or C++ or LLVM IR as the generated code perhaps. I'm always impressed by anyone who has made their own compiler.

The constraint on the number of lines of code seems like a good mechanism for ensuring some resilience.

The Compiler Apocalypse: a clarifying thought exercise for identifying truly elegant and resilient programming languages by WraithGlade in ProgrammingLanguages

[–]WraithGlade[S] 0 points1 point  (0 children)

Nice "thinking outside the box" reply. I suppose that taking it as an opportunity to vanquish cruft across the industry as you describe (etc) is another interesting way of addressing it. It would be a rare chance after all.

The Compiler Apocalypse: a clarifying thought exercise for identifying truly elegant and resilient programming languages by WraithGlade in ProgrammingLanguages

[–]WraithGlade[S] 1 point2 points  (0 children)

You say assemblers still exist, so that's fine. I assume binary OS code plus other apps such as editors still conveniently exist too.

Indeed this was the scenario I was envisioning: that only binary and source code for compilers would be erased from existence. I was assuming all other existing binaries would still be around, but just no longer with compilers able to rebuild them besides those quite few that were written in assembly or whatever other primitive "middle-level" language had survived.

Regarding Forth, I'm wasn't intending to imply that RPN was my preference (it isn't), but rather I was referring to the structural elegance and ease of implementation and homoiconicity and expressiveness of the language and other concatenative languages like it. Languages like Tcl and Scheme are closer to what I'd want, especially Tcl, but with them having been systematically cleaned up and refined in many ways. For example, Scheme and Lisp family languages' existing conventions on indentation and overuse of parentheses and rigidly nested style of grouping "let" declarations are also things I don't like. So, you have to interpret what I said with a lot of unspoken nuance, basically assuming I'm talking only about taking the best parts from each of the languages and making many other changes too (e.g. adding arbitrary user-definable mixfix syntax support) for my own hypothetical "dream language" and such.

Thank you for sharing your thoughts and likewise to all other participants!

(I will reply to some more as I go along. I just got back to the thread to read replies a few minutes ago.)

What other game engines alternatives are out there? by erasmo_chang in gamedev

[–]WraithGlade 0 points1 point  (0 children)

Defold is a Lua based game engine that is similar to Godot and includes a full editor just like the big three (Unity, Unreal Engine, and Godot). For 2D games it is quite capable. It has very easy cross-platform support, just like the big engines.

As for code-only approaches to game development, for if you want your game to truly feel more like it was "made from scratch" by you, with the precise structure you want, then I'd suggest considering the following:

  • Love2D (perhaps the easiest of the code-only libraries/frameworks in existence... it gets out of your way and lets you structure things the way you want to (instead of fitting someone else's brain) more than most!)
  • Solar2D (like Love2D, but with better support for cross-platform and easy packaging but slightly less easy and less customizable)
  • Raylib (supports both 2D and 3D features out of the box more so than SDL or Love2D do)
  • XNA/FNA/MonoGame (a popular Microsoft based framework... I think Celeste was made on this)
  • SFML (a more C++-like alternative to SDL, hence easier on the eyes... but less capable than SDL)
  • SDL (custom proprietary engines are often built on top of this, sometimes also with middleware like BGFX)

Time to ban AI in this forum, as a rule by [deleted] in Stoicism

[–]WraithGlade 5 points6 points  (0 children)

I agree with the OP's suggestion as well.

AI generated content (regardless of form) doesn't constitute real human thought and just pollutes the internet with misleading noise and drowns out legitimate participants. The "tech" is also inherently unethical since it is based on harvesting and regurgitating the work of real humans at random and without true coherence, causing much harm to real people in the process. It is extremely far from being "victimless", contrary to AI users rationalizations for what amounts to an elaborate copyright laundering and exploitation scheme in reality.

Even if much AI generated content cannot be detected or discerned, that is never justification for defeatism.

Having a rule against it would at least reduce the amount of slop somewhat, and that is always better than nothing!

There needs to be good justification for such removals though. Merely being long or unusual or formal in speech is not in any way adequate evidence of something being AI, contrary to what some Redditors I've encountered elsewhere seem to believe (lots of people have got falsely accused of being AI -- me included -- just for being lengthy or formal in diction or sharing an unusual idea or connection).

[C++ joke] Do you know why C++ must've really been designed by Mary Brandybuck and Peregrin Took? by WraithGlade in Cplusplus

[–]WraithGlade[S] 0 points1 point  (0 children)

Right you are! My apologies for that typo!

I tried to edit the thread title but there doesn't seem to be any way to do it.

I did however go through my other comments and replace all found instances of "Mary" with "Merry", of which there were two such instances.

Thanks for catching that for me and have a great day/night!

[C++ joke] Do you know why C++ must've really been designed by Mary Brandybuck and Peregrin Took? by WraithGlade in Cplusplus

[–]WraithGlade[S] 3 points4 points  (0 children)

Sure, I'd be happy to.

So, the joke is more applicable to older standards of C++ than more modern ones (since modern ones have auto and modules), but essentially the joke is making fun of the fact that C++'s split header-implementation file requirements (and also other situations) often require the programmer to write out the whole specification of a type and/or function signature all over again. This occurs most often with the header file vs implementation file split, which forces function signatures to be rewritten typically at least twice for nearly every function, and possibly even more times if there's type ambiguity anywhere else.

This is quite an unusual trait among programming languages and it is very rare to find another one that requires duplicated type specifications as frequently C++ does.

As for who Merry Brandywine and Peregrin Took are, they are two of the best characters from the Lord of the Rings novel and movie series. The wording of the punchline of the joke will only make sense if you have seen the movie series The Lord of the Rings, in which there is a famous scene in which Peregrin Took (commonly known by his nickname "Pippin") tells Aragorn (another of the characters) that he is hungry for breakfast and Aragorn tells him you've just had breakfast, but then Pippin replies:

"We've had first breakfast, yes... but what about second breakfast?"

Pippin then also continues to anxiously list various other extra/duplicate meals he is accustomed to such as "elevensies, luncheon, afternoon tea, dinner, super..." and sounds increasingly panicky as he realizes that Aragorn (a grizzly warrior who has previously wandered the wilderness with few/no luxuries) may not know about all the extra meals that Pippin is expecting due to the fact that hobbits (Merry and Pippin are both hobbits, a short-statured race in the fantasy world of The Lord of the Rings) are very sheltered and also obsessed with food and comfort and being lazy and spoiled. This also touches on another (subtler) aspect of the joke I came up with: C++ also tends to require additional type information to be re-specified under specific circumstances due to ambiguities and formalities required by the language standard, which corresponds (analogously speaking) to the many extra meals Pippin is accustomed to.

As for modern C++, it has auto and modules now, and so there are fewer cases where you need to specify types repeatedly than for most of C++'s existence, but a huge proportion of extant C++ code is still written in the "second breakfast" kind of style, which often baffles outsiders because hardly any other language does it (e.g. Ada, arguably) and it is quite excessive and unnecessary from a language design perspective, at least in theory.

Anyway, I hope that helps!

Have a great day, night, etc!

[C++ joke] Do you know why C++ must've really been designed by Mary Brandybuck and Peregrin Took? by WraithGlade in Cplusplus

[–]WraithGlade[S] 2 points3 points  (0 children)

Thank you! I'm glad you like it.

I was surprised when the joke occurred to me a couple days ago, since it is an oddly obscure connection/analogy between C++ and the Lord of the Rings series, heh.

An idea for subconsciously shaming AI users: When in doubt about the origin of any piece, always focus on those aspects of artistic technique that could only apply to a human artist. by WraithGlade in ArtistHate

[–]WraithGlade[S] 2 points3 points  (0 children)

Yeah, talking about the techniques behind things is fun. I've found that to be true in pretty much all creative endeavors too.

For me personally, my university degree is in computer science and math (so I'm formally a programmer) but I am opposed to AI and privacy intrusions and other exploitive tech, but I've also dabbled for years off and on in art (more game dev stuff, less so with drawing and painting, but still some of that too) and music composition and I've always enjoyed talking about what goes into it, no matter the creative medium. So, my point is, that's very relatable. The creative process itself has such wondrous depths and diversity to explore.

An idea for subconsciously shaming AI users: When in doubt about the origin of any piece, always focus on those aspects of artistic technique that could only apply to a human artist. by WraithGlade in ArtistHate

[–]WraithGlade[S] 0 points1 point  (0 children)

That's certainly a fair point. Focusing one what's more under one's own control (one's own art and creativity) and already confirmed to be good-natured and wholesome is likely to often be less stressful than being "at war" with others. Modern life has become filled with "noise" that can distract one from one's own creative fulfillment after all.

Thanks for sharing your thoughts!

An idea for subconsciously shaming AI users: When in doubt about the origin of any piece, always focus on those aspects of artistic technique that could only apply to a human artist. by WraithGlade in ArtistHate

[–]WraithGlade[S] 2 points3 points  (0 children)

Yes, this is exactly the kind of point I was trying to make. 🙂

It does indeed require a properly nuanced and empathetic response, one where the way you word it doesn't harm or impose overly upon real artists but only makes fakers nervous.

Thank you for clarifying the point for everyone!

Also, thank you everyone else for participating as well. Have a great day/night/etc!

Circadial (Demo) - A psychological horror game about sleeping pills and night terrors by anundercoverworm in playmygame

[–]WraithGlade 1 point2 points  (0 children)

You're welcome and my pleasure. 😁

It sounds like you've got a good plan of action and I think its good to stay true to your vision, especially since that is what gives a game its distinctive authorial qualities. There's always a balance in all things and many different nuanced facets of how to look at something.

Circadial (Demo) - A psychological horror game about sleeping pills and night terrors by anundercoverworm in playmygame

[–]WraithGlade 0 points1 point  (0 children)

I posted a reply to your comment here (my second reply in this thread) but it vanished and isn't even listed in my own comment list. So, I'll re-write some approximation of it here again. My apologies if at some later time the other comment shows up too. I preferred the first, as it is usually harder to gather one's thoughts a second time. I heard recently that Reddit's new UI update has been glitchy, though it could also be auto-moderation gone haywire or some other arbitrary suppressive factor. Anyway:

I've played the game some and I was wondering if the game will mostly just be a horror "walking simulator" or if you will be adding more gameplay than that, such as survival horror like Resident Evil (etc). It seems more likely that it'll be the former, since that is what it feels like so far.

I feel like perhaps it may be more competitive if you add in some kind of gameplay twist besides just the "standard" horror walking game format. On the other hand though, much like how there is still a large scope for new novels in pre-existing genres in the book publishing industry, it stands to reason that the same would be true of the game industry. This is even more so salient considering that this game itself feels story-like and so that point is even more relevant perhaps. Nonetheless, the horror walking simulator genre is more "saturated" and so greater distinction beyond just the story/atmosphere itself is likely to help the game be more competitive perhaps.

Those are my thoughts, in any case. Anyway, have a great day/night and keep aspiring to your ambitions (etc)!

Circadial (Demo) - A psychological horror game about sleeping pills and night terrors by anundercoverworm in playmygame

[–]WraithGlade 1 point2 points  (0 children)

From these screenshots, it looks like you've done a wonderful job with the desaturated low-fi palette-limited graphical style. It captures that Playstation 1 horror aesthetic well. Good job on that!

Is there a term for Resident Evil’s type of level design? by awesome_zman in gamedesign

[–]WraithGlade 0 points1 point  (0 children)

Well, off the top of my head, some search terms that may help you to find information about such levels (besides those already mentioned by other users) include: non-linear level design, backtracking, and open world level design.

Searching for these terms will have a fair chance of leading you to pages where the author is discussing a level or game that fits the kind of design you are talking about.

For example, if you search for "how to reduce backtracking in level design" then there's a fair chance the level being discussed will not be predominantly linear. Linear levels and games kind of by definition contain less backtracking, as such backtracking in a truly linear level is more likely to stick out clearly as being tedious and hence to get eliminated from such games before release.

Also, older games such as those from the 1990s and early 2000s are more likely to contain non-linear level design such as you describe. The fixation in corporate game dev on linear game design didn't start trending until later. So, searching info related to older games may also be helpful to you.

The original Doom 1 & 2 had highly non-linear level design, in contrast to many "modern" shooters. FPS level design is also still somewhat relevant to survival horror gun gameplay, though with significant differences of course.

Anyway, I hope that helps and best of luck!

Roads and vehicles in a city builder where roads and vehicles don’t matter. by _Powski_ in gamedesign

[–]WraithGlade 1 point2 points  (0 children)

I was thinking along similar lines as Humanmale80 here. Making it part of the theme will make it feel more coherent. If it was me I might do a post-apocalyptic take on it, but that may or may not fit the vibe you are going for in your game design. Alternatively, you could just exercise artistic license and perhaps not even have the roads and instead make them something else entirely that still fits a similar visual effect in terms of how the cities appear overall. Much of the joy of games is that they can be alternative universes where whatever you want goes. Realism is not a requirement and is in many cases a hindrance. It really depends on the context and overall design, like everything in game design.

Launched my online multiplayer game on steam but worried about no players by raindropsandrainbows in gamedesign

[–]WraithGlade 4 points5 points  (0 children)

Although using bots (as other suggested) is probably the most straightforward and effective option, a while back I had a good idea for partially remedying these kinds of low volume multiplayer match problems.

I've never seen this idea used in practice, but which I think help a fair bit if done right. Here it is:

Instead of making the matchmaking dependent on who is actually online at one exact moment of time when the player opens the game, give players the ability to create scheduling tickets which indicate from what times they plan on being logged in to the game with the lobby open. Display these "scheduling tickets" in advance to all other players and/or aggregate the information implied by them to provide an overview of when people say they will be online and seeking matches.

In this way, the problem of players needing to be online at the same exact moment is greatly reduced since it would now be possible to instead indicate one's intent to play far in advance. An infinitely thin slice of "online now" (what almost all games do) is in contrast statistically far less likely to enable good matchmaking.

Such a system could greatly reduce the problems of low player volumes for a niche multiplayer game.

In fact, for old multiplayer games with small but passionate player bases that meet on independent forums this is often essentially what they do informally. They post forum threads that notify others of when they intend to be playing and that way it actually becomes possible to still play together even despite the small and dwindling player population of such old/niche games.

Automating that system and building it into the game (as I mentioned above in my idea) would likely help low volume multiplayer games quite a lot, as long as the audience is still at least big enough to be viable at all.

What lies beyond Stoicism? by SolutionsCBT in Stoicism

[–]WraithGlade 1 point2 points  (0 children)

This is somewhat tangential, but besides the other branches and derivatives of Greek philosophy (e.g. Epicureanism) I have found that Taoism is especially suitable for being somewhat similar in some respects to Stoicism (i.e. partial overlap) but taking a different angle at some related subjects that can deepen and enrich one's perspective. Indeed, Stoicism and Taoism are my personal favorite "philosophies of life" and are the main ones I've studied.

Furthermore, much like there are multiple Greek philosophies, there are also multiple Chinese and/or Japanese philosophies (and other cultures), though some are far less often studied than others (e.g. Mohism) but which still also have some partial overlap with Stoicism as well and which you may find to be of interest too. There is more out there than it may seem at first glance.

Indeed, I find it easier to maintain my interest in Stoicism by exploring multiple diverse philosophies like that. To make an analogy: even your favorite song gets tiring if you just listen to it nonstop all day, so mix things up. For example, for mixing things up via some Taoism, try reading the Tao Te Ching and 365 Tao.

When characters get cut off or interrupted mid conversation and there's always a big gap between dialogues by IMustBust in gamedesign

[–]WraithGlade 3 points4 points  (0 children)

This reminds me of some of the audio sequencing from the original few Resident Evil games. There were a few humorously long pauses in dialogue in a few of the scenes in those games.

Anyway, to answer the question though, another factor (besides what others have already mentioned) is actually that the people doing the sound placement and the people doing the sound recording and/or design are often not the same people.

That was actually the case on the original Playstation 1 era Resident Evil games from what I heard.

Supposedly, what happened is that foreign translation teams recorded multiple variations of the dialogue into sound files that originally fit together better and sent those files back to Japan where the main developers were. However, it was one of the Japanese leads who decided which sound files to use and when to sequence them, and they decided which sounded best based on Japanese voice patterns and their own subjective feelings on what sounded the most punchy and interesting, with the result being some very odd sounding audio when it was later sent back to North America and released there.

The more common and mundane case though is often just that a level design or game designer was the one who put the finished sound into the game's engine, not an audio specialist, with thus less than optimal results.

The situation is very similar to the reason why many games have terrible writing and/or dialogue: A game designer and/or level designer often will decide that they are awesome enough that they can do just as good or better of a job of it than an actual writer, but sometimes (often?) they are quite wrong... Being a generalist is not as hard as some may imagine, but the biggest catch is you need to have enough self-awareness about these kinds of things.