April 30, 2009

We need more polyglot programmers

Too many developers limit themselves to C++ and Java, in spite of the wealth of exciting new options

Americans have a bad, though deserved, reputation for only speaking one language. Small surprise, then, that the same is often true for American programmers. Today's computer science graduate often leaves school with a strong knowledge of only one programming language -- typically a major systems language, such as Java or C++ -- and goes on to a career based almost exclusively on that language.

On the surface, this makes sense. C++ and Java are both highly versatile, complex tools. Just learning the syntax of either one is nothing compared to the amount of study it takes to become familiar with the whole ecosystem of associated libraries and frameworks. Not to mention that both languages are widely used; if you don't know either one, you cut your chances of getting a coding job dramatically.

[ The now-ubiquitous multicore chips pose new challenges to developers using traditional languages. ]

But a software development field that's based almost exclusively on two languages -- languages that are very similar, for that matter -- is also in danger of stagnating. The Sapir-Whorf hypothesis holds that the patterns of human thought are profoundly influenced by the patterns of the language in which the thought is expressed. Linguists disagree as to how strictly this is true of human languages, but for computer programming languages -- which are themselves but restricted subsets of human language -- it seems particularly apt. And yet, while the study of software development has marched forward with concepts such as functional and aspect-oriented programming, mainstream languages have remained tied to the same object-oriented paradigm introduced decades ago.

Outside the mainstream, however, the field is exploding. New programming languages are introduced every year, and many of them could make valuable contributions to real-world software projects -- if only they would get used. What will it take for enterprise software developers to start thinking outside the twin boxes of Java and C++?

A cornucopia of new languages
What's good for computer scientists isn't always good for working programmers. But surprisingly, perhaps, not all of the work in the area of programming languages has been strictly academic. Microsoft's .Net platform, with its CLI (Common Language Infrastructure), has been a particularly prolific source of new languages. Wikipedia currently lists no fewer than 55 languages that run on the platform, all of them fully interoperable.

White Paper

D2D Virtual Tape Library Replication Primer

This whitepaper explains the terminology and concepts behind Data Replication technologies and establishes some sizing rules through worked examples. Learn the new paradigm in disaster tolerance—protect data anywhere.

Download now »

Trial

Free 30-Day Desktop Virtualization Trial

Download a free 30–day trial and experience how XenDesktop delivers a pristine, on–demand desktop experience to users on whatever device they choose, while cutting IT complexity and costs.

Download now »

White Paper

Why Your Firewall, VPN, and IEEE 802.11i Aren't Enough to Protect Your Network

The emergence of WLANs has created a new breed of security threats to enterprise networks.

Included in HP ProCurve WLAN solutions is security technology that alleviates threats from WLANs through:
* Monitoring wireless activity inside and out of the enterprise
* Classifying WLAN transmissions into harmful and harmless
* Preventing transmissions that pose a security threat to the enterprise network
* Locating participating devices for physical remediation

Download now »
geofrarick 30-Apr-09 9:37am
The concept is nice, but there are a lot of multi-language programmers out there who can't get jobs because either the jobs aren't there anymore, or the employer is looking for someone cheaper than us. I have over thirty years programming and development experience, and I have always considered myself a computer linguist and computer psychologist. I started with Cobol, Fortran, and Assembler, passed through Pascal, C, C++, Java, VBScript, and have kept up with new developments, new processors, UNIX vs. Windows languages, scripting languages (KiXtart, Perl, etc.), .Net and COM, and Web development languages such as Ruby On Rails. I pride myself on learning new languages as they develop, in order to support new applications and ever-changing business processes. I have a good job now, but it has nothing to do with programming, other than when I get to program the company's PBXes (Avaya IP Office platform). I would be glad to have the opportunity to program for a living again, because my major skills are unused, and I'm bored with my job, although satisfied with its' pay and benefits. G.R.
Linguistic 30-Apr-09 10:40am
1 reply
I could'nt agree with you more. The lack of education of our schools leave a bad taste in my mouth. We have the inability to teach our generations multiplicity of languages and we don't emphasize the gift of knowledge raises our culture; instead we find ways to cope with our taught inabilities. The invasion of multiple people, legal or not, has created a babble U.S world and we haven't heed to the need to expand our education horizons. Enough said about this. Having a multiplicity of computer languages is advantegeous but also present a huge problem and let me explain. In the real world of IT, multiplicity creates 'silos' and complicates management. I have been an Enterprise Architect for most of my 40+ years in IT. Trying to mash together an architecture for all to use fluidly has been impossible. My organization resorts to outsource talent; these come in with varied expertise that will provide an immediate solution to our problems but this create more problems when we must buy a specific tool for him/her to develop a system; when this person leaves, we fail to adopt and adapt the technology left behind thus creating a silo environment. I'm sure many organizations suffer from the same malady. Not suggesting that 'variety is the spice of life' common sense, frugality and moderation is the card we need to play. The lack of languages standards makes it difficult to 'select' an official language to use, and the lack of completness in a given language, we cannot name one. On the other hand, schools have historically failed to teach through a program the art of development methodologies with their structured framework that teaches the proper development process: Requirements gathering, design, development, etc. What I'm trying to say is that today's geeks may be intelligent but inexperienced and they are quick to create a program or routine that goes into production untested and verified, etc. The root cause of this is their training that comes from our teaching institutions or if they offer them, thay are 'elective' and optional; which many choose because they want to make money quick and fast. Finally, your inference to multiple languages is well taken as an entertainment to young aspiring programmers but reflect on the difficulty of the things that are obvious today. Go to any town store, government office and the U.S. have lost the ubiquiness of the English language. Now we can read in Spanish, Cambodian, Korean, etc. If you get my drift. Or see what our technology is doing to our young kids, they no longer write on a tablet and use proper English, they rather use Blogs, Black Berrys, Texting, etc. Soon, we will have Americans talking in a variety of lingos adults will not understand.
jdonato 1-May-09 7:23am
I have been teaching Computer Science for almost 20 years. The language issue is multifaceted. I have taught BASIC, COBOL, Fortran, Pascal, C, C++, and Java and it continues to be a challenge as colleges are faced with placement pressures, transferability issues, issues in keeping their faculty on the bleeding edge, and student preparedness issues. Regardless, the core that we must always focus upon is creating people who have the skills to design solutions to problems that can be implemented via a variety of technologies. This way, companies can pick the most applicable technology for their situation. When I began teaching, I started to teach design techniques along with the language material. Actually, the language material is (and was) taught in order to foster visualization skills, logic, troubleshooting, and attention to detail. We happen to use (currently) C++ but the material is covered in a way that C++ is a tool and really could be almost any language. The choice of C++ helps us when we place students (in jobs) or when they transfer as they have knowledge of that language, however, it is the “soft skills” that we try to develop that translate into long-term viability. The next course that students take continues to refine their soft skills by focusing on even more design concepts and tools as well as continuing to refine students’ visualization, logic, reasoning, and trouble-shooting abilities. This particular course uses Java, which is also treated as the tool of choice as opposed to the specific focus. Our final programming course covers conceptual and theoretical concepts and happens to continue the use of Java. In this course we refine their organizational skills and we examine logic that serves to solve problems. The examination of the logic provides students the opportunity to reason about solutions and to weigh broader issues. Strangely, this approach is not the traditional (and standard) approach. Typical Computer Science emphasizes thorough and deep understanding of coding and leaves design to later years. If the design and soft skills are not introduced early, we lose a lot of time to develop these abilities in our students. It is these skills that, once developed, allow many of us to move in and out of new technologies more easily than other people can. It is interesting that we live in a world that expects significant technology skills in every area and our students have spent more time using technology, but it usually is as a consumer of technology - the gap between expectations and ability has never been wider. If we do not focus our attention, efforts, and resources to a more basic approach, we will continue to wonder why our new practitioners cannot keep up.
mitchgrrt 30-Apr-09 1:15pm
Suppose a company lets its programmers develop code using several different languages, using the one that best fits the problem at hand. After a while the company will have a code base that will be hard to understand. On a software product that is mature and goes through a development lifecycle, more of the work is maintenance, as opposed to writing the code the first time. Maintenance gets harder if the code is written in several different languages. If Groovy is popular this year but not two years from now, two years from now the company may be stuck with a code base that's in a language that nobody knows any more.
billslater 30-Apr-09 1:32pm
Great article and ideas. I've been saying this for years. I've programmed in over 35 different languages, and never saw anyone that being a polyglot programmer was a GOOD thing. Visit http://billslater.com/career and scroll down a bit to see the list of languages I have programmed in. Current favorite languages are: Visual Basic 2008, Java, PERL, and C#.
aaugh 30-Apr-09 2:58pm
This is simple demand-and-supply. When there is sufficient demand, the supply will be there. Also, it may not make economic sense for companies. Costs go up since you cannot standardize development tools and libraries. It's hard to find people who are skilled at some niche language, and development tools are less mature since the market may be too small for vendors to invest much resources in them.
bob nelki 30-Apr-09 3:20pm
It's not about the programming language it's technology. Language is only one part of a number of paradigms and different technologies, each evolving at their own rate and changing the way they work together (networks, OS, IDE, Databases, SOA etc..). Being a polyglot progammer means I'm old and know alot of old stuff no one want to touches anymore (autocoder, assembler, Cobol, Pascal, Fortran, VSAM, AS400, Wordperfect, Hierarchial databases, DOS, etc..). What proliferates is whats new and works (PHP) or evolves fast enough to stay relevant (Java so far). Who knows if technology outmodes or greatly reduces the need for programming skills? Sharepoint anyone?
PapyNormand 1-May-09 3:09am
I am amused and interested by this article. The main problem about languages ( for us french ) is the crushing use of english and a reject of any other language from the us people ( we are not here to speak politics, but i have met several Americans who were considering that foreign people especially from the "old" Europe are nearly nothing ( with a such behaviour , you will understand why French people don't really appreciate people from USA, like our De Gaulle ). I am not good in english but i am trying to write a post as good and clear as possible, even if i need 30 minutes to write this post ( i am sometimes posting on the us MSDN Forums ).Everybody has a mother tongue, and english is a really currently used language.So i post in english but it is necessary for US people to understand that foreign people may have problems to understand them especially with their terrible pronunciation. For the computer languages, it is another problem : when i began to code 40 years ago, i found a book ( written by a US man ) who said : if the language is not adapted to what you want to do, change it and learn another one. And i have learnt PL1,COBOL,APL,ALGOL,PASCAL,C,VB,C++ and now i am using VC# and VB ( i prefer VC# ).I think that if you are stuck to a language, you will have difficulties to learn a new one ( especially when you have used the COBOL during 20 years ). To learn a new language opens you new possibilities and a new way of thinking ( a good thing ). It is now possible to write separate parts of an application in different languages. Why not ? and for me a new challenge, that's all. And a way to try not to go sleeping in the habit of specific language or way of programing. During 40 years of writing programs, i have discovered that some languages are more adapted for some tasks and i have gone ( when i was changing my language, i was glad because i have had to think about what i was doing for a while )
Kolyan 1-May-09 5:03am
“Costs go up since you cannot standardize development tools and libraries.” “…It is now possible to write separate parts of an application in different languages. Why not ?” The key element here is The Standard. Yes, a lot of folks are meditating on diversity of things and programming languages in particular. Why? Competition moves the progress? Really? Any solid idea WHY Java (for instance) cannot be polished and modified to meet ANY needs? How about ONE database structure instead of …how many? OK, pick one that closest to be a major contender for The Only One. It’s like to build multiple car brands. With current possibilities, tools, education, human power we could make one with OUTMOST performance, safety and environmentally sound. But people are not doing that. Do you think this is bc of inability of study in schools, colleges or uni’s? Hell NO. That’s someone’s “great idea of free enterprise”. Bc in away of thinking functionality and reasoning first we’ll not be so heavily immoronized to the point of complete ideocracy by following this “modern” way of life. You say where is competition then? In your design labs. We’re should be smart enough to not compete by TRYING but DEVELOPING. Why we cannot compete within ONE standard project in any given industry, why do we need to re-invent the wheel over and over again? O-oh, u’d like to see some freaky looking, bulgy, inefficient scrapmetall bombers on wheels? Sure you have it already. Look at ANY piece of technological equipment, machinery. Is there REALLY any break-through invention? Hell NO. It is customization of basic idea in terms of not compromising someone’s copyrights or just for specific purposes. It’s the same with anything else. Look at the bottom of everything. What is a reason that any giving thing is pop-out in first place? FUNCTIONALITY first, and then we’re pampering things with Italian leather and chrome; “Christmas-like” water-cooled boxes and different sizes of wheels and buttons. It seem to me that now we’re living to work on proudly created by ourselves crap that we’re religiously praise to the monument of purpose of life. And someone, sometimes who squeeze him(her)self into the niche will cut some HOURS of joy in this life.
philstrong 1-May-09 5:53am
Ssshhhhhhhh! Don't let this get out. As an American developer that has an arsenal of languages and platforms at my disposal I implore you (Vb.Net, C#, Java, Rails/Ruby, C++, etc ...). The work flows like water and I don't want to jeopardize that ;p ! Using one or two languages is the fastest way to corner yourself into a slow dull painful existence at work. Most of those reading and posting here are more than likely thought leaders in our industry and don't fall into this trap that leads to solutions for customers that revolve around a language instead of the problem. My 2 cents Phil Strong http://philstrong.wordpress.com/
Razors Edge 1-May-09 8:13am
If the school you are attending is only offering two languages they they are behind the times. I only graduated 4 years ago. In school I took COBOL (ya don't get me started on that one), C++, VB6, JAVA, and VB .Net. I eventually got a job with a major computer company that uses C#. Never programmed in it before, but I had a good enough background that I learned it pretty quick. From what I've seen is that "best programming practices" are universal. The only difference is the actual code.
laf1157 1-May-09 8:33am
With technologies today, I don't see how one can develop a system in one language. The business code I write in COBOL. Analysis tools I write in C. CGI code I write in PERL. Process management in POSIX script. Web pages in HTML & JavaScript. plugins (rarely) in Java. Oracle coding in SQL PL/SQL. This all on a UNIX platform. By the way, COBOLs death is greatly exaggerated. Each of these fills a niche in the overall system that the others are unable to do or do poorly. Given the others in my group tend towards single language, I tend to get the esoteric projects. When taking a class on a new language, one student mentioned by knowing only one, he'd be more likely to find work as he'd be cheaper. My thought was if you made a career of this, you'd need learn more to stay employed. My greatest skill, learned through seminars (100+ hours) and not taught much in colleges, is design theory and analysis. This improved my performance 10-50 fold. Picking the brains of users, understanding business processes, ferreting out the way things are done rather than thought are done, and designing an intuitive system to meet their needs, that's the hard part, the interesting part. Teaching the computer the solution is easy.
SnakeEyes 1-May-09 1:07pm
I wanted to bring the Cobra programming language to your attention which has first class support for unit tests, contracts and mixins, all with a clean syntax. It runs on .NET/Mono, but is also being ported to the JVM.
WayneM 4-May-09 5:14am

It's about design, not languages

Knowing multiple languages is not a key to good programming. It is simple, old fashioned design that separates good programmers from bad programmers. Good design principles can be applied to any language, and a good designer will quickly figure out how to apply the necessary priniciples in the current language he is faced with. He may be banging his head against the wall over missing capabilities, but he will know enough to find an alternative approach

I've known good and bad programmers through out the years and either could be a language specialist or a "polyglot" programmer. Good designers succeed with either approach

Gray_Hair 5-May-09 9:45am

Cheez, I really did not want to get sucked in here, but your mention of the Sapir-Whorf hypothesis in the opening, kinda set me off. Point; the hypothesis posits a deterministic relationship between language and thought, whereas BY DEFINITION there is a deterministic relationship between a computer and languages it can support, and similarly a deterministic relationship between that computer and the problem domains it can address. Which, again by definition, constrains the solution space for the DESIGNER (see WayneM above).

But the real issue is bigger than simply the concept of language, whether you slavishly cling to one or proudly master many. The issue is tools. Language can be a big part of that, but the issue goes way beyond syntactic detail. Many, if not most, of the popular languages to day are derivatives of C. C syntax proved to be such a strong base, that numerous language designers followed suite. Many of the above posts, touting their polyglot experience, list few if any languages, syntacticly rooted in anything other than C! Sorry guys that is not polyglot. On the other side of that coin, if you are serious about the code that actually runs, you have multiple options for x86 code-gen in an amazing array of compilers, COBOL, Fortran, several variations of the C family (not to mention their + and ++ libraries), x86 assembly, Lisp, Forth, and Ada.

The issue is tools, and programing environment, code management tools, project management tools, debug tools, make tools, cleanup tools, publish and install tools, ALL have this Sapir-Whorf like impact on the practitioners of the software arts. The more tools in your tool bag the closer you come to being a craftsman. Or as my graduate instructor in compiler theory loved to say,"When you are holding a hammer, it is amazing the number of problems that begin to look like a nail."

vinayind 5-May-09 11:01pm
I ask, "What is the value addition in learning another programming language?" In all these years in the industry I have come across some 15 programming languages only to realize that a design can be realized using any of those languages. As a matter of fact, if I had learnt 15 spoken languages I would have been a millionaire by now! Its an irony that IT engineers are expected to know multiple programming languages to even survive in this industry.

Sign up to receive InfoWorld Resource Alerts

Subscribe to the Today's Headlines: First Look Newsletter

Find out what will be news for the day, with our first-thing-in-the-morning briefing.

©1994-2009 Infoworld, Inc.