Sinonimi per gli operatori

4

Nel caso di un linguaggio funzionale di nuova progettazione, prendi in considerazione ad es. l'operatore non è uguale a , scritto /= come è comune tra le lingue funzionali.

Ovviamente questo operatore è anche conosciuto come != nei linguaggi di famiglia C e <> in SQL et al. Sarebbe facile fare in modo che il parser li accetti come sinonimi, nella speranza di ridurre il numero di cose per le quali una persona non ha molta familiarità con la lingua da inciampare. Ma a conti fatti è una cosa utile da fare, o aggiungerebbe più confusione di quanto valga?

La maggior parte delle lingue tradizionali non fornisce sinonimi, probabilmente sulla base del fatto che sono progettati per programmatori che hanno familiarità con la sintassi.

Ma cosa succede se stai progettando un linguaggio di scripting, per scenari in cui molti utenti non saranno molto familiari con esso, e potrebbero essere specialisti in qualcosa di diverso dalla programmazione? Questo fa pendere l'equilibrio a favore di fornire sinonimi per rendere le cose più facili per i neofiti?

    
posta rwallace 17.08.2011 - 00:28
fonte

3 risposte

5

Credo che quando si impara una lingua, il problema principale non è imparare gli operatori. Questa è (di solito) solo una parte piuttosto piccola della sintassi, che di per sé è la parte più piccola dell'intera attività. I programmatori più competenti possono scrivere codice sintatticamente corretto in una nuova lingua dopo un paio d'ore o giorni. Tuttavia, la parte più difficile è capire e sperimentare la logica interiore del linguaggio, essere in grado di produrre soluzioni eleganti e semplici, usare i costrutti linguistici nel modo in cui erano destinati, piuttosto che abusare del linguaggio cercando di farlo lavora come un altro, più familiare.

E avere molte (eventuali) versioni immaginabili di operatori in una lingua ha anche degli svantaggi:

  • rende la grammatica più complessa, rendendo così più difficile il compito degli scrittori di compilatori / interpreti (il che significa che avranno meno tempo per sviluppare nuove funzionalità per noi),
  • lo stesso simbolo di operatore può significare cose diverse in lingue diverse, ad es. il tuo esempio /= significherebbe "dividi e assegna" a un programmatore cresciuto nella famiglia C,
  • utilizzare notazioni diverse per indicare che la stessa cosa rende i programmi più difficili da leggere e, di conseguenza, da mantenere. Il cervello di una persona ha solo bisogno di un po 'di capacità extra per mappare tra queste diverse rappresentazioni (e un po' di lavoro extra molte volte può sommarsi a importi significativi ...), quindi rimane meno capacità per le cose veramente importanti.
risposta data 17.08.2011 - 00:40
fonte
3

Ho riflettuto più o meno la stessa cosa in passato. Durante l'apprendimento di Haskell, semplicemente non potevo ricordare che /= non significava "dividi per e assegna a". Ma fai l'errore ... compilare, maledire la lingua, ricompilare, risciacquare, ripetere, fino a quando ... all'improvviso, un giorno, non stai più maledicendo il compilatore o commettendo l'errore. Ora mi confondo solo quando lavoro in C tutto il giorno.

Alla fine, se la tua lingua FORZA il programmatore a fare le cose in un certo modo, allora è così che lo faranno - e se significa che gli utenti maledicono il tuo nome mentre stanno imparando, quindi vorrei umilmente affermare che questo è meglio di quegli utenti che maledicono i nomi di tutti quelli con cui stanno lavorando, mentre loro sono nella stanza con loro, perché tutti hanno usato operatori diversi per il loro codice. Parla di una pessima revisione del codice.

    
risposta data 17.08.2011 - 00:38
fonte
1

Scegline uno e seguilo. Ci sono un certo numero di cose a cui ci si deve abituare quando si cambiano le lingue. Rispetto alle altre cose che dovrai affrontare, questo è uno dei più piccoli. Avere dei sinonimi porterà solo a confusione quando due persone usano normalmente simboli diversi ma finiscono sullo stesso progetto. È più facile cambiare sapere che X significa Y piuttosto che essere in grado di usare la mia Y normale, ma ricordando che X e Z potrebbero anche essere usati al suo posto.

    
risposta data 17.08.2011 - 00:37
fonte

Leggi altre domande sui tag