TI/Wirtualizacja: Różnice pomiędzy wersjami
(Nie pokazano 3 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
Linia 1: | Linia 1: | ||
− | |||
==[[Technologie informacyjne i komunikacyjne|⬆]] Linkowanie bibliotek== | ==[[Technologie informacyjne i komunikacyjne|⬆]] Linkowanie bibliotek== | ||
Pisząc program komputerowy korzystamy z bibliotek gotowych funkcji, skompilowanych wcześniej dla danego systemu opercyjnego. Na przykład wypisanie na ekran wyniku w języku C wymaga użycia funkcji <code>print()</code>, która znajduje się w bibliotece <code>stdio</code>. Te biblioteki są specyficzne dla danego systemu operacyjnego i zawierają funkcjonalności, tłumaczące wysokopoziomowe komendy języka programowania na działania specyficzne dla danego systemu operacyjnego i sprzętu. W powyższym przykładzie biblioteka <code>stdio</code> (od ''standard input-output'') zawiera funkcje służące do wcztywania danych z pliku lub z klawiatury, oraz wypisywania wyników na ekran (w terminalu). Dzięki temu wypisując wynik funkcją <code>printf()</code> (od ''print formatted'', czyli wydruk sformatowany) nie musimy myśleć o tym, w którym miejscu ekranu znajduje się okienko terminala, i które piksele trzeba podświetlić a które zgasić, żeby ułożyły się w konkretne litery i cyfry. | Pisząc program komputerowy korzystamy z bibliotek gotowych funkcji, skompilowanych wcześniej dla danego systemu opercyjnego. Na przykład wypisanie na ekran wyniku w języku C wymaga użycia funkcji <code>print()</code>, która znajduje się w bibliotece <code>stdio</code>. Te biblioteki są specyficzne dla danego systemu operacyjnego i zawierają funkcjonalności, tłumaczące wysokopoziomowe komendy języka programowania na działania specyficzne dla danego systemu operacyjnego i sprzętu. W powyższym przykładzie biblioteka <code>stdio</code> (od ''standard input-output'') zawiera funkcje służące do wcztywania danych z pliku lub z klawiatury, oraz wypisywania wyników na ekran (w terminalu). Dzięki temu wypisując wynik funkcją <code>printf()</code> (od ''print formatted'', czyli wydruk sformatowany) nie musimy myśleć o tym, w którym miejscu ekranu znajduje się okienko terminala, i które piksele trzeba podświetlić a które zgasić, żeby ułożyły się w konkretne litery i cyfry. | ||
+ | |||
==<code>virtualenv</code>== | ==<code>virtualenv</code>== | ||
Biblioteki są nie tylko specyficzne dla danego systemu i kompilatora — są też ciągle ulepszane, a ich funkcjonalności poszerzane. Dlatego też w nowszych wersjach bibliotek wywołania tych samych funkcji mogą mieć inną postać i formę, przez co kod napisany pod kątem starszej biblioteki może nie dać się dowiązać (zlinkować) do jej nowszej wersji, i odwrotnie. Dla uniknięcia bałaganu związanego z wieloma wersjami tych samych bibliotek w Pythonie, możemy użyć tzw. [https://virtualenv.pypa.io/en/latest/user_guide.html wirtualnego środowiska] (''virtual environment'', <code>virtualenv</code>). | Biblioteki są nie tylko specyficzne dla danego systemu i kompilatora — są też ciągle ulepszane, a ich funkcjonalności poszerzane. Dlatego też w nowszych wersjach bibliotek wywołania tych samych funkcji mogą mieć inną postać i formę, przez co kod napisany pod kątem starszej biblioteki może nie dać się dowiązać (zlinkować) do jej nowszej wersji, i odwrotnie. Dla uniknięcia bałaganu związanego z wieloma wersjami tych samych bibliotek w Pythonie, możemy użyć tzw. [https://virtualenv.pypa.io/en/latest/user_guide.html wirtualnego środowiska] (''virtual environment'', <code>virtualenv</code>). | ||
− | + | ||
<!--— ten sposób omówimy na wykładzie o [[TI/Od_operatora_do_systemu_operacyjnego|systemach operacyjnych]].--> | <!--— ten sposób omówimy na wykładzie o [[TI/Od_operatora_do_systemu_operacyjnego|systemach operacyjnych]].--> | ||
− | + | ===Wirtualizacja=== | |
− | + | Bardziej radykalnym sposobem na uruchamianie programów w osobnych środowiskach i różnych systemach operacyjnych jest wirtualizacja, czyli np. emulowanie całego systemu operacyjnego "w okienku" innego systemu. | |
− | ==Wirtualizacja== | ||
[[Plik:Zrzut ekranu 2024 macos VM-sm.png|1024px|bezramki]] | [[Plik:Zrzut ekranu 2024 macos VM-sm.png|1024px|bezramki]] | ||
Linia 19: | Linia 18: | ||
<div align="right"> | <div align="right"> | ||
− | [[TI/Od_operatora_do_systemu_operacyjnego|⬅]] [[Technologie informacyjne i komunikacyjne|⬆]] [[TI/ | + | [[TI/Od_operatora_do_systemu_operacyjnego|⬅]] [[Technologie informacyjne i komunikacyjne|⬆]] [[TI/Kilka_dat_z_historii_komputerów|⮕]] |
</div> | </div> |
Aktualna wersja na dzień 11:30, 16 paź 2024
⬆ Linkowanie bibliotek
Pisząc program komputerowy korzystamy z bibliotek gotowych funkcji, skompilowanych wcześniej dla danego systemu opercyjnego. Na przykład wypisanie na ekran wyniku w języku C wymaga użycia funkcji print()
, która znajduje się w bibliotece stdio
. Te biblioteki są specyficzne dla danego systemu operacyjnego i zawierają funkcjonalności, tłumaczące wysokopoziomowe komendy języka programowania na działania specyficzne dla danego systemu operacyjnego i sprzętu. W powyższym przykładzie biblioteka stdio
(od standard input-output) zawiera funkcje służące do wcztywania danych z pliku lub z klawiatury, oraz wypisywania wyników na ekran (w terminalu). Dzięki temu wypisując wynik funkcją printf()
(od print formatted, czyli wydruk sformatowany) nie musimy myśleć o tym, w którym miejscu ekranu znajduje się okienko terminala, i które piksele trzeba podświetlić a które zgasić, żeby ułożyły się w konkretne litery i cyfry.
virtualenv
Biblioteki są nie tylko specyficzne dla danego systemu i kompilatora — są też ciągle ulepszane, a ich funkcjonalności poszerzane. Dlatego też w nowszych wersjach bibliotek wywołania tych samych funkcji mogą mieć inną postać i formę, przez co kod napisany pod kątem starszej biblioteki może nie dać się dowiązać (zlinkować) do jej nowszej wersji, i odwrotnie. Dla uniknięcia bałaganu związanego z wieloma wersjami tych samych bibliotek w Pythonie, możemy użyć tzw. wirtualnego środowiska (virtual environment, virtualenv
).
Wirtualizacja
Bardziej radykalnym sposobem na uruchamianie programów w osobnych środowiskach i różnych systemach operacyjnych jest wirtualizacja, czyli np. emulowanie całego systemu operacyjnego "w okienku" innego systemu.
Zrzut ekranu systemu macOS 14.6.1 działającego na procesorze Intel. W prawym dolnym rogu okno Keynote — natywnej aplikacji systemu macOS. Po lewej stronie okno witualnej maszyny (vmware
) z działającym systemem Microsoft Windows 11, w niej otwarty terminal Windows Subsystem for Linux (WSL) i natywna konsola Windows (power shell). Po prawej wirtualna maszyna z dystrybucją Linuxa Ubuntu.