Software application developers have (to a degree) been able to tap into greater power channels for their applications by relying on additional hardware resources (rather than refining their code as such) for some time now.
Specifically, programmers have been able to “just throw another core at it” and depend upon the availability of extra processing muscle power to drive forward what might at times be inefficiencies in their programming structures.
This is fine for a while, but ultimately all software application developers will need to follow a route towards greater productivity and efficiency despite the continued relevance of Moore’s Law and increasing multi-core processor capabilities.
Wolfgang Petersen is director of EMEA software solutions group developer relations division for Intel.
Running a department of 60 software engineers and marketing professionals all focused on enabling and optimising software for Intel architecture for developers, Petersen spoke to the Computer Weekly Developer Network to provide some insight into how a company always predominantly known its hardware manufacturing can talk so volubly to a software audience.
What Petersen is trying to drive at the moment is ensuring that the software industry gets its arms around multi-core programming… simply waiting for higher clock speeds and expecting your application to run 30% faster every 18 months does not work any more he argues.
Looking to work at how you can multi-thread your applications and re-design your algorithms to take advantage of new parallelism opportunities is an imperative in Intel’s vision of the future-programming universe.
From Petersen’s perspective, Intel has only addressed a fraction of the programming universe with the parallelism message so far. It will be impossible to get to the remainder overnight and it is important to remember that, for some applications, just one core is enough.
Can we now define as many as seven different types of programmers in Intel’s vision of the developer universe?
1 – Parallel programmers
The problem is that lots of software people say that they “don’t want to lose any time thinking” and so they just plough ahead without looking at the wider algorithmic architectural implications.
“When we write programs we used to care less about the underlying hardware. This was the job of the compiler and if you looked at the job the compiler had done afterwards it was sometimes surprising how elegant a job the compiler had done. But sometimes, and this could be as simple as a job related to an IF, THEN, ELSE statement loop, the compiler may not have engineered the structure in hand as intelligently as it might have done. A human programmer will always spend a moment trying to understand whether it is actually the THEN or the ELSE that is most likely to arise and find parallelism efficiencies to bring to light from that point,” said Petersen.
2 – Architectural programmers
Intel is working with 12,000 universities worldwide to initiate teaching on how to program in a multicore environment and incorporate more CPU architectural considerations into their work.
3 – Power centric programmers
Petersen is now shifting his focus to look also very closely at power optimisation because of the proliferation of tablets and smartphones.
“Intelligent software design has the ability to reduce power consumption if the program executes more efficiently (and therefore more speedily)… so this is about the ability to have instructions that are capable of switching off parts of the CPU periodically if they are not needed at a particular time to save power,” he said.
4 – Database programmers
Intel’s vision of an expanding universe of programmer types points us to database programmers also. Firms including Oracle, IBM and SAP are encouraging programmers to physically “code to their platform” inside dedicated environments with specific language controls.
5- Perceptual programmers
Petersen also extends the universe to include so-called perceptual programmers, an Intel term relating to any coders working in what the company has labelled the perceptual computing space where face recognition and hand gestures are incorporated into this still-nascent sphere of HCI and software application development.
Intel is now refining the SDKs intended for software application developers to be able to bring these technologies into being.
The company says that it believes ‘perceptual computing’ will now play a huge role in the future of human-to-computer interaction — and isn’t just a gimmick shown in movies like Minority Report.
6 – HTML5 programmers
HTML5 programmers also now emerge…
“The promise of HTML5 is that if you program to the correct standards it really will run on any machine – IF it is programmed correctly according to the HTML 5 standard. Program once and run on multiple devices is possible,” said Petersen.
7 – Collaborative programmers
The programming universe is probably even larger than these seven disciplines or personality types (or galaxies) as defined here, but Intel’s Petersen points to one more. If we look at the need for coders to exhibit exemplary abilities to collaborate and work together on compartmentalised elements of a project, we can see how important the collaborative developer has become.
“There are parallels here with games development. Some focus on video, while others specialise in rendering, storyboards, intelligence, gameplay and many other parts of the total program stack. In the future we will specialisation among programmers as they spread out to be able cope with the demands of the different categories of work,” said Petersen.
Do we now recognise a bigger universe of software types working in a wider galaxy of application scenarios and developers for an expanded planet of user requirements?