Saturday, August 06, 2011

Learning again the computer science & engineering stuff

Feels like breathing fresh air during a morning walk on a tree lined avenue.

From the days of my engineering almost 14 years, the computing technology has evolved to a great extent. The fundamental principle of thermodynamics that the entropy of a system keeps increasing leads to ever increasing complexity however much we try. By creating a new way of doing things or finding new thing, we add to intellectual complexity as we have one more item to consider. These new things implicitly lead to more complex systems. For that matter "ignorance is bliss" is a truism. The key to understand is that these new things essentially create new paths and hence add to combinatorial explosion. If these new things completely replaced existing ITEMS (yes, plural), then these reduce the complexity.

I don't think that happens as the technology itself accelerates to the creation of new items.

Why such a long preamble?

Because The thought that we are already in the era of parallel processing at mobile phone level hit me hard. The multicore computing systems would possibly now require almost everybody to be aware of the parallel processing (guys please forget concurrent processing). These will change computation in fundamental ways because till date all computation except in the research areas has been single core. All system software, & application software is geared towards it. The OS concepts that we learnt talked about CPU scheduling for only one processor.

The parallel processing is a whole new learning for me as I need to go back and relearn the concepts of parallel processing. I was always a big fan of very nice multithreading support in Java and loved to create multi-threaded programs. (I remember one incident - our team wrote a multi-threaded data transfer as well as processing application so well that whenever it used to run, it pushed the CPU usage to 100% and that caused crisis saying that we are hogging the CPU time without letting other applications to run - How can that happen on a preemptive multi-tasking system I couldn't fathom :-)). So I love to see what is left to be done yet at the level of applications. This definitely will need extensions to all language libraries with implementations of parallel versions of algorithms to make full use of current day desktop computers.

Similarly the need to process massive quantities of data is leading to the need of everybody to become aware of the concept of distributed computing.

I am headlong in to learning these new things so that I don't become a dinosaur. Yes, I have become pretty good at managing, but without the knowledge of current day evolving trends I would not be able to compete with the best. I always wish to compete and create best results and win.

The idea of looking at these trends which are very powerful and beautiful is exhilarating and refreshing.

No comments: