If you're going for Objective-C, then I agree - go there first and skip C.dubbz said:Some have mentioned learning C first, but what if your ultimate goal is to program in Objective-C? Couldn't you just skip the first step and just go straight at learning Objective-C?
Any advantages/disadvantages to this?
Maybe I'm just impatient... 😉
Eh...you also might throw up your hands and give up programming in a very short time. The K&R book is a great one, probably the best for ANSI C, but I'd say it is not a good book to introduce someone to programming with. It's very dense and there's little hand-holding. I'd recommend K&R for someone who already knows some programming and wants to learn everything about C.northen said:Even though C has some pitfalls in term of memory usage, they aren't that bad, and if you get -the- C book, by Brian Kernighan and Dennis Ritchie (the latter being the original designer of C), called `the C Programming Language` you will learn a lot in a very short time 🙂
northen said:The main problems with Java (at least how I see it) are:
Granted, but improving. Java 1.4/5 showed many improvements.northen said:- Lack of fast, low-level file handling.
Startup footprint is configurable, although I agree never will be as fast as a C app. Not important for a beginning coder, though.northen said:- The JVM uses a lot of memory and doesn't start instantaneously; I wrote a simple HTTP server in Java and in C, and tested it on a standard 100 mbit/s network. The Java one delivered about 1 MB/sec and used 20 megabytes of memory. The C delivered 9 MB/sec and used 500 kilobytes.
Yeah, but the non-OOP types are even more transparent in Java 5, and I've never seen them as confusing the programming paradigm.northen said:- It enforces everything upon an Object-oriented programming paradigm, but still includes non-OOP basic types, which is very ambiguous to new users.
(1) The old classes stay around for a very long time, meaning that the old code still works. (2) This is an argument against the class library, and I'd argue that Java has a much better, more intuitive class library than C++ regardless of improvements. (3) This has nothing to do with the language itself.northen said:- Too much class supplanting. The StringTokenizer class has been supplanted at least 2 times, which is very confusing, because the language often changes too drastically at each major increment
OK. Not a fan of GPL, so this has never been an issue for me. I see the point, though.northen said:- While usage of the language is free, the built-in classes are incompatible with the GPL, meaning you cannot link non-Java GPL'ed code modules to your Java program (which may still be licensed under the GPL)
Again, never been an issue for me, but I see the point. I've run Java apps on Windows, Solaris, Linux, OS X - with no problems. Again, without a GUI, C might be as portable (but requires a recompile). No language has better cross-platform GUI support than Java, and GUI support is, IMHO, important.northen said:- Is only available on major platforms. Platforms like the *BSD's have very poor Java support.
I would, then again argue, that object-oriented programming is one of the most hyped and eventually useless. If you know the types at compile-time, why encapsulate them in an object? I have coded in C++ and Objective-C (two languages with VERY different ways of handlin OOP) - and Java, of course, and it OOP has always struck me with its huge, blown-up way of coding... I can't see it's needed unless you are doing HUGE programming projects. Which is why, I eventually made the switch to C, which (still) is the systems coding language of choice. Also for beginners. Contrary to what most people think, it is actually way more simple and elegant once you really get at it. I would know, I've never had a teacher teach me programming - I had to teach everything to myself with books, and at age 15 I have a programming job for a laptiming company, programming their microcontrollers. 🙂jsw said:I don't disagree that Java has weaknesses; I simply think it's a superior beginner's language because I think it promotes good object-oriented programming technique more than the other popular languages and because it has a GUI. Just my opinion. I used to be a huge C++ fan, never thought I'd like Java. I switched over, and to me it felt like the switch from Windows to OS X.
Neither am I. I find it way too restricted and `socialist` for my purposes (which is why I use the 3-clause BSD license)jsw said:OK. Not a fan of GPL, so this has never been an issue for me. I see the point, though.
Holy crap, I didn't know that. That's...just amazing.As far as OS X support: Tiger has Java 5 built in.
Used to be quite true, but I find the java.nio package in 1.4 to solve this problem quite well.- Lack of fast, low-level file handling.
If Java didn't have primitives, it would be unbelievably slow. I'm not going to respond to your other arguments because I didn't really understand them. Were you trying to imply that Java is a bad language for network programming because it is too slow? This doesn't make sense to me because usually HTTP servers are going to be limited by bandwidth before they are by processing speed. For this reason, web servers are generally thought to be one thing that the Java language is best suited for, even more so than C because it's much easier to write and maintain. This is why Java is being used more and more in this area.It enforces everything upon an Object-oriented programming paradigm, but still includes non-OOP basic types, which is very ambiguous to new users.
jamdr said:If Java didn't have primitives, it would be unbelievably slow. I'm not going to respond to your other arguments because I didn't really understand them. Were you trying to imply that Java is a bad language for network programming because it is too slow? This doesn't make sense to me because usually HTTP servers are going to be limited by bandwidth before they are by processing speed. For this reason, web servers are generally thought to be one thing that the Java language is best suited for, even more so than C because it's much easier to write and maintain. This is why Java is being used more and more in this area.
Osirius said:recommend me a language
jamdr said:Java is the best choice for a beginning programming language for a lot reasons that I'm not............ersion to Java, while Windows users have no such bias. Anyway, enough ranting. Now go learn Java.
recommend me a language
Java is today's COBOL: oververbose, overhyped.
Nearly three years after the last posting, is there anything new to say about any of the languages that were discussed? I am newly interested in the subject. My goal is developing Mac applications.
How about English?
🙂
Okay, fun over.
Beginner? Try RealBasic
C? Obj-C?
There's not enough info. What do you want to DO with this language?
What about REALBasic or Revolution????
I don't think anyone wants to shell out $300 to learn a programming language when everything else is free 🙄. And if you do I feel sorry for you.
I'd say learn C. Learning C is challenging, but simple. Pointer arithmetic is a good thing to understand. OOP concepts can be confusing for a beginner programmer, that's why I don't think Java should be first. If you're learning Obj-C first without knowing C, at some point you will have to go back and learn some C concepts (Cocoa uses several C concepts). Everything after C is cake IMO.
kainjow, first of all, please get your facts correct....
REALBasic Personal is $100 and Runtime Revolution Media is $49....both quite a bit lower than the $300 that you plucked out of the air.... 🙄
My question about RB or RRM was whether or not as a 'hobbyist coder' it might make sense to get one of these as opposed to what seems like a longer learning curve to learn C or some other language.
IF, and I emphasize the word IF, RB or RRM or something else would be easier for a code noob to learn, then MAYBE it MIGHT be worth it for someone like me to spend a few $$'s on it....
My question about RB or RRM was whether or not as a 'hobbyist coder' it might make sense to get one of these as opposed to what seems like a longer learning curve to learn C or some other language.
IF, and I emphasize the word IF, RB or RRM or something else would be easier for a code noob to learn, then MAYBE it MIGHT be worth it for someone like me to spend a few $$'s on it....
Would appreciate any other thoughts on this....
Thanks,
Mark
The professional edition (required for cross platform compiling) is $500 so actually $300 is the average price 🙂
If someone was interested in software development as only a hobby, I would suggest to them to use the Python or Ruby Cocoa bindings. Those languages are easy, quick to learn, less confusing syntax, no messing with pointers, completely free and open source, and since they are bound to Cocoa you get all (well most) of the Cocoa goodness.
I use RealBasic for some jobs. It's fun to use and very quick to produce results with. It makes building cross platform apps with user interfaces very easy, in fact too easy at times. But I wouldn't want to use it for everything I do. Some things are better done in Java or Objective-C/C++. I think that's the key really - learn more than one language and use what's best for the job.
There's a saying that goes something like this, 'If all you have is a hammer then pretty soon everything begins to look like a nail'. I think that applies to computer languages too.
So my advice to somebody starting off is this: whatever language you learn first don't stick with it *branch out. Each language is strong in some areas and weak in others. Finding out these strengths and weaknesses will make you a better programmer.
b e n