-   Programming (
-   -   Your Opinions (

newbietolinux 12-16-2001 02:10 PM

Your Opinions
I am just beginning a degree in programming. What would you recommend as a progression of languages to study? Is there any "easy" language that makes the others easier to understand? if you know of any good reference books as well I would appreciate it.


ferrous 12-16-2001 04:07 PM

Fortran is too antiquated, C is too low level, C++ is too hard, Visual Basic is too kludgy, Basic is too useless, Lisp is too esoteric, Pascal is too fake,Java is too abstracted from the hardware, Smalltalk is too stupid, asm is too machine dependent, Perl is too inconsistent.

I recommend that you take up knitting!

Seriously though, my first serious endeavor in programming was in VB and it sucked. I had to unlearn a lot, especially due to it's asinine approach to OOP. Before that I had programmed in C-64 basic and whatever you'd call the language resident on my TI-82 calculator.

Traditionally, _The_ language with which to learn programming has been pascal. Pascal is kinda old though, and I don't approve of it's IN/OUT parameters. That thinking will screw you up later.

If you try to learn with C, you may have a lot of problems initially because it doesn't abstract away a lot of the machine. Also, it gives you the structured programming mindset that might be hard to overcome when you have to get used to objects.

Java has problems trying to be machine independant. It's a pain to, say, open a file on your computer with java. Apart from that, it can do just about everything that you will want to learn when you start off, so it might be the best bet.


Wynd 12-16-2001 05:35 PM

I would try C++. It's a lot easier than C, but still has C's power.

mjohnson 12-16-2001 07:12 PM

ferrous is right on the money.

This is usually my response to the question "which is better" and "which should I learn first": Learn the language you want to develop in. If you want to learn Italian -- learn Italian, don't learn French or Spanish first because you think it'll make learning Italian easier. All programming languages are "hard" in some way. You just got to knuckle down and learn one. Once you get one under your belt subsequent one's get easier. If you approach programming timidly you'll never make it...

If you are linux person learn C or PERL. If you are ambitious linux person learn C++ because you'll be able to code in both languages. My preference is C++ because I think the language allows you to model solutions better. I learned C first and in my opinion C++ is "a better C." But that's just my personal feelings. For me, it's the language that fits the way I think of the world...

good luck!

ps: you should learn BASH and PERL anyway to make your developing environment a lot nicer...

Tonneman 12-19-2001 06:43 AM

Surely if you're beginning a degree in programming they'll begin by teaching you in one language or another? Probably Pascal or Java? Pascal is a waste of space so don't learn it unless you have to.

Otherwise, I recommend you learn C++ or Java. There's little point learning any language which isn't object orientated these days, and these two are the most popular and useful. Although I personally loath Java that's just a personal opinion. Java's probably easier to start in, since it 'mothers' you more than C++.

BlitzBasic or DarkBasic might also be worth looking at. They're neither great languages, but they are have very advanced graphics and input support, so you can get interesting things up and running in them quickly. And I know I'd rather start off by writting simple games, than simple text parsers.

By far the most interesting language I've worked in is Moscow ML, but it's not useful for any real world task I've seen. Assembly's also fun, but hardly the place to start.

If you want a job in programming, the three most sort after languages are C++, Java and VisualBasic - and VisualBasic is evil, so avoid it if you can. Java is mainly used for web development, and C++ is used for games, engineering and serious application development. The military and those interested in robustness tend towards Ada.

I think I've rambled on enough now, so I'll leave it there.


gui10 12-19-2001 07:07 AM

personally, i find the Java API too heavy, too much. but i suppose that's part of its design goals (purely object oriented).

i like C and C++. but that's more personal than anything... it fits my needs. apparently C++ is big on polymorphism...

forget Visual Basic... tied to only one platform, one OS... how far will that take u?

my vote is for knitting... :p

gui10 12-19-2001 07:09 AM

and hey! who knows anything about objective C? i've heard of it but that's it! what is it all about?

bluecadet 12-19-2001 07:12 AM

oh wow, Moscow ML is fun. we did courses ni that, and it was actually a very useful thing to lear, concept wise. sure it's useless for soemthign useful... but the principles behind it are very worthwhile, makes you more open minded i think.

C++ and java are practiaclly identical some a starting point. all the class stuff seems a bit unnecessary for a helo world but it all makes sense when you do big stuff, where OOP is such a massive bonus.

C++ pointers are of course an enternal irritation, but you can ignore them for the most part, unless you're trying to understand some pointer based code. i hate them, even if they are more efficient.

but yeah, c, c++ and java are the most useful, and they are very similar at a basic level. the knowldege is very transferable, just need a list of some equivalents in each, and you can pretty much swap from one to the other

trickykid 12-20-2001 01:56 AM

i would suggest using C ++ and Perl if your in the Unix environment or gonna program within *nix.

newbietolinux 12-20-2001 11:43 AM

thanks to all who replied
I have to take a VB course as a requirement, but as many of you have said, hopefully that will help me understand OOP. I will get my hands on a C++ book and start tackiling that too.

Thanks again.

bluecadet 12-20-2001 04:19 PM

why vb? that's a bit dumb imo. and the oop in vb is odd....

I do find it strange how when i started my degree i had no idea what oop was, and it really took me ages to grasp the concept, now i understand it, i'm finding it hard to design gui's and such without class structures in c.

trickykid 12-20-2001 04:58 PM

when i was in college and changed my major to CS, they made me take a VB class to start off with.. don't know why but I hated that class..

bluecadet 12-20-2001 05:01 PM

i just think that as long as people are open minded abuot what languages they are learning, and evaluate them constructively, you'll be ok.

people complained vigourously against writing in ml, cos it didn't have for loops etc.... but what it taught was so beneficial i found, just cos it's not java, doesn't mean it's not gonna teach you anything

ferrous 12-21-2001 08:45 AM


Originally posted by gui10
personally, i find the Java API too heavy, too much. but i suppose that's part of its design goals (purely object oriented).


my vote is for knitting... :p

Heh. Java is far from purely object oriented. Check out Smalltalk-80. The language has absolutely _no_ atomics whatsoever. There are only objects. And methods. And methods can be treated as objects. Nothing like a programming language that will give you a core dump on the integer 4.:confused:

Tonneman 12-21-2001 02:10 PM

Re: thanks to all who replied

Originally posted by newbietolinux
I have to take a VB course as a requirement, but as many of you have said, hopefully that will help me understand OOP. I will get my hands on a C++ book and start tackiling that too.
If your course requires you to learn VB, I'd seriously consider changing college/university/whereever-you're-taking-this-course. The point of an education in computing is to teach you the best of what there is, surely?

VB is at best the most pragmatic solution to certain problems for those without the time to learn a more general programing language. VB doesn't support OOP (although M$ still claim it does), so how it's supposed to help you learn it I have no idea.


All times are GMT -5. The time now is 08:18 AM.