V ప్రోగ్రామింగ్ లాంగ్వేజ్ ఓపెన్ సోర్స్

అనువదించబడింది కోసం ఓపెన్ కంపైలర్ వర్గంలోకి భాష వి. V అనేది స్థిరంగా టైప్ చేయబడిన మెషిన్-కంపైల్డ్ లాంగ్వేజ్, ఇది డెవలప్‌మెంట్‌ను సులభంగా నిర్వహించడం మరియు కంపైల్ చేయడం చాలా వేగంగా చేయడంపై దృష్టి పెడుతుంది. కంపైలర్ కోడ్, లైబ్రరీలు మరియు సంబంధిత సాధనాలు తెరిచి ఉంది MIT లైసెన్స్ కింద.

V యొక్క వాక్యనిర్మాణం Goని పోలి ఉంటుంది, Oberon, Rust మరియు Swift నుండి కొన్ని నిర్మాణాలను తీసుకుంటుంది. భాష వీలైనంత సరళీకృతం చేయబడింది మరియు డెవలపర్ ప్రకారం, ప్రాథమికాలను నేర్చుకోవడానికి 30 నిమిషాల అధ్యయనం సరిపోతుంది డాక్యుమెంటేషన్. అదే సమయంలో, భాష చాలా శక్తివంతంగా ఉంటుంది మరియు ఇతర ప్రోగ్రామింగ్ భాషలను ఉపయోగిస్తున్నప్పుడు అదే పనులను నిర్వహించడానికి ఉపయోగించవచ్చు (ఉదాహరణకు, లైబ్రరీలు 2D/3D గ్రాఫిక్స్, GUIలు మరియు వెబ్ అప్లికేషన్‌లను సృష్టించడం కోసం అందుబాటులో ఉన్నాయి).

గో భాష యొక్క సింప్లిసిటీ యొక్క సింటాక్స్, కంపైలేషన్ వేగం, ఆపరేషన్‌ల సమాంతరీకరణ సౌలభ్యం, C/C++ పనితీరుతో కోడ్ యొక్క పోర్టబిలిటీ మరియు మెయింటెనబిలిటీ, రస్ట్ యొక్క భద్రత మరియు జిగ్ కంపైలేషన్ దశలో మెషిన్ కోడ్ ఉత్పత్తి. బాహ్య డిపెండెన్సీలు లేకుండా పని చేయగల, గ్లోబల్ స్కోప్ (గ్లోబల్ వేరియబుల్స్) నుండి బయటపడి, కోడ్‌ను "హాట్" రీలోడ్ చేసే సామర్థ్యాన్ని అందించే కాంపాక్ట్ మరియు ఫాస్ట్ కంపైలర్‌ను కూడా పొందాలనుకుంటున్నాను.

C++తో పోలిస్తే, కొత్త భాష చాలా సరళమైనది, వేగవంతమైన సంకలన వేగాన్ని (400 సార్లు వరకు) అందిస్తుంది, సురక్షితమైన ప్రోగ్రామింగ్ పద్ధతులను అభ్యసిస్తుంది, నిర్వచించబడని ప్రవర్తనతో సమస్యలు లేకుండా ఉంటుంది మరియు ఆపరేషన్‌లను సమాంతరంగా చేయడం కోసం అంతర్నిర్మిత సాధనాలను అందిస్తుంది. పైథాన్‌తో పోలిస్తే, V వేగవంతమైనది, సరళమైనది, సురక్షితమైనది మరియు మరింత నిర్వహించదగినది. Goతో పోలిస్తే, Vకి గ్లోబల్ వేరియబుల్స్ లేవు, శూన్యాలు లేవు, అన్ని వేరియబుల్ విలువలు ఎల్లప్పుడూ నిర్వచించబడాలి, అన్ని వస్తువులు డిఫాల్ట్‌గా మారవు, ఒకే రకమైన అసైన్‌మెంట్‌కు మాత్రమే మద్దతు ఉంటుంది (“a := 0”), గణనీయంగా మరింత కాంపాక్ట్ రన్‌టైమ్ మరియు ఫలితంగా ఎక్జిక్యూటబుల్ ఫైల్‌ల పరిమాణం, C నుండి డైరెక్ట్ పోర్టబిలిటీ ఉనికి, చెత్త కలెక్టర్ లేకపోవడం, వేగవంతమైన సీరియలైజేషన్, స్ట్రింగ్‌లను ఇంటర్‌పోలేట్ చేసే సామర్థ్యం (“println('$foo: $bar.baz')”).

fn ప్రధాన() {
ప్రాంతాలు := ['గేమ్', 'వెబ్', 'టూల్స్', 'సైన్స్', 'సిస్టమ్స్', 'జియుఐ', 'మొబైల్'] a := 10
నిజమైతే {
కు:= 20
}
ప్రాంతాలలో ప్రాంతం కోసం {
println(‘హలో, $ఏరియా డెవలపర్లు!’)
}
}

ప్రాజెక్ట్ ఫీచర్లు:

  • కాంపాక్ట్ మరియు ఫాస్ట్ కంపైలర్, ఇది ప్రామాణిక లైబ్రరీతో కలిపి సుమారు 400 KB పడుతుంది. మెషిన్ కోడ్ మరియు మాడ్యులారిటీ యొక్క డైరెక్ట్ జనరేషన్ ద్వారా అధిక కంపైలేషన్ వేగం సాధించబడుతుంది. సంకలన వేగం ఒక CPU కోర్‌లో సెకనుకు దాదాపు 1.2 మిలియన్ లైన్‌ల కోడ్ (ఆపరేషన్ సమయంలో V Cని ఉపయోగించవచ్చని గుర్తించబడింది, అప్పుడు వేగం సెకనుకు 100 వేల లైన్‌లకు పడిపోతుంది). కంపైలర్ యొక్క స్వీయ-అసెంబ్లీ, ఇది V భాషలో కూడా వ్రాయబడింది (గోలో రిఫరెన్స్ వెర్షన్ కూడా ఉంది), సుమారు 0.4 సెకన్లు పడుతుంది. సంవత్సరం చివరి నాటికి, అదనపు ఆప్టిమైజేషన్ల పని పూర్తవుతుందని భావిస్తున్నారు, ఇది కంపైలర్ నిర్మాణ సమయాన్ని 0.15 సెకన్లకు తగ్గిస్తుంది. డెవలపర్ నిర్వహించిన పరీక్షలను బట్టి చూస్తే, గో స్వీయ-అసెంబ్లీకి 512 MB డిస్క్ స్థలం అవసరం మరియు ఒకటిన్నర నిమిషాల్లో రన్ అవుతుంది, రస్ట్‌కి 30 GB మరియు 45 నిమిషాలు, GCC - 8 GB మరియు 50 నిమిషాలు, క్లాంగ్ - 90 GB మరియు 25 నిమిషాలు,
    స్విఫ్ట్ - 70 GB మరియు 90 నిమిషాలు;

  • ప్రోగ్రామ్‌లు బాహ్య డిపెండెన్సీలు లేకుండా ఎక్జిక్యూటబుల్ ఫైల్‌లుగా కంపైల్ చేయబడతాయి. అసెంబ్లీ తర్వాత సాధారణ http సర్వర్ యొక్క ఎక్జిక్యూటబుల్ ఫైల్ పరిమాణం 65 KB మాత్రమే;
  • సంకలనం చేయబడిన అప్లికేషన్ల పనితీరు C ప్రోగ్రామ్‌ల సమావేశాల స్థాయిలో ఉంటుంది;
  • అదనపు ఓవర్‌హెడ్ లేకుండా, C కోడ్‌తో సజావుగా పరస్పర చర్య చేసే సామర్థ్యం. C భాషలోని విధులను V భాషలోని కోడ్ నుండి పిలవవచ్చు మరియు దీనికి విరుద్ధంగా, V భాషలోని కోడ్ Cకి అనుకూలమైన ఏ భాషలోనైనా పిలువబడుతుంది;
  • C/C++ ప్రాజెక్ట్‌లను V భాషలో ప్రాతినిధ్యంగా అనువదించడానికి మద్దతు. అనువాదం కోసం క్లాంగ్ నుండి పార్సర్ ఉపయోగించబడుతుంది. C ప్రమాణం యొక్క అన్ని లక్షణాలకు ఇంకా మద్దతు లేదు, కానీ అనువాదకుని ప్రస్తుత సామర్థ్యాలు ఇప్పటికే సరిపోతాయి అనువాదం V గేమ్ డూమ్ భాషలో. C++ అనువాదకుడు ఇంకా అభివృద్ధి ప్రారంభ దశలోనే ఉన్నాడు;
  • రన్‌టైమ్‌తో ముడిపడి ఉండకుండా, అంతర్నిర్మిత సీరియలైజేషన్ మద్దతు;
  • మెమరీ కేటాయింపు కార్యకలాపాలను తగ్గించడం;
  • భద్రతకు భరోసా: NULL లేదు, గ్లోబల్ వేరియబుల్స్, నిర్వచించబడని విలువలు మరియు వేరియబుల్ పునర్నిర్వచనం. అంతర్నిర్మిత బఫర్ ఓవర్‌రన్ చెకింగ్. జెనరిక్ ఫంక్షన్‌లకు మద్దతు (జెనరిక్). డిఫాల్ట్‌గా మార్చలేని వస్తువులు మరియు నిర్మాణాలు;
  • "హాట్" కోడ్ రీలోడింగ్ యొక్క అవకాశం (రీకంపైలేషన్ లేకుండా ఫ్లైలో కోడ్‌లో మార్పులను ప్రతిబింబిస్తుంది);
  • మల్టీథ్రెడింగ్‌ను నిర్ధారించే సాధనాలు. గో భాషలో వలె, కొత్త థ్రెడ్ ఎగ్జిక్యూషన్‌ను ప్రారంభించడానికి "రన్ ఫూ()" వంటి నిర్మాణం ఉపయోగించబడుతుంది ("గో ఫూ()" లాగానే). భవిష్యత్తులో, గోరౌటిన్‌లకు మద్దతు మరియు థ్రెడ్ షెడ్యూలర్ ప్లాన్ చేయబడింది;
  • Windows, macOS, Linux, *BSD ఆపరేటింగ్ సిస్టమ్‌లకు మద్దతు. ఇది సంవత్సరం చివరి నాటికి Android మరియు iOS కోసం మద్దతును జోడించడానికి ప్రణాళిక చేయబడింది;
  • కంపైల్ సమయంలో మెమరీ నిర్వహణ (రస్ట్ లాగా), చెత్త సేకరించే యంత్రాన్ని ఉపయోగించకుండా;
  • రెండరింగ్ కోసం GDI+/Cocoa మరియు OpenGL ఉపయోగించి గ్రాఫిక్స్ అవుట్‌పుట్ కోసం బహుళ-ప్లాట్‌ఫారమ్ టూల్‌కిట్ లభ్యత (DirectX, Vulkan మరియు Metal APIలకు మద్దతు ప్రణాళిక చేయబడింది). 3D వస్తువులు, అస్థిపంజర యానిమేషన్ మరియు కెమెరా నియంత్రణతో పని చేయడానికి సాధనాలు ఉన్నాయి;
  • ప్రతి OSకి చెందిన డిజైన్ అంశాలతో గ్రాఫికల్ ఇంటర్‌ఫేస్‌లను రూపొందించడానికి లైబ్రరీ లభ్యత. Windows WinAPI/GDI+ని ఉపయోగిస్తుంది, macOS Cocoaని ఉపయోగిస్తుంది మరియు Linux దాని స్వంత విడ్జెట్‌లను ఉపయోగిస్తుంది. లైబ్రరీ ఇప్పటికే అభివృద్ధిలో ఉపయోగించబడింది వోల్ట్ — స్లాక్, స్కైప్, Gmail, Twitter మరియు Facebook కోసం క్లయింట్;

    డెల్ఫీ-వంటి ఇంటర్‌ఫేస్ డిజైన్ అప్లికేషన్‌ను రూపొందించడం, స్విఫ్ట్‌యుఐ మరియు రియాక్ట్ నేటివ్ వంటి డిక్లరేటివ్ APIని అందించడం మరియు iOS మరియు ఆండ్రాయిడ్ కోసం మొబైల్ అప్లికేషన్‌లను రూపొందించడానికి మద్దతును అందించడం ప్రణాళిక;

    V ప్రోగ్రామింగ్ లాంగ్వేజ్ ఓపెన్ సోర్స్

  • ప్రాజెక్ట్ డెవలపర్‌ల కోసం వెబ్‌సైట్, ఫోరమ్ మరియు బ్లాగ్‌ని సృష్టించడానికి ఉపయోగించే అంతర్నిర్మిత వెబ్ ఫ్రేమ్‌వర్క్ లభ్యత. ప్రతి అభ్యర్థనపై వాటిని ప్రాసెస్ చేయకుండా, HTML టెంప్లేట్‌ల ప్రీకంపైలేషన్‌కు మద్దతు ఉంది;
  • క్రాస్ కంపైలేషన్ మద్దతు. Windows కోసం ఎక్జిక్యూటబుల్ ఫైల్‌ను రూపొందించడానికి, కేవలం “v -os windows”ని మరియు Linux కోసం - “v -os linux”ని అమలు చేయండి (macOS కోసం క్రాస్-కంపైలేషన్ మద్దతు తర్వాత ఆశించబడుతుంది). క్రాస్-కంపైలేషన్ గ్రాఫికల్ అప్లికేషన్ల కోసం కూడా పనిచేస్తుంది;
  • అంతర్నిర్మిత డిపెండెన్సీ మేనేజర్, ప్యాకేజీ మేనేజర్ మరియు బిల్డ్ టూల్స్. ప్రోగ్రామ్‌ను రూపొందించడానికి, మేక్ లేదా ఎక్స్‌టర్నల్ యుటిలిటీలను ఉపయోగించకుండా “v.”ని అమలు చేయండి. అదనపు లైబ్రరీలను ఇన్‌స్టాల్ చేయడానికి, కేవలం అమలు చేయండి, ఉదాహరణకు, “v get sqlite”;
  • ఎడిటర్‌లలో V భాషలో అభివృద్ధి కోసం ప్లగిన్‌ల లభ్యత VS కోడ్ и vim.

డిజైన్ గ్రహించారు తో సంఘం సంశయవాదం, ప్రచురించిన కోడ్ అన్ని ప్రకటించబడిన సామర్థ్యాలు ఇంకా అమలు చేయబడలేదు మరియు అన్ని ప్రణాళికలను అమలు చేయడానికి చాలా పెద్ద మొత్తంలో పని అవసరం అని చూపించింది.
అదనంగా, ప్రారంభంలో రిపోజిటరీ ఉంది పోస్ట్ చేయబడింది విరిగిన కోడ్ అసెంబ్లీ మరియు అమలులో సమస్యలను కలిగి ఉంది. వారు గమనించడం ప్రారంభించే దశకు రచయిత ఇంకా చేరుకోలేదని భావించబడుతుంది పారెటో చట్టం, దీని ప్రకారం 20% ప్రయత్నం 80% ఫలితాన్ని ఉత్పత్తి చేస్తుంది మరియు మిగిలిన 80% ప్రయత్నం 20% ఫలితాన్ని మాత్రమే ఉత్పత్తి చేస్తుంది.

ఇంతలో, ప్రాజెక్ట్ V యొక్క బగ్ ట్రాకర్ నుండి దాదాపు 10 పోస్ట్‌లు తీసివేయబడ్డాయి ప్రదర్శన తక్కువ నాణ్యత కోడ్, ఉదాహరణకు, C-ఇన్సర్ట్‌ల వినియోగాన్ని మరియు కాల్ os.system("rm -rf $path") ద్వారా rm కమాండ్ డైరెక్టరీని తొలగించడానికి ఫంక్షన్ల లైబ్రరీలో వినియోగాన్ని సూచిస్తుంది. ప్రాజెక్ట్ యొక్క రచయిత అతను చెప్పాడుఅతను సందేశాలను మాత్రమే తొలగించాడని, ప్రచురించబడింది ట్రోల్ (విమర్శ యొక్క ప్రామాణికతను నిర్ధారించే మార్పులతో, ఉండిపోయింది в చరిత్రను సవరించండి).

మూలం: opennet.ru

ఒక వ్యాఖ్యను జోడించండి