HACKER Q&A
📣 vanilla-almond

What made a programming language difficult for you?


On Twitter, Sahil Lavingia (founder of Gumroad) recently posted the following tweet [1]:

"For those who think they can't learn how to code: try another language.

I tried PHP a few times and gave up. Then JavaScript: gave up.

Then the iPhone came out, I tried iOS development, and everything started to click!"

Have you ever had the same experience? Struggled with a particular language and then found another language that made programming easier and more enjoyable?

[1] Lot's of interesting responses to the Twitter thread:

https://twitter.com/shl/status/1173967528017551360


  👤 non-entity Accepted Answer ✓
I've been trying to a few functional languages recently and it's always a few things:

1. Not knowing if the code I'm writing is functional enough. When I tried learning F# / OCaml some things were easy to learn to do away with, namely mutable variables and the use of conditionals. However I would look at code I wrote vs what other people had and it still looked very differ, like it still has too much procedural ideas in it. Unfortunately, that's not the king of thing I can just ask about on SO

2. Terse syntax that I'm too dumb to process. THis happened when I tried to learn Erlang, I was really enjoying it, and was going through the book Joe Armstrong himself wrote. I got to list comprehension and I kinda just fell apart. It made sense at first, but then the book jumped to some common algo implementations using it and just the use of extremely terse comprehension syntax on multiple lists has my trying too hard to focus and read what what going on. Took a break after that and never got back into it.

Additionally, not related necessarily to functional languages, is that I'm lazy and I just can't program without having a (real) goal or problem that needs solved. I wanted to learn C, in order to work on a large codebase which I found bug, but couldn't bring myself to spend the time learning that language first. Similarly, I had what I thought was a good idea for a web application and wanting to expand my skill set to Elixir / Phoenix, but in the end I was too lazy to go through actually learning a language and a web framework before I could ge to work.


👤 psetq
I suspect those earlier attempts at learning to program were actually more instructive than that tweet suggests.

Also, "iOS development" is not a programming language and I'd be very skeptical of anyone who opines that Obj-c is easier to learn than PHP or js. (I also assume they're talking about Swift but I don't know much about it).


👤 AnimalMuppet
I suspect (but cannot prove) that some peoples' brains work in a way where procedural programming makes sense, and some work in a way where functional programming makes sense. (Yeah, that's not language, but it affects which languages make sense.) I suspect that this is part of why the FP-vs-procedural discussions are such fruitless deserts most of the time - people on each side have a very hard time thinking in the other way, and therefore the other side of the debate's position seems almost literally unthinkable.

👤 valand
It's either because "I don't know what should I do with it", "It's not honest enough to me", or "Slow and scarce feedback loop"

Programming languages I think was easiest to learn ======

Javascript: I was making a game in HTML5/Canvas with it.

TypeScript: It saves me from ruin working on a huge project. Being statically typed, friendly error message in the compiler, and versatile enough to do a lot of FP in it makes me feel that it is "honest" to me.

Rust: The approach to memory safety is cool. While learning it, I was thinking that it would save me a whole lot, like TS saved me from doing stupid think like I would using JS. Also it can compile to wasm and has a nice interoperability with C.

Hardest to learn ======

Prolog: I didn't know what it was for.

Visual Basic: I didn't know where it is ran, when it is ran. I was uskng visual studio. It was painful that I didn't know how the app was architectured. It feels that it hide something from me.

Python: I was going to learn DL with it until I realize my OS is not linux and my machine is not strong enough for DL. Also, Python interpreter feels so slow to me. Slow feedback loop killed my enthusiasm. Though I don't like working with the language, I respect the language design of Python.

PHP: Used it for a lot of profitable projects, but I never felt comfortable with it. PHP, to me, is a template-engine, not a proper programming language.


👤 breakerbox
First exposure to real coding was in college - 16 bit assembly, then C. Never really clicked it all. Then I moved onto higher level courses in Java. It clicked somewhere along the way, I was able to retroactively understand almost everything in assembly and C that didn’t click originally. Magical when I sit and think about it. Almost switched out of electrical engineering in that original phase because of frustration and failure.

Super thankful I had an extra push from people around me, because I love it all now.


👤 sergiotapia
Go was made difficult for me because of it's really strange package management and tooling around it.

I was coming from a C#/Ruby background and Go seemed nice on the cover but once I tried to write some more advanced software with it, I was struggling (this was around 5 years ago).

Maybe the Go story is better now, who knows. I've seen moved on to Elixir and feel right at home and very excited about it. Hell we may even have web assembly Elixir support coming in the form of Lumen.


👤 mrfusion
Has anyone else had a hard time with R? I felt like the fundamental data unit (forget what it’s called) didn’t have any rules. Sometimes you can index it. Sometimes you can’t. It felt strange to me.

Also I found Perl really hard because there was just too much to memorize. I couldn’t get into a flow. I like something like python (2.4 and lower) where the whole language could fit in your head after a quick read of the docs.


👤 mrfusion
I found java difficult because there’s so much ecosystem behind it. And whatever IDE I was using was getting in between me and the code too much.

👤 TurboHaskal
Bad ergonomics and poor naming do it for me. I learned Haskell, OCaml and some Idris just fine, but trying to write non trivial code in ATS was rage inducing. The same goes for J: I had no trouble with APL or K, but J was on another level.

The one I took more time to grok at a fundamental level was Prolog, and I still consider myself a newbie.


👤 pmontra
Doing something in a different way than mainstream languages. This includes syntax and names of standard library functions / methods.

👤 sgillen
I've had a hard time learning lisp. I feel like I don't really know what's it's good at, or what to do with it.

To remedy that I've tried learning elisp to do some fun stuff with emacs, but usually I end up fighting/learning emacs as a system rather than lisp as a language when I do that.


👤 sp332
Semicolons. I mean I got the hang of them eventually but it took a lot of banging my head against the keyboard. I only mention this because I'd guess that most people won't think of it.

👤 cephasibnjah
The first (and easiest for me) was QBasic. It was simple, elegant and sweet to write. Then I tried CPP. Nope. JS. Nope. C#. Nope. Java. Death. Now I'm trying my hands on Python. It looks a bit like QB (especially the terminal) so I think it'll be great for me. I lost my love for programming languages l, no thanks to the (mostly) boring things you're taught in school. There's always so much to read and emphasis isn't really laid on development of full fledged applications (on my side of the globe, anyways), so it sort of fizzled out and died (Jacobian matrix and Runge-Kutta methods ensured its death faster). Now I'm looking to fan it into flames. I do hope I'm not too late.