REKLAMA

To jak podróż w czasie: współczesny program uruchomiony na Windows 3.11

Pamiętacie czasy, kiedy Microsoft tworzył rozwiązania zamknięte, niekompatybilne z innym, a nawet własnym ekosystemem, i zależne od systemu operacyjnego? Ja też.

To jak podróż w czasie: współczesny program uruchomiony na Windows 3.11
REKLAMA

Jednak od ponad 10 lat coś zaczęło się zmieniać i dziś „programowanie w .NET” oznacza pisanie programów, które uruchomimy na Makach, Linuksie, w Dockerze, bez potrzeby spełniania zależności od serwera czy systemu operacyjnego.

REKLAMA

Michal Strehowsky to jeden z inżynierów Microsoftu pracujących nad .NET CoreRT, czyli nad środowiskiem uruchomieniowym, które jest wysoce zoptymalizowane dzięki natywnej kompilacji i zastosowaniu rozwiązań typu Ahead of Time Compilation. Często ilustruje możliwości bibliotek, nad którymi pracuje: na przykład kiedyś stworzył grę w węża, zajmującą osiem kilobajtów po skompilowaniu, którą można uruchomić na szeregu systemów operacyjnych, łącznie z Linuksem i DOS. Wszystko dzięki kompilacji natywnej.

Program w C# uruchomiony na Windows 3.11

Jednym z pomysłów Strehovskiego była (udana) próba uruchomienia programu napisanego w C# na Windows 3.11.

Windows 3.11 to środowisko uruchomieniowe i graficzna nakładka na DOS wydana w 1993 r. Nie można go uznać za pełny system operacyjny, ale miał wiele jego cech. Początkowo było to środowisko 16-bitowe, ale w pewnym momencie, dzięki aktualizacji, zyskało możliwość ograniczonego korzystania z programów i adresowania 32-bitowego. API to miało nazwę Win32s i pochodziło z „pełnego” systemu operacyjnego Microsoftu Windows NT.

Do tego nie jest to program konsolowy (uruchamiany w trybie tekstowym), ale „okienkowy”, czyli korzystający ze środowiska graficznego.

W jaki sposób Strehovski tego dokonał?

Jak sam przyznaje, wykorzystał swoje doświadczenia z budowania „ośmiokilobajtowego” węża. Po skompilowaniu prostego kodu do natywnego obrazu musiał rozwiązać zależności, których nie miał Windows 3.11 (biblioteki, potrzebne do uruchomienia programu, niezawarte w nim, a zawarte dziś w systemie operacyjnym).

 class="wp-image-1075575"
REKLAMA

Współczesne środowisko .NET nie produkuje odpowiednich plików wynikowych, rola współczesnego kompilatora musiała się więc zakończyć na stworzeniu pliku obiektowego, który następnie został skonsolidowany za pomocą tzw. linkera dostarczonego z Visual C++ 2.0, wydanego w 1994 r.

Istnieje zdanie przypisywane Newtonowi, które przypomina mi się przy tej okazji: „jeśli widzę dalej, to tylko dlatego, że stoję na ramionach olbrzymów”. Wszystkie ludzkie osiągnięcia są kontynuacją innych i każdy czerpie z osiągnięć tych, którzy byli przed nim. Dzięki temu, że podstawy komputeryzacji, programowania i internetu wciąż gdzieś tam są zawarte w naszych komputerach, możliwa jest taka „podróż w czasie”, jak ta pokazana przez pracownika Microsoftu.

REKLAMA
Najnowsze
Aktualizacja: 2025-11-26T16:48:47+01:00
Aktualizacja: 2025-11-26T16:24:43+01:00
Aktualizacja: 2025-11-26T15:54:32+01:00
Aktualizacja: 2025-11-26T15:33:04+01:00
Aktualizacja: 2025-11-26T14:58:54+01:00
Aktualizacja: 2025-11-26T14:39:33+01:00
Aktualizacja: 2025-11-26T14:33:54+01:00
Aktualizacja: 2025-11-26T13:08:53+01:00
Aktualizacja: 2025-11-26T13:04:06+01:00
Aktualizacja: 2025-11-26T10:16:46+01:00
Aktualizacja: 2025-11-26T08:37:34+01:00
Aktualizacja: 2025-11-25T20:57:39+01:00
Aktualizacja: 2025-11-25T19:32:38+01:00
Aktualizacja: 2025-11-25T19:19:31+01:00
Aktualizacja: 2025-11-25T18:06:12+01:00
Aktualizacja: 2025-11-25T17:23:01+01:00
Aktualizacja: 2025-11-25T16:07:18+01:00
Aktualizacja: 2025-11-25T15:42:55+01:00
Aktualizacja: 2025-11-25T15:21:30+01:00
Aktualizacja: 2025-11-25T15:00:55+01:00
REKLAMA
REKLAMA
REKLAMA