HillysLastWalk said:
Python and/or Ruby are that heavily used these days? I'm curious. And for what types of applications and businesses? Meaning, if I'm at some, idk, fortune 500 company writing web-based CRUD apps -- Python and/or Ruby?
I've used Python at 2 Fortune 500 companies, though it tends to be on smaller projects; large institutions like that have vast amounts of momentum attached to large projects and don't readily adopt new technologies.
They tend to be pretty shitty places for a new programmer to work, anyway, so I wouldn't limit myself to what they're doing.
Pretty much every company I've worked at over the past 15+ years has used Python somewhere (from the aforementioned fortune 500s, to small startups, to big government bureaucracies.
Blacken said:
TBH, I'd go with something with static typing and a little more structure than either Ruby or Python. It has its downsides, and there is more friction in getting started (but you sound motivated enough that that's not a big issue), but I'd look at Java or C# as a starting point.
To me those are okay languages for daily use, but they're not where I'd point someone who's learning to code. My recommendation would be to progress through:
1. A simple dynamically typed language to get you going and see if you're actually interested in learning to code (Python, with an emphasis on OOP and a few glitzier UI/data presentation apps). Learn your editor and environment without worrying much about the compiler, memory management, etc.
2. A low-level statically typed language with manual memory management (C, with an emphasis on structured programming and some close-to-the-iron device/memory management or at least bitmap twiddling or something). Start working through Sedgewick and learning data structures and computational complexity.
3. A functional language (OCAML or Lisp, with a strong emphasis on functional programming and data transformation). Start working through the dragon book learning parsing and lexing and intermediate representations.
If you do that well then you've come close to getting through sophomore year at MIT/CMU/Stanford/Berkeley in terms of knowledge*, which is enough to make you comfortable learning most languages (add in one assembly language, Forth, and Prolog and you're even closer) and give a decent underpinning to understand whatever's going on in the language and framework you wind up working on.
*On the software side only, not the intro hardware stuff