Programista Microsoftu przyznaje – jądro Linuksa lepszej jakości niż jądro Windowsa. 26


code-breakers-1Nie jest łatwo porównać jakość kodu źródłowego Windowsa i Linuksa. Ten pierwszy rozwijany jest jako zamknięty projekt i dostęp do niego mają tylko nieliczni programiści, którzy zapewne muszą podpisywać klauzule o poufności, a ponadto mogą być niespecjalnie krytyczni wobec owoców własnej pracy. Z tego powodu wszelkie dywagacje na temat przewagi jądra jednego systemu nad drugim na ogół leżą w sferze czystych spekulacji. Dla wszystkich musiała być więc zaskoczeniem otwarta i obszerna wypowiedź anonimowego programisty Microsoftu – tym bardziej, że wnioski są miażdżące dla jego pracodawcy.

Anonimowy programista, współodpowiedzialny za rozwój jądra NT stosowanego w systemach Windows, zdobył się na zamieszczenie w sieci obszernej i szczerej wypowiedzi, porównującej rozwój systemu, nad którym pracuje, do konkurencyjnych rozwiązań. Oczywiście, jak w takich sytuacjach często bywa, została ona niemal natychmiast usunięta (zapewne na żądanie niezadowolonego pracodawcy). Jednak gdy coś trafia do internetu, to już nigdy z niego nie znika. Wypowiedź programisty została ponownie opublikowana na innej – dostępnej pod adresem http://blog.zorinaq.com/?e=74 – stronie, gdzie każdy może zapoznać się z jej pełną treścią. Poniżej szkicowo podsumowuję wywody programisty jądra Windowsa.

 

1. Windows jest wolniejszy od konkurencyjnych systemów operacyjnych, a z biegiem czasu ta różnica się tylko pogłębia.
2. Programista, który zamieści poprawiający wydajność o 5% patch dla Linuksa, jest przez wszystkich wychwalany – w przypadku analogicznej sytuacji w Microsofcie, wszyscy są na programistę wściekli (przełożony – bo musi przedstawić szefostwu nieplanowane zmiany; testerzy, którzy muszą sprawdzić patch – bo dostali dodatkową robotę, itp.).
3. Najlepsi programiści Microsoftu uciekają do Google i innych firm. Zastępowani są przez młodych absolwentów szkół wyższych, którzy są oczywiście odpowiednio wykwalifikowani, ale za to – przynajmniej gdy rozpoczynają pracę – słabo zorientowani w kodzie Windowsa, dlatego na ogół proponują nowe rozwiązania, zamiast poprawiać stare.
4. W swej enuncjacji programista przytacza szereg przykładów, świadczących o tym, że:
– nie udało się wprowadzić pożądanych zmian ze względu na biurokrację;
– trzeba było wynajdywać koło na nowo, gdyż nie pozwolono na dokonywanie zmian w starym API;
– kod odpowiedzialny za system plików NTFS uznano za nieczytelny i niezrozumiały horror;
– kompilator Microsoftu znacząco ustępuje konkurencji pod względem zgodności ze standardem C++11.

 

Na końcu mamy późniejszy dopisek, w którym autor znacząco łagodzi ton wypowiedzi i stwierdza, że jego krytyka była mocno przesadzona.

 

Konkludując – potwierdza się opinia, że oprogramowanie Open Source oferuje czytelniejszy kod, który ponadto ma lepszą jakość. Podobnie atmosfera pracy, jaką cieszy się hobbysta, poświęcając swój czas Linuksowi, okazuje się bardziej twórcza, niż korporacyjny przymus. Nam, jako użytkownikom Linuksa, pozostaje tylko cieszyć się z wysokiej jakości kernela naszego systemu.

 

korekta: ionash


Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

26 komentarzy do “Programista Microsoftu przyznaje – jądro Linuksa lepszej jakości niż jądro Windowsa.

  • Dwimenor

    Jakieś 10 lat temu do sieci wyciekł fragment kodu kernela NT, w wersji używanej przez windows2000.
    Kilka komentarzy co do samego kodu znajduje się tutaj:
    http://www.kuro5hin.org/story/2004/2/15/71552/7795
    Oczywiście najzabawniejsza część to kwiatki, ale warto przeczytać też sekcję dotyczącą jakości kodu oraz rozprawienie się z mitami na temat tego, że MS kradnie kod OpenSource.

  • Michal

    @Dwimenor
    Nie zapominaj, że jest to kod z okolic roku 2000 kiedy Google nie podkradało programistów, najlepsi ciągle pracowali w MS itd.

  • adam_01001110

    Ta wiadomość (opublikowana wcześniej na innym popularnym portalu) połączona z tym, że NASA porzuciła Windowsa i teraz stacje kosmiczne pracują na Linuxie stały się powodem mojego zainteresowania tym systemem. Obecnie Linux i Ubuntu którego obecnie testuję są naprawdę rozwinięte i z powodzeniem mogą zastąpić Windowsa. Jednak do wad Windowsa dodałbym moje spostrzeżenia:

    1. Nic nie robiąc dysk pracuje (zaplanowane defragmentacje, aktualizacje i skanowanie antywirusem oczywiście wykluczone) a dysk mimo to bardzo często pracuje gdy na komputerze nic nie jest robione. Ruszysz myszką, klikniesz jakiś klawisz – dysk przestaje pracować.

    2. Kiedy nic nie powinno używać łącza internetowego (wszystkie programy do komunikacji z internetem są wyłączone) Windows wysyła i odbiera dane najczęściej programem svchost co dzieje się praktycznie non stop.

    To jest bardzo dziwne i powiedziałbym podejrzane, że komputer STALE pracuje, komunikuje się z jakimś serwerem (po co?) podczas gdy powinien być w stanie spoczynku. Dlatego nie ufam Windowsowi, pora zacząć uczyć się obsługi Linuxa 🙂

  • Pyth0n

    W robocie siedzę w jednym pokoju z kumplem pracującym na VS2010 (ja oblatuję wszystkie opensource’y, Linuksy i BSD – on Windowsy).
    Robiliśmy projekt – ja serwer UDP na OpenBSD, on biblioteka kliencka na Windows. Napisałem strukturę opisującą payload w ansi-C. Miała jeden (całkowicie legalny) myk – pola bitowe. Tutaj sporny kawałek struktury:

    struct RAMKA {
    unsigned long Cookie:24;
    unsigned char Cmd;
    } __attribute__ ((packed));

    GCC i Clang łykały to bez mrugnięcia okiem, generowały strukturę 4-bajtową. CL nie potrafił sobie z tym poradzić – mimo zaklęć z align(1), packed i whatever_innego generował strukturę o rozmiarze 5-8 bajtów, w zależności od kombinacji atrybutów. Pomogło dopiero zamienienie long:24 na char[3]. Struktury z polami bitowymi są w C od 1973 toku, więc póki co 40 lat. Microsoft, time to wake up!

  • adam_01001110

    Do tego dodałbym wątek aktualizacji. Kiedyś format dysku to była czysta przyjemność. Robiony na jakiś czas częściowo był też zabawą, a teraz? Instalacja paczki 90MB SP1 dla Win7 ściaga się 2 godziny przy internecie o prędkości 40Mb/s! Właśnie instalowałem system – 3 razy, bo niestety 2 razy instalacja aktualizacji Servic Pack 1 się zawiesiła i dysk pracował w nieskończoność (również po restartach). Chcąc zainstalować system musimy doprowadzić go do stanu używalności – w tym zainstalować aktualizacje. Niestety ostatnio w Windowsie aktualizacje to koszmar, droga przez mękę na kolanach po kamienistej drodze – ból i nieskończone cierpienie! Aktualizacje na laptopie za 7 tysięcy złotych wykonują się przez pół dnia – to zdecydowanie przesada i niedopracowanie ze strony Microsoftu. W Ubuntu aktualizacja trwa dosłownie chwilę, tyle ile powinna trwać.

  • Tiger

    To społeczność międzynarodowa jest dużo lepsza od społeczności polskiej, bo jak widzę prace polskiej społeczności tłumaczy KDE to efekt ich pracy woła o pomstę do nieba, tyle tam błędów na poziomie szkoły podstawowej i to klas początkowych. W Polsce akurat prace społecznościowe nie sprawdzają się.

  • Stanisław z Łodzi

    [quote comment=”53513″]W robocie siedzę w jednym pokoju z kumplem pracującym na VS2010 (ja oblatuję wszystkie opensource’y, Linuksy i BSD – on Windowsy).
    Robiliśmy projekt – ja serwer UDP na OpenBSD, on biblioteka kliencka na Windows. Napisałem strukturę opisującą payload w ansi-C. Miała jeden (całkowicie legalny) myk – pola bitowe. Tutaj sporny kawałek struktury:

    struct RAMKA {
    unsigned long Cookie:24;
    unsigned char Cmd;
    } __attribute__ ((packed));

    GCC i Clang łykały to bez mrugnięcia okiem, generowały strukturę 4-bajtową. CL nie potrafił sobie z tym poradzić – mimo zaklęć z align(1), packed i whatever_innego generował strukturę o rozmiarze 5-8 bajtów, w zależności od kombinacji atrybutów. Pomogło dopiero zamienienie long:24 na char[3]. Struktury z polami bitowymi są w C od 1973 toku, więc póki co 40 lat. Microsoft, time to wake up![/quote]

    Zachowanie kompilatora Microsoftu jest całkowicie poprawne tzn. zgodne ze standardem. Poza tym używanie pól bitowych to z reguły zły pomysł. Nawet Linus to wie 😉
    http://yarchive.net/comp/linux/bitfields.html

  • PL_kolek

    [quote comment=”53509″]
    Nie zapominaj, że jest to kod z okolic roku 2000 kiedy Google nie podkradało programistów, najlepsi ciągle pracowali w MS itd.[/quote]
    Nie zapominaj, że żeby pracować nad jądrem systemu operacyjnego, trzeba być najlepszym.

    [quote comment=”53512″]Ta wiadomość (opublikowana wcześniej na innym popularnym portalu) połączona z tym, że NASA porzuciła Windowsa i teraz stacje kosmiczne pracują na Linuxie stały się powodem mojego zainteresowania tym systemem.
    [/quote]
    Witamy. I zapewne sam zaczynałem z Linuksem zaczytując się historiami o jego szybkości, technologicznej wyższości itp, to z czasem okazuje się, że te serwery czy NASA działające na Linuksie nie mają większego znaczenia. To jest taki poziom, jaki przy używaniu biurkowym jest nieosiągalny. Co jeszcze dziwniejsze po dłuższym czasie stwierdzam, że ta mityczna „otwartość” jest najfajniejsza. Choć nie do kodu nie zajrzałem ani razu, mnogość możliwości na każdym kroku jest fantastyczna.

    [quote comment=”53512″]
    1. Nic nie robiąc dysk pracuje a dysk mimo to bardzo często pracuje gdy na komputerze nic nie jest robione.

    2. Kiedy nic nie powinno używać łącza internetowego (wszystkie programy do komunikacji z internetem są wyłączone) Windows wysyła i odbiera dane najczęściej programem svchost co dzieje się praktycznie non stop.

    To jest bardzo dziwne i powiedziałbym podejrzane, że komputer STALE pracuje, komunikuje się z jakimś serwerem (po co?) podczas gdy powinien być w stanie spoczynku. Dlatego nie ufam Windowsowi, pora zacząć uczyć się obsługi Linuxa :)[/quote]

    1. To naprawdę przeszkadza?
    1. i 2. Linux też może mieć takie jazdy – jakieś indeksowanie chociażby może mielić. A już powodów, dla których system chce się łączyć z internetem trochę jest i zapewne Linux będzie również słał pakiety na łącza. Chociaż masz rację – łatwiej mi zaufać, że to nic złego Linuksowi, gdzie kod jest otwarty i nie ma wirusów/trojanów/czego tam jeszcze.

    Poza tym to powodzenia i dobrej zabawy, mam nadzieję że pingwin już zostanie na stałe na dysku. Ja praktycznie już nie włączam Windowsa.

  • KrzaQ

    [quote comment=”53513″]W robocie siedzę w jednym pokoju z kumplem pracującym na VS2010 (ja oblatuję wszystkie opensource’y, Linuksy i BSD – on Windowsy).
    Robiliśmy projekt – ja serwer UDP na OpenBSD, on biblioteka kliencka na Windows. Napisałem strukturę opisującą payload w ansi-C. Miała jeden (całkowicie legalny) myk – pola bitowe. Tutaj sporny kawałek struktury:

    struct RAMKA {
    unsigned long Cookie:24;
    unsigned char Cmd;
    } __attribute__ ((packed));

    GCC i Clang łykały to bez mrugnięcia okiem, generowały strukturę 4-bajtową. CL nie potrafił sobie z tym poradzić – mimo zaklęć z align(1), packed i whatever_innego generował strukturę o rozmiarze 5-8 bajtów, w zależności od kombinacji atrybutów. Pomogło dopiero zamienienie long:24 na char[3]. Struktury z polami bitowymi są w C od 1973 toku, więc póki co 40 lat. Microsoft, time to wake up![/quote]
    Nie tylko uƶywaliście niezgodnych ze standardem rozszerzeń, ale teƶ robiliście to zupełnie niepotrzebnie. Tak się uƶywa pól bitowych (jeśli trzeba – w tym przypadku w/g mnie potrzeby nie ma):
    [img]http://i.imgur.com/SxCOamN.png[/img]

    Kompilowane za pomocą kompilatora identycznego z kompilatorem vs2010.

  • adam_01001110

    [quote comment=”53539″]1. To naprawdę przeszkadza?[/quote]

    O ile przeciętnemu użytkownikowi, który trzyma na kompie mało ważne zdjęcia, filmy, czy muzykę zapewne nie przeszkadza o tyle jeśli masz komputer w firmie na którym przechowujesz wiele ważnych danych to gdy zaczyna Ci pracować „bez powodu” komputer zaczynasz się zastanawiać czy przypadkiem nie złapałeś wirusa który teraz kradnie Ci dane.

  • Maras

    [quote comment=”53513″]Napisałem strukturę opisującą payload w ansi-C. Miała jeden (całkowicie legalny) myk – pola bitowe. Tutaj sporny kawałek struktury:

    struct RAMKA {
    unsigned long Cookie:24;
    unsigned char Cmd;
    } __attribute__ ((packed));

    GCC i Clang łykały to bez mrugnięcia okiem, generowały strukturę 4-bajtową. CL nie potrafił sobie z tym poradzić – mimo zaklęć z align(1), packed i whatever_innego generował strukturę o rozmiarze 5-8 bajtów, w zależności od kombinacji atrybutów[/quote]

    Ciekawa sprawa. Tak z ciekawości wklepałem ten kod w C++ Buildera, z którego zwykle korzystam. Co prawda nie w trybie zgodności z ANSI, lecz borlandowym VCL (gdzie trzeba zmienić __attribute na #pragma pack), ale wyjście jako 4, czyli prawidłowo 🙂

  • mario005_21

    Ten dopisek to tak jakby pracodawca kazał mu poprawić.
    Swoją drogą jeśli chodzi o wydajność w windzie to nie trzeba experta żeby samemu stwierdzić ,że jest wysoce niezadowalająca.
    Nawet moge przykład podać: Mój brat korzysta z win7 i któregoś razu zaczoł się chwalić ,że kupił sobie internet LTE i super śmiga.Po czym poprosił mnie ,żebym użyczył mu laptopa bo chciał coś sprawdzić na necie.Ngdy nie zapomne jego reakcji(bezcenne) „ale szybko chodzi”,a miałem durną neostrade 6mb.
    Pozdrawam Ubufani.

  • szatan667

    [quote comment=”53549″]Nawet moge przykład podać: Mój brat korzysta z win7 i któregoś razu zaczoł się chwalić ,że kupił sobie internet LTE i super śmiga.Po czym poprosił mnie ,żebym użyczył mu laptopa bo chciał coś sprawdzić na necie.Ngdy nie zapomne jego reakcji(bezcenne) „ale szybko chodzi”,a miałem durną neostrade 6mb[/quote]
    I porównując szybki internet z wolnym stwierdzasz, że linux jest lepszy od win7? Gratuluję dobrego samopoczucia, Szerloku 🙂

  • kli

    Moją uwagę zwróciła różnica w zamykaniu programów w Linux i Windows.
    W Linuxie zamkniesz natychmiast (rozkaz jest rozkazem).
    W Windowsie nie jest tak prosto. Kończenie pracy programów trwać może kilkanaście/dziesiąt sekund a i zdarza się że wcale nie pozwoli się zamknąć (kto tu rządzi w końcu? Użytkownik przestaje być panem swego OS )

  • PL_kolek

    [quote comment=”53594″]Moją uwagę zwróciła różnica w zamykaniu programów w Linux i Windows.
    W Linuxie zamkniesz natychmiast (rozkaz jest rozkazem).
    W Windowsie nie jest tak prosto. Kończenie pracy programów trwać może kilkanaście/dziesiąt sekund a i zdarza się że wcale nie pozwoli się zamknąć (kto tu rządzi w końcu? Użytkownik przestaje być panem swego OS )[/quote]

    Poważnie uważasz, że na Linuksie kliknięcie krzyżyka oznacza natychmiastowe i bezwarunkowe zamknięcie programu? Po pierwsze – napisz program np. w SFML i nie obsłuż zdarzenia sf::Closed (czy jakoś tak). Okno się nie zamknie. Po drugie – w Linuksie możesz przechwycić większość sygnałów (m. in. po to są), więc np. możesz olać SIGTERMa. Po trzecie – myślisz, że kod np. Firefoksa jest zasadniczo różny na Windowsie i Linuksie, i gdzie w jednym program po sobie „sprząta” kilka sekund, w drugim zamyka się od razu?

    Ludzie, jest wiele zalet Linuksa, ale akurat oszukiwać się, że to system dwa razy szybszy od Windowsa to nie ma po co. Chociażby dlatego, że każdy z tych systemów jest na tyle dobrze napisany, że ma jak w magiczny sposób wycisnąć trzy razy lepszej wydajności. Pozostają „kilkuprocentowe” poprawki, optymalizacje pod sprzęt, obsługa nowych technologii. I jakby nie patrzeć, to Windows ma świetne dojścia do producentów sprzętu.

  • adam_01001110

    Fakt faktem na Ubuntu przyjemniej się pracuje. Także jeśli komuś Windows się znudził to Ubuntu może być ciekawą alternatywą która urozmaici życie, a przy okazji poszerzy horyzonty. Sam działam na tym systemie od tygodnia i jestem bardzo zadowolony. Początkowo miałem sporo problemów, ale dzięki pomocy na forum wszystko można pięknie sobie „dostroić” do własnych potrzeb. Teraz sam miarę umiejętności staram się pomóc na forum.

  • MintUser

    Dla mnie duże znaczenie ma obciążenie pamięci RAM co rzutuje na wydajność systemu i temperaturę laptopa, więc także zużycie baterii.Na moim komputerze W7 bez uruchomionych aplikacji zajmuje ok 700 MB a Linux Mint 13 MATE (Ubu 12.04) 170 MB. Lubuntu wykorzystuje poniżej 100 MB, Xubuntu 130 – 160 MB. Ubuntu z Gnome 3, Cinnamon, Unity mieści się w granicach 190 – 256 MB. Przy posiadanej pamięci 2 GB RAM ma to swoje znaczenie.

  • Piotr

    Zainteresowałem się tym systemem ponieważ jest duuuuużo ciekawszy od windowsa, samo klikanie mnie znudziło, nie powiem że jestem asem ale każdy od czegoś musi zacząć, po drugie jest spooooro ludzi zajmujących się linuksem więc można uzyskać pomoc na każde swoje pytanie czy problem… tak więc nie patrzę na to który jest szybszy system, stabilniejszy itd tylko z chęci czystego nauczenia się czegoś nowego… odkąd zacząłem używać tego systemu jestem zadowolony 🙂

  • PL_kolek

    [quote comment=”53645″]Dla mnie duże znaczenie ma obciążenie pamięci RAM co rzutuje na wydajność systemu i temperaturę laptopa, więc także zużycie baterii.[/quote]

    A wziąłeś pod uwagę fakt, że systemy operacyjne intensywnie wykorzystują pamięć RAM jako cache dla dysku gdy nie jest ona wykorzystywana przez programy? Wtedy może być zapchana cała pamięć, realne zużycie jest dużo niższe, system reaguje szybciej (nie musi doczytywać z dysku), a i energii leci mniej (ruszenie dyskiem kosztuje). Poza tym nie rozumiem zużycia pamięci jako miary efektywności systemu – szybkość reakcji i tak jest subiektywna (więc używasz tego, na czym wydaje Ci się że jest szybciej), a zużycie baterii można zmierzyć stoperem.

    Piotr: Sam też tak miałem i nadal mam. Zresztą nie bez powodu kursy systemów operacyjnych są prowadzone na Linuksie 😉

  • Kamil

    U mnie na netbooku (Samsung nc10) postawiłem xubuntu i jestem zadowolony. Wielokrotnie się przymierzałem do linuxów ale dopiero teraz udało się tak go zainstalować żeby możliwa była codzienna praca. Działanie systemu bardzo mi odpowiada a komputer działa szybciej niż pod windowsem. Oczywiście przyśpieszenie jest przede wszystkim spowodowane brakiem antywirusa w systemie 🙂 . Główny mankament to ilość oprogramowania pod linuxem i ograniczona skuteczność wine.

  • detron

    @PL_kolek
    691MB uruchomiona przeglądarka i otwarte 2 karty, system W7 uruchomiony z dysku sata3 (płyta też sata 3 obsł.) Kompozycja klasyczny Windows, (czyli wygląd w stylu Win 2000) z pełnym aero i ful bajeramy ponad 800MB zużycia pamięci RAM
    Kubuntu uruchomiony z dysku przenośnego USB2.0 KDE na ful bajerach, przeglądarka z otwartymi dwiema stronami (te same, co w przypadku W7) zużycie pamięci 390MB, jeśli chodzi o szybkość reakcji to tylko menager plików w windzie szybciej się otwiera, bo na Kubu mam dolphina, z tym, że ten drugi, to potężne narzędzie przy systemowym explorerze Win. A trzeba wziąć pod uwagę, że Kubuntu z dysku USB 2.0 jest uruchomiony. Oba systemy pod wzgl. funkcjonalności – usług tak samu skonfigurowane, i uruchamiane na tej samej maszynie. Linux pod tym względem miażdży

  • nikt0

    Programista microsoftu nie musiał tego przyznawać i tak wszyscy to wiedzieli 🙂 ale na poważnie, to jestem użytkownikiem mogę chyba rzec starej daty, tak powiedzmy że widziałem geos na własne oczy 🙂 przeszedłem drogę przez wiele systemów linuxowych i nie, i naszła mnie taka myśl że wszystko jest dla ludzi, nie każdy potrzebuje windowsa, tak jak nie każdy potrzebuje linuxa.

    Co do optymalizacji to już nie jest to co kiedyś, gdzie dbało się o każdy możliwy bajt oszczędności czy każdy dodatkowy fps. W obu przypadkach widać tendencję nadrabiania braku optymalizacji sprzętem. Jednak linux jako oprogramowanie wolne nie powinien pod tym względem przegonić windowsa, zawsze znajdzie się kilku programistów którzy poprawią to i owo aby żyło się lepiej.

    Używam obu systemów operacyjnych, taka praca nic nie poradzę i o ile kod pisze mi się wygodniej na linuksie o tyle już na przykład do codziennego użytku jak internet czy gry odpalam sobie windowsa 7. W większości miejsc gdzie dane mi było pracować, stanowiska były ograniczone do windowsów i też można było w miarę komfortowo pracować.

    Microsoft z góry jest zły bo jest komercyjny, nie zapominajmy jednak o tym co dobrego zrobił a zrobił dość dużo, choćby Visual Studio gdy pierwszy raz odpaliłem express edition, spodziewałem się miliona ograniczeń i tysiąca okienek z czerwonym napisem „Kup pełną wersję” Byłem bardzo zaskoczony możliwościami tego środowiska jak na darmową wersję, udało mi się stworzyć kilka aplikacji wykorzystujących SOAP i inne technologie bez większych problemów.

    Myślę że można też MS pochwalić za XP i Windows 7 są to na prawdę dobre systemy operacyjne.