a thoughtful web.
Good ideas and conversation. No ads, no tracking.   Login or Take a Tour!
comment by thundara
thundara  ·  3407 days ago  ·  link  ·    ·  parent  ·  post: The 2015 Goals Weekly Morale Menagerie - Week 1 + Initial Roundup

General trick to learning to program is pick an easy language, pick a throwaway project, learn a few skills (structuring programs, basic data structures, functions, library calls, classes) by doing. Drop it like it's hot and never look back. Repeat for new, unlearned skills.





rezzeJ  ·  3406 days ago  ·  link  ·  

I'm currently running through the Python course on Code Academy as I heard that's quite a good language to start with. Ideally I want to pick up C/C++ and Java, but Code Academy don't have those languages and I couldn't find an alternative just yet. I really like having the interactive, code as you learn environment.

thundara  ·  3406 days ago  ·  link  ·  

Python's great because it's easy to read, quick to get started with, and mostly intelligently designed.

The two main types, lists and dictionaries, are part of the syntax, so instead of writing: "LinkedList<Integer> a = new LinkedList<Integer>(); a.add(1)" (Java), implementing your own or looking for a library (C), or whatever the hell it is in C... in python, it's just: "a = [1]".

The same is true of dictionaries (HashTables in other languages), and many other basic operations (Reading / writing files, quickly saving objects, basic parallel programming...). The complexity is abstracted away, which makes nicely for quickly jumping in to making something that just works.

This all is a debt, to some extent though.

You'll learn about time complexity and why you might want you want to represent a "list" using one of many structures (Arrays, linked lists, doubly linked lists, skip lists, binary trees, ...). You'll learn about 32-bit integers and floating point approximation and realize that 1.0 isn't exactly equal to 1.000000000000000000000000000000001 and the latter might pop up when you weren't expecting it. You'll learn about the stack, memory allocation, and garbage collection and compilers and JIT compilers and realize python was never designed to be the speediest car on the block.

If you stick with it long enough, all these debts will eventually need to be repaid.

But in the meantime it's pretty nice as a way to get a hang of making simple things that works while you learn about the places where there be dragons.

I came in the C++ -> C -> Java -> Python -> Lisp -> Assembly route, and while it's definitely helpful to know certain aspects of each, my opinion is that it's much more satisfying and easier to learn when you get a full program or two working before you start worrying about registers and caches and memory leaks.

If only there wasn't still that whole 2 vs. 3 issue...

rezzeJ  ·  3406 days ago  ·  link  ·  

Cheers for rundown! I just got done on learning about about comparators, boolean operators, and conditional statements. So far, not too far astray from the likes of some Excel formulas. I'm sure it wont stay that way for long though.

I get what you mean about learning to actually make something before delving too deep. I might spend some xmas money on a subscription to this. It seems like it has good tutorials on there and actually teaches you to make stuff as you go along.

thundara  ·  3404 days ago  ·  link  ·  

I'd put mobile programming under its own umbrella of skills, since it usually involves learning device-specific languages, libraries, and design principles. All useful, but many are mostly useful within that context.

Just keep in mind that things have been moving fast in the mobile (And also web dev) world and that much of what you may learn will change as the platforms change their security designs, the companies adopt new performing languages (Looking at you, swift), markets change, and products / operating systems fall out of favor.