Currently at work I'm helping put together and create eLearning courses within Flash. Our senior programmers have knowledge of how to do this, Although - I would like to know how you could go from converting a eLearning course from Flash into a application for Mac and PC, looking similar to Garageband's music lessons?

What programming language was used to
create Garageband on Mac?

What is
the best way to create a application
that will work on PC, Mac, iPhone,
iPad, Touch etc, Rather then using
flash and Actionscript to create
online based applications, that will only work in a browser on Mac and PC?

4 Answers
4

Have you considered the Adobe Air or Flex SDKs? Since you're starting with a Flash app, it would make sense to go on to desktop-oriented Flash technologies.

That said...

Garage band, like most of Apple's applications, are written in Objective-C or Objective-C++ (which are strict supersets of C and C++ respectively; basically C and C++ with Smalltalk-like stuff bolted on)

The iOS devices offer only an Objective-C runtime, though some platforms like Flash can export to an iOS target. To target both PC and Mac otherwise, you would likely either write the majority of the application in either C or C++. Most people would use Cocoa for a native look on the Mac and MFC for a native look on Windows, but libraries like Qt do a good job of hiding all of that. Or, you could port your Flash app to Air or Flex and save a lot of time.

Many full featured Mac and iOS/iPhone/iPad apps are probably written in Objective C, ANSI C, and C++, since those are the programming languages that ship with Apple's own Xcode SDK developer tools. Audio code, such as inside Garageband, is most likely done in straight C.

You can do portable Mac, iOS and PC apps using a HTML5/Javascript wrapper.

If you're looking for a language that is quick to learn yet powerful enough to do what you need, I'd offer you to take a look at Runtime Revolution, or I think they call it LiveCode now (http://www.runrev.com/). It is multi-platform for PC, Mac, Linux, iOS as well as web apps, but it is a bit pricey and I myself have not upgraded since like version 3.5ish. It is a descendent/clone of the old HyperCard from Apple. I have seen elearning and other educational programs made with this language. At least give it a look to see if it will suit your needs.

If you want to create a portable app which anyway takes advantage of the native platforms capabilities I would suggest you split your program into modules, for instance according to a MVC pattern where the view part takes advantage of the platform and the rest you write in some portable language like C++ or C - since you mention you don't want to go the web way with your app.