Кіріспе

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 нұсқасы осы жабдықта жұмыс істеу үшін жасалған.