|
Shannon V. OKeets -> RE: Programming (3/25/2006 9:40:26 PM)
|
quote:
ORIGINAL: wodin OK Ive decided to have ago and teach myself programming. So I need advice. What language should I start with? Can anyone recommend any books? Also do I need any software, if so what should I buy/download? The long term goal is to learn Java and C+. Then one day I'd like to try my hand as an indy games developer. My dream would be to come along and pick up Combat Leader and finish the game;). So all help will be appreciated. My programming background runs from 1968 to the present. Almost all that work was simulations. I have used Fortran, Basic, Assembler (8086), Pascal, C, C++, Delphi, and over a dozen operating systems on over a dozen different hardware platforms. I currently am using Borland's Delphi 2005 for programming Matrix Games' World in Flames. Prior to that I used Borland's C++ 6 to build a stand alone statistical analysis package. At their core, all programming languages are the same: you define a variable (a place to store data in memory), you give the variable a starting value (write the initial value), you modify that value (read and then write), and you use that value (read it). A language enables you to perform those operations. Assembler gives you very primitive tools but those tools are fine grained which lets you work with individual bits effectively and efficiently. It not so good at providing an overview / overall structure for large projects. The difference between Fortran, C, Cobol, (et al) and the more recent languages, C++, Visual Basic, Java, and Delphi are the additional tools they provide for managing a large project. They also either come with, support, and/or can be integrated with supplemental software libraries/packages. In aggregate, they provide a wealth of existing code which you do not have to create from scratch. To use a rough analogy here, assembler is like a saw, C is like power saw, C++ is like a set of power saws, each with a different capability. For your purposes (programming a war game) you will want tools that provide excellent support for: screen graphics, keyboard and mouse input, and data structures for both of those plus simulation variables. You do not need: printing capabilities or databases. You might want, but do not require: internet capability and HTML. My advice here is to define the product you want to produce as best you can, without any references to programming languages. Your vision of what you want to create should be as well defined as possible - and definitely written down. It will be an invaluable touchstone for you as you proceed on your quest. What is going to happen is that you are going to climb a learning curve, acquiring a vast amount of new information. You have to filter that information, ignoring pieces that are irrelevant to your purpose and focus only on those that are important to you. It is the proverbial fire hydraut you are trying to drink from. Don't drown. As a simple example, all the discussion about Cobol, while amusing, has no importance to you. It is a waste of your time to become even modestly curious about it. Focus on your needs. I would suggest screen graphics as a good place to start, with equal importance on user interface and simulation. All of these are broad topics and you need to filter what you investigate or you will spent hundreds of hours and dollars on side issues. Regretably, you are practically doomed to do that anyway: I own a bunch of books and software that I never should have purchased, but they sure seemed like a good idea at the time. If you can define a small test project, that would be excellent. You could then see what all is involved in: learning about tool/software choices, teaching yourself about each tool/topic, and actually doing the work with the tools to produce a functioning program. I like Delphi and C++ equally well. If I were creating software for web sites, I would look seriously at using Java (1st choice) and Visual Basic. All of these work on the internet, but there are different libraries/packages to support them. Oh, and all this stuff changes continuously. In the time that I have taken to write this, new products have been introduced. You cannot keep up with the changing world while you are doing work on a project. You must establish the tools you will use and then use them to see the project through to completion. Changes tools in midstream gets everything wet. There are enough aggravations making things work without bringing in more complexity voluntarily. I strongly advise against using any new releases of software or hardware. Working on the cutting edge causes a lot of blood loss (I speak from extensive experience on this). Go with well establish products, please. Good luck!
|
|
|
|