Quantcast

Maximum PC

It is currently Sat Dec 20, 2014 6:48 am

All times are UTC - 8 hours




Post new topic Reply to topic  [ 13 posts ] 
Author Message
 Post subject: noob: "What's next?"
PostPosted: Sun Jun 19, 2005 10:13 am 
8086
8086

Joined: Wed Jul 14, 2004 2:26 pm
Posts: 25
Location: Great White North
I'm a quick study ( 52years old ) looking to learn new programming languages. I taught myself HTML in about 2 weeks in my spare time - don't quiz me - I'm also a quick forget. :lol:

I'm ok with phpBBCode but I'm wondering what I should look at learning next. There's just so much out there, Java, Perl, C++, Flash... So I need some ideas/advice etc.

What should I set out to learn next?

Here is a short list of what I'd like to do with the new information.

  1. Create web pages.
  2. Hack XP.
  3. Creat new levels in PC games.
  4. Create simple programs to operate external non-PC components.

What I don't want to do is;

  1. Take courses - except online.
  2. Spend loads of $.


All comments appreciated.THX. :D


Top
  Profile  
 
 Post subject:
PostPosted: Sun Jun 19, 2005 10:15 am 
Team Member
Team Member

Joined: Sun Jan 02, 2005 10:07 pm
Posts: 396
Location: Oklahoma, United States
C++ :P


Top
  Profile  
 
 Post subject:
PostPosted: Sun Jun 19, 2005 10:29 am 
8086
8086

Joined: Wed Jul 14, 2004 2:26 pm
Posts: 25
Location: Great White North
What about VB?

* Just to be clear, I don't expect to become a programme when I'm done. All I really want to do with most of them is to understand what the code is saying so that I can make minor changes to it to suit my needs.


Top
  Profile  
 
 Post subject:
PostPosted: Sun Jun 19, 2005 11:08 am 
Team Member Top 100
Team Member Top 100

Joined: Fri Sep 17, 2004 5:35 pm
Posts: 1176
Quote:
# Create web pages.
# Hack XP.
# Creat new levels in PC games.
# Create simple programs to operate external non-PC components.

1) Since you already know HTML, learn PHP next (after C it will be easier... read below)
2) You want to reverse engineer Windows XP? Learn x86 assembly. You can also do a great deal of trickery with the Windows API functions (learn C or C++)
3) Learn to use 3DStudioMax
4) Simple apps? I am not sure really what the most simple would be. You could definitely try C and C++, but it's not exactly a piece of cake to just start C and a few weeks later start talking to sensors and scannors and stuff.

I'd recommend learning PHP after learning C or C++, though, because PHP has a very similar syntax and its functions are based off of the cstdlib.


Top
  Profile  
 
 Post subject: Re: noob: "What's next?"
PostPosted: Sun Jun 19, 2005 1:35 pm 
Coppermine
Coppermine
User avatar

Joined: Mon Feb 21, 2005 9:33 am
Posts: 692
Location: Grass Valley, CA
To Hack XP or Create new levels in PC games, you will need to learn C / C++. Since C++ is a superset of C, you can start with C. Most of the game engine SDKs (Software Develpment Kits) I have seen have been in C only. To "hack" XP (or any application for that matter) you will also need to learn Intel Assembly Language. Assembly languge is essentially the native language of the processor chip. However, that may be beyond the scope of your learning curve for the immediate future.

Creating web pages, well, that depends on what you want to do. PHP and JavaScript would be a good addition to your HTML knowledge.

Create simple programs to operate external non-PC components. That depends on the component you have in mind. If you are talking about embedded systems, then you will have to learn C and the assembly language for the perticular chip that drives the external device. If you are thinking about PocketPCs or Palm devices, then you could start with C or C++. There are also implementations of Java available for embedded systems, but I am not familiar with the staus of that technology.

I believe that the best investment of your time would probably be in learning C. That would give you the most options and it would also give you a good foundation in programming. It will get your feet wet. A lot of universities are using Java to teach basic programming nowadays, but it would have a lot of drawbacks for the kinds of applications you are interested in developing. At least after you learn C, you will know if you like programming. Then you could learn C++ to delve into the object oriented world. Heck after learning C++, you could pick up Java in few days.


Top
  Profile  
 
 Post subject:
PostPosted: Mon Jun 20, 2005 12:09 pm 
8086
8086

Joined: Wed Jul 14, 2004 2:26 pm
Posts: 25
Location: Great White North
Thanks much for the advice. I've started C++. The intro to the book I'm using suggests that I might be better off not beginning with C because it had some drawbacks that could develope bad habits for beginners, so I've followed that advice as well and gone for C++.

The non- PC related items are really just house hold items, like lights etc. that I'd like to be able to turn on via an internet connection.

It would be nice to have the sauna hot when I get home. :wink:

After C++ I think I'll go for Java or VB, I'm still undecided on that one.

Thanks again.


Top
  Profile  
 
 Post subject: Re: noob: "What's next?"
PostPosted: Mon Jun 20, 2005 7:12 pm 
Bitchin' Fast 3D Z8000*
Bitchin' Fast 3D Z8000*
User avatar

Joined: Tue Jun 29, 2004 11:32 pm
Posts: 2555
Location: Somewhere between compilation and linking
Malvern wrote:
Here is a short list of what I'd like to do with the new information.
  1. Create web pages.
  2. Hack XP.
  3. Creat new levels in PC games.
  4. Create simple programs to operate external non-PC components.

1. I would go with Java/J2EE instead of PHP. Like PHP, Java is also a C syntax language with a ton of features.

2. Wanna hack - learn C.

3. Depends on the game. This is going to vary a lot from having level editors available, to scripts written in Python or Java, hand coding everything in C.

4. Really it depends on the device(s). Tivo for example has a Java API., and for things like cell phones, pda's, and smart cards, J2ME (Java Micro Edition) is goign to give you a lot of bang for your buck. Other devices are going to have C or C++ API's. If you talking about interfacing with a sensor or something, you'll probably end up working in straight C.

For what it is worth, I would say learn both Java and C. They are very similiar in syntax and you'll have covered pretty much everything w/ them. Use Java when it is available and C when you have to get down and dirty rolling some of your own system stuff.


Top
  Profile  
 
 Post subject: Re: noob: "What's next?"
PostPosted: Mon Jun 20, 2005 7:26 pm 
Bitchin' Fast 3D Z8000*
Bitchin' Fast 3D Z8000*
User avatar

Joined: Tue Jun 29, 2004 11:32 pm
Posts: 2555
Location: Somewhere between compilation and linking
SpazzAttack wrote:
Heck after learning C++, you could pick up Java in few days.

Not even - it takes at least 3 months to unlearn the bad habits. =)

My old university used C++ for a teaching language and I really don't think it is the best choice because it seems like far too many of the students come out knowing spanglish instead of english and/or spanish (where spanglish is that goofed up mixture of OOP and procedural/functional programming because they're not competent in either of the two programming paradigms).

And the Java API is HUGE. Learning about the Collections alone would take someone new at least a week.


Top
  Profile  
 
 Post subject:
PostPosted: Mon Jun 20, 2005 7:30 pm 
Bitchin' Fast 3D Z8000*
Bitchin' Fast 3D Z8000*
User avatar

Joined: Tue Jun 29, 2004 11:32 pm
Posts: 2555
Location: Somewhere between compilation and linking
Malvern wrote:
After C++ I think I'll go for Java or VB, I'm still undecided on that one.

If you're going to learn C++, take a look at Bjarne Stroustrups website. I would also highly suggest picking up a copy of his book too - it is really the Bible of C++. By far the best C++ book I've ever read.

And don't learn VB. Life is just too short to be writing crappy code (vb) that only works on one crappy os (windows) when much better options are available (practically anything).


Top
  Profile  
 
 Post subject: Re: noob: "What's next?"
PostPosted: Mon Jun 20, 2005 8:54 pm 
Coppermine
Coppermine
User avatar

Joined: Mon Feb 21, 2005 9:33 am
Posts: 692
Location: Grass Valley, CA
Gadget wrote:
Not even - it takes at least 3 months to unlearn the bad habits. =)

And the Java API is HUGE. Learning about the Collections alone would take someone new at least a week.


When I said "a few days" I was exagegrating to make a point. Once you know C++, you have 90% of Java's syntax under your belt. The Java programming language itself is not huge (syntax, structures, etc). The whole API is more like an abstraction of an entire operating system API. The whole idea behind Java is to write once and then debug everywhere.

I developed in C++ for ten years before getting into a rather large cross-platform Java project. It was a video conferencing sytem based on the Java Media Framework. Needless to say, I ended up re-writing most of the JMF. Don't ask me to explain why, that is, unless you want me to launch into a tirade about how crappy the JMF is and how slow Java in general is when you really need as much speed and data throughput as possible. :P Please, that was not meant as a flame towards Gadget! :)

If you want to get into performance-oriented software development with a high-level language that lets you get down into the bare metal, then C or C++ is really the best game in town.

Gadget wrote:
If you're going to learn C++, take a look at Bjarne Stroustrups website. I would also highly suggest picking up a copy of his book too - it is really the Bible of C++. By far the best C++ book I've ever read.


I would advise staying away from Stroustrup's book to learn C++. It's a great reference once you already know C++, but as a learning tool it is too confusing IMHO.

Here is my list of C++ beginning books. Go to a bookstore and check them out:

Absolute C++ (2nd Edition) by Walter Savitch
C++ How to Program (5th Edition) by Harvey & Paul) Deitel & Associates
C++ Primer Plus (4th Edition) by Stephen Prata

This list is by no means exaustive. They may or may not be helpful to you. Browse a good technical book store or Amazon.com.

Good Luck!


Top
  Profile  
 
 Post subject:
PostPosted: Tue Jun 21, 2005 2:02 pm 
8086
8086

Joined: Wed Jul 14, 2004 2:26 pm
Posts: 25
Location: Great White North
Gadget wrote:
Malvern wrote:
After C++ I think I'll go for Java or VB, I'm still undecided on that one.

If you're going to learn C++, take a look at Bjarne Stroustrups website. I would also highly suggest picking up a copy of his book too - it is really the Bible of C++. By far the best C++ book I've ever read.

And don't learn VB. Life is just too short to be writing crappy code (vb) that only works on one crappy os (windows) when much better options are available (practically anything).


Well It'll be Java then.

The book I've got ( actually I have 2 the other one is at the office so I can't remember the exact title but "Learn C++ in 15 days" sounds like it ), is
"Sams Teach yourself C++ in 24 hours" by Jesse Liberty and David Horvath.

So far I like the style of the book and the way it's written. I'll be compliling my first program tonight. "Hello World" :lol: :lol: :lol:

Thanks again for all of the info, I'll reread this thread tonight just so that I'll rememeber the tips in the future when I'm done C++ and moving onto Java.

Any final thoughts about perhaps learning C after C++?


Top
  Profile  
 
 Post subject:
PostPosted: Tue Jun 21, 2005 5:22 pm 
Team Member Top 100
Team Member Top 100

Joined: Fri Sep 17, 2004 5:35 pm
Posts: 1176
C should come naturally if you are really good with pointers (the nasty, unsafe type, not auto_ptrs) and arrays, and know the C IO functions well (also included in C++, but the stream classes are more generally used). Just remember that there are a few things you can do in C++ and not in C:
-Templates
-Classes (and OOP in general)
-Exceptions
-Namespaces
-Safe casts (static_cast<>(), dynamic_cast<>(), reinterpret_cast<>(), const_cast<>()) and strong typing
-Probably some more I can't think of off the top of my head

Also remember that in C (going by the C99 standard) you can do a few things you can't do in C++:
-Variable array sizes without having to malloc() (or new, the C++-only operator)
-Some more

Basically, C and C++ code look identical unless you use namespaces (99% use at least the std namespace), classes (why use C++ if you don't use classes?), templates (VERY useful, part of the STL so get used to them), or exceptions (you won't see these in basic code generally unless you are using new)


Top
  Profile  
 
 Post subject: Re: noob: "What's next?"
PostPosted: Thu Jun 23, 2005 6:35 pm 
Bitchin' Fast 3D Z8000*
Bitchin' Fast 3D Z8000*
User avatar

Joined: Tue Jun 29, 2004 11:32 pm
Posts: 2555
Location: Somewhere between compilation and linking
SpazzAttack wrote:
When I said "a few days" I was exagegrating to make a point.

Of course. As was I... sortof. =)

SpazzAttack wrote:
Once you know C++, you have 90% of Java's syntax under your belt. The Java programming language itself is not huge (syntax, structures, etc). The whole API is more like an abstraction of an entire operating system API. The whole idea behind Java is to write once and then debug everywhere.

True. I just get really frustrated when people either 'recreate' or don't use the API correctly. Often I think this is because the Java API is very object oriented and people don't always grasp what is going on.... "why encapsulate a File inside of a FileReader?" or "why is there both a FileReader and BufferedReader? Are they different?" type of thing.

And of course, "What is an immutable object?". :)

I guess my point is that learning Java should not only mean learning the Java language, but also the Java API as well as understanding how Java works - virtual machine, runtime, etc.

SpazzAttack wrote:
I developed in C++ for ten years before getting into a rather large cross-platform Java project. It was a video conferencing sytem based on the Java Media Framework. Needless to say, I ended up re-writing most of the JMF. Don't ask me to explain why, that is, unless you want me to launch into a tirade about how crappy the JMF is and how slow Java in general is when you really need as much speed and data throughput as possible. :P Please, that was not meant as a flame towards Gadget! :)

We'll have to compare notes in another thread later. I was planning on writing a media player and encoder using the JMF later this summer because I had a positive review about it in JDJ. :?

Also, I think that C programmers sometimes get frustrated w/ Java because the performance of average C code is often quite good, but when you do the same thing in Java you sometimes hit a brick wall (I realize that your team probably didn't do this - this is more for other readers here). A common example being console output performance....

Code:
public class ConsolePerformanceTest {
   
    public static void main(String[] args) throws IOException {
       
        int size = 75;
        long start = System.currentTimeMillis();
        for (int i = 0; i < size; i++)
            System.out.println(i);
        long normal = System.currentTimeMillis() - start;
        System.out.println();
       
        start = System.currentTimeMillis();
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < size; i++)
            sb.append(i + "\n");
        System.out.println(sb.toString());
        long stringBuffer = System.currentTimeMillis() - start;
        System.out.println();
       
        System.out.println("times...");
        System.out.println("normal: " + normal);
        System.out.println("StringBuffer: " + stringBuffer);
        System.out.println("note: times are in ms");
        System.exit(0);
    }
   
}


Where the times for size = 75 are 32ms using the normal sout method and 0ms (ie a fraction of a ms) for the StringBuffer method. A huge difference in performance! If size is increased to 1000, there is still 4 to 5 times performance increase when using the StringBuffer (the relative performance dropped because the StringBuffer eventually filled and had to be allocated more memory. Of course, I could have tuned this some, but a 400% increase is fine for this example).

And the difference between slow methods and faster methods in file and network tests is often as large.

SpazzAttack wrote:
If you want to get into performance-oriented software development with a high-level language that lets you get down into the bare metal, then C or C++ is really the best game in town

True - it is hard to improve upon C for bare metal apps.

Of course, you can always build on that C strength w/ JNI. :)

SpazzAttack wrote:
I would advise staying away from Stroustrup's book to learn C++. It's a great reference once you already know C++, but as a learning tool it is too confusing IMHO.

I should have probably put a disclaimer on that comment. I've gotten a little tired of 'rebuying' books because the beginner book was too shallow or occasionally just wrong. Personally, I like the way Bjarne breaks things down in his book and only used small code examples - I really hate 200 loc examples!

Probably a better idea to use a library book and then buy Bjarnes book after you have enough experience. Either way, everyone should read up at his website! There is some really good stuff there.


Top
  Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 13 posts ] 

All times are UTC - 8 hours


Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group

© 2014 Future US, Inc. All rights reserved.