Almost any device today has software on it. This includes laptops, Ultrabooks, cell phones, TV sets, Set-Top-Boxes, Microwave Ovens, Cars, Medical Devices, etc. Software is created by software companies and software developers. I have seen only a few software companies who really consider all the elements of software. Most times understanding the system is the realm of the architect and is based on some unique art. Whenever I hear "art", it means that we just don't have the patterns written down yet. This is why I am publishing this post.
I'd be surprised if you were and would love to hear about it.
The answer is "almost". There are two types of bugs: Reliability and Usability.
C and C++ languages are based on mathematical expressions. So much so that 1; is a legal operation in C\++. Other languages such as C#, Java, VB and Delphi also use mathematical operations to before actions. For example:
MyInterger = GetCount() + GetLength()
I am writing this at the airport, just coming back from the Intel IDF event. I keep hearing that we have "Lock Free" solutions for all sorts of problems. I think that this is a really bad choice of words. Let me try to explain why:
As you may have already read in a previous post called Personal Review of Intel Under-NDA Sandy-Bridge Event I held the last session in an Intel-Under-NDA event. The presentation was called Performance and covered the different aspects of parallel computing and also the new Sandy Bridge AVX Instructions.