My Thoughts & Views

Archive for the ‘software development’ Category

I have been observing the developments in Processor Technologies, and now I am really excited with the Future of Computing with the shift from single core to many core processor technologies.

As you all know, Moore’s Law tells us that, the number of transistors on an integrated circuits doubles every two years.

Now the so-called “many core shift” is happening. It’s not a thing of the future and it will change our developers’ life.

What’s the many core shift?

This evolution has reached its physical limits (clock speed, power consumption, etc.).
Instead of building faster and more complex CPUs, the manufacturers started placing more CPUs, read cores, on a chip.

It started 2006 with Intel’s dual cores, today you won’t find a single core desktop machine anymore. High end consumer machines come with quad cores, and servers with 16 cores (delivered as 4 quad cores). Starting 2006 with 2 cores, five years from now we will have between 32 and 128 cores.

What does it mean?

Well, it probably means that today’s software runs a bit faster. Not much, certainly not the 32 times faster a 64 core machine is supposed to be compared to dual core. Why is that? Well, have a look at the following task manager of a 64 core machine:

Now look at your own desktop and count the open applications. Outlook, Word, PowerPoint, Internet Explorer, Acrobat Reader, Firefox, Visual Studio? All the applications utilize 1 to two cores and Most of today’s applications simply are not capable of employing these cores appropriately. Consequence: In order to leverage these cores we have to change the way we write our software!

You may ask, do we actually need that kind of processing power? And if so, how do we use it?

For first question the answer is yes, it is needed for Games, Video Conversion, File Compression, Graphics etc.

And for second question we need to know that there is a concept called Multithreading.

And “Most developers have avoided multithreading altogether. And those who did do multithreading probably did it just for optimizations.” So, now is the time we need to have multithreading in the mainstream of application development.

And with that in mind Microsoft is developing Visual Studio 2010. And I believe it will open up new possibilities.

I am really excited to work on Visual Studio 2010 and want to utilize the multi-core.

Let me know what you think about all this.

I have been observing the developments in Processor Technologies, and now I am really excited with the Future of Computing with the shift from single core to many core processor technologies.


As you all know, Moore’s Law tells us that, the number of transistors on an integrated circuits (IC) doubles every two years. Now the so-called “many core shift” is happening. It’s not a thing of the future, it is here already and it will change our developers’ life as we know it today.

What’s the many core shift?

This evolution of doubling the number of transistors on an IC has reached its physical limits (clock speed, power consumption, etc.). Instead of building faster and more complex CPUs, the manufacturers started placing more CPUs, read cores, on a chip.

It all started 2006 with Intel’s dual cores, today you won’t find a single core desktop machine anymore.

High end consumer machines come with quad cores, and servers with 16 cores (packed as 4 quad cores). Starting 2006 with 2 cores, five to six years from now we will have between 32 and 128 cores machines.

What does it mean?

Well, it probably means that today’s software runs a bit faster. Not much, certainly not the 32 times faster a 64 core machine is supposed to be compared to dual core. Have a look at the following task manager of a 16 core machine:

Now look at your own desktop and count the open applications. Outlook, Word, PowerPoint, Internet Explorer, Acrobat Reader, Firefox, Visual Studio etc. All the applications utilize 1 to two cores and Most of today’s applications simply are not capable of utilizing these cores appropriately. Consequence: In order to utilize these cores we have to change the way we write our software!

You may ask, do we actually need that kind of processing power? And if so, how do we use it?

For the first question the answer is yes, it is needed for Games, Video Conversion, File Compression, Graphics etc.

And for second question we need to know that there is a concept called Multithreading.

And “Most developers have avoided multithreading altogether. And those who did do work on multithreading probably did it just for optimizations.” So, now is the time we need to have multithreading in the mainstream of application development.

And with that in mind Microsoft is developing Visual Studio 2010. And I believe it will open up new possibilities.

I am really excited to work on Visual Studio 2010 and want to utilize the multi-core.

Let me know what you think about all this.

Reference:

  1. http://www.intel.com/products/processor/index.htm
  2. http://www.digital-daily.com/cpu/new_core_conroe/index1.htm
  3. http://www.intel.com/products/desktop/processors/index.htm?iid=processors_body+dt_core

Couple of hours ago i read a very interesting post related to Software Project Management on Coding Horror.

The 90% done sysndrom can be stated like this: The first 90% if the project takes 90% of the time & the last 10% takes the other 90%.

If you ask software engineers about how the compiler works? Most of them give you an alien look.

Here is how the compiler works :

— It is slowest sorting algorithm in use
— It is considered as Most In efficient Sorting Algorithm.

How it works?

The basic idea is to compare two neighboring objects, and to swap them if they are in the wrong order. This process is repeated until it completly sorts the list. This causes larger values to “bubble” to the end of the list while smaller values “sink” towards the begining of the list.

C# Code :

// integers array to hold values
private int[] a = new int[100];

// number of elements in array
private int x;

// Bubble Sort Algorithm
public void sortArray()
{
int i ;
int j ;
int temp ;

for( i = (x 1); i >= 0; i)
{
for( j = 1; j <= i; j++ )
{
if
( a[j-1] > a[j] )
{
temp = a[j-1] ;
a[j-1] = a[j] ;
a[j] = temp ;
}
}
}
}

In Computing, a fundamental problem related to lists is Sorting (or Ordering) them in Ascending or Descending.

In this series i would like to explore the Sorting Algorithms from C# point of View.

Following is the list of Commnon Sorting Algorithms in use

  1. Bubble Sort
  2. Insertion Sort
  3. Selection Sort
  4. Quick Sort
  5. Shell Sort
  6. Heap Sort
  7. Merge Sort

Here is the list of Software Protection methods commonly in Use

  • Copy Protection
  • Trial/Demo
  • Serial Number
  • Hardware Key
  • CD Check
  • Nag Screens & Adware
  • Code Obfuscation
  • Encryption
  • Self Modifying Code
  • Hardware Dongle