• OK, it's on.
  • Please note that many, many Email Addresses used for spam, are not accepted at registration. Select a respectable Free email.
  • Done now. Domine miserere nobis.

newbie computer programmer (advice?)

aracaris

Active Member
Local time
Today 5:30 PM
Joined
Sep 5, 2009
Messages
214
-->
I'm new to computer programming, learning C++ right now. I am generally pretty good with computers, I've managed to pick up a lot of web design (CSS, (X)HTML) pretty quickly (though I still consider myself somewhat a novice), I even somehow managed to hack a few video games way back when I was still a kid (late elementary school years). So I 'm pretty confident that I have the ability to learn these things, even if at certain points I may struggle a bit.

So I'm looking for general advice from more experienced programmers for a newbie such as myself.

For example, any good resources you can point me towards?
What other languages would you recommend I delve into (I'm thinking PHP, and deifnitely javascript, which I know small amount of, but what else?)
Any other pointers?
 

SEPKA

What???
Local time
Tomorrow 12:30 AM
Joined
Oct 6, 2009
Messages
225
-->
Location
I suggest I could put the coordinate here but then
What? You can hack computer games??? Wow, I still struggle with Assembly :(
But I think you should state clearly what do you want to focus on in programming first, it would be much more helpful to helper. Web designer/Algorithm developer/Software designer/AI researcher/Security/Game programmer/Reverse engineer/Hardware programmer/etc. (sorry the title might not be correct, I translate it literally from my native language).
Hard to recommend something without knowing what you would be focusing on, but I would recommend C++ and C# for most generic purpose.
You can start out on the book 'Algorithm' or 'Algorithm & Data Structure' or 'AI Algorithm for Developer'. Sorry I only remember the title of the book. I think all type of programmer will need those basic material (but since you have been able to hack video game, maybe you are already much better than this :confused:).
Also try the MIT Opencourseware. The link is somewhere in this forum.
 

aracaris

Active Member
Local time
Today 5:30 PM
Joined
Sep 5, 2009
Messages
214
-->
I did once upon a time, and programs tended to be much simpler back when I did it, so I think it's not as impressive a feat as it might sound, all though granted I was only about 12 at the time. There were a few games that I got demos for, and it was common for demos to stop working after a certain period of time, or after so many uses, and I found out how to fix that. I don't remember how I did it now, and it wouldn't be as easy, companies have gotten wise to people doing those sorts of things.

So far my focus has mainly been on webdesign and anything that goes into that, which C++ isn't needed for, but I'm sort of just addicted to learning for learning's sake to a certain extent as well. Beyond that I've got all kinds of fantasies about making video games and such.
 

SEPKA

What???
Local time
Tomorrow 12:30 AM
Joined
Oct 6, 2009
Messages
225
-->
Location
I suggest I could put the coordinate here but then
Web design I recommend language Java (for a lot of stuff), PHP/ASP (I learnt ASP but somehow PHP seems more popular), SQL (for database), HTML (might not be necessary with all the designing software), CSS (this should be easy). C++ is still good if you have to program the server and the browser too, but I have not go into that to tell much.
For making video game at a billion-dollar-huge-awesome-everything-inside-corporate-level game you probably only need C++, but you will have to learn a lot of game-related algorithm, and keep in touch with the latest hardware technology. You would also have to know something to do with computer graphics, which I'm almost clueless about. I recommend "Maths and Physics for Game Developer" and "The Art of Game Design: The book of lens", that is what I read for introduction (the former one are quite heavy in maths). There is another one that is heavy on hardware aspect of game programming but sorry I forgot the name.
 

sniktawekim

Well-Known Member
Local time
Today 12:30 PM
Joined
Oct 3, 2009
Messages
603
-->
Location
Dayton, OH
I'm new to computer programming, learning C++ right now. I am generally pretty good with computers, I've managed to pick up a lot of web design (CSS, (X)HTML) pretty quickly (though I still consider myself somewhat a novice), I even somehow managed to hack a few video games way back when I was still a kid (late elementary school years). So I 'm pretty confident that I have the ability to learn these things, even if at certain points I may struggle a bit.

So I'm looking for general advice from more experienced programmers for a newbie such as myself.

For example, any good resources you can point me towards?
What other languages would you recommend I delve into (I'm thinking PHP, and deifnitely javascript, which I know small amount of, but what else?)
Any other pointers?

im in my third, and final programming course for my major (computer engineering) by no means am i an expert, but i think i could give you a few tips.

first, it depends on what you mean by learning? if you are trying to pick this up on by yourself, it may be a little bit harder.
if you are in a class, you might not learn anything in lecture, but they give a good frame of things you need to learn, and a good order to learn them in.
if you are learning on your own, i would recommend starting with java (this conclusion is completely biased, i started with java, and i think my end results were well)
the best way you can learn is to figure out what it is that you need to learn, then to play around with it, until you figure it out enough to satisfy your curiousity. if you are like me, you will strongly and quickly master loops, and be good at using them to do pretty much anything (in combination with if, and else statements).

take time to figure out recursion, i think it is good for the programming mind to figure it out.. but i never really use it unless im trying to make my code look pretty (which i dont do).. because loops are almost always more effecient than recursion.

make sure you pay much attention and memorize how to do input and output.. its much easier to do in C++, but i remember in my java class.. thinking "ill just figure this out on my own like everything else" but it was more of a memorizing the syntax, and what to import.. etc.. so i had very much trouble learning how to get input and output without joptionpane, until i finally had someone tell me what i had to do.

once you get into class programming (object oriented programming?) utilize your ability to add objects of certain classes to arrays and vectors/arraylists.

i will tell you, you will need to learn inside out how to use: if/else statements, loops, nested loops, and nested if/else statments, arrays (i dont find multidimentional arrays are needed that often, but i think they can be now and then), classes/custom objects, and methods. these are the most necessary tools with which you can build almost any house, or at least the great majority of it.

a few fun (i use fun loosely) and common puzzles that will help you improve to solve are:
take in the number of rows you want from the user.
then, with that number, print:
a square of asterisks with that many rows.
a hollow version of that square
a right triangle, having a corner in the upper and lower left, and bottom right.
i right triangle, but this time having corners in the upper right, bottom right, and lower left.
both of those triangles again, but only outlined with stars, being hollow in the middle.
then an isosceles triangle, and a hollow version of it.
--
once you learn how to do graphics..
figure out collision detection.
hint: a very useful way of doing things with graphics, is to have a class/object of something that would appear on screen (e.g. "ball") with variables such as center location, left boundary, right boundary, upperboundary, etc.



and.. wow.. its 5 a.m.
im going to bed. if you have any questions, i would be glad to answer.
 

SEPKA

What???
Local time
Tomorrow 12:30 AM
Joined
Oct 6, 2009
Messages
225
-->
Location
I suggest I could put the coordinate here but then
I started out with Delphi, it is much more convenient if you want to learn about algorithm rather than the implementation, but it is less suitable for real programming.
There are some more advanced data structure and algorithm as well, but I think the new C++ libraries have all of them (I'm sorry but I'm out of date with technology for nearly 1 year since I changed my subject).

@sniktawekim: I think recursion is still more efficient for certain algorithm (such as merge sort) because although it is still essentially a loop, its working with the stack is much more effectively implemented by the compiler compared with when you have to implement a stack yourself.
 

Felan

Prolific Member
Local time
Today 11:30 AM
Joined
Apr 20, 2009
Messages
1,064
-->
Location
Unauthorized personnel only
I would suggest learning either Java or C# or both of those. Either of these languages will allow you to learn good design in general purpose languages without risking serious mental damage. For web stuff either Java or C# can be used as well and the real difficulty isn't the language, rather its the libraries that take time to learn.

While C++ is by far my favorite language, it has way too many extreme unintuitive subtleties. If programming thrives as a passion for you, you will eventually want to venture into C++.

Once you feel comfortable with at least one language pick up a book on design patterns and spend some time wrapping your noodle around that concept. After that you should be in good shape for whatever programming you want to do.
 

sniktawekim

Well-Known Member
Local time
Today 12:30 PM
Joined
Oct 3, 2009
Messages
603
-->
Location
Dayton, OH
@sniktawekim: I think recursion is still more efficient for certain algorithm (such as merge sort) because although it is still essentially a loop, its working with the stack is much more effectively implemented by the compiler compared with when you have to implement a stack yourself.

yeah. i said some of them.
i did a program with something that autosolves mazes.. it was VERY easy using recursion, whereas it would have been a huge pain to use without recursion.
 

Artifice Orisit

Guest
The only useful advice I can give is this: Finish design before you start development.

One must know what s/he is doing, before doing it.
Otherwise one does something without knowing what one is doing.
And is it any surprise that code written in such a way doesn’t work?
 

SEPKA

What???
Local time
Tomorrow 12:30 AM
Joined
Oct 6, 2009
Messages
225
-->
Location
I suggest I could put the coordinate here but then
Add more advice: learn proper debugging, commenting, and documenting technique. Very important. I don't learn it at first because it goes against my natural tendency but it bites me back later on large project.
 

Aiss

int p;
Local time
Today 6:30 PM
Joined
Sep 18, 2009
Messages
222
-->
Learning programming somehow randomly has one big drawback: you'll later tend to write "dirty" code. If you're interested in, for example, object oriented programming, try to understand the principles. Don't disregard things like good/bad techniques. Regardless of the language or even paradigm, theory is important - have a look at Introduction to Algorithms, for example.

C++ probably isn't the best language to begin programming, for reasons others already mentioned. It's widely used however, so you'll probably end up learning it at some point. There are some basic tutorials online, use them if you need a starting point. Even when you thought you've learned it, you'll probably be far from completely understanding how the language works. Many problems are addressed in C++ FAQ LITE, although it isn't really the place to start with. There's also a C++ FQA LITE. Note they aren't exactly contradictive - FQA deals more with what C++ is good or bad for (ok, mostly bad part really), but if you're going to use it anyway, FAQ still applies.

Python is a very clean language, although I've no idea if it's a good one to learn programming with.
 

Rhys

Member
Local time
Tomorrow 3:30 AM
Joined
Nov 2, 2009
Messages
33
-->
Location
Australia.
I'm currently learning C++, thinking about dropping it for C# though.
 

Atriamax

Member
Local time
Today 9:30 AM
Joined
Mar 16, 2009
Messages
60
-->
Location
San Diego
I started with simple c++ ( cout cin stuff) which gave me a good idea of arrays, variables, loops, etc. but shortly after i started doing java, its a lot of fun. I program a lot of java, and have made some pretty high power applications. I only read 1 book on C++ and another book on java, i would say its quite easy to teach yourself once you "get the hang" of it. Just stick with it even if its frustrating at first, its worth it!
 

morricone

Member
Local time
Today 6:30 PM
Joined
Aug 16, 2009
Messages
27
-->
Location
Germany
If you have the chance take a look at Ada it will teach you a lot about good programming style. And if you want to have a challenge get into any of the functional languages. Beside writing lots and lots of code you should also read a lot of other peoples code.
 

RubberDucky451

Prolific Member
Local time
Today 5:30 PM
Joined
May 22, 2009
Messages
1,078
-->
Location
California
I'm surprised no one has suggested visual basics. Look it up.
 

SEPKA

What???
Local time
Tomorrow 12:30 AM
Joined
Oct 6, 2009
Messages
225
-->
Location
I suggest I could put the coordinate here but then
I'm surprised no one has suggested visual basics. Look it up.
Because that is a bad language to learn programming.
It might be a bit faster if you want to make a small window application, but I would recommend visual C++ over it anyday.
The code in visual basic are messy in large project, hard to debug, does not show clearly the logical structure, and does not teach you how the application work deep down. It is only good if you program something so small that it does not matter much, because it hide the details from you.
 

fullerene

Prolific Member
Local time
Today 12:30 PM
Joined
Jul 16, 2008
Messages
2,156
-->
Personally I'm a fan of Java and Python. Python is extremely readable, easy to get started with, and has a lot of nice perks (iterating over lists without fooling around with indexes, no limits on how large a number can be). The downside is that you won't learn things like declaring variable types, which every other language that I've learned has required in one way or another.

I don't know what C++ or C# are like, but if they're anything like C, I would definitely not recommend them to start. C is a bitch to get things to compile, doesn't necessarily crash when you do something you're not supposed to, and won't even produce the same output every time you run it, if you made an error somewhere.

I'm also getting to be a bit of a Perl fan, although I wouldn't recommend learning on that either. I've been learning it in a class for about 2 weeks, and we've already written a mini-web crawler, which can do things like skim through photos on flickr and download them based on search-words (entered at runtime) for you. The code is damn near unreadable, though. Not as bad as APL (where "(~R∊R∘.×R)/R←1↓⍳R" is the extremely-memory-inefficient code for "give me a list of all the prime numbers less than R"), but it's not exactly easy to read either.
 

aracaris

Active Member
Local time
Today 5:30 PM
Joined
Sep 5, 2009
Messages
214
-->
Thanks for the replies. I actually am taking a class on C++, which I think I'd be doing great in except there's a lot of things going on lately that have made it really hard to find the time I need to actually do the assignments (and is why there will be a week or so that I'll disappear from here all together too), I may just take it again some time when I actually have a decent amount of time to dedicate to it.

For whatever reason the school I'm taking classes from thinks that C++ should be the programming language that students first start learning. After reading through these posts, I'm wondering why.
 

SEPKA

What???
Local time
Tomorrow 12:30 AM
Joined
Oct 6, 2009
Messages
225
-->
Location
I suggest I could put the coordinate here but then
@cryptonia: C++ is very much like C, only add in object-orientied. However C# is radically different that I think it is another version of Java: even the compiler are a lot different. I think the only similarity between C# and C is the keyword.
@aracaris: probably because C++ is useful for most purpose unlike other specialized language. My algorithm class started out with Delphi, my web design class started out with ASP, my hardware class recommend Assembly :eek::rip:, the only class that teach C++ is the programming class (just programming, no adjective attached): focus purely on the programming skills, without much algorithm or application.
 

walfin

Democrazy
Local time
Tomorrow 12:30 AM
Joined
Mar 3, 2008
Messages
2,436
-->
Location
/dev/null
aracaris said:
For whatever reason the school I'm taking classes from thinks that C++ should be the programming language that students first start learning. After reading through these posts, I'm wondering why.

It actually is a very simple language to learn. Easy to learn, next to impossible to master.

It's only when you've got something big that some nonstandard stuff in the standard comes to bite you (e.g. vector<bool> not behaving like you think it should; standard allowing for "undefined" behaviour in compilers).
 

aracaris

Active Member
Local time
Today 5:30 PM
Joined
Sep 5, 2009
Messages
214
-->
@aracaris: probably because C++ is useful for most purpose unlike other specialized language. My algorithm class started out with Delphi, my web design class started out with ASP, my hardware class recommend Assembly :eek::rip:, the only class that teach C++ is the programming class (just programming, no adjective attached): focus purely on the programming skills, without much algorithm or application.

Ah, OK, that does make sense, though I do think it's odd that they want me to know C++ before I even take the Javascript class though, which I decided to take the C++ class because I wanted to take their Javascript classes (I've dabbled in Javascript, but haven't really delved into it yet). Now though I'm glad I am learning something not web specific, because I don't think I really want to limit myself to just web design.
 

dents

Member
Local time
Today 12:30 PM
Joined
May 1, 2009
Messages
70
-->
Location
Sunnyvale, CA
Chiming in a week later ... I highly suggest that whatever you do, you do it often and in large quantities. Back when I was first learning about this stuff in 2000, I got into "security challenges" (www.mod-x.co.uk is my favorite) and hands down, the skills I learned solving those are the most valuable experience I can think of.
 

Adamastor

Active Member
Local time
Today 1:30 PM
Joined
May 22, 2009
Messages
147
-->
Location
Brazil, São Paulo
@dents
Thanks for the site! Sounds like an interesting way to waste my time :D

I started like this: C -> Java -> C -> more C -> more C -> Perl
I have been looking at Python and PHP lately, I suppose PHP is perfect for someone working on the web, but this isn't my area =/. Python sounds really interesting though.

When you are familiar with your chosen language's sintax (truth be told, any book will do, lol ) you can play with math problems, algorithm problems or delve at win32 api, plataform specific software, hacking forums. I'll list a few:

FORUMS
http://www.cprogramming.com/ - They have interesting articles there and good books recomendations...
http://forum.gamedeception.net/
http://www.uc-forum.com/forum/ - Unknow Cheats forum

PROBLEM SITES
http://projecteuler.net/ - A list of problems, math problems, such as: How many n-digit positive integers exist which are also an nth power?

http://olimpiada.ic.unicamp.br/pratique/programacao/nivel2 - (Brazilian portuguese site - I had to list it, because the problems are so much fun)

Cool articles
http://www.codeproject.com/

There are always the vital documentation sites for each language, you should get familiar with some...
 

timmymayes

Redshirt
Local time
Today 9:30 AM
Joined
Dec 28, 2009
Messages
9
-->
Location
San Diego, CA
I fully support starting with python. It is one of the best langs for learning becasue it is easy to pick up but has enough complexity and similiarity to the "bigger" languages that what you learn will translate very easily. Also in python you can write c/c++ wrappers for parts of a program that you need the speed and memory managment benefits of c/c++. This menas that as you start to learn c/c++ you can enhance your overal knowledge. Also python is cross platfrom.

If you are getting into web design python is a great fit. If you are familiar with the L.A.M.P. schema for web design the P originally meant php but python can replace it. You could check out Turbo Gears 2 which is written at python and is used to develop sites in the MCV methodology (model control view).

So my vote goes to python. Hit me up if you need any resources gettnig started.

Cheers,

T
 

aracaris

Active Member
Local time
Today 5:30 PM
Joined
Sep 5, 2009
Messages
214
-->
@dents
Thanks for the site! Sounds like an interesting way to waste my time :D

I started like this: C -> Java -> C -> more C -> more C -> Perl
I have been looking at Python and PHP lately, I suppose PHP is perfect for someone working on the web, but this isn't my area =/. Python sounds really interesting though.

When you are familiar with your chosen language's sintax (truth be told, any book will do, lol ) you can play with math problems, algorithm problems or delve at win32 api, plataform specific software, hacking forums. I'll list a few:

FORUMS
http://www.cprogramming.com/ - They have interesting articles there and good books recomendations...
http://forum.gamedeception.net/
http://www.uc-forum.com/forum/ - Unknow Cheats forum

PROBLEM SITES
http://projecteuler.net/ - A list of problems, math problems, such as: How many n-digit positive integers exist which are also an nth power?

http://olimpiada.ic.unicamp.br/pratique/programacao/nivel2 - (Brazilian portuguese site - I had to list it, because the problems are so much fun)

Cool articles
http://www.codeproject.com/

There are always the vital documentation sites for each language, you should get familiar with some...


Thanks for all the links I'll definitely check them out.

timmymayes, I've heard of Python, but haven't really heard of it being used a whole lot, I didn't even know it was used for webdesign.


Chiming in a week later ... I highly suggest that whatever you do, you do it often and in large quantities. Back when I was first learning about this stuff in 2000, I got into "security challenges" (www.mod-x.co.uk is my favorite) and hands down, the skills I learned solving those are the most valuable experience I can think of.

Yeah I'm finding this stuff sure does demand a lot of time!

I was into computer nerdy stuff like this when I was really young, but it's one of those things I didn't really stick with. I wish that being into computers had led to me getting into programming even earlier on, I'd be soooo much farther along, but then that's how I'm finding a lot of my interests are working out. I'm sort of rediscovering the interests I had as a little kid. Same thing happened to me with comic books, liked them as a kid, forgot about them, got back into them more recently. I've never stopped playing video games for long periods of time though...
 
Top Bottom