V Notities over het leren van talen
Inhoudsopgave :
Inleiding: vlang, de taal van de toekomst
vlang, voor front-end, back-end, big data, blockchain, kunstmatige intelligentie, doordringt elk aspect van de samenleving. Het verslaan van andere programmeertalen en het verenigen van de wereld in 2050. Het werd zelfs de lingua franca van de wereld, waardoor de mensheid de legendarische Toren van Babel kon herbouwen en de technologie met sprongen vooruitging ......
--- Geciteerd uit People's Daily 2050
Voorwoord
V语言
, Vlang, de programmeertaal voor hackers.
roest en zig zijn goed, maar ze zijn te rigoureus en academisch.
V is meer een snelstarttaal zoals javascript, minder gestructureerd, snel aan de slag en natuurlijk snel.
Veel van de hype op de V-homepage is nog niet doorgedrongen (b.v. C tot V automatisch) en is door velen valse propaganda genoemd, b.v. :
Het is de juiste strategie om eerst voor propaganda te gaan en het dan waar te maken; de mens is een gemeenschap van verbeelding.
De meeste mensen geloven omdat ze zien, en sommige mensen zien omdat ze geloven.
Net zoals het geloof in het communisme misschien in de minderheid is, maar er zal altijd een zeer klein aantal mensen zijn dat echt gelooft, en het vuur van een ster kan een prairiebrand doen ontbranden. Zonder de Communistische Partij zou er geen nieuw China zijn.
Computer wiskundigen vinden V misschien een beetje frivool, maar ik denk dat hackers de taal geweldig zullen vinden.
Denken is handelen, durven denken, durven proberen, en misschien is dat het verschil tussen kunst en wiskunde. Is een programmeertaal kunst of wiskunde? Dat is de eeuwige vraag.
Het beste aan V vind ik de vervaging van de grenzen tussen taalontwerp en programma-ontwikkeling.
Het compileert zichzelf, en in drie of vijf seconden, kan het opnieuw gecompileerd worden, en is de code duidelijk.
De auteur van V schrijft in de V-code directory structuur:
Ik heb geprobeerd om de compiler en de vlib-code zo eenvoudig en leesbaar mogelijk te maken.
Een van de doelstellingen van V is om open te staan voor ontwikkelaars met verschillende niveaus van compiler ontwikkelervaring. De compiler hoeft geen zwarte doos vol magie te zijn die slechts een paar mensen kunnen begrijpen.
De V-compiler is modulair en kan door andere toepassingen worden gebruikt. Het is gelegen op
cmd/v/
envlib/v/
.Het belangrijkste en nuttigste commando bij het werken met de V compiler is
v self
. Het herbouwt de V compiler.De structuur van de compiler is zeer eenvoudig en bestaat uit drie verschillende stappen.
Parsing/genereren van AST (
v.parser
) => controleren van het type (v.checker
) => genereren van C/JavaScript/machinecode (v.gen
)
Men zou kunnen denken :
Maar ik denk dat deze eenvoud het beste is aan V.
Denk niet aan V als een traditionele lompe programmeertaal met een compiler die een obscuur, obscuur boek in de hemel is.
Zie het als een web front-end framework, zoals Vue, waar de toetredingsdrempel laag is en iedereen mee kan doen.
Als je een probleem hebt, verander je het gewoon.
Doe het zelf en je zult genoeg te eten hebben.
Een mooie nieuwe wereld is niet iets waar je maar op zit te wachten, het is iets wat werkende mensen met hun handen creëren.
v self
Compileer het zelf
V kan zichzelf gemakkelijk compileren met v self
. Op mijn 2015-versie van Apple's laptop duurt het 5,63 seconden om één keer te compileren.
Ik raad aan het als broncode te installeren.
git clone git@github.com:vlang/v.git
make
sudo ./v symlink
Als je ideeën hebt, ga je gang en pas je de broncode van de compiler of standaardbibliotheek direct aan.
Gebruik dan v self
en compileer het zelf. Als je je vereisten hebt uitgewerkt, commit ze dan en voeg ze samen in de officiële broncode.
Vandaag heb ik net V geleerd en ik heb 3 merge requests gelanceerd (1, 2, 3 ) met een suggestie voor taalverbetering: optionele expliciete verklaring van ondersteuning voor een interface.
Ik spreek niet goed Engels, maar met de vertaler op DeepL is het gemakkelijk om van het Chinees naar het Engels om te zetten voor een diepgaande communicatie met internationale vrienden.
V Schrijven van scripts
v init
Na het initialiseren van het project, heb ik een compilatie script nodig.
V kan gebruikt worden om dit script te schrijven in plaats van bash.
Mijn compilatie script is als volgt.
#!/usr/bin/env -S v run
import v.vmod
fn sh(cmd string){
println("❯ $cmd")
print(execute_or_exit(cmd).output)
}
vm := vmod.decode( @VMOD_FILE ) or { panic(err) }
name := vm.name
sh('v -autofree -prod ${name}.v')
suffix := $if windows { '.exe' } $else { '' }
src := name + suffix
bin := join_path_single('bin',src)
mkdir('bin') or {}
mv(src, bin)?
println(' '+bin)
Bewaak bestandswijzigingen en start de run automatisch opnieuw op
Het is mijn gewoonte om een script één keer te schrijven en uit te voeren, en te controleren op veranderingen en het automatisch opnieuw te starten is wat ik nodig heb.
v komt met v watch run xx.v
om dit te doen.
Ik heb een script gemaakt om het gebruik van ./dev.sh
als volgt te vergemakkelijken.
#!/usr/bin/env bash
DIR=$(dirname $(realpath "$0"))
cd $DIR
set -ex
NAME=$(cat v.mod|grep name|awk -F\' '{print $2}')
SH="v watch run $NAME.v"
exec $SH \
-i '.git' \
-i 'bin' \
-c -s --before "printf \"\e[90m❯ ${SH}\e[0m\n\""
Voor het project sjabloon zie rmw-link/rmw-v-template