உங்கள் சொந்த நிரலாக்க மொழியை உருவாக்கவும் (I)

நிரலாக்க மொழிகளின் பரிணாமம்

முதல் கட்டுரையை எழுதிய பிறகு உங்கள் சொந்த இயக்க முறைமையை எவ்வாறு உருவாக்குவது, யாரோ ஒருவர் என்னிடம் ஒரு கட்டுரை செய்ய முடிந்தால் சொன்னார் ஒரு நிரலாக்க மொழியை எவ்வாறு உருவாக்குவது. முதலில் நான் அதிக கவனம் செலுத்தவில்லை, ஆனால் இப்போது மற்றும் பிற வழிகளில் நிரலாக்க மொழிகளை உருவாக்குவது பற்றி நான் அதிகம் கற்றுக்கொண்டேன். எனவே செய்வோம் ஒரு அடிப்படை நிரலாக்க மொழி, மற்ற நிரல்களில் எளிதில் உட்பொதிக்கக்கூடியது, மேலும் இது நாங்கள் வடிவமைக்கும் மெய்நிகர் இயந்திரத்துடன் வேலை செய்யும். இன்று நாம் மிகவும் அடிப்படை மெய்நிகர் இயந்திரத்தை உருவாக்க வேண்டும்.

நீங்கள் ஒருவேளை ஆச்சரியப்படுகிறீர்கள்: ஒரு மெய்நிகர் இயந்திரமா? ஆனால் அது மிகவும் கடினம் அல்ல, இது நிரல்களையும் மெதுவாக்குகிறதா? " இதற்கு மாறாக, ஒரு எளிய மெய்நிகர் இயந்திரம் மிகவும் எளிமையானது மற்றும் ஒப்பீட்டளவில் வேகமானது. நான் தெரிவுசெய்துவிட்டேன் துரு மெய்நிகர் இயந்திரத்திற்கான மொழியாக. ஆனால் அது என்ன துரு?

துரு இது ஒரு நிரலாக்க மொழியாகும், இது மரணதண்டனை பாதுகாப்பில் கவனம் செலுத்துகிறது, எனவே இதைப் பயன்படுத்துவது மெய்நிகர் இயந்திரத்தை மூடுவது நடைமுறையில் சாத்தியமற்றது. இது உருவாக்கிய வளர்ச்சியில் தொகுக்கப்பட்ட மொழி மோசில்லா. பணி, மாற்று கெக்கோ, அவனுக்குள் வளர்ந்து வருகிறது. நீங்கள் இன்னும் உங்கள் தொடரியல் மாற்றலாம், ஆனால் நான் பயன்படுத்தப் போகும் குறியீடு முதல் நிலையான வெளியீடு வரை வைக்கப்படும்.

துரு நிறுவுகிறது லினக்ஸ் ஒரு எளிய வழியில். இருப்பினும், அதிகாரப்பூர்வ பார்சல் இல்லை. பயனர்கள் உபுண்டு இந்த இரண்டையும் சேர்க்கலாம் PPA: ppa: hansjorg / துரு  y ppa: cmrx64 / சரக்கு, பயனர்கள் ஆர்க் பயன்படுத்தலாம் அவுர் (சரக்கு-கிட் எல்லாவற்றையும் நிறுவும் தொகுப்பு). மீதமுள்ளவர்கள் பயன்படுத்தலாம்:

curl -s https://static.rust-lang.org/rustup.sh | sudo sh

மெய்நிகர் இயந்திரம் எவ்வாறு இயங்குகிறது?

அசெம்பிளர் உலகம் எவ்வாறு இயங்குகிறது என்பது உங்களுக்குத் தெரிந்தால், அது அடுக்கு அல்லது அடுக்குடன் சரியாகவே இருக்கும். இல்லையென்றால், அதை உங்களுக்கு விளக்குகிறேன். பின்வரும் குறியீட்டை கற்பனை செய்யலாம்:

அச்சு 2 + 3

கணினிக்கு 2 + 3 என்றால் என்ன என்று புரியவில்லை, எந்த வரிசையை பின்பற்ற வேண்டும் என்று தெரியவில்லை. கணினிகள் பேட்டரிகள் அல்லது அடுக்குகளுடன் செயல்படுகின்றன, அதில் தரவு குவிந்து தொடர்ந்து பிரித்தெடுக்கப்படுகிறது. எங்கள் மெய்நிகர் கணினியில் உள்ள அந்த குறியீடு இதுபோன்றதாக இருக்க வேண்டும்:

புஷ் 2 புஷ் 3 சேர் அச்சிடு

அடிப்படையில் நாம் 2 ஐ மேலே அடுக்கில் வைப்போம், 3 ஐயும். ADD ஸ்டாக்கில் உள்ள கடைசி 2 உருப்படிகளை இழுத்து (அதாவது அடுக்கிலிருந்து அகற்றி அதன் மதிப்பைப் பெறும்) மற்றும் முடிவை அடுக்கின் மேல் சேர்க்கும். PRINT அடுக்கில் உள்ள கடைசி உருப்படியை எடுத்து அதை எங்களுக்குக் காண்பிக்கும். இப்போது அதை உள்ளே செய்வோம் துரு.

நாம் முதலில் ஒரு மொழியை வரையறுக்க வேண்டும் பைட்கோட், உள்ளதைப் போன்ற ஏற்கனவே உள்ள ஒன்றைப் பயன்படுத்தலாம் ஜாவா அல்லது சிஎல்ஆர் .NET / Mono இன், ஆனால் நாங்கள் ஒரு அடிப்படை ஒன்றை உருவாக்கப் போகிறோம்.

https://gist.github.com/a01de8904fd39a442c20

ஒவ்வொரு அறிவுறுத்தலுக்கும் நாம் அறுகோண குறியீட்டைப் பயன்படுத்துகிறோம். உயர்ந்த நிலையில் வைத்திருக்கிறோம் # [பெறுதல் (FromPrimitive)], என்பது ஒரு தனித்தன்மை துரு மேலும் கணக்கீட்டை பைட்டுகளுடன் நேரடியாக ஒப்பிட்டுப் பார்க்க இது பின்னர் நமக்கு உதவும்.

இப்போது நாம் அந்த ஒவ்வொரு அறிவுறுத்தலையும் செயல்படுத்தும் ஒரு செயல்பாட்டை உருவாக்க வேண்டும். இதற்காக நாம் ஒரு பைட்டைப் படித்து, கணக்கீட்டில் உள்ள வழிமுறைகளுடன் ஒப்பிட வேண்டும். இருப்பதை நீங்கள் கண்டால், உங்கள் செயலை நீங்கள் செயல்படுத்த வேண்டும்.

https://gist.github.com/8950ce212a2de2f397f9

ஒவ்வொரு பைட்டையும் தனித்தனியாகப் படித்து அவற்றை இயக்க நாங்கள் இதைச் செய்கிறோம்:

https://gist.github.com/12e24a1f0dd65e4cd65d

நீங்கள் பார்க்கிறபடி, எங்களுக்கு முன்னர் PUSH கட்டளை (எங்கள் INTEGER கட்டளை) வழங்கப்பட்டிருந்தால் நாங்கள் வேறுபடுத்துகிறோம், அடுத்த பைட் முற்றிலும் அடுக்கிற்கு எடுத்துச் செல்லப்படும். நான் உங்களுக்கு கற்பிக்காத இரண்டு செயல்பாடுகளை அங்கு பயன்படுத்துகிறோம், self.pop () y self.push (), அவை அடுக்கைக் கையாளும் பொறுப்பில் உள்ளன.

https://gist.github.com/54147f853a8a2b8c01d9

அவை மிகவும் சிக்கலானவை அல்ல, ஆனால் பாப் செயல்பாட்டில் பிழை கண்டறிதல் வழிமுறைகள் உள்ளன. உண்மையில், இல் துரு, அந்த வழிமுறைகளை நாங்கள் அகற்றினால், அது எங்களுக்கு ஒரு தொகுப்பு பிழையைத் தரும். இப்போது நாம் ஒரு நிரலில் அழைக்க வேண்டும் பெரின் (எங்கள் மெய்நிகர் இயந்திரம்) மற்றும் பைட்கோடை இயக்கவும்.

https://gist.github.com/99b1ab461318b3a644d0

அந்த பைட்கோடை ஒரு கோப்பிலிருந்து படிக்க முடியும், ஆனால் இங்கே எளிமைக்காக நான் அதை ஒரு மாறியில் சேமித்து வைத்திருக்கிறேன். நாங்கள் அதை செயல்படுத்தினால், அது எதிர்பார்த்த முடிவை நமக்குத் தரும்:

பெரின் v0.1 பெரின் விஎம் ஃப்ளாப்ஃப்ளிப் பைட்கோடை இயக்குகிறது பெரின்விஎம் உதாரணத்தைத் தொடங்குகிறது பெரின்விஎம் வி 0.1.0 முழு மதிப்பு 5

அனைத்து குறியீடும் கிடைக்கிறது மகிழ்ச்சியா கீழ் அப்பாச்சி உரிமம் 2.0: https://github.com/AdrianArroyoCalle/perin. தொகுக்க அவர்கள் இருக்க வேண்டும் சரக்கு நிறுவப்பட்டு வைக்கவும்:

கட்டணம் கட்ட && ./target/main

அடுத்த அத்தியாயத்தில் எங்கள் நிரலாக்க மொழியைப் பற்றி மேலும் பார்ப்போம்.


உங்கள் கருத்தை தெரிவிக்கவும்

உங்கள் மின்னஞ்சல் முகவரி வெளியிடப்பட்ட முடியாது. தேவையான புலங்கள் குறிக்கப்பட்டிருக்கும் *

*

*

  1. தரவுக்கு பொறுப்பு: மிகுவல் ஏஞ்சல் கேடன்
  2. தரவின் நோக்கம்: கட்டுப்பாட்டு ஸ்பேம், கருத்து மேலாண்மை.
  3. சட்டபூர்வமாக்கல்: உங்கள் ஒப்புதல்
  4. தரவின் தொடர்பு: சட்டபூர்வமான கடமையால் தவிர மூன்றாம் தரப்பினருக்கு தரவு தெரிவிக்கப்படாது.
  5. தரவு சேமிப்பு: ஆக்சென்டஸ் நெட்வொர்க்குகள் (EU) வழங்கிய தரவுத்தளம்
  6. உரிமைகள்: எந்த நேரத்திலும் உங்கள் தகவல்களை நீங்கள் கட்டுப்படுத்தலாம், மீட்டெடுக்கலாம் மற்றும் நீக்கலாம்.

  1.   ரோடர் அவர் கூறினார்

    சுவாரஸ்யமான ஆர்வம், இது உண்மையில் மிகவும் பயனுள்ளதாக இல்லை என்றாலும், அதை அறிந்து கொள்வது வலிக்காது.

    நீங்கள் ரஸ்டை விளம்பரம் செய்வது மிகவும் நல்லது, இது நிறைய வாக்குறுதியளிக்கும் ஒரு மொழி, இது சி ++ ஐ விட பாதுகாப்பானது மட்டுமல்லாமல், (இப்போதைக்கு) அதன் தொடரியல் தெளிவாக உள்ளது.

    புகைப்படத்தைப் பொறுத்தவரை, நான் ஜாவா பரிணாமம் XD ஐ கருத்தில் கொள்ள மாட்டேன்.

    1.    ரோடர் அவர் கூறினார்

      ஃபோட்ரானில் இருந்து, நான் அதை ஒருபோதும் பயன்படுத்தவில்லை, ஆனால் அதைப் பற்றி பல நல்ல விஷயங்களை நான் கேள்விப்பட்டதில்லை ...

      1.    போரியஸ் அவர் கூறினார்

        நான் செய்கிறேன், பைத்தான் தரையைப் பெற்றிருந்தாலும் பொறியியலில் இது மிகவும் பயனுள்ளதாக இருக்கும்.

      2.    ஜான் அவர் கூறினார்

        சி உடன் சேர்ந்து ஃபோட்ரான் மற்ற சிறந்த மொழியாக இருக்கலாம். இன்றும் கூட முக்கியமான கேள்விகளில் ஒன்று அல்லது மற்றொன்று இருக்கும்.

        ஃபோட்ரான் சி இன் ஒரு 'பரிணாம வளர்ச்சியாக' இருப்பது விவாதத்திற்குரியதாக இருக்கும், ஒருவேளை அது வேறு வழியாக இருக்க வேண்டும், ஏனெனில் சி புதியது, நவீனமானது மற்றும் அதிக சாத்தியக்கூறுகள் கொண்டது; ஒன்று மற்றொன்றிலிருந்து குறைந்தபட்சம் பிரிக்கப்படவில்லை என்றாலும்.

        இறுதி நிலைகள் அனைத்தும் ஏதோ ஒரு பார்வையில் இருந்து விவாதத்திற்குரியவை என்றாலும்.

    2.    பிரான்சிஸ்கோ அவர் கூறினார்

      ஜாவாவிற்கு +1

  2.   போர்டாரோ அவர் கூறினார்

    நான் இதை விரும்புகிறேனா என்று பார்ப்போம், நான் நிரலாக்கத்திற்கு ஏதாவது தருகிறேன், ஆனால் நான் இன்னும் புரிந்துகொள்கிறேனா என்று பார்க்க அடிப்படை.

  3.   usergnulinux அவர் கூறினார்

    ஒரு புதிய நிரலாக்க மொழியை உருவாக்குவதன் உண்மையான நோக்கம் என்ன? மூலக் குறியீட்டை மறைப்பது ஒரு சூழ்ச்சி என்று எனக்கு தனிப்பட்ட முறையில் தெரிகிறது.

  4.   யேலி அவர் கூறினார்

    நண்பரே "உங்கள் சொந்த இயக்க முறைமை" தொடர்ச்சியாக என்ன நடந்தது? தயவுசெய்து அதை அங்கேயே விடாதீர்கள், தொடரவும்.

    உண்மையில், நீங்கள் ஒரு மாஸ்டர், இந்த இரண்டு பாடல்களும் எனது கவனத்தை முழுவதுமாக கவர்ந்தன, ஆனால் அவை பாதியிலேயே இருக்க நான் விரும்பவில்லை.

    நம்மில் பலர் ஒரே மாதிரியாக நினைப்பதை நான் அறிவேன், இந்த சுவாரஸ்யமான தலைப்புகளின் தொடர்ச்சிகளுக்கும் முடிவுகளுக்கும் நாங்கள் காத்திருக்கிறோம்.

  5.   கிறிஸ்டியன் டேவிட் அவர் கூறினார்

    மிகவும் சுவாரஸ்யமானது, மிக்க நன்றி. 🙂

  6.   பிராங்கோ அவர் கூறினார்

    ஜாவாவை ஒரு நிரலாக்க மொழியாக நான் கருதவில்லை, மாறாக ஒரு கட்டளை மொழிபெயர்ப்பாளர், ஏனெனில் இது தொகுக்கப்படவில்லை

    1.    மரியோ அவர் கூறினார்

      [ஒரு நிரலாக்க மொழி என்பது கணினிகள் போன்ற இயந்திரங்களால் மேற்கொள்ளக்கூடிய செயல்முறைகளை வெளிப்படுத்த வடிவமைக்கப்பட்ட ஒரு முறையான மொழி.]

      இந்த காரணத்திற்காக, ஜாவா ஒரு நிரலாக்க மொழி. பாஷ் மொழி (லினக்ஸ் ஷெல் மொழி) கூட ஒரு நிரலாக்க மொழி.

      மொழிகளில் இரண்டு வகைகள் உள்ளன:
      - தொகுக்கப்பட்டது
      - விளக்கம்
      - கலப்பு (மெய்நிகர் இயந்திரங்கள், சொந்த நூலகங்கள் தொகுக்கப்பட்டு செயல்பாட்டுக் குறியீடு விளக்கப்படுகிறது)

      மல்டிபிளாட்ஃபார்முக்கு வரும்போது உரைபெயர்ப்பாளர்கள் மிகவும் பயனுள்ளதாக இருக்கிறார்கள், அதற்காக பேரழிவு தரும் செயல்திறன் இல்லை. ஜாவா, வி.பி.நெட், சி ++ .நெட், எஃப் #, சி # அனைத்தும் கலப்பு மொழிகள். பாஷ் மொழி, பேட், பி.எச்.பி, ஜாவாஸ்கிரிப்ட் மற்றும் பல மொழிகள் விளக்கப்பட்ட மொழிகள்.

      ஜாவாவை ஒரு மொழியாக நீங்கள் கருதவில்லை என்றால், அது விளக்கம் அளிக்கப்படுகிறது (அது இல்லை) நிரல்களை உருவாக்கப் பயன்படும் பல மொழிகளை நீங்கள் கருதக்கூடாது. மேலும், மூன்று விதிகளின் படி, இயந்திர மொழியைத் தவிர வேறு எந்த நிரலாக்க மொழியும் இல்லை என்று நீங்கள் கருதக்கூடாது.

      ஏன் இல்லை? இயந்திர மொழியைக் கூட ஒரு மொழியாகக் கருத முடியவில்லை, ஏனெனில் இது உண்மையில் செயலியால் "விளக்கப்பட்ட" கட்டளைகளின் தொகுப்பாகும்.

      ஏனெனில் திறம்பட, எல்லா மொழிகளும் ஒரு செயலியால் விளக்கப்படும் கட்டளைகளின் தொகுப்பைத் தவிர வேறில்லை.

      நீங்கள் ஒரு மொழியை அதிகமாகவோ அல்லது குறைவாகவோ விரும்பலாம் (ஜாவா, இந்த விஷயத்தில்), அதிகமாகவோ அல்லது குறைவாகவோ பயனுள்ளதாகவும் சக்திவாய்ந்ததாகவும் தோன்றலாம், ஆனால் இது ஒரு நிரலாக்க மொழி அல்ல, ஏனெனில் அது தொகுக்கப்படவில்லை ... இது எல்லா நிரலாக்க மொழி வரையறைகளுக்கும் எதிரானது.

    2.    மரியோ அவர் கூறினார்

      Too நான் மிகவும் முரட்டுத்தனமாகத் தெரியவில்லை என்று நம்புகிறேன்

      1.    மரியா அன்டோனீட்டா டி மானுவேலா கார்டெனாஸ் அவர் கூறினார்

        அமைதியாக இல்லை நீங்கள் எங்கள் வாழ்க்கையை மட்டுமே அழித்தீர்கள்

      2.    மரியோ அவர் கூறினார்

        hahahahaha, perdoooon. அது என் நோக்கம் xD அல்ல

    3.    கார்லோஸ் அவர் கூறினார்

      ஜாவா ஒரு நிரலாக்க மொழி. ஏனென்றால் நீங்கள் ஒரு பயன்பாட்டை உருவாக்க முடியும் மற்றும் நீங்கள் தொகுக்கும்போது ஜே.வி.எம் ஆல் விளக்கப்படும் ஒரு .ஜாரை உருவாக்குகிறீர்கள். பின்னர் உங்கள் பைதான் தர்க்கத்தின் படி அது விளக்கப்படவில்லை, ஆனால் அது வெவ்வேறு இயங்கக்கூடியவற்றுடன் தொகுக்கிறது ...

  7.   எலியாஸ் மோங்கேலோஸ் அவர் கூறினார்

    மிக நல்ல தகவல்

  8.   கார்லோஸ் அர்துரோ அவர் கூறினார்

    நல்ல தகவல் ஆனால் எனக்கு ஒரு சந்தேகம் உள்ளது, பிற ஒப்புமைகள் அல்லது மென்பொருளை நம்பாமல் புதிதாக ஒரு நிரலாக்க மொழியை புதிதாக உருவாக்க முடியும். ஜாவா அல்லது HTML போன்ற பிற மொழிகள் உருவாக்கப்பட்டதைப் போலவே நான் பேசுகிறேன்.
    இந்த கேள்விக்கு உங்கள் உதவியை நான் பெரிதும் பாராட்டுகிறேன்.