12

It's fascinating to see C# mentioned as a "lower level language" now days. Times change.

C# was my first language when I started out learning about programming as a kid (I still think it's a great language) and I remember searching the forums for information about any commercial games written with it hoping it was possible to build something "cool" and "3D". Back then that was pretty much just a dream, or so it seemed. C# was, I understood, way too high level for anything like that.

Today it wouldn't be totally baseless to call C# the game dev industry standard.

Comments
  • 17
    lmao who calls C# low level???

    I mean you can do raw pointer arithmetic with the unsafe options, but you don't really need to do that for regular applications, except maybe when interfacing with C libraries.

    But still C# has a garbage collector, that doesn't sound "low level" to me, and in game development most engines I've seen (Unity, Godot) are based on C(++) and exposes a C# API.
  • 6
    If C# is lower level then c++ is assembly
  • 4
    @LotsOfCaffeine with the latest versions c# has a few new tools for more advanced memory management.

    Its still not at the level of c++ or the newer rust, but that is also not the goal for Microsoft.

    There are many other new languages specializing in certain areas, like goggles go or Microsofts own P language for parallel programming with mathematically verifiable code and more.

    C# fills the role of a good general purpose language that is pretty good for most things.

    You can do games, but in most cases much of the low level stuff will come from the engine and be c++ or maybe assembly.

    Just like python by it self is quite slow for many things, but add the numpy library and its blazing fast, and often used to initialize ML tools where the actual heavy lifting is done by code written in more efficient languages.
  • 3
    @Voxera I've never heard of P lol

    C# is a nice general purpose language, but you'd have to rework core parts of the language and standard library to achieve the "low level" badge, and then compile it ahead of time
  • 1
    @LotsOfCaffeine well, low level is not the goal so that will most likely never happen ;)

    Especially since the lower you go the less standard you can be and the risk of having to adapt to different platforms grow.

    P is an odd language apparently used for the usb driver and host which until rewritten in P was a great source of blue screens and solving this is one major reason windows is much more stable now a-days.
  • 1
    I find quite amazing that for the past forty years we’v been using third generation languages. The fundamental way we talk to the computer has barely changed. We still chisel in stone. Just that the chisels now have ergonomic handles.

    Every few years there’s yet more talk of “no-Code” tools. We seem to be at one of those peaks right now. And, every time it turns out to be utter bullshit.

    Fuck. Every day someone says how great C is. I wonder if we’ll ever see a genuine revolution in my lifetime.
  • 1
    C# cannot be low level by any stretch. It works in a byte code machine.
  • 1
    @platypus maybe C was just a masterpiece 🤔
  • 1
    @iiii Actually the clr is not only a byte code interpreter but also a jit compiler that will convert parts of the il to real native code depending on optimization rules. And some of this is as far as I know cached between executions so later runs start of with more of the code running as native code.

    This means that c# could possibly do more low level but I think they actively avoid it to not bind to much to the underlying OS.

    https://stackoverflow.com/questions...

    Its all about what path they intend, if they where to add low level functions it would create a demand for more of those which would make the language more complex and harder to move programs around.

    It would also mean more users would get access to more dangerous features enabling more serious bug opportunities. And that is not what they wish :)

    So sure they could make C# more low level but I doubt they will.
  • 1
    @iiii It was an elegant small language that hit a sweet spot which made it ubiquitous, but it also opened up a lot of buffer over run possibilities which more modern languages has made a lot of work trying to close.

    Also memory management will require due diligence to avoid memory leaks.

    But the closeness with assembly makes it very good for highly optimized code it you have good enough developers.

    And those then builds tools and libraries for every one else.

    Mozilla Rust is an attempt to replace C with a language with stronger and safer memory management without needing garbage collection and its getting more traction so who knows.

    In a decade C and C++ might no linger be the goto for very fast code.

    But like any big language they will live on at least several generations of developers ;)
  • 0
    @Voxera to be honest, despite as pros of Rust, I would nut bet on it anyway.
  • 0
    @iiii I think it will depend on results.

    If it can be proven that rust results in less vulnerability in code we are most likely going to see a push towards it.

    If not, it will grow at its own pace.
  • 0
    @Voxera but the cost of writing that overly verbose code... That's its main problem, IMO
  • 0
    Maybe I'm a little out of touch but referring to C# as low level doesn't seem to be particularly common. At least, not common enough to take note of. Where is this happening?
  • 0
    @adante I suppose it depends on your crowd. Here's the last time I saw it: https://reddit.com/r/algotrading/...
  • 2
    @adante I think it depends on your vantage point, looking at if from js or python, c# is more low level ;)

    But being a C# dev I agree, its not really a low level language but an application language.

    I would not try to write an operating system in C# :P
  • 1
    There are the idiots who call statically typed languages low level, because they can't imagine working without runtime type errors. Other than them, I don't think anyone considers Java, C# or any other language that lets you forget about how your concepts are represented in memory, low level.
  • 2
    @daglundberg to the authors credit, they say lowER level language and the context is with respect to Python, which I wouldn't really disagree with (although I wouldn't say myself).

    Sure, it's amusing to see it bundled with 'C++/C#' in the context of lower level langauge but again, can't disagree with that specific context (both are lower level than Python)

    @Voxera don't disagree with vantage point thing - I suppose without context (given the above, I guess that's not the situation in this specific case), one tends to assume the entire spectrum of programming languages.

    I suppose the interesting philosophical thing here is that if you are looking across the entire spectrum of languages you could make an argument that nearly all programming languages are low level!
  • 0
Add Comment