Tom's Guide | Tom's Hardware | Tom's Games
![]() |
![]() |
![]() |
Yeah hey everyone Im a relative noob when it comes to programming and Im wondering what would be the best language to start out with.Im fairly good with batch programming but I dunno if that counts as anything.Btw im 13 so dont suggest something mind bogglingly hard.
thanks

I recommend starting with asm. It's certainly not easy but you'll learn much about low level ops.
And when you go on to C/C++ or whatever, you will from time to time want to use "in-line" asm.
Good luck.
If at first you don't succeed, you're about average.M2

Ok thanks do you know where I could obtain a copy of a compiler or whatever you need to get started with it?
<insert witty/meaningful quote here>

Thank alot fo the help and the link,one question.
In the zip file there are 3 exes,and i run them and nothing happens.How do I use them properly?

Dude,
ASM (Assembly) is a pretty hard language to start with. I think M2G might be messing with you.C++ is fairly difficult as well, however, it does teach good discipline.
Java is about the same as C++ but it is completely Object Oriented, which is a very good skill to develop.
C# is a combination of C++ and Java but it the IDE makes it very easy to use.
Visual Basic .NET is basically C# using Visual Basic syntax...I don't recommend it at all, if you are going to learn a .NET language, learn C#.
Visual Basic 6.0 is probably the easiest language to learn, especially if you are coming from a batch background, but most VB programmers (those who learned VB as their first language) are very undisciplined and often ridiculed for their lack of sophistication/elegance.
so, for a batch programmer, C might be the best starting point then. C is a little cryptic, but very powerful. You can develop similarly to batch programming. And if you want to learn C++ and OOP, you will have a basic understanding of the C language foundation (which will allow you to learn Java and C# very quickly as well)
Now with that being said, if you want to learn more than one language eventually, and you want to start with C...then I say start with non-object oriented C++. This is C with more "helpful" stuff. The best C++ book bar none is:
C++ How To Program - Deitel <- you should be able to get an older/used version from Amazon at a reasonable price. And best of all, C++ is free...meaning you can get free compilers and libraries online. In fact, borland has a free compiler as well as many other vendors. I am certain that someone else can post their favorites here as well.
Good luck
ChiThey mostly come at night...mostly.

Hi! MediocreMan, those three exes are command line programs "Tasm.exe" is the Turbo assembler and "Tlink.exe" is the Turbo linker (I have no idea about "Tasmx.exe" though that appears much like "Tasm.exe"). To use them follow the these steps
In XP
1)click start->Run...
2)Type "notepad" and click OK
3)Type the assembly code and save it with a ".asm" to any desired directory (eg: c:\dir1\test.asm)
4)click start->Run...
5)Type "cmd" and click OK (quotes not needed)
6)Using CD command change to the directory where you have the three ".exe"s (tasm.exe, tasmx.exe and tlink.exe)
7)Type "tasm" followed by the location and name of the assembly file previously created (eg: tasm c:\dir1\test.asm) and press enter
8)If it shows no error messages then a ".obj" file will be created in the current working directory (i.e the path shown by the command prompt). This file will have the same name as original file but extension changed to ".obj" (eg: test.obj)
9)Now type "tlink" followed by the object file name (eg: tlink test(extension is not necessary))
If no error occurs an ".exe" will be created with same name as the object file but with extension changed to ".exe" (eg: test.exe)You can do the same thing in a batch file and use MS-DOS Editor instead of notepad. I agree with Chi Happens (ASM (Assembly) is a pretty hard language to start with). Anyway I hope this helps :)

All these guys are playing you for a joke ;P
The Best first programming language is of course Python. Python is easy to learn and very user-friendly. Nevertheless, it is a very powerfull program and there are many good tutorials and articles about Python online
goto http://python.org/2.4.2/ and then Python-2.4.2.msi
As a rule, you should learn that the less you program in C/C++ the more successfuller you will become.
When you have mastered Python you should learn Java. Java is more powerful than python and produces a much faster and more powerfull code.
Then try Perl or LISP.
first then you can try your luck at C/C++

I wondered how long M2Go could go without being called out...
There are pretty much 3 schools of thought:
1. Start with assembly - Since the original programmers had to start with assembly (when that is all there was), it's logical that all programmers should have to. In assembly, there's no free lunches - every tiny mistake costs you big time, and you spend more time debugging and finding mundane errors than you do actually coding. But, as M2G mentioned, you gain a real understanding of what all these other languages are doing behind the scenes.2. Start with a higher-level language that teaches good programming skills you'll use later, and that hides the details from you so you can focus on UI, data access, and business logic programming. This would mean starting with Java (the most popular starting language among most universities), C#, VB, C++.
3. Start with Lisp - MIT starts with lisp because it is super-high level and shows you very little of what's going on in the real world.
Personally, I'm with Chi...Start with C# or Java. Learning good style and object oriented programming is more important than learning about pointers, registers, and I/O ports. Certainly more important than knowing how many parenthesis you can put on one line with LISP. (Lisp is jokingly referred to as standing for "Lots of Irritating Superfluous Parentheses").
Python is fine, but I think you'd benefit more from starting out with a strongly typed language that you can develop applications in right off the bat. C# if you can afford it.
Good luck,
-SN

Unfortunately, C gets that efficiency by requiring you to do a lot of low-level management of resources (like memory) by hand. All that low-level code is complex and bug-prone, and will soak up huge amounts of your time on debugging. With today's machines as powerful as they are, this is usually a bad tradeoff — it's smarter to use a language that uses the machine's time less efficiently, but your time much more efficiently. Thus, Python;P

"i run them and nothing happens"
Well, that narrows it right down.
If you are going to accomplish anything in 'programming' you will need some effort and some precision.
If at first you don't succeed, you're about average.M2

Um thanks everyone.I might already have a python compiler so ill start with that
<insert witty/meaningful quote here>

Hi, My first language was C. I think that it was a very good start, so I would reccomend you do C as well. :)
Dave.

ok n00bs:P here is the ultimate list of language you should learn from beginning to end:
1. Python
2. XHTML (the latest "dialect" of HTML, becasue you need to be able as a programmer to integrate with internet
3. Turbo pascal (only becasue this is the language with most books/tutorials/articles out there and you learn a very structured and meaningfull language)
4. Java (This producers more powerful code)
5. Perl (is in use all over)
6. LISP (just for the satisfaction of master it)
7. C++ (the most powerfull and accurate language there is. However you will have to do a lot of debugging, which you will have learnt to master in the previous languages)After you have mastered these most commonly known programs, you should be able to learn a new one just by lerning the syntax in 3-4 days tops

MediocreMan,
Well, this is certainly an interesting post. I love to read about what other people suggest starting with and how they got their own starts. For what it's worth, heres my $0.02.
I would suggest deciding on a language based on what you want to do. Do you want to write device drivers? Video games? Operating systems? Desktop utilities? Now, before I get criticism, you may very well not know which you want, and there's nothing wrong with that. However, if you do have an idea, it could help narrow you down so you can get there the fastest. It's like math: why study solid geometry when all you wanted to do was balance your checkbook.(though the two may be related in some way..... :) )
Anyways, if you want to do low-level stuff like games, os's, or device drivers, you'd better start off low level imho. Now, I wouldn't go as far as M2G and say learn ASM, but it's not an easy road. ASM is difficult, trying to debug, and time consuming. Realistically speaking, it's only used for _extremely_ low level stuff in parts of device drivers and os's and for those time critical rendering loops found in video games. Otherwise, _most_ (though not all) people try to avoid it.
Instead of going straight to ASM, I'd suggest C/C++. Master C first then add the C++ stuff to get into OOP. imho, C++ is more than enough OOP, but I'm sure that's because of my lack of knowledge of OOP. After learning C, you will have mastered many lower level techniques that will be critical while developing drivers, games, and os's. I would suggest using the OpenWatcom package found at www.openwatcom.org. This used to be a premiere compiler worth about $350. That's what I paid for it when I was 13 and now it's free: it's a great opportunity.
If you're more interested in Windows apps, you're going to give yourself a headache in C/C++. I'd go with C# or at the very least VB.Net. The express versions of both of these are available for free from www.microsoft.com until next November. Again, another great opportunity.
Web got you going? Then definitely PHP, DHTML, and probably Perl would be a good start. From there, I'd suggest ASP because many people already use it. If you apply for a job, you'd want ASP with at least VB and C# proficiency to be seen.
Once you start down these avenues, you'd be able to branch out into other languages. You're not restricted to one way, but it's encouraging to see yourself working towards a goal instead of learning 15 languages when all you needed was QuickBasic! Stick in there and I'm sure you'll do great. For the record, my first language was C because I was going to be the next John Carmack.... :). Like that'll ever happen!
Sorry for the _long_ post.
Stephen
"Live long and PROGRAM......or at least do _something_ with all that time...!"

Make sure you don't start with a language that is already outdated. I was at a big well known book store the other day and could not find any VB6 books anymore; the salesman said that they haven't carried any books on VB6 for over a year because it is "outdated".

Hi guys,
hukre
Vb6 is not outdated it is now vb.net, they are the same. VB.net is fully object oriented. vb is the best language to start with. VB is both easy and powerful. proper programming form depends on the programmer not on the language.deus

"Vb6 is not outdated it is now vb.net, they are the same. "
A more incorrect statement has never been made...VB.NET and VB6 are not the same. They share some syntactical similarities and that's about it. Given that syntax isn't nearly as important as the framework and style when learning a language, VB.NET has more in common with C# than it does with the old VB6."proper programming form depends on the programmer not on the language."
I agree, but some languages encourage better programming form than others (think Perl vs. Java.) In my opinion, VB has grown up and now is in the same ranks as C# and Java in terms of how clean and well structured the code is. But, as Chi said, there's not much point to learning it since you might as well do C# since it's the 'flagship language' of the .NET framework.I agree with Stephen...Which language you need to start with is dependent on what you want to do. If you don't know what you want to do, start with a popular, object oriented, well rounded language like C++, Java, C#, or VB.NET.
Good luck,
-SN

Hi,
VB.NET and VB6 are not the same.
If you open a VB6 application in VB.Net environment, the VB6 application will automatically convert into VB.Net code. Of course, sometime one might have to do some minor changes. This is because VB.Net has been beefed up with a lot of good stuffs that the old VB may not support.
I do understand your points, however, some expert classified VB.Net as VB7.
I will not go into details. If you need more details, I may go into some latter.
Deus
Deus

Ok, let me join the fight.
1) VB.NET is in no way the same as VB6. Anyone who says so doesn't know the first thing about VB.NET. VB.NET is an Object Oriented Programming Language based on the .NET Common Language Runtime system. VB6 doesn't know a damn thing (and never could know a damn thing) about running as managed code. The syntax is similar, however that matters not one whit, as you should know if you know anything about programming languages. A programming language simply allows you to type syntax to complete an task. You can make a hello world application in ASM, C/C++, C#, Java, Python, COBOL, VB6, VB.NET, Borland Delphi, or even LISP...but just because they perform the same task and the output looks the same, does not mean they have ANYTHING in common with each other. The reason you can load a vb6 application into vb.net and it will convert it (as best it can) to vb.net is because vb6 is a simple language. I could write a conversion program that would convert vb6 to c#, c++, Java, etc... if I wanted to, but that does not mean that VB6 is the same as the resulting languages' code base. (phew)
2) Mattara appears to be a web developer. So his list of languages you should know reflects that. I should say that if he were to approach the list from a foundation aspect as opposed to a web/results aspect he would find his list is sorely incorrect. Check out the courses offered from any reputable institution (read college/university NOT Technical Institute) and you will see that the FIRST language they have you learn is...drum roll please...C++. Why? Because C++ allows you to learn in a gradual manner, building upon the procedureal roots and previous lessons, until you are able to do object oriented powerful programs (and some quite academic such as traversing a binary tree using doubly-linked lists - something you could not do in any language that does not have pointers and pointer mathimatics). You may never need, itrw, to build a system using binary trees and doubly-linked lists, but once you have mastered them you start to see more possibilities when you are given an assignment from you boss.
Now, one last thing: Anyone who knows me, knows that I have defended VB6 from the onslaught of holier-than-vb types since VB4. I have also made it clear to anyone who is willing to listen to my ramblings that a programmer who's first language is VB typically is the worst programmer. I have NEVER hired anyone who's first language was VB, even for a VB position, unless they have a degree to go with it (meaning that they started with VB at home but then took a proper IS degree path and learned). Why? because they lack discipline and understanding of software engineering and design. Most of the people I have hired have as their first language C/C++ or Java. Both very good at teaching software engineering and both object oriented. If, however, I have a candidate who has Java as their first language and another with C/C++ as their first...I will always (barring any personality disorders that arise during interviews) go with the C++ guy because he has had to clean up after himself and protect his pointers and memory heap space.
bottom line, if you want to be a professional who can stand with the big boys...learn C++, Java, or C# FIRST! Once you know C++ and/or Java, however, the rest of the languages become syntax challenges...not learning challenges...so they are simple to pick up.
Chi
(started with C in 1982)They mostly come at night...mostly.

Hi guys,
Chi,
<Ok, let me join the fight.>
Joining a fight without proper education to fight is considered as suicide. Before joining a fight, one has to accumulate weapons and know how to use them well.
Please, this is not a fight, but rather an intellectual discussion. The purpose of this discussion is not to win. There is no need for emotion. I come to this site to learn and not to fight.<The syntax is similar>
<A programming language simply allows you to type syntax to complete an task. You can make a hello world application in ASM, C/C++, C#, Java, Python, COBOL, VB6, VB.NET, Borland Delphi, or even LISP...but just because they perform the same task and the output looks the same, does not mean they have ANYTHING in common with each other.>The syntax is the rules of the language. If the syntax is alike, therefore, the languages are also alike.
To make an Hello world application for different languages, such as C/C++, C#, Java, Python, COBOL, Borland Delphi, or even LISP… One has to use different syntax for each language. If you use the same syntax for two different languages, that means the languages are the same. The syntax of the language is what makes the language. The .Net framework is not visible to the user. The user uses the syntax of the language to communicate with the compiler. Therefore the same set of instructions that create the Hello World application in VB6 could be use to create the Hello World application in VB.Net.<but just because they perform the same task and the output looks the same, does not mean they have ANYTHING in common with each other.>
I understand your point. However, VB6 and VB.Net not only perform the same task when the output looks the same, they also use the same set of instructions.
<The reason you can load a vb6 application into vb.net and it will convert it (as best it can) to vb.net is because vb6 is a simple language.>
VB6 is not a simple language. VB6 is a monster in disguise.
<Check out the courses offered from any reputable institution (read college/university NOT Technical Institute) and you will see that the FIRST language they have you learn is...drum roll please...C++.>
Where do you get that?
<Why? Because C++ allows you to learn in a gradual manner, building upon the procedureal roots and previous lessons, until you are able to do object oriented powerful programs.>
C++ does no allow you to learn in a gradual manner. Learning in a gradual manner is an individual choice. It can be done using any language.
<and some quite academic such as traversing a binary tree using doubly-linked lists - something you could not do in any language that does not have pointers and pointer mathimatics).>
Pointers were built in to the C language to handle a problem with function calls. The most effective use of pointer is to create variable on the free store. Most languages do not use pointer because it is not something as important as you think. Playing with the memory space of the computer is not advantageous in any sense. You can do almost anything in VB6 or VB.NET without using pointers.
Software engineering is a bunch of observations and rules that the programmer should not violate. It has nothing to do with VB6; again it is all up to the programmer. Because VB6 lets you violate a few rules, in my opinion it is the best language to teach software engineering.<go with the C++ guy because he has had to clean up after himself and protect his pointers and memory heap space.>
That’s the problem with the C language it stresses the programmer. A lot of things that the compiler supposes to take care of are being put on the shoulder of the programmer. VCRs, Televisions, computers, Printers, etc... are becoming easier to programmer. The same rule should apply to computer languages. This is the reason why instead of using DOS we are now using Windows. Windows is way easier than DOS, some people will disagree with me on that; however, it is the truth. If the question was “What operating system should I use?” You will find a lot of people say “Use DOS”.
<bottom line, if you want to be a professional who can stand with the big boys...learn C++, Java, or C# FIRST!>
You are still leaving in the past. As far as VB6 and VB.NET is concerned there is no big boys anymore. As Brian Siler and Jeff Spotts put it in the book Using Visual Basic.NET “Not only does VB.NET Support now programming features (such as inheritance) but the language itself also shows a common foundation with other VS.NET language. This fact, along with the wealth of new programming functionality provided by the .Net framework, really levels the playing field between the capability of VB and C++.
<Once you know C++ and/or Java, however, the rest of the languages become syntax challenges...not learning challenges...so they are simple to pick up.>
Because the concept of programming is the same in any language, once you know any high level programming language very well; all you have to learn from any other high level programming language is the syntax.
Deus,

Hey all,
Deus, you've got some interesting points--seriously, some good stuff to consider. However, I would still say that if you want to program OS's and low-level drivers, starting with C is not a bad idea. Sometimes playing around with memory is the only way to do some of the tricks we rely on every day, and, unfortunately, VB just doesn't offer that power. Also, your comment that,
"Most languages do not use pointer because it is not something as important as you think. Playing with the memory space of the computer is not advantageous in any sense."
is something I'd have to disagree with as well. If pointers weren't important, ASM wouldn't use them as much as it does. That's why I (and I think others) promote C/C++ as a first choice: it is without a doubt one (if not the only) language which comes _very_ close to bringing ASM into a workable domain. _Almost_ anything you can do in ASM can be done in C. However, as M2G pointed out in the beginning, ASM is the true "mother-tongue", and should be learned if the full power of the CPU is to be exploited (MPEG coding of any kind, graphics engines, and OS's).
But, if you're not interested in doing low level work/game programming, then DON'T WASTE YOUR TIME with C/C++! I would say C# (even though I'm not familiar with it) would be 10,000 times better for developing an application with an extensive Windows GUI. And, for people like me who don't know C#, VB.Net works great. Anytime I want that neat little utility app spun out in less than an hour, you'd better believe I pull out my VB before anything else.
Hey, a lot of opinions on this thread. This is great stuff! Keep it coming, I love learning from you guys!
Stephen
"Live long and PROGRAM......or at least do _something_ with all that time...!"

"The syntax of the language is what makes the language. The .Net framework is not visible to the user."
Two very incorrect statements that nobody with a knowledge of what .NET is all about would make. My point can be illustrated by a simple fact: It is much easier for a C# programmer to learn VB.NET than it is for a VB6 programmer to learn VB.NET. Why? Because C# and VB.NET use the same .NET framework classes to accomplish the same task, and VB.NET and VB6 only use the same syntax. It's much easier to learn syntax than it is to learn a development framework.
One of the challenges I had when leaving my first .NET job where I used VB.NET was convincing potential employers that I was qualified for C# jobs...That not only are VB.NET and C# similar, they are practically the same. If you know VB.NET, it will take you a couple of hours tops to learn basic C# and vice versa. In contrast, a good VB6 programmer could easily spend months becoming familiar with VB.NET.
Secondly, not only is the .NET framework visible to the user, it is EVERYWHERE!!! Nobody who understands .NET even a little bit would say the framework isn't visible. Nearly every line of your code uses a framework class or a class that derives from a framework class. That's why VB6 and VB.NET are not as similar as you think...The syntax corresponds, but you can't use the same classes in each language to actually get anything done.
"VB6 and VB.Net not only perform the same task when the output looks the same, they also use the same set of instructions."
No, they don't. Again, you obviously haven't used them both. Try putting System.Console.WriteLine("Hello World") into your VB6 app and see how it works out for you.In summary, I disagreed with very close to every word you said, but I don't have any desire to go through line by line.
I agree with what Chi said about there being a distinct separation between old-school C/C++ programmers and we who started with higher-level languages. No matter what language they currently use, old-school C/C++ programmers are the best programmers in the industry. Sadly, Chi was wrong about most universities starting with C++ - the majority now use Java as a starting language.
-SN

Hi guys,
Stephen,
<However, I would still say that if you want to program OS's and low-level drivers, starting with C is not a bad idea.>
Longtime ago, most of low-level libraries and classes were only available to the C programmer. During that era, almost everything one needs to do requires some knowledge of the C languages. VB.NET solves that problem. Today every single low-level library that uses to be only the domain of the C programmer is also available to the VB programmer.
<Sometimes playing around with memory is the only way to do some of the tricks we rely on every day, and, unfortunately, VB just doesn't offer that power.>
It may appear to you as the only way; however, there is always many other ways to achieve the same result without using pointers. Those other ways may in fact be better. Using pointers is not safe. Improper usage of pointers is often the result of computer crashes and memory leaks. Using too many pointers always leave a slim probability for disaster.
<ASM is the true "mother-tongue", and should be learned if the full power of the CPU is to be exploited (MPEG coding of any kind, graphics engines, and OS's).>
Because C is a low level programming language, it is closer to the hardware and therefore faster than many high-level languages. Computer speed is getting faster and faster, any algorithm that requires speed can be achieved with today s computers. Because MPEG is an algorithm that requires speed, it uses to be the domain of C programmers. MPEG compression takes advantage of the non-variable pixels of the background image.
Now DirectX library makes it possible to write computer games and graphic engines with ease. DirectX uses to be only available to C programmers, now it is also available to VB programmers as well.<But, if you're not interested in doing low level work/game programming, then DON'T WASTE YOUR TIME with C/C++!>
I can admit that C was king long time ago; however, today C is just an outdated language.
SN,<Two very incorrect statements that nobody with a knowledge of what .NET is all about would make.>
You might have to re-examine your understanding of the .Net framework a bit.
<My point can be illustrated by a simple fact: It is much easier for a C# programmer to learn VB.NET than it is for a VB6 programmer to learn VB.NET.>
This is a personal opinion, not a fact. I strongly disagree with it. It will take a VB programmer a couple of minutes to start doing his things in VB.NET. The syntax is the same; VB.NET's IDE can be configured to look the same as the classic VB IDE. Additionally the complete VB library can also be imported into VB.NET. You seem to lack the understanding of both VB as Well as VB.NET.
<Why? Because C# and VB.NET use the same .NET framework classes to accomplish the same task, and VB.NET and VB6 only use the same syntax. It's much easier to learn syntax than it is to learn a development framework.>
Almost everything in VB is included in VB.NET. VB is a subset of VB.NET.
Your second statement is a personal opinion, not a fact. The language is the syntax. The syntax is the only thing that differentiated C# from VB.NET. If two languages share the same syntax; therefore they are the same language. VB shares its syntax, its IDE and its library with VB.NET. In other terms VB is not VB.NET, but VB.NET is VB.<If you know VB.NET, it will take you a couple of hours tops to learn basic C# and vice versa. In contrast, a good VB6 programmer could easily spend months becoming familiar with VB.NET.>
I don t think so! Again, this is your own personal opinion. In my opinion, a good VB6 Programmer needs a couple of minutes to start programming in VB.NET.
<Secondly, not only is the .NET framework visible to the user, it is EVERYWHERE!!! Nobody who understands .NET even a little bit would say the framework isn't visible.>
The class library is only part of the .NET framework. The .NET framework is urge. The CLR is not visible.
<Nearly every line of your code uses a framework class or a class that derives from a framework class. That's why VB6 and VB.NET are not as similar as you think...The syntax corresponds, but you can't use the same classes in each language to actually get anything done.>
I read from Deitel Developer Series Visual Basic.NET was created from Visual Basic 6.0 by Microsoft expressly for its .NET platform. Using the Imports Visual Basic keyword, you can import the whole VB library into VB.NET. This little trick will permit you to use VB code into VB.NET environment. Because VB.NET has so many goodies added to it, many of the new classes are not supported in VB.
<No, they don't. Again, you obviously haven't used them both. Try putting System.Console.WriteLine("Hello World") into your VB6 app and see how it works out for you.>
As soon as you put the dot after the word System , VB's intellisense would let you know that the System class is not supported. This is one of the beauties of the VB language. In fact your example doesn t make sense. Base on the law of backward compatibility, classes in VB should work in VB.NET; however, classes in VB.NET are not necessary have to work in VB. If you have used them both, you still have a lot to learn.
<In summary, I disagreed with very close to every word you said, but I don't have any desire to go through line by line.>
This statement has no foundation to discredit someone. It would be better not to say anything at all. I could have said the same thing; however, I want to show you that you are the one who is wrong about the whole thing.
<No matter what language they currently use, old-school C/C++ programmers are the best programmers in the industry.>
This is again your personal opinion, not a fact. An intellectual discussion must be based on facts. A good driver is a good driver. It doesn t matter which car he chooses to drives.
<the majority now use Java as a starting language.>
Where did you get that?
I went to college, my first language was VB and my first assignment was to solve a quadratic equation. The first language must be easy to learn. Learning is a natural process, it must start from easy and gradually becoming harder and harder, not the other way around. Start with a difficult language is not in harmony with the natural process of learning. It may force many students to drop out.I read from an expert:
The trouble with pointers is that they are inherently unsafe. They make it easy to corrupt memory, overwrite data and crash your applications. C# discourages the use of pointers but does permit their use within blocks of code marked with the unsafe directive.
Code marked with the unsafe directive is unmanaged . This means that it is run as native machine code without benefiting from the services of the CLR. The use of pointers may be useful for certain special programming tasks that require the direct manipulation of memory or interaction with COM. In most cases, however, the .NET Framework provides all the services your program requires without having to resort to the hazards of unmanaged code. VB.NET is more restrictive than C# in this respect. It does not permit the use of unsafe code under any circumstances.Even so, it is not quite true to say that pointers can never be used. VB.NET provides access to pointers using the IntPtr type. This allows a limited range of pointer operations. For example, an IntPtr variable can be used to store a handle to a file or a window.
Deus,

"This is a personal opinion, not a fact."
You keep on pointing out that my points are opinions - this really isn't necessary. Any half-wit can see that nearly everything I write on this forum is an opinion - what does that have to do with anything?"If you know VB.NET, it will take you a couple of hours tops to learn basic C# and vice versa. In contrast, a good VB6 programmer could easily spend months becoming familiar with VB.NET.
I don t think so! .... In my opinion, a good VB6 Programmer needs a couple of minutes to start programming in VB.NET."
Maybe true to start programming in VB.NET, but to get at a professional level, the VB6 programmer will be ages behind a C# programmer - Again, this is because it takes months to get at a professional level with the .NET framework, but only hours to get at a professional level with the syntax.
To illustrate my point, let's have a 'pretend race' between a VB6 programmer and a C# programmer - neither has ever had any exposure to VB.NET at all. They're given a list of typical VB.NET programming projects. No internet access allowed, and each is given a simple VB.NET 'hello world' application as an example (illustrating imports, function/sub definition, and variable declaration and assignment). Which one would finish first?
1. Read in a comma separated text file, sort the data by a particular column, and write it back out to a different text file.
C# programmer: Knows he has to use StreamReader and StreamWriter in the System.IO.File namespace, open it as a text file, create classes to represent the data, implement the IComparable interface, and use ArrayList.Sort (or something similar). Just has to figure out how to declare the variables, functions, etc. Any mistakes he made are caught and explained accurately by the compiler.
VB6 Programmer: Starts looking for a FileSystemObject class somewhere...Can't find it. His mistakes are much more difficult to debug, since the compiler is likely to give 'type not found' kind of errors. Where does he go from here?2. Call a stored procedure on a given database, and show the results in a grid.
C# Programmer: Immediately goes to the System.Data.SqlClient namespace and knows he has to use the SqlDataAdapter, SqlCommand, SqlConnection objects, and knows exactly which properties to set to make it work. Then uses a datagrid to bind to the resulting dataset and he's done.
VB6 Programmer: Starts looking for some kind of CreateObject method to get at his ADODB COM objects - even if he figures out how to do it, he's using an outdated method. Has no idea the SQLClient namespace even exists, much less which of the many classes and properties he needs to set to get everything to work. Once he gets that far, he starts looking at a listview or a control array to loop through the data and add items one by one. Wrong, wrong, wrong.We could go on and on - the C# programmer is miles ahead in nearly every non-contrived example you can think of. Sure, the VB6 programmer will come out ahead by a few minutes in some very trivial tasks, but for anything meaningful, he's got a lot of work ahead of him.
"Secondly, not only is the .NET framework visible to the user, it is EVERYWHERE!!! Nobody who understands .NET even a little bit would say the framework isn't visible.
The class library is only part of the .NET framework. The .NET framework is urge. The CLR is not visible."
You didn't say 'The CLR is not visible', you said 'The .NET framework is not visible.' I'm well aware that the CLR is not directly visible and that the class library is only a part of the .NET framework - neither of those facts has anything to do with our discussion. From the developers perspective, the class library is the most important part of the .NET framework, and the fact that you said the framework isn't visible, then tried to cover it up by changing your statement really magnifies how little you know about the subject."<the majority now use Java as a starting language.>
Where did you get that?"
See statistics here - Java as a starting language"I went to college, my first language was VB and my first assignment was to solve a quadratic equation."
Then either you did not go to a major, accreditied university or you did not major in a computer science or computer engineering. I imagine some business-centric computer information systems degrees still use VB, but those curricula are business oriented and are not aimed towards the aspiring professional developer.
old-school C/C++ programmers are the best programmers in the industry.
"This is again your personal opinion, not a fact. An intellectual discussion must be based on facts."
Why does an intellectual discussion have to be based on facts? Does that mean we're not allowed to discuss philosophy, literature, or art intellectually? On the contrary, most intellectual discussions consist mostly of opinions that are based on the experience and education of the participants. In this case, I'm basing my opinion on my experiences with co-workers who started with C/C++ and those who started with other languages. Old-school C programmers have mad skills."A good driver is a good driver. It doesn't matter which car he chooses to drives."
There's some truth to that - but your analogy works more to my point than yours. A driver that learned how to drive in a car whose brake pedal was on the steering wheel and the gas pedal was on the headrest would have a difficult time adjusting to a standard car, even if it looked the same on the exterior. Similarly, VB6 and VB.NET look similar at first glance, but when you start using them you find out that how you actually get from point A to point B is completely different.I'm going to continue ignoring your opinions about pointers, since your original statement "Pointers were built in to the C language to handle a problem with function calls" should sufficiently discredit your knowledge of the subject to any halfway educated observer. That's like saying that God created the earth to fix a problem he had with the fish!!! Pointers were built into the C language because pointers are how programming works at the lowest level of their operation - registers, memory addresses, the stack, et al.
-SN

![]() |
![]() |
![]() |

This post is quite old and has been locked from receiving new replies. Please create a new posting instead.
| Ads by Google |