Google Go è una lingua sicura per il tipo?

14

questa pagina link scrive:

although Go has static types the language attempts to make types feel lighter weight than in typical OO languages

Quindi la mia domanda è esattamente digitata in modo sicuro con generici (come C #) o generica (come javascript) o opzionale (come opzione strict in Vb.Net)

    
posta Pacerier 19.05.2011 - 09:49
fonte

3 risposte

26

La sicurezza del tipo non è di tipo bianco o nero sicuro o no. È più di uno spettro e alcune lingue possono essere più di tipo sicuro rispetto ad altri (e viceversa). Tuttavia, penso che quello che stai pensando con C # rispetto a Javascript è probabilmente la tipizzazione statica (dove il controllo dei tipi avviene in fase di compilazione) rispetto alla tipizzazione dinamica (dove il controllo dei tipi avviene in fase di esecuzione) - certamente, questo è di cosa parlano le FAQ di Go.

Google Go è tipizzato in modo statico, ma un certo numero di funzioni lo rendono "visualizzato" (almeno in parte) tipizzato dinamicamente. Ad esempio, non è necessario contrassegnare esplicitamente la classe come implementazione di interfacce. Se le firme del metodo della tua classe corrispondono a quelle dell'interfaccia, la tua classe implementa automaticamente tale interfaccia (una sorta di digitazione anatra). Ciò è utile per estendere classi e classi incorporate in librerie di terze parti, perché puoi semplicemente creare l'interfaccia per abbinare i metodi della classe di terze parti e la implementerà automaticamente.

La sicurezza del tipo è in realtà un "asse" diverso del sistema di tipi. Ad esempio, C è un linguaggio tipizzato staticamente che non è sicuro per il tipo: i puntatori ti consentono di fare praticamente tutto ciò che ti piace, anche di cose che potrebbero mandare in crash il tuo programma. Javascript è digitato in modo dinamico, ma è anche sicuro dal tipo di caratteri: non è possibile eseguire operazioni che causeranno il crash del programma. C # è per lo più sicuro dal testo, ma puoi contrassegnare esplicitamente le aree di codice che sono unsafe e fare cose che non sono più sicure.

Google Go è anche sicuro dal punto di vista del tipo, nel senso che non puoi scherzare con i tipi e mandare in crash il programma (nessun accesso diretto ai puntatori).

    
risposta data 21.05.2011 - 01:17
fonte
4

È digitato in modo sicuro che un tipo non verrà mai erroneamente interpretato, ma un tipo errato può causare il panico del programma.

    
risposta data 19.05.2011 - 11:17
fonte
0

Il tipo di mappa di Go è not thread-safe, è tipizzato staticamente. non ha tipo di ereditarietà, programmazione generica, asserzioni, overload dei metodi o aritmetica dei puntatori, sia per buona ragione.

La sicurezza del tipo e la sicurezza della memoria sono obiettivi a lungo termine, qui c'è un problema.

Tipo di sicurezza presenta un sovraccarico, in kilobyte e megabyte che è accettabile. Go è progettato con MapReduce e "Big data", exobytes di un petabyte di dati, che presenta problemi di prestazioni con sicurezza di tipo, il controllo di tipo (boxing / unboxing) crea overhead e richiede cicli di elaborazione.

La sicurezza del tipo può essere restrittiva nella sottotipizzazione e nel polimorfismo e nella digitazione anatra (getto dell'oggetto su oggetto), questo crea pericoli e anche uno spazio in cui linguaggi come Go sono di grande beneficio. C ++ e Java non vengono sostituiti da Go, è un nuovo linguaggio per aiutare la programmazione distribuita e il sistema massivamente parallelo.

La grande affermazione di Bruce Eckel - "Go ha molto più senso per la classe di problemi che il C ++ originariamente intendeva risolvere", è discutibile. Il C ++ è un linguaggio molto efficiente e l'implementazione Boost di MapReduce è molto efficiente.

I primitivi della concorrenza sono il futuro. Digitare la sicurezza è sempre stato un argomento molto controverso e andare forse la prima lingua per affrontare questo problema in 20 anni, o da Algol.

    
risposta data 10.05.2012 - 07:31
fonte

Leggi altre domande sui tag