You are on page 1of 4

Developing software is more important that hardware

With the Moores law reaching its limit of a theoretical atomic sized transistor, hardware development will soon come toater a standstill until a brand new radical technology is invented. Until then, It is time for software developers, like myself to focus on writing programs that are efficient by design and dont rely on heavy hardware. The Moores Law, ironically, isnt a law. Its an observation put coined by Carver mead. This Law is named after Intel cofounder Gordon Moore, who in 1956, observed that over the history of computing hardware, the number of transistors on integrated circuits doubles approximately every two years. He described this trend in his paper. The paper noted that the number of components in integrated circuits (ICs) had doubled every year from the invention of the integrated circuit in 1958 until 1965 and predicted that the trend would continue "for at least ten years". Even though he predicted only 10 years, this trend has been eerily accurate and is still followed. Not only is the trend still followed, it is also used by researchers and developers to set targets for future projects. Such an exponential trend is followed not only in transistors and ICs, but also in memory density, processing speeds and even the number of pixels in a digital camera. However, as Gordon Moore stated in an interview in 2005, such a trend cannot last forever, The nature of exponentials is that you push them out and eventually disaster happens. It is predicted that by 2015, the development process will slow down. Instead of taking 2 years to double the number of transistors, itll now take 3. Not only this, since this is a physical trend and not a theoretical

Aditya Balwani
SBUID:109353920

1|Page

trend, it also has the fundamental limit till which it can follow the rules of the physical world; an atomic sized transistor. It is predicted that by 2025, each transistor will be the size of an atom. So what happens when we reach that limit? Does the progress of hardware technology come to a standstill till we can develop a brand new technology that can replace an IC? People have been researching IC replacements since ICs were invented and we still have made no progress, so even if we do manage to make a replacement, the time it takes to bring it up to par with current technology and roll it out on all devices will be extensive. So do we move to bigger chips? If so, what happens to our smartphones and laptops? Can we fit big chips in small devices? Of course not. That just leaves one alternative; better software. Current software trends rely heavily on hardware capabilities. Take a new app or software and run it on an old device, and it will give you loads of problems, glitches, lag issues etc. This is because that software wasnt designed for slower hardware. It isnt efficient in design and hence needs more processing power and RAM storage, or other hardware resources. This is why the software developers need put in a little more effort to make their design better instead of relying on heavy machinery. Another example is the popular programming language known as Java. When you run a Java program, it creates a virtual system inside your operating system called a Java V irtual Machine or JVM. This JVM is created so that the program can be run on any system, Windows, Mac, Linux etc. The nature of the JVM and its ability to adapt to any environment is great advantage to all developers but at the same it often needs many resources. At the same time,

Aditya Balwani
SBUID:109353920

2|Page

older version of C++, designed to run on a single system, are still one of the fastest programs in existence and continues to require extremely low resources. Another critical factor is memory management, which depends on the application itself and also the Operating System. For example, take the application Whatsapp Messenger and compare their memory usage on Android and Windows based Systems. On Android, when running, Whatsapp can take upto 80MB of RAM and 20 40MB of memory when in background. At the same time, on Windows Phone OS, Whatsapp barely takes upto 8MB of RAM. A Windows Phone OS smartphone can run smoothly on even 128MB of RAM, but an Android struggles with even a GB. The difference is their RAM management systems. This proves that our softwares have a lot of room to grow. Any developer who says his program is perfect is telling a bold faced lie. There are more efficient ways of doing the most basic Hello World program. The key is identifying them. Figuring which lan guage, algorithm or logic is the most efficient should be the first and most import step during the whole development process. Another factor behind why the consumption of resources of an Android app is much higher than its iOS or Windows counterparts is the way the operating system is designed. Android is designed around the Dalvik runtime environment which is basically a virtual machine inside the existing machine. In Android, an app is never technically installed, only its source code and supporting files are stored. When you run an app on Android, the system opens the application package which contains the source and all the supporting files and compiles them and runs them on the virtual machine at the same time. If the package is encrypted, the system also decrypts it at the same time, leading to 3 layers of processing. This
Aditya Balwani
SBUID:109353920

3|Page

system does have its advantages though. Since the apps run on a virtual machine, they can run on essentially any hardware without major issues. On iOS or Windows, the applications are already compiled. This means that they are a lot faster, almost 11 times as fast according to some tests, but have the limitation of working on limited devices. This is why iOS only works on iPhone and other apple product. Consistency of hardware design allows them to make their software more efficient. This further solidifies how much software needs to grow in order to be less dependent on hardware, something Google is now trying to implement in their new Android 4.4.1 with the new ART Environment, designed to replace the Dalvik Environment. Unlike Dalvik, ART also uses a pre compiled app system, without losing the hardware independence Dalvik Virtual Machine offered. A good architect or civil engineer is one who designs a beautiful structure that can stand by itself, not one that needs heavy steel reinforcement. The same concept should apply to next generation of software developers, or Software Architects.

Aditya Balwani
SBUID:109353920

4|Page

You might also like