Saturday, February 23, 2013

Why OO Sucks

(by Joe Armstrong)

When I was first introduced to the idea of OOP I was skeptical but didn’t know why – it just felt “wrong”. After its introduction OOP became very popular (I will explain why later) and criticising OOP was rather like “swearing in church”. OOness became something that every respectable language just had to have.

As Erlang became popular we were often asked “Is Erlang OO” – well, of course the true answer was “No of course not” – but we didn’t to say this out loud – so we invented a serious of ingenious ways of answering the question that were designed to give the impression that Erlang was (sort of) OO (If you waved your hands a lot) but not really (If you listened to what we actually said, and read the small print carefully).

At this point I am reminded of the keynote speech of the then boss of IBM in France who addressed the audience at the 7th IEEE Logic programming conference in Paris. IBM prolog had added a lot of OO extensions, when asked why he replied:

“Our customers wanted OO prolog so we made OO prolog”

Wednesday, February 13, 2013

What is the exact difference between parallel and concurrent programming ?

Parallelism is about speeding things up, whereas concurrency is about dealing with simultaneity or nondeterminism.

When we talk about parallel programming, typically we are interested in reducing execution times by taking advantage of hardware’s ability to do more than one thing at once, whether by vectorization, instruction-level parallelism (superscalar architectures), or multiprocessing (multiple cores or processors). Parallel programming does not imply a particular programming model, and many techniques and languages for parallel programming are at various stages of development or adoption.

Saturday, January 26, 2013

Ten Things I Hate About Object-Oriented Programming

by Oscar Nierstrasz

Boy, I some days I really hate object-oriented programming. Apparently I’m not the only one. In the immortal words of Edsger Dijkstra: “Object-oriented programming is an exceptionally bad idea which could only have originated in California.”

Well, I’m not normally one to complain, but I think it is time to step back and take a serious look at what is wrong with OOP. In this spirit, I have prepared a modest list of Ten Things I Hate About Object-Oriented Programming.

Monday, January 14, 2013

Scaling & Availability Anti-patterns

Most of you are familiar with patterns in software development. If you are not a great reference is Patterns of Enterprise Application Architecture by Martin Fowler or Code Complete by Steve McConnell. The concept of a pattern is a reusable design that solves a particular problem. No sense in having every software engineer reinvent the wheel. There is also the concept of an anti-pattern, which as the name implies, is a design or behavior that appears to be useful but results in less than optimal results and thus something that you do not want engineers to follow. We’ve decided to put a spin on the anti-pattern concept by coming up with a list of anti-patterns for scaling and availability. These are practices or actions that will lead to pitfalls for your application or ultimately your business.