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...
I'd be happy to write you a database in VC++, but apart from that I agree with everything you said - learn all you can is the only credo by which we can both survive in this business, and keep enjoying it.
The content of this post is not necessarily the opinion of my yadda yadda yadda.
To understand recursion, we must first understand recursion.
>Is it wise to use VC++ to do a Database app?
Oh yes! Most of my previous projects were database
apps, interfacing to a variety of RDBMS. Thanks to ADO!
Plus, of course you want cool user interface with
a controllable overhead of resources.
As much as I agree that C++ is too hard to be the first language I would also stress out that VB is not a good choice either.
VB is such a messy language that doesn't enforce any structure in the code nor any good coding practices!
I still think that C might be good for start, with the slow "upgrade" to C++ kept in mind. The best choice for starters as I see it is Pascal (Delphi for whose who wanna hack a windows programs with the same ease as with VB).
I think the VB stigma is so cute The funny part is the same people who say "Yeah, VB is great for prototypes, but..." have been in the business quite a while and haven't touched VB since v3 or v4. And why would they? They were terrible. Those same people also usually come with comments like "VC++ over VB is a no-brainer, you've got to have OO programming!" Then after talking to me for a few minutes they say "hmmm... really? You can do OO programming in VB now? Hmm.. you have access to every API function I use in VC++, and a slew of VB functions that usually make the API unnecessary? Wow, really, you can make a COM server in VB? Wow, and it takes *how* long? Geesh." I think a large part of the stigma may be that these people gave up on VB a few years ago, and haven't kept up w/ the improvements. But then again, who can blame them? I would have done the same if I started back then.
I program in VB and VC++. Here's an example of 2 projects going on here right now (both desktop apps):
1) User can create 3D highway/bridge models and create drive-through animations, OpenGL
2) User uses a series of dialogs, interactive 2D diagrams, etc. to model a bridge to be sent to another engine for analysis. App connects to a DB (Access) of predefined parts, and allows for custom definitions to be addded.
Now why should I write #2 in VC++, or #1 in VB?? I shouldn't. IMHO, people who are so stubborn about which language they choose often times don't have enough knowledge to select the right tool.
Another example: A company I interviewed w/ wrote some really cool dental software using VC++/DirectX7 (3D model of mouth is pretty cool), using Access files to store the data. When their clients needed the data in Excel, so they could do their own manipulations, the company had their junior programmers write a conversion app in VC++. These guys had no clue what IAnything was, and they had to kludge around interface pointers and wrapper classes... they were lost. The same dinky app in VB would take no time -- set references to the Access and Excel TLBs, create some objects w/ 'New,' and away you go! They just used VC++ because that's all they knew.
I'll be the first to admit that I am a big fan of the implementation inheritance that is easier to do in C++, and I like the Doc/View architecture. And if you need to get close to the hardware (graphics), VB is not your choice. But that's about all. VB events beat the heck out of callback interfaces, message maps, or event macros. And anything to do w/ COM is ridiculously easier in VB. DB Apps, same thing.
I'm tired now I guess my point is just pick the right tool for the job, and don't be so damn stubborn. Most people who carry on the VB stigma just do so out of ignorance.
Good night folks! You've been great. I'll be here all week, try the veal.
You know, for a "VB Retard", you're pretty sharp !
I agree with you completely: VB has really come a long way. And today, just about every company I go to uses it over anything else. It just makes sense in so many ways.
Me personally, I hate VB's verbose syntax. I prefer C++ and Java's case-sensitive, "curly brace" notation.
But the issue here is, what language should a newbie learn first? And my vote goes to VBScript. It's VB--! No worries about types or any of that other stuff which kinda gets in your way when you're learning to program. You just set your variables and forget it -- sort of like Perl. From VBScript, then you move on to VB, and then to more well-rounded languages like Java or C#. Finally, you hit C++: the "no-holds-barred" language.
I guess the main point is, learn it all so you can use whatever fits best for the situation at hand.
Yeah, see the question IS "what should you learn first..."
You sound like a great example of my point.. YOU
KNOW C++. So you can in fact, understand a lot of the
deeper stuff going on. Yeah, their are some "bad" junior
programmers out there that screw things up in VC++. But
I think because they know c++, even though they don't know
squat, they still have a lot more potential than the junior
programmer that just know VB.
So really for this point, the whole I love VB is irrelevant.. It is getting better, it has many great uses,
its gotten to the point where you're not embarassed to ship
something written in it as part of a complete solution...
Yada yada yada... Ive even written fairly advanced COM controls in it too, although I still had to resort to ATL
for the really good stuff!!!
But is it your best choice for learning??!!! Did you learn
VB 3 or 4(that you definitely must remember, because you nailed the description), before you learned C++???
Java is a better language than C++ if you're trying to learn OOP. I think that there are too many distractions when trying to learn OOP with C++ due to the baggage inherited (sorry, bad pun) from C, not to mention the confusion object pointer notation. C# would also be good since it bears an unbelievable similarity to Java.
I find it interesting that most universities are teaching Java (not C++) in their undergraduate computer science courses. This is producing a whole new generation of Java programmers who seem to have no trouble in getting a job thus far. What exactly they do for a living, though I'm not sure.
Regardless of what language you learn...chances are that you're going to have to learn a new one anyway in a couple of years. That's just the nature of the business
If I was young free again and had the choice to learn a new language in this current climate, I would definetly consider C# (The middle man). Should C# success fail, you have goundings for C++ and VB. The choice of language also depends on the type of application your going to develop/target. For Database,client server applications, ie Stock Control systems, then C#/VB would be the language to use. For desktop applications or critical applications then C++ would be the order of the day.
Your sentence concerning tool vs. target is as right, as trivial . The question was - the best language TO LEARN programming (at least, so I've understand). And although I've started with Assembler/360 and PL/I (are you old enough to hear about it?), here I suggested C, because I think it is the pure programming culture, not damaged with these OLE, MFC, and other ActiveX.
Once more, it's my opinion, no one has to follow me.
The question is 'the best language to learn for todays IT world'. So it's another ambiguous, many-answered question (ie the whole point of these polls! )
If I had to suggest a language for someone just starting out I'd ask them if they enjoyed problem solving, programming with power and esoteric niggly things that make life fascinating, or if they just want the $$$. If the former then I'd suggest C#, since it's easy to learn, will be very useful in a range of things (thick clients to components to web pages), and is similar enough to Java and C++ that to step off, or move up to either language is fairly painless. For the $$$ I'd go VB7. It's on the same level as all other .NET languages, it's super simple and there will always be demand. Maybe not as stimulating, but it will get you a leg up in today's IT world.
Think, the first question you'd ask them has to be:"Can you NOT to be a programmer?". My firm conviction is that programmer is not a profession, but rather the diagnosis. So if the answer will be "yes" - you may ask your other questions and send them to whatever you think. But if the answer is "no" - suppose they'll follow my way.
BTW, why only 8 bits. All world tends to at least 32.
you have to take into account the fact that as far as most of us are concerned C# doesn't even exist yet. DevStud 7 hasn't shipped and a lot of us don't have the time or desire to run MS betas. so, C# is still MS marketing spew.
and, this poll was targeted (by virtue of being on this site) at people who presumably already know something about one or more programming languages - it shouldn't be surprising that people would pick a language that they know something about instead of choosing MS's current technology of the month.
and, honestly, isn't C# just C++ for people who don't get pointers? or java for people who really love MS?
Last Visit: 31-Dec-99 18:00 Last Update: 2-Sep-15 19:04