I am interested in starting to learn some programming. Any tips on useful languages and coding programs to start learning / invest in? I may start to take classes for it in the fall.
"You got Marin! Is this your big chance?" ~ from The Legend of Zelda: Link's Awakening.
May 29, 2012 17:47
Disclaimer: this (and anything anyone says on the matter, probably) is largely personal opinion, and is likely to get shot down by other programmers. We're just nice like that
Whatever you decide to go for, don't do Visual Basic. It's supposedly a 'beginner-friendly' language, but if you try to do anything beyond super simple, stuff gets super ugly really fast.
I like python as a 'first language', but it has its issues too (whitespace is a contentious issue). Most other scripting-y languages let you shoot yourself in the foot really easily (but can be really nice when you know roughly what you're doing) (perl, ruby, etc). I learned Java, but that was at university (and is considered somewhat archaic now). Still might be worth looking into.
C/C++ are definitely worth learning, but maybe after you know another language, simply because programming without garbage collection adds another dimension (which can also be a real pain in the arse).
Why would anyone call anything 'phenolphthalein'?
May 30, 2012 4:37
Java archaic? What world do you live in? Ever heard of a little thing called "Android"?
Java is ubiquitous. It is living inside of devices you never even think have computers in them. It is the freakin' backbone to Minecraft, fer cryin' out loud!
Java good. Starting with Java? Ehhh...
Disclaimer: Every person ever says they want to learn programming. From out of the every person ever I have heard say this, I have yet to see one follow through. Everyone sees programs, so everyone wants to do that. That is sorta like everyone eating food, so they think they can be a master chef. This is nothing about your specific situation, but rather an observation I have made in the past years.
I believe there is a disconnect between what people actually want to do (typically, to make games) and what is needed to do so (coding is hard). Free stuff like GameMaker has some rather advanced scripting interfaces in it now and, used properly, can sate most thirsts. You have to actually want to do computer science -- a science which existed before what we now call computers. If you like youse some algorithms, you'll be fine.
The problem with beginning programming is that there are no good learning languages in use anymore. All your "Hello worlds" require a bunch of boiler plate that you just have to explain to a newbie "Oh, yeah, ignore all this for now." That is a horrible way to teach. Can you imagine if math was like that? "Oh, yeah, ignore that 'five' thing for now. But the answer is seven."
Since you can't have a good first language, you might as well have a useful one. C-likes are here to stay, so that is the convention you should be getting used to if you are serious. While nice, C/C++ are not exactly graphically friendly without Qt/DirectX/OpenGl, which is adding an entirely separate knowledge base on top of your beginning programming!
Perl is the best language for learning right now, simply because it is capable of a one-line "Hello world." It has a ton of horribly confusing and advanced aspects, but then, what good language doesn't? It can't go very far, tho', unless you are looking for webdev or shell development purposes, so it really would simply be a way to get your feet wet.
Both languages have "object-oriented" principles (not quoting because it is a term, but because it is true in only the most inaccurate of definitions), which are useful to know if you advance up to C++ (let's be honest -- you ain't usin' C unless you want to do embedded work) but you don't have to do (much) resource management since, like any beginning language, these have garbage collectors so you can think about what your code is doing instead of how it is doing it under the hood.
PS: Classes suck. Most programmers I know are self-taught, or were and then went to uni. To give you an idea on the kind of people who are taught programming, my old supe was telling me how some businesses were rounding up jobless philosophy majors and the like, giving them a crash-course in a crap stuff like .NET, and using them as robotic, monkey-at-a-typewriter programmers with no art or independent thought. The internet has made it easier than ever to become a self-taught programmer -- but it has also made it easier than ever to copy-and-paste snippets instead of actually learn.
PPS: Python sucks. Meaningful whitespace is the devil.
"I give up." ~ Virginia
"The three sweetest words in the English language." ~ Ross, Raising Hope
May 30, 2012 4:58
My apologies, 'archaic' was the wrong choice of words. 'Out of favour' might have been better. At least where I work, I don't know many people who would choose to work in Java if there was a choice. Unless the choice was with VB.
To sit on the fence is a dangerous call, but someone's gotta do it.
May 30, 2012 18:52
Define "choose to work." In a multi- or cross-platform environment, Java is pretty big. The cloud build system where I currently work -- which is for embedded Linux devices -- is based on Java, and I don't even think it needs to be! And, like I said, freakin' Mincecraft is a Java game Ferget the fact that it is the language of choice(/force) for Android -- MINECRAFT!
Graphics support in the native library, little need for external libraries, and fast development time. Java ain't goin' anywhere... unless the recently standardized and virtually identical C# actually manages to stomp Oracle's Oracleness in their handling of Java.
As far as which language people choose to work in, largely moot. Most people never accomplish anything. In reality, your language of choice depends heavily on the product you plan on developing. For example, if you want to make an iPhone app, you use Objective-C. If you want to make anything else ever, you don't use Objective-C 'cause it is a steaming load.
I didn't address VisualBASIC because it is simply not worth dignifying with acknowledement Is that even still around and supported? I thought MS just cut their losses and egg-basketed C# instead?
"Don't judge me by my actions. Judge me by how I tell you I am inside." ~ Colin Quinn
May 31, 2012 7:33
No. I wish that were the case. They whacked it into .NET, so now not only does it have BASIC syntax (does anyone programming a bytecode language really want to think of variables as dimensions in memory?), but it's backed by a gigantic, overblown OO library which, as I said, just makes everything look really stupid. Had to work with it for a while.
C# is not so bad, it has some interesting things which Java should have, and possibly would have if Oracle didn't suck. But yeah, I see what you mean by largely moot, but still, I work in a general development house (building whatever for whoever) and the only Java we really do is maintenance and 'droid stuff. It certainly beats Objective-C.
Minecraft (or Mincecraft. Make anything you like... Out of mincemeat!) is a Java game, but I was under the impression that was because Java was all Notch really knew (or was comfortable with) at that point. It is still one of the most-taught languages around... Oh right, I see where you're coming from now. Sorry about that.
Anyway, we're way off topic.
Release that which was never caged.
Jun 5, 2012 15:41
QBASIC is what I started on. Kinda gives you a BASIC idea as to how programming works in general. Not a bad way to go.
"I'm sorry I twisted your DNA like a kitten with a ball of yarn"
--Moira Brown, Fallout 3
Jun 5, 2012 19:44
Q-BASIC is what I always recommended... ten years ago. Now, to even run the blutty thing, you need a DOS emulator. Not exactly the best environment to stick a newbie in.
really really off topic but Mr Zedd sir was QBASIC what we used to mess with way back in high school?
Ho! Ho! Ho! to the gameboy I go
To heal my heart and drown my woe.
Rain may fall and wind may gale,
But my battery is yet to fail.
So in a dank corner I will lie,
And watch the hours go sailing by.
And while I lie in this nintendo-induced trance,
I decide I'll give Pokemon Crystal a chance.
--my random quotation exploitation
I believe that was BBC Basic, but more or less the same idea.I actually started doing what could be considered 'real' programming in QBasic too. Bit odd, being so old.
To sit on the fence is a dangerous call, but someone's gotta do it.
Jun 13, 2012 19:35
I think I've covered it before, but QB actually got a lot of love from the amateur programming community because of how much low-level stuff it let you do (and to the really advanced, embed assembly). Compare that to some of the other languages that are far more abstracted, or to go with a more modern example, generators which let you do a lot of big, overview things but not a lot of specific things.
And security. Ain't got none of that in QB~!
In fact, if you know a lot about assembling and historic programming languages, you can pick apart the very thin veil that Q-BASIC wraps around what you are doing. It is fairly straightforward. Only its memory limit and lack of executable targets are a real setback.
"I know that will be obvious to some people but sadly stupid people have internet too." ~ Maffew of Botchamania