บทความนี้ไม่มีจาก |
พอลิกล็อต (อังกฤษ: polyglot) ในทางคอมพิวเตอร์ หมายถึง โปรแกรมคอมพิวเตอร์หรือที่เขียนขึ้นในรูปแบบที่ถูกต้องของภาษาโปรแกรมหลายภาษาด้วยรหัสต้นฉบับอันเดียวกัน ซึ่งโปรแกรมจะทำงานหรือให้ผลลัพธ์เหมือนกันจากการแปลด้วยคอมไพเลอร์หรืออินเทอร์พรีเตอร์ของภาษานั้นอย่างอิสระ
โดยทั่วไปแล้วพอลิกล็อตเขียนขึ้นจากการผสานภาษาซี ซึ่งอนุญาตให้มีการจำกัดความ (define) วลีต่างๆ ได้ด้วย (preprocessor) รวมกับภาษาสคริปต์อื่นๆ เช่น ภาษาลิสป์ ภาษาเพิร์ล หรือ sh
เทคนิคที่ใช้เป็นปกติที่สุดสองอย่างสำหรับการสร้างโปรแกรมพอลิกล็อตคือ การใช้ประโยชน์จากแทนหมายเหตุ (comment) ที่แตกต่างกัน และการจำกัดความวลีด้วยการทำงานในภาษาอื่น และเทคนิคที่ใช้ได้ดีอีกอย่างหนึ่งคือ การพลิกแพลงไวยากรณ์ของภาษา จากตัวอย่างต่อไปนี้เป็นพอลิกล็อตที่เขียนขึ้นเพื่อทำงานบน ภาษาซีแบบแอนซี (ANSI C) ภาษาพีเอชพี และ bash
#define a /* #<?php echo "\010Hello, world!\n"// 2> /dev/null > /dev/null \ ; // 2> /dev/null; x=a; $x=5 // 2> /dev/null \ ; if (($x)) // 2> /dev/null; then return 0; // 2> /dev/null; fi #define e ?> #define b */ #include <stdio.h> #define main() int main() #define printf printf( #define true ) #define function function main() { printf "Hello, world!\n"true/* 2> /dev/null | grep -v true*/; return 0; } #define c /* main #*/
โปรแกรมดังกล่าวจะแสดงข้อความ Hello, world!
พร้อมทั้งขึ้นบรรทัดใหม่บนจอภาพ สามารถอธิบายได้ดังนี้
- "
#
" หมายถึงประพจน์ของในภาษาซี แต่หมายถึงการระบุหมายเหตุใน bash และภาษาพีเอชพี - "
//
" คือหมายเหตุในภาษาพีเอชพี และหมายถึง (root directory) ใน bash - การเปลี่ยนทางของเชลล์ถูกใช้เพื่อขจัดผลลัพธ์ที่ไม่ต้องการ
- โค้ดระบุตำแหน่งภาษาพีเอชพี "
<?php
" กับ "?>
" ยังคงใช้ได้ผล แม้จะอยู่ในบรรทัดที่ระบุหมายเหตุเอาไว้ - ประพจน์ "
function main()
" สามารถใช้ได้ทั้งในภาษาพีเอชพีและ bash ในขณะที่ภาษาซีจะใช้ "#define
" เป็นเครื่องมือแปลงประพจน์นั้นให้กลายเป็น "main()
" ขณะแปลภาษา - อักขระกำหนดหมายเหตุสามารถผสานกันเพื่อให้ทำงานได้หลากหลาย
- "
if (($x))
" เป็นประพจน์ที่ถูกต้องทั้งใน bash และภาษาพีเอชพี - "
printf
" เป็น (shell builtin) ของ bash ซึ่งเหมือนกับฟังก์ชันในภาษาซี เว้นแต่ไม่มีการกำหนดวงเล็บ (ตัวประมวลผลก่อนของภาษาซีจะเป็นผู้เติมวงเล็บให้) - สามบรรทัดสุดท้ายถูกใช้เฉพาะใน bash เพื่อเรียกฟังก์ชัน "
main
" ในภาษาพีเอชพีฟังก์ชันนี้ได้นิยามไว้แล้วแต่ไม่มีการใช้ ส่วนภาษาซีไม่จำเป็นต้องเรียกใช้
แหล่งข้อมูลอื่น
- พอลิกล็อตแปดภาษา (ภาษาโคบอล ภาษาปาสกาล ภาษาฟอร์แทรน ภาษาซี เชลล์ยูนิกซ์ ภาษาเครื่องของ และ ภาษาเพิร์ล 5)
- รายชื่อพอลิกล็อต
- พอลิกล็อต Merry Christmas ในสี่ภาษา 2008-05-09 ที่ เวย์แบ็กแมชชีน
- พอลิกล็อต Happy New year ในสี่ภาษา
- พอลิกล็อตสี่ภาษา 2008-03-14 ที่ เวย์แบ็กแมชชีน (ภาษาซีแบบแอนซี เชลล์ยูนิกซ์ ภาษาเพิร์ล และ )
wikipedia, แบบไทย, วิกิพีเดีย, วิกิ หนังสือ, หนังสือ, ห้องสมุด, บทความ, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม, มือถือ, โทรศัพท์, Android, iOS, Apple, โทรศัพท์โมบิล, Samsung, iPhone, Xiomi, Xiaomi, Redmi, Honor, Oppo, Nokia, Sonya, MI, PC, พีซี, web, เว็บ, คอมพิวเตอร์
bthkhwamniimmikarxangxingcakaehlngthimaidkrunachwyprbprungbthkhwamni odyephimkarxangxingaehlngthimathinaechuxthux enuxkhwamthiimmiaehlngthimaxacthukkhdkhanhruxlbxxk eriynruwacanasaraemaebbnixxkidxyangiraelaemuxir phxliklxt xngkvs polyglot inthangkhxmphiwetxr hmaythung opraekrmkhxmphiwetxrhruxthiekhiynkhuninrupaebbthithuktxngkhxngphasaopraekrmhlayphasadwyrhstnchbbxnediywkn sungopraekrmcathanganhruxihphllphthehmuxnkncakkaraepldwykhxmiphelxrhruxxinethxrphrietxrkhxngphasannxyangxisra odythwipaelwphxliklxtekhiynkhuncakkarphsanphasasi sungxnuyatihmikarcakdkhwam define wlitang iddwy preprocessor rwmkbphasaskhriptxun echn phasalisp phasaephirl hrux sh ethkhnikhthiichepnpktithisudsxngxyangsahrbkarsrangopraekrmphxliklxtkhux karichpraoychncakaethnhmayehtu comment thiaetktangkn aelakarcakdkhwamwlidwykarthanganinphasaxun aelaethkhnikhthiichiddixikxyanghnungkhux karphlikaephlngiwyakrnkhxngphasa caktwxyangtxipniepnphxliklxtthiekhiynkhunephuxthanganbn phasasiaebbaexnsi ANSI C phasaphiexchphi aela bash define a lt php echo 010Hello world n 2 gt dev null gt dev null 2 gt dev null x a x 5 2 gt dev null if x 2 gt dev null then return 0 2 gt dev null fi define e gt define b include lt stdio h gt define main int main define printf printf define true define function function main printf Hello world n true 2 gt dev null grep v true return 0 define c main opraekrmdngklawcaaesdngkhxkhwam Hello world phrxmthngkhunbrrthdihmbncxphaph samarthxthibayiddngni hmaythungpraphcnkhxnginphasasi aethmaythungkarrabuhmayehtuin bash aelaphasaphiexchphi khuxhmayehtuinphasaphiexchphi aelahmaythung root directory in bash karepliynthangkhxngechllthukichephuxkhcdphllphththiimtxngkar okhdrabutaaehnngphasaphiexchphi lt php kb gt yngkhngichidphl aemcaxyuinbrrthdthirabuhmayehtuexaiw praphcn function main samarthichidthnginphasaphiexchphiaela bash inkhnathiphasasicaich define epnekhruxngmuxaeplngpraphcnnnihklayepn main khnaaeplphasa xkkhrakahndhmayehtusamarthphsanknephuxihthanganidhlakhlay if x epnpraphcnthithuktxngthngin bash aelaphasaphiexchphi printf epn shell builtin khxng bash sungehmuxnkbfngkchninphasasi ewnaetimmikarkahndwngelb twpramwlphlkxnkhxngphasasicaepnphuetimwngelbih sambrrthdsudthaythukichechphaain bash ephuxeriykfngkchn main inphasaphiexchphifngkchnniidniyamiwaelwaetimmikarich swnphasasiimcaepntxngeriykichaehlngkhxmulxunphxliklxtaepdphasa phasaokhbxl phasapaskal phasafxraethrn phasasi echllyuniks phasaekhruxngkhxng aela phasaephirl 5 raychuxphxliklxt phxliklxt Merry Christmas insiphasa 2008 05 09 thi ewyaebkaemchchin phxliklxt Happy New year insiphasa phxliklxtsiphasa 2008 03 14 thi ewyaebkaemchchin phasasiaebbaexnsi echllyuniks phasaephirl aela bthkhwamkhxmphiwetxr xupkrntang hruxekhruxkhayniyngepnokhrng khunsamarthchwywikiphiediyidodykarephimetimkhxmuldkhk