Polyglot programmer: some excellent programming environments for OS X

My biggest weakness in programming is a love of many different languages. Having delivered commercial software in C, occam, APL, Common Lisp, Object Pascal, and AppleScript, and used many others, I like being spoilt for choice.

If you already program in Python or Java, you will be familiar with the various and usually cross-platform development environments available for those. My selection here is – as you would expect – eclectic, and concentrates on less widely-used languages, some of which you might think are long defunct and past their prime.

Hopefully these will inspire you to look at some other languages, and explore their development environments, even if only for fun.

Xcode: multiple languages

sdksxcodeThe most expansive and extensive development environment for OS X, iOS, tvOS, and watchOS is Apple’s Xcode (App Store, free). Major language support includes Objective-C and Swift, but many other languages can be accommodated, including C, C++, AppleScript, Python, and others. This includes a built-in version control client for Git servers.

One of its strongest points for learners is its Playgrounds, which allow you to experiment with code examples. Very sophisticated, it may appear forbidding in its complexity, but ultimately if you want to build polished, commercial apps for OS X it is the best choice.

Script Debugger: AppleScript

AppleScript to unscramble dates, viewed in Script Debugger.
AppleScript to unscramble dates, viewed in Script Debugger.

Anyone writing AppleScript will find Script Debugger a real boon. Although it might seem expensive at $199, it is the only tool which provides full support for AppleScript, by way of dictionary browsing, debugging and inspection. Whilst you can get away with the free bundled Script Editor for small and toy projects, it is just not up to anything more serious: Script Debugger is then your only option.

LispWorks 7: Common Lisp

sdkslispworksCommon Lisp has traditionally been well-supported on Macs, but after Apple’s own Mac Common Lisp (MCL) drifted off into oblivion, LispWorks’ cross-platform implementation of ANSI Common Lisp is the only viable option. Its development environment, now at version 7, is thoroughly mature and productive, with extensive browsing facilities, debugging, and more. Prices range from a free Personal Edition to the full-blown 64-bit commercial edition at €2400. There is also a licensable runtime for iOS and Android.

Haskell: Haskell

sdkshaskellA very modern functional programming language, Haskell is available at no cost if you are prepared to work at the command line, but this new integrated development environment (App Store, £14.99) makes it a joy to use. It includes over 200 Haskell libraries, support for the OS X SpriteKit, and makes full use of Yosemite and El Capitan. Code experimentation is aided by its ‘playgrounds’, which make it particularly suitable for those new to Haskell or functional programming in general.

iMops: Mops/Forth

sdksimopsYou may be surprised to learn that Forth, or more precisely its object-oriented variant PowerMops, is not dead. This low-level stack-based language lives on in open source at SourceForge. Its development environment, appropriately, consists of two apps glued together: Bucket, a source code editor, and the iMops app, which loads and runs the code. Although intended for building Cocoa apps, it is a tough option for app development, but a fascinating encounter with Forth.

Factor: Factor

Described as a ‘practical stack language’, Factor is free, open source, and available for OS X, Windows, and Linux. I have only looked at this very quickly, and for the moment it appears to need to be connected with an enabled text editor, such as the free Atom, and as such is not yet a fully integrated development environment.

DrRacket: Racket/Scheme

sdksdrracketRacket is an enhancement of Scheme, often viewed as a sibling of Lisp. Intended primarily for education, its free cross-platform development environment supports the use of different dialects of the Racket language into single apps. The DrRacket package can also be configured for dialects designed for use in education. I have not come across its use in commercial development, though.


sdksaplxAn extraordinarily concise and powerful language, it is also one of the oldest, being defined in 1962 and first implemented a couple of years later. It uses Greek and special symbols in its own custom font, concatenating them into cryptic lines which make perl look verbose. Its last Mac implementation, APLX 5.1, has not been updated for four years, but amazingly still seems to run under El Capitan. If you’re looking for a really challenging language, buy a copy for £425 from MicroAPL.

RStudio: R

sdksrstudioThe S language was proprietary, and primarily for use in statistics. A free and open source implementation known as R has since flourished, and is widely used by professional statisticians and researchers; it has an extensive literature, and is often the only way of performing certain statistical tests or producing specific plots or charts. RStudio is a free and open source development environment which is a boon to anyone using R.

Visual Studio Code: various

sdkcvisualstudiocodeThe most recently-ported development environment for OS X is Microsoft’s Visual Studio Code, which supports more than thirty programming languages, particularly JavaScript, C#, C++, and Java. Those coming to OS X from Visual Studio on Windows will undoubtedly find this a familiar and productive environment, with integrated support for Git version control, and many bells and whistles. It is currently free to download from Microsoft. As I am only just starting to look at it, I cannot yet compare it with Xcode.


I should of course have included Python, Java, Fortran (still going strong in the hands of Absoft), Basic, Clean, Marten/Prograph (awaiting compatibility update for El Capitan), and a few others, I am sure. If you know of a programming language with a good development environment for OS X, please drop me a link in the comments.