I want to be the BEST programmer in the world... where do I start?

culex

Senior member
Jul 26, 2000
744
0
76
I don't program... tho I've tried learning C a few times... I realize my profession lies in giving techsupport of what limited knowledge I have :p

Enough about my rants.

I think I've heard alot of people mention that best way to learn this is by teaching yourself with a tad guidance. I'm pretty sure alot of people here did not go to computer classes and learn this straight off of a school. I'm sure alot of us tinkered with problems and hardware and basically taught ourselves. I hear the same goes for coding. You might want to get a book, get the basics down, start the experimenting. If you run into a problem and you hopefully fix out of it, you start learning more and more. As for the guidance part, I'm pretty sure there are tons of forums dedicated for certain programming languages. Atleast I know there are tons of javascript and html forums.

Hope this helps.
 

loogie

Banned
Oct 18, 1999
2,478
0
0
Get a good book. Read it. Write small programs to reinforce what you are learning.
 

Cybordolphin

Platinum Member
Oct 25, 1999
2,813
0
0
LOl... thanks John....

Where does Java come in? Isn't that similar to C++ but better security etc.? Should one start with C++ or just jump into Java?

Thanks again.

Will choose my target audience more wisely in the future.... John.
 

Zorba

Lifer
Oct 22, 1999
15,613
11,255
136
BASIC just screws you up later, don't even think about learning it :p. I think C is the best to start with (although it is defently not the easiest to learn), a good book is "C By Example" by Greg Perry (he's a Tulsan, so I have to plug his book :), but it really is a good one). Once you learn C go into C++.
 

Cybordolphin

Platinum Member
Oct 25, 1999
2,813
0
0
Hey John.... do you know where I can find a CPU Fan cable/wire to motherboard for a Pent. II 350 CPU?
It's not for me... but someone else here. They need a female to female that goes from the CPU fan to the motherboard. He's having a heck of a time finding one.
 

ragiepew

Golden Member
Oct 9, 1999
1,899
0
0
First off you need to decide which "part" of programming you wish to get into. There are arguably two main areas, the business side and the science side. If you go into the science side, you will need to pick up on C/C++ because that is still basically used a lot. On the business side, things are a bit more complicated. I dont know who said that Visual Basic (VB) was not good to learn but they obviously do not deal w/ business related programming. Many companies today use VB application development so it is a good language to learn from that aspect. Also, on the business side, you will need to pick up on the different web technologies (HTML, XML, VB/JavaScript, Java, COM, ASP/JSP, etc...). Its all a matter of direction.

To your question about Java v. C++, Java is derived from C++, thus its syntax is very close to C. Many people are calling on Java to dominate in the comming years, I dont know how truthful that is... we'll see.

I am a bit biased to the bisness side of things (its my living) so I may not have characterized the science field very accuratly... I was just trying to give you an example...

What this all boils down to is that there is no "ONE" place to start, especially since technology is moving so fast. Instead of learning a language from the top down... try learning the logic behind it. A good teacher I had said the following when he was trying to teach us to program, "Any problem, any language, any computer, any time." All languages are comprised of sequentials, conditionals (if..else), and Loops (for/do while) and once you understand those concepts, picking up a new language will be relatively easy... after all, its just syntax.

alin
 

tom3

Golden Member
Oct 10, 1999
1,996
0
0
Start by learning an imperative language, preferrably C, you dont need to become a C master to move on to the next step.

Armed with the knowledge of C, learn the concept and practice of object oriented programming inside out, start with C++, learn it really really well.. with a strong background in C++, java is really easy to pick up..

Learn and experience some assembly, to appreciate and understand computing at a lower level. some lisp, to learn recursion and artificial intelligence.

Learn whatever language your job/hobby requires.

Decide which type of programming you want to do, then get into it. Write code for projects in that category to gain experience...

If you only want to become a programmer, that's basically where you start.. and keep coding, you'll be a competent programmer.. now if you want to be a software engineer.. programming is only one (important) part of it. You gotta learn software architectures, patterns, concurrencies, etc. etc.


It's a long journey, but a fun one..
 

hans007

Lifer
Feb 1, 2000
20,212
18
81
learn java and c++ those are the most desired skills. I learned C++ in about 3 months, its quite a fun language. Java seems like there is more you can do with it, and i'm working on learning that now. Visual C++ is also good , doesnt seem as intuitive as java, that and visual c++ has so many functions to learn.
 

Argo

Lifer
Apr 8, 2000
10,045
0
0
Well, depends on what you want to do. In case you want to do business programming run the following in the exact order.

C/C++ -> Win 32 API -> MFC -> SQL

In case you want to do game programming then:

C/C++ -> Win 32 API -> Direct X/OpenGL
 

cparker

Senior member
Jun 14, 2000
526
0
71
Right now your best bet is Java. Go to the Javasoft.com page and register (free) for the Java Developers Connection. Download the latest JDK (Java Development Kit) which is now 1.3. Also download the Java Tutorial (also Free). Get a copy of "Thinking in Java" by bruce Eckel (also free at bruceeckel.com). Finally, go to textpad.com and download the latest textpad editor/ide (also free unless you decide to register). You can use that editor as an IDE (integrated development environment) so that when you compile a program it will display the errors in your compilation AND if you click on the errors it will then jump to the place in the source code where the error was made. You should also get the example files for thinking in java and the Java Tutorial. This should get you started. Focus on the language itself, object oriented isssues, the collection classes, multithreading and networking. I wouldn't worry much about applets or GUI type programming at first. Try and spend something like 2 hours a day on programming. Read whenever you feel fresh and interested.

OK, that's step one. If after six months to a year you are still at it and making progress/enjoying it, you can move on to more complex/interesting things. If you are interested in WWW you can learn servlets and Java Servlet Pages. Or you can do graphics and GUI with the Swing libraries. Also Database with JDBC. Lots and lots of stuff.

OK, now why NOT C++? Well I've programmed in C++ for years, so I'm not exactly naive about the language. The problem with C++ is that the number of people working on extending the language is shrinking whereas in Java it's growing very rapidly. As a result you have libraries available in Java that you just can't get in C++ (although sometimes you can buy them for lots of bucks). for example I paid an awful lot for a good networking/multithreading library for C++, which wasn't supported that well. In java it comes with the language and it's free. Another problem with C++ is that it's not really fully object oriented and it's prone to certain types of problems like memory leaks and it's easier to hang yourself with poorly written code. It is faster though (being compiled) although that too is changing with the just in time compilation that the latest Java offers. I've found that in many of my programs Java is virtually just as fast as the same program written in C++ on a win32 platform.

One wrinkle. Microsoft is introducting a new language called C sharp, which looks like it will be a C++ with many of the Java features. Most likely they are introducing it as a Java killer in their battles with Sun. Personally I think java is the way to go, but the main significance of that development is not to learn VB, since C sharp will evolve as the main MS language. OK that's my 2 cents. Have fun!
 

ragiepew

Golden Member
Oct 9, 1999
1,899
0
0
I still have to disagree about VB... It is used by many companies now because raw speed is not as necessary as it once was. THe ease of use (VB), therefor the speed of writing apps, is preferred to the speed of the apps (C/C++) in many cases... again, just my observation.
 

ragiepew

Golden Member
Oct 9, 1999
1,899
0
0
also, another good place to start is by not saying "the best in the world"... as you will learn, someone is always better (at least you can always learn from someone else). You will NEVER be the best in the world... sorry to dissapoint.
 

ragiepew

Golden Member
Oct 9, 1999
1,899
0
0
Weyoun: off topic... but does your name have to do w/ DS9? If so, cool name... if not, still cool name =P.
 

Weyoun

Senior member
Aug 7, 2000
700
0
0
yup sure does, gotta love those guys :p

just a matter of curiosity, and also self justification :)
 

ragiepew

Golden Member
Oct 9, 1999
1,899
0
0
yea, I loved DS9... freakin sucks that it got cancelled (IMHO way better than Voyager). Oh well, thanks for the reply.
 

Weyoun

Senior member
Aug 7, 2000
700
0
0
s'not a problem :)

same here, down with janeway and her cursed ship!!

dammit, i have to keep delaying my posts, bro's playing cstrike on win98 ics on a bandwidth hungry modem :)

in reply to dolphin however, im 16 and in yr 10 at high school. i started learning c++ just over a year ago and it has done loads of good to me. ive dabbed bit into mfc and other frameworks, but im really enjoying the time i spend with opengl now. to be perfectly honest with you, go your own way, read everything u can, also by challenging yourself by just throwing yourself into a higher level of knowledge. it sure as hell worked for me, 6 months ago, i had no idea about the real internals of a computer, now im arguing the implementations of t&l into programs on the anandtech forums. just dive in, but dont get too deep. trust me, you will be understanding in no time :)

also to get a guaranteed job in the future of programming, you would really want to get a uni degree. i have my eyes on computer software engineering at unsw, requires a UAI of 97.5 here is aus. basically that's a rough percentage of how well u did in your higher school certificate. just keep that in mind next time you wanna flunk an exam...

also a good knowledge base of computer hardware will be very beneficial in the long run, as you will know EXACTLY waht the comp is doing.
 

br0wn

Senior member
Jun 22, 2000
572
0
0
Remember it is not about HOW WELL you know the language (either C, C++,
Java, VB, or anything..), it's all about :
HOW GOOD IS YOUR PROBLEM-SOLVING SKILLS.

Eventhough you know all languages, all the syntax and tricks, but if you
can't derive an algorithm from a problem, then you are NO USE
(although you might be successful as an entry-level programmer ONLY).

edit : If you think you are good programmer, try solve this
ACM problem set (there
are around 700 problems there).
My friend thought he is good at programming, until he try
to solve one of the problems there, took him about 1-2 weeks
to solve one problem (they are not complicated, its about
1 page of code, but require lots of thinking).
A good programmer should be able to solve one and finish
writing the program in about 1 hour or less in total

 

Rigoletto

Banned
Aug 6, 2000
1,207
0
0
I reckon that a lot of rubbish has been talked here because the best principle if you want to start from scratch is to use a programming language that will get you achieving as much as quickly as you can whilst still retaining scope (you get a rewarding experience).
OK I admit I am not really a programmer but I have started a few books and finished rather fewer.
It is a rather annoying fact that languages are proliferating, and a programmer may have to know different languages for different applications. I like VB but for webstuff the commercial standard is Java. Games and many apps are done in C++. Then there is HTML, XML, XHTML, PERL, etc... my god.

I recommend Visual basic because you can get the tedious window interface stuff done very quickly, no problems, and guys are actually making money professionally writing business programs for it. Microsoft even do a certificate in the program- it is NOT a mickey mouse language. You can get working programs up and running in no time at all and devote yourself to algorithms and good ergonomic interfaces, not fussy windows internal code. It is also compatible with the more raw windows stuff if you want.

C++ will take too long, and incur too many errors for a novice by far. I have an IQ in top 1% (modest as I am) and even I won't touch it.
Java books unfortunately assume a knowledge of C++, but I can't discount Java because I know little more about it after that lesson!
Delphi has a good rep but,,, hmm... ha... after a whole book of it I was still not quite convinced compared to VB- BUT it's closer to C++ and has a very good reputation.

Having said all this, it may depend on what you get on magazine coverdisks. Remember that you can get the superb Visual Studio really cheap if you are a student.
Good luck.
 

sciencewhiz

Diamond Member
Jun 30, 2000
5,885
8
81
br0wn hit the nail right on the head. There are 3 steps to good programming.

First, you need to have the ability to solve problems. This is what most of programming is. It doesn't matter what your qualifications are, if you can't solve problems, you aren't a programmer.

Second, you must be able to code the solution that you came up with. This is the easiest step. If you solved the problem, in an easy to follow, step by step fashion, then translating that into any programming language is easy.

Third, your code must be easily read by others. This is imperative because you aren't going to be the only maintaining your code. If other people can't figure out what your doing, then your code is virtually worthless.

Make sure that you learn a wide variety of languages. It doesn't do you much good if you learn C, C++, and Java because they all do basically the same thing. Make sure that one of the languages that you learn is assembly because this is what all high-level languages are based on.
 

cparker

Senior member
Jun 14, 2000
526
0
71
I have to disagree with sciencewhiz. I'd say don't learn assembler, certainly not at the start. It's not that learning assembler is a bad thing, but it will violate my next point, and programming in assembler is not your ultimate goal. OK so here's the next point: don't learn more than one language at a time, certainly not when you are starting, as they really are different and you will constantly have to change mental gears when you switch from one to the other. C is very different from C++ and Java is very different from C and C++. Superficially they look similar in that the syntax looks the same, especially for simple statements. But if you become good at C it will take a lot of unlearning to become good at C++ and it will take even more unlearning to become good at Java. If you try learning all 3 at once you won't be good at any of them. As to VB, I can't comment except the points seem to be true in that there are lots of VB oriented jobs available and it's an easier learning curve. But learning VB might turn out to be a dead end in the sense that Microsoft seems to be reinventing the language into a totally new one. That and the C sharp question makes it a less desirable choice if you want to be hmmmmmm a world class programmer. Also VB isn't object oriented, and object oriented is where it's at. OK another round at it.