Poll: Language Use

79 points by Xichekolas ↗ HN
I'm curious what languages you work in on a daily basis. I do not want this to turn into some kind of silly language flamewar, so please, none of that. Feel free to select however many you actually use. If you pick Other, please leave a comment.

127 comments

[ 3.7 ms ] story [ 179 ms ] thread
Other: ARM assembler, (a variant of) BASIC, GAWK, Matlab.
Other: POSIX shell.
Also newer shells would be worth adding too: bash and zsh.
I currently teach a basic course in shell scripting at a university. I'm amazed that bash wasn't included! I don't know whether you'd include Make in there too, but I would - the two together still form the basis for the majority of software deployment in Linux, I reckon. Certainly all our research software uses these two technologies (still!)
Why would you want to mention bash in a course on shell scripting? All you'd do is produce more people writing gratuitously incompatible scripts.

I use bash as an interactive shell, but for scripts I can't imagine why anyone would want to use bash unless they simply didn't realize how non-standard it is.

It is the first time I hear that bash is non-standard.

For specialized tasks such as simple pipes, invoking a sequence of commands (for a more involved tasks I prefer Python) what else would you use other than your interactive shell?

what else would you use other than your interactive shell?

A POSIX shell. There is actually a --posix option to bash which makes it more closely approximate POSIX-standard behaviour, but last time I checked it wasn't perfect.

Bash isn't a standard shell. The Bourne shell (e.g. /bin/sh) is standard. There are Unices where bash isn't available (by default, or at all), and there's no reason to hardcode bash as the interpreter for a shell script unless you're using bash-specific extensions. (If you have to ask, you probably aren't.)

This is what's called a Linux-ism: "The Linux distro I use does it this way, so it must be the standard, right?" It's very annoying when porting things to BSD or elsewhere.

It depends whether you count standards as those decided by a committee, or those that people actually use. Sure, the various BSDs are quite active (and all have bash available through modern package management systems), but AIX, Solaris and HPUX are on the decline and have been for 10 years now.
Does it make sense to require bash as a dependency for a program that ignorantly hardcoded it in a two-line shell script in its test suite?

(I mean, I'd just patch it in the port, but it's annoying in the same way as people sending e-mail wrapped inside a Word file for no reason.)

Rational ignorance. The bash warnings about non-POSIX features have a reputation for being unreliable, so if I've only tested with bash (because I don't care enough to set up chroot) I shouldn't claim it works with any other shell.
No no no, I'm not saying it's testing a shell script, I'm talking about requiring bash for a script that literally says:

   #!/usr/local/bin/bash
   prog_name some_argument
Or, worse yet, programs that exec a command by using bash internally.
Well ... maybe using a shell to run a command worked differently in 1971. There's $IFS ... job control ...

Okay, yeah, there has never been a shell on which that wouldn't work. WTF bonus points for requring /usr/local/bin, which is almost certainly not where the OS maintainers package it.

The argument could be a filename. The filename could have a space in it. So yes, I'd use a shell that has $@ rather than $*, a settable IFS, etc.
Other: Objective-C (how could you forget? ;-)
Yup, same here. Although, I'll occasionally find myself spending days at a time using C within a project (IOKit (accessing, not writing drivers for), CoreFoundation and some other lower level functions such as kqueue).
(comment deleted)
Other: Assembly (X86 and POWER mainly). Factor for some interactive exploratory tasks.
Looks to me like Javascript is going to take this as nearly everyone who codes it codes in something else as well. Just not the same something else...
I didn't post it to find a "winner" so much as to see what the trend was like. I expect javascript/ruby/python to be very well represented because they are common in web apps, and a lot of people here are working on web apps.
Other: PL/X, System Z Assembly
Interesting--what is PL/X used for these days? I worked briefly with what might be similar PL/5 which was a derivative of XPL for writing systems programs for the Sigma 5 series of computers.
As far as I know, the only place PL/X is still used is inside z/OS, though I could be wrong.
Is it an assembly-language replacement, like a high-level assembler?
Not really, I suppose I'd describe it as a low-level language like C, combined with syntax which would be familiar to anyone who has used REXX. You can do things like splits in python to refer to a subset of an array, and it has a single loop macro, which is similar to ALGOL68's 'for'. Also, it has dummy sections, which are kind of like structs, except they can be associated with a specific pointer. So, rather than saying 'Employee->name' to refer to the structs name field, you just say name, and it knows which pointer it is based off of. You can tie many of these pointers together and it will follow them automatically, which is very useful, although it can get confusing.

That said, it does have high-level-assembler features, like being able to directly declare and modify registers. Pl/X also features a way to directly insert assembly code using a GENERATE macro, in which you have to specifically declare which registers/variables are either modified or referenced.

All-in-all, it's not a bad language; I prefer it to C.

I work in vb.net everyday at work. Maybe my brain is melting, but I don't hate it nearly as much as I used to. My previous .net experience was c#, so I think I just had to retrain some habits out of my fingers.

Also, voted for python. Loving it for all my randoming glueing and bit moving needs on my windows machine at work.

When .NET was first introduced, my natural language choice was VB.NET since I was coming from the classic ASP/VBScript world. Over the past 5-6 years, I've introduced more C# into my projects and now I've migrated mostly to C# + ASP.NET MVC -- in addition to Flex, Ruby/Rails. VB is still a useful language since everything compiles to the CLR anyway, but now that C# 3.5 is bringing more "dynamic" features it's more attractive to me. Plus, the syntax is so close to javascript and actionscript that it's a little easier to switch back-and-forth within the same project.But VB has served me well over the years.
Yeah I definitely think there is value in a unifying algol-like syntax. Going between JS and VB.NET is easy on the brain.
Other: Oracle PL/SQL on a daily basis at work.
Other: R
VBA when employed to do financial modeling.
(comment deleted)
(comment deleted)
(comment deleted)
Other: Mumps. (Yes, really.)
My condolences.
Hasn't someone yet written a compiler that targets MUMPS from a nicer language? And if not, why not start on it yourself? Fun project, with very relieving results :)
T-SQL almost daily at work.
Other - F#

I voted for Ocaml, which is a close cousin, but with all the libraries available, F# is really another kind of thing entirely.

Curious, what type things are you working on with F#? Are you in the finance space?
I have a startup in the real-time web space -- web applications, notifications, rich-client, and real-time content analysis.
Other: Ada