View Full Version : first programming language to learn?
divorced
11-13-2010, 10:35 PM
Okay, went on a job interview and I have the experience, but they wanted someone with some programming background as well. I don't know what their specific needs were , but I'm now looking to dip my toes into the programming world. What should I have a go at first? I'm thinking Java since it is so widely used and I'm told it is among the easiest to pick up and be fairly marketable in a short amount of time. What is the general consensus here?
Quaro
11-13-2010, 10:45 PM
No experience programming? Definitely not Java.
Try: http://learnpythonthehardway.org/
Chris Nahr
11-13-2010, 11:30 PM
On the contrary, definitely Java. It's indeed most likely to be immediately useful in business, and plenty of universities use it as a teaching language these days as well.
I'd never recommend Python to a rank beginner -- it's an eclectic mix of existing programming languages with no clear structure and full of shortcuts typical for scripting languages. Very powerful if you already know multiple languages, incomprehensible otherwise. Also so different from other languages that the transition to your next language will be hard.
lesslucid
11-13-2010, 11:47 PM
I think it's very difficult to develop sufficient programming skill to be useful to an employer in a short space of time, regardless of the language you use.
For a general "first steps in programming" thing, though, based on my recent experiences, I would recommend Ruby, and this website:
http://pine.fm/LearnToProgram/
Chris Nahr
11-13-2010, 11:54 PM
Good grief, that's another advanced scripting language that doesn't belong in any beginner's hands. Please don't do that, just learn Java.
Vesper
11-14-2010, 12:17 AM
Microsoft has a decent amount of tutorials and a free version of Visual Studio if you'd like to take a shot at C# - which is the most useful language commercially other than Java.
I agree with Chris - stay away from the unstructured scripting languages like Ruby & Python to start. You want strongly typed languages that can show you what you're doing wrong as you are coding.
shang
11-14-2010, 12:27 AM
In also in the camp that Java is a terrible language to learn if you have no previous programming experience, although I agree it's the one that's probably most useful for business (it depends on why they want someone with programming experience). For Java, you need to learn a lot of syntax and concepts specific to object oriented programming before you can make so much as a working Hello World. Something like reading a file line-by-line requires like twenty lines of code and three or four different objects. The libraries in general are so convoluted, that even after working with Java for over ten years, I still need to hit Google quite often to look up what combination of objects and helper objects I need to create for specific tasks.
Despite what Chris says, I'm going to vote for Python too. I agree that it contains some esoteric stuff, but none of that is really required when learning the basics. What Python gives is a simple syntax to do basic stuff and more importantly, a good interactive shell where you can try and run commands. It will be much easier to learn the most basic concepts of programming like variables, procedures, loops etc. (and even classes and objects if you want) with a language like Python and then leverage that to learn something more business oriented like Java.
I admit that I'm a fan of Python and probably somewhat biased, but I've also seen a lot of students hitting a complete brick wall with Java when they start from zero, and I've personally taught the basics of Python to a few non-programmers with relative ease. (I know, all anecdotal, but hey)
candide
11-14-2010, 02:28 AM
Yes, learning something where you can try stuff out interactively is easier and faster than the edit/compile/huh? cycle.
Mark Weston
11-14-2010, 02:34 AM
Good grief, that's another advanced scripting language that doesn't belong in any beginner's hands. Please don't do that, just learn Java.
Ruby is only complicated if you're trying to do complicated things with it (e.g. meta-programming). But its ability to read almost like English makes it fantastically easy to get started with. The flexible syntax means not getting tripped up by missing line noise characters so the learning process involves less frustration and more fun. IMO it's a great starting language.
But, the OP wants something that's immediately employment relevant so I do think that Java is the best choice. Last time I saw a league table it was the most widely used programming language (it certainly beats Python and Ruby into insignificance when it comes to employment relevance). Personally I don't like Java much, I find it frustrating and inflexible compared to other languages. But learning it will teach the key concepts and techniques of object-oriented programming which are then transferable to other languages should programming become a major part of your work. And there's a ton of free teaching materials available for it.
Jasper Phillips
11-14-2010, 05:43 AM
Python.
The beginners I've seen start with Python have been quickly able to do useful things with it, e.g. in an academic/research setting, with only a modicum of outside mentorship. The beginners I've seen start with Java (outside of a full on university computer science program) stumble getting anywhere. In my experience, Chris's comment about Python being incomprehensible to neophyte programmers is simply wrong.
Experienced programmers often forget how much of a pain it is for beginners to make any headway with even a simple program, and Java's heavy weight Object-Orientated-or-Bust paradigm does you no favors here. Take a close look at Shang's example:
Something like reading a file line-by-line requires like twenty lines of code and three or four different objects.
Yep, that's right. This is exactly what you'll be looking at. The alternative in Python is a couple of lines at best, and is easier to read and understand to boot. This scales to larger programs too, which is why all the professional programmers I know prefer Python to Java (barring outside constraints).
The only thing that Java has going for it, which can be key, is that there are plenty of existing codebases that use it. That, and perhaps it looks good on a resume to non-programmers.
If you're just looking to get a job, I can see the draw of having Java on your resume; even then, I'd recommend starting with Python and checking out Java second.
Staff Sergeant
11-14-2010, 06:50 AM
Turing
RobotC
Java
Mike O'Malley
11-14-2010, 07:46 AM
Java's structure, static typing and heavily enforced OO are exactly what makes it so appealing as a first language. The novice learns the processes and designs behind good coding, rather than learning how to put "Hello World" up in 2 lines.
I don't like Java- I think it's overbearing and increasingly outdated. But- and this is a big but- it's a great avenue for new developers to learn why those are weaknesses rather than just sidestepping the whole thing and hacking away in Ruby.
Learn Java first. Given time, I'd say learn C++ first, but the frustration/satisfaction ratio is probably much higher with C++.
R (http://www.r-project.org/), if you're a statistician
peterb
11-14-2010, 08:17 AM
No one has asked you what kind of job you're interviewing for yet.
If this is basically a sysadmin position, and by "programming" they really mean "we want a guy who can write a perl script," then learning a scripting language is fine - perl, python, or ruby should all be fine. They'll ruin you as a "real" programmer, of course, but you probably don't care about that if you're just looking to enhance your sysadminish cred.
If you actually want to become a real programmer, meaning someone who develops non-trivial software for a living, then I agree with everyone who has said "Learn Java first." All of the comments about its shortcomings are absolutely true, but there is a huge body of resources out there supporting java-as-a-teaching-language. That's invaluable.
Jasper Phillips
11-14-2010, 08:33 AM
Java's structure, static typing and heavily enforced OO are exactly what makes it so appealing as a first language. The novice learns the processes and designs behind good coding, rather than learning how to put "Hello World" up in 2 lines.
*Shrug* You can do object orientated at least as well in Python as in Java. Being more concise, expressive, and powerful doesn't make it less useful for OO programming.
And if you're going to go into it heavy (i.e. at university), I'd definitely go with C++ over Java. The CS department here at OSU used to teach in C++, and when it later switched to Java the average quality of the graduates that I came across dropped substantially -- even for Java programming.
Actually, the more I think about it this is really the wrong question to ask, as it inevitably devolves into religious debate. Do you know a "guru" programmer who's willing to help you out when you get stuck? If so, use what they recommend as it ups your chance of getting good advice, and if you don't then I'd find one before jumping in.
Learning programming on your own is much slower going, and likely to leave you with bad habits.
Reldan
11-14-2010, 08:47 AM
Yeah, it basically comes down to what you're hoping to get out of this. If you are serious about wanting to really learn the guts of programming I'd say dive into C++, but be prepared to work at it (and it would probably help to start off taking an instructed course). Or Java - it probably would provide similar benefit and is probably less frustrating. If you're more trying to just develop a general awareness for how it all works then something like VB.net shouldn't be too hard as the syntax is, well, pretty basic.
A friend of mine was curious about programming because he wanted to come up with a way to automate some busywork tasks at work which were incredibly repetitive. Not having any access to a real language but having Office, I helped him learn VBA (Visual Basic for Applications). He ended up developing a program in it that saved his company over $1M in man-hours (they threw him a pizza party and gave him a gold star certificate to boot).
KaoFloppy
11-14-2010, 08:49 AM
(This is in the "real programmer" camp.) Let me suggest Groovy (http://groovy.codehaus.org/) as a first step for playing with Java in a slightly unstructured script-language-like fashion. You can use this to play around with Java statements to get a sense of its syntax, its rich (or overly-rich) set of support libraries, and interactively examine consequences of individual statements.
All of the above can be done in exactly the same way by using any free Java IDE, and running a program inside a debugger & single-stepping each line. But it can be overwhelming to learn to use an IDE if you've never done it before. (What's a project, and why am I making one first? I just wanna run Play.java...)
...
Turing is in public domain?!? (http://compsci.ca/holtsoft/) Cool! I gotta get this and check if I still like this more than Java.
ckessel
11-14-2010, 09:07 AM
(This is in the "real programmer" camp.) Let me suggest Groovy (http://groovy.codehaus.org/) as a first step for playing with Java in a slightly unstructured script-language-like fashion. You can use this to play around with Java statements to get a sense of its syntax, its rich (or overly-rich) set of support libraries, and interactively examine consequences of individual statements.
Much as I prefer strongly typed languages, I echo picking an OO capable scripting language, though that presents a problem. The barrier to entry is trivial. No main() method.
That said, I also agree with the other Chris that it's nice to start with strong typing as it starts ingraining the importance of things as having a type and what that means to design and programming.
Groovy allows, but doesn't force, strongly typed variables, so it's a good choice. Unfortunately, Groovy also has much larger core language set of features (things you can sort of implicitly do to objects, like "eachLine" on a file) and that increases set of things you're exposed to all at once when starting out. I'd set yourself some goals, like "read an XML file", and look for examples. Groovy is stellar at input/output type stuff.
I'd recommend IntelliJ's community edition as an IDE for any Java spawned language. It absolutely crushes Eclipse in the usability department and has lots of automatic on-the-fly inspections that'll help teach you what you're doing wrong.
Jason McCullough
11-14-2010, 09:38 AM
You don't want a language that requires a lot of pain in the sysadmin ass work to setup or troubleshoot, so that rules out all the web-focused stuff.
Class/Imperative: Try out C#. Get Visual Studio 2010 Express (http://www.microsoft.com/express/Windows/), it's free.
The new hotness/Functional: Try out F#, here (http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/release.aspx).
Zylon
11-14-2010, 10:42 AM
Java's structure, static typing and heavily enforced OO are exactly what makes it so appealing as a first language.
...to people who want to ensure that those concepts are shoved down the learner's throat. To the actual learner though, not so much.
A simple HELLO WORLD in Java:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}The simplest program in the world, yet it requires an understanding of classes, methods, access specifiers, scoping, parameter types, return types, libraries, and the significance of "main". Contrast with less anal-retentive languages where something as straightforward as print "Hello World" just works.
Michael Fortson
11-14-2010, 10:57 AM
You don't want a language that requires a lot of pain in the sysadmin ass work to setup or troubleshoot, so that rules out all the web-focused stuff.
Caveat: if you're on Windows. On a Mac, Ruby is as close as opening the terminal and typing "irb", and Python's right there as well.
KaoFloppy
11-14-2010, 11:03 AM
That's kind of why I suggested groovy. The same program in groovy (http://groovy.codehaus.org/Tutorial+1+-+Getting+started) is:
println "Hello, World!"But you can write the more wordy Java way, too. (I think...)
"Less anal" languages let you write and run easy 10 minute programs quickly, but will lead you down the path of write-only programs. All those rules and objects and classes and scoping rules exist for engineering and organizational purposes, which are important to learn when you need to program as part of a team, or if you are dealing with a big enough program.
Note that I'm not dissing scripting languages in general. But note that even scripting languages that support 'print "Hello"' have organizational features.
ckessel
11-14-2010, 11:33 AM
It should also be noted that it depends on what your programming long term needs are. If you need to learn enough to do something quick, lots of small one-off programs for very specific purposes, then go for some sort of scripting language (Groovy, Python, Ruby, etc). If you're an IT guy, build meister, infrastructure person, then that's your wheelhouse.
If your long term goal is working on significant sized projects, with heavy coding for business rules, domain objects, reliability, etc, then you'll want to start learning more serious OO and probably a typed language.
I don't mean to imply one is more important or more "real programming", but the types of problems you solve, and thus the tool to use, are quite different.
Zylon
11-14-2010, 12:14 PM
"Less anal" languages let you write and run easy 10 minute programs quickly, but will lead you down the path of write-only programs.
Imagine if our entire educational system ran on that same principal. No, the path of most effective learning is to start simple, teach the basic concepts of programming, then move on to the advanced, enterprisey features that most people won't even ever need.
Besides which, OO has little to do with how readable a program will be. All other things being equal, bad programmers produce bad code, and good programmers produce good code. I've seen enough well-commented, logically structured BASIC programs and nightmarishly obtuse Java programs to know the truth of this.
Depending on how comfortable you are with programming concepts, you can learn Java through the lens of Processing (http://www.processing.org), which is designed for non-programming types. Shiffman's book (http://www.amazon.com/Learning-Processing-Beginners-Programming-Interaction/dp/0123736021/ref=sr_1_1?ie=UTF8&s=books&qid=1289774529&sr=8-1) is a very simple entry into programming and explains concepts very clearly. Processing is a superset of Java, so you can move into more complex stuff from there without missing a beat.
chequers
11-14-2010, 02:55 PM
What Chris said. Java is used for teaching programming by universities for a reason. It's highly structured and used widely in enterprise.
I'm not totally averse to suggesting Python, but Ruby is still far too obscure to be worth learning.
And anyone suggesting even more obscure languages (Groovy, F#) is trolling you.
tromik
11-14-2010, 02:56 PM
I'd say Visual Basic, or if you can find it, Object Oriented Turing. Even though the concepts are all very similar, I found Java much tougher to get a grasp on. Also, the .NET IDE is extremely helpful.
Expanded post: I've basically learned introduction and lower-intermediate object-oriented programming from scratch three times. First with OOT in high school, second with Java at UWO, and third with VB.Net at Ryerson. As I never went on to do more advanced programming, and because I never did much outside of school, I'd completely forget everything as soon as the course was over. The structure of the courses were probably identical, but I found VB.Net easiest to grasp.
Mike O'Malley
11-14-2010, 03:28 PM
...to people who want to ensure that those concepts are shoved down the learner's throat. To the actual learner though, not so much.
A simple HELLO WORLD in Java:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}The simplest program in the world, yet it requires an understanding of classes, methods, access specifiers, scoping, parameter types, return types, libraries, and the significance of "main". Contrast with less anal-retentive languages where something as straightforward as print "Hello World" just works.
Yep, you've learned, or at least been exposed to, all those things, which are important concepts that carry across systems and languages.
println "Hello World" doesn't teach you a thing. You can change the string til the cows come home and not have any clue what you're doing or how it's being handled under the hood.
Maybe I'm too keyed on divorced asking which language he should learn. Learning a language, to me, implies a bit more than just writing scripts.
nlanza
11-14-2010, 03:36 PM
Sure, it's important to learn all of those concepts, but there's such a thing as learning incrementally -- just because you start with 'println "Hello World"' doesn't mean that's as far as you will ever go.
As people have mentioned before, most of the modern 'scripting languages' do have objects, classes, methods, scoping, return types, libraries, and all that jazz. It's just that they're not shoved in your face before you can do anything else.
A lot of older-generation programmers have this mindset that there's a big distinction between scripting languages and 'real' languages, and I'm just not convinced that it's nearly as true as it used to be.
You can write real software in Python or Ruby, and plenty of very skilled professional programmers do just that all day long.
Gourmand
11-14-2010, 06:21 PM
Yep, you've learned, or at least been exposed to, all those things, which are important concepts that carry across systems and languages.
Maybe I'm too keyed on divorced asking which language he should learn. Learning a language, to me, implies a bit more than just writing scripts.
This thought process is why a lot of programmers make terrible teachers.
ckessel
11-14-2010, 06:26 PM
A lot of older-generation programmers have this mindset that there's a big distinction between scripting languages and 'real' languages, and I'm just not convinced that it's nearly as true as it used to be.
The problem is that it takes an experienced person to use the newer scripting languages in effective ways. They make some things very simple, which can teach you horrible habits for long term software development practices. There's something to be said for being wrapped in rigidity (like the Java example) in the early going because you can't drift too far afield before learning what the hell it means to write software rather than a 1 page script.
But that all gets back to what does the OP want to do? Develop software or write small, useful scripts?
FWIW, I've spent my life developing software (20 years). I've got a BS in CS, I went back for my masters in Software Engineering after a while in the industry and completed it part time over 4 years. You can read that as snobbish, but I'd like to think I have a better idea than the average Joe what it means to both write software and learn how to write software.
nlanza
11-14-2010, 06:28 PM
The problem is that it takes an experienced person to use the newer scripting languages in effective ways. They make some things very simple, which can teach you horrible habits for long term software development practices. There's something to be said for being wrapped in rigidity (like the Java example) in the early going because you can't drift too far afield before learning what the hell it means to write software rather than a 1 page script.
The flip side of this is that more and more often you're seeing new programmers who learned a rigid Java curriculum and now they... write idiomatic Java. In any language they happen to be using, no matter what it is.
You'll run into bad instructors and bad habits no matter what the toolset is.
Damien Neil
11-14-2010, 07:59 PM
FWIW, I've spent my life developing software (20 years). I've got a BS in CS, I went back for my masters in Software Engineering after a while in the industry and completed it part time over 4 years. You can read that as snobbish, but I'd like to think I have a better idea than the average Joe what it means to both write software and learn how to write software.
I've spent my life developing software. Not quite 20 years of professional experience yet, but getting close. I think you're completely and utterly wrong, and that your sneering dismissal of Python as "scripting" is beyond absurd. So, take that for what it's worth.
ckessel
11-14-2010, 08:09 PM
I've spent my life developing software. Not quite 20 years of professional experience yet, but getting close. I think you're completely and utterly wrong, and that your sneering dismissal of Python as "scripting" is beyond absurd. So, take that for what it's worth.
Christ. I like scripting languages, right tool for the job and all that. I don't dismiss them as inferior, just built for a different purpose usually (though in the last 10 years the lines between precompiled and scripted have gotten blurred). Edit: also, I don't mean scripting != full featured OO and such. Scripted runs as a script, no precompile. I mean scripted in the technical sense, not some derogatory "lessor language" or some such, which seems to be the implication you took given your reaction. I even went out of my way in my first post to state that explicitly.
As for my advice to the OP, I'll pit my knowledge and experience against the top 2 or 3% of software folks and I think I've got reason to justify that and have something useful to offer on the topic. If you don't agree with it, that's fine. No need to be an ass though.
Coca Cola Zero
11-14-2010, 08:29 PM
My first language was 6502 assembly and I'm an excellent programmer now, so I suggest you start with 6502 assembly.
psu_13
11-14-2010, 08:35 PM
My first language was 6502 assembly and I'm an excellent programmer now, so I suggest you start with 6502 assembly.
Quoted for truth.
Damien Neil
11-14-2010, 09:24 PM
Christ. I like scripting languages, right tool for the job and all that. I don't dismiss them as inferior, just built for a different purpose usually (though in the last 10 years the lines between precompiled and scripted have gotten blurred). Edit: also, I don't mean scripting != full featured OO and such. Scripted runs as a script, no precompile. I mean scripted in the technical sense, not some derogatory "lessor language" or some such, which seems to be the implication you took given your reaction. I even went out of my way in my first post to state that explicitly.
"Runs as a script" is an utterly meaningless distinction. Jython is a Python implementation that compiles to the JVM, just as Java does. IronPython compiles to the CLR, just as C# does.
If you want some advice from someone who just started learning how to program, go with something easy at least until you have a grasp on basic programming fundamentals, which I'm of the opinion an easier language will help you grasp easier ofc ;)
I chose Python mainly because after browsing the web on this subject for a couple hours, and then looking at similar examples of how to accomplish similar tasks in each language, python looked like it would be quite a bit easier for me to understand and learn than java or c++ did. The code seemed easier to read and a lot less writing involved which is imo a bonus. Also was the fact that I'm pretty certain I'll never need to actually develop anything like a game or business software etc... so that made my choice even easier.
From my experience so far python hasn't been too hard. Granted I've only been at it for two weeks.
The hardest part of learning a to program in Python I've come across is that sometimes(at least from the various tutorials I've been following) is that they don't explain things enough or gloss over things until later. You'll see exactly what I mean soon enough regardless of what language you decide upon heh.
Anyways if you want to learn Python here are a few sites I'm using that aren't bad:
http://learn-to-program.net/python/index.html
http://en.wikibooks.org/wiki/Non-Programmer%27s_Tutorial_for_Python_2.6/Hello,_World
http://openbookproject.net/thinkcs/python/english2e/ch01.html
http://www.alan-g.me.uk/tutor/index.htm
Do the examples until you fully comprehend the why and how and then move on since you keep building on those basic concepts.
Oh, as someone else stated earlier though, if you actually know someone who can and will help you learn, just choose what language they know, that will make learning on your own A LOT easier and faster, trust me. I've spent an hour trying to figure out some practice examples that "seemed pretty easy" and why the hell they weren't working to realize I had not assigned a variable or had something in the wrong order and other retarded things like that. You'll run into this a lot and if you have someone who can point out your error and explain it to you; lucky bastard ;P
Michael Fortson
11-14-2010, 11:22 PM
Wait, nobody has mentioned Logo?
chequers
11-15-2010, 12:13 AM
THAT FUCKING TURTLE.
Jason McCullough
11-15-2010, 12:16 AM
Oh heh no I ain't been doin' much Logo codin' these days I mean like the turtle just sits there and he is totally glarin' at me!
Hiredgoons
11-15-2010, 02:31 AM
Eric Raymond has some thoughts on this topic, and ends up casting his vote for Python over Java as far as first language to learn. Link. (http://www.catb.org/%7Eesr/faqs/hacker-howto.html#skills1) That links also has some more discussion of what he calls Java's pitfalls.
Mark Weston
11-15-2010, 03:10 AM
Eric Raymond has some thoughts on this topic, and ends up casting his vote for Python over Java as far as first language to learn. Link. (http://www.catb.org/%7Eesr/faqs/hacker-howto.html#skills1) That links also has some more discussion of what he calls Java's pitfalls.
But Eric Raymond is answering a different question to the OP. The title of the piece "How to become a Hacker". The OP hasn't expressed an interest in becoming a hacker, he simply wants to acquire a subsidiary skill that will improve his chances of getting a mostly non-programming job. If people want to continue the programming language religious war they'd do him a favour by taking it to a different thread. I doubt it's helping here.
lesslucid
11-15-2010, 03:11 AM
I don't want to get into the religious language wars but I would say that... maybe something to consider is the psychology of the learner. How do you respond when you hit a brick wall? If you're the type who thinks, "yeah, well I'm just gonna keep pushing that wall until it falls over!" then it may well be that C or Java or 6502 assembler is for you. On the other hand, if you have a weak and watery disposition like my own, then something like Python or Ruby will present you with fewer brick walls and thus facilitate you taking your learning further, and approach the obstacles on a "gentler learning slope".
Anyways, I suspect that there's already enough advice in this thread for divorced to make some kind of choice, or at least get thoroughly conflicted and confused. :)
WarrenM
11-15-2010, 03:18 AM
I think experienced programmers get way too caught up in doing things "the right way" and learning every nut and bolt on the way up so that you become the programmer that they wish they had been at your stage of development.
But think back to when you learned programming. I learned it in my bedroom with a book I bought. Nobody was around to tell me the "right way" to do things and nobody was standing over me lecturing me about which language to choose. I picked something I was interested in and went for it.
Crack a book, open a tutorial, whatever you like - the important thing is to GET STARTED. Languages are usually just a matter of learning new syntax. The concepts are fairly universal and you can worry about what the right way of doing things is later once you've nurtured a healthy love of coding because, honestly, it takes a decent amount of love to WANT to do things the right way to begin with.
It would also help you to have a goal in mind. "Learning programming" is too vague to be useful. "I want a program that displays a picture on the screen for 10 seconds and then exits" is more useful because then you can learn things specific to that task.
So my suggestion would be to learn the syntax of a language be it Java, C#, or whatever. Learn the stuff built into that language ... what a for loop is, control statements, variables, etc. Once you have a handle on that, pick a specific task and figure out how to make it happen. The trouble with writing code today is that you have too many options. Displaying an image sounds like it should be easy in Windows, and it is, but you have 25 ways of doing it that are all radically different from each other - ranging from the simple to the overtly complex.
The important thing is to have fun first. If you don't have fun, you won't stick with it and all of this hand wringing will be for naught.
If other disciplines approached things the way programmers do it would be terrible. Imagine standing over a hobbyist level designer as he starts up UnrealEd for the first time and raining down rules and lectures about how to do things properly and don't do this and never do that and ... just let the guy breathe! He has figure out if he even likes it before he worries about optimal triangle counts and efficient geometry!
SergioBAM
11-15-2010, 03:56 AM
Languages are usually just a matter of learning new syntax.
Yes.
I'm going to throw in my vote for C#. Very easy to get started, and the MSDN has great tutorials.
psu_13
11-15-2010, 06:51 AM
Eric Raymond has some thoughts on this topic, and ends up casting his vote for Python over Java as far as first language to learn. Link. (http://www.catb.org/%7Eesr/faqs/hacker-howto.html#skills1) That links also has some more discussion of what he calls Java's pitfalls.
Whatever advice you take, you should always remember to never listen to anything Eric Raymond says about software engineering.
peterb
11-15-2010, 06:56 AM
Whatever advice you take, you should always remember to never listen to anything Eric Raymond says about anything (http://www.catb.org/~esr/writings/sextips/dating.html).
Fixed that for you.
psu_13
11-15-2010, 06:59 AM
Oh my god. I forgot about that.
Zylon
11-15-2010, 07:53 AM
println "Hello World" doesn't teach you a thing. You can change the string til the cows come home and not have any clue what you're doing or how it's being handled under the hood.
Your statement applies equally to the Java version as well. The difference is that the short "script" version of same allows a person who's never programmed before to absorb new concepts incrementally, while the verbose Java version overwhelms a newbie with what may as well be line noise. Have you really been at this so long that you've completely disappeared down the rabbit hole and forgotten the "Oooh, magic!" stage of learning to program? At that stage of learning, it's flat-out false to say that changing the string in a print statement doesn't teach you anything. On the contrary, it teaches the basic cause-and-effect of programming, and grants potentially intimidated learners a sense of power over the machine.
From an educational perspective, this approach is infinitely preferable to slamming the learner's face into a wall of unfamiliar concepts. Imagine if beginner's math classes started out with this:
http://www.optiontradingpedia.com/theta_formula.JPG
This is the delusional mindset of people who suggest Java for learning to program.
Mark Weston
11-15-2010, 08:22 AM
This is the delusional mindset of people who suggest Java for learning to program.
The level of rhetoric here is becoming quite absurd. It's "delusional" to suggest using Java for learning to program? You should probably mention this to the dozens of universities who somehow manage to teach thousands of people to program, with Java, every year.
Oh and by the way the whole concept of discussing the relative merits of programming languages based on "hello world" is just as mad. What are you people thinking? I know "hello world" is a tradition, but it's a trivial one. Guess what, it turns out that no one who teaches Java uses "hello world" like that, nor do they feel the need to dump the concepts "of classes, methods, access specifiers, scoping, parameter types, return types, libraries, and the significance of 'main'." into one indigestible lump of exposition on day one of a course or tutorial. Helpful environments where you can execute Java statements interactively are in fact easy to come by and allow you to work with Java on the same basis as you would with interpreted languages (at least for teaching purposes).
I'm not a fan of Java as I mentioned before. But if there are good reasons to want to put "Java programmer" on your CV then it's perfectly possible to learn it as your first language, and plenty of freely available material to help you with that task.
Chris Nahr
11-15-2010, 09:06 AM
The fact that Zylon rails against Java as a teaching language should convince everyone that it is indeed an excellent choice.
Zylon
11-15-2010, 09:10 AM
Everyone just give the damaged-goods Java coder some space, people. He's more afraid of us than we are of him.
shang
11-15-2010, 09:27 AM
Just came across this: Teach yourself programming in 10 years (http://norvig.com/21-days.html)
Brandon Clements
11-15-2010, 09:59 AM
No one has asked you what kind of job you're interviewing for yet.
I kinda need this one answered first (ftr, I'm a sysadmin that knows enough to be dangerious with some of the languages mentioned in this thread).
divorced
11-15-2010, 11:37 AM
Okay, please let's cut out the name-calling nonsense. Certainly didn't mean for that to happen. If there is one thing I've learned, it's that to get from point A to point B, in programming if you ask fifty different people you will get fifty different ways to get to B. There is no one correct way. There might be more sound ways software engineering-wise, but no one correct path.
So the question is what is my goal? Well I have my MCSE and MCITP: Enterprise Administrator. I got a temp job that was supposed to last about 3 weeks. I had a list of tasks that needed to be accomplished and me being the "gung ho, get it done as fast as I can" kind of guy, got 3 weeks of work done in a little under 1 week. But it was also because I was having a blast. So when I finished the last item, my boss looked at me with wide eyes and said "Already???" I took that as a compliment. Anyway, instead of rewarding me for my speed and thriftiness, I was cut loose. Turns out they needed a programmer more than they needed me. The place I worked was www.shopperschoice.com. It's in a series of buildings in Baton Rouge, really a cool setup.
So when that happened, my natural nature kicked in and I said to myself, "What can I do/learn so the next time this happens I will be better prepared?" Thus my question on what programming skills should I possibly develop. Keep in mind, I am not a young pup and learning is MUCH more difficult for me now. I'm 49 and have been out of school for almost 30 years. Kind of scary when I think of it that way.
So with that bit of further info, and more thoughts?
Lucidvizion
11-15-2010, 02:02 PM
My personal opinion is Python is probably the best choice to learn the very basics of programming because of its syntax, structure, and readability. MIT uses it in their intro to computer science course, that has to count for something (plus you can do the entire course through MIT OpenCourseWare).
Once you understand the basics you can apply them to any language you decide to learn in the future.
Reldan
11-15-2010, 03:27 PM
I got a temp job that was supposed to last about 3 weeks. I had a list of tasks that needed to be accomplished and me being the "gung ho, get it done as fast as I can" kind of guy, got 3 weeks of work done in a little under 1 week. But it was also because I was having a blast. So when I finished the last item, my boss looked at me with wide eyes and said "Already???" I took that as a compliment. Anyway, instead of rewarding me for my speed and thriftiness, I was cut loose.
Sorry to hear that. It's kinda sad, but I predicted the ending halfway through reading this paragraph.
So when that happened, my natural nature kicked in and I said to myself, "What can I do/learn so the next time this happens I will be better prepared?" Thus my question on what programming skills should I possibly develop. Keep in mind, I am not a young pup and learning is MUCH more difficult for me now. I'm 49 and have been out of school for almost 30 years. Kind of scary when I think of it that way.
So with that bit of further info, and more thoughts?
A lot of what it sounds like this company was looking for was someone who could program in whatever language/system they were using. General programming know-how would not necessarily prepare you for a job like that as the familiarity with how to quickly get something done using setup X is going to be the most important qualification for that sort of temp work - they aren't paying you to learn how to get it done, just to get it done.
I think most of us responding to this post are pretty damn far removed from what it's like to go from no programming experience to learning everything for the first time. If you're actually taking a course to learn programming the language you focus on can be significantly more complicated because you'll have someone to guide you through what's important and not important as you move along. Hell, I learned programming in C on a UNIX system writing code using a basic text editor, but I did it at a university with an instructor who could answer questions, knew how to focus us on the important stuff, and only then slowly developed awareness of everything else as we went along.
Brandon Clements
11-15-2010, 03:30 PM
So when that happened, my natural nature kicked in and I said to myself, "What can I do/learn so the next time this happens I will be better prepared?" Thus my question on what programming skills should I possibly develop. Keep in mind, I am not a young pup and learning is MUCH more difficult for me now. I'm 49 and have been out of school for almost 30 years. Kind of scary when I think of it that way.
So with that bit of further info, and more thoughts?
I don't think much would have helped without a lot of notice in this kind of situtation; they're looking for a programmer (of still-unspecified type, but I'm willing to bet some type of .NET developement/maintenance), not a sysadmin that knows how to throw something together script-wise. That's not a reflection on you, keep in mind: you did a good job IMO condensing down 3 weeks of work to just one, and they just didn't need you anymore. It really sucks, but it happens.
Going forward, especially if you haven't been exposed to the basics (loops, basic algorithems, etc) before, I'd play around with any of Python, Java, or the .NET family. There's a lot of different enough documentation that you'll see that, should you not "get" how or why particular data structure are created, you might "get" it in another set of documentation. The goal here isn't necessarly to really learn in depth why a particular language does what it does (you'll probably get some of that though), but to learn the fundimentals that carry across the languages.
Also, it may help to have some specific goal in mind (i.e. I want to create a front end so that I can create or edit objects in Active Directory or something like that). That gives you a concrete goal, and clear things to learn how to do.
Mark Weston
11-16-2010, 03:07 AM
OK then, I think it makes sense to go with something that complements your existing skillset. I'd suggest Visual Basic.
1) It's an easy to learn first language. The original BASIC that it's based on was designed as a teaching language (though VB has moved on so far from the original that the designers of BASIC would hardly recognise it.)
2) It's fun. You can very quickly create little GUI apps that look and work like real Windows programs.
3) It will have a quick payoff in terms of useful skills. There are several dialects of Visual Basic that are used to automate MS Office (VBA) or to write scripts that can automate various server and sysadmin tasks (VBScript). Being able to demonstrate you can do these things should be a help getting jobs at Windows shops, especially the smaller ones who tend to need generalists who can do a bit of everything.
4) Whatever you learn about the .NET framework and libraries while using VB should be transferable to the other .NET languages like C# if you end up moving further into software development.
A couple of caveats. Firstly it's been 4-5 years since I worked with Windows servers or did any kind of Windows programming, so I'm no longer fully up to date with Microsoft tech developments. Talk to someone who is. Secondly, Real Programmers (tm) do like to sneer at Visual Basic. It's not necessarily the best first language if you're putting together a long term plan to get into software development. But I think it might have the quickest payoff in terms of adding to your existing skillset.
Chris Nahr
11-16-2010, 03:50 AM
VB.NET uses the same libraries and has roughly the same feature set as C# so if you strongly dislike curly braces it's another good choice.
Not as good as FORTRAN IV, though.
CheesyPoof
11-16-2010, 07:50 AM
I think VB.net is a terrible choice. If the goal is learn how to program, I think that one should pick an imperative language that you can use to make console programs. Learning to program should focus on concepts like data types, data structures, flow control, functions (along with return values and pass by value/reference), and leaning some basic algorithms. Running these programs needs to be fairly simple so collecting input should be done via simple prompts in the console, or simple data files once you get beyond that.
Using VB.net, or any event driven paradigm, introduce too many concepts that aren't strictly related to learning general programming. Similarly I agree that Java is a poor choice because of all the syntactical sugar a new programmer must overcome before getting the basics.
Chris Nahr
11-16-2010, 07:56 AM
I'm guessing that you are confusing VB.NET with the old Visual Basic. .NET includes full support for console programs. You are by no means forced to write an event-driven GUI application just because you're using a .NET language. See here (in C# because that's what I'm fluent in):
static class MainClass {
static void Main() {
System.Console.WriteLine("Hello, world!");
}
}
WarrenM
11-16-2010, 07:57 AM
I think VB.net is a terrible choice. If the goal is learn how to program, I think that one should pick an imperative language that you can use to make console programs. Learning to program should focus on concepts like data types, data structures, flow control, functions (along with return values and pass by value/reference), and leaning some basic algorithms. Running these programs needs to be fairly simple so collecting input should be done via simple prompts in the console, or simple data files once you get beyond that.
Yes, this, a 1000 times this. This is how I learned C++ way back in the day. Learn the language without a ton of cruft hanging off of it.
CheesyPoof
11-16-2010, 08:00 AM
Yes, it's possible, but I'm unsure how many VB.net tutorial would focus on console mode. I think one learning to program would quickly get lost in the event driven features of Visual Studio.
Similarly that C# example is very similar to Java and not one I would foist upon a new programmer.
Chris Nahr
11-16-2010, 08:00 AM
I'm not sure how you could possibly learn C++ without a ton of cruft since that language itself is pretty much the definition of "a ton of cruft". But as I already said... CheesyPoof is confused and you're not forced to write an event-driven GUI in VB.NET.
Chris Nahr
11-16-2010, 08:05 AM
Yes, it's possible, but I'm unsure how many VB.net tutorial would focus on console mode. I think one learning to program would quickly get lost in the event driven features of Visual Studio.
You aren't forced to use Visual Studio, either. And even if you do, there are no "event-driven features" whatsoever that somehow impose themselves on you, unless you explicitly create a Windows Forms or WPF project. Just create a console project, and all you get is the plain old text editor. I humbly submit you have no idea what you're talking about here.
Similarly that C# example is very similar to Java and not one I would foist upon a new programmer.
Because of those two extra lines of class and method declaration that you're going to see in every single program going forward anyway, once you're past the Hello World stage? Please.
CheesyPoof
11-16-2010, 08:11 AM
What's static? What is a class? What does void mean? Why do you have void there? System.Console.WriteLine, what does all that mean?
I don't think you're thinking like someone that doesn't know anything about programming.
TurinTur
11-16-2010, 08:16 AM
Right now i am fighting against VB.Net. Jezz, it makes some things so hard. I miss the old simple and straightforward ways of VB 6. As a programmer, i feel my time should be used in thinking a clever idea, not trying to implement the idea in the code and feeling as i am fighting against a current in a fast river.
Some day i am going to look at those newfangled languages like Ruby.
dermot
11-16-2010, 08:22 AM
What's static? What is a class? What does void mean? Why do you have void there? System.Console.WriteLine, what does all that mean?
I don't think you're thinking like someone that doesn't know anything about programming.
Maybe not, but regardless of the language in question, someone who doesn't know anything about programming isn't going to know anything about programming. The meaning of 'class' and 'void' might not be obvious (though they could arguably be inferred) but I find it hard to believe that anyone who has a professional interest in computing couldn't figure out what System.Console.WriteLine could possibly mean or why it's structured the way it is. Especially since the code more than likely has 'include System.*' or whatever at the top.
spacerat
11-16-2010, 09:44 AM
What's static? What is a class? What does void mean? Why do you have void there? System.Console.WriteLine, what does all that mean?
I don't think you're thinking like someone that doesn't know anything about programming.
F# has a particularly nice hello world:
printfn "Hello World"
It's true that C# has a couple of lines of cruft to print hello world, but that's just completely insignificant compared to the overall effort of learning programming. It just does not seem plausible to me that those lines of code are a barrier of entry to anyone with the capacity to learn programming.
Edit:
Which I guess is the same thing as dermot just said.
DeepT
11-16-2010, 11:20 AM
I suppose it would be good to figure out what the market is looking for in terms of programmers. I personally think C/C++, C#, or Java are fine languages to start programming in. You can start off with very basic programs in all of them and learn from there. My decision would be governed by whatever the market demands. IE: If 70% of the jobs want c/c++, then I would not start with C# first and then learn C++ later.
My personal preference for languages are in order of the most liked to the least liked: C#, Java, C/C++, various script languages.
Don't want to hijack the thread too much, I've started taking some online courses to help with my programming, I'm doing C++ right now as that is what I was familiar with in high school and college. The course says that it needs a C++ complier, looking on Amazon I found really expensive programs and on google I get a lot of results for free compliers.
Do you guys have any suggestions for what I should get?
Chris Nahr
11-18-2010, 10:11 AM
On what? The standard compiler on Linux is gcc which is always free, and on Windows it's Visual C++ which has a free Express edition.
I'm on windows 7, sorry about that.
Chris Nahr
11-18-2010, 10:16 AM
Right, you go here and click on "Visual C++ 2010 Express":
http://www.microsoft.com/express/Downloads/
shang
11-19-2010, 12:35 PM
You can also get gcc to work on windows easily with mingw (http://www.mingw.org/).
WarrenM
11-19-2010, 12:53 PM
Use the Microsoft stuff. Seriously.
Coca Cola Zero
11-19-2010, 03:02 PM
Microsoft's dev tools (including for C++) are leaps and bounds better than anyone else's IMO, and he should absolutely download them.... but if you're taking a C++ course and the instruction is Unix-based, it would still be worthwhile to get mingw or cygwin with gcc because you'll usually end up dealing with toolchain (make, ld, etc) topics that aren't strictly just about C++.
(Or you may just want to take it a step further and install Linux to a VM in that case, I guess.)
Aszurom
11-19-2010, 05:17 PM
1 REM ## BASICA.EXE if UR l33t ##
10 for x$ = 1 to 10
20 print x$
30 next x$
40 print
50 print "Suck It Bitchez"
60 goto 40
Shadus
11-19-2010, 05:45 PM
What a bunch of noobs. Haven't any of you learned brainfuck yet?
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
All real programmers know cocaine as well, i mean the drug not the language... although thats a language too. All joking aside, all of the best programmers I know started with C/C++. It teaches the fundamentals well and teaches you advanced concepts that you won't pick up with say Java or a scripting language. Learning a basic level of asm won't hurt you either, but it's better to try once you have a good handle on a couple other languages, memory management, and operations in hex/binary. YMMV and it really depends on what you're doing... as one sysadmin to another, learn perl, shell, c/c++, python, and php... but honestly you'd be better diversifying your skills into other areas of the sysadmin/network admin/security/voip fields.
lesslucid
11-19-2010, 08:02 PM
...all of the best programmers I know started with C/C++.
But the OP is not striving to become one of the best programmers you know. He's trying to increase his employability in the short-to-medium term.
Mike O'Malley
11-19-2010, 08:18 PM
All joking aside, all of the best programmers I know started with C/C++.
Is this correlation or causation? Did these best programmers start with C/C++ because that's what was taught in school (my generation)? I hope that a lot of would-be programmers dabbled in their teens, but for quite a while C/C++ was the only option for a first imperative language in a formal curriculum. Hence, the "best programmers" would most likely have been exposed to C/C++ as a first language. The "worst programmers" would have been also.
In the last decade or so, Java has moved to fill that void (yay pun!), but it will produce just as many bad programmers as good.
Damien Neil
11-20-2010, 12:57 AM
All the best programmers I know started with BASIC, because that's what the C64 or Apple II that was their first computer came with. So there you have it: The best first language is clearly BASIC! :>
dermot
11-20-2010, 01:34 AM
BASIC on a C64 or Apple II, presumably?
WarrenM
11-20-2010, 02:14 AM
All the best programmers I know started with BASIC, because that's what the C64 or Apple II that was their first computer came with. So there you have it: The best first language is clearly BASIC! :>
This is actually an excellent point. We start with what we have. The best computer artists I know started off using a mouse in Photoshop ... because art tablets didn't exist. If they had, I'm sure they would have used them instead.
Timemaster Tim
11-20-2010, 04:05 AM
BASIC on a C64 or Apple II, presumably?
My first programming language was FORTRAN on an IBM 360 mainframe quickly followed by BASIC on a Commodore PET.
extarbags
11-20-2010, 04:56 AM
All the best programmers I know started with BASIC, because that's what the C64 or Apple II that was their first computer came with. So there you have it: The best first language is clearly BASIC! :>
I dunno, I think BASIC is a pretty good best first language. The syntax is a little more transparent than C-style languages, so it lets you focus on basic programming concepts instead. QBASIC (my first language) does lead you to never use functions of course, but obviously VB doesn't have that problem.
I don't think it ultimately matters that much what language you start learning programming in, except that it should be one that gives you a handle of the way you have to think through a program without bogging you down in its own specific syntax.
Nellie
11-20-2010, 08:46 AM
Right now i am fighting against VB.Net. Jezz, it makes some things so hard. I miss the old simple and straightforward ways of VB 6. As a programmer, i feel my time should be used in thinking a clever idea, not trying to implement the idea in the code and feeling as i am fighting against a current in a fast river.
Some day i am going to look at those newfangled languages like Ruby.
The step up from VBS/VBA or even VB6 to VB.net is pretty steep and I felt like that for a while. Once you get your head around the differences I much, much prefer the .NET way of doing things to be honest.
Do think that it is much easier to step down to VBA from .net than going the other way and on reflection, if I was doing it again, I'd go straight to C# over VB.net as I felt in many respects like I was starting again from scratch rather than making an incremental step forward with Visual Basic.
peterb
11-20-2010, 01:06 PM
BASIC on a C64 or Apple II, presumably?
The best thing about BASIC on the apple II was the vista that opened to you when you typed "CALL -151".
Wozniak++ for changing my life.
Eilonwy
11-22-2010, 09:58 PM
If you know nothing about programming and are a visual/hands on learner try Actionscript 3. Sure, you have to pay for Flash, but you'll be directly interacting with graphics and that can be key to picking up some concepts if you think you can't sit down and learn from a book by typing Hello World on a screen.
This will give you the basics of things like what a function is, what variables are, what they do, how they look when they're put together, how they interact, etc., in a very, very interactive and non-scary format. You're not going to run out and be able to then code in Python or Java or whatever, but it can help you build a really solid foundation that you can then leap off of to other platforms. I really, really recommend it for people who are just starting out, pick up a book of whatever language, and find themselves confused by terms and how things are relating. We had a lot of beginner students this year go from the Flash class to the Java class who say they never would have survived without it.
lesslucid
11-23-2010, 01:55 AM
How expensive is flash, now?
Eilonwy
11-24-2010, 06:36 AM
If you are a student or a teacher or know a student or a teacher, the academic version of Flash CS5 will run you about $170.
If you know nothing about programming and are a visual/hands on learner try Actionscript 3. Sure, you have to pay for Flash, but you'll be directly interacting with graphics and that can be key to picking up some concepts if you think you can't sit down and learn from a book by typing Hello World on a screen.
That's the reason why Processing (http://www.processing.org) is good. It's built for visual people (and it's free, too). The web-enabled javascript-driven (http://processingjs.org/) version of it just hit 1.0. I recommend at least taking at look at the original version (http://www.processing.org) of it. There are some cool projects to learn from (http://processing.org/exhibition/) and people like Ben Fry (http://fathom.info/), Daniel Shiffman (http://www.shiffman.net/), and Jer Thorp (http://blog.blprnt.com/) make a living using it. The best beginning programming book that I read was about Processing (http://www.amazon.com/Learning-Processing-Beginners-Programming-Interaction/dp/0123736021/ref=sr_1_1?ie=UTF8&s=books&qid=1290609953&sr=8-1). There is a TON of sample code at openprocessing.org (http://openprocessing.org/).
Looking back at earlier posts... have you thought about learning two languages at once? Perhaps Ruby or Python, since it's pretty easy to start using them in as simple scripting languages in the context of work, and then something more robust on top?
Zylon
11-24-2010, 10:21 AM
If you know nothing about programming and are a visual/hands on learner try Actionscript 3.
You have this backwards. For newbies/visual learners, use AS2. If you already have experience with programming, then you may smash your face against the Java-wannabe AS3.
Making a clickable button in AS2:
myButton.onRelease = function() {
// do something
}
Making a clickable button in AS3:
myButton.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
function mouseDownHandler(event:MouseEvent):void {
// do something
}
Blargh.
Eilonwy
11-24-2010, 05:05 PM
While AS2 is definitely simpler, I really think AS3 isn't that hard to grasp and since it is a java-wannabe, it makes moving over to java that much simpler if you can wrap your mind around it!
DocLazy
11-24-2010, 06:24 PM
C# is the way to go these days, followed by Java. Mainly because C# has a nice and easy IDE to use.
ckessel
11-24-2010, 07:14 PM
C# is the way to go these days, followed by Java. Mainly because C# has a nice and easy IDE to use.
Java has some killer IDE's and the Java community absolutely crushes the C# community. C# is a fine language, but pinning it as a better choice due to tools simply isn't true.
Mike O'Malley
11-24-2010, 08:01 PM
Crushes how? By sitting on them?
DocLazy
11-24-2010, 10:47 PM
Java has some killer IDE's and the Java community absolutely crushes the C# community. C# is a fine language, but pinning it as a better choice due to tools simply isn't true.
For beginners, C# is a better choice. It's much easier to get started with visual studio than something like eclipse. I found it much easier to use the command line for java than an actual IDE.
Coca Cola Zero
11-25-2010, 12:14 AM
You can do Flash programming without buying Flash (or anything) via the Flex SDK, mtasc (if you take Zylon's advice and go AS2 -- but don't do this) or haxe (which is, IMO, a better language than Actionscript 2 or 3 anyway).
Of course, this removes a lot of the benefit for people approaching Flash who aren't currently programmers, but if all you want to do is code in ActionScript or haxe and produce a swf, you don't need Flash.
WarrenM
11-25-2010, 03:09 AM
For beginners, C# is a better choice. It's much easier to get started with visual studio than something like eclipse.
I've been doing some coding this week for the first time in maybe 6 months and, yeah, C# is awesome. Combined with Visual Studio, you'd be hard pressed to find a better or more productive programming environment.
ckessel
11-25-2010, 07:24 AM
Crushes how? By sitting on them?
The quantity and quality of open source libraries just dwarfs it. That's not just me talking as a Java guy. My friends in the industry that do VS C++ and C# say the same thing. When they go searching for some library to do a common job, they'll find a bunch of Java versions, with active forums/mailing lists, and maybe, if they're lucky, an open source C++ or C# version. They've lamented this more than a few times when we have lunch and talk shop :) I tried to find a Google count comparison of libraries available, but couldn't. I did find lots of statements about Java's big advantage in open source (and in fairness, C# usually had the strength as a better designed language).
Further, if you look at Java offshoots (like Groovy), most all of them can read in other Java libraries since it's built on the same JVM. That means these newer languages come with a vast wealth of stuff that's compatible.
As to DocLazy's bit about getting started in an IDE, I haven't used the C# IDE so I can't comment. IntelliJ is great, but I've used it for too long to view it from a beginner's viewpoint. I do know most projects I've downloaded are pretty trivial to build. Unzip, point at the source directory, double click on the ant build target, and it's built. But that's sort of cheating as a comparison since it's not starting from scratch.
Zylon
11-25-2010, 07:35 AM
While AS2 is definitely simpler, I really think AS3 isn't that hard to grasp and since it is a java-wannabe, it makes moving over to java that much simpler if you can wrap your mind around it!
It's astounding to me how many people in this thread seem to assume that whatever language you start learning programming with will be the language that you're stuck using forever. This attitude makes about as much sense as forcing an artistically-inclined child to use oil paints instead of allowing them to use crayons.
Teaching and domain-specific languages are created for a reason, people.
Mike O'Malley
11-25-2010, 08:30 AM
Edit:
I was a dick.
ckessel
11-25-2010, 09:26 AM
Look Mike, if you want to find numbers, go ahead. A trivial Google search shows a ton of "anecdotal" evidence that the Java community kills the C# community. Several of the results are from C# guys expressing their "library" envy.
This is all largely based on experience for any post on this thread. If I can't bring my experience and that of my engineer friends into it, then there's basically nothing that can be posted here.
If you want to contribute, thing bring some god damn value rather than retreating to "internet guy" critiques about an opinion having no value without referenced studies. You're adding absolutely zero to the discussion. Fuck it, based on your post history, all you do is play internet critique. No point in seeing any of your posts again.
Mike O'Malley
11-25-2010, 09:31 AM
Edit:
CKessel, you're absolutely right. Sorry for throwing shit around.
ckessel
11-25-2010, 09:51 AM
Oh, for the original poster. Whatever way you go, I'd recommend getting an account on http://stackoverflow.com. Almost any question gets at least suggestions and most questions that aren't deviously niche related get answered within a few hours, if not minutes. The site is fairly noob friendly, since the people that answer the questions get "reputation" points and thus don't mind answering basic questions. Where as asking a noob question on a tool specific forum can sometimes get a more hostile RTFM type response (that varies dramatically by forum).
divorced
11-25-2010, 11:18 AM
Oh, for the original poster. Whatever way you go, I'd recommend getting an account on http://stackoverflow.com. Almost any question gets at least suggestions and most questions that aren't deviously niche related get answered within a few hours, if not minutes. The site is fairly noob friendly, since the people that answer the questions get "reputation" points and thus don't mind answering basic questions. Where as asking a noob question on a tool specific forum can sometimes get a more hostile RTFM type response (that varies dramatically by forum).
Excellent resource! Thanks!
Coca Cola Zero
11-25-2010, 01:20 PM
If you want to contribute, thing bring some god damn value rather than retreating to "internet guy" critiques about an opinion having no value without referenced studies. You're adding absolutely zero to the discussion. Fuck it, based on your post history, all you do is play internet critique. No point in seeing any of your posts again.
Wait a second -- where are YOUR referenced studies that show Java "kills" and "crushes" C#... whatever that means?
All of the engineers *I* know who are stuck programming in Java envy LINQ, proper generics, the parallel extensions (and now PLINQ) and the DLR, not to mention the upcoming async syntax features.
All of the engineers *I* know think the Java APIs are far too verbose, have way too much cruft due to years and years of deprecation of half-baked APIs that never should have been made part of the standard libraries
All of the engineers *I* know who program in Java are in an uproar about the Oracle aquisition of Sun and what it means for the future of Java as a viable independent language, particularly in light of the Oracle->Google lawsuit and the ASF's moves to basically cripple the Java Community Process in protest of Oracle's moves.
So fuck you, Java guy! (This part is intentionally inflammatory and meant as a joke. But seriously, you don't really have a leg to stand on with your argument so getting all uppity about Mike not having one either is ridiculous).
ckessel
11-25-2010, 03:35 PM
All of the engineers *I* know who are stuck programming in Java envy...
All of the engineers *I* know think the Java APIs are far too verbose...
All of the engineers *I* know who program in Java are in an uproar about the Oracle aquisition of Sun...
Those are all arguably true to a lessor or greater extent and have absolutely zero to do with my statement that the availability of Java libraries and the overall open source community dwarfs that of C#. Plus, you've intentionally changed my statement (in your quote) to mislead as if I said Java kills C#. I never said that. I said the community around it. You're arguing a _completely_ different topic.
It also has almost nothing to do with the OPs concerns. I'm never going to advise someone who is trying to learn a language for potential employment advantages to worry about something like LINQ. It's far to obscure to have any market advantage. I'd stick with the standards of Java, C++, and C# or one of the main offshoots and learn the core language.
If you want to argue about those other things you mentioned, I'll concede the point. One, because they're very valid points about Java. Two, because it'd add no value towards the OP's question.
Edit (damn it's hard finding any article talking about C# and Java that isn't ancient in tech terms):
http://www.claassen.net/geek/blog/tag/grasshopper
http://stackoverflow.com/questions/610199/the-art-of-programming-java-vs-c
http://freerepublic.com/focus/f-chat/2510872/posts
http://davybrion.com/blog/2009/04/at-this-point-id-prefer-java-developers-over-net-developers/
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Coca Cola Zero
11-25-2010, 11:03 PM
IMO, it makes zero difference whether the open/active Java community is bigger than C# or not as both are easily Big Enough.
If the options were between, say Java and D or Go (or C# and D or Go) size of active community might be a valid concern, but after a certain point bigger numbers of people in the community stop being of much real world benefit and both Java and C# are way past that point of critical mass.
Powered by vBulletin® Version 4.2.0 Copyright © 2013 vBulletin Solutions, Inc. All rights reserved.