Interested in programming. What should I learn?

InCogneato

[H]ard|Gawd
Joined
Nov 1, 2006
Messages
1,236
The most programming I've done is HTML, lol.

So what should I learn? Pros and cons of each language? Tips? Resources? Any details and all info would be much appreciated!
 
What kind of programming do you want to do? Web-based? Windows Forms? Do you want cross platform compatibility? Need some more info on what you would like to accomplish before we can really recommend much.
 
Not web-based, and cross-platform compatibility would be good though not a big deal. For now, I'm very interested in making applications for Windows, 64 bit. Would like to know the pros and cons of each language though to know what I'm getting into before hand.
 
It depends what you want to do with your newfound knowledge.
if you want to write small scripts to do things for you, i would recommend looking into Python. They have a decent Tutorial to get you started. Im not sure its targeted at non-programmers though.

If you want to write gui applications i would start thinking about Java / C#. I write java myself, and the C# syntax is fairly close. I dont know how you do
gui's in C# though.

Java has excellent documentation, including many Java Tutorials. With the free netbeans(included in some of the jdk downloads) IDE static gui's are pretty easy to create with drag & drop of components. To get
started i would recommend you download "JDK 6 Update 3 with NetBeans 5.5.1" from here: Java Download Page. I also see they have this page: New to Java Center but i havent looked into it much.
 
HTML is not programming.

What is the task your programs would complete. Programming languages are tools, and you pick the right tool for the job.
 
Thanks a lot guys. I've been doing a lot of reading and so far I am leaning towards Python.

I will also learn C/C#/C++ (don't know which yet) in the future as I read they are faster than Python (I love speedy apps) and also can cover ground that Python may not be able to.
 
That's false. Nice opinion though. Whether or not it's simple or dynamic doesn't matter.

It could go either way, some people consider it a programming language and others don't. Just because you consider it a programming language doesn't mean Whatsisname's opinion is wrong though.
 
I work as a software engineer in San Jose,CA and there are two separate paths that companies take while developing thick client applications. Either they work in J2EE or .NET framework, therefore it would be beneficial to do any of the two. Furthermore, with the advent of .NET framework 3.0 && 3.5 we are going to see the introduction of XAML which is essentially a competitor to Java's AJAX. Both are really exciting technologies and I guess you would find it a lot interesting to learn C#, XML, XAML and SQl Server 2005 based programming.

The best books to start with are the Wrox professional and beginner series which are abundantly available at amazon.com.
 
If you're a beginner to programming, it might be best to start off with something a bit easier to grasp, such as Visual Basic.

Starting off at Java or C# may be a daunting task if all you have is HTML under your belt.

And I also think HTML isn't a programming language. Hence the "ML (Markup Language)" in HTML,
A good read regarding it is here.
 
sorry for the incomplete statement, but I tried to tie the two main categories together.
 
I work as a software engineer in San Jose,CA and there are two separate paths that companies take while developing thick client applications. Either they work in J2EE or .NET framework, therefore it would be beneficial to do any of the two. Furthermore, with the advent of .NET framework 3.0 && 3.5 we are going to see the introduction of XAML which is essentially a competitor to Java's AJAX. Both are really exciting technologies and I guess you would find it a lot interesting to learn C#, XML, XAML and SQl Server 2005 based programming.

The best books to start with are the Wrox professional and beginner series which are abundantly available at amazon.com.

This is an extremely narrow-minded and incorrect view of the software industry as a whole.

That said, my recommendation for a first language to learn would be python. It is a good starting language because it was designed that way. It allows you to do trivial things very easily, and scales up as far as you want it to go. It's suitable for all kinds of scripting, GTK development on linux (not sure how good it's gui stuff is on windows), web application development, and pretty much whatever. It teaches you solid fundamentals of programming languages. And it's "good enough" to be one of the 4 languages that google uses (google only uses java, javascript, c++, and python).

There's absolutely no downsides to learning python first, and it will allow you to actually get things done more quickly. About the only argument that can be made is that, as a teaching tool, it doesn't get down to low level details enough by default. This is probably a mixed blessing, and you can learn it's C API when you are ready and expand from there.
 
That's false. Nice opinion though. Whether or not it's simple or dynamic doesn't matter.

It is? Am I wrong to expect the act of programming to result in a program? Since you can't write a program in HTML, how can using HTML be programming?
 
This is an extremely narrow-minded and incorrect view of the software industry as a whole.

There's absolutely no downsides to learning python first, and it will allow you to actually get things done more quickly. About the only argument that can be made is that, as a teaching tool, it doesn't get down to low level details enough by default. This is probably a mixed blessing, and you can learn it's C API when you are ready and expand from there.

I'm just recently starting some python for a project from many years of java, and the lack of types just screams at me as being bad :) Some people like it though, so now i've made it my mission to abuse the hell out of. Class not have the methods you want? dont subclass it! Add the methods in at runtime, but only to some of the objects! Now you have no idea whats what.

Which brings up one reason why it might not be a best first language, since the arguments to functions are not typed & if you are reading someone elses code to see how to do something, it may not be clear what "types" are actually being passed through the functions. And since you can add new vars without decleration you can cause bugs your compiler would have picked up for you :)

Python strikes me as cool as hell for small things, but from a large project maintainability perspective it weirds me out.

Of course since i suggested python in my earlier post, i shouldnt be talking.

edit: The one huge advantage to learning python as a first language is the interpreter, so you can just start typing lines of code and see IMMEDIATE results instead of having to worry about defining a class and compiling and such.

(and booo to whoever suggested VB. vb.net syntax from the 2 minutes ive seen it looks like a junk version of c#, so just do c# instead).
 
This is an extremely narrow-minded and incorrect view of the software industry as a whole.

That said, my recommendation for a first language to learn would be python. It is a good starting language because it was designed that way. It allows you to do trivial things very easily, and scales up as far as you want it to go. It's suitable for all kinds of scripting, GTK development on linux (not sure how good it's gui stuff is on windows), web application development, and pretty much whatever. It teaches you solid fundamentals of programming languages. And it's "good enough" to be one of the 4 languages that google uses (google only uses java, javascript, c++, and python).

There's absolutely no downsides to learning python first, and it will allow you to actually get things done more quickly. About the only argument that can be made is that, as a teaching tool, it doesn't get down to low level details enough by default. This is probably a mixed blessing, and you can learn it's C API when you are ready and expand from there.

Want to add my vote for python (or ruby, close to the same for the basics anyways) as a good starting point for beginning programming. Theres a good number of tutorials out there for them.

I would like to disagree with you though and say a good portion of the dev industry IS headed toward a good deal of Java and .Net development. I recently went to a job fair at my college, and the only programming languages I saw on every booth (some exclusively) were either C#/VB.NET or Java. Both languages are pretty well documented and have a large number of prebuilt components for them, so I can't blame them for using them.

Personally, I enjoy Ruby and Python above all other languages though, if for nothing else the simplicity of code and the immediate results.


Also, HTML is in no way a programming language.
 
On the java note, bruce eckel had been making his "thinking in java" book available for free as a download. You can still get the 3rd & previous editions at one of his websites: Bruce Eckel's MindView Inc. I've heard its a good book. I haven't read it though. It might help you with new to programming things that the web tutorials skip.
 
If you are going into college as a computer science student you will most likley take three programming courses. C++, Java and .NET . After those three its really up to you which one you want to use for the rest of your courses, but make sure to get really good at one of them (I choose C++ because I had experience with it before college). Although alot of higher level course descriptions sounds like "Oh, at least I don't have to program" its not true. I have written code for every single Comp Sci class I have taken (and I graduate in may). Everything from Operating systems to Algorithms, to Databases require knowledge of some programming so never think that you are done with programming just because you finish the class titled as programming. That was my biggest mistake in college, and it took me a while to catch up and get back on track.


As to your initial post I would choose C or C++, the syntax is pretty easy to pick up and you can run it in the command line with no troubles.


Good luck!
 
Have HTML make a decision for me please.

The difference is in the definition of "programming." HTML is a language, you write something, something interprets it and spits up some output -- you don't need conditionals for something to be a language, in my opinion. Is it particularly useful for doing _everything_? Of course not -- it's simple and very limited, but it's still a language that's interpreted somehow and output is given via visuals.
 
It is? Am I wrong to expect the act of programming to result in a program? Since you can't write a program in HTML, how can using HTML be programming?

Just because it doesn't compile into native code or have some lengthy runtime doesn't mean it isn't a program. A program defines some input and some output. In this case, you give an interpreter some markup and it spits out some visual output. Sure, it isn't a calculator or an operating system but it's still a program; it just so happens that for it to "run" it has to be interpreted by another program. Narrow scope, sure. That's MO, anyway.

Anyway, we should probably discuss this outside of this thread so this fellow can get his answer.
 
Just because it doesn't compile into native code or have some lengthy runtime doesn't mean it isn't a program. A program defines some input and some output. In this case, you give an interpreter some markup and it spits out some visual output. Sure, it isn't a calculator or an operating system but it's still a program; it just so happens that for it to "run" it has to be interpreted by another program. Narrow scope, sure. That's MO, anyway.

Anyway, we should probably discuss this outside of this thread so this fellow can get his answer.
By this logic I am programming every time I write something in open office or paint something in a paint program or type this reply.
 
By this logic I am programming every time I write something in open office or paint something in a paint program or type this reply.
bad comparison and horrible logic. in word or paint what you input is what you get. if you type you get the same thing you typed in the output. if you draw a line in paint you get a line in your output. in html when you type you get interfaces designs layouts interaction and more in your output.
 
no, a program is a set of instructions. HTML is a Markup Language, not a programming language.

Just because it doesn't compile into native code or have some lengthy runtime doesn't mean it isn't a program. A program defines some input and some output. In this case, you give an interpreter some markup and it spits out some visual output. Sure, it isn't a calculator or an operating system but it's still a program; it just so happens that for it to "run" it has to be interpreted by another program. Narrow scope, sure. That's MO, anyway.

Anyway, we should probably discuss this outside of this thread so this fellow can get his answer.
 
HTML/XML are markup languages, as their names imply. but if you do HTML and wanna call yourself a programmer/hacker that's all well and good. or you can just settle on the more generic term "coder"
 
The best advice I can lend you is to look up areas of interest (job opportunities) and see what they are looking for as qualifications. J2EE and .NET seems to be popular. Also, active scripting/flash is a good migration point if you like programming websites.
 
The distinction you all are looking for between HTML and C/Python/Fortran/etc is Turing completeness. HTML is not Turing complete.

i wouldnt even go that far... if you have a language that could only be used to program an algorithm that can be handled by a push-down automaton or finite state transducer (neither of which have the same power as a [universal] turing machine) i would call that programming as well.

html itself covers nothing in Chomsky hierachy, but an arbitrary markup language could be used to handle a subset of computable functions...but its usage would be drastically different that what a browser does with html code

i would use similar criteria to distinguish certain scripting languages from programming languages
 
This topic has gone a bit off-topic eh?
All he wanted was recommendations of a good beginner language to learn. lol
 
Back
Top