tags:

views:

64

answers:

2

The other day i stumbled onto a rather old usenet post by Linus Torwalds. It is the infamous "You are full of bull**" post when he defends his choice of using plain C for Git over something more modern.

In particular this post made me think about the enormous amount of abstraction layers that accumulate one over the other where I work. Mine is a Windows .Net environment. I must say that I like C# and the .Net environment, it really makes most things easy.

Now, I come from a very different background made of Unix technologies like C and a plethora or scripting languages; to me, also, OOP is just one, and not always the best, programming paradigm.. I often struggle (in a working kind of way, of course!) with my colleagues (one in particular), because they appear to be of the "any problem can be solved with an additional level of abstraction" church, while I'm more of the "keeping it simple" school. I think that there is a very different mental approach to the problems that maybe comes from the exposure to different cultures.

As a very simple example, for the first project I did here I needed some configuration for an application. I made a 10 rows class to load and parse a txt file to be located in the program's root dir containing colon separated key / value pairs, one per row. It worked.

In the end, to standardize the approach to the configuration problem, we now have a library to be located on every machine running each configured program that calls a service that, at startup, loads up an xml that contains the references to other xmls, one per application, that contain the configurations themselves.

Now, it is extensible and made up of fancy reusable abstractions, providers and all, but I still think that, if we one day really happen to reuse part of it, with the time taken to make it up, we can make the needed code from start or copy / past the old code and modify it.

What are your thoughts about it? Can you point out some interesting reference dealing with the problem?

Thanks

A: 

Abstraction makes it easier to construct software and understand how it is put together, but it complicates fully understanding certain issues around performance and security, because the abstraction layers introduce certain kinds of complexity.

Torvalds' position is not absurd, but he is an extremist.

Charles Stewart
A: 

Here's a similar question: http://stackoverflow.com/questions/1992279/abstraction-in-todays-languages-excited-or-sad.

I agree with @Steve Emmerson - 'Coders at Work' would give you some excellent perspective on this issue.

Jim G.