V ፕሮግራሚንግ ቋንቋ ክፍት ምንጭ

ተተርጉሟል ወደ ክፍት ማጠናቀር ምድብ ውስጥ ለ ቋንቋ V. V ልማትን ለማቆየት ቀላል እና በፍጥነት ለማጠናቀር ላይ የሚያተኩር በስታቲስቲክስ የተተየበ ማሽን-የተጠናቀረ ቋንቋ ነው። የማጠናከሪያ ኮድ፣ ቤተ-መጻሕፍት እና ተዛማጅ መሣሪያዎች ክፍት ነው በ MIT ፍቃድ.

የV አገባብ ከOberon፣ Rust እና Swift አንዳንድ ግንባታዎችን በመበደር ከጎ ጋር በጣም ተመሳሳይ ነው። ቋንቋው በተቻለ መጠን ቀላል ነው እና እንደ ገንቢው ገለጻ, መሰረታዊ ነገሮችን ለመማር የ 30 ደቂቃ ጥናት በቂ ነው. ሰነድ. በተመሳሳይ ጊዜ ቋንቋው በጣም ኃይለኛ ሆኖ ይቆያል እና ሌሎች የፕሮግራም ቋንቋዎችን ሲጠቀሙ ተመሳሳይ ተግባራትን ለማከናወን ሊያገለግል ይችላል (ለምሳሌ ፣ ቤተ-መጽሐፍት ለ 2D/3D ግራፊክስ ፣ GUIs እና የድር መተግበሪያዎችን መፍጠር)።

አዲስ ቋንቋ መፈጠር የተነሳው የጎ ቋንቋ ቀላልነት አገባብ፣የማጠናቀር ፍጥነት፣የስራዎች ቀላልነት፣የኮድ ተንቀሳቃሽነት እና የC/C++ አፈጻጸም፣የዝገት እና የዝገት ደህንነት እና የአጠቃቀም ቀላልነት ጥምረት ለማሳካት ባለው ፍላጎት ነው። በዚግ ማጠናቀር ደረጃ ላይ የማሽን ኮድ ማመንጨት። እንዲሁም ያለ ውጫዊ ጥገኞች ሊሰራ የሚችል, የአለምአቀፍ ወሰንን (አለምአቀፍ ተለዋዋጮችን) ለማስወገድ እና ኮዱን "ሞቃት" የመጫን ችሎታን የሚያቀርብ የታመቀ እና ፈጣን ማጠናከሪያ ማግኘት ፈልጌ ነበር.

ከ C++ ጋር ሲነጻጸር አዲሱ ቋንቋ በጣም ቀላል ነው፣ ፈጣን የማጠናቀር ፍጥነት (እስከ 400 ጊዜ)፣ ደህንነቱ የተጠበቀ የፕሮግራም አወጣጥ ቴክኒኮችን ይለማመዳል፣ ካልተገለጸ ባህሪ ችግር የጸዳ እና አብሮ የተሰሩ ስራዎችን ትይዩ ለማድረግ ያቀርባል። ከፓይዘን ጋር ሲነጻጸር፣ ቪ ፈጣን፣ ቀላል፣ ደህንነቱ የተጠበቀ እና የበለጠ ሊቆይ የሚችል ነው። ከ Go ጋር ሲወዳደር V ምንም አለምአቀፍ ተለዋዋጮች የሉትም ፣ ባዶዎች የሉም ፣ ሁሉም ተለዋዋጭ እሴቶች ሁል ጊዜ መገለጽ አለባቸው ፣ ሁሉም ነገሮች በነባሪነት የማይለዋወጡ ናቸው ፣ አንድ አይነት ምደባ ብቻ ይደገፋል (“a : = 0”) ፣ በጣም የታመቀ ነው የሩጫ ጊዜ እና የሚፈፀሙ ፋይሎች መጠን፣ ከሲ ቀጥታ ተንቀሳቃሽነት መኖር፣ የቆሻሻ ሰብሳቢ አለመኖር፣ ፈጣን ተከታታይነት፣ ሕብረቁምፊዎችን የመቀላቀል ችሎታ (“println('$foo: $bar.baz')”)።

fn ዋና() {
አካባቢዎች:= ['ጨዋታ'፣ 'ድር'፣ 'መሳሪያዎች'፣ 'ሳይንስ'፣ 'ስርዓቶች'፣ 'GUI'፣ 'ሞባይል'] a:= 10
እውነት ከሆነ {
ወደ:= 20
}
በአካባቢው ላለው አካባቢ {
println('ሰላም የ$ area ገንቢዎች!')
}
}

የፕሮጀክት ባህሪዎች

  • የታመቀ እና ፈጣን አቀናባሪ፣ እሱም ከመደበኛው ቤተ-መጽሐፍት ጋር 400 ኪባ አካባቢ ይወስዳል። ከፍተኛ የማጠናቀር ፍጥነት የሚገኘው በማሽን ኮድ እና ሞዱላሪቲ በቀጥታ በማመንጨት ነው። የማጠናቀር ፍጥነቱ በግምት 1.2 ሚሊዮን የኮድ መስመሮች በአንድ ሴኮንድ በአንድ ሲፒዩ ኮር (በሚሰራበት ወቅት ቪ ሲን መጠቀም እንደሚችል እና ከዚያም ፍጥነቱ ወደ 100 ሺህ መስመሮች በሴኮንድ ይቀንሳል)። በV ቋንቋ የተፃፈው የማጠናቀቂያው እራስን መሰብሰብ (በ Go ውስጥ የማጣቀሻ ስሪትም አለ) በግምት 0.4 ሰከንድ ይወስዳል። በዓመቱ መገባደጃ ላይ ተጨማሪ ማመቻቸት ስራዎች ይጠናቀቃሉ ተብሎ የሚጠበቅ ሲሆን ይህም የማጠናቀቂያውን ጊዜ ወደ 0.15 ሰከንድ ይቀንሳል. በገንቢው በተደረጉት ፈተናዎች በመመዘን የ Go ራስን መሰብሰብ 512 ሜጋ ባይት የዲስክ ቦታ ያስፈልገዋል እና በአንድ ደቂቃ ተኩል ውስጥ ይሰራል፣ Rust 30 ጂቢ እና 45 ደቂቃ፣ ጂሲሲ - 8 ጂቢ እና 50 ደቂቃ፣ ክላንግ - 90 ጂቢ እና 25 ደቂቃዎች,
    ስዊፍት - 70 ጂቢ እና 90 ደቂቃዎች;

  • ፕሮግራሞች ያለ ውጫዊ ጥገኞች ወደ ተፈጻሚነት ባላቸው ፋይሎች ይጠቃለላሉ። ከተሰበሰበ በኋላ የቀላል http አገልጋይ የፋይል መጠን 65 ኪ.ባ.
  • የተጠናቀሩ አፕሊኬሽኖች አፈፃፀም በሲ ፕሮግራሞች ስብሰባዎች ደረጃ ላይ ነው;
  • ያለ ተጨማሪ ክፍያ ከሲ ኮድ ጋር ያለችግር የመግባባት ችሎታ። በ C ቋንቋ ውስጥ ያሉ ተግባራት በ V ቋንቋ ከኮድ ሊጠሩ ይችላሉ, እና በተቃራኒው, በ V ቋንቋ ውስጥ ኮድ ከ C ጋር በሚስማማ በማንኛውም ቋንቋ ሊጠራ ይችላል;
  • የC/C++ ፕሮጄክቶችን ወደ ቪ ቋንቋ ውክልና ለመተርጎም ድጋፍ። ከ Clang የመጣ ተንታኝ ለትርጉም ስራ ላይ ይውላል። ሁሉም የC ስታንዳርድ ባህሪያት ገና አልተደገፉም ፣ ግን አሁን ያለው የተርጓሚ ችሎታዎች ቀድሞውኑ በቂ ናቸው። ትርጉም። በ V ጨዋታ DOOM ቋንቋ። የ C ++ ተርጓሚው ገና በመጀመርያ የእድገት ደረጃ ላይ ነው;
  • አብሮገነብ ተከታታይነት ያለው ድጋፍ ፣ ከአሂድ ጊዜ ጋር ሳይታሰር;
  • የማህደረ ትውስታ ምደባ ስራዎችን መቀነስ;
  • ደህንነትን ማረጋገጥ፡- ምንም NULL፣ ዓለም አቀፍ ተለዋዋጮች፣ ያልተገለጹ እሴቶች እና ተለዋዋጭ ዳግም ፍቺዎች የሉም። አብሮ የተሰራ ቋት ከመጠን በላይ መፈተሽ። ለአጠቃላይ ተግባራት ድጋፍ (አጠቃላይ). በነባሪነት ሊለወጡ የማይችሉ ዕቃዎች እና መዋቅሮች;
  • የ "ሙቅ" ኮድ እንደገና የመጫን እድል (ያለ ድጋሚ ማጠናቀር በበረራ ላይ በኮድ ላይ ለውጦችን የሚያንፀባርቅ);
  • ባለብዙ ክር ንባብን ለማረጋገጥ የሚረዱ መሳሪያዎች። ልክ እንደ Go ቋንቋ፣ እንደ "run foo()" ያለ ግንባታ አዲስ የማስፈጸሚያ ክር ለመጀመር ጥቅም ላይ ይውላል (ከ"go foo()" ጋር ተመሳሳይ። ለወደፊቱ, ለጎሪቲኖች ድጋፍ እና የክር መርሐግብር እቅድ ተይዟል;
  • ለዊንዶውስ ፣ ማክሮስ ፣ ሊኑክስ ፣ * BSD ስርዓተ ክወናዎች ድጋፍ። በዓመቱ መጨረሻ ለ Android እና iOS ድጋፍ ለመጨመር ታቅዷል;
  • የማህደረ ትውስታ አስተዳደር በማጠናቀር ጊዜ (እንደ ዝገት) ፣ ቆሻሻ ሰብሳቢ ሳይጠቀሙ ፣
  • ጂዲአይ+/ኮኮዋ እና ኦፕን ጂኤልን በመጠቀም ለግራፊክስ ውፅዓት የብዝሃ-ፕላትፎርም መሳሪያ መገኘት (የDirectX፣Vulkan እና Metal APIs ድጋፍ ታቅዷል)። ከ 3-ል ነገሮች, ከአጥንት አኒሜሽን እና ከካሜራ መቆጣጠሪያ ጋር ለመስራት መሳሪያዎች አሉ;
  • ለእያንዳንዱ የስርዓተ ክወና ተወላጅ የሆኑ የንድፍ አካላት ያላቸው ግራፊክ በይነገጽ ለመፍጠር ቤተ-መጽሐፍት መገኘት። ዊንዶውስ ዊንኤፒአይ/ጂዲአይ+ን ይጠቀማል፣ማክኦኤስ ኮኮዋ ይጠቀማል እና ሊኑክስ የራሱን ስብስብ መግብሮችን ይጠቀማል። ቤተ መፃህፍቱ አስቀድሞ በልማት ስራ ላይ ውሏል ቮልት - ደንበኛ ለ Slack ፣ Skype ፣ Gmail ፣ Twitter እና Facebook;

    ዕቅዱ ዴልፊን የሚመስል የበይነገጽ ንድፍ አፕሊኬሽን መፍጠር፣ ከSwiftUI እና React Native ጋር የሚመሳሰል ገላጭ ኤፒአይ ማቅረብ እና የሞባይል መተግበሪያዎችን ለ iOS እና አንድሮይድ ለመፍጠር ድጋፍ መስጠት ነው።

    V ፕሮግራሚንግ ቋንቋ ክፍት ምንጭ

  • ለፕሮጄክት ገንቢዎች ድር ጣቢያ ፣ መድረክ እና ብሎግ ለመፍጠር የሚያገለግል አብሮ የተሰራ የድር ማዕቀፍ መገኘት። በእያንዳንዱ ጥያቄ ላይ ሳያስኬዱ የኤችቲኤምኤል አብነቶች ቅድመ ዝግጅት ይደገፋል።
  • ክሮስ ማጠናቀር ድጋፍ. ተፈፃሚውን ፋይል ለዊንዶውስ ለመገንባት “v -os windows”ን ብቻ ያሂዱ እና ለሊኑክስ - “v -os linux” (የማክሮ ኦፕሬቲንግ ሲስተም ማቋረጫ ድጋፍ በኋላ ይጠበቃል)። ክሮስ-ማጠናቀር ለግራፊክ አፕሊኬሽኖችም ይሠራል;
  • አብሮገነብ ጥገኝነት አስተዳዳሪ፣ የጥቅል አስተዳዳሪ እና የግንባታ መሳሪያዎች። ፕሮግራሙን ለመገንባት፣ ሰሪ ወይም ውጫዊ መገልገያዎችን ሳይጠቀሙ "v" ን ብቻ ያሂዱ። ተጨማሪ ቤተ መፃህፍትን ለመጫን፣ ለምሳሌ “v get sqlite”ን ብቻ ያሂዱ።
  • በ V ቋንቋ በአርታዒዎች ውስጥ ለልማት ተሰኪዎች መገኘት VS Code и Vim.

ልማት ተገንዝቧል ጋር ማህበረሰብ ጥርጣሬ, የታተመ ኮድ እንደሚያሳየው ሁሉም የታወጁ ችሎታዎች ገና አልተተገበሩም እና ሁሉንም እቅዶች ለመተግበር በጣም ትልቅ ስራ ያስፈልጋል.
በተጨማሪም, መጀመሪያ ላይ ማከማቻው ነበረው ተለጠፈ በመሰብሰብ እና በአፈፃፀም ላይ ችግር ያለበት የተሰበረ ኮድ። ደራሲው ማስተዋል የጀመሩበት ደረጃ ላይ ገና እንዳልደረሱ ይገመታል። የፓሬቶ ህግበዚህ መሠረት 20% ጥረቱ 80% ውጤቱን ያስገኛል ፣ የተቀረው 80% ጥረት ውጤቱ 20% ብቻ ነው።

ይህ በእንዲህ እንዳለ፣ የፕሮጀክት ቪ ስህተት መከታተያ ወደ 10 የሚጠጉ ልጥፎች ተወግደዋል ማሳያ ዝቅተኛ ጥራት ያለው ኮድ ለምሳሌ የ C-inserts አጠቃቀምን እና የ rm ትእዛዝ ማውጫን በጥሪው os.system ("rm -rf $path") ለመሰረዝ የተግባርን ቤተ-መጽሐፍት መጠቀምን ያመለክታል። የፕሮጀክቱ ደራሲ ተገኝቷልእሱ መልእክቶቹን ብቻ እንደሰረዘ ፣ ታትሟል መንኮራኩር (የትችቱን ትክክለኛነት የሚያረጋግጡ ለውጦች ፣ ቆየ в ታሪክ አርትዕ).

ምንጭ: opennet.ru

አስተያየት ያክሉ