By using this site, you agree to our Privacy Policy and our Terms of Use. Close

Forums - General - I want to start learning programming. What should I start with?

DaSimkin said:
slacker164 said:
I'd strongly recommend Visual Basic(VB). It's most useful for business type programming (databases etc.), but you can do just about anything with it and it's quite easy to learn. The programming concepts you learn will carry over to pretty much any other language and many beginner books (if you're learning on your own) will even use some directdraw/3D functions and game examples. You'll want to move on to C/C++ etc. eventually, but VB is somewhat designed as a learning language, yet still more capable than many give it credit for

How is VB more useful for business type programming? That's complete and utter jibberish.

VB is SHIT. Yes you can do a lot with it. But you can't do it well.

Learn almost any other language and you are better off.


I said it's most useful(where it works best), not more useful(than <insert language here>)--big difference. And it's useful because you can do things fast and it has a lot of integrated tools for quickly connecting to databases. Rather than fussing with connection strings and syntax you can practically drag+drop a db connection if you work with Access or MS SQL, and it's not much more work to connect to MySQL or other db types. It cuts GUI building time way, way down. There's a price to pay in performance, but in a business/database environment it doesn't make much difference since the backend SQL is the bottleneck. 

 As far as learning another language, learn another one later. You're not much of a programmer if you don't know a few. VB is great for teaching concepts and does indeed have a place in real world situations.



Around the Network

I would go with Java. Object Oriented Programming is so useful, and Java syntax is a lot easier to program than C++.

off topic:
Right now I am using Java to create a compiler for the 16 bit RISC microprocessor I designed for a class. I am naming the language Wayne++. (my name is Wayne) It is pretty similar to x86 assembly language with some higher level functionality like For Loops thrown in.



I wouldn't recommend BASIC today, because it's to old. I myself started with basic and assembler. Java is a very good language, but I would not recommend it as the FIRST language to learn. Java is mighty and easy to program, but the problem is you doesn't know what happens inside. I prefer today programming in Java, but because I used other programming languages, I have a basic idea what happens behind the scenes and that helps me to understand what I do. I would recommend some language with pointers: Pascal or Ada. Not necessarily C, because it's really complicated for beginners and instead of focus on programming you have to learn to avoid all the C-pitfalls that are waiting for you. Try FreePascal, it's available on http://www.freepascal.org/ for download. Try program normal first and if you feel sure with such programs try out Object Oriented Programming. It's the most common and useful paradigma today. After you did that in Pascal you can try out another language: C, C++ or Java.



3DS-FC: 4511-1768-7903 (Mii-Name: Mnementh), Nintendo-Network-ID: Mnementh, Switch: SW-7706-3819-9381 (Mnementh)

my greatest games: 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024

10 years greatest game event!

bets: [peak year] [+], [1], [2], [3], [4]

Katilian said:
Sqrl said:

Good Fundamentals:

Spending some time learning about sorting algorithms is also important but without someone to teach you it can be tricky...especially if you try quicksort for your first time out. I highly advise you try to get involved in programming classes as there is simply so much you can miss by learning on your own. The stuff I've provided is a good start but there is simply far too much to cover to be sure that you get a good coverage without going through a well thought out curriculum...and quite simply what I've laid out falls well short of that.


I think this need to be emphasised further. While I'm not really going to suggest a starting point (personally I would use C++, but most languages are fine), may I suggest that after you get a feel for what you are doing, that you seriously need to at least get a basic grasp of what happens 'under the hood'.

I've been teaching C++ programming to uni students for almost 4 years now and the student who stand out are the ones that understand what is going on behind their code. This is one reason why I dislike the idea of universities making Java their primary language for Compsci students. Java covers up too much of the low level stuff, and whlie this if fine if you already understand it, people who don't tend to write less efficent code (although some of the stuff i've seen is amazingly creative :P).

I'm not quite sure I understand your view here. Java has always struck me as being the same as C++, except more uniform in its rules and format, which makes it easier for a beginner to understand the logical system that a program uses.

Seppukuties is like LBP Lite, on crack. Play it already!

Currently wrapped up in: Half Life, Portal, and User Created Source Mods
Games I want: (Wii)Mario Kart, Okami, Bully, Conduit,  No More Heroes 2 (GC) Eternal Darkness, Killer7, (PS2) Ico, God of War1&2, Legacy of Kain: SR2&Defiance


My Prediction: Wii will be achieve 48% market share by the end of 2008, and will achieve 50% by the end of june of 09. Prediction Failed.

<- Click to see more of her

 

I started with COBOL.

Yes. Really.



Around the Network
Grey Acumen said:
Katilian said:
Sqrl said:

Good Fundamentals:

Spending some time learning about sorting algorithms is also important but without someone to teach you it can be tricky...especially if you try quicksort for your first time out. I highly advise you try to get involved in programming classes as there is simply so much you can miss by learning on your own. The stuff I've provided is a good start but there is simply far too much to cover to be sure that you get a good coverage without going through a well thought out curriculum...and quite simply what I've laid out falls well short of that.


I think this need to be emphasised further. While I'm not really going to suggest a starting point (personally I would use C++, but most languages are fine), may I suggest that after you get a feel for what you are doing, that you seriously need to at least get a basic grasp of what happens 'under the hood'.

I've been teaching C++ programming to uni students for almost 4 years now and the student who stand out are the ones that understand what is going on behind their code. This is one reason why I dislike the idea of universities making Java their primary language for Compsci students. Java covers up too much of the low level stuff, and whlie this if fine if you already understand it, people who don't tend to write less efficent code (although some of the stuff i've seen is amazingly creative :P).

I'm not quite sure I understand your view here. Java has always struck me as being the same as C++, except more uniform in its rules and format, which makes it easier for a beginner to understand the logical system that a program uses.

 


C++ has many features Java doesn't have, and the programming environment is totally different (virtual machines, garbage collection which doesn't exist in C++, etc).

 



My Mario Kart Wii friend code: 2707-1866-0957

are you talking about the fact that you have access to all the preprogrammed libraries and stuff? I have to admit, I agree that's covered up alot more in java, but at the same time, I think it's best to use java to start, so you can understand programming languages in general well enough to recognize what is going on with those libraries when you finally start to see them in languages like C++



Seppukuties is like LBP Lite, on crack. Play it already!

Currently wrapped up in: Half Life, Portal, and User Created Source Mods
Games I want: (Wii)Mario Kart, Okami, Bully, Conduit,  No More Heroes 2 (GC) Eternal Darkness, Killer7, (PS2) Ico, God of War1&2, Legacy of Kain: SR2&Defiance


My Prediction: Wii will be achieve 48% market share by the end of 2008, and will achieve 50% by the end of june of 09. Prediction Failed.

<- Click to see more of her

 

I think you should start with Java. It comes bundled with a lot of useful libraries like threading and GUI. The syntax for object oriented programming(OOP) is a lot clearer than in C++. It's important to understand OOP. Java also does the memory management for you. It's more important to be able to structure your code than doing your own memory managment. Another thing is that Java binaries is also platform independent.

If you really like Microsoft and plan on staying on Windows then maybe C# is a good choice. It's a lot more integrated into Windows and Microsofts .Net-platform seems to work well, but I can't say much about this since my knowledge about Windows and C# is a bit limited.



Grey Acumen said:
are you talking about the fact that you have access to all the preprogrammed libraries and stuff? I have to admit, I agree that's covered up alot more in java, but at the same time, I think it's best to use java to start, so you can understand programming languages in general well enough to recognize what is going on with those libraries when you finally start to see them in languages like C++

 He is referring to the fact that Java applications work inside of a virtual machine rather than being run directly through the operating system/hardware. This has 2 major advantages. Firstly, applications are (theoretically) portable to any platform that has a virtual machine running on it. Secondly, it allows for the virtual machine to handle exception, overflows and memory management, rather than the programmer needing to worry about all this.

 This second part, while it is extremely useful, unforunately makes for lazy programmers. Someone who has only ever programmed in Java is in for a world of hurt if they go and program anything significant in C++ (or any unmanaged language). Being required to check bounds, make sure you are freeing memory and having to check for exceptions are things which even the most seasoned programmer still has problems with. If you've seen lately that the Wii has been hacked to run homebrew code, this was possible because the programmers did not do any bounds checking while loading the save. While it isn't impossible to do in Java, even if this occurs, the best the hacker can hope for is extra access to the VM, rather than access to the underlying OS/hardware (assuming the VM itself doesn't have exploits).

 While it is nice not to have to worry about this type of stuff, any serious programmer needs to understand it. So while Java might be a good choice initially, you need exposure to the lower level stuff before the bad habits start to stick.

 



In my opinion it doesn't really matter which language you start with. Learning the various concepts of programming is by far the most important part.

I would however suggest an OOP language. Java or C# if you want to look at something a bit more complex.

I would absolutely NOT suggest a language that doesn't have strongly typed variables to learn on. I know lots of people start with languages like python or javascript or one of the other scripting languages, but working in a strongly typed environment is less error prone and easier when you are debugging because it takes a large chunk of complexity out.

Another thing you should take into account is find a language that has a good IDE and good documentation. Again, java and C# both fit these criteria (though C# can be frustrating at times).

If you are interested in looking into a .NET language, microsoft offers free basic IDE's for all the major languages and you can even play around with the XNA if you want to do game development.

Here's a link to a decent set of tutorials on Game development using XNA in C#:
http://www.riemers.net/eng/Tutorials/XNA/Csharp/series1.php

Things I would stay away from at first no matter the language:
-Memory allocation and pointers (if the language supports that stuff)
-Threading of any sort (except for a main UI thread and a worker thread if you're doing some sort of UI app)
-Other stuff I can't think of right now. Anything that makes your head swim just reading it is probably good to stay away from at first

Things I'd try and jump into ASAP no matter the language:
-Object Oriented Design: Some of the languages are strictly OOP like Java and C#
-Modularity: Try and stay away from writing one big program all in the same source file
-Proper naming conventions: It sounds silly, but getting used to a standard naming convention for Class names, -Method names(Functions/Procedures) and Member names(variables) will make your life a lot easier in the long run. There are all sorts of documents on how you should name things and the theories behind them
-Documentation: This is an absolute must. I know its something everyone hates doing, and I was horrible at it in school, but it again will make your life so much simpler in the long run. Document all your methods so you know what they're supposed to do. Document complex chunks of code. Don't (please) DON'T bother documenting every line of code. The goal is to clarify whats going on, not double or triple how long your source files are with unnecessary code like "Here we add one to our counter..."
-Proper error detection (Exception handling): This again is a big deal. For an average commercial application, there's probably 25% real code and 75% error detection and exception handling. Try and get good at remembering this stuff because its important.
-Understand what you are doing: A few people said this already, but if you just parrot out algorithms you find on the internet, you'll never improve. Copying code isn't a big deal, but understand what its doing. If you don't understand, research everything you don't know. This is where IDE's come into play. Most of them have very good attached help. Click on a class name and hit F1 and they'll bring you to a help section (if its built into the language). If its code you found on the net, make sure it includes documentation or else get rid of it. If someone doesn't document well, its likely to be crappy code anyway.

There's tons more to say, but you'll find it all over the net anyway. THE MOST IMPORTANT THING TO REMEMBER...programming is fun! Don't approach it like a job, approach it as if you're learning a new spoken language or learning a musical instrument. Software development is just as much a form of art as painting or performing music. Anyone can hack out Ode to Joy, but the people who practice and understand the music can make it beautiful.