You are not logged in.

#1 2007-12-20 15:56:22

gazj
Member
From: /home/gazj -> /uk/cambs
Registered: 2007-02-09
Posts: 681
Website

Languages for a newbie?

Hi All

From about the age of 9 when i got my C64,  I immediately got into the powerful!! roll language of basic.  To be honest I got very good at it for my age (9 remember), then I hit about 13, became a teenager, generally got in trouble interested in girls etc etc and I left the whole world of programming alone.  Until... well now really at the age of 26.

End of the life story, my basic question is this, what language is going to be of most advantage for me to try and learn, and which language will I already be at an advantage with because of my basic background? If any?!?!

Cheers

Last edited by gazj (2007-12-20 15:56:43)

Offline

#2 2007-12-20 16:03:30

lucke
Member
From: Poland
Registered: 2004-11-30
Posts: 4,018

Re: Languages for a newbie?

I'd start off with Ruby - it's as much fun as Red Dwarf is, and fun is good!

Offline

#3 2007-12-20 16:04:14

Cerebral
Forum Fellow
From: Waterloo, ON, CA
Registered: 2005-04-08
Posts: 3,108
Website

Re: Languages for a newbie?

I jumped from C64 BASIC, which was my first language and I learned on my own, to QBASIC (in DOS) which was taught in my high school as the first programming language, to Visual Basic which was the next course in high school, to C++, which was the NEXT course in high school.  I remember my prof being SO confused by the concept of pointers.

I've been programming mostly C/C++/Java since then.  I'd recommend C or C++ to start if only because it gives you a good grounding on what's going on behind the scenes with memory management and such.  Might be a bit of a learning curve coming from BASIC (there was for me) but it'll be worth it.

Offline

#4 2007-12-20 18:55:29

gazj
Member
From: /home/gazj -> /uk/cambs
Registered: 2007-02-09
Posts: 681
Website

Re: Languages for a newbie?

Thank you both for your suggestions, i will have a look into both suggestions, do either of you know of any good books that would help get me started (every bit of c64 basic i know came from a vast libary of books.  Books seems to work for me)

it's as much fun as Red Dwarf is, and fun is good!

Boys of the Dwarf wink

Thanks again

Last edited by gazj (2007-12-20 18:56:41)

Offline

#5 2007-12-20 19:02:02

Cerebral
Forum Fellow
From: Waterloo, ON, CA
Registered: 2005-04-08
Posts: 3,108
Website

Re: Languages for a newbie?

Hm - books for LEARNING C++?  I'm afraid I'm not the best source for that - I'm mostly self taught.  I know a couple good books for improving your C++ once you've learned (such as Effective C++, Effective STL, and More Effective C++) but actual learn-it-from-scratch books, I can't think of.

I know they exist, I'm just a bad guy to ask. tongue

Offline

#6 2007-12-20 19:34:35

Bison
Member
From: Jacksonville, FL
Registered: 2006-04-12
Posts: 158
Website

Re: Languages for a newbie?

Most people I've seen recommend python for new programmers.  I certainly don't recommend java, until you get a really good grasp on Object Oriented Programming.  My recommendation is to learn either Python, Ruby, or C.

Offline

#7 2007-12-20 22:44:30

andre.ramaciotti
Member
From: Brazil
Registered: 2007-04-06
Posts: 649

Re: Languages for a newbie?

Thinking in C++ is a nice book, but if it's recommended to someone that is starting now.

Python may be a nice choice, specially because of it has a very good oficial documentation.


(lambda ())

Offline

#8 2007-12-20 22:50:37

lucke
Member
From: Poland
Registered: 2004-11-30
Posts: 4,018

Re: Languages for a newbie?

For Ruby: there's The Pragmatic Programmer's Programming Ruby, old version available somewhere on the net, I think, and a not-quite-to-the-point, yet pretty entertaining and visual Why's (Poignant) Guide to Ruby.

Offline

#9 2007-12-20 23:06:56

elide
Member
From: Russia
Registered: 2007-12-02
Posts: 40

Re: Languages for a newbie?

gazj, stay as far from c++, as you can. Seriously.
If you want understand low-level stuff (manual memory management, calling conventions, pointers etc...) - learn plain C. Look at K&R book.
If you want understand high level - learn some dynamically typed language. Ruby and python are definitely good choice.
If you want to evolve from "coder" state to something like "programmer" state, go learn base theory. Algorithms, data structures, compilers, lambda calculus, etc.
SICP is a 'must read' book. Knuth trilogy is a 'must have' (not 'read' (; ) thing.
So, you can choose from many different ways, but remember: stay as far from c++ as you can. And even a little bit further. It's absolutely braindamaging.
Trust me.

Offline

#10 2007-12-21 00:00:49

gazj
Member
From: /home/gazj -> /uk/cambs
Registered: 2007-02-09
Posts: 681
Website

Re: Languages for a newbie?

Looks like I should have asked this question a bit sooner before Christmas, lol

Lots of suggestions there, I promise i will look into them all when my daughter gives me 2 seconds to have a good look.

You all have such different opinions (other than ruby and python coming up a couple of times), I guess you all fall for one or two languages and stick with them.

Cerebral, you were so lucky to have those course's available to you in high school, my school not very big didn't have any lessons with anything to do with PC's at all.  I mean I left school in 98, so the PC and Internet world had exploded, but we still didn't have a single IBM Compatable PC in a school of about 1000 pupils.  We did however have the UK founded Acorn RiscOS machines.  I think some fan boys in the UK still use them.  They were very good in there day, but unfortunately out school and many others on the UK held on to them for too long.  If any one is interested http://en.wikipedia.org/wiki/RISC_OS .  Riscos is funnily enough what the rox file manager dock and pinboard is based on.

^^ Sorry took my own thread a little off topic there.

Thanks again

Last edited by gazj (2007-12-21 00:16:30)

Offline

#11 2007-12-21 00:54:11

Cerebral
Forum Fellow
From: Waterloo, ON, CA
Registered: 2005-04-08
Posts: 3,108
Website

Re: Languages for a newbie?

elide wrote:

So, you can choose from many different ways, but remember: stay as far from c++ as you can. And even a little bit further. It's absolutely braindamaging.Trust  me.

Apologies for not just trusting you on this - but what do you find so offensive about C++?  I'm actually quite curious to know why you hate it so.

Offline

#12 2007-12-21 01:23:09

peets
Member
From: Montreal
Registered: 2007-01-11
Posts: 936
Website

Re: Languages for a newbie?

Cerebral wrote:
elide wrote:

So, you can choose from many different ways, but remember: stay as far from c++ as you can. And even a little bit further. It's absolutely braindamaging.Trust  me.

Apologies for not just trusting you on this - but what do you find so offensive about C++?  I'm actually quite curious to know why you hate it so.

Jumping in: it leaves a lot of tasks -that could be automated- up to the programmer to write every time; this gives more power though. I also find that the mix of low-level and abstract (OOP) ideas is hard on my mind.

But, as always, it's good to "use the right tool for the right job" (or however that goes). What's the right job for C++?

If you want power, try Lisp. : o )

Offline

#13 2007-12-21 01:25:26

gazj
Member
From: /home/gazj -> /uk/cambs
Registered: 2007-02-09
Posts: 681
Website

Re: Languages for a newbie?

Cerebral wrote:
elide wrote:

So, you can choose from many different ways, but remember: stay as far from c++ as you can. And even a little bit further. It's absolutely braindamaging.Trust  me.

Apologies for not just trusting you on this - but what do you find so offensive about C++?  I'm actually quite curious to know why you hate it so.

Being me, and trying to avoid any bad vibes I didn't want to ask what is so bad about C++.  Also being extremely newbish, could you point out any obvious differences between the two for me.  At a guess C++ is a further extension of C.  I have heard of such things as D also, is this something else to take in consideration.

Offline

#14 2007-12-21 02:16:01

elide
Member
From: Russia
Registered: 2007-12-02
Posts: 40

Re: Languages for a newbie?

Cerebral wrote:

Apologies for not just trusting you on this - but what do you find so offensive about C++?  I'm actually quite curious to know why you hate it so.

I don't hate c++. I just tired to fight with the language...
C++ FQA Lite gives a lot of possible answers to your questions: complexity, inconsistence, undecidable grammar, terrifying error messages, crazy mix of exceptions and manual resource management, no reflection, no gc, no sane debugging tools...
I'm using c++ for 7 years now. I just tired of all this shit.
Newbie shouldn't learn C++ unless he has absolutely no choice...

Offline

#15 2007-12-21 02:32:01

baklava
Member
Registered: 2007-09-07
Posts: 22

Re: Languages for a newbie?

I'd say you should definitely start with an Object-Oriented Programing Language, most of them more or less work the same and are a lot more powerful and easier to read than their non-OOP friends.

I've been told Python is a good choice for newbies, it's easier than C++ but powerful enough to let you do most everything.

Offline

#16 2007-12-21 08:21:48

lloeki
Member
From: France
Registered: 2007-02-20
Posts: 456
Website

Re: Languages for a newbie?

okay, now I know why I hate C++. thanks for the link elide: before it was a purely intuitive rejection approach based on my experience and knowledge, but now I have real arguments backing that.

my 2 cents advice:
- grok the lower level: C will do. some key points to get are pointers, malloc/free, and structs. use them, and try to abuse them on small programs witout them segfaulting. once you get the whys and hows, move to the next step.
- grok the higher level: python or ruby. get the OO concepts in your head. I have no arguments pro or con one or the other, it's just that one is more "pythonic" and the other is "rubyesque"... I mean, they both have interesting and different approaches. choice ultimately depends on what your brain will accept better (for me it's python)
- grok some description language: e.g UML, especially class diagrams. that'll help you envision Big Things properly and overcome coder's block.
- grok algorithmics. study some well-known and complex (not complicated) algorithms like dijkstra, and get yourself on par with analysis like complexity. UML state diagrams help.
- grok mathematics. this is the key to everything and the only real truth out there.

Last edited by lloeki (2007-12-21 08:22:42)


To know recursion, you must first know recursion.

Offline

#17 2007-12-21 19:51:14

schivmeister
Developer/TU
From: Singapore
Registered: 2007-05-17
Posts: 971
Website

Re: Languages for a newbie?

As far as i rmmbr, when i was 10 i got into C lol  And then i stopped reading those arcane books meant for an uncle of mine which he had left when he went to Russia for his degree. After 5 years i rmmbrd nothing. I still don't, 3 more years later. Except for what i see in the kernel and most GNU apps which are C++.

Python, personally. I like it, just started. Java, financially (just look at how many firms are hiring Java programmers).


I need real, proper pen and paper for this.

Offline

#18 2007-12-21 22:02:47

PJ
Member
From: Sweden
Registered: 2005-10-11
Posts: 602

Re: Languages for a newbie?

elide wrote:

C++ FQA Lite gives a lot of possible answers to your questions: complexity

Sure, there are some issues with C++, but how many languages don't have issues? If there would be a programming language that didn't contain any issues then there might only exist one language. That has not happened yet so my guess is that there are no perfect programming languages.

I wouldn't recommend C++ as a beginners programming language. Mostly since It requieres both knowledge about stuff that's going on behind the scenes (memory management) and object oriented programming. Sure, anyone could write C++ without OOP but then it would be a better idea to stay with C. Just to clarify some stuff, I really like C++ and I find it to be a powerfull programming language, but I don't see it to be a good programming language for beginners. 

From my own preferences I would recommend Java if you wanted to learn OOP and C for som basic "behind the scene stuff". Actually, pascal is a lot better than C for a simple beginners programming language but I don't know if you would like to learn it since it isn't that wildly used anymore.

Offline

#19 2007-12-22 06:58:44

pauldonnelly
Member
Registered: 2006-06-19
Posts: 776

Re: Languages for a newbie?

peets wrote:
Cerebral wrote:
elide wrote:

So, you can choose from many different ways, but remember: stay as far from c++ as you can. And even a little bit further. It's absolutely braindamaging.Trust  me.

Apologies for not just trusting you on this - but what do you find so offensive about C++?  I'm actually quite curious to know why you hate it so.

Jumping in: it leaves a lot of tasks -that could be automated- up to the programmer to write every time; this gives more power though.

Don't you mean less power? By that logic, a hot air balloon and oars are a more powerful way to fly than an airplane, because they leave tasks that could be automated (e.g. propulsion) up to you.

If I wanted to understand programming, I'd pick a language and write lots of code in it. There's nothing that will give you more understanding than practical experience. The hazard is that the more code you write in a language, the more used to its idioms you will become, and the worse a programmer you will be, even if you're an expert when it comes to your language. You'll probably even rationalize your language's failings when you compare it to languages that are better in some ways. A dedicated Pythonista might say that modern CPUs more than make up for Python's speed issues, or a dedicated Lispnik might say that "you don't even see the parens" and that "no one should use an editor that doesn't match parens for you". And of course they'd both be right to some extent, but that doesn't mean they aren't issues (seven parens in a row, which can happen fairly easily, is a bit excessive). Spend some time shopping around for languages that make a good impression. Work through tutorials and such.

Eventually settle down and learn one language well, but don't get too attached to it. Eventually you should learn another as well as you know the first. Preferably another that isn't similar to the first -— hopping from Java to C++ doesn't count. Spend at least as much time reading enlighening books and papers as you spend programming, to help you avoid getting locked in to your language. SICP and Knuth's books are great. If you're looking for something that's more of a fun read, Alan Kay's ACM paper on the history of Smalltalk is interesting.

Stay away from batch compiled languages. They're nothing but a waste of time, and while a professional programmer uses what they're paid to use, I wouldn't expect a beginner to put up with that kind of thing.

Offline

#20 2007-12-22 15:10:10

minus
Member
Registered: 2007-12-20
Posts: 21

Re: Languages for a newbie?

I would recommend to use ruby, it is very easy to learn, and you will learn about object oriented programming. But if you want to learn not only a scripting language, java would be good to learn it. Java and Ruby are very good documentated online..
If you really want to write powerful programs learn C/C++, it is harder to learn, but you have more possibilities, most programs are written in it. So it depends on you, which language is the best for you.

Offline

#21 2007-12-22 23:17:15

elide
Member
From: Russia
Registered: 2007-12-02
Posts: 40

Re: Languages for a newbie?

If you really want to write powerful programs learn C/C++, it is harder to learn, but you have more possibilities

what possibilities?
show me at least one task, which implementation in C++ is more appropriate, than in plain C or ruby or java or something else?
Is there at least one task, which you should implement in C++, because all other implementation will be worse ?

Offline

#22 2007-12-23 00:30:56

kumico
Member
Registered: 2007-09-28
Posts: 224
Website

Re: Languages for a newbie?

elide wrote:

If you really want to write powerful programs learn C/C++, it is harder to learn, but you have more possibilities

what possibilities?
show me at least one task, which implementation in C++ is more appropriate, than in plain C or ruby or java or something else?
Is there at least one task, which you should implement in C++, because all other implementation will be worse ?

i'm sorry to say, but you've long past your window of constructive input, please stop flaming.

////////////////

many school these days start off in python then go to java later to finish in c++
i personally don't like java, don't ask why
so i will recommend python as a starting point, it is a very good language to know imho even if you use it
for nothing more than advanced working pseudocode,
D is shaping to be a very interesting one for me as well, but right now there is just not much documentation
i first started with pascal and somehow found my way into delphi which was fun, i'd started getting good at it then i came to linux
at some point i ended up participating in a prime number generating algorithms with some of this community,
i must admit all my implementations were written in python, then once i was satisfied, they were converted to c++ with help of the
vast available, clear documentation on c++.

that's one effective way i've found of learning a new language, take one you know, write something in it, and then convert it into another.
the decision ultimately lies with you, but just remember, you cannot make a wrong choice so don't feel pressured
but don't spend much time on it, flip a coin or roll a dice if you must wink

Offline

#23 2007-12-23 00:44:02

ralvez
Member
From: Canada
Registered: 2005-12-06
Posts: 1,694
Website

Re: Languages for a newbie?

Of all the languages I have learned the one I'm very fond of and I would recommend is Python.
I have good reasons:

1. It is easy to learn, even to someone with little or no programming experience
2. Highly portable (runs in Linux, Windows, Mac)
3. Allows for very elegant code (I know, I know ... some will say that is a very subjective option, but it does cool )
4. Is Object Oriented, that is to say a modern language as it has been pointed out by several people here.
5. Is fast (not as fast a C, C++, but unless you are into advanced mathematical routines - in which case you may want to use assembly anyway - is very good.)
6. Was created with "refactoring" in mind. Meaning, code re-usability is so very simple.
7. It has very easy to learn toolkits that allow you to create GUI programs in a snap (I like wxPython but there are several others out there)
8. You can use it to develop CGI programs for the web just as easily as you code programs for the desktop
9. If you are really into Web development you can use it instead of programs like PHP with mod_python
10. It has thousands of modules that you can integrate into your programs, so that it not only extends easily but it also allows you to write short programs that are very versatile in a very short period of time. As a matter of fact Python is is often quoted as the best modern "prototyping language".
11. There are tons of free tutorials, here is a link to one of them: http://www.diveintopython.org/

Well, I hope this will be of some help.

R.

Offline

#24 2007-12-23 01:29:35

crouse
Arch Linux f@h Team Member
From: Iowa - USA
Registered: 2006-08-19
Posts: 907
Website

Re: Languages for a newbie?

Assuming you don't know bash, I'd suggest bash for those new to programming in Linux.  While alot of people don't consider it a "real" programing language, I'd suggest starting with Bash. Add in sed and awk after you get a bit more familiar with bash and you have a very good handle on your linux system at that point. Bash is simple to learn and very powerful.  While learning bash, you will probably master all sorts of command line commands/utilities.... cat/tac/case/esac/grep/egrep/ and alot more.  Bash can act as "superglue" for using other programs together and is a good stepping off point for learning some other language. 

I'm sure I'll be in the minority for suggesting it, but I like bash, and the speed with which something can be programmed.  In the end, it's just personal preference, and possibly what you intend the end programs to be used for.  I'm not sure any one way is the "right" way to learn, it's usually just what works best for you. Amazing how many varied answers this question usually gets.

Offline

#25 2007-12-23 08:25:45

pauldonnelly
Member
Registered: 2006-06-19
Posts: 776

Re: Languages for a newbie?

kumico wrote:
elide wrote:

If you really want to write powerful programs learn C/C++, it is harder to learn, but you have more possibilities

what possibilities?
show me at least one task, which implementation in C++ is more appropriate, than in plain C or ruby or java or something else?
Is there at least one task, which you should implement in C++, because all other implementation will be worse ?

i'm sorry to say, but you've long past your window of constructive input, please stop flaming.

I wouldn't call that flaming. He's just questioning an extremely questionable statement. C++ hasn't left a favorable impression on me either. Surely there must be one thing C++ does best.

Not that I want to turn this thread into a language war, but it seems like we need to discuss their relative merits a little bit for this thread to be any use. And when I look at C++ I see: objects, which every other language does better; lots of overloaded functions and operators, complicating reading for both humans and compilers; manual memory management for no good reason; the same old problematic #include statement C had, and so on.

From where I'm standing C++ looks like a whole lot of extra work for absolutely no gain. For some reason people keep recommending it though. Apparently just because it's popular, because I haven't actually been told what the good things about the language are. I can't imagine why a person would start a project in C++ unless, by some cruel twist of fate, it was the only language they knew well. People keep saying it's powerful, but Lisp is orders of magnitude more powerful. Smalltalk is more powerful. Perl and Python are more powerful. Word on the street is that Ruby is more powerful too. They keep saying it's fast, but there are loads of programs written in "slow languages" that run just fine. And loads of programs written in C++ that are dog-slow for no good reason.

Offline

Board footer

Powered by FluxBB