Scripting Languages Your Developers Want to Use
The .NET development community is not without its set of scripting language enhancements. Among the most prominent is F#, which began as a Microsoft research programming language "to provide the much sought-after combination of type safety, succinctness, performance, expressivity and scripting, with all the advantages of running on a high-quality, well-supported modern runtime system." Microsoft is now turning F# into a fully-supported language on the .NET platform.
C# MVP Tomas Petricek, author of Real-world Functional Programming in .NET is working on a book about F#. Petrick says F# encourages the functional immutable style of programming, which is suitable for writing concurrent and distributed programs that can be easily tested. Moreover, it supports the declarative style of programming. "The way I like to talk about declarative style is that it allows you to divide the work between senior programmers that develop some 'smart' library for solving problems and junior programmers that use it to solve daily problems," he says. "An example of this may be List module in F#, but the LINQ libraries in .NET 3.5 follow the same functional principles."
Many programming languages make it easy to write something small that grows into a larger app, but they present problems when the software needs to turn into a real library with a strong logical structure. "F# gives you an excellent way for doing this," says Petricek. "You can start with simplicity (just as in dynamically-typed languages such as Python or Ruby), but end up with a very robust program (just as in C# or Java). The key benefit of F# is that the transition is completely fluent without having to do any painful steps in between. In fact, you don't need to rewrite any code that you wrote at the beginning."
Bulgarian ASP.NET developer Mihail Kochanov sees additional benefits for F#. "I believe learning F# makes me a better C# programmer," he says, explaining that F# made it easier to understand LINQ. He's also interested in F# for its parallel library context. "If you have stuff you might want to run parallel in the future, it might be good to be ready," he says.
Boo proclaims on its home page that it is "a new object oriented statically typed programming language for the Common Language Infrastructure (CLI) with a Python-inspired syntax and a special focus on language and compiler extensibility."
Josh Coffman, lead developer and founder of Computerist Solutions, would lobby for Boo particularly if he were to implement a domain-specific language (DSL). "It's not an interpreted language because it's compiled to CLI," he says. "Because it runs on .Net, you have all the power of .Net-only it's more flexible, and you can use it as a script or a compiled program." Boo has plenty of technical advantages, too, he says, such as being able to manipulate the compiler output during compilation. "The space indented syntax is kinda fun," he adds.
Matthew Fowle, software developer at Useful Networks, says "A computer language is a tool for making software; Boo as a computer language plays well with existing tools (the .Net ecosystem), but it goes further by allowing developers unprecedented power in developing their own language tooling. Most languages work around a fixed set of concepts; Boo works by giving developers the ability to craft and shape their own language concepts. Further, Boo syntax is wonderfully wrist-friendly, and comes with a variety of interpreters to accelerate rapid development."
I don't mean to imply that these up-and-coming languages are the only ones worth paying attention to. There are several others that IT managers should be aware of-and proponents are invited to add their suggestions in the article comments. Here's a few bonus languages.
Among the interesting languages are Factor, which MacIver described as "modernized Forth, with better support for functional programming."
Software engineer Anthony Cook would prefer to use REBOL, a language that gains its advantage through lightweight domain-specific sublanguages and micro-formats. Cook appreciates Rebol's "dialects" which let you create your own domain-specific languages. "One guy even built a virtual machine Assembly language interpreter as a Rebol dialect to teach it to his students," says Cook. It's also tiny, self-contained and cross platform, so code written for Windows runs exactly the same on Linux or Mac OS X. "It has a built in GUI library, the ability to send e-mails and access Web resources built in, with no includes, in only a couple of simple lines." The size of the executable program is small too, he says. "To do the same thing in Java would take hundreds of megabytes; in C it would take tons of includes and many lines of code to do the same thing."
It's fast, too. Cook says, "I'm used to using Ruby all day, and it's one of the slowest languages out there. REBOL is a Forth-stack based yet dynamic prototype-based language that runs almost as fast as native C code."
Software architect David Brabant would try to convince the boss to let him use Lisp. "Lisp is elegant, Lisp is compact, Lisp is powerful, Lisp is reflexive, Lisp allows me to write my DSL in a snap, using a few macros." But, he sighs, "In the end, I would be forced to use PHP like anybody else."