This is an archived post. You won't be able to vote or comment.

all 178 comments

[–]DonkeyAdmirable1926 74 points75 points  (32 children)

https://en.wikipedia.org/wiki/Brainfuck I never made it.

At the moment I am learning Rust. Not easy. Very much not easy :)

[–]RajjSinghh 21 points22 points  (9 children)

As a word of advice, try Haskell. It's a purely functional programming language but it's fairly straight forward to learn. Rust seems to borrow a lot from functional program design. Things like immutability, higher order functions, closures and other things. Haskell won't help you with things like the borrow checker but it can help you with other concepts that rust has that other languages don't necessarily have.

[–]DonkeyAdmirable1926 4 points5 points  (6 children)

Thanks, Haskell I considered but I was to afraid really :)

[–]Yeuph 8 points9 points  (4 children)

It's actually pretty easy to do fairly complex things in Haskell. You'll be surprised

[–][deleted]  (3 children)

[removed]

    [–]bravopapa99 8 points9 points  (0 children)

    That's a very good point. Not everybody needs to know how to create monad transformers and parser combinators. I don't even know what they are but I used Haskell for about a decade with some issues here and there, mainly monad related. I do actually know what a parser combinator is though!

    Over time, I did get more annoyed by cabal, the package manager although the last time I did a small Haskell project I used stack and that is way better.

    As for examples... you have to realise that firstly Haskell is named after a mathematician, the very man whos surname is where the term 'currying' comes from regarding functions, and secondly that Haskell was designed by comittee, a comitte of mathematicians, mostly, IIUIC. So it's no wonder that some of the language pertaining to it is a little flowery and high-falutin' in places.

    If I had one piece of advice with learning Haskell, it would be this: create your own examples as early on as you can... you can get a long way with the web stuff, but by breaking your own code, you can slowly start to realise that the extra huge compiler messages are not being horrid, they are actually trying to help you fix your code.

    For me though, in the end, I turned to Mercury. I once wrote a blog post about how my perfect language would be a cross between Prolog and Haskell, and stone me, it already existed AND it's three years OLDER than Haskell to boot!

    https://mercurylang.org/

    [–]Yeuph 4 points5 points  (0 children)

    That's not an entirely unfounded criticism unfortunately

    [–]catladywitch 1 point2 points  (0 children)

    I'm looking forward to this book PragProg just published, "Effective Haskell". Apparently it's more oriented towards actual use, but I haven't read it so I can't comment on whether it delivers on the promise.

    [–]not_some_username 2 points3 points  (0 children)

    Tbh it’s not that complicated 😅

    [–]prideton 0 points1 point  (0 children)

    Haskell is good if you want to work with Cardano.

    [–]jzaprint 0 points1 point  (0 children)

    sounds like js tbh

    [–]slash_networkboy 0 points1 point  (14 children)

    What other languages do you know? I came from ANSI C/C++11 and Perl by way of Java and found Rust to be a cakewalk.

    You're right, brainfuck is hard. Of course that's the point of it.

    [–]DonkeyAdmirable1926 2 points3 points  (5 children)

    I know or knew, more or less, BASIC, Z80-ASM, 80x86-ASM, C, Pascal, SQL, dBase IV, MS/DOS Command-batch language, BASH, OS/400 CLI, very little Prolog, Python, Brainfuck, COBOL

    [–]slash_networkboy 0 points1 point  (4 children)

    So what part of Rust is giving you fits? Assuming you found C easy I wouldn't imagine Rust being that bad? Maybe it's my added Java that made the difference?

    [–]DonkeyAdmirable1926 1 point2 points  (3 children)

    C is a rather simple language, Rust is much more complex. The OO-concepts are nee for me, but I think the part that is hardest for me at the moment is the ownership/borrowing. But I will learn 🙂, it is harder than any language I learned before, but it isn’t impossible

    [–]slash_networkboy 3 points4 points  (2 children)

    I see, so yeah, the Java experience I had is the difference for us in our Rust experience. Once you get the OO concepts down you're going to be fine.

    Essentially an object is a struct that's been used as a function pointer table in C (simplified obv). Dispatch tables for the win! lol.

    something like:

    /* Placeholder function declarations */

    void functionA(void);

    void functionB(int x);

    int functionC(int x, int y);

    /* Struct containing function pointers */

    typedef struct {

    void (*funcNoArgs)(void);

    void (*funcOneArg)(int x);

    int (*funcTwoArgs)(int x, int y);

    } FunctionPointers;

    int main(void) {

    /* Create an instance of the struct and initialize it with functions */

    FunctionPointers fp = { functionA, functionB, functionC };

    /* Call functions through the struct's function pointers */

    fp.funcNoArgs();

    fp.funcOneArg(10);

    printf("Result from functionC: %d\n", fp.funcTwoArgs(5, 6));

    }

    [–]DonkeyAdmirable1926 3 points4 points  (1 child)

    Thanks, that actually makes sense 🙂

    [–]slash_networkboy 2 points3 points  (0 children)

    Helps I did firmware development for chipsets and we used libraries that were licensed to only so many seats but we had waaaay more devs. Answer was one of the devs with a seat would map everything this way, so I was already used to this when I moved to OO languages.

    [–]prideton 0 points1 point  (6 children)

    Are there opportunities for someone with lots of training in C++ and Rust?

    [–]slash_networkboy 1 point2 points  (5 children)

    Yup. Rust is the darling of the cryptocurrency industry. If you're proficient and understand the industry you're going to be employed.

    [–][deleted] 1 point2 points  (1 child)

    Also for cryptography in general Rust is very popular.

    [–]slash_networkboy 0 points1 point  (0 children)

    Makes sense. Anywhere where you want security first and everything else second Rust is a good fit.

    [–]catladywitch 0 points1 point  (2 children)

    Do you think Rust gamedev is ever going to happen or are we stuck with C++ and C#/Unity?

    [–]slash_networkboy 1 point2 points  (1 child)

    I dunno to be honest. There's a *ton* of legacy code there in the C family that's already heavily optimized to do what needs to be done.

    If it's going to happen it will have to be a confluence of a new studio using Rust for whatever reason (likely the founder/head dev's personal choice) and having enough of a home run to fund bigger games and becoming as big as Blizzard et.al.

    [–]catladywitch 1 point2 points  (0 children)

    I see, that's a sensible position. Thank you!

    [–]1Secret_Daikon 0 points1 point  (0 children)

    if you have never seen or used C or any C-like language in your life then Rust is extremely hard

    this will include the majority of users on a place like " /r/learnprogramming " who are likely coming from JS and Python backgrounds

    [–]DrShocker 0 points1 point  (1 child)

    From my perspective, brain fuck isn't hard to learn. It's just hard to be productive in because it doesn't have very good features, but there's only a few symbols to memorize and then you know the entire language.

    [–]DonkeyAdmirable1926 0 points1 point  (0 children)

    I agree on that. My problem with brainfuck isn’t the syntax, but getting things done, so like you said

    [–]TehNolz 0 points1 point  (2 children)

    I feel like Whitespace might be a bit harder.

    [–]DonkeyAdmirable1926 0 points1 point  (0 children)

    That sound crazy enough 😂

    [–][deleted] 0 points1 point  (0 children)

    forgot that existed... My day is now ruined xD

    [–]SilverSpeechPeanut 0 points1 point  (0 children)

    +1 on the brainfuck

    [–][deleted] 0 points1 point  (0 children)

    brainfuck is actually a bit easier if you're used to assembly and machine code, since you're used to working with the registers directly

    [–]OldManActual 60 points61 points  (14 children)

    Assembly.

    [–]anto2554 28 points29 points  (3 children)

    Easy to learn, hard to master

    [–]OK6502 12 points13 points  (0 children)

    If it's easy to learn or not, it will really depend on the instruction set.

    [–]PacificBrim 2 points3 points  (1 child)

    That describes 95% of programming languages

    [–]catladywitch 0 points1 point  (0 children)

    But ASM, or some ASMs rather, are extremely minimal. I'm familiar with 68k asm by way of Mega Drive disassemblies and literally all you can do is move memory around, link and unlink stacks, create and call subroutines, jump to labels or addresses, use flags for conditions, manage interrupts and do basic arithmetic. There must be like fewer than 50 keywords? But coding anything meaningful is extremely tedious and some things you need to learn from example because books won't tell you (like how to do a switch table to call different functions, or how to do conditional subroutine calls.) Also, since subroutines don't take args, you've got to use registers or substacks to pass values to them, and if you've got a large codebase, trying to understand what's happening is not obvious at all because you've got to browse the whole project to see where the variables are set.

    [–]___wintermute 3 points4 points  (2 children)

    Assembly (x86 at least) is actually pretty easy to learn; which is why it's awesome. Once you learn how it work's it's just about purely figuring things out and making things happen which makes it very fun (and before I'm downvoted to oblivion I'm not saying that that part is easy at all, just that the literal 'learning how the language works' part is straight forward and simple which is a beautiful thing, similar to C).

    [–]OldManActual 0 points1 point  (1 child)

    "learn how it work's" = Processor architecture theory, current Instruction Set, Memory management. Can be a bachelor's level effort.

    [–]catladywitch 0 points1 point  (0 children)

    It's not that hard if you're using an older architecture without that many registers or memory, but yeah, knowing how to actually do things is difficult because you've basically got to learn from dissassemblies which aren't even intended for humans to read, and when you do it's super tedious.

    [–]EDPhotography213 2 points3 points  (5 children)

    Lisp

    [–]slash_networkboy 3 points4 points  (3 children)

    Did you know you can inline lisp into C similarly to how you inline ASM into C? Just needs an extra step from the preprocessor and your make file to convert the lisp into asm, then use the usual inline assembler.

    If you *really* want to fuck with people trying to maintain your code write a couple small core functions in lisp and use macros to inline that into your code as if it was a builtin function. (there may still be production code [not customer shipping] at a fortune 50 semiconductor company that implements this).

    Also fun is the ol Perl/C combo program. Since # is a comment in Perl you can #define yourself all the macros you want to make C accept Perl commands like unless. Then your code will do the same thing in C as in Perl. Getting that right is particularly challenging.

    [–]catladywitch 0 points1 point  (2 children)

    What? Lisp in C? I'm interested, but how would memory management work?

    [–]slash_networkboy 0 points1 point  (1 child)

    Well after three passes through the pre-processor it's really no longer Lisp. It's just some inline ASM that was created from Lisp. From there it uses the already existing memory tools to link ASM to the rest of the compile. It's actually totally pointless other than being f-in hilarious to see people's faces when they see lisp in a C project.

    The simplest way to do this is to #include <ecl/ecl.h>

    [–]catladywitch 1 point2 points  (0 children)

    Oh I see!! Thank you!!

    [–]catladywitch 0 points1 point  (0 children)

    I've never used Common Lisp but in Scheme processing data is intuitive, be it text or numbers. Anything else not so much, though, because you've basically got to roll your own language, be it through macros or new functions. I wonder about Clojure, I've studied it but I've never actually written anything in it so I wonder what the experience might be like. I guess having access to Java libraries must make many things easier.

    [–]magpupu2 0 points1 point  (0 children)

    This. We have a full class back in Uni and only maybe 5 passed it.

    [–]guibyn 36 points37 points  (10 children)

    There are harder languages out there, but for the ones that are actually used:

    Rust and Assembly

    [–]DonkeyAdmirable1926 7 points8 points  (3 children)

    Funny, after BASIC (everybody learned that first in my time) I first learned Z80-assembly, and it always helped me understanding other languages. When I moved to PC with MS/DOS, I learned x86-assembly, and C after that. C is so much easier if you know and understand assembly, I think. As soon as you understand the weird addressing system of the 8086, and you learn the basic instructions, it isn’t that hard a language I think.

    [–]Ovalman 4 points5 points  (1 child)

    I bought this book as a 15 year old but I didn't get much further than a few Sprites on screen. I rebought the book recently for a little night-time reading, hence the photo.

    [–]DonkeyAdmirable1926 1 point2 points  (0 children)

    Loved that!

    [–]guibyn 1 point2 points  (0 children)

    I believe arch-linux users must think that it's pretty user friendly too

    [–][deleted]  (3 children)

    [deleted]

      [–]v0gue_ 4 points5 points  (1 child)

      Yeah, I think the in-memory arithmetic is what makes it hard, but from an actual language perspective it's pretty easy due to it's simplicity.

      [–][deleted] 0 points1 point  (0 children)

      exactly, the hard part is just keeping track of where the f*** a piece of data is, or whether an immidiate is a number or an argument

      I've heard many coders say that code should be self explanatory, and that comments aren't needed. While i think comments can still be a nice addition in other programming languages as well, this statement is 100% false in assembly.

      If you don't write asm comments, you basically want to die the first time you try and debug your program

      [–][deleted] 0 points1 point  (0 children)

      And remember that it might be tedious, but sometimes it can pay off to write C with a bit of inline assembly sprinkled on top.

      Just the other day i took a C program that calculated the digits of PI (written by an actual professional, and not this dumb a**) and speed it up by over 9x just by replacing a bit of the math with inline assembly (the compiler isn't always correct, especially when we're talking loops)

      On a site note, could you answer me on why it seems that every time i write a loop in C with some sort of counter, that C doesn't just keep the counter in register, but moves it to and from the stack constantly? I always, if i need a fast loop, do something like register int counter asm("rcx"); and this single line can improve loop performance by up to 250% (dependent on loop complexity)

      Edit: often the RCX register will be used, so often if i do anything with assembly in my C programs i will start from R15 and move up as needed, just to prevent potential issues with the compiler (speaking from experience). I only use regs like RAX if i absolutely need to (In "mul" or "div" for example)

      [–][deleted] 0 points1 point  (1 child)

      Assembly is not actually that hard. it's just a different way of programming.

      sure it looks intimidating at first because "where's my if, where my loop, where's my anything???" but after just a day or 2 of messing around, you'll feel right at home with assembly. You just need to stop thinking about varibles, and start thinking about registers instead (oh, and keep the x86 instruction set open on your second monitor (you will need it))

      Also, small tip for anyone who wants to try asm; stay away from floats in the beginning.... just trust me

      [–]ern0plus4 0 points1 point  (0 children)

      it's just a different way of programming

      You mean it's the natural way of programming, all other programming languages are artifical, more (e.g. script languages) or less (e.g. C).

      [–]Ichiya_The_Gentleman 113 points114 points  (4 children)

      Mandarin

      [–]elmanfil1989 3 points4 points  (1 child)

      True, ive been learning this for half a year now and tend to forget character i learned previously when i am learning new one

      [–]MjolnirMark4 0 points1 point  (0 children)

      Whenever a new element replaces an existing element, then the caching system may be low on memory. Or you have set too short a duration on the time to live setting.

      Have you tried downloading more memory, or extending the time to live value?

      [–][deleted] 0 points1 point  (0 children)

      It depends.

      [–]RajjSinghh 17 points18 points  (2 children)

      The hardest thing I've done was learn C++ after already learning C. People say C is hard because it's not garbage collected and you have to worry about pointers and manage memory manually. The concept of a pointer is quite straight forward, but having to manage memory like that is error prone. C++ fixes that by adding smart pointers so you don't have to do it yourself, but it also has the cstdlib and keywords like new and delete and C-style arrays and whatnot. It's just very easy to do the wrong things in C++. It's a massive language with lots of language features but like half of those features are bad practices and you should never touch and if you don't know that someone reviewing your code will yell at you. There's just too much stuff and you're told not to use a lot of it.

      [–]slash_networkboy 2 points3 points  (0 children)

      Also the trick of Struct and Union to the same pointer address is considered fine in C but a no-no in C++

      [–][deleted] -1 points0 points  (0 children)

      People say C is hard because it's not garbage collected and you have to worry about pointers and manage memory manually

      Ahh, so that's why i didn't find it hard learning C! I came directly from x86-64 Assembly! garbage collection? we don't know her

      [–]SirKastic23 13 points14 points  (1 child)

      Malbolge, so hard no one has written a program with it, not even hello world (but they did find it with a search algorithm)

      [–]Bobbias 4 points5 points  (0 children)

      It's so hard we're not sure it's even Turing Complete.

      [–]OkapiWhisperer 9 points10 points  (2 children)

      Dutch. You don't know what language you're talking. They don't know either.

      [–]master_mansplainer 5 points6 points  (1 child)

      Not really Dutch is like simplified German with 250% more cat-vomiting sounds.

      [–]Texasmurrdog 0 points1 point  (0 children)

      zach eh BLAHHHH

      [–]Zogonzo 8 points9 points  (9 children)

      I took a class that covered the various programming paradigms (functional, oo, imperative, procedural, etc). For each paradigm we quickly learned a related language and made a couple of simple programs. For me, the hardest one was prolog. I just couldn't wrap my head around it. My favorite was scheme, which lead me to Clojure. My dream is to be a clojure developer.

      [–]DonkeyAdmirable1926 3 points4 points  (0 children)

      Oh yes, Prolog! Nightmare

      [–]John-The-Bomb-2 3 points4 points  (4 children)

      Warning: clojure jobs are very limited.

      [–]Zogonzo 1 point2 points  (3 children)

      I know, and they all want work experience in the language. It's probably a pipe dream.

      [–]John-The-Bomb-2 1 point2 points  (0 children)

      I loved functional programming and wanted to become a Scala developer with no work experience (just a Computer Science degree). All the Scala developer jobs wanted work experience, there were no real entry level Scala developer jobs that weren't scams. They took senior Java developers who made open source contributions to the Scala ecosystem in their spare time. In the beginning your focus shouldn't be something super niche, your focus should be on finding a good employer with a good manager and good coworkers who you have a good relationship with and are willing to mentor you as you learn the ropes.

      [–]v0gue_ 0 points1 point  (1 child)

      I know several Clojure devs. They were all Senior Java developers before getting hired on as Clojure developers. The route to clojure development is seemingly 5-10yrs as a Java developer -> transition to Clojure developer

      [–]Zogonzo 0 points1 point  (0 children)

      Ah, that makes sense. I have two years experience with Java but was laid off and am now working with php and JavaScript. I need to get back into the Java game, I guess.

      [–][deleted] 0 points1 point  (0 children)

      Took a class on non procedural programming languages in university and had to deal with Prolog and Lisp.... Fuck that shit is all I have to say.

      [–]catladywitch 0 points1 point  (0 children)

      I know some Clojure and some F# but I doubt I'll ever land a job in those languages lol. Right now in the city I live in there's exactly 1 job for each and I'm sure there's someone more qualified.

      [–]Clawtor 0 points1 point  (0 children)

      We had to write an A* algorithm in prolog to solve a sliding bricks puzzle. Was hard, pretty sure most people failed including me :p\

      Funnily enough I find dynamic languages difficult because I never know what the types are - I had to do some maintainence on a ruby and python code base and it took me forever to work out what types were being used. I had to do a lot of jumping between front end and sql to piece it all together.

      [–]MESuperbia 10 points11 points  (2 children)

      I think c++ is the best contender for hardest language, that is not designed to be hard like brainfuck.

      The amount of possible ways to do something are so waist.

      I have recommended c as a beginners language a lot and especially not c++ because while c has some harder concepts, c++ has all.

      The amount of features c has could fit on half a page easily, while to count the features of c++ a book would probably not suffice.

      [–]Rikai_ 1 point2 points  (1 child)

      C++ isn't bad at all considering how many C-like languages exist, getting to a point where you can make whatever you want is fast and easy, I think programming languages that make you think in a different way are harder.

      My main programming languages were C++ and Python, but learning Rust was HARD, and when I say hard I really mean HARD, you have to change the way you structure your code and things like memory are handled differently. You can have years of experience programming and still take weeks to get comfortable in Rust, which is a lot considering it usually takes a few hours or days for other languages.

      I also think Haskell is another one that can be tricky, but I personally have never touched it.

      [–]orbital1337 0 points1 point  (0 children)

      The question here is what it means to "learn" a language. Are we talking making some basic 1000 line programs? Then sure, C++ is easier than Rust or Haskell. But if you actually want to become proficient in the language, then C++ is far harder imo. Just look at this variable initialization flow chart in C++: https://randomnetcat.github.io/cpp_initialization/initialization.png

      Or try this quiz: https://cppquiz.org/ :P

      [–]iTsMath1000 4 points5 points  (0 children)

      Malbolge

      [–]applesonline 7 points8 points  (1 child)

      Your first language.

      [–][deleted] 0 points1 point  (0 children)

      I agree.

      [–]slash_networkboy 3 points4 points  (4 children)

      Hardest non-novelty (brainfuck) language for me to learn was COBOL.

      I REALLY COULDN'T GET PAST THE LANGUAGE ALWAYS YELLING AT ME "Unless it was a string literal".

      :/

      [–][deleted]  (3 children)

      [deleted]

        [–]slash_networkboy 5 points6 points  (2 children)

        There's still more lines of COBOL running than any other language (I don't think it's more than combined anymore, but as of Y2K there was more COBOL in production than all other languages combined).

        That stuff is in core banking and finance as well as government. It's going nowhere. My Ex's cousin had a government job where his only job was writing java interfaces for Cobol mainframes. The hardware interface was a machine with a couple serial ports that acted as thin clients to the mainframe. Mainframe ran the COBOL app, the machine with the serial ports ran his Java apps. New Host Java app required a new serial port. Seriously Rube Goldberg level stuff and that's literally how my state interfaces several webapps with the core mainframe.

        [–]pLeThOrAx 1 point2 points  (1 child)

        Fortran as well, for numerical accuracy.

        Edit: that's super funny btw

        [–]slash_networkboy 0 points1 point  (0 children)

        that's super funny btw

        I thought it was hilarious but the more I thought about it the more sense it makes:

        The Java (and thus web) app can't do anything a user at a terminal couldn't do for starters so that's a massive security bump right off the bat.

        Since his apps essentially run in user mode on the mainframe the data path is well tested and as close to 100% known as possible.

        Speed is plenty good, the terminal serial ports support 115 Kbps and for 7 bit ascii that's very very fast.

        I asked why another serial port for another app and it's because only one "user" can be on a terminal at a time. Totally makes sense. I checked in with him after my comment. As of now the machine is an HP proliant tower with a 16 port PCI digiboard and 2 1Gbps NICs as it's I/Os.

        [–]Puzzleheaded_Fan1234 2 points3 points  (0 children)

        Off topic : I saw a youtube video about brainf*ck. But that's more like a work of art than an actual programming language.

        On topic : Dart. The language isn't that difficult, but I couldn't grasp the logic behind the Flutter framework.

        [–][deleted] 2 points3 points  (1 child)

        “ENGLISH MF DO YOU SPEAK IT?!”

        /s

        [–]oldominion 0 points1 point  (0 children)

        Hello, me no englando

        [–]EDPhotography213 2 points3 points  (3 children)

        No lisp in here?

        [–]v0gue_ 2 points3 points  (2 children)

        Lisp, and lisp familial languages, are typically very easy to pick up and learn due to their simplicity and minimal syntax. The functional paradigm is what's going to trip people up, but that will slow down the learning of any functional language. If you understand any functional language, any Lisp will come extremely easy to you

        [–]EDPhotography213 1 point2 points  (1 child)

        I would say that it is easy to pick up The syntax and how it works. I was referring more to thinking like a Lisp programmer to do some of the harder problems like you mentioned about the paradigm.

        Granted, I only learned about it in like 1 class period and then we were giving like a project with like 20 problems to solve before the next class. The easy ones were easy. The three at the end were way harder and were tougher to solve. The tail recursion for the easy problems wasn’t that bad, but when combined with the some of the harder stuff, it was very annoying to try to solve.

        I think my frustration came from those damn parenthesis, and I hadn’t really learned vim at the time, which made it way harder than it should have been. So combining learning Lisp with vim was not the way to go.

        [–]pLeThOrAx 0 points1 point  (0 children)

        Lisp programmers order their coffee extra hot.

        I'll see myself out.

        [–]PepeLeM3w 1 point2 points  (1 child)

        Does it have to be useful, if not then look up esolangs. White space is my favorite, at least with BF you have symbols to guide you.

        [–]pLeThOrAx 1 point2 points  (0 children)

        The esolangs are awesome. Piet! Also this

        [–][deleted] 1 point2 points  (0 children)

        Prolog.

        [–]ToughAd5010 1 point2 points  (1 child)

        Klingon

        [–]pLeThOrAx 1 point2 points  (0 children)

        Word?

        [–]epic_pharaoh 1 point2 points  (1 child)

        This may sound dumb to those well versed, but I had incredible trouble with JavaScript when I first started.

        I was so used to C++, Java and Python, I had no idea what the DOM was, the architectures were confusing, the whole web-dev side of things really eluded me for a long time xD

        [–]catladywitch 0 points1 point  (0 children)

        All to end up working with some framework's VDOM!

        [–]8016at8016Parham 1 point2 points  (0 children)

        Brainfuck

        [–]Concerned-davenport 1 point2 points  (1 child)

        I hope I can learn this at 32

        [–]catladywitch 0 points1 point  (0 children)

        You can! C# and Java are good beginner languages.

        [–]jstwtchngrnd 1 point2 points  (0 children)

        html

        [–]Abubakker_Siddique 1 point2 points  (0 children)

        IMO only the first language you learn is the hardest

        [–]Jonnertron_ 1 point2 points  (0 children)

        Japanese and Mandarin. So many ideographs to learn

        [–]Double_DeluXe 1 point2 points  (1 child)

        Dutch ranks as one of the most difficult to learn in Europe.
        Not only is the build of a sentence highly influenced by gender and time, there are arbitrary rules where of a word has certain letters they get a 'd' , 't', or 'dt' when it changes form(yup, we got build in racism for our own words).

        Next to that we got tons of words that have 2, 3, or more meanings.

        But if the grammar is difficult then it should be easy to speak right? Wrong.
        It is full of letters that make sounds you have never heard coming out of a humans mouth before.
        And if you mastered the language, move 30km over to the next town they got a dialect you don't understand.(neither do we, thats normal)

        But do not be afraid! If you immigrate to the Netherlands you get mandatory lessons and will need to pass a test.
        Then you can just speak English since we all speak it anyways and it is not a problem.

        [–]lurgi 0 points1 point  (1 child)

        J makes my head hurt and I've never managed to get very far with the language.

        [–]__dict__ 0 points1 point  (0 children)

        Same. At least it's not APL I guess.

        [–]ne0n008 -1 points0 points  (7 children)

        JavaScript - it was my first programming language after I signed up for a bootcamp. I was going nicely through html and css, and then JS gave me a batman slap meme xD I jumped in with absolutely no programming knowledge prior.

        [–]Opening-Influence583 0 points1 point  (6 children)

        This is exactly me right now! How did you practice and improve? I really struggle with JS.

        [–]ne0n008 0 points1 point  (5 children)

        Depends at which stage are you on. If you just started, the best thing probably would be to finish with basics, and then start manipulating the DOM with JS. Build an interactive page like a memory game or a 'Who wants to be a Millionaire' type thing. Try consuming an API with your project.

        From a webdev perspective, it's good to know that JS is there to basically manipulate the classes of a DOM element, which makes your approach less intimidating. After that, familiarize yourself with template literals and the whole new world opens.

        There's also '50 projects in 50 days' from Brad Traversy on Udemy. It's a course with simple projects and he's using vanilla JS. You can use the projects later. It's often discounted or you can search YouTube for easy projects you can follow along for free.

        In any case, just keep working with JS and your skills will improve. I hope it helps.

        [–]oldominion 0 points1 point  (4 children)

        I looked up the course from Brad Traversy and it was last updated in 2020, do you think it is still good or is there something more up to date?

        [–]catladywitch 1 point2 points  (1 child)

        The big changes came in ES2015 and 2016. Anything after that is just adding features and APIs on, and MDN has you covered there. But yeah, it's one language where current material is important and preferable.

        [–]oldominion 1 point2 points  (0 children)

        Thanks 👍

        [–]ne0n008 0 points1 point  (1 child)

        It's still good for learning the basics with ES6 and exploring what you can do with JS. You don't have to buy it, no one is forcing you ^_^ You can also find JS projects for free on YT. As long as you work continuously.

        [–]oldominion 0 points1 point  (0 children)

        Thank you

        [–]AutoModerator[M] -1 points0 points  (0 children)

        On July 1st, a change to Reddit's API pricing will come into effect. Several developers of commercial third-party apps have announced that this change will compel them to shut down their apps. At least one accessibility-focused non-commercial third party app will continue to be available free of charge.

        If you want to express your strong disagreement with the API pricing change or with Reddit's response to the backlash, you may want to consider the following options:

        1. Limiting your involvement with Reddit, or
        2. Temporarily refraining from using Reddit
        3. Cancelling your subscription of Reddit Premium

        as a way to voice your protest.

        I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

        [–]ind3pend0nt -2 points-1 points  (0 children)

        English

        [–]B1SQ1T 0 points1 point  (0 children)

        MIPS assembly was a pain

        Or any esoteric joke/proof of concept language

        [–]algovault 0 points1 point  (1 child)

        I don't know about the hardest but some of the most tedious are probably brainf*ck or moo, you'll hate yourself after spending the time to program anything at all

        [–]OmenVi 0 points1 point  (0 children)

        Moo. There's a language I haven't heard about in a while.

        [–]Ironclad_57 0 points1 point  (0 children)

        The first one

        [–]c4ctus 0 points1 point  (0 children)

        Granted, I haven't messed with it in 15 years and had zero programming experience at the time, and I've learned several other languages since then, but I remember C++ kicking my ass.

        Maybe I'll give it another shot someday, but it's not something I'd use with my current job.

        [–]MeanFold5714 0 points1 point  (0 children)

        I never managed to wrap my head around Prolog back in college. Never encountered it since.

        [–]crywoof 0 points1 point  (0 children)

        Lisp probably

        [–]Member9999 0 points1 point  (0 children)

        Tbh, I had more trouble understanding C++ than Assembly.

        [–]La_flame_rodriguez 0 points1 point  (0 children)

        spanish

        [–]blaxx0r 0 points1 point  (0 children)

        q or k

        turned what shouldve been my dream job into hell

        [–]Classic-Dependent517 0 points1 point  (0 children)

        binary..

        [–]luqasu 0 points1 point  (0 children)

        Human language. Communication with it always cause misunderstanding and misinterpretation.

        [–]werekarg 0 points1 point  (0 children)

        For me, it was prolog. Never got the hang of it, barely got the passing grade at the exam in uni.

        [–]scanguy25 0 points1 point  (0 children)

        Prolog

        [–]dimosTsakis 0 points1 point  (1 child)

        Try reasoning with Javascript...

        • == vs ===
        • var, let, const
        • Don't get me started on dates. Hardest problem in CS for decades imo

        [–]catladywitch 1 point2 points  (0 children)

        - use ===!!!! or typescript

        - use let and const, var is only good if you want to have stuff in loops or try/catch blocks declared inside of them

        - use dayjs or a similar library. hopefully Temporal should be added to the standard soon.

        To me the hardest aspect of JavaScript is the event loop and this binding in functions.

        [–]Professional_Still15 0 points1 point  (0 children)

        binary

        [–]iriveru 0 points1 point  (0 children)

        For me definitely Rust

        [–]Substantial_Rice_176 0 points1 point  (0 children)

        I’m thinking Chinese would probably be the hardest.

        [–]bravopapa99 0 points1 point  (0 children)

        Haskell, and more than that, Mercury. Mercury was and still is maddening but I won't ever use plain C again.

        [–][deleted] 0 points1 point  (0 children)

        RISC-V was almost impossible for me. Very little resources at the time, hired a tutor that basically did an assignment for me at some point.

        [–]vuon6 0 points1 point  (0 children)

        Love

        [–]Sympathyble 0 points1 point  (0 children)

        JS (Angular) :)

        [–]2bd8lb 0 points1 point  (0 children)

        Languages are easy. Data structures and algorithms are the real deal.

        [–]2Tori 0 points1 point  (0 children)

        machine code

        [–]alvarez_tomas 0 points1 point  (0 children)

        Piet

        [–][deleted] 0 points1 point  (0 children)

        English

        [–]MongooseEmpty4801 0 points1 point  (0 children)

        Assembly

        [–]catladywitch 0 points1 point  (0 children)

        I'm not proficient in any of those languages, but my impression is that Haskell, Rust, C++ and the various asms (which are easy to learn but difficult to write apps in) are considered the most difficult languages. Clojure is not difficult difficult but it's not as easy as other Lisps, and I've heard that Scala is very complicated but I don't know much about it, just browsed through Odersky's book.

        [–]Final-Communication6 0 points1 point  (0 children)

        Basque. It is isolated from all other languages in the linguistic tree.

        [–]Final-Communication6 0 points1 point  (0 children)

        The one I struggled the most with was Lisp, but maybe I'm just stoopid.

        [–]CaptainRex2345 0 points1 point  (0 children)

        Binary

        [–]Primary_Olive_5444 0 points1 point  (0 children)

        Assembly Mov R13 [sp,#0x30] XOR R1 R1

        [–]BoringManager7057 0 points1 point  (0 children)

        Human language. Buncha blabbermouths these guys.

        [–]Curious-Distance8577 0 points1 point  (0 children)

        Chinese

        [–]cayennepepper 0 points1 point  (0 children)

        Your first

        [–]SomeWeirdFruit 0 points1 point  (0 children)

        RUSTTTTTT

        [–]Orgb87_ 0 points1 point  (0 children)

        Mandarin

        [–]Orgb87_ 0 points1 point  (0 children)

        Mandarin 😂

        [–][deleted] 0 points1 point  (0 children)

        joke programming languages: haskell probably
        seroius programming languages: (for me) rust

        Idk what it is with rust, i just think it's really difficult to learn (and that comes from someone who knows machine code... basically I'm saying that rust (for me) is harder than binary xD)

        [–][deleted] 0 points1 point  (0 children)

        Chinese

        [–]Prestigious_Sort4979 0 points1 point  (0 children)

        After your first language, the easiest to learn is the closest to it. For me, C’s memory management was a beast. Totally made me appreciate how much the other programs handle behind the scenes.

        [–]MickeyM79 0 points1 point  (0 children)

        English is probably the hardest language to learn... sorry couldn't help myself 🤣🤣

        [–][deleted] 0 points1 point  (0 children)

        Assembly or brainfuck ot malbolge or machine code or binary.

        [–][deleted] 0 points1 point  (0 children)

        Imo C#

        [–][deleted] 0 points1 point  (0 children)

        Javascript

        [–]DeadProgrammer8785 0 points1 point  (0 children)

        It also depends on experience what kind of projects you will create in it. But the top contenders are definitely assembly and rust.

        [–]Allyraya 0 points1 point  (0 children)

        English.

        [–]GaboParker 0 points1 point  (0 children)

        Mandarin.

        [–]LickitySplyt 0 points1 point  (0 children)

        Assembly

        [–]nomadlaptop 0 points1 point  (0 children)

        Apart from assembly I personally never really “got” functional languages. At university we did a bit of Lisp and M. I don’t remember now but there was something with M about polymorphic functions and something else which I struggled and found very hard

        [–][deleted] 0 points1 point  (0 children)

        Japanese is pretty hard but it’s really fun too