Jump to content
Science Forums

Choice with language Help!


Recommended Posts

Hi all .....

I want to learn to programme , i know very little but am fascinated at what my brother has shown me about the subject ...

The problem is i dont know what language to learn. C++ seems very popular and the new c# but what about just plain c ... i like the idea of the origional C for sentimental reasons but would learning c leave me behind with c++ and C# programmers ... i know very little at the moment but im determined to learn .. any suggestions?

Link to comment
Share on other sites

I suggest C++. After you learn the C++ basics, I would go onto Java, just because it's more versatile (in some ways).

If you really want to start simple, try Visual Basic...

I learned C++ through school, but there are soo many excellent books on programming that can help you learn.

 

Also, it may be more helpful if you told us what you wanted to be able to do with your programming. This would help identify the most appropriate language.

 

Cheers!

Link to comment
Share on other sites

Most definatly Game building but i would like the Versitility to create new programmes that come about and be able to keep up with new developments in a wide range of industries .... even firewalls and anti viral software........ But certainly want to keep things versitile .

 

I understand the basic constructs in c and c++ and understand how the programme can evolve but i havnt a clue what end products they can achieve.. Its all quite new to me and exciting like a new bike , where can it take me .

Link to comment
Share on other sites

Cheers M B .....

 

Ive managed to download a C/C++ compiler and tutorials that go with it and a java tutorial all free of the net .....Nice!!!

Hopefully i will well be on the road with what i have . il try and find a good java compiler next ...... thanks for the advice.:cup:

Link to comment
Share on other sites

Java is good for somethings, but so far it has proved inferior for game apps. One of the major issues with it is that it's a resource intensive language. It also doesn't allow for (to my knowledge) low level Memory management. Though it does have the advantage of being able to cross platforms. Some other, less known, languages i would suggest looking to are : J & Ruby.

 

Though I like C++ and C#, The main problem with them is that they are mainly controlled by Microsoft, and the IDEs that have been coming out of MS lately have been rather... below par for the steep price of the software suite.

Link to comment
Share on other sites

All these languages have strengths and weaknesses.

C is as close to machine language as you can get nowadays. It gives detailed control over your applications. But at a cost of time. In other words, what you can accomplish in 1 line of Perl or Java will take you 10 lines of C. C can therefore be very tedious to debug. Once debugged, a properly designed C app will be faster than the same app in almost any other language.

 

C++ and C# are attempts to insert Object-Oriented discipline on C. "OO" has become a religion in some programming circles. It does enable a good programmer to create more orderly and less chaotic code. Debugging is easier. I recommend OO (which is also built into Java), which essentially forces you to be organized and think through your design. However, it is NOT a panacea for all applications. And it won't turn a bad programmer into a good one.

 

Java is a pure OO language. It has a lot of graphics built in, and direct support from browsers, unlike C and C++ so you can easily do Graphic User Interfaces (GUI). Java was designed to be "safe" so there is no way for a Java applet to access your PC's memory directly. You can build your app as a native stand-alone application to overcome this, then you lose the support of a browser. Java requires learning a LOT about the language structure.

 

Perl is the all-around choice of your gunslinger programmers who want an application that works well and can be built quickly. Perl is the Swiss Army Knife of languages--it has a lot of powerful built-ins. Text processing especially. Direct database power and system level calls. God programs in Perl. However, it lacks the speed of a compiled language and you have to import a library if you want to build a GUI. Messy. Perl also demands a LOT of self-discipline or you can wind up with a tangled mass of junk you cannot debug.

 

Visual Basic (Microsoft) is an ugly, obscene, overly-wordy and utterly tacky language. It has its uses. Doing VB macros in Excel is powerful though not easy. I teach VB for Excel at NASA. But as a general purpose language, it will make your fingers bleed. And it wastes paper. People who say it is "self documenting" are NOT programmers.

 

I prefer a hybrid approach. The last app I delivered to NASA used JAVA stand-alones for the GUI, server-side PERL and mySQL, and a few C subroutines to do some high-speed data transfer and calculations. I often did a "rough-draft" of an algorithm in Perl to make sure it worked, and then had someone translate it into C or C++.

Link to comment
Share on other sites

:D

 

C++ is indeed "OO on C". It was followed very quickly by Objective-C which came out of Steve Jobs' NeXT adventure, but it is a complete niche player.

 

Java was an attempt at a "new" OO Language, but its really about 90% C++, and its mainly missing multiple-inheritance, which drives us OO nuts up the wall.

 

People always have a *very* hard time distinguishing the language from the library support around it. The main thing that really distinguishes Java is that it has standardized its UI and communications libraries as part of the standard and made them at least somewhat platform independent. The "cross-platform" UI is based on an amalgamation of several X-Server (Unix) widget libraries, and as a result, its really sucky on Windows and Mac. Don't be fooled: its pretty worthless if you want a "native" look and feel.

 

This mistaken tying of the language to the environment is the *only* basis for saying that "Microsoft owns C++". In fact, in the last several releases of Visual Studio, C++ has been a poor stepchild, much to the chagrin of most of Microsoft's development groups. They added a completely new library to replace MFC (CLR) a few years ago and finally added C++ support for it in VS2005, and while its highly "proprietary" its really no moreso than MFC has been for the last 15 years (yes, its that old).

 

C++ has numerous "standard" interfaces, but as with Java, they tend to be Unix like. Those of us who do this for a living know that if you actually want your users to want your product, you have Windows and Mac code lines that hopefully have the UI somewhat abstracted, but...good luck with that.

 

Java's "performance" issues are a red herring. Many systems compile it completely and App Servers from IBM, Weblogic, Oracle, etc. have more than adequate performance for very high transaction rate applications. If you were to use it for games, I'd strongly suggest you do get a Java compiler (oodles of them to choose from from Sun, Borland, Oracle, IBM, etc.).

 

C# is Microsoft's proprietary version of Java. As such, it uses their proprietary CLR library, and "Java applications" are not portable into it except for close similarity of language syntax. Don't bother with C# unless you're dealing with legacy apps now that use it: with full support for CLR in C++, some of us are betting that C# might die an ugly if delayed death.

 

Game programming: yes, go with C++. Good perf, strong UI libs in existence (in fact, I'd say go with the game programming tools rather than trying to build your own physics and rendering engines!).

 

General programming: C++ again, but if you want to start simple, VB will do, but it will teach you some very nasty programming habits (if statements with out "end ifs" sacrelige! :) (I know you can quibble with this one Q: don't bother!))

 

Web programming: Java Server Pages. Yes, some folks like PHP, and the installed base makes it more useful for "home" use, but if you want a job, you have to have JSP/J2EE/AppServer knowledge. Avoid ASP.Net unless you're really gonna stay in MS-land. It totally bit the big one until 2.0, and even that is idiocyncratic as all heck. Its a programmer's full employment act though!

 

Hacking: Okay, I'll second the motion on Perl, but I still think you need to have a seriously bent mind to think its "easy to use". It reminds me of APL. Scripting is the main use. Its got some weird applications, but don't bother to learn it until you *need* it.

 

AI: Lisp. Lisp. Lisp. Franz if you can afford it, GNU CommonLISP if you can't. But Lisp.

 

Language maven, :naughty:

Buffy

Link to comment
Share on other sites

...Hacking: Okay, I'll second the motion on Perl, but I still think you need to have a seriously bent mind to think its "easy to use"....Scripting is the main use. ...

I second most everything you said, with some caveats on AI. LISP is traditional for AI mostly because nobody has developed a better language for it. AI is still an "orphan" field in computer research, alas. [Any code that ends with 2 pages of right parens should raise some issues.] A much better language is well deserved there, but we shall have to wait.

 

IMHO, Perl can be as "easy" as you make it. In my lab, I strictly impose a set of rules on my programmers that prevents any resemblance to APL. A number of quirky code techniques are forbidden, and we have no real need of them anyway. The use of Regular Expressions IS required in my lab, and they can be arcane and esoteric. My commenting standards help a fair bit, though I still run into programmers who would rather be fired than comment their code. I fire them.

 

I once brought in a piece of assembly language code (TI-960) that I wrote in 1975. I showed it to my programmers. They were astounded that they could read and understand what it was doing with only a short (10 minute) briefing from me on the syntax. The key was standardization, intentional clarity, and structured comments. This works for any language.

 

I designed a website entirely in Perl and mySQL that produces dynamic HTML. It contains an embedded, full-functional, timecard system. About 10,000 lines of Perl in 40 modules. Bug free and easy to modify when necessary. Took 5 months to design/code/debug/document/deliver.

Link to comment
Share on other sites

I ve scanned through a few languages as a newbie and i think c and c++ seem the most straight forward and logical .... i would certainly be able to master the layout and fundementals.

I looked into a java tutorial and it looks neat enough , very web encouraging it seemed as for pearl the text i saw had a lot of numbers in it .. maybe that was just th piece of code i saw .

The main thing i noticed was that they are quite similar with statement names.

I like C i think i could do as much with C as any other language and i believe someone wrote that c was faster although longer , earlier on.

i like the idea of speed and with what ive seen i think it could be easy to debug also with comments.

Programming has opened up a whole new world to me over the last few days as much as maths has done at school ... i hope i choose the right language , although it wont be a waste of time either way , it will certainly set a standard from which all my other programming experiences will be based on.

C++ seems the most popular and ive read " its a better C " ...... But id rather use C and write a bit more code so as to get a faster program.

I Dont know if all what ive said is true but id like to choose C , will I be left behind by C++ programmers or dosnt it matter that much :confused:

 

feedbackdefinatly welcome ,,, hello programming world

Link to comment
Share on other sites

ive got some books on c and c++ and have found out the basics of how to generate a random number and make a simple little dice game , Hooray first ever game possibilities . What do you need to make a complex game after learning the basics i.e A 3D first person shooter ..... heavy stuff hey .... i would assume a game engine of some description but would everything you need to compile a relly cool 3d game be taken from <.h> files ... i just cant see how massive games come about from c or c++?

Link to comment
Share on other sites

.h files are only supposed to have variable/class definions (although you can embed some of the simple, standalone methods directly in the class definition). What you need are entire code libraries that are in ".lib" files or as massive quantities of source code that you link or compile respectively along with your own code. You'll need to get an understanding of how the "compiler" works with the "linker" to really understand how this process works.

 

You should probably get some books on the subject: there's a zoo of different pieces to making a game, with all kind so engines: physics engine, 3-d modeling, rendering, ray tracing, etc. etc. etc.

 

I haven't researched the tools in years, and only have familiarity with the Pixar Renderman code that my friends at Pixar and Disney use. There are oodles of low-end libraries out there, but I'm no help in directing you to them...

 

Good luck!

 

Cheers,

Buffy

Link to comment
Share on other sites

OK... So your goal is computer Game programming, correct?

 

Assuming the answer is yes, then here's some advice.

 

I picked up a rather helpful book, cost $45 american, I found it at Barns and Nobels. It's Called "Game Coding Complete, Second Edition" by Mike Mcshaffry. Printed by Paraglyph press, ISBN 1-932111-91-3.

 

It's Aimed towards Windows Game programming, from top down, with Publishing concearns in site. It's a hefty piece of reading material, and will introduce you to the Basics of making a game project, from scratch.

 

It leans towards:

C++

Direct X

Win32

 

It is a general overview, of the process of greating a Game Engine. It's not detailed, but it's extensive. Here is another decent book I picked up.

 

GPU Gems 2. It's main perview is that of OpenGL, and Nvidia Graphics chips. It talks in detail about the various applications of a GPU in Real world apps. It's math intesive, as Graphical Programming is. So I would suggest some kind of Matrix, and Vector mathematics overview.

 

I myself, do not like Microsoft on some basic moral reasons so have since opted to boycott the Microsoft system for making my games on. A limitation, but a moral one all the more. So I find that I am less interested in learning Direct X API and Win32. I find that I am more interested in learning OpenGL API. I am interested myself in developing games for Linux, but I need a better education first, which will take sometime.

 

-He who laughs last, is the slowest to get the joke.

KickAssClown

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...