Slashdot Mirror


6 Languages You Wish the Boss Let You Use

Esther Schindler writes "Several weeks ago, Lynn Greiner's article on the state of the scripting universe was slashdotted. Several people raised their eyebrows at the (to them) obvious omissions, since the article only covered PHP, Perl, Python, Ruby, Tcl and JavaScript. As I wrote at the time, Lynn chose those languages because hers was a follow-up to an article from three years back. However, it was a fair point. While CIO has covered several in depth, those five dynamic languages are not the only ones developers use. In 6 Scripting Languages Your Developers Wish You'd Let Them Use, CIO looks at several (including Groovy, Scala, Lua, F#, Clojure and Boo) which deserve more attention for business software development, even if your shop is dedicated to Java or .NET. Each language gets a formal definition and then a quote or two from a developer who explains why it inspires passion."

1 of 264 comments (clear)

  1. Re:Language Independent? by Frater+219 · · Score: 4, Informative

    There are not just two kinds of programming languages. There are a whole bunch of different features that languages can have, that affect how programmers think about problems. I mentioned a few of them above, but consider:

    Extensible syntax. Some programming languages have extensible syntax; they allow you to define macros or "parsing words" that act like new syntactic constructs. Lisp is the usual example here, but some of the stack-based languages, like Factor, also have this property. C++, Java, and Python do not have it. Extensible languages allow programmers to create embedded domain-specific languages, moving the language's syntax closer to that of the problem domain.

    Type system differences. This isn't just static vs. dynamic typing, either. In Haskell, you create types that describe the meanings of the values your program will manipulate. In contrast, C++ programmers usually use types just to describe the implementation of data structures in memory. In Common Lisp you can talk about "the type composed of integers from 0 to 10".

    Density and function length. Languages that are very dense and do not have a lot of syntactic sugar tend to encourage very small functions. Languages that are more verbose tend to encourage longer functions, if only because it takes more words to get an idea out.

    Object system. There are many kinds of object-oriented languages: prototype-based ones like JavaScript, static ones like C++, multiple-dispatch ones like Common Lisp, and so on. Interfaces? Multiple inheritance? Mixins? Around methods? MOP? The presence or absence of these features greatly influences how you can use objects in a program.

    These are not minor differences. They dramatically change the way that you have to approach problems in order to write good code in a language. If you write Common Lisp as if it were C++, you are going to be producing bad code. If you write functions in Haskell that are as long as the ones you'd write in Java, you are going to produce incomprehensible code.