Our writer community grows each month as new, interesting folks write for us and join in on the fun of sharing their expertise and experiences in open source technology. So, it's no surprise that they are brimming with fascinating information. It's just asking the right question to release it.
Recently, I asked: What programming languages do you use at work, and which ones do you use on the weekend?
For some, they differ wildly because their work is much different than what they choose to build with at home. For others, they are similar, and their weekend projects just have more personal goals. Let's hear what they had to say.
Share yours in the comments.
Which is your work programming language? Which is your weekend?
I'm a Java guy at Microsoft who uses C# for the occasional pet project. —Yev Bronshteyn
On the weekend, my 11-year-old coding son and I use Python 3 on the Raspberry Pi. We've made everything from funky breadboards to an Alexa-type device. —James Lovegrove
I use Perl and Bash/Shell at work, and Perl at home and for most of my side projects. —Joe Kline
At work, I use mostly C++, Java, and C#. For fun (and sometimes at work), I use C, Go, Perl, and Lisp —Martin Kalin
Being that my start in the industry came through AIX and Linux administration, most of my work in the early days were Bash scripts. Now as an older Linux administrator, all I’ve done is add Python to the mix in my professional work.
For fun, I’ve dabbled all over the place; experimented with Pascal, wrote a number of applications in C#, tried and failed to do anything meaningful in C or C++, and finally have written a small amount of PHP to either augment existing applications like WordPress and Drupal or a enough for a rudimentary blogging system.
I learned how to program in high school with Java. Before that, I had used PHP for web-based projects.
At home, to start a new fun web project, my default choice is still PHP to get something running quickly, but when it gets more serious I tend to migrate functionality to other languages, like Go, which I find better for testing. Also, I'm doing a bit of D in exercism.io, just for fun, and to get back a bit of the C++ feeling I miss in the other languages. —Manuel Dewald
I use a lot of programming and scripting languages, but the language I code in when I'm writing projects is C. The C language provides flexibility and speed, at the expense of having to pay attention to details and keep track of things. You can't rely on automatic array declaration, garbage collection or other methods from higher level programming languages to help you; the programmer needs to malloc() the memory to use, and free() the memory when they're done using it. You need to have good programming habits to code in C. But for all that, C gives me a powerful programming platform for my projects.
(Disclaimer: Much of my C programming is for the FreeDOS Project, an open source implementation of the DOS operating system. DOS doesn't leave a lot of overhead, so programs need to be efficient. It makes a lot of sense for me to write DOS utilities and libraries in C.)
When I'm writing other things, like example code or maybe a quick script, I use whatever programming language and scripting language is best for the job. I write a lot of Bash code for automation. I also write a lot of PHP code, including a sample PHP program to fill out my March Madness brackets for me, [linuxjournal] since I don't really follow basketball. —Jim Hall
I’m proud to say that I’ve contributed to at least one open source Node project, entirely by just letting it hum a few bars so that I could join in. I otherwise have no idea at all how Node works.
I would be remiss to overlook Inform 7, the language I have published at least one interactive fiction game in, and which I find myself revisiting for purely utilitarian reasons in my ongoing role as the Annual Interactive Fiction Competition's technical lead. —Jason McIntosh
Most of my work involves some kind of data wrangling, analysis, reporting, and visualization. Most often I use the Groovy programming language for this purpose. Groovy has all but replaced Java for much of my work, for a bunch of reasons:
- it's much more compact without being completely different
- it lets me leverage the Java runtime environment
- it provides high-level constructs and enhanced mechanisms for handling lists, maps, sets
- it has nice support for closures
- it generally supports my preference for object orientation without forcing on me for small scripting chores
- it encourages writing in a functional style.
However, depending on the need to incorporate certain specific toolchains, I also use Python, and like it almost as much as Groovy.
From time to time, I have dabbled in R, but I have never really jumped in there with both feet. And, I really wanted to like Go, but there are a few things about it that really bug me—I don't like capitalizing names to make them public (I'd rather have an "export" keyword); I like to come up with variable names before I write the code that uses them so that I can get a reasonable naming convention going; the initializers in "for" and "if" don't go far enough; and I think I would really miss the object orientation if I were to do something big with Go. As to which language do I use for fun, I occasionally dust off Algol68. (Really!!!) —Chris Hermansen
I "cut my teeth" as they say on the old-school procedural languages, with a wee bit of exposure to functional languages. So the early days were BASIC, PL/1, FORTRAN, COBOL, Lisp, various assembly languages, a few other languages that were unique to the architecture/manufacturer of a particular beastie. Then, a brief foray into APL with its uniquely wacky keyboard. I quickly settled into a habit of using FORTRAN to do everything, and when it couldn't, I'd write a new function in my ever-growing assembly language library to extend FORTRAN above and beyond. (I even had a function/subroutine that effectively let me write inline assembly in my FORTRAN code.)
And, of course, there was TECO... the predecessor to emacs. There were competitions to write full-blown weird code using only TECO editing commands.
When I should have been learning C, I stuck to my augmented FORTRAN and/or Assembly approach. (Actually, I wrote one big, for me, C program to dump, verify, and reload the memory of the Korg M1 synthesizer using an Atari 1040-ST.)
When the world was moving into OOP, I saw people going gaga over Java. I tried and went gag (me with a spoon) rather than gaga. And circa 1999, a friend who'd recently discovered Python suggested that.
However, of late, I'm finally getting bored again. Or something. And work is increasingly leading me in the direction of 3D environments for rehabilitation. So, I've been looking at the Ecere SDK which adds 3D capabilities to something called extended C or "eC", which requires me to review C. That and game engines that use either C# or C++. So a small smattering of those. And I'm intrigued by Rust, as I always liked systems programming, and the idea of a "C for the modern architectures" is attractive. I keep hearing about WebAssembly, and the "assembly" part of the name makes me nostalgic and curious.
Finally, I have some friends who are nuts about Haskell and others who like Lua. I've barely looked at either but they're in some bucket list... Maybe Go too.
The bottom line, in spite of all of the above, is that my go-to language (without goto's) is Python for both weekdays and weekends. —Kevin Cole