Sign in to follow this  

Education and programmers

This topic is 3631 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I have two questions: Can a person make an efficient programmer..... If that person only took up to pre-algebra at school? Secondly, I'd like to know what's the best language to learn if you're not an educated individual?

Share this post


Link to post
Share on other sites
Quote:
Original post by Cgr
Can a person make an efficient programmer.....
If that person only took up to pre-algebra at school?

Yes most defiantly. Most programming does not require much in the way of math knowledge.
The kind of thinking needed for math and programming is rather similar, so someone who has done a lot of math can have an advantage starting out but it's possible for someone who hasn't to catch up as he grows more accustomed to the way of thinking.

Quote:
Original post by Cgr
Secondly, I'd like to know what's the best language to learn if you're not an educated individual?

Any of the standard languages should be just fine, c, c++, c# or java (or others that I probably forgot to add). It depends on what you want to do, if games is your priority then you'll probably find more materials if you choose c/c++ since they seem to still be most popular but there are resources for the other languages too.

Share this post


Link to post
Share on other sites
what math you need depends on what you want to make. for graphics you would need a lot more, but there are a few good books about it. for general programming i think you don`t need much from high school math but it would be good to know about it.

and personally i prefer c#. someone else might say c++ though, but there are good reasons to go for c#

Share this post


Link to post
Share on other sites
Thanks for the replies. I'm glad to find out my education won't prevent me from my dream career. I have already started learning C# years back, my progress is slow and uneventful, mostly because-- I don't have any projects to work on.

Share this post


Link to post
Share on other sites
i was in this situation a few years ago too ;) well go and learn directX and XNA. i don`t know what skills do you have but if you just know how to use c# then i`m afraid you can only work on small projects you make up yourself. i`m sure you can find some threads on gamedev what do you need for DX. download DX SDK from microsoft sites and learn from it.

Share this post


Link to post
Share on other sites
You can become an efficient and skilled programmer, but it's going to take a lot of work to get there. As MassacrerAL mentioned, it really depends on what you want to do. Rendering and animaion/gameplay is going to require heavy knowledge of linear algebra and some calculus. But other areas such as front ends, and interface work will require less math. Spearhawk makes a good point though, computers are basically number crunching machines, so having a good understand of math is going to important no matter what.

If you're serious about getting into game development I'd suggest C/C++. It's not the easiest language to learn, but most pc and console games are built using it and it will help you understand what the machine is actually doing, more so than with a higher level language like java or C#. If you want to do more casual or web games, then there are other options like Flash/Actionscript.

Share this post


Link to post
Share on other sites
Quote:
Original post by Silicon Munky
If you're serious about getting into game development I'd suggest C/C++. It's not the easiest language to learn, but most pc and console games are built using it and it will help you understand what the machine is actually doing, more so than with a higher level language like java or C#.


(emphasis mine)

This isn't true. C++ models a particular abstract machine. The very fact that it's abstract means that it's not too hard (for some definition of not too hard) to write an implementation for different platforms, but also means that you don't actually have a clue what's going on. In fact, you're going to be hard pushed to know what the machine is actually doing unless you're working on the bare metal (i.e. without an existing operating system running) in assembly language (without an optimizing assembler).

There was relevant discussion recently, spawned from a claim that pointers were how the computer works, starting with this post.

Share this post


Link to post
Share on other sites
It's always good to have a solid understanding of math. I don't particularly like math, but I am good at it. The abstract reasoning that allows me to pick up on math is what allows me to solve programming problems.

Regardless, even if can get by on algebra (I rarely use much more for web development) the kind of reasoning involved in discrete math is needed in all programming. If you can understand sets and trees, and the math and algorithms that can be applied to them, then you can do a lot.

Interestingly enough, just programming will teach much of the math that you need.

Of course, you'll only know the benefits of learning more math if you go out and learn it. Learning higher levels of math only makes the lower level stuff easier and you will even learn shortcuts to otherwise hard problems.

Also, calculus is a must for anything involving physics.

Share this post


Link to post
Share on other sites
For programming, computer languages and computers altogether are completely redundant.

Good programming is about finding optimal solutions to given problems, then expressing them in the syntax your computer understands, usually through use of computer languages. If anything, many people fall into the language/API tar pit and forget about the big picture.

Understanding of hardware architecture is quite important in some areas, and especially in system programming, but those areas require different skills than what programmers usually have to offer.

Education is also not determining factor, it's your approach and methodology. But while trying to improve your skills, you won't be able to avoid math-related topics, or you'll hit an invisible ceiling.

A good beginner's language is something you have access to, allows you to do the things you want easily, and is easy to get support for. Which that is for you however is not something I can advise. There's a big difference between what one finds good, and what one is told to use, and learns it due to lack of choice.

Share this post


Link to post
Share on other sites
Quote:
Original post by TheUnbeliever
(emphasis mine)

This isn't true. C++ models a particular abstract machine. The very fact that it's abstract means that it's not too hard (for some definition of not too hard) to write an implementation for different platforms, but also means that you don't actually have a clue what's going on. In fact, you're going to be hard pushed to know what the machine is actually doing unless you're working on the bare metal (i.e. without an existing operating system running) in assembly language (without an optimizing assembler).

There was relevant discussion recently, spawned from a claim that pointers were how the computer works, starting with this post.


I agree, I was grossly simplifying the situation. I didn't mean that C++ is exactly how your machine works. What I meant was that working with C++ and debugging in the compiled optimized/unoptimized assembly is going to get him much closer to what is really going behind the scenes as opposed to using Java and working with a virtual machine.

I do agree though that you can program in C++ and never really work with the assembly. I guess I'm so used to having to deal with the compiled assembly that I assume everyone writing C++ code also deals with the machine at a lower level.


Share this post


Link to post
Share on other sites
Quote:
Original post by Cgr
I'd like to know what's the best language to learn if you're not an educated individual?
IMHO, your level of education is mostly irrelevant when choosing a programming language to learn (assuming you have little or no prior programming experience).
I would advise against C, C++, C# and Java as a first language (but they would make a good second language). My personal choice would be Python.

  • Python is a very friendly language that does not require you to know the entire language to use it effectively (as C++ does - it's a very large and complex language with hidden traps that are often difficult to avoid unless you know the language VERY well - hardly a beginner language).

  • It does not force you to use classes for everything (as Java does - just because everything is in a class does not mean you are using OOP and sometimes classes may not be appropriate, also this complicates the learning process).

  • Python also has a clean and clear syntax (unlike C, IMO) which makes it very newbie friendly and makes it easier to read other peoples code.

  • Python has great documentation and support groups and has support libraries for anything you could want (for game development, Pyglet, PyGame and PyOpenGL are just three). It also runs fast enough for any game a beginner is going to create - by the time performance becomes an issue, you will be ready to learn a language like C or C++ and you can use C/C++ and Python together in a single project, if you wish.

  • Dynamic typing also makes Python extremely beginner friendly as one does not need to declare variables before use, rather they are created when you first use them and you can store anything in any variable. Some people may think this is more error prone, but in all my years of using Python, I have very rarely found this to be a source of error.

  • Python has an interactive interpreter where you can enter single statements (or functions and classes, if you wish) and see them execute. Great for experimenting, prototyping or just playing around. Definately a useful tool for beginners and pro's alike.

  • Python insulates you from tedious, low level concepts such as memory management and pointers (worth learning, but not for your first language).

  • Finally, everything you learn in Python can be directly applied to other languages like C++ and Java.



I have not used C# enough yet to be able to comment on it, but I gather it is mostly similar to C++ or Java, from a beginners point of view.


As a quick comparison, here is a hello world program, written in C++, Java and Python.

C++:

#include <iostream>
int main ()
{
std:cout << "Hello, World!";
}


Java:

class Hello
{
public static void main (String [] args) {
System.out.println("Hello, World!");
}
}


Python:

print "Hello, World"



Python requires the least amount of prior knowledge to understand a Hello, World program (which is typically the first program people learn to write), making it the easiest language for a beginner to start learning (out of the ones mentioned, anyway).

Of course, I'm biased, since Python is my favorite language , but I also use many other languages in my day-to-day coding (C++ mostly, also Java and a number of different assembly languages, amongst others) and this post is based wholly on personal experience (and reading problems others have/had when learning to program).

PS: Python was not my first language, though I wish it had been, since I'd have got a lot further, a lot faster, than I did.

[Edited by - issch on June 27, 2008 2:17:54 PM]

Share this post


Link to post
Share on other sites

This topic is 3631 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this