1.
우연히 읽은 글입니다. 전혀 예상하지 못한 두가지 주제를 연결하여 논문으로 완성하였습니다.
친환경, 프로그래밍 언어.
어떤 프로그래밍 언어로 개발한 프로그램이 어느 정도의 에너지를 사용하는지를 측정하여 프로그래밍언어별로 순위를 매깁니다. 같은 포르투칼 저자들이 두번 같은 주제로 논문을 발표하였습니다. 2017년과 2021년입니다. 각각 출처는 Energy Efficiency across Programming Languages와 Ranking Programming Languages by Energy Efficiency입니다.
저자들이 사용한 방법은 The Computer Language Benchmarks Game입니다. 아래의 이미지가 결과입니다.
그러면 환경을 고려하면서 프로그래밍을 하고자 할 때 어떤 언어를 사용해야 할까요? 2017년 논문을 아래와 같이 제안합니다.
The most common performance characteristics of software languages used to evaluate and choose them are execution time and memory usage. If we consider these two characteristics in our evaluation, C, Pascal, and Go are equivalent. However, if we consider energy and time, C is the best solution since it is dominant in both single objectives. If we prefer energy and memory, C and Pascal constitute the Pareto optimal set. Finally, analyzing all three characteristics, this scenario is very similar as for time and memory.
If the developer is only concerned with execution time and energy consumption, then yes, it is almost always possible to choose the best language. Unfortunately, if memory is also a concern, it is no longer possible to automatically decide for a single language.
에너지와 시간을 고려하든 실행속도와 메모리 사용을 고민하든 결론은 C입니다. 물론 각각의 경우 선택지는 조금 더 넓어집니다.
2.
웹 및 기계학습이 유행하면서 각광을 받는 언어들의 경우 C와 비교할 때 에너지를 무지막지하게 사용합니다. Javascript, Python, R 언어입니다. 결국 디지탈사회란 결국 고에너지사회입니다. 지속가능성이 쉽지 않은 사회이기도 합니다. 그럼에도 탄소를 지구적으로 줄여하는 시대적 과제를 놓고 고민하는 것이 기본적인 도리라고 생각합니다. 어떤 방법들이 있을가요? 이런 고민을 담은 주제가 ‘Sustainable Software Engineering’ 혹은 ‘Green Software Engineering’ 입니다.
The Principles of Sustainable Software Engineering
Principles of Green Software Engineering
Sustainable Software Engineering은 마이크로소프트가 표방하는 방법론입니다.관련한 The Principles of Sustainable Software Engineering의 도입부에 나온 정의입니다.
Sustainable Software Engineering is an emerging discipline at the intersection of climate science, software, hardware, electricity markets, and data-center design. The principles and philosophies of Sustainable Software Engineering are a core set of competencies that are necessary to define, build, and run sustainable software applications. By synthesizing this knowledge, a Sustainable Software Engineer (SSE) can make decisions that have a meaningful impact on the carbon pollution of their applications.
마이크로소프트가 만든 Eight principles of Sustainable Software Engineering입니다.
There are eight principles of Sustainable Software Engineering that form a shared understanding of what it means to be a Sustainable Software Engineer. The subsequent units in this module will provide a basic introduction to each of these principles.
Carbon: Build applications that are carbon efficient.
Electricity: Build applications that are energy-efficient.
Carbon Intensity: Consume electricity with the lowest carbon intensity.
Embodied Carbon: Build applications that are hardware efficient.
Energy Proportionality: Maximize the energy efficiency of hardware.
Networking: Reduce the amount of data and distance it must travel across the network.
Demand Shaping: Build carbon-aware applications.
Optimization: Focus on step-by-step optimizations that increase the overall carbon efficiency.
Green Software Engineering은 표현을 달리했지만 Sustainable Software Engineering와 동일합니다. 다만 Software development methodology in a Green IT environment를 보면 다음과 같이 정의하고 있습니다.
지속가능성(Sustainability)을 Green의 상위개념을 보고 있습니다.
사실 개념이 중요한 것은 아닙니다. 위 논문의 목적은 환경을 고려한 소프트웨어개발방법론을 제시하는 것입니다. 목차를 보면 재미있습니다.
The Green Software Foundation은 Accenture, GitHub, Microsoft 및 ThoughtWorks 그리고 여럿 회사들이 green software standard를 만들어 보급하기 위해 공동으로 설립한 단체입니다. ClimateAction.Tech 라는 단체도 있습니다. 소프트웨어 회사들이 설립한 단체가 아니라 소프트웨어 개발자, 노동자들이 설립한 단체입니다.
We are tech workers seeding climate action in companies, organisations and industries through deep, self-organized community building and support.
Our vision: A transformed tech industry that makes climate a priority, and takes responsibility for social impacts and ecological limits.
The climate crisis requires a serious and sustained response from across civil society, and that includes the tech sector and technology professionals. ClimateAction.tech’s purpose is to empower technology professionals to play our part — to meet, discuss, learn and take climate action.
여기서 하는 활동중 하나가 #LetsGreenTheWeb입니다. Reduce the carbon emissions of your website을 읽어보고 Website Carbon Calculator으로 탄소배출량을 계산해보았습니다. 줄여야 하네요..
소프트웨어 개발자의 사회적 책임. 소프트웨어엔지니어의 윤리강령의 첫번째 강령입니다.
1. PUBLIC
– Software engineers shall act consistently with the public interests.
탄소제로, 탄소중립이 시대적 과제입니다. 소프트웨어 개발도, 소프트웨어 개발자도 할 일이 있습니다.