Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
Correct me if I am wrong, but OO coding is only good for Windows and linux, not Mac OS, right?
That's wrong. Those languages you mentioned (Perl, Python, Ruby, Java) all run on Mac OS X. So does Objective-C, which is definitely OO.

Read the Wikipedia articles:

http://en.wikipedia.org/wiki/Object-oriented_programming
http://en.wikipedia.org/wiki/Perl
http://en.wikipedia.org/wiki/Python_(programming_language)
http://en.wikipedia.org/wiki/Ruby_(programming_language)
http://en.wikipedia.org/wiki/Java_(programming_language)
http://en.wikipedia.org/wiki/Objective-C


Java is used in about everything now. Cell phones, mp3 players, web-based email, some game consoles, you name it. Hell, even some point of sale registers use it.

The Java in cell phones etc. is different from the Java that runs on Macs or PCs (J2ME vs. JSE). It's more restricted and limited, and enough different that many things taken for granted in JSE are a huge PITA in J2ME.

There are also a large number of things that don't run Java, or where it's more of a toy language than a real development tool. The reasons for not running Java may be technical, or economic, or even political (some companies hate Sun).

In general, I don't think learning Java would be a waste of time, but it might not be the first language to learn. It depends a lot on what goal the learner has. If it's to write iPhone apps, then yeah, learning Java is probably a waste of time, because you'll be unlikely to write any iPhone apps with it.
 
But as it stands Procedural languages are the only way to make an OS kernel.

An OS kernel can be made in any language with adequate low-level constructs to perform the functions of a kernel. For example, C++, Objective-C, or Java with JNI support. There are probably other languages that would also work, which are not primarily procedural.
 
That's wrong. Those languages you mentioned (Perl, Python, Ruby, Java) all run on Mac OS X. So does Objective-C, which is definitely OO.

Read the Wikipedia articles:

http://en.wikipedia.org/wiki/Object-oriented_programming
http://en.wikipedia.org/wiki/Perl
http://en.wikipedia.org/wiki/Python_(programming_language)
http://en.wikipedia.org/wiki/Ruby_(programming_language)
http://en.wikipedia.org/wiki/Java_(programming_language)
http://en.wikipedia.org/wiki/Objective-C




The Java in cell phones etc. is different from the Java that runs on Macs or PCs (J2ME vs. JSE). It's more restricted and limited, and enough different that many things taken for granted in JSE are a huge PITA in J2ME.

There are also a large number of things that don't run Java, or where it's more of a toy language than a real development tool. The reasons for not running Java may be technical, or economic, or even political (some companies hate Sun).

In general, I don't think learning Java would be a waste of time, but it might not be the first language to learn. It depends a lot on what goal the learner has. If it's to write iPhone apps, then yeah, learning Java is probably a waste of time, because you'll be unlikely to write any iPhone apps with it.


ahh, ok, only said i thought OO didnt run on OSX cause I heard someone say that, guesss they were full of it :p told you i still have a lot to learn... thanks for the links, ill go read
 
ahh, ok, only said i thought OO didnt run on OSX cause I heard someone say that, guesss they were full of it :p told you i still have a lot to learn... thanks for the links, ill go read

Maybe whomever said this was talking about OpenOffice.org in it's early days? It is often called OO or Oo_Org. I don't know if there was ever a time it didn't run at all on OS X, but it's possible. As has been mentioned Object-Oriented Programming/Design is a programming paradigm... for an operating system to "not support" OO in this context it would need to be a pretty narrow system that only allows compilation of a single language (that isn't object-oriented..), etc.

-Lee
 
An OS kernel can be made in any language with adequate low-level constructs to perform the functions of a kernel. For example, C++, Objective-C, or Java with JNI support. There are probably other languages that would also work, which are not primarily procedural.

Don't confuse an OS Kernel with Userland.

The only operating system that got close to a pure OO kernel was BeOS. But fairly major parts of it still had to be written in C. There is some project run by Illinois University to make a pure OO OS kernel but its hardly in a fully functioning state.
 
Don't confuse an OS Kernel with Userland.

I'm not. I've done enough work on both sides to know the difference.


The only operating system that got close to a pure OO kernel was BeOS. But fairly major parts of it still had to be written in C. There is some project run by Illinois University to make a pure OO OS kernel but its hardly in a fully functioning state.

What I easily found:
http://en.wikipedia.org/wiki/JX_(operating_system)
http://en.wikipedia.org/wiki/JNode
http://en.wikipedia.org/wiki/JavaOS

I'm also not sure whether you'd classify assembly language or Forth as procedural, but there are certainly kernels written in those.

Just because something isn't widely known doesn't mean it can't exist. If you had written that procedural languages were common, or even dominant, when writing kernels, I wouldn't have disagreed. But you wrote that procedural languages are "the only way to make an OS kernel" (emphasis added), and I think there's adequate theory and practice to refute "only".
 
I started out doing some procedural and still do for some of my robot projects, but I think object oriented is much easier to understand/use. Either way I don't think you are going to harm yourself by learning both/either/or anything at all. If you are 14 you still have a lot of time to make decisions and soak up information. The main thing is to not get frustrated and quit.
 
Tell me your not going for a general degree. You wont get much in the line of work that way. Pick something definitive, like programming/engineering, Game System engineering/programming, etc. Try to go with a college that offers jobs after college completion. I go to DeVry and have a choice of pretty much any job I want. Just some food for thought. As for the languages, C/C++ are the most common, and afaik know are used for games the most. Java is used in about everything now. Cell phones, mp3 players, web-based email, some game consoles, you name it. Hell, even some point of sale registers use it.

well i have just applied for a general degree. i know i will specialize in the future, but I am not sure which area I want to go into.
 
I first learned Basic :)O I used QBasic), then some other programming languages like VB, then I learned C++, then Objective-C. Frankly, I never really learned C, and I have no desire to now. But yes, it would help, knowing C before you move onto Obj-C, even though I don't know it.
 
I'm not. I've done enough work on both sides to know the difference.




What I easily found:
http://en.wikipedia.org/wiki/JX_(operating_system)
http://en.wikipedia.org/wiki/JNode
http://en.wikipedia.org/wiki/JavaOS

I'm also not sure whether you'd classify assembly language or Forth as procedural, but there are certainly kernels written in those.

Just because something isn't widely known doesn't mean it can't exist. If you had written that procedural languages were common, or even dominant, when writing kernels, I wouldn't have disagreed. But you wrote that procedural languages are "the only way to make an OS kernel" (emphasis added), and I think there's adequate theory and practice to refute "only".

Maybe you should read the articles you post. All of them say that enough C/Procedural is written to allow OO to be written into the OS.
 
Maybe you should read the articles you post. All of them say that enough C/Procedural is written to allow OO to be written into the OS.

I don't think a small number of procedures automatically make a kernel (or an app or library) procedural. One must examine the overall design and implementation. If a single procedure were enough, then Cocoa would be procedural because it provides a small number of procedural functions.

Maybe I misunderstood your earlier statement. Procedures (or functions) are a part of some languages that are primarily object-oriented (such as Objective-C). This doesn't make the language procedural.
 
Maybe I misunderstood your earlier statement.

I said as it stands procedural is the only way to make an OS kernel. You're saying that some of it can be OO, but it still requires some procedural. That was what my point was supposed to be.

I'll use JavaOS as an example as you have an affinity to java. JavaOS can only run because enough Procedural language(C) is written to allow the JVM to run.
 
My books got here today!!!! im really excited to learn, i read couple of pages and its really interesting and well written.

Thanks guys for all your support and answering my question so thoroughly!
 
oh and btw 1m sup4 l33t h4x0r pwn4g3 LOL!

how long do you guys think it will take me to learn c?

If your strategy is to ignore people who offer to help you communicate better, it's going to take a very long time to learn C on your own, and you'll probably give up before college, when you'll have another crack at it. If you drop the kiddie speak that stopped being cool before you were born, you can ask about stuff you get stuck on and actually hope to get a response, so learning will be as quick as you want.
 
If your strategy is to ignore people who offer to help you communicate better, it's going to take a very long time to learn C on your own, and you'll probably give up before college, when you'll have another crack at it. If you drop the kiddie speak that stopped being cool before you were born, you can ask about stuff you get stuck on and actually hope to get a response, so learning will be as quick as you want.

I learned C++ on my own, and I'm not even in University/College yet, not sure about how hard C would be though.
 
Forget about the language, it's really not important, just learn to program. As you said, time spent learning [...] is not time wasted. When I was around 14 I wanted to learn programming and bought a few books and they were so boring so I didn't learn anything from them. Programmers (And 14 year olds too) are lazy, but they'll get excited over a personal itch. I did learn to program (Still at 14) when it wasn't about reading a book but about building something cool that I would actually use. (It was a Battle.NET chat bot if you're curious. Written in Perl because I found example code in that language.)

What program do you need? What would you change in an existing program (preferably open source)? What repetitive task do you have to do? What can you impress your friends with? (Spam your enemies is another idea...)

Learning programming languages is really easy. Learning to program is the hard part, and you will never finish.

So chose a project that you actually have a personal interest in doing. Then chose (or ask) a language that fits that project best.

Some ideas:
Google Chat/AIM/MSN/Facebook/Twitter bot that you and your friends can use to do something, perhaps integrate a few services, like an AIM bot that you can say !call Fred and it grabs the phone number from Facebook and integrates with google voice to ring your phone then his. Or maybe you can use MSN from your phone but not Twitter, so make some kind of relay.

Convert/organize/rename/whatever your images/mp3s/word documents/etc. Not a lot of room to grow here, but pretty easy to do a repetitive task on a bunch of files.

Firefox/Greasemonkey extension for some site you use often. Or modify an existing one like Better Than Gmail.

Mass-downloader - Parse a website and grab all the images/mp3s/pdfs/whatever from it on multiple pages. There's possible ethical concerns here but you are 14 and in the pursuit of knowledge so don't worry so much. Perhaps you find a site with hundreds of good C++ PDF tutorials and you want to download all of them.
 
Man the poster is only 14 years old yet ppl here on going on and on what program language the kid should do when he goes into the workforce...

U mention you do HTML and flash?
U also do PHP?

Also you mention a iPhone programming book.
I get the impression since your posting on the mac forum,your own a apple computer and iPhone

At that point lets max your experience
Cocoa (Objective C ) will be your language.

Not only can you make apps on your computer,you can make them on your iPhone and show off to your friends :p

Btw programming books, most of time are horrible to learn from.
I find finding University programming courses webpages have the best info
Here are two links

Cocoa programming (which lucky for you the book you purchase is required for their course)
http://www.stanford.edu/class/cs193e/

iPhone programming
http://www.stanford.edu/class/cs193p/cgi-bin/index.php


Now back to the flame war.
I hate Java,it slow with too much overhead.
 
guys it's not to hard to learn c.

the books came in yesterday and i already know about functions, variables and operators etc.

i realize that its easy to learn the BASICS but you can never stop learning
 
i realize that its easy to learn the BASICS but you can never stop learning
Good for you! Sounds like you are really enjoying things so far. That's great! You'd be surprised at the number of people that try to "jump into the deep end" first and don't even attempt to learn the basics first.
 
guys it's not to hard to learn c.

the books came in yesterday and i already know about functions, variables and operators etc.

i realize that its easy to learn the BASICS but you can never stop learning
Write back when you've mastered pointers. ;)
 
I don't know why, but that came off somewhat mean. Don't know why.

Pointers aren't that bad. Function pointers are a little worse but unnecessary if you don't want to do some Object Oriented stuff in C.
It wasn't meant to be mean-spirited. It was just a little playful jab, thus the Winky.

I just thought it amusing for someone to a C-like language isn't hard before they have dealt with pointers. That's the first stumbling block for many learners. Some get it right away, many have trouble at first.

My first exposure was via handles in classic Mac toolbox. I struggled with that. :)
 
Learn Java. It is much easier to grasp and understand as it makes many OO concepts easier and is generally more forgiving and provides better error messages. Once you happy with that you can always move to C, C++ and OBJC.

A lot depends what kind of developer you want to be?

Business Developer: Java is the way to go. Many frameworks and libraries including J5/6EE, JSP, JSF etc.

Mac Only Developer: C, C++ and OBJC is the way to go.

Games Developer: C, Assembler and maybe C++. Most modern games are graphic intensive. For that you want something rather low level which definitely it not Java.

Web Developer : JSP, CSS, JavaScript, PERL, PYTHON, RUBY, but not C, C++ or OBJC.

Consider where you want to be in 5 years and what jobs are in your area ? Maybe also compare salaries.

In any case to learn Java you don't need to by expensive books:
http://java.sun.com/docs/books/tutorial/
http://www.planetpdf.com/developer/article.asp?ContentID=6632
http://www.solms.co.za (Registration required to download course material)

this should keep you entertained for a while.

PS: I am a Java developer by day to pay the bills and a Mac developer by night to keep me entertained.
 
A lot depends what kind of developer you want to be?

Consider where you want to be in 5 years and what jobs are in your area ?

Did you read the part where the kid said he is a 14 year old noob? How likely is it that he has any clue what kind of developer he wants to be, although the clue for his current interests is in the very first line.

How many 14 year olds know where they want to be in 5 years?

All of the above are rhetorical questions.
 
Did you read the part where the kid said he is a 14 year old noob? How likely is it that he has any clue what kind of developer he wants to be, although the clue for his current interests is in the very first line.

How many 14 year olds know where they want to be in 5 years?

All of the above are rhetorical questions.

Thanks, xStep.

i really just wanna do it in my free time or as a separate job. I just learnt about functions and i'm starting to really love it. However, i would develop for the mac and the iPhone....
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.