Software Development

What is your favorite non-mainstream programming language?

Many developers secretly love one or two languages that they'll probably never encounter in the workforce. Let us know which "second-tier" language is your favorite.

Right now, it seems that a few major programming languages really dominate the lives of most developers: C#, VB.NET, Java, and PHP. At the same time, a number of applications are still written in C/C++, and most Web applications now involve JavaScript in some way or another.

But many developers have a secret love affair with a language or two that they probably will never encounter in the workforce. Maybe it is a language that has lost its commercial luster (like Perl), or possibly it is one that never quite got its wings in mainstream development (such as Lisp). For me, that language was Perl, but through some recent learning, it is becoming Ruby. Even though the following poll only lists three of the "second-tier" languages that are out there, there are dozens that are pretty common. If your favorite isn't listed, post it in the forums.

J.Ja

Disclosure of Justin's industry affiliations: Justin James has a working arrangement with Microsoft to write an article for MSDN Magazine. He also has a contract with Spiceworks to write product buying guides. --------------------------------------------------------------------------------------------------------------- Get weekly development tips in your inbox Keep your developer skills sharp by signing up for TechRepublic's free Web Developer newsletter, delivered each Tuesday. Automatically subscribe today!

About

Justin James is the Lead Architect for Conigent.

220 comments
tochique
tochique

I pity visual dBase... It's my favorite...

JohnOfStony
JohnOfStony

I worked for Acorn in Cambridge, UK, designer of the ARM RISC processor, and parent of the ARM company, in the mid-late 80s and their brand of Basic was the most versatile available at the time. You could do absolutely anything in it from incorporating assembly language routines and calling them to extremely simple yet versatile system calls to RISCOS, the ARM operating system. In other words you were in total control. I still have ARM basic running on an ARM emulator on a PC at home and if I have a particularly knotty programming problem, I'll play around with it in ARM basic to get the logic right before rewriting it in Visual Basic. Yes, VB does an awful lot for you that ARM Basic doesn't but it also constrains you within its limitations. For example, I want to draw a star shape in black with a line thickness of 3 pixels and fill it with red. You can't do that in VB (you have to load a pre-drawn graphic), you can, and very easily, in ARM Basic. That's just one of the many simple yet very useful features of programming that we've lost with over-sophisticated bloated programming languages.

oldbaritone
oldbaritone

Dan Bricklin's Demo - Slideware at its finest...

MumpsGuy
MumpsGuy

MUMPS/Cache - It's been feeding my family for over 25 years now.

Derek Parnell
Derek Parnell

Euphoria is essentially a procedural interpreted language that is extremely fast, and easy to learn and use. It is based on a datatype system that has only two datatypes - numbers (atoms) and lists (sequences). There is also two 'helper' types, integer for higher performance numbers and 'object', which is a variant type that can hold any datatype. The sequence is a variable length list of objects. From these basic types, all other data structures can be derived.

wkrauchick
wkrauchick

NOMAD and UltraQuest Procedural NOMAD is similar to conventional programming languages. However, NOMAD programs can be written in far fewer statements and the procedural constructs are almost always easier to use. What seperates NOMAD from the others is the developer's productivity is greatly enhanced with NOMAD compared to the alternatives. Programs are written more quickly and are very easy to maintain. With UltraQuest, NOMAD has been extended to take advantage of Web Services and offers contemporary output options. New application requirements still have the power of NOMAD with much less coding. Legacy applications are easily revitalized without having to do costly rewrites. Their Support organization is responsive and easy to deal with.

rjwagner1
rjwagner1

I use to program in Clarion, I believe it was merged with something else. Does anyone know what happen to it?....RJWAGNER

hamads
hamads

I love developing in LANSA. It has allowed me to build Visual and Web based applications for Windows, UNIX and AS/400 platforms using the same skill set for the past ten years. I have not found anything else in the world that can do that so far. Regards, Hamad

Chas4
Chas4

These were a modified Basic language that had very flexible data handling constructs.

rdmlxguru
rdmlxguru

For the professional developer there is the Visual LANSA 4GL development suite. With the LANSA toolkit and their RDMLX development language you can create applications that can run on Windows, Unix and IBM System I (aka iSeries, AS/400) environment. I worked with Delphi and Visual Studio (C#) but the LANSA has the tool that helps me build software faster, better maintainable and better reusable.

antonio_diaz
antonio_diaz

It was the Language I used in my first programming work. Smalltalk really rocks!

sysop-dr
sysop-dr

My favorite language of the 20+ I program in is Ajax3D. Ajax3D is X3D with hooks into Ajax in the web page so that the model can be updated with data from outside the model. So you can create a model of a process or plant and then by connecting to data from the plant see what is happening in 3D. Live, anywhere in the world via the web. Not a movie or walk through like most cadd tools do but live with real near real time data. And you can set it up that when you move something in the model it can send that signal out to the database and then (we have not done this with any system that has a safety implication yet) control the system that the model is modeling. In 3D. Just too cool. It's object oriented to the max. It's available for any computer. It's easy to learn but hard to master. Ajax3D who knew?

ChazConsult
ChazConsult

NOMAD is a 4GL that has been around since 1970 (approx.) and allows easy and consistent access to DBMS and flat file data sources. It supports SQL and hierarchical data structures. It even supports access to COBOL FD structured files.

mlesniak
mlesniak

I still like IDML (Interactive Data Manipulation Language), a Userbase product. I don't know if Ross Systems still supports it but it is a very useful database language specifically designed to work on RMS databases, although a database is not essential for an IDML program. Table_Edit is my favourite feature: it's quick and easy to create and also flexible, so you can make it as complex as you have to.

alaniane
alaniane

I like working as close to the hardware as possible and Assembly allows me to do that; however, I've only used in recreational programming. Professionally, I've yet to use it and I seriously doubt that I will be using it any time soon.

slyicer
slyicer

Sorry, I've spent too many years on an AS/400.

djparks
djparks

I honestly am surprised Groovy was not one of the choices.

bmettam
bmettam

Clipper 5 was very powerful, had object-oriented features, and allowed you to write well structured, tightly scoped code. I wrote a moderately sized (about 250,000 line of code) reporting application using Clipper 5.1 for a Government department in the early 90's that ran for 10 years without problem.

peter
peter

An Engineer's programming language - a better tool for guaranteeing your work. Readable, straightforward syntax, mature (22 years old). Runs on Windows, including .NET, Unix/Linux etc. Portable graphics (EiffelVision). Great development environment (EiffelStudio).

terry.bobo
terry.bobo

PL/SQL is my favorite none mainstream language

dpresley_50201
dpresley_50201

This comment is from a hobbyist programmer: A powerful language, yet simple syntax compared to Paschal, C and C++. I've programmed in all four languages and Python is by far my favorite. BTW, COBOL is still a mainstream language in the insurance industry. I see want ads in Des Moines advertising positions for COBOL programmers. Delphi, from my understanding, is Paschal with a better IDE and more libraries to get things done, so it probably should be considered a mainstream language as well.

schwarm
schwarm

Ada I liked strongly typed languages from the first time I used Pascal. Ada extends Pascal to support object oriented programming, threads and packaging. Strongly type languages keep me from making stupid mistakes and can generate better code because of the type knowledge. We in the software industry do not do a good job of automating our jobs.

ScarF
ScarF

I found in the comments guys talking about Fortran, Cobol, Delphi (actually Pascal) a.s.o. My question would be: what are the actual mainstream languages? Aren't the above mentioned mainstream programming languages? On the other hand, since organizations such Google, Youtube, NASA, CERN, Yahoo, plus many independents and smaller companies use Python, didn't Python become a mainstream language? Or, is PHP a mainstream language? Or is it just mentioned in "Others" category. This would be a shame. Hm. This looks like another unfinished survey made by TechRepublic.

jk2001
jk2001

I think it is called UserScript. Haven't used it in a few years, but it's a very nice system. The language is a little bit like Pascal, but works like a prototypical OO language. The code editor is an outliner, and the code exists in a runtime environment that is stored in a hierarchical object database. So, the.path.to.your.code and the.path.to.your.data shared the same namespace. That is an interesting feature. Debugging iscool. You stop at a breakpoint, and look at all the variables and modify them, then start execution again. No need to add "watches" to variables, because you just drill down through the database to find your variables. The system has ways to dispatch external code. On Macs, that's AppleEvents, and Frontier would import APIs for your apps. So you could write scripts to control your apps. I haven't use it in a long time, but, maybe I should eh?

CodeRipper
CodeRipper

Delphi, as in the old Borland Delphi. Can never forget about it.

madams
madams

Lisp = (you(have(to)love)it)

thom
thom

LANSA The one and only Language that lets me quickly write sophisticated applications, modernize old ones and integrate with others is LANSA. It is deployable on about any platform with any database. The portable repository is unparalleled. I Love LANSA! It is truly advanced software made simple.

Craig Dedo
Craig Dedo

Fortran. That's **modern** Fortran, spelled as a proper noun, not as an acronym (by official ruling of the ISO). Contrary to popular belief, Fortran is a very modern and up-to-date language. The current ISO standard is Fortran 2003, with previous standards including Fortran 90 and Fortran 95. Right now, the Fortran Technical Committee is finishing work on Fortran 2008. Fortran has many features that make it a powerful and easy-to-use language in many different application areas. These include: * It has very high expressive power, i.e., a programmer needs to use only a few statements in order to construct a substantial amount of software functionality. * Language design for high execution efficiency. * The grammar is easy to use, straightforward, and intuitive. * Few irregularities of rules. Very few wicked surprises and gotchas. * Most of the common features and operations are implemented in as simple and natural a manner as possible, from the application developer's point of view. E.g., I/O is done by language statements, not by procedures, as in C and C++. * Most of the common functionality is included as part of the base language. You do not need to #include a bunch of header files or USE modules in order to get what you want. * Language keywords are case **insensitive**. * Advanced features, such as pointers and recursion, can be saved until they are needed. * Because of these design features, Fortran is much easier to learn and easier to use than most other languages. It is easier to write clear, correct code and easier to avoid subtle mistakes. * Thus, Fortran has high productivity, i.e., software functionality per direct labor hour. Fortran has many features of modern programming languages. * Character strings are a first-class data type, instead of hacked-up arrays of integers. All of the 6 relational operators (e.g., ==, etc.) work on character strings just like on numeric variables. * Complex data type is a first-class intrinsic data type. All numeric functions have complex versions. * Modules * Information hiding and encapsulation. * Recursion. * Pointers. Implemented as descriptor pointers, not as address pointers. * User-defined derived types, i.e., data structures. * KIND type parameters for intrinsic data types. * Complete set of control constructs. And, all control constructs are true block structures. You do not have to use begin-end or [-] pairs in order to create a block. * Array operations on either whole arrays or array sections. * Allocatable arrays. Starting with Fortran 2003, allocatable arrays can be anywhere they make sense, including as components of derived types, as dummy arguments, and as function results. This was the first Fortran 2003 feature that most compiler developers implemented. * Assumed-shape arrays. Any dimension can be variable instead of only the last. * User-defined operators. * User-defined generic procedures. * Explicit procedure interfaces. This makes it much easier to detect interface mismatches at compile time instead of run time or never at all. All module procedures have explicit interfaces automatically, by rule. * Optional procedure arguments. * Keyword-based procedure arguments. You do not have to make sure that the arguments are in the right order if you use keyword argument passing. * Intent specification of arguments. Arguments can be declared as input-only, output-only, or in-and-out. * Pure procedures. * Elemental procedures. * Minimal and exact field width editing. Fortran 2003 adds many powerful new features. These include: * Inheritance * Type-bound procedures * Polymorphism * Procedure pointers * Interoperability with C * IEEE floating-point exception handling. * Parameterized derived types, i.e., user-defined parameters as part of the derived-type definition. This allows the programmer to create one derived type for a purpose and then implement different versions of it instead of creating separately named derived types for each variation. * Varying-length character strings. * Asynchronous I/O * User-defined derived type I/O procedures. This allows programmers to write their own I/O procedures for I/O of derived-types. This is available for both formatted and unformatted I/O. * User-specified control of rounding during format conversions. * Stream I/O. * Access to I/O error messages. * FLUSH statement. * Associate construct allows a complex expression or object to be denoted by a simple name. This is quite a list. It's very unfortunate that Fortran is not more popular and widely used.

RADpeter
RADpeter

the company was merghed with Topspeed, and the product was later taken over by Softvelocity. The production version is 6.3, with Clarion 7 in beta. There is also a Clarion.net

gihayes
gihayes

The PC version of Pick was the first language I added to my knowledgebase when I entered the workforce in the mid 80's. I remember never having heard of it before then. I did like how easy it was to code and maintain database driven apps.

Vincent_Salomon
Vincent_Salomon

I've been away from RPG for a while but recently have been doing some new coding, free format of course. What a concise, powerful language for manipulating DB2 data on the System i it is.

Justin James
Justin James

The items I listed were just a few of the "2nd tier" languages out there; for me to list even all of what I consider "2nd tier" would have made the list a bit too long. Groovy didn't quite make it, because it has only been in the last 6 months or so that I've really seen it emerge into that 2nd tier. I think Ruby, Perl, and Python are a little bit more recognizable in that category, and I know a lot more people have experience with them since they have been "on the scene" for a bit longer. J.Ja

jslarochelle
jslarochelle

I'm starting to use it more and more. JS

rabear
rabear

in my time, before i shifted to visual foxpro. love both of them.

Mark Miller
Mark Miller

Delphi was a language that I would say was 2nd or 3rd tier as far as "mainstream" status at one point in time. It was an OO version of Pascal. My understanding is it's hardly used anymore. I think it's another one of those languages that got clobbered by Java and the internet. The code library for it was primarily designed around GUIs, which have gone out of fashion.

CodeCurmudgeon
CodeCurmudgeon

I think you mean Pascal. . . Paschal refers to Easter. (As does Pascal, but. . .)

Justin James
Justin James

Here are the langiages that I consider "mainstream": * SQL * PHP * C# * VB.Net * Java * C++ (and that is quickly becoming 2nd tier) That's about it. Sure, there are a lot of languages which many of us have heard of, maybe even worked with, and quite possibly are being used in our organizations... languages like Perl, COBOL, FoxPro, Delphi, VBA (notice that no one listed THAT as a favorite!), Ruby, Python, ColdFusion, and so one. Those are the "2nd tier" languages. Some of them are rising to prominence and may break into "mainstream", some are in decline, or are just not as popular as they used to be. C++ will be in this category soon, if it isn't already. Below that are a lot of special purpose languages, or languages which just never won wide usage. Smalltalk, Lisp, Scheme, Lua, Eiffel, F#, Haskell... this list is huge and is basically "everyone else". Many of these languages deserve a lot more usage than they get. Some don't. Some (like Smalltalk) used to be in the 2nd tier. Some never were and probably never will be. Something to keep in mind, by the way, when calling this "another unfinished survey by TechRepublic" is that the format of these is very limited. There is one paragraph to introduce the topic, and the choice ranges is usually 4 - 5 items, to keep it from being overwhelming. I needed 3 paragraphs just to explain my views on what is considered a "mainstream" language. If I had done that upfront, a number of people would not have read all of the way through, that's been my experience with writing these surveys. J.Ja

Chas4
Chas4

It's still alive. Borland sold it to Embarcadero.

gypkap
gypkap

when I programmed with it last summer, and it didn't break old Fortran 77 code, by design.

hal
hal

Nothing was faster. Did some coding in 6809 as well, in protocol converters. Patching in machine code. Ah, the good ol days....

Justin James
Justin James

6 months ago, I wouldhave called Groovy "fringe". Now, I grant it "2nd tier" status. It's definitely on the rise. J.Ja

alaniane
alaniane

Most of the OSS projects I've seen out there are written in C like Samba and Wine. Also, it's still a favorite language of shrink wrap software packages and embedded apps. C tends to have more mainstream appeal than C++.

jadelus
jadelus

Groovy is already touted as the second standard language for the Java platform, and some say it is the successor to Java. Having used it for a year I can definitely vouch for the productivity gains it provides. It has my vote! John Adelus

jslarochelle
jslarochelle

Groovy is really starting to blossom. It has really come a long way in the last year. It remains tight to the Java platform but it really is a nice alternative for those wanting to explore the Java ecosystem using a dynamic and less verbose language. People should also know that Groovy also adds to the class of the Java SDK. Having fun with HashMap and the Groovy shell looks like: groovy:000> a_map = ['Albert':1, 'Einstein':2] ===> {Albert=1, Einstein=2} groovy:000> a_map.put('Heisenberg',3) ===> null groovy:000> a_map ===> {Albert=1, Einstein=2, Heisenberg=3} groovy:000> a_map.Albert ===> 1 groovy:000> a_map['Albert'] ===> 1 groovy:000> a_map.get('Albert') ===> 1 groovy:000> a_map instanceof HashMap // A Java HashMap ===> true groovy:000> a_map.keySet().each() {println it} // Java HashMap with Closure Albert Einstein Heisenberg I intentionally mix both the Groovy finger friendly syntax (several options) and the Java syntax. Really nice JS

Justin James
Justin James

Yeah, if measured by the number of bytes out there using it, or how critical it is to systems, Assembler is quite "mainstream". In fact, so is Ruby and Lua, since many *Nix package managers use them. And, by that measure, makefiles would be one of the most "mainstream" items out there too. But when I say "usage", Mark's definition (what is being used by developers to write code right now, and in what numbers) applies. As he points out, it takes surprisingly few developers to work on a lot of projects... look at the credits on the Photoshop spashscreen, or in any video game. There might be a half dozen developers, and 15 QA, project management, etc. people involved. When you consider the ratio of developers working on things like Web-apps, in-house solutions, and other projects where "getting it done" outweighs high-performance, and there is no legacy codebase to worry about, you find that Java, .Net, and PHP rule the roost... a glance through any job site makes it pretty clear (assuming that there is anything posted at all...) what systems people are actively working in. J.Ja

Mark Miller
Mark Miller

If you define "usage" as "which languages were used to develop the products that most people use?" I think C and C++ would beat out all others even today. The irony is the software that most people use was created by a relatively small number of developers. If on the other hand you define "usage" as "Which languages are most in fashion now and allow more developers to be employed, and show the greatest growth in use in projects?" then Justin's list applies.

Editor's Picks