Programming beginner

I think these days it's expected that you understand the whole .NET framework which includes C#, VB.NET, ADO.NET and ASP.NET. The difference between C# and VB.NET is mostly syntax and if you've been programming in one for a while it should only take you a weekend to become fairly proficient with the other.

Bingo. You need to know at least one of the languages (VB.Net/C#) and ADO.Net to start with, and then either Windows.Forms or ASP.Net, depending on what you are programming for (Windows/Web).

Good luck - I've been doing this since .Net was in beta, and I've not looked back.
 
Bingo. You need to know at least one of the languages (VB.Net/C#) and ADO.Net to start with, and then either Windows.Forms or ASP.Net, depending on what you are programming for (Windows/Web).

Good luck - I've been doing this since .Net was in beta, and I've not looked back.
I don't get why .net is such a necessity. It only serves to limit the number of platforms you can use and lock people into using Microsoft products.
 
turbo pascal.


if you want to do the c#/vb thing.
good thing is to start with the NTSC up to MCPD(desktop trek), which in turn you can upgrade to 3.5 rather than doing
the mcad/mscd first...
 
Last edited:
My vote is first and foremost for C# when it comes to Windows GUI Apps.

Windows Console applications my vote is for Java but Java GUI although a bit strange isn't bad either just more of a hassle. The reason I say Java is simply because it's multi-platform and you're not tied into Microsoft.

Stay away from C++, I had to write a CAD tool in C++ for Linux (University project), it's horrible, although Windows GUI might be a bit more user friendly. My primary problem is that you *think* there are no memory leaks but how do you know? I wrote that CAD tool and in the end I though, OK there is no way I have memory leaks but after running ValGrind (Linux Memory Leak detector, Windows variants cost money) it still detected leaks , although small leaks they were still there.

Also C++ development takes far far longer, for example when I did one program where I needed to read/write XML data I had to write a XML lexer from scratch (because STL doesn't have one), while with Java/.NET their already there. You'll also end up writing all your data structures from scratch slowing down productivity.

And finally I think that VB.NET is a waste of time, simple reasons why? It has almost all the functionality of C# (there are a few things missing but nothing you can't work around) BUT you learn to program VB style which in my opinion isn't great. Then there's also the fact that it's MUCH easier to go from C# to Java or C++ than it is to go from VB to anything.
Syntactically C# is much easier to read in my opinion, {} brackets make it far easier to see what's going on than VB where such things are for the birds.
 
Java is veeery slooooow and not all of us want to install a bulky interpreter and then launch it every time we want to use the app that generally disappoints. Java is the thing to stay away from when not developing for cross platform, generally web only and even there it hasn't lived up to its hype as a result of flash.

There is nothing wrong with C++. There are lots of applications you would not be able to write as effectively in other languages but C++ can handle anything. Memory leaks are usually the result of bad programming practices, i.e. either doing what you shouldn't do or not doing what you should do. There are also ways to completely eliminate memory leaks using container classes. If something is not included in the STL it's generally application or platform specific and there are 3rd party libraries available if you really look for them.
 
Java is veeery slooooow and not all of us want to install a bulky interpreter and then launch it every time we want to use the app that generally disappoints.

Loading the interpreter is the only slow part, some code is faster in Java than C++ (notable recursive methods) and most code comes close in performance, and some arithmetic are faster in C++, while others are slower in C & C++

JIT can optimize code while the program is running, C++ can't, the future is in JIT interpreters...

See this for some info on the topic: http://en.wikipedia.org/wiki/Java_performance

There is nothing wrong with C++. There are lots of applications you would not be able to write as effectively in other languages but C++ can handle anything. Memory leaks are usually the result of bad programming practices, i.e. either doing what you shouldn't do or not doing what you should do. There are also ways to completely eliminate memory leaks using container classes. If something is not included in the STL it's generally application or platform specific and there are 3rd party libraries available if you really look for them.

Before programming in C++ I would have agreed, but the programs my team wrote was 100% OO with classes throughout and design patterns from start to finish. The program was quite big and it's quite impossible to catch them all, also XML isn't included in STL and it's not platform specific. Furthermore certain notable data structures are missing from STL, and data structures aren't platform specific either (rare cases might be partially platform specific such as B-Tree's that store data on the hard drive), those being Arraylists & Binary Search Tree's, both are used frequently, esp. Array List's.

Concerning memory leaks, well the only way to prove no memory leaks exist is by running all possible code paths of a program through a memory leak tester in a sandbox environment (I only know about Valgrind because it is a very powerful memory leak tester for Linux and it's free).

Many programs available today have memory leaks although small they are there (Firefox, most games, Oblivion,etc.), and I've heard the argument that "good programming" leads to no memory leaks but that saying was invented by Windows programmers who never memory leak test their programs and because it hasn't crashed because of a memory leak they assume there aren't any. Going without memory leak testers and assuming your code is safe in this day and age is indicative of a bad programmer.

The problem we experienced was although we used classes throughout there are memory leaks *somewhere*, but how do you know it's in your own classes VS. libraries you used, one leak we found for example was because the documentation of another library very ambiguously stated there was cleanup after using the library (there were quite a few threads on the internet concerning the topic so we weren't the only ones who didn't understand exactly what the documentation was trying to say).

Memory leaks ALWAYS creep up and it's a bitch to track them down, that's what I'm trying to say, C++ in my opinion = lower productivity.
 
Last edited:
As is clearly obvious from all the posts, there are many opinions and choosing a language is largely dependant on what you want to do with it. Whether we like it or not, M$ does offer some of the best RAD tools available and .NET is the future of M$. If you're in the business of creating, selling and distributing software, there is a lot to like about the .NET platform which creates significantly smaller executables as long as you stick with the standard controls. The .NET redistributable is very much like DirectX, you install it once and it's on. There are different versions of it and M$ provides service packs. You'll probably find you update your video drivers more frequently than your .NET installation ... .NET was M$'s attempt to tackle Java. Although I've not tried it myself it is possible to run .NET apps on Linux, so it's intended to be x-platform.

Start by learning good design and OO principles, then pick a language to suit what you intend using it for. Here are my suggestions:

Java - Good learner language, strong OO, designed for industrial strength applications (banks like this one). Decent market demand.

Delphi - Fun language, easy to learn, good DB capabilities, my personal favourite, now at version 10.5. Poor market demand.

.NET - Choice of language VB or C#, would suggest C# instead though. Can't go wrong with this one, it's M$. Excellent for small to medium business applications. High market demand.

C++ - Language best suited for backend development and low-level functions (like drivers). Decent market demand.

If you're more interested in web development the popular choices are PHP, Java and ASP.NET (I'd suggest ASP.NET)

Now go forth and code until your fingers bleed :)
 
Bill, Windows and other things

<snip>
I doubt Bill really knows what goes on behind the scenes. A lot of windows (memory management, segments, GDTR, LDTR, etc.) can not be written in anything else than some form of assembly.

Too true. I have yet to encounter a Windows person who actually knows what re-entrant code is - and you'd be pushed to write a really high-concurrency, high-throughput operating system without it (are my grey mainframe roots showing yet? ;) )

As for where to start learning, you could do a lot worse than open source & something like PHP/MySQL. It's at last taking off big time here in SA (I gather Linux is now the platform of choice in government, BMW, Nandos and all the Oracle servers of a very big cellular service provider with a large presence on this site ;), to name just a few.) In fact the way the mainframe is reviving with increasing drive toward consolidation, you'd probably make a lot of money quite early on if you learned COBOL!! :D

Windows stuff is very proprietary (single OS, closed standards), very layered, has loads of unnecessary complexity (ie bloat) and has a very high learning curve as a result. It also actually accounts for a relatively small portion of the industry, and there are far too many propellerheads around today who are .net gurus, can play with the latest mad ideas from M$ like LINQ, but cannot see the big picture and what constitutes appropriate technology (this article on the mybroadband front page is very relevant. You can't train experience.)

And if you decide to do it professionally eventually, then whatever else you do language-wise, learn SQL as well and learn to handle data properly. Understand transactions, logical units of work etc and you'll be able to produce robust and accurate apps which won't have people like me tearing their hair out trying to fix the data your app destroys. An application language alone is not enough - you have to understand the operational context of the app as well. (I kid you not - I once got asked by an extremely puzzled developer to look at the fleet management system of an oil company here in CT. According to the system, Tanker #12345 or whatever was in Windhoek, but its wheels were in George....)

Good luck anyway

Caro
 
Top
Sign up to the MyBroadband newsletter
X