Magik (programming language)
மேஜிக் என்பது ஒரு பொருள் சார்ந்த நிரலாக்க மொழியாகும், இது பல பரம்பரை மற்றும் பாலிமார்பிசத்தை ஆதரிக்கிறது, மேலும் இது மாறும் வகையில் தட்டச்சு செய்யப்படுகிறது. இது 1989 ஆம் ஆண்டில் ஸ்மால் வேர்ல்ட் சிஸ்டம்ஸ் லிமிடெட் நிறுவனத்தின் ஆர்தர் சான்ஸ் என்பவரால் ஸ்மால் வேர்ல்ட் புவியியல் தகவல் அமைப்பின் (ஜிஐஎஸ்) ஒரு பகுதியாக வடிவமைக்கப்பட்டு செயல்படுத்தப்பட்டது. 2000 ஆம் ஆண்டில் ஸ்மால்வேர்ல்ட் கையகப்படுத்தியதைத் தொடர்ந்து, மேஜிக் இப்போது ஜிஇ எனர்ஜியால் வழங்கப்படுகிறது, இன்னும் அதன் ஸ்மால்வேர்ல்ட் தொழில்நுட்ப தளத்தின் ஒரு பகுதியாக உள்ளது. மேஜிக் (இன்ஸ்பிரேஷனல் மேஜிக்) முதலில் 1990 இல் அறிமுகப்படுத்தப்பட்டது மற்றும் பல ஆண்டுகளாக மேம்படுத்தப்பட்டு புதுப்பிக்கப்பட்டுள்ளது. இதன் தற்போதைய பதிப்பு 5.2 ஆகும். ஜூலை 2012 இல், மேஜிக் டெவலப்பர்கள் ஜாவா மெய்நிகர் இயந்திரத்தில் மேஜிக் மொழியை போர்ட் செய்யும் பணியில் இருப்பதாக அறிவித்தனர். வெற்றிகரமான போர்ட்டிங் அதே ஆண்டு நவம்பரில் ஆரக்கிள் கார்ப்பரேஷனால் உறுதிப்படுத்தப்பட்டது. ஸ்மால்டாக் மேஜிக் உடனான ஒற்றுமைகள் ஸ்மால்டாக்குடன் அதன் மொழி அம்சங்கள் மற்றும் அதன் கட்டமைப்பின் அடிப்படையில் சில ஒற்றுமைகளைப் பகிர்ந்து கொள்கின்றனஃ மேஜிக் மொழி மேஜிக் மெய்நிகர் இயந்திரத்தால் விளக்கப்பட்ட பைட் குறியீடுகளாக தொகுக்கப்பட்டுள்ளது. மேஜிக் மெய்நிகர் இயந்திரம் மைக்ரோசாப்ட் விண்டோஸ், யுனிக்ஸ் மற்றும் லினக்ஸின் பல்வேறு சுவைகள் உள்ளிட்ட பல தளங்களில் கிடைக்கிறது. மேஜிக் என்பது கன்சோல் அடிப்படையிலானது மற்றும் ஒரு பயன்பாடு இயங்கும் போது கூட குறியீட்டை மாற்றியமைக்கலாம். மேஜிக் குறியீட்டை இயக்குவதற்கும் முடிவுகளைக் காண்பதற்கும் கன்சோல் பயன்படுத்தப்படலாம். தொகுக்கப்பட்ட குறியீடு ஒரு படக் கோப்பு எனப்படும் ஒற்றைக் கோப்பில் சேமிக்கப்படுகிறது. ஒவ்வொரு படக் கோப்பிலும் படம் கடைசியாக சேமிக்கப்பட்டபோது தொகுக்கப்பட்ட பைட்-குறியீடுகள் மற்றும் அமர்வின் நிலை (எடுத்துக்காட்டாக மாறி மதிப்புகள்) உள்ளன. மொழி அம்சங்கள் கருத்துகள் மேஜிக் குறியீட்டின் பிரிவுகளை கருத்துகளாகக் குறிக்க #டோக்கனைப் பயன்படுத்துகிறதுஃ #இது ஒரு கருத்து. ஒதுக்கீடுகளைச் செய்ய மேஜிக் <<ஆபரேட்டரைப் பயன்படுத்துகிறதுஃ a <<1.234 b <<b + a c <<"ஃபூ" + "பார்" #கான்கட் சரங்கள் தெளிவுக்காக, இந்த குறியீடு "a என்பது 1.234 ஆகிறது" அல்லது "b என்பது b பிளஸ் a ஆகிறது" என்று படிக்கப்படுகிறது. இந்த சொற்களஞ்சியம் ஒதுக்கீட்டை ஒப்பீட்டிலிருந்து பிரிக்கிறது. இந்த இயக்கியின் சுருக்கப்பட்ட மாறுபாட்டை மேஜிக் ஆதரிக்கிறது, இது C: b + <<a #க்கு சமமாக b <<b + a இல் காணப்படுகிறது ஒரு மாறியை அச்சிட நீங்கள் பின்வரும் கட்டளையைப் பயன்படுத்தலாம் a <<"ஹலோ" எழுதவும் (a) சின்னங்கள் அத்துடன் முழு எண்கள், மிதவைகள் மற்றும் சரங்கள் போன்ற வழக்கமான தரவு வகைகளும் மேஜிக் சின்னங்களை செயல்படுத்துகிறது. சின்னங்கள் என்பது ஒரு சிறப்பு டோக்கன் தரவு வகையாகும், அவை பொருட்களை தனித்துவமாக அடையாளம் காண மேஜிக் முழுவதும் விரிவாகப் பயன்படுத்தப்படுகின்றன. அவை ஒரு பெருங்குடல் மூலம் குறிப்பிடப்படுகின்றன, அதைத் தொடர்ந்து எழுத்துக்களின் சரம். செங்குத்து பட்டை எழுத்தைப் பயன்படுத்தி சின்னங்களைத் தவிர்க்கலாம். எடுத்துக்காட்டாகஃ ஹலோ எதிர்கொள்ளும் போதெல்லாம் a <<: ஹலோ #, இது அதே நிகழ்வாகும் b <<: |hello உலக | டைனமிக் தட்டச்சு மேஜிக் மாறிகள் சி #என்று சொல்வதைப் போல தட்டச்சு செய்யப்படவில்லை மற்றும் இயக்க நேரத்தில் வெவ்வேறு பொருள்களைக் குறிக்க முடியும். மேகிக்கில் உள்ள அனைத்தும் ஒரு பொருள் (பொருள்கள் மற்றும் முழு எண்கள் போன்ற பழமையான வகைகளுக்கு இடையே வேறுபாடு இல்லை): ஒரு <<1.2 #ஒரு மிதக்கும் புள்ளி எண் மாறி 'a' a <<1.2 '#க்கு ஒதுக்கப்பட்டுள்ளது, பின்னர் ஒரு சரம் மாறி' a 'க்கு ஒதுக்கப்பட்டுள்ளது பொருள்கள் எடுத்துக்காட்டுகளைப் பயன்படுத்தி மேகிக்கில் பொருள்கள் செயல்படுத்தப்படுகின்றன. எடுத்துக்காட்டுகள் ஜாவா போன்ற பிற நிரலாக்க மொழிகளில் உள்ள வகுப்புகளுடன் ஒற்றுமையைக் கொண்டுள்ளன, ஆனால் முக்கியமான வேறுபாடுகளுடன். மேஜிக் பல பரம்பரை மற்றும் மிக்ஸின்களை ஆதரிக்கிறது (இது தரவு இல்லாமல் செயல்பாட்டை செயல்படுத்துகிறது). ஏற்கனவே உள்ள நிகழ்வை குளோனிங் செய்வதன் மூலம் புதிய நிகழ்வுகள் செய்யப்படுகின்றன (இது பொதுவாக எடுத்துக்காட்டாக இருக்கும், ஆனால் இருக்க வேண்டியதில்லை). டெஃப் _ ஸ்லாட்டட் _ எம்பிலார் () என்ற கூற்றைப் பயன்படுத்தி புதிய எடுத்துக்காட்டுகள் உருவாக்கப்படுகின்றன, எடுத்துக்காட்டாகஃ டெஃப் _ ஸ்லாட்டட் _ எம்பிலார் (: மை _ ஆப்ஜெக்ட், {{: ஸ்லாட் _ ஏ, 34}, {: ஸ்லாட் _ பி, "ஹலோ"}, {: பேரன்ட் _ ஆப்ஜெக்ட் _ ஏ,: பேரன்ட் _ ஆப்ஜெக்ட் _ பி}) இந்த குறியீடு துண்டு மை _ ஆப்ஜெக்ட் என்று அழைக்கப்படும் ஒரு புதிய உதாரணத்தை வரையறுக்கும், இது ஸ்லாட் _ ஏ (34 க்கு முன் தொடங்கப்பட்டது) மற்றும் ஸ்லாட் _ பி ("ஹலோ" க்கு முன் தொடங்கப்பட்டது) எனப்படும் இரண்டு ஸ்லாட்டுகளை (அல்லது புலங்கள்) கொண்டுள்ளது, இது பேரன்ட் _ ஆப்ஜெக்ட் _ ஏ மற்றும் பேரன்ட் _ ஆப்ஜெக்ட் _ பி என்று அழைக்கப்படும் ஏற்கனவே உள்ள இரண்டு எடுத்துக்காட்டுகளிலிருந்து பெறப்படுகிறது. ஒப்பீடு மேஜிக் அனைத்து வழக்கமான லாஜிக்கல் ஆபரேட்டர்களையும் (=, <, <=,>,> =, ~ =/<>) ஒப்பீட்டிற்காகவும், சில அசாதாரணமானவற்றையும் செயல்படுத்துகிறது. தி _ இஸ் மற்றும் _ இஸ் நாட் ஆபரேட்டர்கள் மதிப்புகளுக்கு பதிலாக பொருள்கள் அல்லது பொருள் குறிப்புகளின் குறிப்பிட்ட நிகழ்வுகளை ஒப்பிடுவதற்கு பயன்படுத்தப்படுகின்றன. எடுத்துக்காட்டாகஃ a <<"ஹலோ" b <<<"ஹலோ" a = b #என்பது a மற்றும் b இன் மதிப்புகள் a _ is b #க்கு சமமாக இருப்பதால் அது சரி (_ true) என்பதைத் தருகிறது, ஏனெனில் a என்பது b a <<<"ஹலோ" b <<a = b #என்பது சரி (_ true) என்பதைத் தருகிறது, ஏனெனில் a மற்றும் b இன் மதிப்புகள் a _ is b #க்கு சமமாக இருப்பதால் அது சரி (_ true) என்பதைத் தருகிறது, ஏனெனில் a இன் மதிப்பை விட a என்ற அதே பொருளின் குறிப்பிட்ட நிகழ்வு b க்கு ஒதுக்கப்பட்டது. முறைகள் முறைகள் ஸ்டேட்மென்ட் _ மெத்தேட் மற்றும் _ எண்ட்மெத்தோட்ஃ _ மெத்தேட் my_object.my_method (a, b) _ ரிட்டர்ன் a + b _ எண்ட்மெத்தோட் ஆகியவற்றைப் பயன்படுத்தி எடுத்துக்காட்டுகளில் வரையறுக்கப்படுகின்றன, இது புதிய () (ஒரு புதிய நிகழ்வை உருவாக்க) மற்றும் init () (ஒரு நிகழ்வை துவக்க) ஆகிய இரண்டு முறைகளை வழங்குவதற்கான நடைமுறையாகும். #புதிய முறை _ முறை person.new (பெயர், வயது) _ திரும்புதல் _clone.init (பெயர், வயது) _ எண்ட்மெத்தோட் #துவக்க முறை. தனியார் முறை person.init (பெயர், வயது) #பெற்றோர் செயல்பாட்டை அழைக்கவும். _super.init (பெயர், வயது) #இடங்களைத் தொடங்குங்கள். . பெயர் <<பெயர். வயது <<வயது _ திரும்பும் _ சுய _ முடிவு முறை குளோன் நபர் பொருளின் இயற்பியல் நகலை உருவாக்குகிறது. தி _ சூப்பர் ஸ்டேட்மென்ட் பொருள்களை பெற்றோர் எடுத்துக்காட்டில் ஒரு முறையை செயல்படுத்துவதற்கு அனுமதிக்கிறது. பொருள்கள் சுய அறிக்கையைப் பயன்படுத்தி தங்களைக் குறிப்பிடலாம். ஒரு பொருளின் இடங்கள் ஒரு புள்ளி குறியீட்டைப் பயன்படுத்தி அணுகப்பட்டு ஒதுக்கப்படுகின்றன. பொருளின் பொது இடைமுகத்தின் ஒரு பகுதியாக இல்லாத முறைகள் தனியார் அறிக்கையைப் பயன்படுத்தி தனிப்பட்டதாகக் குறிக்கப்படலாம். தனிப்பட்ட முறைகளை _ செல்ஃப், _ சூப்பர் மற்றும் _ குளோன் மூலம் மட்டுமே அழைக்க முடியும். விருப்பமான வாதங்களை விருப்பமான அறிக்கையைப் பயன்படுத்தி அறிவிக்கலாம். நிறைவேற்றப்படாத விருப்ப வாதங்கள் சிறப்பு பொருள் _ அன்செட் (பூஜ்யத்திற்கு சமமானது) க்கு மேஜிக் மூலம் ஒதுக்கப்படுகின்றன. விருப்பமான வாதங்களின் பட்டியலை அறிவிக்க _ சேகரிப்பு அறிக்கையைப் பயன்படுத்தலாம். _ முறை my_object.my_method (_ சேகரிக்கும் மதிப்புகள்) _ எண்ட்மெத்தோட் மறு செய்கை மேஜிக் இல், _ for, _ over, _ லூப் மற்றும் _ எண்ட்லூப் அறிக்கைகள் மறு செய்கையை அனுமதிக்கின்றன. _ பிளாக் _ லோக்கல் s <<0 _ லோக்கல் i <<0 _ அதே நேரத்தில் i <= 100 _ லூப் s + <<i i + <<1 _ எண்ட்லூப்>> s _ எண்ட்ப்ளாக் இங்கே, இந்த _ வெயில் என்பது _ லூப் மற்றும் _ எண்ட்லூப் உடன் இணைக்கப்பட்டுள்ளது. _ முறை my_object.my_method (_ சேகரிக்கும் மதிப்புகள்) மொத்தம் <<0.0 _ a _ ஓவர் values.elements () _ லூப் மொத்த + <<a _ எண்ட்லூப் _ ரிட்டர்ன் மொத்த _ எண்ட்மெத்தோட் m <<my_object.new () x <<m.my_method (1,0,3,4) #x = 10.0 இங்கே values.elements () என்பது மதிப்புகளை மீண்டும் செய்ய உதவும் ஒரு மறு செய்கை. மேஜிக் ஜெனரேட்டரில் முறைகள் இடரேட்டர் முறைகள் என்று அழைக்கப்படுகின்றன. புதிய இடரேட்டர் முறைகளை _ iter மற்றும் _ லூப்பாடி அறிக்கைகளைப் பயன்படுத்தி வரையறுக்கலாம்ஃ a.even என்றால் _self.elements () _ லூப் _ க்கு _ iter _ முறை my_object.even_elements () _? _ என்பது _ உண்மை _ பின்னர் _ லூப்பாடி (a) _ எண்டிஃப் _ எண்ட்லூப் _ எண்ட்மெத்தோட் நடைமுறைகள் மேஜிக் நடைமுறைகள் எனப்படும் செயல்பாடுகளையும் ஆதரிக்கிறது. நடைமுறைகளும் பொருள்கள் மற்றும் அவை _ புரோக் மற்றும் _ எண்ட்ப்ரோக் அறிக்கைகளைப் பயன்படுத்தி அறிவிக்கப்படுகின்றன. செயல்முறைகள் மாறிகளுக்கு ஒதுக்கப்பட்டுள்ளன, அவை பின்னர் அழைக்கப்படலாம்ஃ எனது செயல்முறை <<_ புரோக் @my_procedure (ஏ, பி, சி) _ ரிட்டர்ன் ஏ + பி + சி _ எண்ட்ப்ரோக் எக்ஸ் <<மை _ செயல்முறை (1,2,3) #எக்ஸ் = 6 வழக்கமான வெளிப்பாடு மேஜிக் ஆதரிக்கிறது// வழக்கமான வெளிப்பாடு தொடரியல்ஃ _ என்றால்/ஹலோ, \s (\w) +!/. பொருத்தங்கள்? ("ஹலோ, மேஜிக்!") பின்னர் எழுதுங்கள் ("ஒரு பொருத்தம் கிடைத்தது!") எண்டிஃப் மற்றும் ரெஜெக்ஸ்ஃ/ஸ்வ் ([0-9] +)-([0-9] +) இல் குழுக்களைப் பிடிக்க. */. எல்லா இடங்களையும் மாற்றுங்கள் ("ஸ்வி 65456-324 எஸ்எஸ்எஸ்", "$1") #"65456"/ஸ்வி ([0-9] +)-([0-9] +). */. எல்லா இடங்களையும் மாற்றுங்கள் ("Sw 65456-324 sss", "$2") #"324" HTTP நூலக மேஜிக் HTTP நூலகம் வழியாக HTTP அல்லது HTTPS கோரிக்கைகளைச் செய்ய ஆதரிக்கிறது, கீழே உள்ள எடுத்துக்காட்டுகளைப் பார்க்கவும்ஃ Magikhttp <<http.new () magikhttp.url ("https://www.google.com"). எடுத்துக்காட்டாகஃ "துவக்குதல்" என்பதைப் பயன்படுத்தவும், "துவக்குதல்" அல்ல. பிற நிரலாக்க மொழிகளைப் போலவே மேஜிக்கிலும் தொகுப்புகள் உள்ளன. அவை பின்வருவனவற்றை உள்ளடக்குகின்றனஃ எளிய வெக்டர் ரோப் ஹாஷ் டேபிள் சொத்து பட்டியல் சமத்துவம் செட் பைகள் ஹலோ வேர்ல்ட் எடுத்துக்காட்டு பின்வருபவை மேஜிக் மொழியில் எழுதப்பட்ட ஹலோ வேர்ல்ட் நிரலின் ஒரு எடுத்துக்காட்டுஃ எழுதவும் ("ஹலோ வேர்ல்ட்!"). குறிப்புகள் வெளிப்புற இணைப்புகள் சிறிய உலக தயாரிப்பு சூட் தொழில்நுட்பம் எம். டி. டி-ஜி. இ சிறிய உலக ஜி. ஐ. எஸ் டெவலப்பர்களுக்கான மேஜிக் மேம்பாட்டு கருவிகள் ஐடிஇ திறந்த மூல (சோர்ஸ்ஃபோர்ஜ்) மொழி மன்றம் மேஜிக் தொழில்நுட்ப தாள் எண். 5-ஸ்மால் வேர்ல்ட் மேஜிக் ஜிஇ ஸ்மால் வேர்ல்டின் ஒரு கண்ணோட்டம், மேஜிக் டெவலப்பர்களுக்கான ஈமாக்ஸ் நீட்டிப்புகள் ஸ்மால் வேர்ல்ட் மேஜிக் நிரலாக்க மொழிக்கான விஷுவல் ஸ்டுடியோ கோட் நீட்டிப்பு. வகுப்பு அடிப்படையிலான நிரலாக்க மொழிகள் மாறும் வகையில் தட்டச்சு செய்யப்பட்ட நிரலாக்க மொழிகள்