Programming languages polyglots: how many languages you know?

Post what languages (including scripting) you know, why and where you think that language is most usable. Also include libraries in which you're really good at (libusb, gtk, qt, etc).

assembly?
C or C++?
perl or python?
pascal?
bash or csh/tcsh?
opengl?
gtk or qt?
mono?

I have moved this to The Lounge since it's not destined to contribute much to our knowledge base.

It is really enough to "know" the language? I know dozens of languages. But I could currently earn a living writing in Fortran, assembler, C and ksh/bash/sh. I'm pretty good in awk, but I feel that doesn't count since I've never heard of an employer seeking an "awk programmer".

Onr thing to consider... two other languages I know were developed by former employers and not generally available. Do private languages count?

You're right. I only heard a request about awk in an interview for system administration.

Yeah everything counts. I was trying to do this like a poll but then the other users wouldn't be able to choose specifically what languages and why, only the number of languages and that holds no interest I guess.

For my work I need shell / Makefiles, Perl, and regular expressions in particular. Python would be good to know too, but I know Perl well enough that I never really had the incentive to learn yet another language, although I'm planning to fix that. Other than that, I stopped hoarding new languages after I noticed how I was able to get work done in Perl (and finally stopped believing you have to work in a compiled language in order to be taken seriously).

Back at University, I got good marks when I took C, Prolog, and Lisp courses -- oh, and Pascal of course, back then -- , but I could hardly impress anyone with my practical skills in those languages. Emacs Lisp is an environment I enjoy tremendously when I get to dabble with it.

Basic reading comprehension skills in C and C++ never hurt, but I would not know where to start solving a real-world problem, and would be extremely frustrated about the lack of expressive power and standard facilities. I guess a good palette of libraries would ameliorate that a lot, but I don't know any such libraries, and the few I've looked at left a lot to wish for. Ditto in spades for assembly, of course.

Never really seriously tried to tackle Java; somehow I get the impression that people who work in that language are not happy, even though the high amount of reusable libraries looks attractive from a distance.

I have mainly used C and C++, but before that it was Fortran, including various proprietary versions for HPC from Cray and CM. Perhaps the most obscure langauge I used back then was another HPC-specific one called Tao, which had some fun features like being able to define (not just overload) your own operators and syntax. I have also programmed in some assembly langauges which gives you a rather different perspective on things (goto not considered harmful!).

I used to do a lot of Perl and bash and csh and a bit of Python, but not so much now. I dabbled with Ruby too, just out of curiousity. I've never had to write Java, but I ocasionally have to read it.

I think that while it would be unusual to ask specifically for an awk programmer, having reasonable knowledge of a variety of such tools will make you more efficient in your work.

I agree with era that Emacs Lisp is enjoyable, but I haven't done any in ages; I have probably forgotten it all now.

Now there's something I found most interesting. I heard so many people say this, but none of them had a convincing explanation why it's considered harmful. For instance, the Linux Kernel uses it almost exhaustively. Could it be because of design or style? What do you think?

You must be too young to have heard of BASIC (yeah, I used to do that before assembly and C, of course) and Dijkstra's famous article. Spaghetti code used to be the norm.

Yeah, BASIC goes out of my time span. I'll try to find that article.

http://www.u.arizona.edu/~rubinson/copyright\_violations/Go\_To\_Considered_Harmful.html and see also Considered harmful - Wikipedia, the free encyclopedia

I see! So in very simple terms, the letter does not criticize goto by itself. It criticizes programmers that used to over use goto on their programs because that could lead to a less structured and harder to maintain program. Although I can agree with that, I often see people criticizing goto even if it's only used in a structured basis like packing all errors and returns in the end portion of a function:

int
whatever()
{
        int error;

        do_stuff();
        keep_doing_stuff();
        if (!this_is_right())
        {
                error = EINVAL;
                goto err;
        }
        bla();
        if (this_is_wrong())
        {
                error = EPERM;
                goto err;
        }
        while (...)
        {
                stuff();
                if (stuff2())
                {
                        error = EFAULT;
                        goto err;
                }
        }
        ...
err:
        do_this();
        do_that();
        do_whatever();
        return -error;
}

The article was very influential for many years, and of course, contemporary Western culture and media can't remember the "unless used correctly" part of any criticism.

Let's see, C, perl, ksh/bash/sh, and thats it! Rather a limited list. I have written code in assembly and LISP, but that was when I was in college, so its not really worth mentioning.

And I can actually feel my C skills falling off, the reason being that I haven't written anything worth mentioning in over a year! Plus perl/shell scripting makes you lazy...

15 years ago I had to do some reverse engineering to rewrite in cobol85 a program written in cobol74...
I have heard a lot about NOT using goto like mad and spaggetti code, but never imagined what it could be like until that nightmare day where I was given thig challenge...
I almost went through depression after a week, and so had the help of the top analyst to play " Train " with me for a an extra week just to understand how the damn thing worked...

To give you an idea the goto started on the first line already, you had 400 lines of code
finishing with stop run on last line...

It took me 6 weeks to rewrite the program and almost 1200 lines of code.
But anyone able to read english can maintain what I wrote, and the reading of the first page you knew what and how it worked.
You just cant imagine how bad you feel when as a confirmed programmer you have been reading 3 pages of code not understanding whats going on and still have not seen the end.

OK I learned ( and forgot..) basic and basic clones PASCAL MANTISSE (Mainframe) COBOL

Somehow I missed this thread, but let me see, when Era said Basic : was that :

Was that the right syntax ? I think I've used it on Atari.... Boy, I started learning computers with this language, 17 years ago. Apparently, I don't remember anything now :slight_smile:
Else, on the topic : perl and bash, this is what I use daily. I have some skills in reading and writing TCL/Expect code, and less Java, Python and C.

Over the past several months my interests returned to Java again after having essentially abandoned the language for several years. Back in 2004 I worked on a Web site that was composed of mostly servlets. I swore I wouldn't do J2EE again because it was simply too much code to program something really simple.

A few months ago I encountered a Java EE framework that I was impressed for so little code I need to write. It really changed my impression of Java EE and I think I have found a really good way to do Web applications.

I also do Perl, PHP and some C/C++ (though I tend to pretend I don't know C/C++ because I haven't written anything substantial for at least 7 years).

As long as i still did write programs i liked the "down to the bare metal" approach. I was gladly writing in assembly, FORTRAN/77 and thought of C as a great tool for rapid prototyping. I also knew my way around JCL and REXX. Object orientation was for quiche-eaters.

The only part which survived the years is the last: i still think object orientation is a big hype and 95% of the so-called object-oriented software could well have been written in a structured manner without any adverse effect. Most probably is, because - as the saying goes - you can write FORTRAN programs in any language: a lot of programmers still write ordinary C programs and the only thing ++ is the compiler.

In the last ten years i wrote solely in shell scripting languages. I prefer ksh over any other shell but can be patched to work with Bourne shell too. I dislike csh for its bugridden job control and other shortcomings and i dislike bash (no technical reason, just a matter of taste).

bakunin

I was expecting that, after reading your comparison SCSI vs. IDE :), no offense, just a light joke.

I'm with bakunin - GNU often overdoes bells and whistles. ksh is better, maybe in my case because I can't do "cute" things like add "seq" to further increase code obscurity.

The issue I have is porting scripts. We have old highly obfuscated Bourne shell scripts and I'm the only one with enough patience to diddle them into working when we migrate.
Even a minor change of OS release hoses these darned things.

I started C back in the 1970's when there was an explosion of languages, most of which have been relegated to the junk heap. However, I stuck with C, COBOL, assembler and whatever job control language was around. Due to lack of imagination I think. Went off on a tangent into VMS internals for a while, mostly assembler, then got back into unix in the late 1990's.

Where the languages thing got out of hand for me was in database 4GL's and 'languages' like PL/SQL and IDML. Those things have been like a blur. I worked for one company that was into the 'database du jour' concept and it was hell. Fortunately, with the exception of Oracle products, I've completely forgotten them... Mumps, Progress, Userbase, InTouch, ad nauseum. All of the marginal players in the database game.

Maybe the one or other likes the lighter side of this discussion. Here's something i stumbled across in my younger days:

Programming languages are like women

bakunin

bakunin gave a great idea Programming languages are like women. How about analogies for other languages like bash, php, sql, tcl, python, perl, java?

I challenge era to give an analogy for perl, mcnamara for bash, sysgate for tcl, cbkihong for java.

I'll try giving one for python.

Go, go, go!