Czy języki programowania mają wpływ na naszą planetę?
01.12.2023 | Tomasz Wawrzyniak
Wstęp
Coraz więcej mówi się o naszym wpływie na Ziemię. Zdążyliśmy się już przyzwyczaić do hasła „zrównoważony rozwój firm”. Ale czy tak naprawdę wiemy co ono oznacza, w szczególności w branży IT? Dziś opowiem Wam o przyjaznych środowisku językach programowania.
Co tak naprwdę ma wpływ?
Branża informatyczna opiera się na dwóch kluczowych aspektach: hardware i software. W kontekście hardware, istotnym aspektem jest efektywność energetyczna sprzętu, na którym przetwarzane są operacje. W przypadku oprogramowania, istnieje kilka krytycznych kwestii, które mają wpływ na naszą planetę.
Efektywność Kodu
Ważnym elementem jest efektywność samego kodu. Odpowiednio napisany kod, wykorzystujący natywne konstrukcje danego języka nie generuje nadmiernych operacji oraz wydajnie zarządza zasobami, co przekłada się na szybszy czas wykonywania zadań i mniejsze zużycie energii.
Jakość Kodu
Kod napisany zgodnie z dobrymi praktykami i standardami, nie tylko spełnia wymagania klienta, ale także wpływa na szybkość wprowadzania zmian i minimalizuje dodatkową prace aplikacji. Jednak zdarza się, że czytelny i bardzo dobrze napisany kod nie jest w pełni efektywnym kodem, z uwagi na strukturę, która może ułatwiać zrozumienie jednak wpływać negatywnie na efektywność. Jak również efektywny kod może być do zrozumienia.
Dostosowanie do Architektury Sprzętowej
Kolejnym aspektem jest dostosowanie kodu do architektury sprzętowej. Oprogramowanie pisane zgodnie z wymaganiami danego sprzętu nie tylko zwiększa efektywność, ale także minimalizuje negatywny wpływ na środowisko.
Zatem zarówno efektywność energetyczna hardware'u, jakość oraz dostosowanie oprogramowania mają kluczowe znaczenie dla redukcji wpływu branży IT na naszą planetę. Wspólnie dążąc do zrównoważonego rozwoju w obszarze technologii, możemy przyczynić się do ochrony środowiska.
Porównanie języków programowania
W celu kompleksowego zrozumienia i oceny możliwości 10 najpopularniejszych języków programowania, przeprowadzono analizę ich popularności. Dane do porównania pochodzą z Ankiety Developerów StackOverflow z 2023 roku, gdzie programiści wyrażają swoje preferencje odnośnie do języków używanych w ciągu ostatniego roku oraz tych, w których planują pracować w najbliższej przyszłości.
Ankieta opiera się na pytaniu:
- "Which programming, scripting, and markup languages have you done extensive development work in over the past year, and which do you want to work in over the next year? (If you both worked with the language and want to continue to do so, please check both boxes in that row.)"
- "W jakich językach programowania, skryptów i znaczników pracowałeś(-aś) w ciągu ostatniego roku, a w jakich chcesz pracować w ciągu najbliższego roku? (Jeśli pracowaliście z danym językiem i chcecie to kontynuować, zaznaczcie oba pola w tym wierszu)".
Dzięki odpowiedziom na to pytanie, możemy uzyskać wgląd w aktualne preferencje i tendencje wśród programistów, co stanowi istotny kontekst dla porównania możliwości poszczególnych języków programowania.
Źródło: opracowanie własne
The Computer Language Benchmarks Game
"The Computer Language Benchmarks Game" to projekt, który ma na celu porównywanie wydajności różnych języków programowania w różnych zastosowaniach. Projekt ten dostarcza zestaw testów wydajnościowych, które są implementowane w różnych językach programowania, a następnie porównywane pod względem czasu wykonania, zużycia pamięci i innych parametrów.
Głównym celem tego projektu jest umożliwienie programistom porównania efektywności różnych języków w konkretnych scenariuszach programistycznych. Testy obejmują różne zadania, od prostych algorytmów sortowania po bardziej zaawansowane operacje na danych. Ważne jest jednak, aby zauważyć, że wyniki takich testów mogą być specyficzne dla konkretnych przypadków użycia i niekoniecznie odzwierciedlają ogólną wydajność danego języka w każdym możliwym kontekście.
Źródło: opracowanie własne
Różnice wydajnościowe między procesorami Intel i7 12700H a Apple M2
Podczas analizy różnic wydajnościowych w kontekście programowania, nie można zapominać o specyfikach technicznych konkretnych procesorów. Dla porównania, rozważmy dwa różne procesory: Intel i7 12700H z rodziny x86-64 oraz Apple M2 z architekturą ARM.
Oprócz samego języka programowania, na różnice w wydajności wpływają takie elementy jak specyfika operacji, środowisko uruchomieniowe, a także sprzęt, na którym te operacje są wykonywane.
Współczynniki Wydajnościowe
- Efektywność Energetyczna (TDP - Thermal Design Power):
- TDP określa maksymalną ilość mocy, którą procesor może zużyć przy pełnym obciążeniu. Apple M2, o mniejszym TDP, może być bardziej energooszczędny w porównaniu do Intel i7 12700H, co jest kluczowe w kontekście zużycia energii.
- Wydajność Jednowątkowa (Single Core) i Wielowątkowa (Multi Core):
- Wydajność jednowątkowa odnosi się do zdolności procesora do obsługi pojedynczego wątku, podczas gdy wydajność wielowątkowa odzwierciedla zdolność obsługi wielu wątków jednocześnie. Procesory mogą różnić się w tym zakresie. Intel i7 12700H, będący procesorem wielordzeniowym, może mieć przewagę w zadaniach wymagających intensywnego obliczeniowo równoległego przetwarzania.
Porównanie Architektur (ARM vs. x86-64)
Przy porównaniu dwóch odmiennych architektur, takich jak ARM (Apple M2) i x86-64 (Intel i7 12700H), można zauważyć, że:
- Procesor o mniejszym zapotrzebowaniu na prąd, tak jak Apple M2, może być procentowo bardziej oszczędny energii, co przekłada się na dłuższe życie baterii w urządzeniach przenośnych.
- Apple M2 może być wydajniejszy w konkretnych zastosowaniach, szczególnie w kontekście optymalizacji systemowej i dostosowania do ekosystemu sprzętowego.
Podsumowując, analiza różnic wydajnościowych między procesorami powinna uwzględniać zarówno parametry energetyczne, jak i konkretne potrzeby programów, aby dostosować się do różnorodnych wymagań zastosowań.
Źródło: opracowanie własne
Rola chmur obliczeniowych w kontekście zrównoważonego rozwoju
Czy chmura może przyczynić się do zrównoważonego rozwoju? Odpowiedź wydaje się twierdząca, zwłaszcza gdy spojrzymy na podejście dostawców chmurowych, takich jak Microsoft i Google, do efektywności energetycznej i zrównoważonego korzystania z zasobów.
Przy ogromnej skali operacji centrów danych, takie firmy skupiają się nie tylko na ilości sprzętu komputerowego, ale również na optymalizacji zarówno oprogramowania, jak i wykorzystywanego sprzętu. Przykładem innowacyjnego podejścia jest korzystanie z usług serverless, gdzie wykonywane są konkretne zadania w cyklach, co przekłada się na efektywniejsze wykorzystanie zasobów niż w tradycyjnych centrach danych.
Dodatkowo, dostawcy chmurowi aktywnie dążą do zrównoważonej energetyki. Google Cloud Platform (GCP) od 2022 roku chwali się, że wybrane centra operuje w 100% na odnawialnych źródłach energii, co stanowi istotny krok w kierunku zminimalizowania śladu węglowego.
Microsoft Azure również podejmuje konkretne kroki w kierunku zrównoważonego rozwoju. Wykorzystanie chmury Azure w porównaniu do tradycyjnych centrów danych może przynieść nawet 93% oszczędności energetycznej i 98% redukcję emisji dwutlenku węgla. Planuje się, że do 2025 roku Azure opierać się będzie w pełni na odnawialnych źródłach energii.
Istotnym aspektem przy wyborze lokalizacji dla centrów danych Azure jest dostęp do energii atomowej oraz wysoki poziom dostępu do odnawialnych źródeł energii. To ukierunkowane podejście do zrównoważonej infrastruktury dodatkowo przyczynia się do zmniejszenia wpływu działalności chmurowej na środowisko. Wszystko to sugeruje, że chmury obliczeniowe, oprócz korzyści technologicznych, mogą także stanowić pozytywny wkład w globalne wyzwania związane ze zrównoważonym rozwojem.
Podsumowanie: czy można być "zielonym" w świecie programowania?
Podjęcie jednoznacznej decyzji w kwestii bycia "zielonym" w kontekście programowania jest wyzwaniem, biorąc pod uwagę różnorodność czynników wpływających na ekologiczny aspekt tej dziedziny.
Analizując zebrane informacje, trudno jednoznacznie określić, który język programowania jest najbardziej ekologiczny. Dynamiczny rozwój języków, ich kolejne wersje i specjalizacje sprawiają, że ocena zrównoważonego podejścia staje się bardziej skomplikowana. Co więcej, wybór języka często zależy od konkretnego zastosowania, a nie istnieje jedno rozwiązanie, które byłoby optymalne we wszystkich scenariuszach.
Przykładowo, Python, mimo że może być mniej wydajny w pewnych kategoriach, jest preferowany w dziedzinach związanych z przetwarzaniem obrazów czy analizą danych, gdzie jego elastyczność i czytelność kodu odgrywają kluczową rolę.
Przykłady "zielonych" języków obejmują Go (Golang) i Rust. Go, stworzony przez Google, skupia się na efektywności kompilacji i prostocie, co może przyczynić się do mniejszego zużycia zasobów. Rust natomiast, poprzez innowacyjne podejście do zarządzania pamięcią, umożliwia bardziej efektywne korzystanie z zasobów sprzętowych.
Dodatkowo, wiele organizacji używa gotowych rozwiązań, które mogą być napisane w językach niekoniecznie zawsze zielonych, co wprowadza dodatkowe wyzwania.
W świecie IT, podejście do pracy zgodnej ze zrównoważonym rozwojem ewoluuje stopniowo. Przedsiębiorstwa implementują metody "step by step", optymalizując i modyfikując swoje rozwiązania na wielu płaszczyznach. Przykłady takie jak użycie niskoprądowych procesorów (np. seria M firmy Apple) czy przechodzenie na odnawialne źródła energii przez dostawców chmurowych (Azure, GCP) są krokiem w dobrym kierunku.
Ostatecznie, choć technologia oferuje narzędzia i możliwości wspierające dążenie do "zero emisyjności", osiągnięcie tego celu wymaga systematycznych działań i zaangażowania na wielu frontach. Zrównoważone podejście w programowaniu jest procesem, który rozwija się zgodnie z postępem technologicznym i coraz bardziej zauważalnym oddziaływaniem na naszą planetę.