Welcome to the MacNN Forums.

If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.

You are here: MacNN Forums > Software - Troubleshooting and Discussion > Developer Center > Need Compiler / Integrated Design Environment for young teenager

Need Compiler / Integrated Design Environment for young teenager
Thread Tools
jiHymas
Fresh-Faced Recruit
Join Date: Apr 2005
Location: Toronto, Ontario, Canada
Status: Offline
Reply With Quote
Apr 12, 2005, 01:20 PM
 
I see that the thread New to programming. Want to develope programs to use at work. What language? contains a recommendation for RealBASIC as a programming language for a newbie programmer, but my needs are a little different.

A nephew is turning 13 soon and, since he has expressed an interest in programming, I want to get him a compiler. I've been programming professionally for most of my career, but exclusively in a PC environment, so I'm not very aware of the Mac-compatible products out there. I have to get him a Mac product because his father is a Mac salesman and that's the only platform he has in the house.

In addition to the RealBASIC product, I see thate is lots of freeware available on the Web (I am particularly interested in the Pascal freeware), but I am hesitant to supply him with freeware on the grounds that the design environment probably (probably!) won't be too user friendly. IDE's I have used myself include Microstoft's Visual Studio and Borland's Delphi, both of which have integrated help and good debugging tools ... I want to get something like that if possible.

My requirements for a language are aimred at both allowing him to create real programmes fairly quickly (i.e., I'd like there to be a lot of standard interface tools available, comparable to Microsoft's MFC) and in teaching him good habits and portable skills. Therefore, I would prefer an object-oriented structured language with strong type enforcement, all offered within a good IDE.

Any suggestions?
What's a Windows User like me doing in a place like this?
     
larkost
Mac Elite
Join Date: Oct 1999
Location: San Jose, Ca
Status: Offline
Reply With Quote
Apr 12, 2005, 02:22 PM
 
I would actually start him off with web development in PHP. With only a little bit of basic training he can create we pages with a little "wow" effect (important at first), and you can have the instant gratification of being a dynamic language (no compiler step). With the proper environment (such as HyperEdit) you can even watch your output while you type.

While PHP 4.x is definitely the wrong way to go for object oriented programming, the new 5.x series is much better. But the first part of learning to program does not focus on true objects... you have to get used to all the control structures and the basic concepts.

And PHP is solidly cross-platform you don't even have to worry about that.

Alternately you can just focus on JavaScript and html, all you need there is a text editor and a web browser. JavaScript is pretty good on the Object Oriented side, but there is no real typing. But once again, quick, fun, some "wow", and it gets the beginning concepts across pretty fast.

Once he has is feet under him, then the XCode tools that Apple ships with 10.x are really fun to use, although a lot of your experience with on the PC side is going to be useless with InterfaceBuilder (how you make GUI's). But once you get the idea (1/2 hours with a good tutorial) it won't make a bit of difference. And Apple's tools strongly encourage the MVC design ideas, and those are the new congrut to "object oriented" in the 90's. You also have a good range of languages to choose from: C, C++, Obj-C[1], Java[1], AppleScript[1], Ruby[2], Perl[2], Python[2], and eventually C#[3].

[1] These are considered the mail languages... fully supported and documented by Apple.

[2] These are mostly add-on packages developed outside of Apple and bridged in. The quality is still quite high.

[3] This is in progress in the Mono project and is called CocoaC#. There seems to be some momentum there, but still a ways to go.
     
Brass
Professional Poster
Join Date: Nov 2000
Location: Tasmania, Australia
Status: Offline
Reply With Quote
Apr 12, 2005, 06:19 PM
 
XCode is the "standard" IDE for the Mac. It is free and available from Apple. Please keep in mind that "free" does not mean poor quality on most platforms (apart from Windows, perhaps). Remember that some of the most robust operating systems available are free, as are many of the services that run on them.

XCode will fully support several languages, including C, C++, Objective-C, Java. C++ and Java are probably the best for learning cross-platform Object-oriented programing. Objective-C is (arguably) a better language, in some ways, but it is not supported well anywhere except the Mac (yes there is GnuStep, but not for a novice).
     
Theodour
Forum Regular
Join Date: Apr 2000
Location: A drip off Lake Michigan
Status: Offline
Reply With Quote
Apr 13, 2005, 09:44 PM
 
How about using NetBeans to program Java?
     
frankiec
Junior Member
Join Date: Apr 2005
Location: Don't cry, cyberpu$$y.
Status: Offline
Reply With Quote
Apr 14, 2005, 05:59 AM
 
Please, please, please don't start a new programmer with any flavor of BASIC. It'll cripple his brain and make it so much harder to pick up a more powerful languages in the future. REALbasic is great for what it does -- but a horrible thing to start on if you plan on moving on. Start with Java. Get a book. Use text files. Be smart. Take it one step at a time. This is how he'll get "good habits and portable skills."
     
lord vader
Fresh-Faced Recruit
Join Date: Oct 2004
Status: Offline
Reply With Quote
Apr 14, 2005, 01:58 PM
 
I have just started programming for Mac OS X and i really like xcode.
     
Chuckit
Clinically Insane
Join Date: Oct 2001
Location: San Diego, CA, USA
Status: Offline
Reply With Quote
Apr 14, 2005, 02:04 PM
 
Originally Posted by frankiec
Please, please, please don't start a new programmer with any flavor of BASIC. It'll cripple his brain and make it so much harder to pick up a more powerful languages in the future. REALbasic is great for what it does -- but a horrible thing to start on if you plan on moving on. Start with Java. Get a book. Use text files. Be smart. Take it one step at a time. This is how he'll get "good habits and portable skills."
"It is practically impossible to teach good programming style to students that have had prior exposure to BASIC; as potential programmers they are mentally mutilated beyond hope of regeneration." � Edsger Dijkstra
Chuck
___
"Instead of either 'multi-talented' or 'multitalented' use 'bisexual'."
     
Thinine
Mac Elite
Join Date: Jul 2002
Status: Offline
Reply With Quote
Apr 14, 2005, 06:52 PM
 
Start with C. Then move to Objective-C. If he wants, use this knowledge to start programming Cocoa applications. If not, then move on to Java. He can learn C++ later on, after he has a good bit of programming under his belt.
     
poulh
Mac Enthusiast
Join Date: Jun 2000
Location: New York, NY
Status: Offline
Reply With Quote
Apr 14, 2005, 08:22 PM
 
Originally Posted by Thinine
Start with C. Then move to Objective-C. If he wants, use this knowledge to start programming Cocoa applications. If not, then move on to Java. He can learn C++ later on, after he has a good bit of programming under his belt.
I agree...start by writing little command line programs that calc the avg weight of the class... keep score for you on jeopardy, etc.

once you got if's for's and while's down he can start making objects etc.

Then he can learn gui programming.


Download Xtools and he can make command line apps real easy with a new project.
     
jiHymas  (op)
Fresh-Faced Recruit
Join Date: Apr 2005
Location: Toronto, Ontario, Canada
Status: Offline
Reply With Quote
Apr 15, 2005, 03:10 PM
 
I would like to thank everybody for their helpful comments.

I've just confirmed with his father that my nephew has access to MAC OS 10.3 and will play with it a bit on the weekend to decide whether I'll recommend C or C++ ... probably C++, since that's what I use myself and since by getting him started on this thing I'm committing myself to a lifetime of free tech support, I want to make it as easy as possible for me!

I will admit to some disappointment that there's not a good Pascal product out there (at least, as has so far been defended or recommended, as that would have been my first choice. My hesitation regarding C/C++ is based on its being such a fine-grained language .... it's very easy to turn a project into spaghetti-code. I guess he'll just have to learn the hard way that you have to pay as much attention to the plumbing as you do to the features, and once he finds that he can't even begin to debug a section of code because all the variables are effectively global and have curse-word names to boot, he won't make that mistake again in a hurry!

I'm not going to recommend JavaScript to him ... the lack of type-enforcement really bothers me; it's even easier to write spaghetti-code in a Web-page-project that uses it; and it's an interpreted language ... while it's certainly a great add-on in an IDE to be able to run code in an interpreted fashion, I feel that there are large didactic advantages to having type-enforcement at compile-time.

So - thanks again! I'll post here from time to time about progress, under the assumption that at least some will want to know how this idea turns out ... and if anybody ever learns of a Pascal, or Pascal-Based compiler/IDE for the MAC that would be suitable, please let me know. I really liked Borland's Delphi (Object-Oriented Pascal) when I was using it, and found it relatively easy to get functional code out of my guys at work (who did not have "programming" as the first item on their job description - it was admin stuff and report generation).
What's a Windows User like me doing in a place like this?
     
poulh
Mac Enthusiast
Join Date: Jun 2000
Location: New York, NY
Status: Offline
Reply With Quote
Apr 15, 2005, 04:46 PM
 
So you are using xCode and its C/C++ compiler?

Good choice on C++. Learning the plumbing is very valuable knowledge to have.
     
Thinine
Mac Elite
Join Date: Jul 2002
Status: Offline
Reply With Quote
Apr 15, 2005, 05:38 PM
 
For a beginner, C++ is a bit convoluted when it comes to object oriented programming. That's why I recommended the C -> ObjC progression, as ObjC object syntax makes learning OO concepts a bit easier. So I think it would be easier to learn C++ after ObjC, since you'll already have the OO concepts down and can focus on C++'s peculiarities. Also, in general, I think it's easier to go from a harder language to an easier one (C to JavaScript or PHP for example) than it is vice versa, since you don't really have to learn new concepts.
     
Angus_D
Addicted to MacNN
Join Date: Mar 2000
Location: London, UK
Status: Offline
Reply With Quote
Apr 15, 2005, 06:40 PM
 
I'd say Java is a far better choice than C++.
     
smitty825
Forum Regular
Join Date: Sep 2003
Location: San Diego
Status: Offline
Reply With Quote
Apr 16, 2005, 08:32 PM
 
I personally agre with Angus_D that Java would probably be the best choice.

1. You will be able to use one of two free development environments (Eclipse or XCode) that are both considered very good

2. All code created on the Mac should run without modification on your PC

3. The syntax is fairly similar to C/C++, which will allow you to use your C++ knowledge to help him

4. It seems many (most?) schools are teaching Java as their introductory language, and this would give him a head start.
     
Brass
Professional Poster
Join Date: Nov 2000
Location: Tasmania, Australia
Status: Offline
Reply With Quote
Apr 17, 2005, 01:27 AM
 
Originally Posted by jiHymas
I will admit to some disappointment that there's not a good Pascal product out there (at least, as has so far been defended or recommended, as that would have been my first choice.
DON'T go for Pascal, even if you do find a decent IDE. Pascal was a great learning language when procedural languages were all the rage. But even then, it was rarely used for anything other than for teaching programing (with some exceptions).

I'm not going to recommend JavaScript to him ... the lack of type-enforcement really bothers me; it's even easier to write spaghetti-code in a Web-page-project that uses it; and it's an interpreted language ... while it's certainly a great add-on in an IDE to be able to run code in an interpreted fashion, I feel that there are large didactic advantages to having type-enforcement at compile-time.
Don't get Java confused with JavaScript. They are similar, but not the same. I don't know either well, so can't comment on how much better Java is than JavaScript, but people tell me "a lot".

I'd recommend starting with C. It is an excellent foundational language. Then move on to an object oriented extension (either C++ or Objective C) or another object oriented language altogether (Java).
     
Chuckit
Clinically Insane
Join Date: Oct 2001
Location: San Diego, CA, USA
Status: Offline
Reply With Quote
Apr 17, 2005, 02:54 AM
 
Originally Posted by Brass
Don't get Java confused with JavaScript. They are similar, but not the same. I don't know either well, so can't comment on how much better Java is than JavaScript, but people tell me "a lot".
I'm not sure that's really a fair comparison. It's not like one is a souped-up version of the other. Javascript is designed to look superficially like Java, but I personally wouldn't even categorize them as being the in the same family of programming languages. If you don't like dynamic languages (as seems to be the case with jiHymas), you definitely won't like Javascript, but you may still find Java to be pretty neat. It's got compile-time type checking and everything.
Chuck
___
"Instead of either 'multi-talented' or 'multitalented' use 'bisexual'."
     
Brass
Professional Poster
Join Date: Nov 2000
Location: Tasmania, Australia
Status: Offline
Reply With Quote
Apr 17, 2005, 03:40 AM
 
Originally Posted by Chuckit
I'm not sure that's really a fair comparison. It's not like one is a souped-up version of the other. Javascript is designed to look superficially like Java, but I personally wouldn't even categorize them as being the in the same family of programming languages. If you don't like dynamic languages (as seems to be the case with jiHymas), you definitely won't like Javascript, but you may still find Java to be pretty neat. It's got compile-time type checking and everything.
Too true. As I said, I don't know either of them well. But apart from structureal differences, it is even obvious to me that they have completely different uses in the real world. From what I've seen, JavaScript is rarely used for anything other than web page scripting, whereas Java is used for application (and applet) programming, both for web services and for stand-alone applications.
     
poulh
Mac Enthusiast
Join Date: Jun 2000
Location: New York, NY
Status: Offline
Reply With Quote
Apr 17, 2005, 01:55 PM
 
Originally Posted by smitty825
I personally agre with Angus_D that Java would probably be the best choice.

1. You will be able to use one of two free development environments (Eclipse or XCode) that are both considered very good

2. All code created on the Mac should run without modification on your PC

3. The syntax is fairly similar to C/C++, which will allow you to use your C++ knowledge to help him

4. It seems many (most?) schools are teaching Java as their introductory language, and this would give him a head start.

I agree with most of this. The one exception is that there is a lot of C++ code out there and odds are he will come across some one of these days. Understanding how to allocate and release memory is something he needs to know.

Most kids we get out of college now only know Java and, while they do pick up C++ pretty quick they have trouble with areas involving memory and pointer math. I think this stuff is easiest to learn at the beginning rather than down the road.
     
entrox
Senior User
Join Date: Jan 2003
Location: Stuttgart, Germany
Status: Offline
Reply With Quote
Apr 17, 2005, 06:50 PM
 
C++ is an entangled mess of a programming language. Trying to teach programming concepts to somebody using C++ is likely going to lead to permanent brain damage, so don't do it. In my opinion, it would be best to start from higher-level concepts (e.g. what is an abstraction and what do I do with it) and then gradually go down to the lower levels (how to perform computations with a register machine).

Having to mess around with a badly designed language which embodies some of the worst features of programming (weak type system, manual memory management, tedious edit-compile-run cycle, idiosyncratic syntax) will just distract from the fundamentals.

If I had to teach somebody, I'd go the MIT route and use either Scheme or Common Lisp, which I prefer, in conjunction with a good textbook like Structure and Interpretation of Computer Programs (full text online).
     
EmmEff
Dedicated MacNNer
Join Date: Jul 2004
Location: Ontario, Canada
Status: Offline
Reply With Quote
Apr 17, 2005, 07:34 PM
 
There's a reason why Java is taught in first year computer science and not C++

FWIW, I program in C for a living (driver development on Windows) and have also worked with C++ and PASCAL extensively.

My personal recommendation would be to learn Java first. It's syntactically a nice language (IMHO, of course) and there's lots of future potential for jobs.
     
Arkham_c
Mac Elite
Join Date: Dec 2001
Location: Atlanta, GA, USA
Status: Offline
Reply With Quote
Apr 18, 2005, 11:09 AM
 
Python!

If you want to teach programming, and not get bogged down in annoyances like memory management, pointers, etc., the best beginner language, bar none, is python. It's object-oriented, it's fast, it's free, and it was designed from the beginning as a teaching language. The concepts that it teaches (object orientation, polymorphism, multiple inheritance, late binding) are ones that all good programmers should know.

Plus, there's a nice IDE that comes with it now, and it's free.
Mac Pro 2x 2.66 GHz Dual core, Apple TV 160GB, two Windows XP PCs
     
Chuckit
Clinically Insane
Join Date: Oct 2001
Location: San Diego, CA, USA
Status: Offline
Reply With Quote
Apr 18, 2005, 01:14 PM
 
I think Python is a great choice, but he's already made his lack of fondness for dynamically typed and interpreted languages known, so it sounds like Python has two strikes against it in this case.
Chuck
___
"Instead of either 'multi-talented' or 'multitalented' use 'bisexual'."
     
Angus_D
Addicted to MacNN
Join Date: Mar 2000
Location: London, UK
Status: Offline
Reply With Quote
Apr 18, 2005, 04:13 PM
 
Originally Posted by smitty825
I personally agre with Angus_D that Java would probably be the best choice.
I never said any such thing.
     
GeeYouEye
Junior Member
Join Date: Mar 2003
Location: Walnut Creek, CA
Status: Offline
Reply With Quote
Apr 23, 2005, 06:29 PM
 
I'd go with Python or Ruby, perhaps using PyObjC or RubyCocoa so in addition to basic concepts, he can actually make useful programs. I'd highly recommend not going with C++ or Java. Lisp or Scheme would be okay, except that the MIT book is... well... a terrible read, at best. It almost has an arrogant, condescending attitude about it; it assumes the reader doesn't know what features make Scheme good, but it does assume they know why those features are good, and how to use them effectively. Plus a lot of concepts in Lisp are well-implemented in Python and Ruby, and much better explained in their books, (probably because they're not written for MIT).

If he eventually wants to get into Mac programming, start with C, then move to Objective-C. Xcode is great for this.

I don't know about the state of IDEs for it, but Smalltalk would also be an excellent choice, as it was originally designed to be a language that children could use.
I bring order to chaos. You are in chaos windows, you are the contradiction, a bug wishing to be an OS.
     
11011001
Mac Elite
Join Date: May 2001
Location: Up north
Status: Offline
Reply With Quote
Apr 23, 2005, 06:54 PM
 
They teach Java to new computer science students. There probably isn't much difference between your nephew and them.

Anyways, along with other people's suggestions, XCode is a good environment.

Alternatively he can do some very interesting things with an environment called breve. It uses a reasonably simple language called steve, and would allow him to create little simulations of anything from ants running around, to balls rolling down hills, to self learning systems.

www.spiderland.org/breve

When I was little and learning to program, I didn't want to play with all the Basic stuff, what I really wanted was C, but the compiler was to expensive. I wish my parents would have shelled out for it.

Anyways, maybe just give him the tools and let him figure out what to start with.
     
   
 
Forum Links
Forum Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Top
Privacy Policy
All times are GMT -4. The time now is 02:07 PM.
All contents of these forums © 1995-2017 MacNN. All rights reserved.
Branding + Design: www.gesamtbild.com
vBulletin v.3.8.8 © 2000-2017, Jelsoft Enterprises Ltd.,