I know you'll all scoff and regard me as a scrub, but I'm making /prog/ress towards achieving Satori. It's not much, but it's a start.
I've messed around with Ruby before, but what language would be good to take up seriously and learn in-depth? The most I've done with Ruby is make some shitty text-based games.
I'm not sure if this will impact your suggested language for me to learn, but I'm currently enrolled in CIS introduction classes for next semester, planning on getting into database administration later on. However, I want to learn how to program as a hobby.
I know I'll have to learn SQL some time in the near future, but I'm wondering if there's anything else I should take up.
In before elitist sages, conflicting suggestions, and inane comments.
>>5 In before
This is why we won't help. Just keep in mind that everyone has to start out somewhere.
Yes, but it's not here.
Name:
Anonymous2010-07-01 14:00
What language to learn?
It depends on what you want to do. Do you want to create software for windows machines (this is getting more and more irrelevant), or do web applications (where the money is)? Mobile devices?
If you already know ruby, that's a good start for web apps. You did text based games? It's a start. Ruby is mostly widely used together with the rails framework (Ruby On Rails) for web programming.
For desktop environments you'll most probably use .Net or flex,. Often, if the application is simple enough, it's possible to just slap a web interface on top of a J2EE backend.
For mobile devices you either use Java for Android and J2ME enabled devices (there are a lot of those) or Objective-C/C++/C for iPhone. If you're not an American and/or have heard of and want to develop for the Symbian or MeeGo platform, then you'll use C++ and Qt nowadays.
>>13
You're an idiot. Not just for your specific suggestions, but also for the general idea behind them.
Before anyone should be thinking of learning a language specifically to be able to do something in some domain, they should be learning languages that will broaden their perspective and help them be a better all-round programmer. >>1 clearly isn't at the point where he should be focussing on specific domains yet.
>>1, learn Python or a Lisp, then Haskell, then C. Only then can you afford to start thinking about specific domains.
In before elitist sages, conflicting suggestions, and inane comments.
Berating your betters is always a good way to get their advice.
When you're as much of a beginner as you are, you have absolutely no room to complain about ``elitism''. The very fact that you think ``elitism'' is a bad thing shows that you have a very long way to go.
Disregard the Ruby hate. People hate the freak show that is the Rails community, and the horrible performance of 1.8.
The language itself is fine. Switching to python would only be an upgrade if you hate Ruby or need to use software that works better in the Python world.
You'll need a working knowledge of C no matter what you do.
You'll want to understand lisp eventually, most dialects are fine since you can't use lisp to make things in real life.
SICP is a great book, but it's not for people who need any sort of hand-holding. Advising you to read it immediately would just be memetic /prog/rider machismo.
Do not learn C++ or Java as a hobbyist. Never use them unless you get paid to do so.
Don't pick up 50 different languages and call yourself an EXPERT PROGRAMMER. Specialize in one, understand in excruciating detail. Once you do that, switching languages will become a very trivial matter.
Join a small open-source project led by knowledgeable and friendly people.
Start preparing right now you career move towards a more interesting path.
Name:
Anonymous2010-07-01 15:01
>>19 Do not learn C++ or Java as a hobbyist. Never use them unless you get paid to do so.
I can't stress this hard enough. Those two languages put bread on the table but are absolutely horrid. Stay away and learn Scheme or Common Lisp. You will see every enterprise language for the abominations they are.
There's been an increase in earnest-sounding morons who are fractally wrong like >>19, which a beginner like >>1 could mistake for genuine advice ``cutting through the crap''. I'm not convinced they're all trolls. Most of them don't seem over-the-top enough.
I guess /pr/ is still down.
Name:
Anonymous2010-07-01 17:26
>>25 earnest-sounding morons who are fractally wrong like >>19 So how is >>19-kun wrong?
Name:
Anonymous2010-07-01 17:46
>>26
* You don't always need to know C. many programming jobs don't even touch that nowadays.
* You can certainly use Lisp in "real life", as many companies have done, and will continue to do.
* Java and C++ are probably good to learn even if you never use them, if only to learn why people dislike them.
The last bit is sound advice, though: definitely get involved in open projects. Learn from others. Spend time getting your code critiqued. Get patches rejected for entirely plausible reasons, and learn from the experience.
>>26 Disregard the Ruby hate. Advising you to read it immediately would just be memetic /prog/rider machismo.
These are obviously and ridiculously wrong, though a complete beginner (like >>1) won't be able to tell.
Do not learn C++ or Java as a hobbyist. Never use them unless you get paid to do so. Don't pick up 50 different languages and call yourself an EXPERT PROGRAMMER. Specialize in one, understand in excruciating detail.
These are close to right, which arguably makes them more pernicious than the blatantly wrong.
Obviously nobody should learn Java or Sepples as a hobbyist, but you shouldn't use them if you were paid to do it either; they will stunt and, given sufficient exposure, reverse your growth. Even if you're the kind of dipshit who thinks being employed and getting paid is the most important thing in life, you should be aware that being employed as a Java or Sepples programmer will greatly reduce your market value.
As for specialising in one language: it's fine to have one or two go-to languages, but the implication that you shouldn't diversify even as you're focussing on one language is nonsense. There's no point in learning twenty essentially identical languages, but any programmer benefits from picking up, say, Haskell, Factor, and Smalltalk, even if his main language is still going to be FIOC or C, and even if he won't ever know any of those languages inside and out.
A generous reading suggests >>19 was thinking of the kind of ``programmer'' who learns how to write ``Hello, world'' in fifty-three languages just to pad his résumé and thinks that makes him a good programmer; if this is what >>19 was referring to, he should have been more explicit.
>>28
What's wrong with >>27? I mostly agree with him, except that I'd say it like this:
* You don't need to know C to write high-level programs. Knowing C, a few CPU's assembly, their architecture, maybe some verilog/vhdl and lower, will help you truly understand computing and help you in various low-level endeavours. It will also give you a real test of the (performance/memory) costs of the code you write.
* Lisp is a very practical language and I've used it for real-life applications, and commercial companies use it for the same reasons. It may not be a popular language, but it's sure one of the best I've had the pleasure to use. For most of my personal work, I make use of a combination of: Common Lisp, C, x86 assembly. If CL is not to your taste, you might prefer Scheme, Python, Ruby, C#, Haskell or some other high-level language, but I've yet to see one that isn't a Lisp and offers you the same level of metaprogramming capabilities.
* Java and C++ are useful to know if you want to get hired by a modern software house that specializes in them(most do), but you don't need to know them to get stuff done.
I'm not entirely sure about the last piece of advice he gives about getting involved in open projects. Many open source projects are very useful things that I'm grateful they exist, but sometimes you can submit patches and it would take many months for them to get approved if the developer has little interest in said bugfix or new feature. I suppose these things depend on a per project basis.
>>28
Fuck your face. What did you find objectionable about my post?
I'll be completely blunt here, reading SICP to start off is a stupid fucking idea. It might be a fantastic text for anyone who's actually familiar with programming, yes; but it's really much better for re-learning and expanding knowledge of the field, than as a flat-out introduction. No one just getting into computers needs an introduction to all that shit, it's overwhelming and not helpful. Anyone starting off with SICP and little to no existing programming background, if they're not actually MIT quality, will surely be lost. And if they are, they're probably already going to MIT.
Go ahead and tell people to read SICP if they have the smallest shred of possibility that they'll be able to keep up and comprehend the text. Don't send people blindly off a goddamn cliff. You're doing a disservice to many potential future coders by setting them up for inevitable discouragement. Get them started with something practical, something they're able to experiment and learn with, and then bring up SICP.
>>31
You're right, it really depends on what project you're getting involved in. But there certainly are a large number of projects that are more than willing to help an aspiring new programmer learn. (A sort of Monster or Dice for open-source software would be a great idea.)
>>32
So you're saying that people have to be intelligent to read SICP if they can't already program?
I'll just go ahead and suggest that you have to be intelligent in order to learn how to write programs nicely.
So how does anybody who isn't intelligent get into programming without also being mentally eligible to read SICP?
They don't. Then they join /pr/ and find an immensely dull job as a Java codemonkey.
>>32 It might be a fantastic text for anyone who's actually familiar with programming
Why would someone who can already program need a beginner's book like SICP?
You seem to want to learn programming for programmings sake as a hobby and you are in the field of system administration. The best languages then are the ones used in your field, which is probably shell scripting, SQL, in other words the scripting languages your tools use. If the choices piss you off, go into another field where more interesting languages exist. This way you can learn a lot in a short time and produce good results.
Name:
Shania2010-07-02 7:02
that dont impress me much.
Name:
Anonymous2010-07-02 11:15
>>43
I estimate that your estimate is too pessimistic.