views:

145

answers:

7

When I first started out in programming, the first technology I learned was C++. I got a little disheartened with it because I had to put in a lot of effort to get a rather crappy result.

Once I learned PHP however, that quickly became my favourite language because I could get stuff to render on my web page straight away and get some cool stuff out the door.

So my question is this: what technologies would be best for someone just starting out?

Something to get them interested and motivated to learn more? If someone started learning database stuff, then how transferrable would that be to business-logic? If you start them out on something like HTML, they may get delusions of adequacy before realising programming is not really for them.

So in your opinion, where would be the ideal place to start at the beginning of the journey into becoming a well rounded developer?

A: 

Python is far and away the best language for beginners to learn. The 'hello world' program is just

print "hello world"

Which is as easy as they come. You can easily teach basic programming practices in python, and there are plenty of examples on the web. The extensive library support of python means you can get beginners started in making games right away (using pygame). Pretty much everyone who has considered being a programmer has wanted to start with games.

I'd argue that the next best language to learn is some sort of assembler language. It won't be as instantly rewarding (i.e. the applications you write won't be as cool) but it'll give you a much more solid understanding of what's going on 'under the hood', which is essential to good programming.

Once you understand the fundamentals of programming (as taught through python) and the guts of how things work (as taught through machine language) you can go pretty much anywhere.

Mark P Neyer
I would say the opposite. Do some C/Pascal to have really solid understanding of what's really going on the computer, then go on a higher-abstracted language, as java/c#/python.
Clement Herreman
A: 

I started programming with ADA... but any language could do the trick for you.

C++ is a bit complicated, but has all the concepts you'll need and you can start coding without understanding all of them (I did my first c++ project without even knowing the existence of templates :\ ). I noticed that people in the US like Java since it's quite simpler than C++ for the basics and has the Eclipse IDE which is very helpful.

If you like web, I'd recommend coding with PHP 5 and use objects. Then move on to a framework such as Zend or CakePhp. Once you're familiar with php, consider learning new languages in that area such as Ruby on Rails.

If the technology you pick is too complicated, you might just end up giving up and that's not helpful. So you need something that you could use for hours while enjoying it. Therefore, if you like web stuff, I wouldn't recommend learning C++. But keep in mind that web development can be done in a really crappy and terrible way, so read up on best practices, Object Oriented Programming, design patterns and so on. You don't want to code for a year and then discover that your code is not maintainable and that you took bad habbits.


My personal biased opinion: Learn Ruby. It's elegant, pretty simple to use and has all kind of really helpful concepts. The syntax is clean and straightforward in most cases and it is directly applicable to web development.

Some snippets from wikipedia:

puts "Hello World!"

File.open('file.txt', 'w') do |file| # 'w' denotes "write mode".
  file.puts 'Wrote some text.'
end                                  # File is automatically closed here


puts "What's your favorite number?"
number = gets.chomp
output_number = number.to_i + 1
puts output_number.to_s + ' is a bigger and better favorite number.'

# Everything, including a literal, is an object, so this works:
-199.abs                                                # 199
"ruby is cool".length                                   # 12
"Your mother is nice.".index("u")                       # 2
"Nice Day Isn't It?".downcase.split("").sort.uniq.join  # " '?acdeinsty"
marcgg
You forgot to say "elegant".
MusiGenesis
My bad. Here, it's fixed :)
marcgg
A: 

If we're talking about a hobby, I would say do what interests you. Do you want to create dynamic website? PHP is probably a good place to start. Do you want to write a game? You're probably back to the general purpose arena. Find something fun and go nuts.

If we're talking about the educational system, I think a good general purpose language is the place to start. C, C++, Python, and Java all have good arguments in their favor. The point of this is not to create interest, but to enable a wide variety of work and study (Data structures, algorithms, etc.).

Steve S
A: 

If you want to learn the bases of programming I would start with an interpreted language, like Python. Make small programs, test different algorithms. Then interface with a database and learn SQL. This should give a solid foundation that you can apply in other areas. You can expand your knowledge later on with HTML, Javascript, CSS.

rslite
+2  A: 

Python.

  • Nice easy syntax.
  • Will ensure some cool result's.
  • Will ensure good practices for future projects.
  • Easily do web-dev with a framework.

Not to mention the community is very helpful and the style PEP teaches all round good stuff.

Chazadanga
+2  A: 

BASIC (Beginner's All-purpose Symbolic Instruction Code).

You may laugh but it's easy to learn, quick to get results, and introduces some of the most basic concepts of programming right off the bat.

Once you get the hang of BASIC, you can move on to more complex languages...and you already have your foundation laid for you.

Justin Niessner
That is what I started with (and how most courses started as well), but I'm not sure that that is still the best choice.
crashmstr
Why not? Still plenty of open source implementations out there and, the last time I checked, the basic concepts of programming haven't changed since...well...back in the day?
Justin Niessner
A: 

My first programming language was Haskell. That was a good place to start for me because it let me think about how computation and programming work before tackling a specific application like the web.

I think a "getting things done" language like PHP is also good to learn early on, but it needs to be balanced with experience of another programming language. Until you study more than one language it's hard to distinguish between "coding" and "coping with the idiosyncracies of X".

ctford