VB.net programming

So I started reading a bit at this site and the syntax seems quite a bit different but I'm sure I'll get the hang of it when I actually start writing programs. Only thing is as far as I can tell he only uses console applications which is not exactly what I'm looking for.

Another thing what IDE should I use? Would Visual Studio 2010 be the best? Or are there other better IDE's.
 
I learned the principles from The C Programming Language by Kernighan and Ritchie. These guys invented C, so they know what they're talking about, and the book is amazingly well-written.

C++ and C# have added layer upon layer of abstraction to C. Abstraction is not a good place to start. Start with the fundamentals and get familiar with the basic data structures (linked lists, hash tables, stacks, queues, trees), memory management (pointers, allocation) and I/O (files and sockets). All programs in any language manipulate these things.

You won't be building GUIs in C. You will need to stick to the console to learn the basics. When I started I set myself a project -- you can build a simple chat server in C, for example. Write your code in Textpad. Keep it simple.

JavaScript is highly abstracted. It's easier to put it to work but it's harder to master. Personally I wouldn't bother with native GUIs now. I'd go straight from C into HTML and CSS, which is the "GUI" of JavaScript.
 
So I started reading a bit at this site and the syntax seems quite a bit different but I'm sure I'll get the hang of it when I actually start writing programs.

Syntax is nothing once you have the fundamentals.

Only thing is as far as I can tell he only uses console applications which is not exactly what I'm looking for.

Again, if you want to be a good programmer don't be worried about the GUI, anyone can drag-drop, set properties, align controls etc. You need to have the basics and know when (and when not) to use them.

Another thing what IDE should I use? Would Visual Studio 2010 be the best? Or are there other better IDE's.

Haven't used VS2010 but would imagine it's your best option for .NET development. You can download Visual C# Express for free from Microsoft's site, somewhat limited in terms of features but will provide everything you need to get started (and more).
 
... an example when you guys started talking about the reference and variable parameters you totally lost me, so somewhere along the line ...

I seriously wouldn't worry about it: I just used it as an example that there are fundamental differences in the approach from different technologies.

And here I'm going to disagree with Tomx3 a bit: I don't think it's a bad idea to start with GUI development, just be warned that you can enter a very deep learning curve that you can quickly get lost it: When trying to decide between different frameworks like Windows Forms, MFC, VCL, Swing, etc, etc: You will quickly get lost.

So again: Don't worry about it.

The trick about programming is that you need to be the type of person that want to tinker. That wants to know more of what's going on underneath the surface. As long as you have this curiosity and you apply a bit of discipline: you will get there. As you get stuck with different problems you will learn different technologies and different solutions.

As an example: If you want to quickly put together some application that you can browse a few pictures with, it's probably the quickest to bang something together in Visual Studio / C#. You drag and drop a few components, you click a few properties and you have a new application. Now the fun starts: I want to rotate the image. How is the image stored? Oh, in a Canvas object. What's a canvas object? Oh, it's an abstraction storing drawing information. What's drawing information, or for that matter, what's an abstraction ? ... etc, etc and sooner than later something like a reference parameter really isn't a big thing anymore.

If you actually like the backend more than the gui, then I would agree with TomTomTom x1000: Your best basis is C with a possible future line into HTML/XHTML/JavaScript or possibly you'll skip all of those and go directly to Haskel. All modern computer languages are based on C in some way or the other, so if you do understand C you have such a huge advantage. I, on the other hand, hate C. I explain this to laymen in the sense of I can read C fluently but I speak C with a very bad stutter. I love C++, and again, this is a debate better suited after you have a bit of experience of the 2. It's no use me telling you how easy it is C++ to treat an object as a native data type until you understand what an object and a native data type is. Or when this would be a benefit. This is not meant discouraging in any way, exactly the opposite. Programming is the one art I know about that teaches itself. All you need to do is allow it.
 
Tomtomtom said:
C++ and C# have added layer upon layer of abstraction to C. Abstraction is not a good place to start. Start with the fundamentals and get familiar with the basic data structures (linked lists, hash tables, stacks, queues, trees), memory management (pointers, allocation) and I/O (files and sockets). All programs in any language manipulate these things.

Very valid point, was just trying to list as many buzzwords as possible to get the interest flowing :) abstraction certainly not the right place to start learning, it can become very complicated very quickly especially if you don't know what you're doing or even worse, trying to accomplish. Data structures are very important, in fact one of the more "useful" subjects I took at varsity. And obviously, memory management, but only if you're working in a non-managed (native) environment, you can get "away" with not knowing about this. Sad.
 
If you want to quickly put together some application that you can browse a few pictures with, it's probably the quickest to bang something together in Visual Studio / C#. You drag and drop a few components, you click a few properties and you have a new application. Now the fun starts: I want to rotate the image. How is the image stored? Oh, in a Canvas object. What's a canvas object? Oh, it's an abstraction storing drawing information. What's drawing information, or for that matter, what's an abstraction ? ... etc, etc and sooner than later something like a reference parameter really isn't a big thing anymore.

As you say, it depends on where your interests lie. If you enjoy front-end development then time would be better spent figuring out how all these new fandangled user interfaces work BUT, and I say this with all due respect to people working with front end development (which I do my fair share of), it doesn't take a genius to figure out how to create a form or link pages together. Sure there are lots of cool things to play with and make it all shiny and sparkly but once it's there, it's done, rinse and repeat. The real thing goes on behind the scenes, building an extensible and robust architecture, stringing together multiple application layers, processing loads of data, optimizing performance, ironing out instabilities etc. If that's what interests someone then they shouldn't be wasting time (IMO) learning how to create a user interface. Maybe hack something together but don't spend time on it, if you are spending more time than coding, then you're a front end developer. Bottom line and you should focus on those skills instead of programming.

If you actually like the backend more than the gui, then I would agree with TomTomTom x1000: Your best basis is C with a possible future line into HTML/XHTML/JavaScript or possibly you'll skip all of those and go directly to Haskel. All modern computer languages are based on C in some way or the other, so if you do understand C you have such a huge advantage. I, on the other hand, hate C. I explain this to laymen in the sense of I can read C fluently but I speak C with a very bad stutter. I love C++, and again, this is a debate better suited after you have a bit of experience of the 2. It's no use me telling you how easy it is C++ to treat an object as a native data type until you understand what an object and a native data type is. Or when this would be a benefit. This is not meant discouraging in any way, exactly the opposite. Programming is the one art I know about that teaches itself. All you need to do is allow it.

+1
 
As you say, it depends on where your interests lie. If you enjoy front-end development then time would be better spent figuring out how all these new fandangled user interfaces work BUT, and I say this with all due respect to people working with front end development (which I do my fair share of), it doesn't take a genius to figure out how to create a form or link pages together. Sure there are lots of cool things to play with and make it all shiny and sparkly but once it's there, it's done, rinse and repeat.

Could probably debate this for hours, but in essence I agree. Basic applications any script kiddie can put together. Enterprise ready desktop applications has a notorious history due to exactly that, as believe me: just as much skill and art CAN go into that, and bad programming can destroy a good gui just as easily as bad programming can destroy a good server / middle tier application. Don't matter how good your backend is, if you can't get it to the user in a way that they need, it means nothing.

I also don't think desktop applications will die out any time soon. What I do find interesting is that it seems that Windows 8 will use HTML 5 to drive desktop applications, so +1 to JavaScript / HTML at some stage in your education ...
 
Could probably debate this for hours, but in essence I agree. Basic applications any script kiddie can put together. Enterprise ready desktop applications has a notorious history due to exactly that, as believe me: just as much skill and art CAN go into that, and bad programming can destroy a good gui just as easily as bad programming can destroy a good server / middle tier application. Don't matter how good your backend is, if you can't get it to the user in a way that they need, it means nothing.

I also don't think desktop applications will die out any time soon. What I do find interesting is that it seems that Windows 8 will use HTML 5 to drive desktop applications, so +1 to JavaScript / HTML at some stage in your education ...

And we're all on the same page :D

Some form of web development is definitely an advantage considering the way the world is moving. In fact, working on a JEE web application now it's amazing how handy those web skills are becoming.

I reserve comment on Windows 8, from what I've seen in the videos it looks like iOS for PC. Thankfully there's still a "windows" desktop although I sincerely hope you can set that as default, otherwise I'll be sticking with 7 as long as I did with XP ...
 
@ @@GJC@@: Don't let us bully you into using our favourite languages. :confused: You chose VB.net because you liked the way it looked, so carry on in that vein. I have a few e-books I can send you if you want, covering VB.net, C#, C, C++ and Java - just PM me your email address, and your chosen language, and I'll send one or two your way.

Once you've caught on to the basics (any language/platform will teach you the basics - heck, I learned via COBOL!) then you can decide for yourself where you want to take this. However, one thing should remain constant: programming should be fun.
 
Right so if I understand correctly the specific language is much less important than the principles and fundamentals and it would be good to start with a language that has the least abstractions so that I can learn to do the things on my so it would seem a logical choice to start at C.

I'm not too worried about only developing/making console applications for the moment but just one question. As you said earlier I will set a goal and then learn C while working toward the goal but tbh I'm not really sure what kind of a program I can aim to make in a console. :) So what do you guys think would be a good first program to aim for? Bear in mind that I only really know variables, arrays, procedures and functions, so I guess it would have to be something simple.

Also I hear what you're saying about learning as web based language (PHP, javascript, etc.) but I think I would like to learn at least one native language first just to get the hang of programming first.

@Raithlin The only reason I chose VB.net was because I heard some good things about it and just didn't really look into any of the other available languages. I appreciate the offer and will send a PM now :)

Also for C what IDE would I have to use? And as I asked before, what would be a realistic goal for a first program?

PS: Thanks for the replies so far, really very helpful

EDIT:
You won't be building GUIs in C. You will need to stick to the console to learn the basics. When I started I set myself a project -- you can build a simple chat server in C, for example. Write your code in Textpad. Keep it simple.

How would I go about coding in Textpad (I assume notepad would also work), would I just create a normal .txt file and then rename it/change the extension to something else?
 
Last edited:
So what do you guys think would be a good first program to aim for?

At the beginning, you'll want to keep it to just a few lines so that you can understand and test every line, so we're talking very simple programs. The book I suggested takes you through a lot of worked examples. Get the book, type the examples into Textpad (www.textpad.com), compile them (http://bellard.org/tcc/), run them, and check you understand what every symbol is for.

From there, the best thing you can do is find an existing open source program that you are interested in and use every day (this has to be your choice), download the source, work through it, and see if you can add something to it. This will throw you in at the deep end, and it's undoubtedly the best way to learn.

Textpad is all you need for C. It's a very good editor with syntax highlighting. Dedicated IDEs will complicate things in the beginning. Good luck.
 
Yes, console applications do somewhat limit what kind of projects you can do but you can still learn every single fundamental programming principle without building a user interface. For instance, think of some menial task that you perform on your PC on a regular basis and try to write some code that can replicate it e.g. searching for files, maintaining a to-do list, event a calculator. Sure these applications might already exist in your operating system or for download but that's not the point: you're learning. If you prefer working with a user interface, one big advantage of choosing something like Java, C# or even Delphi over C as a language to start with is that you can do just that: build a user interface very quickly and focus on the programming instead. But, in all honesty, working in a console eliminates the need to do ANY user interface development (except printing to and reading from the console) which means ... more focus on development!
 
*Talks about programming and compiling C*

Thank you, I think I will quickly word through the book that you recommended and will then look at a open source program and work my way through it. Do I understand correctly that by working my way through it I basically read the code and look up any and all code I dont understand untill I understand the whole program? Also at what type of program should I start with looking at the source?

I also figured out that I can just use Linux's Vi editor in conjunction with gcc, is this a better combination than textpad or should I rather opt for textpad?

*Talks about console applications*
Hmmm guess I didn't even consider trying to program programs that already existed like a calculator or such, though it is somewhat of a logical place to start, thank for the tip will definitely try this and something similar
 
Last edited:
Do I understand correctly that by working my way through it I basically read the code and look up any and all code I dont understand untill I understand the whole program? Also at what type of program should I start with looking at the source?

Yes. The man pages will help you out for function reference. What you choose to look at depends on what you find most interesting. Start with the book though and you'll move from there.

I also figured out that I can just use Linux's Vi editor in conjunction with gcc, is this a better combination than textpad or should I rather opt for textpad?

That's fine, and Linux is a good platform to work on if you're comfortable with it. I used Textpad on Windows because it was easiest. It makes no difference where you compile in the early stages because you won't be using any OS-specific features to learn.
 
If you're looking at C in Windows, I found (thanks to UNISA) that Bloodshed's Dev-C++ IDE is quite brilliant. Don't let the name fool you - it's as proficient in plain C as it is C++.
 
Yes. The man pages will help you out for function reference. What you choose to look at depends on what you find most interesting. Start with the book though and you'll move from there.

That's fine, and Linux is a good platform to work on if you're comfortable with it. I used Textpad on Windows because it was easiest. It makes no difference where you compile in the early stages because you won't be using any OS-specific features to learn.

Think I'll have a look at Textpad and see if I'm more comfortable with it than Vi

If you're looking at C in Windows, I found (thanks to UNISA) that Bloodshed's Dev-C++ IDE is quite brilliant. Don't let the name fool you - it's as proficient in plain C as it is C++.

Thanks will have a look at Bloodshed's Dev C++ as well

Also just out of interest what do you guys think about Delphi? Just curious because that's the only language our school teaches IT in.
 
Also just out of interest what do you guys think about Delphi? Just curious because that's the only language our school teaches IT in.

I can't comment because I don't use it, but it's object-oriented, which I think is the wrong starting point, for a number of reasons. But you will certainly benefit from learning as many languages as you can.
 
Yes. The man pages will help you out for function reference. What you choose to look at depends on what you find most interesting. Start with the book though and you'll move from there.

That's fine, and Linux is a good platform to work on if you're comfortable with it. I used Textpad on Windows because it was easiest. It makes no difference where you compile in the early stages because you won't be using any OS-specific features to learn.

Ok was just curious but will definitely try to finish C before we start with Delphi that would probably give me a much better start as you say.
 
Last edited:
Think I'll have a look at Textpad and see if I'm more comfortable with it than Vi



Thanks will have a look at Bloodshed's Dev C++ as well

Also just out of interest what do you guys think about Delphi? Just curious because that's the only language our school teaches IT in.

The guy who designed Delphi moved onto designing C#. I couldn't imagine starting out with C unless I was going into embedded development (designing hardware). I'd much rather start with a nice easy to understand IDE like Visual Studio 2010 (or the free express version) with C#, or using Eclipse and learning Java.

As for VB vs C#... the majority of samples you will find out there will be in C#. It's just easier to get help with.
 
Top
Sign up to the MyBroadband newsletter
X