

What's the Easiest Programming Language I Can Learn - jesseddy

Before you burn me at the stake, please hear me out. I&#x27;m a UX designer by trade; while not a developer, I do understand software and technology very well. I spend a lot of time testing and tinkering with ideas by trying to hack them together the best I can. My goal is to build a small but real feeling version of my idea to understand and test if there&#x27;s actually value. I continually hit the wall or spend hours getting caught up on something trivial (I understand this is part of the learning process). Like for most people, time is an issue for me and I&#x27;m really looking for something to help me prototype quickly. I consider Ruby and Python too big for that (am I wrong)? What should I focus on, a Javascript framework, just jQuery, something like Haskell, etc.?<p>Advice?
======
rprospero
For discussing whether Python and Ruby are too big compared to Javascript or
Haskell, I'd like to give you the following UX anaology.

You're a cashier at a bank and want to give the best experience for your
customer, who just withdrew $248.67 from her account. The Python way would be
to give this person two hundred dollar bills, two twenty dollar bills, a five
dollar bill, a two dollar bill, a one dollar bill, a fifty cent piece, a dime,
a nickle, and two pennies. Some one on the messge board will later tell you
that the fifty cent piece has been deprecated and that you should have use two
quarters. Also, the two dollar bill has performance issues and you should have
just used two ones. It's pretty big and maybe not the best for your customer.

The Javascript way is much smaller and simpler. You'd just give the user
24,867 pennies. There's no variation in bills to memorize - just counting. You
do get tired of counting after a while and your bank manager tells you a
little secret. In the bank, there's premade bags in sizes of a ten thousand
pennies, two thousand pennies, one thousand pennies, five hundred pennies, two
hundred pennies, twenty-five pennies, ten pennies, and five pennies. So, you
give the customer two ten thousand penny bags, two two-thousand penny bags, a
five hundred penny bag, a two hundred penny bag, a one dollar bill, fourteen
twenty five penny bags, a ten penny bag, a five penny bag, and two loose
pennies.

You get tired of hauling all the pennies, so you decided to do things smaller
and simpler. You do things the haskell way. You give the customer a two
hundred forty-three dollar bill, a negative nine dollar bill, a three dollar
bill, and a thirty-three cent piece. You require the customer to sign an oath
stating that she won't just throw out the negative nine dollar, but will
ensure that it is safely paired with a positive nine-dollar bill when it is
returned to the bank for no value. For some reason, the thirty-three cent
pieces are all in a drawer labelled "Monoid", and you're told it's because
they're closed with the Yen under addition, as long as Japan keeps printing
the zero Yen coin.

This isn't meant to be an attack on any of these languages. Any of them would
be an excellent choice. The javascript way has a smaller number of
denominations to memorize, but you wind up needing to learn a long list of
premade baggies, which can make everything suddenly seem big. The Haskell way
has a small, optimal set of denominations, but learning to figure out to put
them together can make everything seem huge. The Python/Ruby way has more
denominations than either, but some people think that they're easier to add up
than the Haskell ones and more convenient to carry than the Javascript ones.
So knowing which language is the smallest and easiest all depends on what you
call small and easy.

~~~
BorisMelnik
this is a really great way of explaining how the language & compiler work, but
doesn't really go into how easy it actually is to learn, syntax, etc

------
cafard
Frankly, why not PHP? I'm happy to smirk along with the PHP hate that shows up
on HN and elsewhere, but you hit save in your editor, reload in your browser,
and you see the results of what you have done.

~~~
8bithero
Haven't worked much with PHP, but there doesn't seem to be that much in terms
of a 'style guide' so it just seems easier to write uglier/wrong code - please
correct me if I'm wrong. I usually think it's best newbies start with
languages that, in a way, enforce right and wrong ways of doing things (i.e.
Rails convention over configuration approach), it just takes a lot of the
initial guess work and uncertainty out.

------
blakerson
From one non-programmer to another, I highly recommend Python + Django + a CSS
framework to get up and running.

Python is a great language to get started on because the code is relatively
simple to write and read (for very geeky reasons), and the MIT OpenCourseWare
intro to CS for non-majors class is a great way to pick up as much "core"
programming ability as you need. That class is taught in Python. Underrated
perk: errors are easier to diagnose relative to JavaScript.

Once you have a rudimentary grasp of Python, do the Django tutorial and build
yourself a sample app. Django is _the_ way to get up and going with a modern-
ish MVC (model-view-controller; you'll see what it means) app. It's very easy
to get going as a developer and the only headache you'll find is the
Virtualenv thing. Easier than getting Rails (which is Django for Ruby) going
for the first time, because Rails has the potential for more version
conflicts.

Lastly, to build out web pages, consider Zurb Foundation or Twitter Bootstrap.
These are premade CSS components that make building pages faster (thus good
for "rapid prototyping"). They also bring along browser compatibility and
jQuery for added UI niceness.

If you want to animate things on the page, search for animate.css.

I did this a couple years ago to build my first app and now I have a side
project that I coded myself. You can do it! :D

------
lmm
I think you're wrong to dismiss Python and Ruby; they're much more elegant
than javascript (javascript fans will say its ugliness is superficial, but
when you're starting out the superficial things matter), and not as complex as
Haskell (complexity that will help you out once your program gets above ~10k
lines, but will get in your way as you get started). I'm not sure where you're
coming from with the "too big"; the core language syntax for Python is very
small and simple, the reason the download is large is the large standard
library. Which, again, is what you want as a beginner. (For a larger, more
production-oriented project it's more important that there's a good
standardized library system and project management tool, and to be honest the
Python ecosystem falls down somewhat here. But by the time that becomes an
issue you'll have learnt what you need to to respond appropriately)

------
8bithero
I think the best approach is to build something practical like a web app.
Granted, things may still feel like magic when you're done with the tutorials,
but the mist slowly clears the more you practice and every other day you'll be
having "AHA!" moments. From what you've mention it does sound like JavaScript
is what you're looking for. You probably don't need to learn an entire
framework like AngularJS if you don't care about writing entire apps and only
care about adding 'flourishes' to your designs. However, I need to agree @lmm,
when starting out it really is the superficial things that matter. Personally
I found JavaScript to be a bit tedious at first. Not to mention some hidden
surprises you may run into (i.e. how scopes bubble, etc.) - so if your
intention is to write full apps, I don't know if JS should be your first
choice (but it should definitely be your second!).

In the case where you want to learn all aspects of building web-apps (and
don't come from a computer science background), I would have to suggest you
start out buy learning a framework like Ruby on Rails or Django (haven't tried
flask, so can't tell). The reason I'd suggest one of these MVC frameworks is
that you will learn a lot about the REST architecture (REST is the
fundamentals of the modern web, you will probably be consuming REST services
with JS frameworks). At least with rails it taught me the fundamentals,
without even realising it. After figuring out how rails handled resources
looking at APIs etc, all made sense. So for this reason I'd recommend people
who don't have a CS background to learn from one of these frameworks - it
really helped me fill in a lot of missing pieces when it comes to developing
for the web. As for the language, I've tried both Ruby and Python, and found
Ruby to be a bit more fun to write. It made programming seem like solving a
puzzle rather than figuring out obscure syntax (which was the case for more
'hard core' languages like C++). Not to mention the fact that it seems to be
the language of least surprises - more often than not, it does exactly what
you expect it to do.

Sorry if I went on a bit of a tangent. Wrote this in a hurry. Hope it helps.

------
onion2k
The easiest language to learn is whichever has the best tools available to you
to learn with.

If you're someone who can just read a book and go from there, try a few books
and go with whatever one you like most. If you prefer learning by being
taught, find courses need you and learn the language that they teach. If you
want to learn online, go to Coursera or Treehouse and pick an option. And so
on.

Don't choose an "easy" language and then struggle with the learning material -
pick good learning materials first, learn how to write some simple code, and
then use that knowledge to learn a more appropriate language for what you have
in mind.

~~~
BorisMelnik
this - I remembered when I tried learning Ruby on a Windows machine. Spent
hours just trying to get everything compatible.

php on the other hand was easy to learn in notepad and run on my domain
sitting on linux.

------
jrs99
I would actually consider only Ruby and Python.

Javascript in my opinion will take longer to get up and running because the
language syntax and frameworks are not as straightforward to grasp for a
complete beginner.

Ruby and Python have awesome books for beginners and intermediate. I recommend
Think Python by Allen Downey and Learn to Program by Chris Pine for beginners.
Both are interesting, relatively small, and give you a taste of the language,
and both are free.

Both Ruby and Python have frameworks (Rails and Django) that are used by many,
many people making it easy to ask around if you have any questions.

------
stevenkeith85
I was a bit of a polyglot in my earlier days..

C, C++, C#, Java, Python, Ruby + a ton of stuff at uni

I now mostly stick to Python. I'd say its the easiest to learn and the most
fun to program in. (never thought I'd become a fanboy)

If you want to check it out, I'm writing a tutorial at
[http://www.teachmepython.com](http://www.teachmepython.com)

You'll (hopefully) see that you can get moving real fast with Python. ;)

------
talmir
You might be approaching this from the wrong direction. Maybe you dont need a
programming language at all, but rather some user interface sketching tool?

If you want to learn programming itself, there are very few shortcuts as you
will have problems along the way if you dont have the basics down. Pick a
language and dive in. I will probably take less time than you think.

------
mathenk2
I would strongly suggest you reconsider Python and Ruby. Both of those
languages are very easy to read and understand -- two very important
characteristics for someone just beginning development of their own project.
Once you're comfortable with one of those languages, then maybe venture out
into other languages. I saw someone else mention PHP -- if you go that route,
do learn best practices (e.g., namespacing, sticking to paradigms, etc.).
There's a lot of really bad PHP out there, and you can either add to that
mess, or be a leader in demonstrating good practices.

Might I also suggest that you spend a few days with a few different languages;
if one feels right, then go with that one. You can't get a good feel for the
language without using it a bit. Best of luck!

------
hershel
How to build an app in a day :

[http://www.codeproject.com/Articles/699085/Some-simple-
tools...](http://www.codeproject.com/Articles/699085/Some-simple-tools-for-
rapid-mobile-development)

~~~
jesseddy
Thank you.

------
jardaroh
This depends entirely on what you are making. If it is heavily datadriven and
you are only prototyping an ORM will help you immensely especially if it
creates your database structures for you, for this I reccomend Django
(Python). If you are not beholden to a heavily datadriven system you can go
with Flask (Python). If you however do not even need a backend to talk to,
lets say you do not need data consistency or storage at all, you can get away
with an entirely client side javascript solution and later plug in a backend.
JQuery is awesome, I use it every day and it makes life a lot easier.

~~~
jesseddy
Thanks, didn't know about Flask I'll check it out!

------
collyw
Python is nice in that it is a powerful language with advanced features but
you don't need to use / understand those features to get started. So while you
may view it as "large" language, you can get started without understanding
these things.

If you contrast this with Java, Java is a smaller language, but forces you to
use object orientation, so you generally have to have a better understanding
of abstract concepts from the beginning.

Anyway, that's two of the languages I know reasonably well. Out of those two I
would go for Python.

------
smileysteve
> My goal is to build a small but real feeling version of my idea to
> understand and test if there's actually value.

If you are already familiar with Jquery, just make a wireframe of page writes
in Javascript that show your concept.

You might even learn something while you're at it.

Once you have the concept mapped, demonstrated, and maybe shown to a potential
customer, you can consider learning a more complex javascript framework that
might use real data,.

------
workhere-io
This tutorial is very suitable for beginners:
[http://learnpythonthehardway.org/book/](http://learnpythonthehardway.org/book/)

------
phantom_oracle
JavaScript frameworks are not easy to learn.

Just to add to what the other folks have said, if you are looking to rapidly
prototype something with a backend, perhaps using Rails with all its gems will
allow you to do so. You will have to eventually learn Ruby and Rails itself
though, but I am sure there are a ton of "putting it together" tutorials out
there.

Just plug in the multiple pieces and you're good to go.

------
renox
Python was designed as an easy to learn language and it has a nice syntax. Its
main drawback is in its 'dynamic typing' nature which means that you can make
a mistake which can stay hidden for a long time (compared to a compilation
error), which is quite annoying. Sorry but I don't know a language which has
the same qualities as Python (easy to read, lots of library) but is statically
typed..

~~~
raquo
There's Cython, superset of Python with types. Not something one should start
with, too obscure unfortunately.

------
ecolak
Out of the ones you listed, Haskell would be the most difficult for sure. For
quick prototyping though, like others mentioned, the tools around the language
would make a bigger impact than the language itself. So RoR or Django would
make a lot of sense. You might also wanna take a look at Meteor (Javascript)
for quick prototyping

------
beyondcompute
It depends on a domain you are interested in. For visuals it's probably
Processing. For server side web it's PHP. For console utilities it's Python.
And so on. JS is widely used but it's the worst programming languages in
existence.

------
sytelus
Nothing ever beats GWBasic.

------
DyslexicAtheist
C

