programming, present & future trends?

compose

Junior Member
May 5, 2003
3
0
0
I want to self learn some programming languages. But I do not want to study something that will be obsolete in a few years. So far from what I have read C# and VB seem like good core choices where I should start at. I have also been recommended to learn assembler after C#. Is assembler a good language to learn?

Can anyone recommend what core languages I should learn? What is in demand now? What will be demand in the future?

Also I have been told to learn about mainframes, since this is an area that schools are not focusing on.

ps. can anyone recommend any good C# and VB books? I am willing to pay for a good price for a quality book. Even e-book would be great, or something free online.

Thanks for any help you can provide!!!!!!!!!
 

WannaFly

Platinum Member
Jan 14, 2003
2,811
1
0
From what i've read, dont go with C#, learn C and C++ and know them inside and out. I am pretty knowledgeable at programming, but i went from pascal to VB and skipped c, now i am regretting it because i dont have the time to learn it. C is the basis for a lot of other languages, php, perl, etc all have syntax like c. Delphi is another good one (Visual pascal), VB is good for RAS. Regarding assembly, learn it, but i ma not sure how helpful it'll be since all assembly is different (x86, etc.)
 

JetBlack69

Diamond Member
Sep 16, 2001
4,580
1
0
C/C++ seem to be some of the main core languages. It's not exactly what language is the best, but the concept behind the code. Once you know the basic concepts, like for loops and methods and other things, then you can learn a language pretty quickly by just learning the syntax. You will by no means be a master at the new language, but you could figure it out. BTW, this is coming someone who just took his first programming class last year in Java.

Hope this helps.
 

Descartes

Lifer
Oct 10, 1999
13,968
2
0
I would go with C#, quite simply because the syntactic facilities present are more pervasive in other languages. You'll be able to leverage your C# knowledge in Java, C++, and C. Note that I'm referring to the syntax only...

I honestly can't recommend a good beginner's book for C#, but when you get to the intermediate-advanced level, look at Essential .NET and Applied .NET Framework Programming.
 

Spyro

Diamond Member
Dec 4, 2001
3,366
0
0
You will definitely want to start off with C++. Right now, it is the most used language and I don't expect for this to change for a very long time. Besides, you can do a lot of things in C++, and it can also be used in conjuction with other languages for the best of both worlds.

Disclaimer: I started programming 6 years ago in basic, I started using Java last year, and I've only been messing around with C++ for about a week, now......
 

notfred

Lifer
Feb 12, 2001
38,241
4
0
It doesn't matter what variant of C you start by learning. You need to learn the fundamentals that are going to be there in any object oriented langauge, and after you know those, picking up new languages will be simple.

And assembler is not a language.
 

Spyro

Diamond Member
Dec 4, 2001
3,366
0
0
I would go with C#, quite simply because the syntactic facilities present are more pervasive in other languages. You'll be able to leverage your C# knowledge in Java, C++, and C. Note that I'm referring to the syntax only...

In that case he might as well start with Java or C++ instead.
 

Nothinman

Elite Member
Sep 14, 2001
30,672
0
0
You will definitely want to start off with C++. Right now, it is the most used language and I don't expect for this to change for a very long time.

Really? I would say that proably >85% of the apps on my home box are done in something other than C++. Probably mostly C with shell, perl, python taking up atleast 10% of what's left. Infact recently my copy of libstdc++ got broken and I can only think of 2 apps that were affected, of course I fixed it quickly so I probably didn't get to see them all =)

Pick a langauge and run with it (although don't pick VB =) ), once you learn the fundamentals of programming it'll be fairly simple to switch languages. Learning new languages is basically just a matter of syntax and quirks.

Java, C#, C++ are all decent to start with because they hide some of the low level problems (mostly memory management) from you will still letting you write just about anything.
 

Spyro

Diamond Member
Dec 4, 2001
3,366
0
0
Java, C#, C++ are all decent to start with because they hide some of the low level problems (mostly memory management) from you will still letting you write just about anything.

Hehehehe..... C++ hiding memory management??? I should think not. I can't speak for C#, but I know C++ requires that you know a few good pointers about memory management

Really? I would say that proably >85% of the apps on my home box are done in something other than C++. Probably mostly C with shell, perl, python taking up atleast 10% of what's left. Infact recently my copy of libstdc++ got broken and I can only think of 2 apps that were affected, of course I fixed it quickly so I probably didn't get to see them all =)

I wasn't really diffrentiating between C and C++ there, but since C++ is the newer language I tend to recommend it. In retrospect, though, its probably better of to start with C because C++ is really a different animal......
 

compose

Junior Member
May 5, 2003
3
0
0
wow! thanks for all the feedback. I'm currently finishing a degree in political science =(, so more schooling for now is out of the question. I hope I can be proficient in C learning by myself?!!

can anyone recommend a C book?
 

Nothinman

Elite Member
Sep 14, 2001
30,672
0
0
Hehehehe..... C++ hiding memory management??? I should think not. I can't speak for C#, but I know C++ requires that you know a few good pointers about memory management

Hiding was a bad term I supposed, but it's not as much of a pain as it is in C. Especially if you use the STL classes for things like strings.
 

Spyro

Diamond Member
Dec 4, 2001
3,366
0
0
Originally posted by: Nothinman
Hehehehe..... C++ hiding memory management??? I should think not. I can't speak for C#, but I know C++ requires that you know a few good pointers about memory management

Hiding was a bad term I supposed, but it's not as much of a pain as it is in C. Especially if you use the STL classes for things like strings.

STL, and everything else like it in the programming world, is a dream come true :)
 

Descartes

Lifer
Oct 10, 1999
13,968
2
0
Originally posted by: Spyro
I would go with C#, quite simply because the syntactic facilities present are more pervasive in other languages. You'll be able to leverage your C# knowledge in Java, C++, and C. Note that I'm referring to the syntax only...

In that case he might as well start with Java or C++ instead.

Provided that he listed C# and VB as the languages (i.e. implying that he's a Windows developer), I see absolutely no reason to suggest Java over C#.

I disagree with starting with C++ as a first language, thus my recommendation to go with C#. Starting with C# could ease him into C++ through the use of managed extensions. It's a less jarring road for the neophyte, imo.

 

Spyro

Diamond Member
Dec 4, 2001
3,366
0
0
Provided that he listed C# and VB as the languages (i.e. implying that he's a Windows developer), I see absolutely no reason to suggest Java over C#.
True, I didn't notice that :eek:

I disagree with starting with C++ as a first language, thus my recommendation to go with C#. Starting with C# could ease him into C++ through the use of managed extensions. It's a less jarring road for the neophyte, imo.
Well, yes. I agree with you on this one, C++ is actually quite a brutish language, compared to C or (I'll assume) C#.
 

EmperorRob

Senior member
Mar 12, 2001
968
0
0
I learned COBOL, then C++ then on my first job I learned VB in 2 weeks. I still don't like VB.
 

Barnaby W. Füi

Elite Member
Aug 14, 2001
12,343
0
0
I started off with VB, then learned some very basic C (actually c++ but I dropped the class way before we did anything complex), quite some time later I started learning php, got to know that pretty well (and learned lots of concepts along the way, whether or not I was using them in my own php), then I learned python. Python definitely helped me become a better programmer and fixed some of the bad habits that php gave me. I'm really interested in functional languages like lisp, haskell, scheme, etc., but for now, python, php, and the occasional shell script fill my needs (and I have enough other things to learn, a new language is not what I need right now :))
 

calpha

Golden Member
Mar 7, 2001
1,287
0
0
I agree with what most people said......but with one caveat.

Regardless of what language you do choose---make sure you understand more then just the language. Again, as Descartes pointed out, assuming you're a windows programmer---learn the underlying API-----how windows functions (IE windows messages, system messages etc). I programmed for a long time before I ever got into the intricicies of COM & any API's hidden from me based on my language choice (be it Delphi, VB, PowerBuilder.....or whatever), and I really feel that it put me behind the power curve. I've had to do a lot of catch up learning over the past years. Learning foundations like this will really help you extend the power of the language you're using (eventually).

Also----if you're going to go with .NET---I'd just caution you from one perspective. .NET is so revolutionairy compared to the technology that's been around since the early days of OLE and what would become ActiveX/COM that it may be confusing to learn both. And .NET is really new still.

IMO---Moving from C++ to C# is easier then doing it the other way around.

But---on the same hand....ironically enough----if I knew what I knew now and was just starting programming----I'd do only C. I'd make myself learn all the windows API calls to build my windows.....send messages and subclass them, and then I'd learn C++, and then I'd learn MFC.

When I was bored-----and only when I was bored---I'd further my Assembly skills. But sorry-----other then MOV 2A, 3B LEA 3X and Jump Labels----I'd have a helluva lot to learn. BTW---Assembly==Machine Code
 

Nothinman

Elite Member
Sep 14, 2001
30,672
0
0
When I was bored-----and only when I was bored---I'd further my Assembly skills. But sorry-----other then MOV 2A, 3B LEA 3X and Jump Labels----I'd have a helluva lot to learn. BTW---Assembly==Machine Code

I wouldn't waste my free time, it's helpfull for debugging in some cases but if you actually do any programs in asm you just limit yourself too much. I have 3 architecture at home, only being able to compile and run something on one of them is annoying.
 

manly

Lifer
Jan 25, 2000
13,589
4,239
136
Actually, you should already be a proficient C programmer to start learning the Win32 API and its associated programming model. For building GUI apps, it's extremely raw compared to any number of higher-level alternatives (caveat: I speak only from reading Petzold). .NET itself is an admission by MS that the old APIs were overly complex, and needed a coherent layering on top that could compete going forward with Java.

I mostly disagree with the general advice to start with C/C++. The preferred way to teach programming is to go from higher-level languages to lower-level layers of abstraction. While you can make the case that modern C++ is serviceable in this regard, there are any number of more attractive alternatives. Don't get me wrong, I have tremendous respect for C and C++ (more so for the former) but as an initial teaching language, neither is an optimal choice.
 

tkdkid

Senior member
Oct 13, 2000
956
0
0
I say vb.net or c# (like most others here).

All .net languages are object oriented, so it's a good way to learn the principles of oop. You can program any kind of app, and write code as complex as you are capable of. For the other languages (c,c++, java) you will probably one day want to learn how to read the syntax, but you'll probably never need it. For assembler, it's interesting to learn how code works on such a low level...but again, you'll never need it.

Looked at job listings recently? There are a lot out there for .net. Most programming jobs are for business/database applications. .Net is perfectly suited for those and allows you to develop apps really fast.

However, I would not recommend VB6.0 or earlier. VB was pretty lame before .net.
 

Shalmanese

Platinum Member
Sep 29, 2000
2,157
0
0
Of all the languages I have used so far, Java seems relatively clean and intuitive. I havent tried C# yet but C and C++ were both horribly ugly and outdated languages IMHO. Apart from that, maybe starting off with one of the teaching languages would help you. Something like Pascal.
 

onelin

Senior member
Dec 11, 2001
874
0
0
I'll add a vote for Java. C++ is a good start, but Java is a little easier for learning the concepts IMHO. I don't know (or plan to) C#, but like calpha said I imagine it's easier to transition from C++ to C# than it is the other way around. I wouldn't start on VB simply because I think it has less emphasis on good programming practices...however QBASIC and VB were the first languages I toyed with in HS.
 

tkdkid

Senior member
Oct 13, 2000
956
0
0
Right...don't use VB 6 or earlier. VB.Net though is really a completely different language that in fact is very conducive to good programming practices.
 

Descartes

Lifer
Oct 10, 1999
13,968
2
0
Originally posted by: manly
Actually, you should already be a proficient C programmer to start learning the Win32 API and its associated programming model. For building GUI apps, it's extremely raw compared to any number of higher-level alternatives (caveat: I speak only from reading Petzold). .NET itself is an admission by MS that the old APIs were overly complex, and needed a coherent layering on top that could compete going forward with Java.

Of course they admitted it, it was an overly complex non-OO API largely evolved from their earliest platforms (hints of a segmented memory architecture are still present in some of the preproc definitions). I don't think this is admission of anything negative. Much of the classes in the .NET BCL still call win32 API functions anyway...

Originally posted by: calpha
Also----if you're going to go with .NET---I'd just caution you from one perspective. .NET is so revolutionairy compared to the technology that's been around since the early days of OLE and what would become ActiveX/COM that it may be confusing to learn both. And .NET is really new still.

What constitutes new? .NET has been in production for years, it just seems to be getting a lot more press in the past year or so. There are countless large-scale projects being implemented today, and many more have already been put in production. It's no longer an "if .NET" proposition, it's a "how do we do it properly" proposition. Have a look at the new content of MSDN: it's segued from mostly "What is .NET" style content for the neophyte to "How do you architect a .NET application."

In my years as a developer, I haven't seen such widespread adoption and emphatic support since Java plateaued. The community support behind .NET is incredible, and it only seems to increase.

The point of all of this is that one really shouldn't question .NET as a target platform. It's tried-and-true, and it's only getting better (.NET Framework v2 is going to own me).
 

compose

Junior Member
May 5, 2003
3
0
0
hmmm... the picks on languages to learn are all over the place! =) I will do some more research on this!!!

It looks like I should learn NET & JAVA or C & C++!?!?!?! Any concensus from people who work in the IT field??

I am going to check out the local chapters tomorrow to see what they have.

Again thanks for all the input!!!!