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Άνοιγμα σε νέο παράθυρο

Ενημερώσεις:
Από το: gcxfd