PDA

View Full Version : Programming beginner



marine1
09-08-2007, 09:03 AM
Hello guys, can someone advise me what would be the best programming language to learn for Windows? Like for example to make programs that would work with Windows interface?
All the stuff we download, how is that written? In what code?

Thanks.
I would like to try and learn this so any help would be appreciated.
I see according to Bill Gates, Windows was mainly written in c++

spiderz
09-08-2007, 09:13 AM
.Net is probibly the best but lots of programmes (and Work) there.

Take a look at what kind of programmes jobs are offered and at what price. Remeber a junior programmer earns very little, onlt the senior guys pocket it!

Syndyre
09-08-2007, 09:36 AM
Do you want to programme for fun or do you actually want to make a career out of it?

marine1
09-08-2007, 09:48 AM
For fun. Thanks guys.

BobbyMac
09-08-2007, 10:38 AM
C# .Net is a good start. http://msdn.microsoft.com/vstudio/express/ is a good place to start (it's free and there's a massive repository of information available via msdn reference libraries as well as a very good learning center (http://msdn.microsoft.com/vstudio/express/beginner/)). Have a look at http://msdn.microsoft.com/vstudio/express/windows/ - it gives you a nice summary of how to get started quickly and easily.

Other RAD (Rapid Application Development) tools include C++ Builder, Delphi, Ultimate++ and Visual Basic

Syndyre
09-08-2007, 10:41 AM
Was also going to suggest C# .NET, does a lot of the GUI etc. coding for you too so it makes life a bit easier. ;)

marine1
09-08-2007, 10:41 AM
Thanks Bobby.

Syndyre
09-08-2007, 10:44 AM
Good luck. ;)

marine1
09-08-2007, 10:55 AM
Bobby that link is awesome. Thanks again.

marine1
09-08-2007, 10:56 AM
Thanks :)

BobbyMac
09-08-2007, 10:58 AM
Cool. Once you get into it it can be quite a lot of fun. I still enjoy programming and do all my own little things, even though I don't need to do it for work.

pcgig
09-09-2007, 09:42 AM
What about programming for a career?Where to start?I've heard of two main programming branches i.e. Cormmercial Programming and Technical programming,I dont know anything about programming however i'm very computer literate(Gaming etc).Please advise.

diabolus
09-09-2007, 11:31 AM
C# .NET -> Good for Windows Apps , but can be a difficult language for a beginner

VB .NET -> can pretty much do the same as C# , a bit easier to read , but not considered as highly as C# [imho, i've not seen much diff in capabilities of the 2 languages...read below].

I think it's probably market perception primarily because VB [before .NET] was always considered a "beginner" language . Then i think the C++ [hardcore coders] guys moved into the windows market [need to make a living] and they most probably moved to C# [as the syntax are very similar] . So from there you still probably get this notion that VB.NET coders are "basic/beginner/non-hardcore" coders and C# are more advanced. That's also why you probably see a salary diff too, even though VB.NET and C#.net are very much identical in waht you can you "output".

Java -> Good for cross platform and web interfaces [i.e. apps stuff in your browser] . Java also tends feel alot like C# [syntax wise], can do alot of "fun" things with Java Apps [as you might've seen on the web in certain browser based MMORPG games] .

C++ -> The more advanced language if you're less inclined to write "front ends" . I.e. if you want to write an "engine" [physics engine of a game] or an "os" then you'll need this.

pcgig
09-09-2007, 02:41 PM
So in other words the C++ is what they call "technical programming" at the Universities and the other langauges are the "cormmecial programming"?

diabolus
09-09-2007, 07:17 PM
So in other words the C++ is what they call "technical programming" at the Universities and the other langauges are the "cormmecial programming"?


Well i haven't really heard those terms used as such, "commercial" can mean anything, but there is definitely two "groups" of coders that i've encountered:

1] those that's very technical [hardcore]. These guys would code c++/c/assembler and basically whatever else gets the job done, they prefer to do very "low level" coding in the sense that they would program electronics [i.e. chips/cellphones/devices] or program the "engine" or "framework" . Any specialised coding would fall under here [i.e. developing some new protocol to transfer data on the network]

2] those that's more on a higher level, primarily coding software to get a job done easier/faster etc [functional programming]. This would be like programming MS Office, or an Email Client or an MP3 Player etc etc. In this case you generally don't want to know how the code "does it things" [i.e. memory management] , having a slick and user friendly interface is probably of more concern.

So i tend to talk of "Technical" vs. "Functional" Coders....

Type 2 isn't necessarily less skilled than 1...doesn't matter what you studied, you can end up in either 1 or 2.

However you usually get things like an ex-financial person coding financial apps [functional type] because he knows the end-user requirements better...

In short, i'd say the guys that writes "Symbian" [the operating system on your Nokia] is a Technical Programmer . The guys writing "MS Office" or "Windows Media Player" running on Symbian is more the "Commercial" types..

Perdition
10-09-2007, 02:01 PM
C# .NET -> Good for Windows Apps , but can be a difficult language for a beginner

VB .NET -> can pretty much do the same as C# , a bit easier to read , but not considered as highly as C# [imho, i've not seen much diff in capabilities of the 2 languages...read below].

I think it's probably market perception primarily because VB [before .NET] was always considered a "beginner" language . Then i think the C++ [hardcore coders] guys moved into the windows market [need to make a living] and they most probably moved to C# [as the syntax are very similar] . So from there you still probably get this notion that VB.NET coders are "basic/beginner/non-hardcore" coders and C# are more advanced. That's also why you probably see a salary diff too, even though VB.NET and C#.net are very much identical in waht you can you "output".


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.

BobbyMac
10-09-2007, 06:41 PM
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.
Agreed.

kris860911
12-09-2007, 09:49 AM
Yea. basically the same thing. There are minor differences in the two. But anything that is strictly for one language (ie: the IIF thing in VB) can easily be re-created a slightly different way in the other language.

It's more personal preference, I did mostly C# at college, and some small projects, but got a job now that uses VB .Net.

sar
12-09-2007, 10:13 AM
try w3schools.com , its very good for beginners and very easy, covers for majority of main scripting languages.

Prometheus
09-11-2007, 11:43 PM
The windows interface is right at home with C++ and it's really not so hard to learn. If you are only going for windows then VB is also an option although not as popular anymore. Please no .NET anything. If I get one more app telling me to install the .NET framework which then tells me to do a windows update I will scream.

I see according to Bill Gates, Windows was mainly written in c++
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.

Raithlin
23-11-2007, 08:47 AM
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.

Prometheus
23-11-2007, 11:13 PM
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.

Pr⊕phet
23-11-2007, 11:22 PM
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...

Gnome
24-11-2007, 02:48 PM
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.

Prometheus
24-11-2007, 06:40 PM
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.

Gnome
24-11-2007, 11:04 PM
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.

Tony1
08-02-2008, 08:34 PM
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 :)

caro_b
08-02-2008, 11:42 PM
<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 (http://mybroadband.co.za/news/General/2816.html) 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