Кіріспе
Magic бағдарламалау ортасы
Компьютерлік бағдарламалау контекстінде, "magic" – абстракция үшін бейресми термин; ол күрделі тапсырмаларды орындап, соның өзіндегі күрделілікті жасырып, қарапайым интерфейс ұсынатын кодты сипаттау үшін қолданылады. Бұл термин көбінесе әжуалық айтылады және жиі жағымсыз мағына береді, кодтың нақты қалай жұмыс істейтіні бірден түсініксіз екенін білдіреді. Мысалы, Perl тілінің полиморфты типтеу және жабу механизмдері көбінесе "magic" деп аталады. Бұл термин жасырын күрделіліктің, кем дегенде принцип бойынша, түсінілуге болатындығын білдіреді, "қара магия" және "терең магия" (Түрлеріне қараңыз) сияқты, қасақана жасырылған немесе түсінуі өте қиын құпия техникалардан өзгеше. Дегенмен, бұл термин мейіріммен де қолданылуы мүмкін, кодтың "тартымдылығын" көрсетеді. Мұндай абстракциялардың іс-әрекеті "автомагиялық" деп сипатталады, бұл "автоматты түрде" және "магиялық" сөздерінің қосындысы.
Ортогоналдылықсыз
Қайсы SV [скалярлық мән] болса да, сиқырлы болуы мүмкін, яғни, қалыпты SV-де жоқ ерекше қасиеттері болуы мүмкін. Осы сиқырлылық немесе сиқырлы қасиеттер туралы ақпарат берілгенімен, берілмегенімен де болуы мүмкін. ISO C-де файл дескрипторларын ( түрі) қауіпсіз түрде көшіруге болмайды, себебі олардың адрестері сиқырлы болуы мүмкін. Яғни, орындалу ортасы бастапқы файл дескрипторларын белгілі бір мекенжай диапазонына орналастыруы мүмкін, ал пайдаланушы жасаған көшірмеге басқа мекенжайда файл дескрипторының әрекетін беруі мүмкін емес. Осы себепті, стандартты кітапхана функциялары файл дескрипторларына көрсеткіштерді қабылдайды, оның орнына. Perl 5-те, while операторы файлдан оқылған жолды айнымалысына автоматты түрде тағайындайды және өрнекке функцияны қолданады, сондықтан сәтті оқылған кез келген жол, тіпті бос жол да, «ақиқат» ретінде бағаланып, цикл жалғастырылады. Бұл басқа жерде немесе басқа басқару өрнектерімен орын алмайды. Эмуляторда, әсіресе әзірлену кезінде, эмуляцияланған машинаның жүйелік шақыру нүктелері сиқырлы болуы мүмкін; олар шақырылғанда, эмулятор ыңғайлылық, жылдамдық немесе физикалық жабдыққа қол жеткізу үшін жергілікті кодты орындай алады және эмуляцияланған процессор мен жадты бастапқы код орындалғандай етіп орнатады. Мысалы, BBC BASIC V операторы Acorn MOS жүйелік шақыру адрестерін сиқырлы түрде қарастырады; бұл мекенжайларда ARM кодына өтуге тырысудың орнына, ол RISC OS жүйелік шақыруына тең бағдарламалық үзілісті тудырады. Нәтижесінде, 8-биттік BASIC бағдарламаларын, құрастыру тілін қамтымайтын, өзгертусіз орындау үшін Acorn MOS жеткілікті түрде эмуляцияланады. Сондай-ақ, BBC BASIC-те сандық айнымалы тек басып шығару форматын басқару ғана емес, сонымен қатар ANSI форматтағы жолдарды тікелей тағайындауды қабылдайды, бұл әдетте типтік сәйкессіздік қатесі болып табылады. Ол сондай-ақ, нақты аппараттық немесе бағдарламалық қамтамасының түсініксіз немесе құжатталмаған ерекшеліктеріне негізделген кодты білдіретін, «ауыр сиқыршылықты» да анықтайды. Мысалы, әйгілі «Сіз мұны түсінуіңіз күтілмейді» деген түсініктеме: Unix 6 ядросының бастапқы кодына дидактикалық түсіндірмелер қосылған Lions Book кітабының көптеген оқырмандары осы түсініктемені кодта табылған терең теориялық білімді көрсету деп түсіндірді, бірақ шын мәнінде оның «сиқырлы» функциясы C компиляторының PDP 11 жабдығы үшін оңтайландырылған ерекшелігіне ғана байланысты болды, Unix 6 нұсқасы осы жабдықта жұмыс істеу үшін жасалған.
This definition of magic or magical can be extended to a data type, code fragment, keyword, or machine address that has properties not shared by otherwise identical objects. The magical properties may or may not be documented. In ISO C, file handles (of type ) cannot be safely copied as their addresses may be magic. That is, the runtime environment may place original file handles in a hard coded address range, and not provide file handle behaviour to a user created copy at another address. Consequently, the standard library routines accept pointers to file handles, of type , instead. In Perl 5, the statement while implicitly assigns the line read from the file by to the variable , and applies the function to the expression so that any successfully read string, even or the empty string, evaluates as true and continues the loop. This does not happen to anywhere else, or to with any other control expression. In an emulator, especially one in development, the emulated machine's system call points may be magic; when they are called, the emulator may run native code for convenience, speed or access to physical hardware, and set up the emulated CPU and memory as if it had executed the original code. For instance, the statement of BBC BASIC V treats the system call addresses of Acorn MOS magically; instead of attempting to branch to ARM code at those addresses, it raises a software interrupt in RISC OS equivalent to the system call. The effect is to emulate Acorn MOS sufficiently for 8 bit BASIC programs not containing assembly language to run without modification. Also in BBC BASIC, not only does the numeric variable control print formatting, it accepts direct assignment of ANSI format strings, normally a type mismatch error. It also defines heavy wizardry, which refers to code based on obscure or undocumented intricacies of particular hardware or software. For an example, the infamous “You are not expected to understand this” comment: many readers of Lions’ Book, a didactically annotated commentary on the Unix version 6 kernel source code, interpreted this comment, found in the code, to suggest some deep theoretical wisdom was on display in the obscure snippet, but in fact its "magical" function was merely dependant on a peculiarity of the way the C compiler was optimised for the PDP 11 hardware on which version 6 of Unix was designed to run.