The online racing simulator
Learning To Program.
(91 posts, started )
Learning To Program.
Hi Guys,

I would like to learn how to program, but i dont know where to start? (I would like to create racing insim), Please could anybody help a noob here?

Many thanks.

Matty

Edit : Sorry. This should be in the Programming Forum, Just if anybody says Im a bigger Noob!
When I can chose my language, I normally chose one of these: http://www.blitzmax.com/ - for games Blitz3D is easy, but for advanced physics you're probably going to want to eventually move on to C++, you can download it for free from Microsoft (search for Visual Studio).
Ok.

Thanks becky, whilist your here, i think your servers are great!

Many thanks,

Matt
Do you have any experience in software development or programing?
#5 - CSU1
Quote from dmwright :Hi Guys,

I would like to learn how to program, but i dont know where to start? (I would like to create racing insim), Please could anybody help a noob here?

Many thanks.

Matty

Edit : Sorry. This should be in the Programming Forum, Just if anybody says Im a bigger Noob!

These are a great bunch...video tutorials the lot
Well first of all you need to choose which language you are going to start with. Some common choices are C, C++, C#, Java, Visual Basic or Python. Your choice of language is entirely down to personal taste, so the only advice is to have a look at each language and try to decide which one may be the best for you. The Wikipedia Project is a good place to start for general language information, as well as the almighty Google.

Often the main consideration when choosing a language is what you ultimately aim to achieve from using it. It's beneficial to think about what sorts of programs you wish to write, and then read up on each language to find it out how well it suits your goals. For instance, if you just want to make nice looking Windows application, then C# might be the best choice. However if you want to write high-performance 3D games, then you should go with C++ (good luck with that BTW ). If you want your program to run on Windows, Linux and Mac, then Java could well be the technology for you.

Bare in mind though that once you've learned one language, learning others is much easier. Most programming languages, especially the ones with C or Java in the title, are extremely similar!

Once you made a decision on which language you would like to learn, you should probably try out a few online tutorials to see how you get on. If you find the language to your tastes, then buying a tutorial book as a learning aid is a hugely recommended next step. Learning from a good book is much easier than sitting reading haphazard online tutorials.

If you find a language frustrating to learn, don't be afraid to dump it and try something else. There are so many good languages around, you are bound to find one that suits you. Once you've found a language and a learning resource, it basically comes down to good old-fashioned practice. The only way to learn to program is to write programs. So get your head down and get working!
Do yourself a big favor and go take some programming classes from a local university or continuing education. This way you learn about programming and not just how to code in a specific language. And preferrably the classes should start without dealing with any language, but rather you should be only dealing with psuedo-code at best. Once you actually know the ins and outs of programming, data structures, etc. the languages are nothing but frosting on the cake.
Yeah, the way the computer actually works just says the same. All programming languages are based on the same principals, they are all just different ways of telling the computer what to do. Some force you to instruct the computer step-by-step, others allow you to focus on the big picture and brush over the details. As Holywood says, it's all just syntactic sugar.
My advice would be starting with something like C#, and begin with an easy book like this one:
http://www.informit.com/librar ... Y_Csharp_24hours&rl=1

After you're done with that one, go pick up a novice book which teaches you more in the language fundamentals and language tricks.

If after that you still wanna program, you should definitely learn some assembly programming, or something about computer organization and design, otherwise you'll never know what a cpu can do fast and what not (and thats a good thing to know if you wanna become a serious programmer).

But basically, start with some Visual C# GUI programming which that link above is about, so you build up some programming confidence and after that start looking into more advanced stuff.
Quote from DarkTimes :Some force you to instruct the computer step-by-step, others allow you to focus on the big picture and brush over the details.

And python gives you a choice of either one.
Python is an interpreted language. Which Blender happens to use.
-
(DarkTimes) DELETED by DarkTimes
Quote from wheel4hummer :And python gives you a choice of either one.

As do most languages. Python just has a bigger brush.
i havent watched all of it yet but so far this seems to be pretty good to get some of the basics
http://www.swiss.ai.mit.edu/cl ... abelson-sussman-lectures/
theres a reason mist unis start with scheme

btw has anyone got a good tutorial (preferably video) on prolog or something similar ? i want to dig into that paradigm a little too
Quote from DarkTimes :As do most languages.

Specifically, Javascript, PHP, and perl, although I guess you can program in an object-oriented way in C/C++.
Isn't C++ an Object Orientated language...
Quote from dawesdust_12 :Isn't C++ an Object Orientated language...

Yes it is, so is PHP infact (as long as you choose PHP4, but it only really gets good in 5.)
Quote from wheel4hummer :Specifically, Javascript, PHP, and perl, although I guess you can program in an object-oriented way in C/C++.

I didn't realise you were specifically talking about object-orientated programming languages, there's more to multi-paradigm languages than JavaScript, PHP and PERL.

Incidentally C++ supports both imperative and object-orientated programming, although C doesn't.
Quote from mikey_G :My advice would be starting with something like C#,

C/++/# is probably overkill anyway unless performance is your number one priority. You'd spend more of your time fecking with the IDE and sorting out memory management issues and other low level nonsense than you would actually writing functional code. I'd go with an interpreted language like Python first.

Just my 2p.
Quote from thisnameistaken :C/++/# is probably overkill anyway unless performance is your number one priority. You'd spend more of your time fecking with the IDE and sorting out memory management issues and other low level nonsense than you would actually writing functional code. I'd go with an interpreted language like Python first.

Just my 2p.

C# is definitely not what you think it is. It's not fast and there is auto memory management (i dont know which technique is used though). C and C++ are hard yes, but not impossible for a beginner.
Python is nice as well, but I think a beginner wants to make a GUI pretty early from the starting blocks, and C# and visual studio express are very easy in that area
Quote from mikey_G :It's not fast and there is auto memory management (i dont know which technique is used though).

The .NET Framework uses garbage collection to manage memory, although it allows direct memory manipulation as well if you need the extra control. And in my opinion C# is plenty fast enough for almost everything.
VB6 forever
Quote from DarkTimes :The .NET Framework uses garbage collection to manage memory, although it allows direct memory manipulation as well if you need the extra control. And in my opinion C# is plenty fast enough for almost everything.

Well ofcourse i know that, i was saying that i dont know what memory management technique c# .net uses ( like in copying between 2 areas, mark and sweep, ref count).
The .NET platform is very fast, especially with today's computing power. Same with Java, although Java on the client is hampered by Swing (which is poor, better to base GUI apps off the Eclipse model). Both virtual machines are highly optimized and fast. Go check google for speed comparison results. As for the memory management, its really immaterial in both cases, but if you have an overwhelming desire to know, you'd have to go check out the ECMA specifications for the .NET platform. Sun also has the Java specs available too.

I re-iterate it again, starting to play with programming by creating GUIs in drag-n-drop designers, or using any sort of RAD tools, is *not* the way to actually learn to program. You gotta learn the basics first. Sure exceptional individuals (John Carmack, Scawen, and a host of people throughout the software development world) can get away with being self-taught; but usually they aren't the type that ask "how do I program" to start with anyways.

Quote from mikey_G :Well ofcourse i know that, i was saying that i dont know what memory management technique c# .net uses ( like in copying between 2 areas, mark and sweep, ref count).

I'm a beginner in this area but what I can see so far I would say that C# is the best choice. For one thing that you can code standard windows programs and web application with the same basics of a language. And when you look at the pages you can see that more and more use ASP.

So, to start with PHP and so on would be stupid IMHO
I know dynamic languages are often easier to start with and especially if they aren't type-safe, they are a lot more forgiving. At the same time, that ease can also lead to some bad habits being formed in the way you write your code. Which is why I think there are strong benefits of starting with a type-safe language that does not burden you with memory management, i.e. C# or Java. I think that Visual C# Express is significantly easier to get started with than Eclipse, so I'd say of the two C# is easier to get into (again my bias is showing).

Speed is funny. Lots of people bag on java or .net languages for speed, but then write code in javascript, perl, php, whatever. Byte-code compiled languages are generally an order of magnitude or two faster than interpreted, and native compiled languages can get you another order or 2. But all this is completely dependent on the domain and the programmer. If you're processing text and are ok in perl and in C++, you are likely to generate faster code in perl, for example.

Unless you are talking in the sub-millisecond response time-frame, C# is going to be fast enough. If you want to write a competitor to LFS, you probably need to get into C++ (but XNA may go a long way). If you need a web application or need to talk to insim, you gain nothing by the speed of C++, unless it's what you are best at, and neither is C#'s speed going to be an advantage over a dynamic language like php. I.e. in the domain that we are talking about in the forum, the full spectrum of languages should do just fine.

Learning To Program.
(91 posts, started )
FGED GREDG RDFGDR GSFDG