New hardware and software technologies are emerging all the time, and there is a never-ending issue of what choices should be used to support both legacy and evolving applications and their algorithms. An example of one of these issues is the use of multi-core processors. The producers of these processors seem to think that a shared-memory model is adequate, but in reality, the HPC market-place will want to use large systems of multi-core processors, where there will be a need for intra and inter communication between the processors and cores. This type of programming can be overcome using MPI/OpenMP/threads, but in reality a programming paradigm that encompasses this type of architecture is needed. Indeed, the way Intel, AMD, IBM Cell, and GPUs processors are designed means that optimisation of code on these systems will take a lot of time and effort. Another area that is changing rapidly is the move away from Grid computing, towards Clouds and Virtualisation, which are innovative, but potentially do not meet the needs of some HPC users. In addition, the need for Green IT computing that optimises application performance and potentially saves power is a very important aspect of computing in the future.