Help me learn to program, please

I agree that in term of language Python is the most interesting I saw. Now it search itself and hasn't a library very clean. That's also a script language not doing gui isn't rewarding.

Java is certainly a good choice (clean language, high internet support with plenty high quality free learning stuff) and Apple is going to it : Now integrated to Project Builder, at least very well implementend to get really standard gui with standard Java stuff, easy way to get out of Java and make direct call to the System api and Objective-C. But choosing Java will imply a strong investment. Still a good choice.

AppleScript is very special, I hate its false "human language". In term of language it is also very limited. But its integration ot the System, its mix of scripting approach and easy gui building and using with AppleScript Studio. Plus its links with the unix shell commands make it a great toy to play with. I write toy but you could do very fast concrete things as usefull tools.

Later with it's wide connections, you have many way to use it as a base to see further :
- Exploring more its ability to command other application.
- It's connection to unix command shells to use it to encapsulate more and more complex unix command tools.
- It's open architecture that allow you call Objective-c method or even (less easy) Java stuff. That could be an easy way to make more fun first steps in complex worlds.

So afterall, despite all its limitations, despite it is too special, that's an interesting choice to start with particularely when AppleScript Studio is free.
 
OK, so I'm the slow one...

Java may be the way to go for beginning programming, but why is it so slow?

Since Java is a platform-independent interpreted language, it will never be quite as fast as a compiled language, though the JVMs are getting better and better.

The majority of the Java-perceived slowness is mostly in the programs themselves -- especially those that rely on the GUI (Swing library). It's hard to write programs that use Swing well, so most don't.

Non-GUI Java programs give compiled programs a run for their money (and work on multiple systems right off the bat).

bear
 
Here's a thought. Start with something that requires no libraries and no advanced concepts. The first order of business is probably to learn not just the basics (variables, loops, conditions) but also how to use the basics (i.e. the basics are easy to understand and are definitely intuitive, but learning to use them to accomplish everything under the sun is a step that can't be skipped). While languages such as C++, Java, or Cocoa are excellent languages, you can't even begin to start playing with the basics, e.g. output a variable, until you understand libraries (and/or objects). Imagine all you have to do before you can simply output a basic variable in Project Builder. That's an awful lot of complicated stuff right up front and seems to defeat the learning process. I'd start with something that just lets you start typing basic commands and run the thing. Python and REALBasic I think are great suggestions, and maybe perl or php would be too.

Here's my suggestion, and you'll all laugh ;) but think pedagogically here: Flash Actionscript. It's easy to use, you don't have to understand anything at all about programming, you just open Flash, start typing commands, and running it. There are about a million tutorials for anything you want to learn how to do, so it seems to me like a great "first language" (not to mention a useful one). Also, designing user interfaces is a lot simpler with actionscript than other languages because AS is part of Flash. There are so many things about "interfaces" that need to be learned, but Flash lets you get into it without being overwhelmed by all of interfacing's complexities. Once you understand how basic programming works, how OOP works, and how interfacing works with something simple like Flash, moving into Java or Cocoa is so much more natural. The learning curve remains steady that way rather than bogging the learning curve down with too much up front.
 
That's a great idea! ActionScript is built right into Flash, meaning you don't have to program anything extra to get it to work well with a UI you design. While it's simple to build a UI in Interface Builder, it's not so simple to get it to work in Objective-C. Flash would be a great "training wheels" step!
 
Back
Top