Ask HN: Which technology\language you find most difficult to learn?
My answer is COM, whats yours ? Unreal would be my first choice. A company recently sued Epic for how crap it is but they lost. Still, the fact that they did sue them in the first place tells you a lot but I'm not allowed to have an opinion. If I could sue a language I'd sue bash. I know it'd be futile but there is a reason that so many replacements exist but maybe a better reason why none of them have supplanted bash. A company recently sued Epic for how crap it is but they lost. Silicon Knights sued Epic claiming that they were promised advanced features of the Unreal Engine that allegedly did not exist or were not supported in the way SK were led to believe. They allegedly ended up having to build their own engine for the game on top of the cost of the UE3 license. Epic discovered that the new engine was using source code from SK's licensed copy of the UE3 engine and counter-sued for breech of contract. The claims against Epic were thrown out because the judge felt SK was asking for unreasonable amounts of money. As far as I know, the matter of whether or not Epic filled their end of the bargain was not answered. That's the real shame. why none of them have supplanted bash. Same reason C is still popular despite more advanced and modern languages. It's not as widely supported. Bash and C are everywhere. Bash and Perl are awful, awful languages that are awful, awfully unfortunately useful. I don't think courts are in a position to rule on quality of products unless it's blatant false advertising. I'd love to discuss this but my next job is likely to involve Unreal as well. All hail our lords at Epic. So instead I'll disagree with you on Perl which I thought was one of those saner replacements for bash, especially when it comes to one liners. So what languages did you think I meant? > Same reason C is still popular I think the reasons behind C and bash staying power are different. Bash is here to stay because it is ingrained, literally embedded in the system and has a large user base. It doesn't offer anything unique that isn't available somewhere else. C is here to stay because it offers what other languages don't. There are new projects with no legacy concerns that still choose C. So what languages did you think I meant? You mentioned bash, which I agreed with. I was also adding Perl to my personal list of complaints as a language I found difficult to learn. COM/XPCOM. Go dig into the Mozilla codebase. Also, another vote for CSS. Mostly because its so hard to debug and figure out what exactly is making your page look like shit. Add to that varying browser support. Its hell. Objective C... It is the weirdest language I've ever seen. Really? What do you feel was difficult? Besides a gotcha with weird bugs when I called the superclass dealloc method before releasing members, I had a really smooth experience. When I first looked at Objective-C I totally agreed with your statement. Then I was introduced to Smalltalk and Objective C started to make sense! besides brainfuck =p I was reading an article about implementing an interpreter for Brainfuck in PyPy, and when the example code for some simple Brainfuck programs came up, I just stared. I really fail to see how one would go about programming just about anything in that language. (Here's the article in case anyone is interested, a pretty good read IMO: http://morepypy.blogspot.com/2011/04/tutorial-writing-interp...) SML. I remember at CMU, the sophmore level programming language theory course (the name escapes me, it was 15-212) was wildly different than anything I had done before. All programming courses one took up to that point were the normal intro level courses that most passed out of and a data structures/algorithms course. Sitting down the first day and being introduced to SML along with language constructs with no analogue in the programming languages I knew was tough. I struggled for about a month, much like I imagine many do when learning about pointers: you may be able to do some of the work, but you don't have a proper conceptual model to be able to reason about it. All of a sudden, after re-reading the material from the beginning, everything just clicked. It was probably my favorite undergraduate CS course from then on. You make me remember my compiler design course. I find it most
difficult during my collage days. Thank god we didn't have SML I wish my compiler course had used SML--then maybe I wouldn't have had to greenspun C++ so hard. I have a couple for various reasons: The hardest that I gave up on was Groovy. The language itself seems really nice, it was just hard because of the lack of documentation that I was able to find so I just switched to Scala since I had to learn it for a class anyways. The hardest that I still use is Haskell. While there documentation is phenomenal compared to other languages, I have found that it isn't something that you can just pick up and start using and be able to write idiomatic programs without studying theory. For me, when I get to monads I struggled a bit. Then I get to the monadic bind and other operators like $ and . and I find I have to keep going back to tutorials to see when and how to use them properly. Javascript. I've learned the basics of SML and Ocaml, and a bit more than basics of Haskell, but I just can't bring myself to learn how to use JS effectively. More generally, I find it hard to learn how to do GUIs and pretty web pages. Have you tried jQuery? The API:s to interact with the browser really sucks, but the core language isn't too bad IMHO. If you abstract away the browser differences in event handling and DOM, it's pretty straight forward to build GUI:s. For me it was (and still is) ORM, specifically Doctrine2. In principle it seems pathetically easy, but once the queries start getting immensely complicated ( Many-to-Many over multiple tables, with conditional form data, etc) I still find myself having to fallback to SQL. Other contenders have been: 1. Bison ( tokens, parsing, syntax, was all difficult the first time around). 2. OpenGL because remebering function names for the api is RIDICULOUS! ahh glDrawElementsInstancedBaseVertexBaseInstance now what are the args again? CSS It is deceitfully simple at a glance, but to make a useful design with it is hard. There are so many hacks to get it to do what you want and hacks to work around bugs. Haskell. While I've sung its praises on HN before, I am just a novice. I've gotten deep enough to see how great it is, but not far enough to write anything nontrivial. Honestly, CSS. It's so different from programming that I can't wrap my head around it. Ask me to write a simple web page and I'll have ~10 tabs open to w3schools. Javascript.. I have been working with the DOM for the past 3 years yet I feel like I still do not have a solid grasp of Javascript. The DOM is not Javascript, it's just an API. A really, really sucky API. Use jQuery instead. Another vote for CSS, but then again I've never actually tried to use COM Something about CSS prevents me from really grasping it and using it with any real skill. I mainly live off of designer friends and things I can cobble together with the help of google. Recently, I'd probably say SAML. There are so many intricacies in the spec that it's difficult to know how best to apply it to a problem, and the implementation I use is poorly documented. probably not most difficult to learn but most hated: Perl most difficult to learn for an OO-guy: Erlang (and most interesting as well)