What would you say is the easiest programming language to use today?

This makes no sense: there are many more Python jobs out there than C# jobs.

Besides, the first language you learn isn't the one you need to stick with. Learn to program, and you can easily transfer those skills to other languages. There's a hell of a gulf between "Hello World" and paid work. Even once you get to the professional level, it's pretty easy to move between languages. Hell, just this week I picked up paid work in PHP having never done it professionally before on the basis that I'd done C++ work with that client before and they trusted my skills.
Sorry, I wasn't trying to throw shade on Python.
I put it down as fun/hobby because I think it's quick and easy to learn enough to be useful day to to day.

And I put C# down as career because in my experience it pays more.
 
I learnt to program in Fortran but was only ever paid to program in Visual Basic (20-24 years ago) and Python (7-10) years ago). Choice of language totally depends on application and environment. Python is great for data analysis, widely used in academia and industry but you're not going to write a phone app or web service in Python. All depends on what you want to do.
 
Bit of a weirdo suggestion, but Ruby is a good language for learning OO principles and is quite nice for beginners (until you start battling dependencies with various gems)
 
From what I can see of he industry C# is still heavily in demand, but there are just so many options for js in various flavours its hard to not recommend at least knowing some of that. Python I see being used a bit for data but not a mega amount across the industry.
 
Is it me or are many new languages, or takes on existing ones, and/or software development platforms just ghastly and really poor when you really get down to it? including most of the ones people are hyping up.

While I've kept some general familiarity last few years mostly been dabbling with game development/modding in C and doing a bit of prototyping in a couple of different, well written, BASIC variants.

Having started a little project recently and needing to create some software for it, gave a few of the so called latest and greatest development platforms a whirl and just ended up face palming repeatedly, ended up turning to C++ (which I hate enough) using a more old school C approach (like binning off anything like MFC and creating a basic common controls framework from scratch :( ).
 
Is it me or are many new languages, or takes on existing ones, and/or software development platforms just ghastly and really poor when you really get down to it? including most of the ones people are hyping up.

While I've kept some general familiarity last few years mostly been dabbling with game development/modding in C and doing a bit of prototyping in a couple of different, well written, BASIC variants.

Having started a little project recently and needing to create some software for it, gave a few of the so called latest and greatest development platforms a whirl and just ended up face palming repeatedly, ended up turning to C++ (which I hate enough) using a more old school C approach (like binning off anything like MFC and creating a basic common controls framework from scratch :( ).
I think there are some great "new" languages out there. But they take a long time to gain traction.

I hate Javascript (which isn't exactly new) because it's now being used for something it wasn't intended for (back end development). But some of the newer languages such as Rust (2010) and Go (2009) seem quite good. Rust in particular, which seems to be a competitor to C, C++, C# etc, seems to be loved by people that use it. I don't really have a need for something like Rust but have dabbled with Go and like its simplicity. Go itself was co-developed by Ken Thompson who wrote B (the forerunner of C) and had a lot of involvement in the early C documentation. Kotlin (2010) also seems to be quite good as a Java alternative although it's only really getting any traction on the mobile side.

I think what has become too complex in recent years is all the different frameworks. But HTMX has piqued my interest. It feels like what HTML and AJAX could have become if Javascript hadn't stolen the limelight and may simplify web development a lot. For less complex web front ends this looks like it could deliver a lot of functionality and allow someone to use a non-Javascript back end which still having some of the features that Javascript front end can delivery.

Nevertheless, if I was starting out today, then Python, Javascript and C# seem like foolproof languages to learn.
 
Last edited:
But some of the newer languages such as Rust (2010) and Go (2009) seem quite good.

I took a good look at Rust and something I've had a mild interest in but just not feeling it - the advantages feel more relevant to where you've got big teams working on something and just felt like a step backwards in many ways for smaller projects. Not looked at Go in any detail but a quick look at example code shows some of my pet dislikes for the implementation of syntax for example the use of :=.

I think what has become too complex in recent years is all the different frameworks.

Definitely something which isn't helping, loads of wrappers and frameworks intending to solve one problem but just adding another problem of their own and/or just overall muddying the language environment. Not helped by MS deprecating, or trying to, a lot of the older win32 stuff which had useful quick implementations for stuff like sndPlaySound for example - who wants to go the lengths of implementing say WASAPI just to play a system alert sound? so people start producing wrappers for that kind of thing which just ends up overcomplicating everything.

EDIT: Added to which while some of these new APIs are incredibly powerful they are also so arse-backwards to implement with far too much unintuitive and needlessly obscure implementation of interfaces, etc.
 
Last edited:
Rust is definitely an investment in time to learn and, unless you're doing something needing C/C++ levels of performance, I'd say not worthwhile for a hobbyist project if you're already familiar with an alternative (python, basic, JS/TS, java, C# etc). i think its a great language to learn, but likely very frustrating if you want your hobby project done quickly at the same time.

I've not looked much at Go as a couple of things put me off. Its a garbage collected language and I've over 25 years java experience (so I'm not really gaining anything, and losing a ton of ecosystem) and secondly, its google: I don't trust their ADHD to just abandon it down the line.
 
but likely very frustrating if you want your hobby project done quickly at the same time.

It has been an interesting experience, though I've got a ton of programming experience in general I've never done something ground up with C/C++ and the Windows Shell API at this level before and I'm no C programmer, but some of the requirements like using raw input have dictated somewhat what I'm working with. Been a huge learning curve - and I've shunned most C++ conventions and stuff like MFC and implementing a very basic controls framework from scratch as I go along for example:

Code:
    // Custom battery slider
    {
        UICONTROLDATA    uci = { sizeof(uci) };

        uci.x = 10;
        uci.y = 352;
        uci.width = 256;
        uci.height = 32;
        uci.rangeMin = 0;
        uci.rangeMax = 150;
        uci.steps = 10;
        uci.selStart = 0;
        uci.selEnd = 150;
        uci.style = WS_CHILD | WS_VISIBLE | TBS_AUTOTICKS | TBS_ENABLESELRANGE | TBS_HORZ | TBS_TRANSPARENTBKGND | WS_TABSTOP | WS_GROUP;
        uci.reColour = TRUE;
        uci.position = 75;
        uci.forceDWMchange = TRUE;

        const UINT uid = UID_SLIDER_CUSTOM;

        ui.createSlider(hwnd, uid, &uci);

        ui.registerControl(hwnd, uid, uci);
    }



void ui_createTrackbar(HWND hwnd, UINT uid, PUICONTROLDATA uci)
{
    HWND chwnd = CreateWindowEx(0, TRACKBAR_CLASS, L"Trackbar Control",
        uci->style,
        uci->x, uci->y, uci->width, uci->height,
        hwnd, (HMENU)uid, NULL, NULL);

    uci->hwnd = chwnd;

    SendMessage(chwnd, TBM_SETRANGE, TRUE, MAKELPARAM(uci->rangeMin, uci->rangeMax));
    SendMessage(chwnd, TBM_SETTICFREQ, uci->steps, 0);

    if (uci->style & TBS_ENABLESELRANGE)
    {
        SendMessage(chwnd, TBM_SETSEL, TRUE, MAKELPARAM(uci->selStart,uci->selEnd));
    }

    SendMessage(chwnd, TBM_SETPOS, TRUE, uci->position);
}

The real hang up though has been trying to get my head around the non-programming side of it :( I've been modifying a li-ion mini UPS to be able to monitor the battery and shutdown connected devices via USB and trying to infer battery behaviour and state of charge when you can only remotely sense whatever voltage is present at the battery terminals is a right pain.
 
@Rroff I strongly recommend C# over C or C++ for Windows stuff. The C APIs are just awful, shot through with legacy mistakes.

I find C# super annoying - I'd rather wrestle with the legacy mistakes (it hasn't been fun but it has been interesting) - spent quite a lot of time untangling the functionality and rendering of common controls, without wanting to go to the lengths of owner-drawn controls - especially when it comes to simple things like text colour and control background rendering heh.
 
Last edited:
I remember in about 1998 I had a C for dummies book and my god the amount of code just to get a window on screen, think I made a little drawing thing but yeah, horrible to learn back then.
 
I remember in about 1998 I had a C for dummies book and my god the amount of code just to get a window on screen, think I made a little drawing thing but yeah, horrible to learn back then.

This is one of the things I hate about C/C++ - it isn't actually too bad but so many aspects of just creating a window are obscure or obfuscated and everyone, especially older C programmers, implement them via some really long winded approaches, probably due to not fully understanding all the obtuse aspects of the API.

The basic process is entry point->register window class->create window with callback function->enter messages loop->handle messages in callback function.

Though the whole thing really is kind of backwards - ideally you'd just create a definition of the window using a structure and pass that to the create window function rather than a mess of registering a window class, then passing some size and style, etc. parameters separately via the create window function, etc.
 
I've been using C# a lot in Unity, it's very useful & intuitive imo but can't do everything well (I don't suppose any language can?). I've had to learn about and use a Python Flask server and Websocket server for my Unity project to be able to use the OpenAI API's, it's been very interesting. I'd say C# was easier to pick up than Python but Python isn't difficult.
 
I'm going to throw Rust in there. It isn't necessarily object oriented, but does have elements of it. I have recently started learning it and am actually finding it one of the easiest languages I've learnt (I will say, I've been doing this stuff for like 20 years now, so my view of easy might be a little different. But I am looking back on how I felt when learning various languages even when I was just starting out). It also has an incredible community behind it, with basically every library you could ever want (https://crates.io/). I'm just going by my experience of other languages I've delved into through my career.

It also really depends what kind of stuff you want to play with. Want to build something web-based? Then maybe C# (.NET Framework).
 
Last edited:
Rust is definitely an investment in time to learn and, unless you're doing something needing C/C++ levels of performance, I'd say not worthwhile for a hobbyist project if you're already familiar with an alternative (python, basic, JS/TS, java, C# etc). i think its a great language to learn, but likely very frustrating if you want your hobby project done quickly at the same time.

I've not looked much at Go as a couple of things put me off. Its a garbage collected language and I've over 25 years java experience (so I'm not really gaining anything, and losing a ton of ecosystem) and secondly, its google: I don't trust their ADHD to just abandon it down the line.

I think the nice thing about Rust is it doesn't lie to you. If it compiles, it probably works at runtime. The main drawback about rust is the employment situation for it is still "meh" compared to older languages.

Go is "fine". It's still a bit too bare bones for me. It's really hard to go from using e.g. streams, results, optionals, exceptions to a language like Go where it wants everything to be super imperative. I'm one of the people who is like "thank god they implemented generics".

I can be more forgiving of that in e.g. C because the point is you're working in a relatively low level way (and often you're interfacing with hardware that does quite a bit of heavy lifting for you) but in Go it feels like you're being punished for wanting sensible abstractions entirely because they want developers to be fungible.
 
Back
Top Bottom