While in the previous century, language designer’s and software engineer’s main goals were to develop fast software systems, the current widespread use of non-wired computing devices is making energy consumption a key aspect not only for hardware manufacturers, but also for software developers. Software languages and their compilers provide programmers with powerful mechanisms to increase their productivity: for example, by providing advanced static type systems that reduce runtime software errors while increasing software reuse, and by offering tools that help programmers find errors (debuggers), bad smells (refactoring tools), detecting memory leaks and runtime issues (profilers), etc. All these mechanisms and tools were developed with the goal of making programming “faster” and programs run “faster”. In this document we discuss energyware as an engineering discipline to reason about energy consumption in software systems. We discuss techniques and tools developed in our Green Software Laboratory, namely, techniques to analyze the energy efficiency of 27 programming languages, to detect inefficient energy use of data structures, and to analyze software’s source code and locate abnormal energy consumption. An interesting question that frequently arises in the software energy efficiency area is whether a faster program is also an energy efficient program, or not. If the answer is yes, then optimizing a program for speed also means optimizing it for energy, and this is exactly what the compiler construction community has been hardly doing since the very beginning of software languages. However, energy consumption does not depends only on execution time, as shown in the equation Energy = Time×Power. A program provides a possible implementation for a given computer problem. Such a program is written in a specific programming language, it possibly uses languages data structures available in the
[1]
Rui Pereira,et al.
Towards a Green Ranking for Programming Languages
,
2017,
SBLP.
[2]
Jácome Cunha,et al.
Helping Programmers Improve the Energy Efficiency of Source Code
,
2017,
2017 IEEE/ACM 39th International Conference on Software Engineering Companion (ICSE-C).
[3]
Jácome Cunha,et al.
SPELLing out energy leaks: Aiding developers locate energy inefficient code
,
2020,
J. Syst. Softw..
[4]
Jácome Cunha,et al.
Energy efficiency across programming languages: how do energy, time, and memory relate?
,
2017,
SLE.
[5]
Rui Pereira,et al.
Energyware engineering: techniques and tools for green software development
,
2018
.
[6]
Jácome Cunha,et al.
The Influence of the Java Collection Framework on Overall Energy Consumption
,
2016,
International Workshop on Green and Sustainable Software.
[7]
Rui Pereira,et al.
Locating Energy Hotspots in Source Code
,
2017,
2017 IEEE/ACM 39th International Conference on Software Engineering Companion (ICSE-C).
[8]
Jácome Cunha,et al.
jStanley: Placing a Green Thumb on Java Collections
,
2018,
2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE).