V Σημειώσεις εκμάθησης γλώσσας
Πίνακας περιεχομένων :
Εισαγωγή: vlang, η γλώσσα του μέλλοντος
vlang, για front-end, back-end, big data, blockchain, τεχνητή νοημοσύνη, διαπερνά κάθε πτυχή της κοινωνίας. Να νικήσουμε άλλες γλώσσες προγραμματισμού και να ενοποιήσουμε τον κόσμο το 2050. Έγινε μάλιστα η lingua franca του κόσμου, επιτρέποντας στην ανθρωπότητα να ξαναχτίσει τον θρυλικό Πύργο της Βαβέλ και να προχωρήσει τεχνολογικά με άλματα ......
--- Απόσπασμα από το People's Daily 2050
Πρόλογος
V语言
, Vlang, η γλώσσα προγραμματισμού για χάκερ.
Η σκουριά και το ζιγκ είναι καλές, αλλά είναι πολύ αυστηρές και ακαδημαϊκές.
Η V είναι περισσότερο σαν μια γλώσσα γρήγορης εκκίνησης όπως η javascript, λιγότερο δομημένη, γρήγορη για να ξεκινήσετε και φυσικά γρήγορη.
Μεγάλο μέρος της διαφημιστικής εκστρατείας στην αρχική σελίδα του V δεν έχει ακόμη πιάσει τόπο (π.χ. η αυτόματη μετατροπή του C σε V) και έχει χαρακτηριστεί ψευδής προπαγάνδα από πολλούς, για παράδειγμα :
Είναι η σωστή στρατηγική να προχωρήσουμε πρώτα στην προπαγάνδα και στη συνέχεια να την υλοποιήσουμε- οι άνθρωποι είναι μια κοινότητα φαντασίας.
Οι περισσότεροι άνθρωποι πιστεύουν επειδή βλέπουν, και κάποιοι βλέπουν επειδή πιστεύουν.
Ακριβώς όπως, η πίστη στον κομμουνισμό μπορεί να είναι μειοψηφία, αλλά πάντα θα υπάρχει ένας πολύ μικρός αριθμός ανθρώπων που πραγματικά πιστεύουν, και η φωτιά ενός αστεριού μπορεί να προκαλέσει φωτιά στα λιβάδια. Χωρίς το Κομμουνιστικό Κόμμα δεν θα υπήρχε νέα Κίνα.
Οι μαθηματικοί υπολογιστών μπορεί να βρίσκουν το V λίγο επιπόλαιο, αλλά πιστεύω ότι οι χάκερς θα λατρέψουν τη γλώσσα.
Το να σκέφτεσαι σημαίνει να ενεργείς, να τολμάς να σκέφτεσαι, να τολμάς να προσπαθείς, και ίσως αυτή είναι η διαφορά μεταξύ τέχνης και μαθηματικών. Είναι μια γλώσσα προγραμματισμού τέχνη ή μαθηματικά; Αυτό είναι το αιώνιο ερώτημα.
Νομίζω ότι το καλύτερο πράγμα για το V είναι η θόλωση των ορίων μεταξύ του σχεδιασμού γλωσσών και της ανάπτυξης προγραμμάτων.
Μεταγλωττίζεται μόνο του και σε τρία ή πέντε δευτερόλεπτα μπορεί να μεταγλωττιστεί εκ νέου και ο κώδικας είναι σαφής.
Ο συγγραφέας του V γράφει στη δομή καταλόγου του κώδικα V:
Προσπάθησα να κάνω τον μεταγλωττιστή και τον κώδικα vlib όσο το δυνατόν πιο απλό και ευανάγνωστο.
Ένας από τους στόχους του V είναι να είναι ανοιχτός σε προγραμματιστές με διαφορετικά επίπεδα εμπειρίας στην ανάπτυξη μεταγλωττιστών. Ο μεταγλωττιστής δεν χρειάζεται να είναι ένα μαύρο κουτί γεμάτο μαγεία που μόνο λίγοι άνθρωποι μπορούν να καταλάβουν.
Ο μεταγλωττιστής V είναι αρθρωτός και μπορεί να χρησιμοποιηθεί από άλλες εφαρμογές. Βρίσκεται στη διεύθυνση
cmd/v/
καιvlib/v/
.Η πιο σημαντική και χρήσιμη εντολή κατά την εργασία με τον μεταγλωττιστή V είναι η
v self
. Ανακατασκευάζει τον μεταγλωττιστή V.Η δομή του μεταγλωττιστή είναι πολύ απλή και αποτελείται από τρία διαφορετικά βήματα.
Ανάλυση/παραγωγή AST (
v.parser
) => έλεγχος του τύπου (v.checker
) => παραγωγή κώδικα C/JavaScript/μηχανής (v.gen
)
Κάποιος θα μπορούσε να σκεφτεί :
Αλλά νομίζω ότι αυτή η απλότητα είναι το καλύτερο πράγμα για το V.
Μην θεωρείτε την V ως μια παραδοσιακή δύσχρηστη γλώσσα προγραμματισμού με έναν μεταγλωττιστή που είναι ένα σκοτεινό, σκοτεινό βιβλίο στον ουρανό.
Σκεφτείτε το ως ένα web front-end framework, όπως το Vue, όπου το εμπόδιο εισόδου είναι χαμηλό και όλοι μπορούν να συμμετάσχουν.
Αν έχετε κάποιο πρόβλημα, απλά αλλάξτε το.
Κάντε το μόνοι σας και θα έχετε άφθονο φαγητό.
Ένας όμορφος νέος κόσμος δεν είναι κάτι που απλά κάθεσαι και περιμένεις, είναι κάτι που οι εργαζόμενοι δημιουργούν με τα χέρια τους.
v self
Μεταγλωττιστείτε μόνοι σας
Το V μπορεί εύκολα να μεταγλωττιστεί μόνο του χρησιμοποιώντας το v self
. Στην έκδοση 2015 του φορητού υπολογιστή της Apple, χρειάζεται 5,63 δευτερόλεπτα για να μεταγλωττιστεί μία φορά.
Συνιστώ να το εγκαταστήσετε ως πηγαίο κώδικα.
git clone git@github.com:vlang/v.git
make
sudo ./v symlink
Αν έχετε κάποια ιδέα, προχωρήστε και τροποποιήστε απευθείας τον πηγαίο κώδικα του μεταγλωττιστή ή της τυπικής βιβλιοθήκης.
Στη συνέχεια, χρησιμοποιήστε το v self
και μεταγλωττιστείτε το μόνοι σας. Μόλις επεξεργαστείτε τις απαιτήσεις σας, δεσμεύστε και συγχωνεύστε τις στον επίσημο πηγαίο κώδικα.
Σήμερα μόλις έμαθα το V και ξεκίνησα 3 αιτήσεις συγχώνευσης (1, 2, 3 ) με μια πρόταση για βελτίωση της γλώσσας: προαιρετική ρητή δήλωση υποστήριξης μιας διεπαφής.
Δεν μιλάω καλά αγγλικά, αλλά με τον μεταφραστή στο DeepL είναι εύκολο να μετατρέψω από κινέζικα σε αγγλικά για μια σε βάθος επικοινωνία με διεθνείς φίλους .
V Γράφοντας σενάρια
v init
Μετά την αρχικοποίηση του έργου, χρειάζομαι ένα σενάριο μεταγλώττισης.
V μπορεί να χρησιμοποιηθεί για να γράψετε αυτό το σενάριο αντί του bash.
Το σενάριο μεταγλώττισης έχει ως εξής.
#!/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)
Παρακολούθηση αλλαγών αρχείων και αυτόματη επανεκκίνηση της εκτέλεσης
Συνηθίζω να γράφω και να εκτελώ ένα σενάριο μία φορά, και η παρακολούθηση των αλλαγών και η αυτόματη επανεκκίνηση είναι αυτό που χρειάζομαι.
v συνοδεύεται από το v watch run xx.v
για να το κάνετε αυτό.
Δημιούργησα ένα σενάριο για να διευκολύνω τη χρήση του ./dev.sh
ως εξής.
#!/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\""
Για το πρότυπο έργου δείτε rmw-link/rmw-v-template