
Ask HN: What made a programming language difficult for you? - vanilla-almond
On Twitter, Sahil Lavingia (founder of Gumroad) recently posted the following tweet [1]:<p><i>&quot;For those who think they can&#x27;t learn how to code: try another language.<p>I tried PHP a few times and gave up. Then JavaScript: gave up.<p>Then the iPhone came out, I tried iOS development, and everything started to click!&quot;</i><p>Have you ever had the same experience? Struggled with a particular language and then found another language that made programming easier and more enjoyable?<p>[1] Lot&#x27;s of interesting responses to the Twitter thread:<p>https:&#x2F;&#x2F;twitter.com&#x2F;shl&#x2F;status&#x2F;1173967528017551360
======
non-entity
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.

~~~
non-entity
> "I don't know what should I do with it"

> Rust

Rust seem really cool, and while I'm not a rwir type guy, I've wanted to learn
it for a little now. Unfortunately, I have absolutely no use for it. I have
nothing I need to write or even rewrite for memory safety reasons and the
little low level / systems programming I do is limited to C or C++ because
it's typically work on existing code.

~~~
valand
Me too, unfortunately. It really helps enforcing good code styles, though.
[https://www.reddit.com/r/programming/comments/9dwq73/rustcon...](https://www.reddit.com/r/programming/comments/9dwq73/rustconf_2018_closing_keynote_by_catherine_west/)

------
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.

