PDA

View Full Version : Recommended programming language for newbies?



bored2k
March 16th, 2005, 08:19 PM
I have close to zero knowledge on programming and started reading some C books. But I read somewhere that's not a good place to start, specially for a *nix user.

So to all you Gurus, wich program should I start with and [if possible] can you link me to a good "X" language guide ?

bored2k

unkwn
March 16th, 2005, 08:46 PM
I have close to zero knowledge on programming and started reading some C books. But I read somewhere that's not a good place to start, specially for a *nix user.

So to all you Gurus, wich program should I start with and [if possible] can you link me to a good "X" language guide ?

bored2k
http://www.python.org/doc/Intros.html
http://www.python.org/doc/current/tut/tut.html
http://diveintopython.org/toc/
http://hetland.org/python/

az
March 16th, 2005, 08:57 PM
"specially for a *nix user."

Huh? Some of the same people who made Unix, made C.

ssam
March 16th, 2005, 09:01 PM
on my physics degree we had a module in programing and they thought C was a good idea. for people who hadn't programmed before it was a very scary start.

it mostly depends on what you want to do. if you want to make interactive webpages then learn javascript. if you want to automate linux then learn bash. if you want to write a kernel then C. most gui programs are writen in C or C++.

I learnt to program in BBC BASIC. it is very little use for doing any real programs today, but it was a very good introduction. I recoment you try a high level interpeted language first, to learn all the concepts. Then if you want to learn C you know what variables and various types of loops do etc.

posably python

Once you know one programming language it is easier to learn more. A good programmer is one that understands how a program should be structured, what data need to be where, how to interact with users, not the syntax of every single C library function.

wtd
March 17th, 2005, 12:11 AM
I think Ruby's a fantastic language to start with, and there are a number of good resources online for learning it. I'd list some, but you'll probably get more and better results just hitting Google. :)

I'm also really liking Haskell lately.

bored2k
March 17th, 2005, 12:14 AM
Ive been hearing good things about python. I think I'll give it a shot.

thanks y'all.

kleeman
March 17th, 2005, 04:01 AM
No!!!! Use FORTRAN: better by a country mile! 8) 8) 8)

bored2k
March 17th, 2005, 04:11 AM
No!!!! Use FORTRAN: better by a country mile! 8) 8) 8)
... Im going to give Python a shot until proven by -several- people that there's better for newbies [for newbies, not overall] .

jayded
March 17th, 2005, 04:16 AM
... Im going to give Python a shot until proven by -several- people that there's better for newbies [for newbies, not overall] .
Python or Ruby are good places to start.

bored2k
March 17th, 2005, 04:19 AM
Python or Ruby are good places to start.
Ok ... so far Python's up like 6 - 1 [this thread , others , websites] .

kleeman
March 17th, 2005, 04:27 AM
I was only joking :evil: . FORTRAN IS pretty simple and a good place to learn how to code but python is probably a better all round choice unless you do lots of science stuff.

telmo
March 17th, 2005, 04:29 AM
I'm also going for that... I'm so lame that i don't think i should start with C. I have C# manuals, but when i look at them... [-( They're HUGE!

bored2k
March 17th, 2005, 04:33 AM
I'm also going for that... I'm so lame that i don't think i should start with C. I have C# manuals, but when i look at them... [-( They're HUGE!
I too have C books. The size is not the real factor as it is one page at a time. Its just that I feel like its not for complete newbies. Like they go from a simple echo command to like debugging like crazy :-S .

telmo
March 17th, 2005, 04:38 AM
I know exactly what you mean! When i was young (I'm not anymore! :( ) i had lots of fun with basic; pascal; and stuff like that... but i never tried C! I think that if i'm going to start playing around again, it should be with something easy to start with so i can get the pace.

wtd
March 17th, 2005, 08:54 AM
... Im going to give Python a shot until proven by -several- people that there's better for newbies [for newbies, not overall] .

Python is an ok place to start, and it seems decentenough until you learn something like Ruby. After that, Python's OO features feel like they've been crudely tacked on. The language's "there's one right way to do it" mentality also tends to limit the expressiveness of code.

You should learn it.

But you should learn others too, so you don't become the kind of person who raves about Python being the greatest thing since sliced bread without trying out anything else. I know the perils of that, since I once was there myself. :)

bored2k
March 17th, 2005, 08:56 AM
Python is an ok place to start, and it seems decentenough until you learn something like Ruby. After that, Python's OO features feel like they've been crudely tacked on. The language's "there's one right way to do it" mentality also tends to limit the expressiveness of code.

You should learn it.

But you should learn others too, so you don't become the kind of person who raves about Python being the greatest thing since sliced bread without trying out anything else. I know the perils of that, since I once was there myself. :)
Thanks for your 2 cents . Hoping I learn various languages, not only .py

dusu
March 17th, 2005, 09:35 AM
I know exactly what you mean! When i was young (I'm not anymore! :( ) i had lots of fun with basic; pascal; and stuff like that... but i never tried C! I think that if i'm going to start playing around again, it should be with something easy to start with so i can get the pace.

If you're not young any more, what should I say :cry:
I see that somehow we have followed the same path : basic, pascal, but then I turned to fortran and then C (I needed it to make calculations for my job...).

To learn the basics of C is not so hard. I've read in one of the posts that C books are much too big : just give the Kernighan-Ritchie a try !! This one is way too small !

I've never tried python, but I think I should also go for this.
In any case, it's quite strange that the python package is installed by default in Ubuntu, whereas C is not... is it because python is better for newbies ?

jamin_l
March 17th, 2005, 11:13 AM
In any case, it's quite strange that the python package is installed by default in Ubuntu, whereas C is not... is it because python is better for newbies ?

It's because of Python's popularity, especially in the Gnome community. At least some of the utilities present in Ubuntu require Python to be present.

godot
March 17th, 2005, 11:55 AM
I have to give my vote to Ruby too. It's easy to use as a simple scripting language and ignore all OO, but then the Objected Oriented side is so pure that it's good at teaching how to think in an OO way. Also, for gui programming in Ubuntu, the ruby-gnome2 bindings are very well documented.
Some people think that ruby is useless because python is already popular.... but I just love it too much :)

JeffS
March 17th, 2005, 10:39 PM
Start with a scripting language like Perl or Python. Of the two, Python is probably easier to learn, and Perl is the more powerful / expressive. But both are easy. And with a scripting language, you don't have to compile, or worry about memory management, or variable data types. So the learning curve is pretty shallow. Just type your code and run it.

But once you're comfortable with programming in gerneral after the gentle introduction of scripting, definetly learn C and/or C++. If you're using Linux (most likely since you're posting here at the Ubuntu forum), Unix/Linux are built on C. The kernel is in C, the shells are written in C, most of the utilities are written in C. GTK+ and Gnome are written in C. C does everything, and does it very well. C is very efficient. But C is dangerous as well. But in any event, frankly all programmers should learn C at one point or another. And once you are used to C, and pointers and memory management and manipulating data bits, coding with it becomes quite fun. It's like you've been given a precision instrument, after having used the blunt instruments of higher level languages. It's like going from Ford truck to a Porche (C).

And once you are ready to learn/code C, most definetly get the book "The C Programming Language" by Brian Kernighan and Dennis Ritchie. This is not only best C book available, it is regarded by many to be the greatest programming book of any kind, of all time. Reading this book, and doing the turorial at the beginning, and doing some if not all of the exercises, will not only make you a solid C programmer, but will make you a much better programmer over all.

bored2k
March 18th, 2005, 12:33 AM
Start with a scripting language like Perl or Python. Of the two, Python is probably easier to learn, and Perl is the more powerful / expressive. But both are easy. And with a scripting language, you don't have to compile, or worry about memory management, or variable data types. So the learning curve is pretty shallow. Just type your code and run it.

But once you're comfortable with programming in gerneral after the gentle introduction of scripting, definetly learn C and/or C++. If you're using Linux (most likely since you're posting here at the Ubuntu forum), Unix/Linux are built on C. The kernel is in C, the shells are written in C, most of the utilities are written in C. GTK+ and Gnome are written in C. C does everything, and does it very well. C is very efficient. But C is dangerous as well. But in any event, frankly all programmers should learn C at one point or another. And once you are used to C, and pointers and memory management and manipulating data bits, coding with it becomes quite fun. It's like you've been given a precision instrument, after having used the blunt instruments of higher level languages. It's like going from Ford truck to a Porche (C).

And once you are ready to learn/code C, most definetly get the book "The C Programming Language" by Brian Kernighan and Dennis Ritchie. This is not only best C book available, it is regarded by many to be the greatest programming book of any kind, of all time. Reading this book, and doing the turorial at the beginning, and doing some if not all of the exercises, will not only make you a solid C programmer, but will make you a much better programmer over all.
Thanks a lot JeffS, I'll keep this in mind :) .

Rottweiler
March 18th, 2005, 01:19 AM
Python.

Easy to learn. Easy to use. Powerful. Robust. Multiplatform. Excellent documentation. Module library is deep and wide. Great community. Easy to master. Impossible to outgrow.

JeffS
March 18th, 2005, 09:10 PM
Python.

Easy to learn. Easy to use. Powerful. Robust. Multiplatform. Excellent documentation. Module library is deep and wide. Great community. Easy to master. Impossible to outgrow.

Well said. Python is all those things (although I haven't used it much yet). I still maintain that after one gets comfortable with Python any other scripting language, one should learn a compiled language, particularily C.

DirtDawg
March 18th, 2005, 09:21 PM
Python.

Easy to learn. Easy to use. Powerful. Robust. Multiplatform. Excellent documentation. Module library is deep and wide. Great community. Easy to master. Impossible to outgrow.

Aye!, Me agrees wholeheartedly with the dawg. Arrrrr....

Rottweiler
March 19th, 2005, 01:53 AM
I still maintain that after one gets comfortable with Python any other scripting language, one should learn a compiled language, particularily C.Absolutely.

And I'd vote 'c' as the best choice.

defkewl
March 19th, 2005, 02:23 AM
You'll get various kind of answers depending on who you're talking to. I'd say C/C++ is a good place to start then after that you can move on to Java.

jamin_l
March 19th, 2005, 05:39 AM
You'll get various kind of answers depending on who you're talking to. I'd say C/C++ is a good place to start then after that you can move on to Java.

I'd say you should choose either C or C++. They're both distinct languages, and using C idioms in C++ is a very bad (but common) mistake.

elwis
March 19th, 2005, 08:54 AM
Id say Python all day long. But to be honest.
I was one of those playing around, Basic on the Redmond OS, some Bash on old Red hat 5. Then I did some PHP, some C, some C++. I liked Python best though.

Anyway, recently i finished off 3 university courses in Java, and I can't say how many those "heureka" experiences were. With these copurses in my pocklet, I understand everything else a lot easier.. especially OOP of course.

A fun thing might be, with all this knowledge in Java, I tend to like Python even better :)

defkewl
March 19th, 2005, 06:09 PM
I wouldn't recommend Python all day long. I admit that Python has some strong values but it's practical and weakly typed language. Try using strong typed programming language so you know the basic of programming. Just my opinion. It might me wrong.

elwis
March 19th, 2005, 06:44 PM
Well, I would add, that whatever program language you learn, then try to learn another one, cause then you would see the differences.

But hey, Eric S Raymond says one should learn a new language every year ;)

garyng
March 19th, 2005, 07:31 PM
Perl.

BTW, I don't agree with another poster that one need to get into compiled language like C/C++. Perl/Python etc. is on almost any linux and they are much easier to work with.

Quest-Master
March 22nd, 2005, 03:06 AM
Truly, I haven't yet seen what Ruby offers over Python. I use Python for almost everything now, and soon for web stuff as well (bye PHP!).

Ruby on Rails has gained a ton of popularity lately, and Ruby just overall seems to be picking up speed.

elwis
March 22nd, 2005, 07:34 AM
I've also played with python on the web, using Zope and checking out Webware. Now I think I found my golden mine with snakelets though...

defkewl
March 24th, 2005, 08:01 AM
Well, I would add, that whatever program language you learn, then try to learn another one, cause then you would see the differences.

But hey, Eric S Raymond says one should learn a new language every year ;)
Yeach learn new language each year and you'll end up nowhere.

TjaBBe
March 24th, 2005, 11:05 AM
In my opinion, when you have learnt de basics of programming with whatever language, it is allways easy to get used to another language... It's then just a matter of practice, getting used to the syntax and some differences in functions...

wmcbrine
March 24th, 2005, 09:03 PM
Like everyone of my generation, I first learned to program with the built-in BASIC of 8-bit micros. (This is nothing at all like, say, Visual Basic today.) In my case it was Sinclair BASIC. What I like most about it, in retrospect, is the instant feedback: type a command, get the results immediately. So you can build up a program gradually, checking each part as you go. The syntax is also very loose, which may not promote "structured programming", but is much easier for a beginner to work with.

Recently, I've been thinking about what the modern equivalent would be. Where should kids today start out? Where can they? I'm hard-pressed to come up with an answer. Maybe JavaScript. But even the simplest system of today is a lot more complex than those old 8-bits, and it's impossible to get the same kind of grasp of the machine now as we did then. Just getting started is much harder, I suspect.

I've never really looked into Python. With all the recommendations in this thread, I'll have to check it out. It would be great to find something modern that I could teach kids to get them started.

BTW, like many of my generation, my second language was assembly. This is something I think everyone should learn, even if it's not broadly useful today, because it teaches you how the machine actually works. The opcodes change from one processor to another, but the concepts remain the same, and knowing them helps you write better code in any language.

Rottweiler
March 24th, 2005, 09:35 PM
Like everyone of my generation, I first learned to program with the built-in BASIC of 8-bit micros. (This is nothing at all like, say, Visual Basic today.) In my case it was Sinclair BASIC. What I like most about it, in retrospect, is the instant feedback: type a command, get the results immediately. So you can build up a program gradually, checking each part as you go. The syntax is also very loose, which may not promote "structured programming", but is much easier for a beginner to work with.

Recently, I've been thinking about what the modern equivalent would be. Where should kids today start out? Where can they? I'm hard-pressed to come up with an answer.I don't mean to over advertise Python, but it excels at this (aka as a "teaching" language), but yet has all the "grown up" features of most any other OO language. If you're serious about this, get them a copy of 'Learning Python' by Lutz/Ascher from O'Reilly. It starts out with the very basics but goes deep enough to challenge a fast learner.


BTW, like many of my generation, my second language was assembly. This is something I think everyone should learn, even if it's not broadly useful today, because it teaches you how the machine actually works. The opcodes change from one processor to another, but the concepts remain the same, and knowing them helps you write better code in any language.Couldn't agree more. Tho it would be nice to be able to learn this on something approachable like an 8051 or something with a simple but elegant instruction set like the old PDP-11. The 80x86 instruction set leaves no doubt about what the first 'C' in CISC stands for.

Nis
March 24th, 2005, 09:45 PM
I don't mean to over advertise Python, but it excels at this (aka as a "teaching" language), but yet has all the "grown up" features of most any other OO language. If you're serious about this, get them a copy of 'Learning Python' by Lutz/Ascher from O'Reilly. It starts out with the very basics but goes deep enough to challenge a fast learner.

Couldn't agree more. Tho it would be nice to be able to learn this on something approachable like an 8051 or something with a simple but elegant instruction set like the old PDP-11. The 80x86 instruction set leaves no doubt about what the first 'C' in CISC stands for.
What's more with Python is that it enforces good code indentation. Not only is it required in Python but it makes your code more readable and easier to understand. Get into a good habit early to properly indent (even if the language doesn't require it). Python teaches you this.

Arto
March 25th, 2005, 12:08 AM
Having experience with all of the languages mentioned in this thread (save for Ruby), my vote is, definitely, for Python. It's not only easy to start out with, it's enjoyable to live with as well. It's also widely used and help and advice is plentiful and easy to come by.

Here's a couple of articles that might be relevant: Why Python? (http://www.linuxjournal.com/article/3882) by Eric S. Raymond and The Python Paradox (http://www.paulgraham.com/pypar.html) by Paul Graham

As another poster mentioned, once you've grokked the basic concepts of programming, learning new languages is not too difficult. Certainly no one tool is well suited for every task, and it makes sense to know many languages for many purposes: for web coding, learn PHP, XHTML/CSS and JavaScript as well; for quickly creating desktop business apps on Windows, Visual Basic or Delphi/Object Pascal are great; for AI programming or just as a mind exercise, study LISP (http://www.paulgraham.com/lisp.html).

I strongly disagree with the posters that adviced you to get started with C (or C++) [-X As Raymond, incidentally, says in the article I linked to above:


One course I did not consider was going back to C as a default language. The days when it made sense to do your own memory management in a new program are long over, outside of a few specialty areas like kernel hacking, scientific computing and 3-D graphics--places where you absolutely must get maximum speed and tight control of memory usage, because you need to push the hardware as hard as possible.

Learning C and assembler language is a fun experience, but it's not the place to get started. While I still do some C programming occasionally, it's only as a last resort if a higher-level language isn't suited to the task at hand (say, driver programming; can't really do that in Python :shock: )

Arto
March 25th, 2005, 12:35 AM
And once you are used to C, and pointers and memory management and manipulating data bits, coding with it becomes quite fun. It's like you've been given a precision instrument, after having used the blunt instruments of higher level languages. It's like going from Ford truck to a Porche (C).

I'd say a closer analogy would be that of going from an automatic transmission (Python) to a stick shift (C) :-k That is, unless performance driving, or fuel economy, is part of the program, there's, strictly said, no use for the stick shift. For everyday driving, an automatic is more comfortable and requires less effort. In the same way, coding in a high-level language is faster, if you actually want to focus on getting things done with minimum effort, instead of the, somewhat masochistic, "perceived fun" of a low-level language.

If measured in programmer productivity the Porsche would certainly be Python ;)

msgyrd
March 25th, 2005, 07:19 AM
<---is a Computer Science undergrad.

After reading the thread, I would like to point out that most programming books are large and scary looking(I own dozens). They are likely not difficult, but merely filled with examples of syntax. If you're an experienced programmer, you would rather have the book that showed that extra syntax, than the book that tried to reteach how a loop works. However, most do both, and thats why they are huge.
Learning any language is easy if you get the right book. For a beginner, you probably need one of those large scary books, and then a really good theory book that has good explanations and psuedocode. If it's not been said before, the reason interpretted high level languages are more popular is because they are more like psuedocode. You spend less time worrying about formatting, syntax and the gritty details, and more time making things happen.
I started with C++ in college, but have picked up C, python and Bash scripting, and would agree that you'll be happiest starting with python. If you're not a professional programmer, it will probably do most everything you need, the learning curve is easier, you'll be able to make things happen faster, which will probably encourage you to stick with it (unline trying to learn C syntax as a first language on your own). So, stick with the concensus of the thread.

Mike Douglas
March 28th, 2005, 11:18 AM
I wouldn't recommend Python all day long. I admit that Python has some strong values but it's practical and weakly typed language. Try using strong typed programming language so you know the basic of programming. Just my opinion. It might me wrong.
$ python
>>> 3 + "hello"
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: unsupported operand type(s) for +: 'int' and 'str'

Python is not weakly typed language.

domzo
April 21st, 2005, 09:28 AM
I expect defkewl meant that Python is a dynamically typed language (ie the types are determined at runtime (or is it compilation time - who knows? :smile: ). I would agree that this is possibly a weakness of Python as a learning language. What's more you'll get used to it, and then when you come to use other languages and then have to declare the type of each variable you'll find it a real pain.

Having said that Python's other benefits probably outweigh this.

I've used various languages and I'm now learning C++ for a current (open source!) project at work and it's a real pain to learn - pointers and all that nonsense ](*,) . I wouldn't recommend it as a place to start.

Stiopa
April 22nd, 2005, 07:19 PM
I have been reading something on Python. Ada and C++ and passive as it is, I have some newbish, but still an idea of them. Python and Ada seem to be extremley readable, so I hope to get into them more in free time, as it is free time when I'm devoted to computers.

But there is one thing I'm missing about just reading books, ie. practice. I've been looking for some nice sites with some interesting code I could tinker with, which is commented well, but without much success. Do you know some that you would like to share?

jdonnell
April 22nd, 2005, 08:14 PM
But there is one thing I'm missing about just reading books, ie. practice. I've been looking for some nice sites with some interesting code I could tinker with, which is commented well, but without much success. Do you know some that you would like to share?

If your using python you can look at the code for the python modules in it's library. It is open source :)

Arto
April 22nd, 2005, 10:00 PM
...What's more you'll get used to it, and then when you come to use other languages and then have to declare the type of each variable you'll find it a real pain.

That's the point :grin: Why use languages that are overly verbose, cryptic or require you to jump through hoops (unless your employment requires you to)? Python is a great language to start learning programming, and what's more, to keep on going.

jerome bettis
April 24th, 2005, 08:01 AM
in my opinion all programming languages are the same. they all employ the same type of basic logic and control flow, but they just have different ways of doing it, and different features.

if i were trying to get started programming, i would start with basic. it doesn't get much easier than that. pascal is a lot like basic, but adds a few things on top of it. i would say C / C++ is relatively difficult, mostly due to pointer syntax, header files, etc etc. C++ does a lot of funny things which i don't claim to know. but if you can program in a language like pascal, C should not be too much more difficult. Java is actually relatively simple to learn, and is a pretty good language for a newbie. i'm told python is similar to java, some day i'll learn this myself.

the bottom line is, if you can learn to program in any one language, you will be able to do just as well in any other. a lot of university CS programs have a bunch of classes that just teach different languages. this is really stupid in my opinion. instead of teaching C / java / php / c++ / c# / sql / perl / etc etc just teach one language, but teach a lot of different concepts (compilers, architecture, operating systems, etc) in this language. later on, when you want to learn a new language, it shouldn't take more than 2 days to a week.

also at some point it is very beneficial to learn an assembly language. when you're programming in a high level language like C, and you know how the compiler and OS work underneath, you'll be able to answer the question "how much machine language is actually going to be executed here?" and write your program based on the answer to that.

my 2 cents

defkewl
April 25th, 2005, 03:49 PM
Unix is identic with C and Perl :D

sas
April 25th, 2005, 07:28 PM
SQL shouldn't really be lumped in with the others imo. It may be another programming language, but it's a rather specialised one that almost everyone will end up using....I do agree with you though, there should be more concentration placed on the theory....on my CS course we had classes on Java (OO), C (procedural) and general algorithmics in the first year....now we have classes on different subjects and they all use different languages but we are not taught the syntax we are expected to just adapt to it, with the exception of SQL and asm....Quite a nice way of doing it I though, we get exposed to different languages and class libraries this way, but aren't wasting class time on them.....As for ASM classes....well I just regret ever taking them.

Merc248
May 2nd, 2005, 06:32 AM
Currently, I'm a first year undergrad CS/Math student. At my school, we're primarily using C++ (although there is a higher level class dedicated to assembly languages, and some bastardized classes for engineering students that deal with C and I think FORTRAN). After trying to read various C++ books before actual formal instruction, I just couldn't understand C++ at all (of course, I was using the C++ for Dummies book, which is just... absolutely horrible). After a few lectures in the first quarter class though, I picked it up fairly easily... it doesn't seem all that hard of a language to pick up, actually.

There are a couple of books that I picked up (two for my low level CS classes, one for personal use): "C++ How to Program" by Deitel, "Data Structures and Algorithms In C++" by Drozdek, and "Problem Solving, Abstraction, and Design Using C++" by Friedman and Koffman (the latter two being CS required material in my school). I really recommend "C++ How to Program" -- extremely good code examples; thorough explanations of concepts; pointers on software engineering techniques, performance considerations (and how that affects software engineering practices), and common coding pitfalls; good coverage on OOP; etc.

Oh yeah... I haven't personally programmed in Java yet, but at least to me, it doesn't seem like a good language to start with, mostly because it seems to have a lot of what C++ has, minus memory management and some other stuff. But hey, I'm only a first year CS student, what do I know? :p

goofrider
May 2nd, 2005, 12:22 PM
Call me crazy, but I think Visual Basic is great for newbies.

Simple, nice IDE, event-driven design. It's a really powerful tool for newbies because they can just draw windows, write code and have some nice looking GUI HelloWorld in minutes, while learning about event-driven architeture at the same time.

I like to think of VB as a GUI Perl: most people say they can't stand it, yet they use it because it gets the job done quickly.

Flame on.

I won't argue that VB has some terrible language design and it's not entirely OO. I'd stressed that any newbie should move onto a REAL language as soon as they understand the very basics of iterative programming.

I love Python and Java, I think they're very good languages for OOP newbies. But I see a lot of people can't understand OOP, even if they already know some procedual languages (like VB or Perl or PHP) and already knows about the basics of iterative programming like variables and loops and functions. Trying to get a total newbie to learn an OO language from the get-go can be difficult.

I'm trying to figure out C#, which seems pretty nice also. Python has a nice way of handling lists and text processing, Java has a culture that revolves around good design (look at all the MVC and IoC frameworks for Java). I personally like Java's verbosity, but the cost is that a lot of things can't be done unless you understand things like anonymous inner classes, listener models, etc. It can be very intimidating for newbies. Newbies shouldn't even dream of writing GUI apps with Swing in their first year. (I'm not familiar with GTK# and wxPython so someone can fill me in).

C and C++ should be avoided at all costs by newbies, pointers and references still make me dizzy. They are powerful as much as they're dangerous. Java and C# are similar enough to C/C++ that they're good places to start if you plan to move on to C/C++ later.


Borland is still making Kylix for Linux (now 3.0 I think). It's like Delphi I believe, a Pascal-like syntax with OOP extension. I think there's a free edition available. It might even have a GUI builder. Probably a good tool for newbies. I'm not sure if it supports traditional procedural programming or not.

Java has lots of high quaility open source IDEs, like Eclipse (duh), NetBeans, and BlueJ (an IDE designed for teaching Java in schools). C# has MonoDevelop for Linux. Python has a number of open source IDEs too but I don't know if they're as polished as Eclipse, NetBeans and MonoDevelop.

So my recommendation for a newbie to learn programming on Linux is:

1. Kylix
2. Java (use SWT or Thinlet for GUI apps, learn Swing later)
3. C# (Mono+GTK#) or Python (+wxWindows)
4. Perl... no wait, BASH... how about Tcl/Tk? LOL

I put Kylix on #1 because it's most likely to support procedual programming as well, plus a complete GUI builder. Let's face it, newbies want instant gratifications. They don't want to learn by writing console HelloWorld, they want GUI. I think Kylix should be a nice all-in-one package for them. Pascal has a very clean, verbose syntax so it should get a newbie up to speed in no time. And without OO being a requirement, newbies can learn about control flows and variables and stuff without OO constaints, and then move onto OOP when they're comfortable.

P.S. Kylix 3.0 Open Edition is free and open source (GPL).
http://www.borland.com/kylix/open/index.html

Ride Jib
May 4th, 2005, 01:07 AM
I recommend C. It may be difficult, but you will be able to pick up any language after that in a few short hours. I prefer not programming in C, but it is a good learning milestone

jodef
May 5th, 2005, 02:40 AM
I have read this and a few other threads, all seem to in the main to point to python as a good place to start. So willing to learn but low on resources.

What are some good online resources that could be helpful? Thanks

Merc248
May 5th, 2005, 04:16 AM
Well, for C++:

http://www.cplusplus.com/doc/tutorial/

This helped me initially when I was still taking my first intro C++ class. It's extremely concise and to the point (which is bad in some ways -- it doesn't really talk about good style, but rather what various scenarios are and what is allowed in simple syntatical situations).

I use it nowadays as a reference.

jeffjj
May 5th, 2005, 05:32 AM
I just started learning python, and I think it would be the easiest to start with. I know Java extremely well, and I think not dealing with pointers is great. However, not dealing with pointers leaves memory management a mystery. Therefore, I have been learning C to learn a lower level language. Learning C is making me a better Java programmer. I have also been impressed at how solid the GTK+ toolkit is.

I also know VB. The only thing I learned from that is how crappy VB is. I feel sorry for VB programmers that think they know how to program because they know VB. They don't, although they have the basic tools to learn something better.

goofrider
May 5th, 2005, 07:59 AM
I have read this and a few other threads, all seem to in the main to point to python as a good place to start. So willing to learn but low on resources.

What are some good online resources that could be helpful? Thanks

Dive Into Python is a gr8 online book by Mark Pilgrim. Free for all.

http://diveintopython.org/

The official site has a lot of resources and links to tutorial materials.

http://www.python.org/

And just for fun, don't miss the Daily Python-URL! for catching up with the current going-ons in the Python community.

http://www.pythonware.com/daily/

hod139
February 8th, 2008, 09:32 PM
bump #-o
(this thread seemed apt with all the recent posts about recurring discussions :))

johnnyb1726
February 8th, 2008, 10:40 PM
I recommend OCaml. It is a good introduction to functional programming. Here are some links to a few tutorials:

http://www.ocaml-tutorial.org/


http://www.ocf.berkeley.edu/~mbh/tutorial/index.html

-cheers

tosk
February 9th, 2008, 12:15 AM
Awhile back I first started by programming in PHP. Of course, I didn't know much so the code was rather crude.

The first language I learned was Java and because of it, I have a very stable grasp on object-oriented programming. I had never actually seen object-oriented Python before the other day. And because of my background in Java, just looking at the code, I was able to understand it and the concepts behind it. This is only specific to me though. YMMV.

From what I've seen, I would recommend either Java or Python--in that order.

poosietgp
May 18th, 2008, 01:25 PM
uhmmm... im trying to learn python right now and i would suggest Byte of Python by Swaroop (www.swaroopch.com/byteofpython/).

I used to do VB but didn't like it much so I started to switch to Delphi which i liked. I know a bit of C++, java and vb.net especially the concepts in programming in those languages. I think python is good especially for guys who wants to learn programming and at the same time develop good programming values and habits.


:popcorn::lolflag::popcorn:

LaRoza
May 18th, 2008, 07:15 PM
http://www.imageviper.com/displayimage/116046/0/necromancing.jpg