Magic Liczba (programowanie) – Wikipedia

before-content-x4

W programowaniu komputerowym termin magiczny numer (po francusku “Magiczny numer” ) może wyznaczyć:

  • Cyfrowa stała lub zestaw znaków używanych do wyznaczenia formatu pliku lub protokołu [[[ Pierwszy ] ;
  • Nienazwana lub słabo udokumentowana stała cyfrowa;
  • Zestaw wartości o określonym znaczeniu (na przykład GUIDS).
after-content-x4

Pochodzenie [[[ modyfikator |. Modyfikator i kod ]

Ten rodzaj magiczny numer pojawił się w pierwszych wersjach kodu źródłowego wersji 7 UNIX. Chociaż stracił swoje pierwotne znaczenie, termin ten pozostał w leksykonie informatyki.

Kiedy UNIX był skupiony na pierwszym DEC PDP-11/20S, nie miał mechanizmu ochrony pamięci i użył
Ponowne album Wspomnienia o odniesienia (W) [[[ 2 ] . Zatem wersje przed wersją 6 UNIX odczytały pliek wykonywalny w pamięci, skakając na przesunięcie 0. Wraz z opracowaniem paginacji, w następujących wersjach UNIX rozwinęły nagłówki Określanie komponentów pliku wykonywalnego. Instrukcja skoku umieszczona na początku nagłówek został opracowany, aby umożliwić bezpośrednio wykonywanie programu (bez czytania nagłówka); To pozwala wybrać między uruchomieniem programu za pomocą starego trybu za pomocą pamięci RealLovable ( tryb regularny ) lub przez paginację. Wraz z rozwojem formatów wykonywalnych dodano nowe stałe skoku poprzez zwiększenie przesunięcia [[[ 3 ] .

w Komentarz Lions na temat 6. edycji UNIX z kodem źródłowym (W) Z wersji 6 UNIX, funkcja exec () odczytuje obraz binarny wykonywalny z systemu plików. Pierwsze osiem bajtów tworzy nagłówek zawierający rozmiar programu (segment tekst ) i zainicjowane zmienne (segment światowy ). Pierwsze szesnaście bitów słów tego nagłówka jest porównywane z dwoma stałymi w celu ustalenia, czy wykonywalny używa realoablicznych niezapomnianych referencji, niedawno opracowanego systemu strony czytania lub osobnych stron do instrukcji i danych [[[ 4 ] . W szóstej i siódmej wersji UNIX podwójna rola tej stałej od początku nagłówka nie była określona, ​​ale silną wagą tej stałej była operacja skakania na PDP-11 (Octal 000407 lub Hex 0107). Jeśli dodamy siedem do licznika programu wykonanego programu, użyje usługi exec () Rozpocząć.

Obsługa exec () Odczytuje nagłówek plików wykonywalny (meta) z podstawowego bufora przestrzennego, ale obraz wykonywalny jest odczytany w przestrzeni użytkownika, a zatem nie jest w stanie korzystać z stałej skoku. . magiczny numer zostały następnie zaimplementowane w edytorze linków i ładowarce UNIX; Trzeba było je wykorzystać później w programach testowych dostarczanych z wersjami 6 i 7 UNIX.

W wersji 7 stała nie jest czytana bezpośrednio; Jest najpierw przypisany do zmiennej ux_mag [[[ 5 ] a następnie wyrażenie zostało wyznaczone magiczny numer . Wiedząc, że w tym UNIX było około 10 000 wierszy kodu i wielu użytych stałych, ta nazwa jest raczej ciekawa stałej, przynajmniej tak samo jak komentarz [[[ 2 ] Pozostawione w części dotyczącej zmiany kontekstu wersji 6 menedżera aplikacji UNIX. Prawdopodobnie właśnie dlatego termin określił typ wykonywalnego, a następnie rozszerzony na systemy plików i nadal rozszerzony, aby wyznaczyć wykonywające za pomocą silnego pisania.

after-content-x4

W danych [[[ modyfikator |. Modyfikator i kod ]

Kilka z tych liczb pochodzi z silnego pisania danych lub ich multipleksowania. Pozwalają programom zajmującym się informacjami na identyfikację następujących danych, a zwłaszcza rozróżnienie zastosowanego formatu danych.

Przykłady [[[ modyfikator |. Modyfikator i kod ]

  • Pliki i przepływy Unicode mogą rozpocząć się od wskaźnika rzędu obejścia (BOM), aby wskazać, że zaczyna się tekst, określając rodzaj używanego UTF i możliwej kolejności bajtów.
  • Pliki binarne Java. Kapitan . Dekompresowane za pomocą PACK200 (W) , kod jest przekształcony w Cafed00d . Uwaga: Babe to znane wyrażenie po angielsku do wyznaczenia dziewczyny (lalki), a D00D w Leet Speak odpowiada angielskiemu słowowi, który może skutkować facetem.
  • Obrazy GIF używają kodu ASCII GIF89a ( 47 49 46 38 39 61 ) Lub GIF87a ( 47 49 46 38 37 61 ).
  • Obrazy JPEG zaczynają się od Ff D8 i kończą się I D9 . Obrazy JPEG/JFIF zawierają kod ASCII dla Jfif ( 4a 46 49 46 ) i zakończ pustym ciągiem znaków. Obrazy JPEG/EXIF zawierają kod ASCII dla Exif ( 45 78 69 66 ), a także kończą łańcuchem zerowym, a następnie inne metadane.
  • Obrazy PNG zaczynają się od podpisu ośmiu bajtów: 211 P N G R N 32 N ( 89 50 4e 47 0d 0a 1a 0a ). Ten podpis pozwala na wykrywanie problemów z transmisją: ponieważ zawiera skoki linii („N”), pozwala to wykryć na przykład końcowe skoki linii dodane automatycznie podczas przeniesienia do trybu ASCII przez FTP (zamiast korzystania z trybu binarnego).
  • Standardowe pliki MIDI zaczynają się od MTHD ( 4d 54 68 64 ), a następnie inne metadane.
  • Skrypty UNIX zawsze zaczynają się od shebang ” #! »( 23 21 ), a następnie adres interpretera zamówienia, który ma zostać wykonany.
  • Pliki i program PostScript zaczynają się od ” %! »( 25 21 ).
  • Dawne elementy wykonywalne. przenośny wykonywalny z Microsoft Windows zaczyna się od kanału MZ ( 4d 5a ); To są inicjały projektanta tych formatów, Mark Zbikowski (W) . Kod ZM ( 5a 4d ) jest również możliwe, ale jest rzadsze.
  • W systemie plików UFS superBlocchs Dane (W) są identyfikowane przez kody 19 54 01 19 Lub 01 19 54 W zależności od używanej wersji. Oba odpowiadają datę urodzenia ich projektanta, Marshalla Kirka McKusicka.
  • Główny rekord rozruchu ruchomych urządzeń wszystkich kompatybilnych z IA-32 maszyn PC kończy się AA 55 .
  • Główne Consoles Game Boy i Game Boy Advance zaczynają się od sekwencji 48 i odpowiednio 156 bajtów, które odpowiadają kodowaniu bitmapy logo Nintendo.
  • Zaczyna się archiwa zip ” Pk »( 50 4b ), inicjały Phila Katza, który jest autorem użyteczności kompresji PKZIP DOS.
  • The Ekcesmetables for Amiga (Hunk Amiga (W) On Magic Cookie ».
  • Pierwsze wersje czarnego ekranu śmierci Amigi – zwane także medytacją Guru, która występuje podczas niezidentyfikowalnego błędu – wyświetl kod 48454C50 który odpowiada w ASCII do ” POMOC »(48 = H, 45 = E, 4C = L, 50 = P).
  • Jedynym bezwzględnym adresem systemu Amiga to 0000 0004 USD (Adres lokalizacji 4), który zawiera system podstawowy „sysbase”, wskaźnik do exec.library , jądro systemowe.
  • PowerPC PEF wykonywalne (W) Używane na Mac OS i BeoS zaczynają się od kanału ASCII z ” Radość! »: 4a 6f 79 21 21 .
  • Obrazy TIFF zaczynają się od Ii Lub Mm śledzony przez ” 42 »( 2a Z heksadecimal)-W odniesieniu do książki Douglasa Adamsa Najważniejsze pytanie o życie, wszechświat i reszta-jako liczba całkowita kodowana na dwóch bajtach w małych lub dużych podmiotach w zależności od rodzaju procesora. „” Ii »Jest używany na Intel (Petit Boutiste), który podaje kod 49 49 2a 00 . ‘ Mm »Jest używany na Motorola (Gros-Boutiste): 4d 4d 00 2a .
  • Pliki tekstowe Unicode kodowane w UTF-16 ogólnie zaczynają się od wskaźnika zamówienia bajtowego w celu wykrycia endianness ( Fe Dla dużych end-endian i I dla Little-endian). Pliki UTF-8 najczęściej zaczynają się od EF BB BF .
  • BYTECODES dla LLVM zaczynają się od pne ( 42 43 ).
  • Pliki WAD, używane przez gry oparte na silniku ID Tech 2, zacznij od Wad2 (Trzęsienie i pochodne) lub Wad3 (Quake II i pochodne).

Wykrycie [[[ modyfikator |. Modyfikator i kod ]

Pod UNIX, polecenie plik pozwala zlokalizować format pliku z podpisu [[[ 6 ] . Istnieje kilka projektów próbujących je wymienić [[[ 7 ] W [[[ 8 ] .

W protokole [[[ modyfikator |. Modyfikator i kod ]

  • Protokół Oscara używany przez żądania prefiksu AIM/ICQ 2a .
  • W protokole RFB używanym przez VNC program klientów zaczyna od wysłania RFB ( 52 czterdzieści sześć 42 ) Monitorowanie według numeru wersji protokołu używanego przez klienta.
  • W protokole SMB używanym przez system Windows, każde żądanie i każda odpowiedź serwera zaczynają się od Ff 53 4d 42 , to znaczy, przekształcając heksadecimal w ASCII: xffsmb .
  • W protokole MSRPC (W) w systemie Windows, każde żądanie TCP zaczyna się od 05 Do „Microsoft DCE/RPC wersja 5”, a następnie 00 Lub 01 Dla drobnego numeru wersji. Żądania UDP zawsze zaczynają się od 04 .
  • Interfejsy com i dcom jako objref (W) Zawsze zacznij od „Meow” ( 4d 45 4f 57 ). Rozszerzenia debugowania używane przez DCOM zaczynają się od „Marb” ( 4d 41 52 42 ).
  • Rozpoczyna się niekwestionowana prośba o Bittorrent Tracker 13 (który reprezentuje długość nagłówka), a następnie wyrażenie „protokół bittorrent”.
  • Pakiety Edonkey2000 i Emule, tworząc tylko bajt zawierają używaną wersję klienta: obecnie E3 reprezentuje klienta Edonkey, C5 klient naśladuje i D4 Klient emulujący za pomocą kompresji.
  • Transakcje SSL zawsze zaczynają się od wiadomości ” Klient Hello ». Schemat enkapsulacji pakietów SSL zastrzega się dwa lub trzy bajty dla nagłówka. Ogólnie A ” Klient Hello »Klient SSL w wersji 2 zaczyna się od 80 A odpowiedź serwera wersji 3 na klienta zaczyna się od 16 (ale może się różnić).
  • Pakiety DHCP używają Magic Cookie 63 82 53 63 Na początku sekcji opcji wszystkich pakietów. Ta magiczna liczba odpowiada sekwencji ASCII “? R5? „(Traktując wartości szesnastkowe jako wartości dziesiętne), jest zdefiniowane w wersji 5 prekursora protokołu BOOTP DHCP.

Termin magiczny numer Może również odpowiadać użyciu nienazwanych stałych cyfrowych w kodzie źródłowym programu. Zastosowanie tych stałych narusza stare zasady programowania od Cobol, Fortran i Pl/I [[[ 9 ] , nie wyjaśnia, aby wybór tej wartości [[[ dziesięć ] i ogólnie powoduje błędy programowania. Według niektórych nazewnictwo wszystkich stałych sprawia, że ​​kod jest bardziej czytelny, bardziej zrozumiały i łatwiejszy [[[ 11 ] .

Nazwa stałych musi mieć znaczenie w zależności od kontekstu; Na przykład lepiej jest unikać kodów gatunku SCUTIZE = 16 chwila Name_bits byłby jaśniejszy.

Problemy z nimi magiczny numer nie ograniczają się do stałych cyfrowych; Termin ten jest również używany do innych rodzajów danych, deklaracja stałych jest bardziej elastyczna i znacząca [[[ 9 ] . W ten sposób deklaruj Const String Test Ameurizer = „Jean” jest lepsze niż korzystanie z słowa kluczowego ” Drelich „W rozpowszechniony sposób w programie; ponadto upraszcza to fazę testową.

Na przykład następujący pseudo-kod pozwala losowo wymieszać wartości tabeli reprezentującej zestaw 52 kart:

 Do I z Pierwszy Do 52
     J: = i + losowe (53 - i) - 1
     Jeu.Swapentries (i, j) 

Lub gra to obiekt typu tabeli, funkcja Randomint (x) wybrał liczbę losową między 1 a X w tym i Swapentries (I, J) wymienić pozycję danych umieszczonych I I J Na obrazie. W tym przykładzie 52 jest magiczny numer . Wskazane jest pisanie:

 stały  int Nazwa Decart: = 52 Do I z Pierwszy Do Liczba kart
     J: = i + losowe (numerDecartes + 1 - i) - 1
     game.swapantries (i, J) 

I to z wielu powodów:

  • Drugi przykład jest łatwiejszy do odczytania i zrozumienia. Czytanie programistów pierwszego przykładu zastanowi się „dlaczego 52?” Chociaż z pewnością byłby w stanie zrozumieć, starannie czytając cały kod. . magiczny numer Staj się mylący, gdy ta sama wartość jest używana do wyznaczenia zupełnie innych rzeczy w tej samej części kodu.
  • Łatwiej jest zmodyfikować wartość stały, ponieważ nie jest ona powielana. Zmień wartość magiczny numer jest źródłem błędu, ponieważ ta sama wartość jest bardzo często używana w kilku miejscach w programie. Możliwe jest również, że dwie zmienne o różnych znaczeniach mają tę samą wartość; Stwarza to problem z ich rozróżnieniem. Aby dostosować pierwszy przykład do gry tarota 78 kart, programista mógłby naicznie zastąpić wszystkie zdarzenia o 52 na 78. Może to spowodować dwa problemy: po pierwsze, wartość 53 drugiego wiersza przykładu nie zostanie zmieniona i przyniesie The program zajmujący się jedynie częścią gry karcianej; Po drugie, może zastąpić łańcuch „52” w całym programie, nie zwracając uwagi na to, co to znaczy, co z pewnością wprowadziłoby błędy. Dla porównania zmień wartość Nazwa Dekartes W drugim przykładzie jest bardzo prosta operacja i wymaga modyfikacji tylko jednej linii.
  • Deklaracja zmiennych zastępujących magiczny numer są umieszczane na początku funkcji lub plików w celu ułatwienia ich badań i modyfikacji.
  • Wprowadzenie parametrów jest łatwiejsze. Na przykład, aby uogólnić przykład i sprawić, że może on mieszać dowolną wiązkę kart, konieczne byłoby przejście Nazwa Dekartes W parametrze procedury:
 funkcjonować melanż( int Nazwa Decartesa) Do I z Pierwszy Do Liczba kart
        J: = i + losowe (numerDecartes + 1 - i) - 1
        game.swapantries (i, J) 
  • Łatwiej jest wykryć skorupy, ponieważ zadeklarowana zmienna jest weryfikowana przez kompilator. Na przykład Wpisz „62” zamiast „52” nie zostanie wykryte, podczas gdy „numberDeCates” zamiast „NumberDecartes” podniosą ostrzeżenie (lub błąd) kompilatora informującego, że „numeryDeCates” nie są zdefiniowane.
  • Umożliwia to również zminimalizowanie wpisów klawiatury w IDE, umożliwiając całkowicie automatyczne: Wystarczy wpisać pierwsze litery zmiennej, aby IDE uzupełniało ją automatycznie.

Nadal są pewne wady:

  • Wykonanie wyrażenia Nazwa Decartes + 1 wymaga więcej czasu niż wyrażenie 53 . Niemniej jednak większość kompilatorów i współczesnych tłumaczy jest w stanie zrozumieć, że zmienna Nazwa Dekartes został ogłoszony stałą i wartość przed klasą 53 w skompilowanym kodzie.
  • Użycie dużych nazw zmiennych wydłuża linie kodu, zmuszając pewne wiersze kodu do rozłożonego na kilku liniach.
  • Debu może być trudniejsze, jeśli debugger nie stanowi korespondencji między nazwami zmiennymi a ich wartością.

Używa akceptowanych jako nienazwanych stałych cyfrowych [[[ modyfikator |. Modyfikator i kod ]

W niektórych przypadkach – zależne od nawyków kodowania – akceptowane jest użycie stałych cyfrowych:

  • użycie 0 lub 1 jako wartości początkowej lub wartości przyrostowej w pętli dla: dla (int i = 0; i (Zakładając, że zwiększenie I ++ nie jest wspierany);
  • Użycie 2 w wyrażeniach matematycznych: obwód = promień * Math.pi * 2 ;
  • Użycie 2 do sprawdzenia, czy liczba jest równa lub dziwna: bool estPair = (x%2 == 0) , Lub % jest operatorem modulo.

Stałe 1 i 0 są czasami używane do reprezentowania wartości logicznych „True” i „False” w językach programowania, które nie mają tego typu (jak stare wersje C).

W C/C ++ 0 jest czasami używane do przedstawienia wskaźnika zerowego lub odniesienia. Podobnie jak w przypadku wartości logicznych, standardowe biblioteki C zawierają makro definicję ZERO którego użycie jest zdecydowanie zalecane. Inne języki oferują wartości zero Lub zero konkretny.

Możliwe jest tworzenie lub zmodyfikowanie GUID, aby były one łatwe do zapamiętywania, chociaż może to wpłynąć na ich skuteczność i wyjątkowość [[[ dwunasty ] . Zasady generowania GUD i UUID są złożone, ale upewnij się, że masz unikalne liczby, jeśli są one skrupulatnie przestrzegane.

Zaczyna się kilka guidów Java ” CAFEEFAC ».

Niektóre „magiczne liczby” składają się z konkretnej wartości wpisanej w pamięć RAM podczas dodatku pamięci, aby ułatwić debugowanie w przypadku awarii. Podczas debugowania zawartość pamięci jest zazwyczaj wyświetlana w szesnastku. Wartości rozsądnie wybrane jako powtarzające się sekwencje liter sześciokadciowców lub słów w szesnastce są łatwiejsze do rozpoznania przez ludzkiego operatora.

Zastosowanie wartości nieparzystych jest szczególnie przydatne w procesorach niezdolnych do wysyłania pamięci na bajt, ponieważ sadzą, jeśli spróbują użyć go jako wskaźnika. Podobnie, wolimy wartości, które nie są częścią instrukcji.

Ponieważ rzadko zdarza się, że liczba całkowita zakodowana z 32 -bitowa przyjmuje tak konkretną wartość, pojawienie się jednej z tych liczb w debuggerze lub w zrzucie rdzenia zasadniczo wskazuje na wyprzedzenie bufora lub zmienną niezainicjowaną.

Klasyczne wartości
Kod Opis
..FASADA Używane przez wiele systemów operacyjnych w czasie rzeczywistym
8badf00d Używane przez Apple jako kod wyjątku w iPhonie, gdy aplikacja trwała zbyt długo, aby rozpocząć lub zakończyć
A5A5A5A5 Używany w systemach na tablicych, ponieważ odpowiednia sekwencja binarna (10100101) jest łatwo rozpoznawalna na oscyloskopie lub w analizatorze logicznym
Fabs Używane przez funkcję Heapalloc () Microsoft, aby zaznaczyć ” Ziemia niczyja »Bajt d’on straż (W) Po zasiłku pamięci sterta
Abadbabe Używane przez Apple jako ” Blok zero rozruchu »
Abadcafe Wartość inicjalizacji używana do zdemaskowania złamanych wskaźników
BAADF00D Używane przez funkcję LocalAlloc (LMEM_FIXED) Microsoft, aby zaznaczyć pamięć sterta przydzielone, ale nie zainicjowane
Miejsce Używany w kalkulatorach Burroughs Corporation do zlokalizowania niezainicjowanej pamięci (48-bitowe słowo)
Badc0ffee0ddf00d Stosowane w systemie 64 -bitowym RS/6000 w celu wskazania niezainicjowanych rejestrów procesorów
Badcab1e Kod błędu zwrócony przez debuggera EVC, gdy połączenie z debuggerem zostanie odcięte
Baddcafe W ramach Solaris oznacza pamięć jądra, która nie jest inicjowana (KMEM_UNINITIALIZED_PATTERN)
Wołowina Używany w .NET Framework jako magiczny numer plików zasobów.
C0DEDBAD Używane do debugowania tabel MMU.
Kapitan W elementach wykonywalnych Mach-O (gruby binarny (W) w procesorach 68K i PowerPC) w celu identyfikacji plików obiektowych i .class Java
CAFEFEED Pod Solaris oznacza pamięć przydzieloną przez funkcję kmemfree () Do debugowania
CCCCCCCCC Używany przez Microsoft C ++ Debugging Bookseller do zlokalizowania nieinitializowanej pamięci stosu
CDCDCDCD Używany przez Microsoft C ++ Debugging Bookseller do zlokalizowania nieograniczonej pamięci sterty
Cefaedfe Może widoczne w binariach MAC-O MAC OS X (patrz Feedface )
Ddddddd Używany przez Smartheap Microquill i debugger pamięci C ++ Microsoft, aby zaznaczyć pamięć zwolnioną sterty
Deadbabe Zaznacz początek plików Irix Arena
MARTWA WOŁOWINA Znany jako używany w systemach IBM (szczególnie w RS/6000), pierwszym systemie OS Mac (OpenStep) i na Commodore Amiga. Pod Solaris oznacza pamięć wyzwolonego jądra (kmem_free_pattern)
Deaddead Windows Stop Error Code Używany, gdy użytkownik upadnie dobrowolnie
Deadf00d Oznaczają wszystkie nowe wspomnienia przydzielone, gdy nie zostały wyraźnie oczyszczone po korupcji
Deadfa11 Używane przez Apple jako wyjątkowy kod w iPhonie, gdy użytkownik zmusił aplikację do wyjścia
W bebb Polać smartheap
Fadedead Zaznacz koniec skryptów AppleScript
FDFDFDFD Używane przez debugger pamięci Microsoft C ++, aby zaznaczyć ” Ziemia niczyja »Bajt d’on straż (W) Przed i po pamięci sterta asygnowany
Fee1Dead Używane przez połączenie systemowe ponowne uruchomienie() de Linux
Feedface Można zobaczyć na binarnym PowerPC Mach-O Mac OS X. Sous Solaris, oznacza czerwoną strefę (KMEM_REDZONE_PATTERN)
Feeefeee Używane przez funkcję Heapfree () Microsoft, aby zaznaczyć pamięć sterta wydany

Większość z tych wartości ma rozmiar 32 bitów: rozmiar słowa na 32 -bitowych procesorach.

Powszechne stosowanie takich wartości w Microsoft Technologies to nie tylko przypadek, ponieważ te ostatnie są powszechnie komentowane w książce Steve’a Maguire’a (W) Pisanie solidnego kodu (W) , Chez Microsoft Press (W) . Daje to kilka kryteriów, aby je wybrać:

Ponieważ są one często używane do identyfikacji wspomnień, które powinny być puste, czasami są one używane we wspólnym języku w tym sensie „zagubione, porzucone, opróżnione z pamięci”: na przykład „Twój program jest Deadbeef” [[[ 13 ] .

Język programowania zuga Pietr Brandehörst zainicjował pamięć z wartościami 0000 W MARTWY Lub Ffff w fazie rozwoju i 0000 W fazie produkcyjnej, tak że niezainicjowane zmienne pozostają wykrywalne przez programistów, ale tak niewielkie, jak to możliwe [Ref. niezbędny] .

  1. (W) Projekt informacyjny Linux, Magiczna definicja liczby » W (skonsultuję się z )
  2. A et b Dziwne komentarze i dziwne czyny w UNIX (W) http://cm.bell-labs.com/cm/who/dmr/odd.html » ( Archive.org • • Wikiwix • • Archiwum • • Google • Co robić ?) (skonsultuję się z ) .
  3. Osobista komunikacja z Dennisem M. Ritchie
  4. Wersja Six System1 Plik źródłowy [Pierwszy]
  5. Wersja Seven System1 Plik źródłowy [2]
  6. (W) Gary C. Kessler, Magiczne liczby Linux » (skonsultuję się z )
  7. (W) Richard Ogley, Złóż magiczne liczby » W (skonsultuję się z )
  8. Gary C. Kessler, Tabela podpisów pliku » W (skonsultuję się z )
  9. A et b (W) Robert c Jaskółka oknówka W Czysty kod: Podręcznik kunsztu zwinnego , Boston, Prentice Hall, , 300 P. (ISBN 978-0-13-235088-4 I 0-13-235088-2 , OCLC 223933035 ) , Chapitre 17: Zapach i heurystyka – G25 zastępują magiczne liczby na nazwane stałe
  10. (W) Robert c Jaskółka oknówka W Czysty kod: Podręcznik kunsztu zwinnego , Boston, Prentice Hall, , 300 P. (ISBN 978-0-13-235088-4 I 0-13-235088-2 , OCLC 223933035 ) , Chapitre 17: Zapach i heurystyka – G16 zaciemnione intencje
  11. (W) Jeff Vogel, Sześć sposobów pisania bardziej zrozumiałego kodu » W (skonsultuję się z )
  12. (W) Joseph M. Newcomer, Zarządzanie wiadomościami – gwarantując wyjątkowość » W (skonsultuję się z )
  13. NDT: szczególnie w języku angielskim; Tutaj, jeśli uszkodzenie (uszkodzone) istniały heksadecimal, przykład dałby: „Twój program jest uszkodzony”.

Powiązane artykuły [[[ modyfikator |. Modyfikator i kod ]

  • Na ( Nie liczba ), kategoria magicznych liczb
  • Szesnastka

Link zewnętrzny [[[ modyfikator |. Modyfikator i kod ]

after-content-x4