Actually I started with C... though I think that assembler would have made a great springboard into C. Only problem was that the move to C++ (or more so the OOP part of C++)was painfull for me. Because of that I've often thought I would have been better off starting with C++.
I recently recommended Python to a propellorhead friend who was asking about languages for his 12-year old daughter who wanted to learn programming. He tried it out and it was great. His daughter loved it and in fact, he himself subsequently gave up C++ and Perl for his medical imaging work and converted all his stuff to Python because he can work so much more efficiently that way.
The ease of use for beginners combined with the power of the language is why Software Carpentry chose Python as the implementation and scripting language for their project.
Exactly. We use Python in teaching the first year of practical computer science since several years with great success - especially compared to our colleagues who use modula-2 or java. Python is great and not only as the first programming language.
Well, quite frankly, and I think most people will agree with me, C++ is a mess. It's a mishmash of a lot of things, none of which make much sense. But it is the defacto standard for writing anything that has some time-critical factor (not in the programming, but in the execution).
But if you do not know programming and want to break into the IT business, which I believe was the question in the first place, Java is by far easiest to learn. It is much more strict in programming style, it teaches proper type-control and above all, proper Object Oriented Programming, something you will have a LOT of use of.
With these tools in your toolbox, you will be well equipped to take on the IT market and be reasonably in demand for. If you know flash and/or VRML as well, you'll be sucked into the industry within seconds.
To recap: Java, to write web-applets (not so much in demand these days, but still good to know), HTML, JScript aso for writing web apps.
Third I'd learn VB, mostly to be able to learn ASP which is the next step up from HTML and that stuff.
This is the recepy for QUICKLY getting into the IT business. If you don't mind a LOT of work and a LOT of education, then by all means, learn Visual C++, you'll definately have use for it. From personal experience (I started working a few months back and I had to learn Visual C++, I have a LOOOOOT of programming experience, mostly with Delphi and C) that it is VERY hard to learn, mostly because it is such a mess as a language. There is no order. Same goes for MFC. Compare the order to Delphi for example where everything is consistent and ordered, it is much easier to learn. Problem is, no one uses it, which means that my considerable Delphi skills are wasted on today's market (not recommended).
All desktop applications to my knowledge and experience are developed in C++. The primary reason is for the OOP C++ has to offer.
If you 'want' to break into programming then VB would be the easiest to learn. You recommend Java, well lets look at the facts:
Java is based on C++, with Java there are no pointers.
In C++ you DONT have to use pointers.
Java has garbage collection, C++ doesn't. There's not an awful lot of difference now is there in these two langauges.
Secondly you state learning:
Yeah great for Web-base applications.
Select your langauage by selecting the application and application complexity your targeting for.
You wouldn't write a word processor in VB!
You wouldn't write a stock control system in assembler!
For mainly large complex object models, C++ is the only viable option (until now), maybe C# will steal some of C++'s limelight in the future, you knows.
Dear SciBoy, i am a newbie C++ programmer and i want to tell u a secret... C++ is not a chaos, it gives u the power of makeing whatever u what in the type-style. I have tested VB, Basic, Html, even Delphi, and i find c++ much easier to understand (perhaps, its a divine gift given to me?). Did u try to program in Assembler?. Hehe. Saludos Amigo.
I mean, you ARE joking, right ? C++ is NOT a mess, it simply requires a degree of intelligence to understand. Java may be easier to get your head around, but only because it offers 'features' like garbage control that basically take control out of the hands of the programmer. To quote Stroustrup: Java programmers think garbage control is too important to trust to a programmer, C++ programmers think it is too important to trust to a compiler.
Basically you're offering advice to people wanting to write web pages, not programs. You even say so in your recap. I am at a loss how someone with 'a LOOOOOOT' of experience in C can say that Visual C++ is a mess. For starters, VC++ is NOT a language, it is a compiler which impliments a variation ( yes, I'm afraid it's not quite up to standard ) of C++, and of course the MFC. You can easily write straight C programs using VC++, if you want to. Or Win32 programs, or MFC programs, or DLL's, or COM objects using ATL, etc. That is the point.
I find VC++ and C++ in general easy to use, logical and powerful. I could not do the things I do if I was using Java, I might be able to in VB, but I would not relish the thought.
The content of this post is not necessarily the opinion of my yadda yadda yadda.
To understand recursion, we must first understand recursion.
I agree that market demands "languagelets" such Java, VBS etc. but I find your comments on C/C++ are fishy. Seems either LOOOOOTs of programming experience helps nothing or there's a conflict on what a programming language is.
Yes, C++ is hard if one finds thinking & reasoning hard.
And yes, java and other "xxxlet gadgets" are easy if one has no idea what memory allocation or pointers are.
Briefly, such easy-going "languages" are popular because they don't need a programming background nor knowledge as much as C/C++. Any fresh guy can start doing valuable job in a couple months with them.
That's why there are lot of those guys around and that's why their salaries are low comparing to others. Employers like them, because they don't depend on them, employee recycling is not a big problem, traning period is short and -repeating again- there are a lot of people around that can do the same job.
To tell the truth, I decided to switch our libraries to COM -and so- VB compliant. But at the end there must be some guys doing the real work, writing the core components (C++ team); and also there are some other guys giving the system the customized shape, (Scripting Team).
Beyond all technical issues, I don't underestimate the scripting languages, we really need them. But talking about "programming", C++ is the programming language.
BTW, MFC is accepted as a case study for understanding good practices of OOP. An unnecessary sugggestion comes just after, anybody finds C++ and MFC messy and without an order needs to study. Sorry guys, nothing comes easy.
Look I don't know about C++ as your first language, but it is an important one to know. Personally I started programming in BASIC when I was about 14. I think if your not in a hurry to learn something useful, BASIC will allow you to get some experience with algorithm design without having to worry about things like case sensitivity. If your in a hurry I'd start with C++. Its not really that difficult a language to learn. I'm taking the advanced class at my high school right now. Only two of us have ever programmed before but the others are almost as good at it as we are. The only thing we have over them is experience.
It wasn't that hard to learn that I needed to spend a long time on it. If you think HTML is hard maybe you should reconsider getting into the IT business.
As far as MFC goes it is hard to learn, but only because of its size. I'm trying to learn MFC right now and it is difficult. This site is great, but it's still too young to answer all my questions. Even with the difficulty I think if you really want to learn to do some major programming this is the way to go.
I must agree with Christian Graus and LeMehmet. Why is it that people always want what is safe and easy ... VB, Java, etc.. I spent many years developing C++ skill and have a strong background in it using Win32 API and MFC. No one is saying they are easy by the fact remains that there are more jobs available for C++ programers than other languages (at least on the high paying end of the scale). And what is this about people challenging C++ as an OOP language. As far as I know it meets the need requirments. I think if you are going to break into the world of programming C++ is the way to go. It is the language that gives the programmer the most tools to do his or her job. Web programmers are a dime a dozen. C++ programmers take many years to cultivate and become experts in their field and as such will make the most money and have the greatest job stability. As far as C# goes, I am learning it but am not quite sure of its role in the future. For right now, I would learn C++ first then move on to C# after mastering it. If we are smart, and almost all of us are, we should stick with the MS camp. (as painfull as that is at times) Even if we don't like it they control the field.
"Software Engineering is a race between the programmers, trying to make bigger and better fool-proof software, and the universe trying to make bigger fools. So far the Universe in winning."
Yes I might as well agree with you that C++ is not a language for a beginner who wants to be one.
The understanding of OOP or rather programming itself got by learning C++ is matchless. You have to do most of the things yourself. There is nothing hidden from you. It beleives you. It agrees with you that you are intelligent and you can be trusted. That is really a morale boost for a beginner looking far ahead.
Yes. He would have some scary incidents which he wouldnt want to recollect! He might have sleepless nights wondering why the goddamned Assert crops up. But the day he comes thru, he will have the confidence to crop up his own Asserts or he would have the opportunity to Assert
C++ is not a language for beginners forever but for people who want to begin and take off.
If it depends on Microsoft; who says C++ is here to stay and not C#?
Working with Delphi from 8 to 5, 5 days a week, I also think ObjectPascal (Delphi) is a great beginners and even non-beginners language.
PS (Just not to invoke yet another language war) I love C++ a lot too and I do most of my personal work with it. But I don't think it's a language that teaches you the right habbits as well as Pascal does.
Delphi is very good, I like a lot Object Pascal, and I like a log Object Pascal, but the problem is that now there is only one companie that can say you are going to program in..., some years ago it was not in that way, "Turbo Pascal" was one of the best environments to program, but it doesn´t matter, the question is.... who has the money ?...
That´s sh*t, I don´t like it too, but that is working on that way...
I think you guys have missed the point of the poll. It's not "What's the best langauge?" - it's "What's the best *beginner language*?".
VB - bzzzzt - thanks for playing our game - Johnny tell them what they've won! No type checking *at all* (last I saw anyway).
C++ - bzzzzt - type checking, but not enforced - bartender! a steaming mug of free-range type-casting for everyone!
Pascal - you are correct sir! Strong type-checking and almost complete reliance on functions and variables being defined and initialized before they're used. Why do you guys think Pascal is a pre-requisite for more advanced programming courses at most acredited universities? It teaches structure and *good* programming habits through it's syntactic requirements.
Now, if this poll were "What's the most widely used programming language used today?", the answeres would be way different.
Let's face it. VB programmers out-number us C++ guys buy a large number. And I'm seeing the same trend in Java vs. C++ (if Java isn't already the clear winner).
The reason? The same "level" programmer can probably spit out a better program in VB or even Java, and usually faster. And as such, there's a higher demand for them.
So given that, and the state of the market today, I would suggest VB as the first language, even though I have never personally programmed in it in my life. C++ is just an overkill.
Yes, VB is probably a good first choice.
The only reason to learn C++ as a first language would be that if you can learn C++, you can learn ANYTHING.
Java and C# are really just different flavors of C++.
And C++, of course, is just a different flavor of C.
I would have to disagree with this, simply because a large
percentage of the programmers out there that know VB, are way lacking in any skills. Yeah they can turn out a program, but they don't always know squat about what's actually going on. And they couldn't even do much of anything, if it wasnt for their intelli-sense..
And this idea only stands up if you're one of the few that actually think that VB programs are superior to a program written in VC++.. VB is Great for testing, but for most real apps??! Any of the commercial apps that Ive been involved with couldn't be outdone by VB applications anyway. Unless the VB programs were created using components based off of the Original C++ application's code!!
And, I know a lot of professional VB programmers who don't even know what COM is, or the fact that they use it for everything that they do... And they are getting paid to
program!!! Actually they are getting paid to use the stuff that the C++ programmers(or more knowledgable VBers who probably know C++) wrote for them....
So my vote is for C++.. Because as it was so elegantly put in another comment, then you can Learn everything fairly easily(and in VBs case, very easily). And you can fix stuff for the programmers that can't!!
So, yeah there's definitely more of them, but that's cuz its easier!! And that's doesn't necessarily make it the right way to go!!
Heck learn C++, and then become a VB guy. You'll be that much more marketable!!!
As you disagree with me, I again disagree with you.
From where we're sitting, it's hard to see how hard it is to be a new programmer these days. When I started programming, the OS had only a handful of functions at best, and standard libraries were sparse, and the languages were (relatively) simple. Everything was incremental from there.
Someone coming into today's C++ software market has to:
a) master a language that is non-trivial at best
b) master the OS programming model (e.g. Windows events, etc.)
c) master the OS APIs (anybody out there know how many thousands of API calls Windows has???) and libraries (COM, ODBC, MSI, ....)
d) master the standard libraries
and on and on.
It's a huge undertaking that can't be done easily.
So if you want to start programming, my vote is still for VB. You can concentrate on program-flow for a while, without worrying about things like memory management, and nasty COM interfaces. Once you've got that right, moving to C++ is the right evolutionary process.
> So my vote is for C++.. Because as it was so elegantly
> put in another comment, then you can Learn everything
> fairly easily(and in VBs case, very easily).
> And you can fix stuff for the programmers that can't!!
> Heck learn C++, and then become a VB guy. You'll be that
> much more marketable!!!
So again -- personal opinion: If I'm interviewing a guy for a VB job, and he says he's from a C++ background, that's what I test him on. Most guys like that can't even answer the question "why do you need virtual destructors?". Thats a no hire right there. And why? Because the guy started out in C++ - thought he knew enough of it - but it's all baloney.
I'm sure we agree that if you grasp C++ in a good way, VB is just a luxury. So I'll conclude by saying:
Heck lean VB, and then become a C++ buy. You'll be that much more marketable!!!
I don't necessarily agree, since I don't see most(if any) of the VB guys EVER coming the other way to OUR side, but....
Our transition to VB is in hours???
There's is in years??! Or never!!
Yes. They definitely have a lot to learn and understand as far as extras, but having the core C++ knowledge will give them immeasurably more talent and understanding.
So, yeah in all practicality people will learn VB faster, and be in the market quicker.
But I guess I'm just all for people actually knowing
something!!! I hope I'm wrong, but Ive seen a LOT of examples where I'm not!!!!
And heck, if you come up against a hard interview and
get burned over something that silly, especially a c++ question when interviewing for a VB job. Well then don't tell them ya know the goods, especially if your just learning them...
Last Visit: 31-Dec-99 19:00 Last Update: 2-Mar-15 8:17