APLawrence.com -  Resources for Unix and Linux Systems, Bloggers and the self-employed

Choice of programming language in today's computing world


© February 2011 Girish Venkatachalam
Girish Venkatachalam

Girish Venkatachalam is a UNIX hacker with more than a decade of networking and crypto programming experience. His hobbies include yoga,cycling, cooking and he runs his own business. Details here:

https://gayatri-hitech.com
https://spam-cheetah.com

Generally it is thought that programming languages can do anything that is thrown at it. This is not true. Programming languages have their strengths and weaknesses. Scripting languages are called as high level languages. You can't use them inside the OS kernel.

Everyone knows that kernel coding is to be done in C. But for userland Java or Perl or Python or C# or any such thing like VB or whatever else would do too.

And then there are plenty of languages meant for specific tasks like SQL for databases and postscript for printing. And you have some legacy languages like COBOL and Fortran.

I am not old enough to comment on the history or the evolution of programming languages in general. But I sure can tell something about how the choice of a programming language affects a particular tool or system as a whole.

It is interesting to note that Bittorrent was written in Python and Vipul's razor was written in Perl. And nearly every great tool I use in the UNIX world is invariably written in C. There is CVSup which was not C but then csup came up later.

SpamAssassin is written in Perl for spam filtering using Bayesian probability and statistics and then Bogofilter came along which is a C implementation of the same.

You have nearly every problem solved in a favorite programming language that the author chooses. I normally just look at https://search.cpan.org/ whenever I am faced with a new problem.

I love Perl but it does not mean that I am biased towards it. It is just that the community around Perl is much more stronger and better organized.

For reusable components in C or even to look for a library or an API is much harder. It is indeed possible but the Perl community is more helpful in this regard. The man pages have enough examples for you to get started quickly.

In the case of C the work is mostly done all on your own. It allows far greater power and flexibility but also far greater dangers. And performance is increasingly becoming irrelevant in the choice of a programming language or technology.

In fact if you look at the way virutalization has caught on, people run VMs as though they run just another application. So computing power is so plentiful today that C's raw speed is not the primary motivation unless of course it is an embedded system. Even there today we can boast of huge processing power.

So what really determines the choice of a language?

It has got to do with what the author already knows and is trained in. Few people normally learn a new programming language just to write a new tool. It is governed by various other factors the most relevant of which is this:

How quickly can I get my job done?

For instance if Bittorrent were to be written in C it would have taken longer. Or to do SNMP ASN1 coding it would be very hard. Agreed, there is an ASN1 library for C but even then certain problems lend to certain choices.

Lua is very popular in the gaming world and embedded systems. It is highly friendly with C as it interoperates really well. Why? Even Python and Perl can talk to C and vice versa. Because all these languages themselves are written in C.

Normally real good programmers think from a level of solving real life biz problems. For instance you could be developing a firewall or a web content filter application or writing a web proxy. Or you could be writing a mathematical or a physics or a biology program.

Concepts like object oriented programming and portability of code are not really tied to languages. Multithreading is not tied to languages either. Certain things are easy in certain programming languages; that is all. For instance Perl allows both object oriented and functional programming and with equal ease.

Today iPhone apps and facebook applications are written in Objective-C and web programming constructs respectively.

Web programming that is really sophisticated is not so much about programming languages as it is about design and understanding the big picture. So programming is not just about translating some thought or algorithm into practical working systems.

It is very closely tied with design and it is almost impossible to come up with good quality code without the adequate experience in design and testing. And of course debugging.

Experience and trial and error will take you much farther than the greatest computer science education or lab projects.

running cheetah
SpamCheetah
Stop spam dead in its tracks!

Got something to add? Send me email.





(OLDER)    <- More Stuff -> (NEWER)    (NEWEST)   

Printer Friendly Version

->
-> Choosing a Proggramming Langauages


Inexpensive and informative Apple related e-books:

Take Control of High Sierra

Take Control of OS X Server

Sierra: A Take Control Crash Course

El Capitan: A Take Control Crash Course

Take Control of iCloud, Fifth Edition




More Articles by © Girish Venkatachalam




Printer Friendly Version

Have you tried Searching this site?

This is a Unix/Linux resource website. It contains technical articles about Unix, Linux and general computing related subjects, opinion, news, help files, how-to's, tutorials and more.

Contact us


Printer Friendly Version





The difference between e-mail and regular mail is that computers handle e-mail, and computers never decide to come to work one day and shoot all the other computers. (Jamais Cascio)




Linux posts

Troubleshooting posts


This post tagged:

Programming



Unix/Linux Consultants

Skills Tests

Unix/Linux Book Reviews

My Unix/Linux Troubleshooting Book

This site runs on Linode