V நிரலாக்க மொழி திறந்த மூலமாகும்

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

ஓபரான், ரஸ்ட் மற்றும் ஸ்விஃப்ட் ஆகியவற்றிலிருந்து சில கட்டுமானங்களைக் கடனாகப் பெற்று, வியின் தொடரியல் Go வைப் போலவே உள்ளது. மொழி முடிந்தவரை எளிமைப்படுத்தப்பட்டுள்ளது மற்றும் டெவலப்பரின் கூற்றுப்படி, அடிப்படைகளைக் கற்றுக்கொள்ள 30 நிமிட ஆய்வு போதுமானது. ஆவணங்கள். அதே நேரத்தில், மொழி மிகவும் சக்திவாய்ந்ததாக உள்ளது மற்றும் பிற நிரலாக்க மொழிகளைப் பயன்படுத்தும் போது அதே பணிகளைச் செய்ய பயன்படுத்தலாம் (உதாரணமாக, நூலகங்கள் 2D/3D கிராபிக்ஸ், GUI கள் மற்றும் வலை பயன்பாடுகளை உருவாக்குகின்றன).

கோ மொழியின் தொடரியல் எளிமை, தொகுத்தல் வேகம், செயல்பாடுகளின் இணையாக எளிதாக்குதல், C/C++ செயல்திறனுடன் குறியீட்டின் பெயர்வுத்திறன் மற்றும் பராமரிப்பு, ரஸ்ட் மற்றும் பாதுகாப்பு ஆகியவற்றின் கலவையை அடையும் விருப்பத்தால் புதிய மொழி உருவாக்கம் தூண்டப்பட்டது. ஜிக் தொகுப்பு கட்டத்தில் இயந்திரக் குறியீட்டின் உருவாக்கம். வெளிப்புற சார்புகள் இல்லாமல் வேலை செய்யக்கூடிய, உலகளாவிய நோக்கத்தை (உலகளாவிய மாறிகள்) அகற்றி, குறியீட்டை "ஹாட்" ரீலோட் செய்யும் திறனை வழங்கக்கூடிய சிறிய மற்றும் வேகமான கம்பைலரைப் பெறவும் விரும்பினேன்.

C++ உடன் ஒப்பிடும்போது, ​​புதிய மொழி மிகவும் எளிமையானது, வேகமான தொகுத்தல் வேகத்தை வழங்குகிறது (400 மடங்கு வரை), பாதுகாப்பான நிரலாக்க நுட்பங்களைப் பயிற்சி செய்கிறது, வரையறுக்கப்படாத நடத்தையில் சிக்கல்கள் இல்லாதது மற்றும் இணையான செயல்பாடுகளுக்கான உள்ளமைக்கப்பட்ட கருவிகளை வழங்குகிறது. Python உடன் ஒப்பிடும்போது, ​​V வேகமானது, எளிமையானது, பாதுகாப்பானது மற்றும் மேலும் பராமரிக்கக்கூடியது. Go உடன் ஒப்பிடும்போது, ​​V இல் உலகளாவிய மாறிகள் இல்லை, பூஜ்யங்கள் இல்லை, அனைத்து மாறி மதிப்புகளும் எப்போதும் வரையறுக்கப்பட வேண்டும், எல்லாப் பொருட்களும் முன்னிருப்பாக மாறாமல் இருக்கும், ஒரே ஒரு வகையான அசைன்மென்ட் மட்டுமே ஆதரிக்கப்படுகிறது (“a := 0”), குறிப்பிடத்தக்க அளவு கச்சிதமானது இயக்க நேரம் மற்றும் அதன் விளைவாக இயங்கக்கூடிய கோப்புகளின் அளவு, C இலிருந்து நேரடி பெயர்வுத்திறன் இருப்பது, குப்பை சேகரிப்பான் இல்லாதது, வேகமான வரிசைப்படுத்தல், சரங்களை இடைக்கணிக்கும் திறன் ("println('$foo: $bar.baz')").

fn முக்கிய() {
பகுதிகள் := ['விளையாட்டு', 'வலை', 'கருவிகள்', 'அறிவியல்', 'அமைப்புகள்', 'GUI', 'மொபைல்'] a := 10
உண்மையாக இருந்தால் {
செய்ய:= 20
}
பகுதிகளில் உள்ள பகுதிக்கு {
println('வணக்கம், $ஏரியா டெவலப்பர்கள்!')
}
}

திட்டத்தின் அம்சங்கள்:

  • கச்சிதமான மற்றும் வேகமான கம்பைலர், இது நிலையான நூலகத்துடன் சேர்ந்து சுமார் 400 KB ஆகும். இயந்திர குறியீடு மற்றும் மாடுலாரிட்டியின் நேரடி உருவாக்கம் மூலம் அதிக தொகுத்தல் வேகம் அடையப்படுகிறது. தொகுத்தல் வேகம் ஒரு CPU மையத்தில் வினாடிக்கு சுமார் 1.2 மில்லியன் கோடுகள் குறியீடு ஆகும் (செயல்பாட்டின் போது V C ஐப் பயன்படுத்தலாம், பின்னர் வேகம் வினாடிக்கு 100 ஆயிரம் வரிகளாக குறைகிறது). கம்பைலரின் சுய-அசெம்பிளி, இது V மொழியிலும் எழுதப்பட்டுள்ளது (கோவில் ஒரு குறிப்பு பதிப்பும் உள்ளது), தோராயமாக 0.4 வினாடிகள் ஆகும். ஆண்டின் இறுதிக்குள், கூடுதல் மேம்படுத்தல்களின் பணிகள் முடிவடையும் என்று எதிர்பார்க்கப்படுகிறது, இது கம்பைலர் உருவாக்க நேரத்தை 0.15 வினாடிகளாக குறைக்கும். டெவலப்பர் நடத்திய சோதனைகளின் அடிப்படையில், Go இன் சுய-அசெம்பிளிக்கு 512 MB வட்டு இடம் தேவைப்படுகிறது மற்றும் ஒன்றரை நிமிடங்களில் இயங்குகிறது, Rust க்கு 30 GB மற்றும் 45 நிமிடங்கள், GCC - 8 GB மற்றும் 50 நிமிடங்கள், Clang - 90 GB மற்றும் 25 நிமிடங்கள்,
    ஸ்விஃப்ட் - 70 ஜிபி மற்றும் 90 நிமிடங்கள்;

  • நிரல்கள் வெளிப்புற சார்புகள் இல்லாமல் இயங்கக்கூடிய கோப்புகளாக தொகுக்கப்படுகின்றன. அசெம்பிளி செய்த பிறகு ஒரு எளிய http சேவையகத்தின் இயங்கக்கூடிய கோப்பு அளவு 65 KB மட்டுமே;
  • தொகுக்கப்பட்ட பயன்பாடுகளின் செயல்திறன் C நிரல்களின் கூட்டங்களின் மட்டத்தில் உள்ளது;
  • கூடுதல் மேல்நிலை இல்லாமல், C குறியீட்டுடன் தடையின்றி தொடர்பு கொள்ளும் திறன். C மொழியில் உள்ள செயல்பாடுகளை V மொழியில் உள்ள குறியீட்டிலிருந்து அழைக்கலாம், மேலும் V மொழியில் உள்ள குறியீட்டை C உடன் இணக்கமான எந்த மொழியிலும் அழைக்கலாம்;
  • C/C++ திட்டங்களை V மொழியில் பிரதிநிதித்துவமாக மொழிபெயர்ப்பதற்கான ஆதரவு. மொழிபெயர்ப்பிற்கு Clang இலிருந்து ஒரு பாகுபடுத்தி பயன்படுத்தப்படுகிறது. C தரநிலையின் அனைத்து அம்சங்களும் இன்னும் ஆதரிக்கப்படவில்லை, ஆனால் மொழிபெயர்ப்பாளரின் தற்போதைய திறன்கள் ஏற்கனவே போதுமானவை மொழிபெயர்ப்பு V கேம் DOOM மொழியில். C++ மொழிபெயர்ப்பாளர் இன்னும் வளர்ச்சியின் ஆரம்ப கட்டத்தில் இருக்கிறார்;
  • இயக்க நேரத்துடன் இணைக்கப்படாமல், உள்ளமைக்கப்பட்ட தொடர் ஆதரவு;
  • நினைவக ஒதுக்கீடு செயல்பாடுகளை குறைத்தல்;
  • பாதுகாப்பை உறுதி செய்தல்: NULL இல்லை, உலகளாவிய மாறிகள், வரையறுக்கப்படாத மதிப்புகள் மற்றும் மாறி மறுவரையறை. உள்ளமைக்கப்பட்ட இடையக சரிபார்ப்பு. பொதுவான செயல்பாடுகளுக்கான ஆதரவு (பொதுவானது). இயல்புநிலையாக மாற்ற முடியாத பொருள்கள் மற்றும் கட்டமைப்புகள்;
  • "ஹாட்" குறியீட்டை மீண்டும் ஏற்றுவதற்கான சாத்தியம் (மீண்டும் தொகுக்காமல் பறக்கும்போது குறியீட்டில் ஏற்படும் மாற்றங்களை பிரதிபலிக்கிறது);
  • மல்டித்ரெடிங்கை உறுதி செய்வதற்கான கருவிகள். Go மொழியைப் போலவே, "ரன் foo()" போன்ற ஒரு கட்டமைப்பானது ஒரு புதிய தொடரை செயல்படுத்த பயன்படுத்தப்படுகிறது ("go foo()" போன்றது). எதிர்காலத்தில், goroutines மற்றும் ஒரு நூல் திட்டமிடல் ஆதரவு திட்டமிடப்பட்டுள்ளது;
  • Windows, macOS, Linux, *BSD இயக்க முறைமைகளுக்கான ஆதரவு. ஆண்டு இறுதிக்குள் ஆண்ட்ராய்டு மற்றும் iOSக்கான ஆதரவைச் சேர்க்க திட்டமிடப்பட்டுள்ளது;
  • குப்பை சேகரிப்பாளரைப் பயன்படுத்தாமல், தொகுக்கும் நேரத்தில் நினைவக மேலாண்மை (ரஸ்ட் போல);
  • GDI+/Cocoa மற்றும் OpenGL ஐப் பயன்படுத்தி கிராபிக்ஸ் வெளியீட்டிற்கான பல-தளம் கருவித்தொகுப்பின் கிடைக்கும் தன்மை (DirectX, Vulkan மற்றும் Metal APIகளுக்கான ஆதரவு திட்டமிடப்பட்டுள்ளது). 3D பொருள்கள், எலும்பு அனிமேஷன் மற்றும் கேமரா கட்டுப்பாடு ஆகியவற்றுடன் பணிபுரியும் கருவிகள் உள்ளன;
  • ஒவ்வொரு OS க்கும் சொந்தமான வடிவமைப்பு கூறுகளுடன் வரைகலை இடைமுகங்களை உருவாக்க ஒரு நூலகத்தின் கிடைக்கும் தன்மை. விண்டோஸ் WinAPI/GDI+ ஐப் பயன்படுத்துகிறது, macOS Cocoa ஐப் பயன்படுத்துகிறது, Linux அதன் சொந்த விட்ஜெட்களைப் பயன்படுத்துகிறது. நூலகம் ஏற்கனவே வளர்ச்சியில் பயன்படுத்தப்படுகிறது அது இருந்தது - ஸ்லாக், ஸ்கைப், ஜிமெயில், ட்விட்டர் மற்றும் ஃபேஸ்புக்கிற்கான கிளையன்ட்;

    டெல்பி போன்ற இடைமுக வடிவமைப்பு பயன்பாட்டை உருவாக்குவதும், ஸ்விஃப்ட்யூஐ மற்றும் ரியாக்ட் நேட்டிவ் போன்ற அறிவிப்பு ஏபிஐ வழங்குவதும், iOS மற்றும் ஆண்ட்ராய்டுக்கான மொபைல் பயன்பாடுகளை உருவாக்குவதற்கான ஆதரவை வழங்குவதும் திட்டம்;

    V நிரலாக்க மொழி திறந்த மூலமாகும்

  • ஒரு உள்ளமைக்கப்பட்ட வலை கட்டமைப்பின் கிடைக்கும் தன்மை, இது திட்ட உருவாக்குநர்களுக்கான இணையதளம், மன்றம் மற்றும் வலைப்பதிவை உருவாக்க பயன்படுகிறது. HTML வார்ப்புருக்களின் முன்தொகுப்பு ஆதரிக்கப்படுகிறது, ஒவ்வொரு கோரிக்கையிலும் அவற்றைச் செயல்படுத்தாமல்;
  • குறுக்கு தொகுப்பு ஆதரவு. விண்டோஸுக்கு இயங்கக்கூடிய கோப்பை உருவாக்க, “v -os windows” ஐ இயக்கவும், மற்றும் Linux க்கு - “v -os linux” (macOS க்கான குறுக்கு-தொகுப்பு ஆதரவு பின்னர் எதிர்பார்க்கப்படுகிறது). குறுக்கு-தொகுப்பு வரைகலை பயன்பாடுகளுக்கும் வேலை செய்கிறது;
  • உள்ளமைந்த சார்பு மேலாளர், தொகுப்பு மேலாளர் மற்றும் உருவாக்க கருவிகள். நிரலை உருவாக்க, "v" ஐ இயக்கவும், மேக் அல்லது வெளிப்புற பயன்பாடுகளைப் பயன்படுத்தாமல். கூடுதல் நூலகங்களை நிறுவ, இயக்கவும், எடுத்துக்காட்டாக, "v get sqlite";
  • எடிட்டர்களில் V மொழியில் மேம்பாட்டிற்கான செருகுநிரல்களின் கிடைக்கும் தன்மை வி.எஸ் குறியீடு и உரம்.

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

இதற்கிடையில், ப்ராஜெக்ட் V இன் பிழை டிராக்கரில் இருந்து சுமார் 10 இடுகைகள் அகற்றப்பட்டுள்ளன ஆர்ப்பாட்டம் குறைந்த தரக் குறியீடு, எடுத்துக்காட்டாக, C-செருகுகளின் பயன்பாடு மற்றும் rm கட்டளையின் கோப்பகத்தை os.system("rm -rf $path") மூலம் நீக்குவதற்கான செயல்பாடுகளின் நூலகத்தில் பயன்படுத்துவதைக் குறிக்கிறது. திட்டத்தின் ஆசிரியர் அவர் குறிப்பிட்டதாவதுஅவர் செய்திகளை மட்டுமே நீக்கினார், வெளியிடப்பட்டது பூதம் (விமர்சனத்தின் செல்லுபடியை உறுதிப்படுத்தும் மாற்றங்களுடன், இருந்தது в வரலாற்றைத் திருத்தவும்).

ஆதாரம்: opennet.ru

கருத்தைச் சேர்