Create+a+computer+program+(advanced)

PHP
Pros: PHP is #4 in the [|TIOBE index] of January 2011. Tier 1 of [|community size ranking]. It is in high demand over the world, in some demand in NZ. Ruby is a high level language. It is faster to get anything done because less code typing is required. It comes with dynamic typing, open classes which provide a tremendous amount of flexibility (some see it as a disadvantage as sometimes make programs harder to read). Some knowledge of html/javascript is needed for the design of the visual interface.

Cons: It is a server-side language. It requires access to a server. See Ruby for solutions. It is listed into more complex language because it become Object Oriented since version 5.


 * [|PHP For the Absolute Beginner]
 * [|PHP reference sheet] (alongside other scripting languages)

Actionscript
Pros. Tier 2 of [|community size ranking]. Popular language. Great community. Many resources and turorials available online, line on the [|gotoandlearn] website. Many books. Great support. Terrific [|language documentation]. Can be learned and run without any install, via the [|wonderfl|website]. Committed to backwards compatibility (code keeps working as new versions of the language are introduced). Will satisfy both hardcore programmer and designer.

Cons: With the introduction of Actionscript 3, it became an Object Oriented and strictly typed. Requires discipline and a fair bit of learning. The move to OO however proved hugely beneficial as it became a language in par with java, easy to extend with advanced functionality. Suffered bad press when Steve Jobs decided to keep it out of the iOS devices (no Flash in the browser but Flash can be used to write iOS native applications, published in the appStore). This appeared to have limited impact as Adobe reported a [|42 percent year-over-year revenue growth] in late 2010.

For Open proponents, [|Flex] provides an easy to way to build great applications, for the desktop or the web. Open source, it can be run from the command line, with minimum install. Flash Builder, the professional IDE to develop in Flash or Flex is free for education [|hAxE] provides an open source alternative to Flash for actionscript coding.


 * [|AS3 tutorial for novices]
 * [|Tour de Flex], demonstration of Flex capabiities

Devices / Bridges

 * Can be used to develop for handheld devices, like the PSP. You simply run Flash in the PSP browser.
 * Can be used to develop for pretty much any mobile device (iPad, iPhone, Android, PlayBook Tablets).
 * Bridges exist to many external devices like the [|Arduino Boards], [|Lego Minstorm] and the [|kinect camera].

Java
Pros: #1 in the [|TIOBE index] of January 2011. Tier 1 of [|community size ranking]. Can be used for pretty much anything.

Cons: Takes a fair bit of learning before you can get anything done. Used mostly in entreprises. Distributing applications can sometimes be a challenge. Large number of specialist libraries, sometimes difficult to navigate through them. Backwards compatibility can be an issue (running old example code found on tutorial website can fail). Typically used by hardcore programmers, never by designers. The default look and feel of visual apps is far from gorgeous and styling is not that straightforward. It changed of ownership. Oracle, the commercial company has taken over Sun. There are rumours that [|Oracle will confine Java future to enterprise]. Apple decided to [|deprecate java on OSX].


 * [|Introduction to Java Programming]
 * [|BlueJ, an integrated Java environment specifically designed for introductory teaching]
 * [|Java Reference Sheet], alongside other c type languages.

Devices / Bridges
Pretty much limitless when it comes to application development. In browser running requires a plugin that cannot be installed on some devices (iOS - iPad, iPhone, iPodTouch)

Python
Pros: #5 in the [|TIOBE index] of January 2011. Tier 1 of [|community size ranking]

Cons: Mostly used in specialist communities. Academic and Scientific. The communities put functionality/algorithms over design. Access to GUI components requires [|additional installs]. There is a huge number of solutions (which is somewhat confusing). None provides the visual quality of a Flash application. [|Glade is probably the most convenient]


 * [|Python reference sheet] (alongside other scripting languages)
 * 
 * [|Python Quick Reference], short PDF by O'Reilly
 * [|Python Quick Reference], long HTML
 * [|Python 2.5 reference card]

Devices / Bridges

 * Not clear whether it can be used to publish to any device. For iPhone, the only solution that seems to exist is [|PyObjC, with a jailbroken phone]. Android deployment also requires [|crosscompiling]

C# / .Net
Pros. Tier 1 of [|community size ranking]. Can be used pretty much with everything. Back-end, web-app, desktop app. Can be used with Silverlight, which simplifies GUI generation.

Cons. Microsoft only (however they are so keen to encourage adoption that they may offer free programming environment to your school - Microsoft Visual Studio Express is free, but again, Windows only). Some C# coding can be done with [|Mono] but you don't get access to Microsoft libraries

C / C++
Tier 1 of [|community size ranking].

For hardcore programmers. Critical for advanced game development.

Stats R
Pros: #26 in the TIOBE index of January 2011. Tier 3 of [|community size ranking]. Can be put to good use to create survey reports.

Cons: Of use only in some specialist communities, namely statistics and data analysis.


 * [|The R project]
 * [|R for beginners] (pdf)
 * [|An introduction to R] (pdf)
 * [|R reference sheet], alongside other mathemtics languages.
 * [|Short R Short Reference card]

Frameworks
Here, we quite subjectively, use the term of framework to refer to solutions that accomodate more than one programming language and therefore.

.Net
You can use .Net framework to target the following programming platform:
 * C#
 * Visual Basic.

HaXe
Initially an open source solution to compile actionscript. Gaining more and more power and flexibility over time. It is not bound to a specific platform (like Java to the JVM, C# to .Net, ActionScript to the Flash Player).

you can use haXe to target the following platforms :
 * Javascript : You can compile a haXe program to a single .js file. You can access the typed browser DOM APIs with autocompletion support, and all the dependencies will be resolved at compilation time. See for instance [|Using jQuery in haXe]
 * Flash : You can compile a haXe program to a .swf file. haXe is compatible with Flash Players 6 to 10, with either "old" Flash 8 API or newest AS3/Flash9+ API. haXe offers very good performance and language features to develop Flash content.
 * NekoVM : You can compile a haXe program to NekoVM bytecode. This can be used for server-side programming such as dynamic webpages (using mod_neko for Apache) and also for command-line or desktop applications, since NekoVM can be embedded and extended with some other DLL.
 * PHP : You can compile a haXe program to .php files. This will enable you to use a high level strictly-typed language such as haXe while keeping full compatibility with your existing server platform and libraries.
 * C++ : You can now generate C++ code from your haXe source code, with the required Makefiles. This is very useful for creating native applications, for instance in iPhone development.
 * C# and Java targets are said to be coming soon.

OpenFrameworks Bridge - [|Creating generative art in haXe and OpenFrameworks]

Though it was initially introduced as an Actionscript compiler, slight differences exist between haxe and official (adobe) actionscript. This is documented at [|Migrating AS3 to HaXe]

Mono
[|Mono] is a cross platform, open source .NET development framework.

Supported Operating Systems: Linux, Mac OS X, iPhone OS, Sun Solaris, BSD - OpenBSD, FreeBSD, NetBSD, Microsoft Windows, Nintendo Wii, Sony PlayStation 3.

Based on the common language runtime and can be used to target:
 * C#
 * Visual Basic
 * PHP - [|PHP4Mono]
 * JavaScript (alpha)
 * Python - [|IronPython]
 * Lua

It can also interoperate with [|multiple languages]:
 * [|Java] - Mono is able to run Java code side-by-side with .NET as well as having Java and .NET object interoperate with each other.

AIR
With AIR, you can develop desktop or device applications targeting the following programming platforms:
 * Actionscript
 * Javascript

Eclipse
TBA

Source Control

 * Git is a source control solution that has the advantage that it can be used in strict local mode, without any server installation. [|Get Started with Git].
 * If the code is shared among within team, consider using [|github], free to use. A web-based repository for code. Based on git.

Project Management

 * [|Pivotal Tracker], a web-based application to create and manage the list of features to be added in your application. Free for education.
 * codebaseHQ, a free package allows one project, 20MB disk space and 2 users.

Testing

 * [|Test Driven Development]

Advanced Concepts

 * [|Design Patterns]

=Web Resources=
 * [|LangPop] - Programming Language Popularity
 * [|Rosetta Stone] - " present solutions to the same task in as many different languages as possible, to demonstrate how languages are similar and different, and to aid a person with a grounding in one approach to a problem in learning another"
 * [|job trends (US) for different languages]
 * [|Programming Languages Comparison] @programming.dojo.net.nz
 * [|The history of programming language], O'Reilly poster (stops at 2004, unfortunately)
 * [|What programming language should I learn (next)?]
 * [|The right to criticize programming languages], an evaluation of the strengths and weaknesses of Python, Perl, Java, Javascript, PHP, C, C++, among others.
 * [|The Perils of Java Schools by Joel Spolsky]
 * Programming resources for kids
 * [|Computer Science 101] at Stanford