Qual è la motivazione per la sintassi di Go lang? [chiuso]

2

Da quando Go lang sta diventando popolare, ho iniziato a giocarci. Io derivano dal linguaggio Java, quindi quando ho visto la sintassi Go è stato un po 'strano per me.

codice di esempio da sito del progetto go lang :

func NewField(w, h int) *Field {
    s := make([][]bool, h)
    for i := range s {
        s[i] = make([]bool, w)
    }
    return &Field{s: s, w: w, h: h}
}
  1. Il tipo restituito dalla funzione viene dopo il nome, proprio come in TypeScript.
  2. Un ulteriore nuovo operatore di dichiarazione delle variabili consiste in := più regolare = operatore di assegnazione.
  3. Utilizzo di riferimenti e puntatori.
  4. A prima vista, una strana dichiarazione di ritorno.
  5. I nomi dei metodi iniziano con la lettera maiuscola, es .: a.Set(rand.Intn(w), rand.Intn(h), true) , e così via.

So che il team di google basato sulla sintassi C. Eppure Java è anche basato su C / C ++ e alla prima impressione sembra più leggibile.

Ovviamente, dopo un po 'di tempo, ci saremmo abituati, eppure mi aspetterei che il nuovo linguaggio sia ancora più leggibile rispetto ad esempio a Java.

Quindi la mia domanda, qual è stata la motivazione alla base dell'implementazione della sintassi in quella delle lingue "più recenti"?

Perché sembra meno leggibile rispetto alle lingue più mature?

    
posta DevDio 21.08.2017 - 18:14
fonte

1 risposta

5

Passare da Java a Go è strano se ti aspetti che sia diverso da Java come C # è diverso da Java. Cioè, per niente. Lascia che Python, Lisp, Closure, o, ansimare, PERL spezzi il tuo cervello prima di proclamare Vai ad essere "un po 'strano".

Ho intenzione di affrontarli in ordine inverso così posso salvare il meglio per ultimo.

5 Method names are starting capitalized, ex.: a.Set(rand.Intn(w), rand.Intn(h), true), and so on.

Questo è uno stile da c #. Yawn.

4 At first sight, strange return statement.

Questa non è una dichiarazione Go return strana.

func vals() (int, int) {
    return 3, 7
}

Questo è una strana dichiarazione di ritorno .

3 Reference and pointers usage.

Oh sì, me li ricordo. C ++ torna di nuovo.

2 Additional new variable declaration operator consist of := plus regular = assignment operator.

Ci hanno dato const e l'abbiamo ignorato. Stiamo ottenendo ciò che meritiamo.

1 Function return type comes after the name, just like in TypeScript.

Grazie a dio. C'è una ragione per questo.

Qualsiasi designer di interfaccia utente decente ti dirà che le cose importanti vanno nell'angolo in alto a sinistra (a patto che tu legga da sinistra a destra, dall'alto in basso). Certamente non appartiene a una pila di testo. Allora, dove abbiamo inserito il nome della funzione?

/**
 * Well gee I guess you like it when looking for the name of your function 
 * is a fun visual exercise like where's waldo.
 *
 * @returns what you'd expect something named Pi to return but since 
 * we're "professionals" I thought I'd tell you again because duplicate
 * documentation never hurt anyone. 
 */
public double Pi() {
    double result;
    result = CalculatePiUsingRandom(x->Random.getdouble(x));  
    return result;
}

Confronta con:

func pi() double {
   '''Yeah I know triple quote comments are a python thing but you get my point'''
}

Sono favorevole a tutto ciò che sposta il nome della funzione nell'angolo in alto a sinistra a cui appartiene. Scusa se fare ciò che ha senso sembra un po 'strano.

    
risposta data 21.08.2017 - 23:17
fonte

Leggi altre domande sui tag