recommendations for learning VB.Net

talion83

Member
Mar 21, 2011
67
0
61
I am wondering if anyone has recommendations for a good book/publication for learning VB.Net (and if possible on VS 2010). It is intended for someone who has never programmed before and has very limited knowledge regarding how programming works.

I am hoping to find a book that explains what you are doing and why...but also something that doesn't give too much extra information. The person it is intended for has a minor autism which mentally sets him back a few years, so while he is 18 - mentally he is closer to a 14 year old (...though that is also to blame on his parents and the public school system, but I won't get into that...).

The reason for VB.Net is simply because I am familiar with VB so if he runs into any issues I may be able to help (though part of this will hopefully be me teaching him how to reach out to other resources for assistance).

Thank you for any suggestions the collective might have.
 

Cogman

Lifer
Sep 19, 2000
10,283
134
106
VB and VB.Net are pretty different languages. If the whole reason for picking VB.Net is that you are familiar with VB, you might want to reconsider.

For example, Python and Ruby are both very high level languages that have lots of support and beginners guides available. For example

http://python4kids.wordpress.com/

and

http://www.amazon.com/Python-Program.../dp/1592000738

Python has the advantage that it has an EXTREMELY loyal community that is convinced that python is the one and only language. This means that you get a lot of advocates that will walk you through any trouble you might be having.

VB, on the other hand, is a somewhat dated language that doesn't have a lot of love. You'll struggle to find good resources for it because, frankly, the only reason to use VB or VB.Net is that you are supporting a legacy app. It isn't the easiest or the prettiest language to learn (IMO).
 

Pia

Golden Member
Feb 28, 2008
1,563
0
0
Seconded. The best recommendation for learning VB.net is "don't". Ruby or Python are a better idea.
 

Markbnj

Elite Member <br>Moderator Emeritus
Moderator
Sep 16, 2005
15,682
14
81
www.markbetz.net
Seconded. The best recommendation for learning VB.net is "don't". Ruby or Python are a better idea.

C# is also a better idea, and arguably better than either Ruby or Python for development on the Windows platform.
 

Cogman

Lifer
Sep 19, 2000
10,283
134
106
C# is also a better idea, and arguably better than either Ruby or Python for development on the Windows platform.

I was very close to recommending C#. It is a good language, I would just say that I feel like ruby/python have slightly more beginners support.
 

talion83

Member
Mar 21, 2011
67
0
61
If VB and VB.Net are that much different then I will look into other options. I am leaning a bit more towards C# - I have actually used this language before, it has just been about 8 years or so.

Ruby and Python I know of by name, but that is about as much as I know about them. I was recommending .Net to him because I know it is a compiler that is actively used and supports multiple languages.

I will start my search again looking at Ruby, Python, and C#.
 

brandonb

Diamond Member
Oct 17, 2006
3,731
2
0
Everywhere I've ever worked in the programming world since 1997 has used VB of some sort, either VB6 or VB.net. Sprinkle in a bit of C++, or another platform along with the VB, but all the places have been mainly VB in some fashion. Maybe it's just coincidence or luck.

Programming snobs who visit programming forums like to say otherwise though, and say it serves no purpose, but it does. I'll be the one who will stand up and say VB.net is perfectly fine to learn.
 

douglasb

Diamond Member
Apr 11, 2005
3,157
0
76
Everywhere I've ever worked in the programming world since 1997 has used VB of some sort, either VB6 or VB.net. Sprinkle in a bit of C++, or another platform along with the VB, but all the places have been mainly VB in some fashion. Maybe it's just coincidence or luck.

Programming snobs who visit programming forums like to say otherwise though, and say it serves no purpose, but it does. I'll be the one who will stand up and say VB.net is perfectly fine to learn.

It's a much more viable language in the workplace now than it once was, but I still consider it a horrible starting point to learn programming. Yes, it's easy, but it can teach you a lot of bad habits that other languages won't let you get away with. Also, almost nothing in VB .NET, from a syntactical standpoint, translates well to other languages. At least with C#, once you have a basic understanding of it, you can learn things like C++ and Java fairly easily. VB .NET is basically a "dead-end" language, in my opinion. It has its place, but I would start with something else like Java or C#.
 

talion83

Member
Mar 21, 2011
67
0
61
After doing some reading up on Ruby and Python, I think I am going to stay with .Net and move over to C# due to my familiarity with Visual Studios (and to a degree C#). If he likes programming he can go off in whatever direction but as initially I am the one helping, I am going to stay in my comfort zone...though if he does like to program, I am going to encourage him looking into other languages.

Nostalgic rambling below this point.....

My horrible starting point for programming was basic...we started doing VB about half way through the school year because we got some new computers that could actually run windows - I think it was 98 or 2000 on them at the time. But we only got enough for half the class room, so we would take turns between programming in VB and Basic.

One of the first things I made in VB was that 'click OK to close' that would always make the 'OK' jump away from your mouse...which I then upgraded to having be full screen and removing the Minimize/Close icons. The sad part is, in a programming class the teacher had to ask me to stop leaving it running because other students couldn't figure out how to exit it (to be honest, I'm not sure the teacher knew either).
 

Markbnj

Elite Member <br>Moderator Emeritus
Moderator
Sep 16, 2005
15,682
14
81
www.markbetz.net
I was very close to recommending C#. It is a good language, I would just say that I feel like ruby/python have slightly more beginners support.

Hmm, that's an interesting comment. I find the documentation pretty good for Python and frameworks like Django, and there are active communities that will answer questions. But all in all they don't come close to Microsoft's MSDN offerings in terms of docs, anyway. What other forms of "beginner support" are you thinking of? That the language and environment are just simpler? I'd buy that.
 

PhatoseAlpha

Platinum Member
Apr 10, 2005
2,131
21
81
Meh. VB and VB.net are two drastically different languages and should not be grouped together. It's like grouping C# and C - the two just aren't that similar.

By comparison, VB.net is essentially C# with a different syntax. Same framework, same functions, same development environment. Similar enough that machine translation between the two is viable.

At any rate, it's all down to learning frameworks and which version of syntactic sugar you prefer. The important concepts are all cross-language.
 

douglasb

Diamond Member
Apr 11, 2005
3,157
0
76
Meh. VB and VB.net are two drastically different languages and should not be grouped together. It's like grouping C# and C - the two just aren't that similar.

By comparison, VB.net is essentially C# with a different syntax. Same framework, same functions, same development environment. Similar enough that machine translation between the two is viable.

At any rate, it's all down to learning frameworks and which version of syntactic sugar you prefer. The important concepts are all cross-language.

This is a gross oversimplification, although I do agree that C# and VB .NET are very similar in terms of capabilities. There are a few fairly major differences, though:

1. VB .NET does not allow blocks of unsafe code. C# does.
2. No pointers in VB .NET
3. No partial interfaces in VB .NET
4. In VB .NET, evaluation vs. assignment is inferred by the compiler. For example, in C#, if you try:
Code:
(if x=1)
{
   // do some stuff
}
the statement will assign a value of 1 to x, return true, and execute the code block every time. In VB .NET, the compiler will infer that you are doing a comparison, evaluate the value of x, and act accordingly. Technically this is a difference in syntax, but it's major enough that I feel it warrants mentioning.
5. VB .NET has XML literals. C# does not.

There are quite a few other differences, but these are the major ones that come to mind. But for the most part, the 2 languages are very similar in terms of their capabilities. As they should be, since they both compile to a common intermediate language.
 

Pia

Golden Member
Feb 28, 2008
1,563
0
0
4. In VB .NET, evaluation vs. assignment is inferred by the compiler. For example, in C#, if you try:
Code:
(if x=1)
{
   // do some stuff
}
the statement will assign a value of 1 to x, return true, and execute the code block every time. In VB .NET, the compiler will infer that you are doing a comparison, evaluate the value of x, and act accordingly. Technically this is a difference in syntax, but it's major enough that I feel it warrants mentioning.
The fundamental problem here would be that = and == are too similar. But as long as they aren't going to fix that, the sane way to react to the if (x=1) error would be compiler warning, which is what you get in C and C++. Language silently changing behavior like outlined above seems just wrong, IMO. "Write anything you like and I'll try to guess what you meant!"
 

Cogman

Lifer
Sep 19, 2000
10,283
134
106
Hmm, that's an interesting comment. I find the documentation pretty good for Python and frameworks like Django, and there are active communities that will answer questions. But all in all they don't come close to Microsoft's MSDN offerings in terms of docs, anyway. What other forms of "beginner support" are you thinking of? That the language and environment are just simpler? I'd buy that.

Well, in terms of docs very few things come close to the MSDN. That being said, most of the MSDN is geared towards more experienced developers.

But yeah, I would say that there is just a little less complexity to getting started with python or ruby. In C#, you start with OO in your face and if you use one of MSes form generators, there will be a lot of code that you may or may not understand being thrown at you.

Python or ruby doesn't offer a form generator, however, it is a scripting language. So you can get the whole thing up and running pretty seamlessly. A hello world program in a couple lines of easily explained code.

As far as beginners resources go. I would say that things like this ( http://www.learnpython.org/ ) give python a slight edge over C#. No IDE to download or install, you just execute python in the browser while you play with the tutorial.

That being said, Language doesn't really matter all that much
 

Cogman

Lifer
Sep 19, 2000
10,283
134
106
Everywhere I've ever worked in the programming world since 1997 has used VB of some sort, either VB6 or VB.net. Sprinkle in a bit of C++, or another platform along with the VB, but all the places have been mainly VB in some fashion. Maybe it's just coincidence or luck.

Programming snobs who visit programming forums like to say otherwise though, and say it serves no purpose, but it does. I'll be the one who will stand up and say VB.net is perfectly fine to learn.

You haven't felt the general push to move away from VB? In a recent job fair that I went to, there were approx. 100 different companies present from Micron, to nVidia to Google, and only one of those companies was actually looking for someone to write in VB ( http://www.fastenterprises.com/ ).

I just don't see the reason for VB any more. Microsoft's general push has been to make VB more of an alternative syntax for C#.
 

brandonb

Diamond Member
Oct 17, 2006
3,731
2
0
You haven't felt the general push to move away from VB? In a recent job fair that I went to, there were approx. 100 different companies present from Micron, to nVidia to Google, and only one of those companies was actually looking for someone to write in VB ( http://www.fastenterprises.com/ ).

I just don't see the reason for VB any more. Microsoft's general push has been to make VB more of an alternative syntax for C#.

No, I haven't. But I just did scan the current job openings in my state, and it seems C# would be a safter bet to learn.

With about 20 listings. 12 or so just said .net experience. 6 said C# or VB.net. 2 said C# exclusively. None said "vb.net" exclusively. But still, 90% of the listings would still hire based on vb.net experience.
 

PhatoseAlpha

Platinum Member
Apr 10, 2005
2,131
21
81
The fundamental problem here would be that = and == are too similar. But as long as they aren't going to fix that, the sane way to react to the if (x=1) error would be compiler warning, which is what you get in C and C++. Language silently changing behavior like outlined above seems just wrong, IMO. "Write anything you like and I'll try to guess what you meant!"

I'd say the sane way to deal with it is to not have assignment operators return anything. Having (X=23) assign 23 to x, then return true, is no less crazy then context determining the meaning of =.

If = is the assignment operator alone, then if (x=2) should be a full stop compiler error equivalent to "IF RETURN" or "IF FOR".
 

Markbnj

Elite Member <br>Moderator Emeritus
Moderator
Sep 16, 2005
15,682
14
81
www.markbetz.net
I'd say the sane way to deal with it is to not have assignment operators return anything. Having (X=23) assign 23 to x, then return true, is no less crazy then context determining the meaning of =.

If = is the assignment operator alone, then if (x=2) should be a full stop compiler error equivalent to "IF RETURN" or "IF FOR".

It assigns 23 to x, and then returns 23, which in a holdover from C is boolean true because it is non-zero. I'm not sure what your point is here. If you write a comparison:

if (x=23)

Then the compiler is just doing exactly what you told it to do. It's one of the reasons people back in the day learned to avoid writing comparisons with literals that way, and instead wrote:

if (23 == x)

Because if you mess up the comparison operator the case with the literal on the left will throw an error.
 

Pia

Golden Member
Feb 28, 2008
1,563
0
0
I'd say the sane way to deal with it is to not have assignment operators return anything. Having (X=23) assign 23 to x, then return true, is no less crazy then context determining the meaning of =.
Nope, it's useful that assignment operators return the left-hand value. Constructs like
while (0 == c = readLines()) { ... }
or
x = y = 1
make perfect sense, only the = and == visual similarity makes this a potential problem.

Like Markbnj explained, you actually seem to be complaining of ints being used as truth values (C) or automatic int to bool conversion (C++).

BTW, x doesn't have to evaluate to true after having 23 assigned to it if it's a C++ class.
 

PhatoseAlpha

Platinum Member
Apr 10, 2005
2,131
21
81
More accurately, I'm complaining that gaining

x = y = 1;

in exchange for the considerable probability of errors caused by putting = when you meant == is a terrible trade off.



Yes, it's traditional and entrenched. That doesn't make it any better - an old, heavily used bad idea is still a bad idea. Changing = and == would achieve a similar goal.
 
sale-70-410-exam    | Exam-200-125-pdf    | we-sale-70-410-exam    | hot-sale-70-410-exam    | Latest-exam-700-603-Dumps    | Dumps-98-363-exams-date    | Certs-200-125-date    | Dumps-300-075-exams-date    | hot-sale-book-C8010-726-book    | Hot-Sale-200-310-Exam    | Exam-Description-200-310-dumps?    | hot-sale-book-200-125-book    | Latest-Updated-300-209-Exam    | Dumps-210-260-exams-date    | Download-200-125-Exam-PDF    | Exam-Description-300-101-dumps    | Certs-300-101-date    | Hot-Sale-300-075-Exam    | Latest-exam-200-125-Dumps    | Exam-Description-200-125-dumps    | Latest-Updated-300-075-Exam    | hot-sale-book-210-260-book    | Dumps-200-901-exams-date    | Certs-200-901-date    | Latest-exam-1Z0-062-Dumps    | Hot-Sale-1Z0-062-Exam    | Certs-CSSLP-date    | 100%-Pass-70-383-Exams    | Latest-JN0-360-real-exam-questions    | 100%-Pass-4A0-100-Real-Exam-Questions    | Dumps-300-135-exams-date    | Passed-200-105-Tech-Exams    | Latest-Updated-200-310-Exam    | Download-300-070-Exam-PDF    | Hot-Sale-JN0-360-Exam    | 100%-Pass-JN0-360-Exams    | 100%-Pass-JN0-360-Real-Exam-Questions    | Dumps-JN0-360-exams-date    | Exam-Description-1Z0-876-dumps    | Latest-exam-1Z0-876-Dumps    | Dumps-HPE0-Y53-exams-date    | 2017-Latest-HPE0-Y53-Exam    | 100%-Pass-HPE0-Y53-Real-Exam-Questions    | Pass-4A0-100-Exam    | Latest-4A0-100-Questions    | Dumps-98-365-exams-date    | 2017-Latest-98-365-Exam    | 100%-Pass-VCS-254-Exams    | 2017-Latest-VCS-273-Exam    | Dumps-200-355-exams-date    | 2017-Latest-300-320-Exam    | Pass-300-101-Exam    | 100%-Pass-300-115-Exams    |
http://www.portvapes.co.uk/    | http://www.portvapes.co.uk/    |