How did we get here? (Why is Julia such a messy language?)

I think it would. However, the goal of the package was actually to get a good ECS for Julia. However, it was a hacky bit-dispatch-based ECS, not a full archetypal ECS with lots of features, so, my next ECS would hopefully be that.

However, that next ECS is also where the issue arises, where I think I need to do an unsafe reinterpret and dynamic compilation that would kinda solve some issues, and bring up new ones, such as the compiled code not being GC-ed ever. Anyone interested in coding a Julia ECS?

That’s the tricky part of open source software development as a trade-off from closed.
If you want some features and can’t do it yourself, and others aren’t interested,
you’re probably not going to get those features unless you pay someone to do it.

In general I feel like you do share many Julia developers’ spirit of dreaming big,
me included. So I like the direction you’re pointing at with things like this. E.g. I remember you posting in my game idea which hasn’t gotten much discussion for a similar reason you aren’t getting much help with ECS. It’s too large and/or too irrelevant a scope for many people. (Not that I have any problem with that, personally I got a lot of satisfaction out of just venting my itches in that post.)

On the specific topic of ECS and gaming, maybe @Kyjor who is also pushing game dev? I’m not too familiar with this space.

I’m sorry this thread got timed to close, and it feels like that’s due to the lack of actionable issues you’ve brought up, combined with the feeling that your post is more of a vent than an actionable issue (and I am a fan of venting). That said, it is nice to open up dialogue on issues like these. I don’t think anyone disagrees with your issues, it’s just not something we can do anything about without incredibly massive effort. Plus, as others have said, many of your issues are prevalent in large-scale projects. I’d reckon that cleaning up the mess of the Julia language would be on the core developers’ to-do list, it’s just an incredibly low priority for now.

Another alternative that’s silly for me to mention is for you to start writing your own programming language, which is easier than ever these days. And you can prioritise the “lack of mess” you’re deeply desiring. And if it performs in ways that you like and that attracts others, then they’ll jump on board and help you with it. Maybe you can design it in a way that interoperates with Julia amazingly.

In the meantime, I think the best unpaid alternative until some people dive in with you is to post questions in discourse/slack/wherever with specific, easily reproducible issues to help us help you.

1 Like

Well, Julia was not designed for game devs even though it has many theoretical benefits to it. Adding features to a language to make it suitable is arguably not easy, even if Julia does make it easier than other languages.

And it’s not like I’m developing a normal game either, but that’s another story.

Yeah, it can be difficult.

3 Likes

Sounds like your scenario is quite niche.

And I don’t think anyone wants you to not have posted your request for help on ECS, nor do I think anyone wants you to not have made this post. I think it might help if you just change the “how” or “where” to make this type of post.

If you want to vent, then a suggestion for “where” would be the gripes channel on slack. E.g. check out this absolute mess (edit: it was in the “general” channel) I started there about a month ago. Maybe go and see if you can start an absolute mess of your own there. I learned a lot out of that discussion and seemed to grab more attention and involvement, mostly due to Mason who had similar views to me. Even in that case, I think Mason and others caught on because I was specific, instead of complaining “Julia’s handling of return types is unintuitive” or worse, “Why does Julia have horrible design choices?”

And yes, Julia isn’t made for game dev. I also would like it if it was. I think we can learn a lot from the successful large-scale projects that started small and made it far. Looking it Chris Rackauckas’ early start, he just got started on SciML (back then the scope was just DifferentialEquations.jl) in the faith that if his work was good, it would attract people to it. Amazingly large stuff does sometimes need to start out with one good person getting started. Julia started because a small group of people agreed that the world could do with another programming language. I would find it equally inspiring if you continued on this path you’re on, and five years from now we see your Julia changes and packages giving some promising output in the domain of your interests because you faithfully took one step at a time, and it inspired others to join you.

1 Like

I’ve gone through the other prominent interactive, dynamically typed languages prior to Julia. None of these things in Julia surprised me, and it’s actually more straightforward in some ways.

Your citation of the pseudo-OOP example is confusing scope behavior with an internal behavior of closures, which the link itself points out. Don’t be surprised your code breaks upon minor revisions when you use internal behaviors and reflection; developers who deal with internals really do just have to stay on top of things. This has been and will be true of any language or library.

3 Likes

Reading this, it seems that you focus a lot on getting things perfect from the beginning and this leads you down hacky and messy roads. It is likely that a good chunk of your frustration is triggered by the feeling of not making progress towards your actual goal because you feel you have to wade through a lot of mud. But doesn’t need to be that way! Don’t let perfect be the enemy of good! Focus on getting to the goal in some way and then go back in later to improve. Possibly with the help of this forum/slack/whatever. This will be a much more satisfying experience for you, because you feel the progress. Also the messy stuff (if required…) will feels much better because you can actually make a benchmark and then see the numbers go down (also one should never ever try to guess what is slow because that fails almost every time - measurement is the first step to optimization!). The mantra I try to live is

  1. Make it work
  2. Make it right
  3. Make it fast
    (I didn’t invent it)

A comment about the scenario you describe: instead of trying a lot of complicated compile programming with nasty hacks and stuff to find a perfect hash, I think you can likely just redo the computation at runtime every time. At this point you wouldn’t know what the complicated compile optimization even gain you because you can’t measure it because you have no working code, do you?
Alternatively I would suggest to try using a sum type from DynamicSumTypes.jl to pack you element combinations into a single type and then just do the computation and rely on the compiler. Should be plenty fast and much easier.

10 Likes

That’s a good mantra. For me, sometimes the problem has been that I wanted to do steps 2 and 3 for their own sake, but had no real drive to do 1. For example, I find performance optimizations with SIMD interesting, learning about how you write your instructions so that you waste nothing of your computer’s power. That has a certain appeal of purity for me.

The problem is just that I never had a project that actually needed that. And it’s not so fun to just implement random algorithms and micro benchmark them, it’s much more fun if they form the backbone of code that actually solves some problem I really want to solve. If I have that, it pulls me through steps 1, 2 and 3 almost automatically.

That to me seems related to what the OP is talking about, they seem to have a lot of interest about points 2 and 3, thinking about purity of mathematical solutions or coding paradigms, or how to get optimal performance. But there’s nothing they really want to use, which after it was in the working prototype stage would give them opportunity to work on steps 2 and 3.

I know this problem from making music, too. Some people will be really excited about some compressor or delay effect or synthesizer vst or microphone, or weird time signature or whatever. But they don’t really make music with that because they dont actually want to make music as the first priority, and that can be frustrating after a while. Especially if other people seem to be perfectly happy making music without having any good tech at all.

6 Likes

Yeah… I understand… the world is messy. Things are messy. Julia has lots of issues from array/etc it tries to fix later. It’s not easy after all to make a programming language.

Let’s leave this thread to a good closing.

4 Likes

This topic was automatically closed after 46 hours. New replies are no longer allowed.