I was thinking back to my childhood, when my family first owned a computer. It was an MS-DOS-powered IBM PC. The default OS came with 2 programming environments, such as they were: GW-BASIC and batch files. It was a start, I suppose. I guess most any microcomputer you can name from that era came with some kind of BASIC interpreter. That defined the computer’s “out of the box” programmability.
Then I started wondering how this compares to computers (operating systems/distributions, really) these days. So I installed a fresh version of the latest Ubuntu Linux version (11.10 as of this writing; x86_32) and looked for programmability (without installing anything else). This is what I came up with:
- gcc/C (only the C compiler; other components of the GNU compiler collection are installed separately)
- Perl
- Python
- C#, as furnished by Mono
- Bash — can’t forget about the shell as a full-featured programming language (sh is also present, but not t/csh)
- JavaScript — since Firefox is installed per default, JS counts
- GNU Assember — thanks to Reimar for the reminder that if gcc is present, gas necessarily needs to be there as well
I checked on C++, Objective C, Java, Ada, Fortran, Go, Lua, Ruby, Tcl, PHP, R and other languages I could think of, but the above items were the only ones present by default. At the same time, I checked my Mac OS X (10.6) box and it also has Ruby and PHP installed. It has a bunch of other languages, courtesy of Xcode, so I can’t certify anything about its out of the box programmability.
Still, I think “embarrassment of riches” pretty well sums it up. I try not to be crotchety old fogey complaining that kids these days don’t know how good they have it; rather, I’m genuinely excited for anyone who wants to leap into computer programming in this day and age.
Reminds me the time when I tried Mandrake Linux on about 6 CDs (I didn’t have even dialup then). It had lots of programming languages there, including several compilers for Prolog, Haskell and such for example. Most important though it had ffmpeg-0.4.5 or 0.4.6 package which introduced me to that tool. I’ve been using it since those times (and found out Xine let alone MPlayer much later). Probably it affected my programming as well.
MS-DOS also included the DEBUG.COM “programming environment”.
If you bring up debug.com, the GNU assembler is obviously missing, otherwise gcc couldn’t be working.
I guess NASM or YASM won’t be installed by default.
But is there really a fully working Mono installation?
I would have expected that at least the compiler would be missing.
I wonder what dragged in the C compiler though…
Reimar: the support for proprietary modules dragged the C compiler I guess. They don’t ship precompiled versions of the NVidia drivers.
@Reimar: Good point about GNU assembler; I’ll add that to the list.
About C#/Mono, I just gave myself a crash course in C# with a Hello World program. The Ubuntu box I’m on right now (by no means fresh, but I can’t imagine when I would have installed extra C# dev tools, but you never know) has the ‘gmcs’ compiler with allows me to build hello.cs. Then mono is able to run the resulting hello.exe program.
I wondered about the C compiler too; I didn’t expect that to be installed by default. I’m misled further by assuming that if gcc is installed, g++ would also be present. But that’s not the case.
Embarrassment of riches indeed — unless you buy a PC with Windows on it — then it’s just an embarrassment…
My sister bought a new Windows machine recently, and I was truthfully shocked to be reminded how dreadful the computing experience is for the most common group of users. No languages to speak of by default, except *shudder* JavaScript under Internet Explorer, and very few applications (but plenty of ‘crapware’…)
As a Computer Programmer who owns Ubuntu Desktops and an Apple laptop I’m spoilt — as are you. But will somebody please think of the children! :-P
Loen: in addition to Javascript, there is VBScript and batch to keep you entertained.