2013-10-14

Haskell comments

Stop wasting billions of dollars using the wrong software languages - October 11, 2013 Aaron Contorer

http://venturebeat.com/2013/10/11/stop-wasting-billions-of-dollars-using-the-wrong-software-languages/

Aaron Contorer created FP Complete, a commercial Haskell IDE and deployment platform.

Software drives the innovation economy, from big data and software-defined networks to mobile applications and social media.

Yet literally billions of dollars are wasted due to excess project failures, bug fixes, and maintenance nightmares.  Surveys and studies have consistently shown that 50 to 75 percent of software projects are consumed by bug fixes and maintenance.  One underlying root cause of this significant problem is the use of traditional imperative languages (Java, C family, Python, Ruby etc.), whose manual, low-level approach is very error-prone and generates spaghetti code that eats up the backend costs.

High level but hands-on

This problem is relatively unknown and perpetuated because the vast majority of programmers, reporters, and managers do not know of a viable alternative and just accept  that this is the way things always are. They try to improve around the edges with better tools, Agile Development, better requirement definitions etc. These aren’t root solutions; they are workarounds.

The Haskell alternative

The solution is Haskell, the purest functional language that has been in development for over 20 years. Haskell’s approach is fundamentally different from the imperative languages dominant today.  Haskell programs are a series of high-level generalizable functions that define what the program is intended to do.  A strong type safety and inference system produces code with little side effects.  The programmer focuses on the objective, the best design and correct logic to meet a specific desired outcome.  The compiler produces clean, concise and correct code from the outset.  Haskell produces many technical benefits:

Cuts code size by 50 to 80 percent

Dramatically cuts errors

Significantly reduces time for finding and fixing errors at compile time, not run-time

Easy code maintenance and rework without introducing new errors (no more spaghetti code)

Much more secure, many fewer holes to exploit

Built-in concurrency and parallel processing boosts performance

These features generate the following game-changing strategic benefits:

Accelerates time to market by 30 to 50 percent

Lowers cost by 25 percent or more

Increases programmer productivity by 30 percent or more

Improves product quality

Haskell applied

While Haskell is a general-purpose language that can be applied everywhere, it is only beginning to be used commercially. Two commercial applications Haskell is ideal for stand out:

Enhancing existing software environments such as Ruby and Python.

Proprietary business logic and data analysis.

Enhancing existing software environments such as Ruby and Python

Ruby and Python are popular because they enable quick prototyping, especially in web apps. But they sow the seeds for major future problems in performance, reliability, scalability, and dependency making maintenance a nightmare. The problems are well-known and there is ample evidence that Haskell can solve them:

After experiencing high failure rates with Ruby, Janrain began using Haskell and was able to cut 75 percent of the time they spent on bug fixes. They switched their backend from Ruby to an entirely Haskell-based platform.  Phillip Weaver, senior engineer: “We didn’t have to worry about breaking our Haskell code. We try not to touch Ruby very much, out of fear of crashing the API.”

For Bump, Haskell easily enabled them to grow their application from one based on 6 to 8 cores to more than 250 cores over 70 to 100 machines. Bump started out on Python, but switched to Haskell after experiencing high errors and spaghetti code running amok. Jamie Turner, lead developer: “The Haskell compiler provides multiyear life of the code other solutions like Python couldn’t offer, while scaling up to support millions of users.”

Proprietary business logic and data analysis

This domain fits Haskell’s algebraic and logical foundations perfectly. You’ll see it being increasingly adopted in enterprises, especially in data-intensive industries and domains such as financial services, Big Data apps, Big Pharma and biotech, oil and gas, and consumer data. Barclays’ “Functional Payout Framework” is written in Haskell. One large bank rewrote a large Java application in Haskell and reduced the code from 5 million to 1 million lines.

It’s all about speed — get to market in half the time

Another noteworthy Haskell benefit is performance. Silk credits Haskell for getting them to market in less than half the time it would have taken otherwise. Haskell allowed them to concentrate more on innovation and actual programming, and much less on repetitive testing and debugging. If an early-stage startup has a $100,000 per month burn rate, this acceleration could be the difference between life and death.

The New York Times recently ran a blog post on how they used Haskell to present fashion week, which is a very processing-intensive app given the massive amounts of images and analysis involved. Erik Hinton the developer wrote, “We chose Haskell because we anticipated doing a large amount of fine-tuning to get the analysis to work well.” Compared to the Ruby prototype, the Haskell code ran considerably faster, in part because “the mathematical assurances made by Haskell’s type system meant they could automatically parallelize the operation over multiple CPU-cores without changing a single line of code.” Bottom line: Haskell enabled this intense data analysis app to crank through hundreds of full-resolution photos a minute, doing a considerable amount of statistical analysis on each.

Haskell is changing how we think about software development

Haskell is the new way to make software that changes the economics of software development. Very recently Dr. Dobb’s editor-in-chief Andrew Binstock tweeted “I’ve noticed several times when someone says, ‘X really changed the way I think about programming,’ frequently X=Haskell.” He’s not alone. Karthikeyan Mani, Cofounder of Byteally in India told us “This is the natural way to program. It’s the first time I am at peace when I code. With Ruby, it’s always headaches and nervous times.  We are moving away from all traditional programming.”

Comments 

Jeffrey Johnson • 3 days ago

This is possibly one of the silliest articles I've ever read. Did it come through a time warp from Usenet circa 1994? "My language is better than your language doesn't help anybody," and I'd be willing to be money that the *real* reason Haskell rewrites fix so many problems is that the programmers weren't trained on imperative or object-oriented languages correctly in the first place. Haskell and functional languages are such a profound jump they require a rethinking of basic assumptions, a retraining, and most of the proponents of functional languages, the ones who write the HOWTOs, are people who knew how to program well in the first place. Let Haskell get some traction with something beyond trendy web startups and there will be just as much horrible Haskell code in the world as there is Python. Probably still more horrible Ruby, but that's a cultural thing.

EDIT: Just noticed the author has a financial interest in people using Haskell. I was wrong, this isn't one of the silliest article I've ever read, it's an advertisement.

.END

No comments:

Post a Comment