Linux to system operacyjny, który od dawna przyciąga programistów dzięki swojej elastyczności, wszechstronności i mocnym narzędziom programistycznym. Jednym z mniej znanych, ale bardzo potężnych języków programowania na Linuxie jest język D. D jest językiem programowania, który łączy wydajność języków takich jak C i C++ z nowoczesnymi cechami, które ułatwiają programowanie.
W tym artykule przyjrzymy się, jak napisać i skompilować program „HelloWorld” w języku D na Linuxie, jakie kompilatory są dostępne, jak działa system budowania, jak pobierać biblioteki oraz jaka jest wydajność tego języka.
Czym jest język D?
Język D został zaprojektowany przez Waltera Brighta i Andrieja Aleksandrescu. Jego celem było połączenie wydajności języków niskopoziomowych z łatwością użycia i nowoczesnymi cechami języków wysokopoziomowych. D jest statycznie typowanym, kompilowanym językiem programowania, który oferuje szeroki wachlarz funkcji takich jak:
- Moduły: Lepsze zarządzanie przestrzenią nazw
- Wielowątkowość: Łatwiejsze tworzenie programów wielowątkowych
- Programowanie kontraktowe: Weryfikacja poprawności kodu
- Szablony: Metaprogramowanie
- Garbage Collection (GC): Automatyczne zarządzanie pamięcią (z możliwością wyłączenia)
Program „HelloWorld” w języku D
Oto jak wygląda kod programu „HelloWorld” w języku D:
import std.stdio;
void main()
{
writeln("Hello, World!");
}
Ten prosty program importuje moduł std.stdio
, który zawiera funkcję writeln
, a następnie wypisuje na ekranie „Hello, World!”.
Kompilatory do języka D
Istnieje kilka kompilatorów, które można wykorzystać do kompilacji kodu w języku D:
- DMD (Digital Mars D):
- Oficjalny kompilator języka D, rozwijany przez głównego autora języka D.
- GDC (GNU D Compiler):
- Kompilator języka D oparty na GCC (GNU Compiler Collection).
- LDC (LLVM D Compiler):
- Kompilator języka D oparty na LLVM, oferujący lepszą optymalizację i wydajność.
Instalacja kompilatora dla języka D
Aby zainstalować DMD na Linuxie, można skorzystać z narzędzia curl
:
curl -fsS https://dlang.org/install.sh | bash -s dmd
# alternatywny kompilator - pobranie pod Linux Debian lub Ubuntu
sudo apt install ldc
Kompilacja programu w języku D
Po zainstalowaniu kompilatora, kompilacja programu „HelloWorld” jest bardzo prosta:
dmd hello.d
# kompilacja na alternatywnym kompilatorze - LDC
ldc2 hello.d
Powyższe polecenie tworzy plik wykonywalny hello
, który można uruchomić:
./hello
Systemy budowania w języku D
W przypadku większych projektów warto skorzystać z systemu budowania, takiego jak dub. Dub to domyślny menedżer pakietów i system budowania dla języka D.
Aby zainstalować dub, można użyć poniższego polecenia:
sudo apt install dub
W sytuacji, kiedy chcemy stworzyć pakiet w katalogu hello_d, wykonujemy poniższe kroki:
dub init hello_d --type=minimal
# zostaniemy zapytani o kilka rzeczy
Package recipe format (sdl/json) [json]: json
Name [hello_d]:
Description [A minimal D application.]:
Author name [bieli]:
License [proprietary]:
Copyright string [Copyright © 2025, bieli]:
Add dependency (leave empty to skip) []:
Successfully created an empty project in '/home/bieli/tmp/D/hello1/hello_d'.
Package successfully created in hello_d
# w podkatalogu hello_d zobaczymy
$ ls hello_d/
dub.json source
Po utworzeniu projektu, możemy zbudować go i uruchomić za pomocą:
cd hello_d
dub
Pobieranie bibliotek w języku D
Dub ułatwia również zarządzanie zależnościami. Aby dodać zewnętrzną bibliotekę, wystarczy dodać ją do pliku dub.json
. Przykład dodania biblioteki vibe-d
:
"dependencies": {
"vibe-d": "~>0.9.3"
}
Następnie wystarczy uruchomić dub
, aby pobrać i zainstalować zależności:
dub
Przykład wystartowania projektu serwisu HTTP w języku programowania D z DUB
Wykonaj poniższe instrukcje tworzenia nowego pakietu projektu w języku D z użyciem dub
, po czym w przeglądarce wpisz/skopiuj podany adres i port:
bieli@machine:/tmp/D$ dub init my-vibed-app -t vibe.d
Package recipe format (sdl/json) [json]:
Name [my-vibed-app]:
Description [A simple vibe.d server application.]:
Author name [bieli]:
License [proprietary]:
Copyright string [Copyright © 2025, bieli]:
Add dependency (leave empty to skip) []:
Successfully created an empty project in '/tmp/D/my-vibed-app'.
Package successfully created in my-vibed-app
bieli@machine:/tmp/D$ cd my-vibed-app/
bieli@machine:/tmp/D/my-vibed-app$ dub
Fetching botan-math 1.0.4 (getting selected version)...
Fetching vibe-core 1.24.0 (getting selected version)...
Fetching memutils 1.0.10 (getting selected version)...
Fetching taggedalgebraic 0.11.23 (getting selected version)...
Fetching vibe-d 0.8.6 (getting selected version)...
Fetching stdx-allocator 2.77.5 (getting selected version)... Fetching botan 1.12.19 (getting selected version)...
Fetching openssl 1.1.6+1.0.1g (getting selected version)...
Fetching diet-ng 1.8.3 (getting selected version)...
Fetching eventcore 0.9.35 (getting selected version)...
Fetching mir-linux-kernel 1.0.1 (getting selected version)...
Fetching libevent 2.0.2+2.0.16 (getting selected version)...
Fetching libasync 0.8.6 (getting selected version)...
Running pre-generate commands for vibe-d:tls...
/bin/sh: 1: rdmd: not found
Performing "debug" build using /usr/bin/ldc2 for x86_64.
taggedalgebraic 0.11.23: building configuration "library"...
eventcore 0.9.35: building configuration "epoll"...
...
vibe-d:utils 0.8.6: building configuration "library"...
vibe-d:data 0.8.6: building configuration "library"...
mir-linux-kernel 1.0.1: building configuration "library"...
vibe-d:crypto 0.8.6: building configuration "library"...
diet-ng 1.8.3: building configuration "library"...
vibe-d:stream 0.8.6: building configuration "library"...
...
Linking...
Running ./my-vibed-app
[main(----) INF] Listening for requests on http://[::1]:8080/
[main(----) INF] Listening for requests on http://127.0.0.1:8080/
[main(----) INF] Please open http://127.0.0.1:8080/ in your browser.
Wydajność języka D
Język D, dzięki swojej elastyczności i wsparciu dla niskopoziomowych operacji, oferuje wydajność zbliżoną do C i C++. Jednocześnie, jego nowoczesne funkcje i łatwość użycia sprawiają, że jest bardziej produktywny dla programistów. Wydajność kompilatorów takich jak LDC, który opiera się na LLVM, dodatkowo poprawia optymalizację kodu.
Podsumowanie
Język D to nowoczesny język programowania, który łączy wydajność C i C++ z łatwością użycia współczesnych języków. Dzięki kompilatorom takim jak DMD, GDC i LDC, programiści mają wiele opcji do wyboru. System budowania dub ułatwia zarządzanie projektami i zależnościami. Język D oferuje również doskonałą wydajność, co czyni go atrakcyjnym wyborem dla wielu zastosowań.
Jeśli szukasz nowoczesnego i wydajnego języka programowania na Linuxie, warto dać szansę językowi D. Możliwości, jakie oferuje, z pewnością przyciągną zarówno początkujących, jak i doświadczonych programistów.