Can a Programming Language Make You Smarter?

Or can a language change the way you program? In an article in the Huffington Post, Aaron Contorer says it can. The language? Haskell. (Note: Contorer is the CEO of a company that provides Haskell tools and a Haskell IDE on a subscription basis.)

Haskell was named after Haskell Brooks Curry, an American logician primarily known for his work on combinatory logic. He seems to have been quite influential in the programming community: Brooks and Curry are also programming languages named after him, perhaps not surprisingly—combinatory logic is considered to be one basis for functional programming languages. It would be interesting, though, to know if he holds the “most programming languages named after” record.

What is a functional language? An explanation is far beyond my mathematical ability, but one quality of functional languages is that they don’t look kindly on the assignment of changeable variables. As Miran Lipovaca says in his charming book about learning Haskell, Learn You a Haskell for Great Good, “You … can’t set a variable to something and then set it to something else later. If you say that a is 5, you can’t say it’s something else later because you just said it was 5. What are you, some kind of liar?

Haskell was developed beginning in the 1980s by a committee with a particular interest in lazy evaluation, an evaluation strategy in which an expression isn’t evaluated until it’s needed. For the Haskell community, laziness is one of the most important attributes of the language. Says Simon Peyton-Jones, one of Haskell’s developers, “We were much more consistent about keeping the language pure. You could have a pure, strict, call by value language, but no one has managed to do that because the moment you have a strict call by value language, the temptation to add impurities (side effects) is overwhelming. So ‘laziness kept us pure’ is the slogan!”

Peyton-Jones also addresses a common criticism of the language—many people seem to find it hard to learn. Most C++ programmers, he says, are going to have to go through a major mental rewiring to learn Haskell. “If you’re to be a purely functional programming language, you have to put up with that pain.”

So is it worth the pain? Contorer’s Huffington article links to an interesting survey that indicates that Haskell was the favorite among surveyed programmers, and the language about which programmers were mostly likely to say “learning this language significantly changed how I use other languages” and “learning this language improved my ability as a programmer.” Another survey on Hammer Principle ranks Haskell #1 among languages “likely to have a strong influence on future languages.” But there isn’t universal agreement about the value of Haskell in today’s software landscape.

The online magazine Help Kids Code has a clear explanation of the attributes of Haskell. This article is an interesting description of using Haskell to produce a Fashion Week layout for the New York Times.

Personally, I find the idea of learning a programming language from a book entitled Learn You a Haskell for Great Good pretty irresistible. There are lots of other online resources. Haskell can be downloaded free from Haskell.org, which has loads of good material, such as links to local user groups. FPComplete includes many tools, tutorials, and an IDE.

I’m hoping that learning Haskell will give me at least some idea what combinatory logic is, and, yes, that will certainly make me feel smarter!

About the Author

Lani Carroll is a writer living in Colorado Springs. She loves Colorado microbrews, TCM, and those rare moments when she can find the perfect word without resorting to a thesaurus. She’s the only freelance writer east of the Rockies who doesn’t have a blog. She does, however, have chickens. She can be found at her Google+ Profile.

A Programming Language for Connoisseurs: R

Which languages should a programmer know? There’s a surprising degree of consensus. C. C++. C#.  But how about visiting an entirely different part of the alphabet? How about learning R?

R was released in 1996. It’s open-source software that was developed by statistics professors Ross Ihaka and Robert Gentleman of the University of Auckland in New Zealand. They wanted a programming language that would be easy for their statistics students to use. R immediately attracted a large following. Now it’s a big player not just in academia, but in big business too.

R is one of that comparatively new breed, open-source software that’s being embraced by business giants. R’s open-source status means interesting packages are always being written for it. For social scientists, R has packages for social network analysis. It has packages for analyzing language. And, probably needless to say, there are packages for biology and physics. Finance is a big user of R, and there are lots of finance packages, such as derivatives analysis packages.

In a survey conducted a couple of months ago by KDNuggets, R was the most popular language for data analytics, data science, and data mining. R was the preferred language of 61% of readers, having grown 16% in popularity in the past year.

Google is a big user. It utilizes R to understand advertising trends and for analyzing search patterns. Google Developers has even released a series of instructional videos for R developers.

Is R a competitor for the giants? SAS is a statistical analysis language that was invented in the 60s and that’s the cornerstone of SAS Institute. SAS’s statistical muscle makes it a natural for big data. But in an interview in TechRepublic, data scientist David Smith of Revolution Analytics questions whether older languages are really suitable for today’s data needs.

He says, “SAS is one of the legacy systems from the 1970s with an enormous user base, so it is a major big data ‘incumbent.’ SAS is widely used, but the analytics it delivers originated in a different era that pre-dated parallel processing, server clusters, and Hadoop. Consequently, SAS is not suited for many modern and emerging big data requirements.” Smith says R was specifically developed to work with big data that’s being parallel processed, and “what might take you one whole week to do with SAS, can take just half a day with R.”

How do R’s developers feel about its success? Mr. Ihaka says, “R is a real demonstration of the power of collaboration, and I don’t think you could construct something like this any other way. We could have chosen to be commercial, and we would have sold five copies of the software.”

 

R is a favorite for generating the Mandelbrot setAnd graphs.

Computerworld has a fabulous introduction to R with links to all kinds of interesting goodies.

Want R? It’s easy to download. There’s also a popular IDE for R, R Studio.

 

Lani Carroll lives in Colorado Springs with her bees, chickens, and horses. She can be found at her Google+ Profile.