Che ne dici di cinque cose che odio degli elenchi "Cose che odio di una lingua"? : D
5- Dipingere un rosso arancio non lo rende una mela.
Quando viene progettato un linguaggio, i progettisti in genere hanno in mente a cosa serve. Usarlo per qualcosa di completamente diverso può funzionare, ma lamentarsi quando non lo è è semplicemente stupido. Prendi Python. Sono sicuro che qualcuno ha o qualcuno un giorno farà un'utilità per creare exe dal codice Python. Perché sulla terra di Dio vorresti farlo? Sarebbe pulito, non fraintendetemi, ma non serve. Quindi smettila di lamentarti!
Un progetto ben progettato conterrebbe probabilmente codice da più lingue. Questo non vuol dire che non puoi completare un progetto con una sola lingua. Alcuni progetti potrebbero rientrare nelle capacità di qualunque lingua tu stia usando.
4- Stai in piedi su gambe di legno?
La piattaforma può avere una grande influenza su ciò che la lingua può fare. Con oggigiorno i garbage collector, o anche i primi tentativi di Pascal di "garbage collection", possono aiutare a svanire la memoria (forse malloc più ram ??). I computer sono più veloci e quindi ovviamente ci aspettiamo di più dalle nostre lingue. E francamente, probabilmente dovremmo. Tuttavia, c'è un prezzo enorme da pagare per la comodità del compilatore di creare tabelle hash o stringhe o una varietà di altri concetti. Queste cose potrebbero non essere ereditate dalla piattaforma di cui sono utilizzate. Dire che sono facili da includere in una lingua mi dice che potresti non avere una gamba su cui stare.
3- Chi è la colpa è davvero?
Bugs. Sai. Adoro i bug. Perché amo i bug. Perché significa che riesco a mantenere il mio lavoro. Senza bug, ci sarebbero molte pizzerie chiuse. Tuttavia, gli utenti odiano i bug. Ma ecco un po 'di acqua fredda. Ogni errore è colpa dei programmatori. Non la lingua. Un linguaggio con una sintassi così rigorosa che ridurrebbe in modo significativo il numero di bug che è stato possibile generare sarebbe un linguaggio completamente inutile. Le sue abilità potrebbero probabilmente essere contate da un lato. Vuoi flessibilità o potenza? Hai dei bug. Perché? Perché non sei perfetto e commetti errori. Prendi un esempio davvero identificabile in C:
int a[10];
for (int idx = 0; idx < 15; idx++) a[idx] = 10;
Sappiamo tutti cosa sta per fare. Tuttavia, ciò che forse alcuni di noi non capiscono è che la funzionalità può essere molto utile. A seconda di cosa stai facendo. I sovraccarichi del buffer sono il costo di tale funzionalità. Quel codice sopra. Se lo avessi effettivamente rilasciato al pubblico. Questo è ancora .. dillo con me .. "Colpa mia". Non C per avermi permesso di farlo.
2- Non dovremmo metterlo nel cestino?
È molto facile indicare una caratteristica in una lingua che non capiamo perché non la usiamo spesso e la chiamiamo stupida. Lamentati che è lì, ecc. Goto mi intrattiene sempre. Le persone si lamentano sempre del fatto che Goto sia in una lingua. Eppure scommetto che il tuo ultimo programma includeva un tipo di goto. Se hai mai usato una pausa o un proseguimento, hai usato un goto. Questo è quello che è. Certo, è un goto "sicuro", ma è quello che è. I Goto hanno i loro usi. Se vengono usati goto "impliciti" come continue o break o goto espliciti (usando la parola chiave "goto" per qualsiasi lingua). Non che gli sviluppatori di lingue siano impeccabili, ma in genere ... se la funzionalità esiste dagli albori dei tempi (per quella lingua). Probabilmente quell'aspetto è una qualità distintiva di quella lingua. Significato .. è ' s viene utilizzato e probabilmente non è in giro a causa della compatibilità con le versioni precedenti. Viene utilizzato oggi. Come 5 minuti fa. E usato correttamente. Beh ... probabilmente qualcuno lo sta usando anche in modo improprio, ma questo si riferisce al n. 3 della mia lista.
1. - Tutto è un oggetto.
Ok .. questo è davvero un sottoinsieme di # 2. Ma questa è di gran lunga la lamentela più fastidiosa che vedo negli elenchi di odio. Non tutto è un oggetto. Esistono molti concetti che non appartengono o non devono essere oggetti. Mettere le cose a cui non appartengono è semplicemente brutto e può ridurre l'efficienza di un programma. Sicuro. Forse non molto a seconda della lingua. Questo si riferisce anche al n. 5. Questo significa ... si. I globali sono ok. Le funzioni associate ai metodi statici sono ok. Combinare la programmazione OO con funzioni globali è ok. Ora ... questo non significa che dovremmo uscire tutti e "liberare" il nostro codice dai suoi modelli di oggetti. Quando si progetta una sezione di codice o un intero progetto, cosa succede dietro le quinte dovrebbeessere preso in considerazione quando lo si mette insieme. Non solo dove vive quel concetto e molti altri fattori. Perché avvolgere le funzioni globali all'interno di classi o concetti di spazio dei nomi se non serve a nulla? Prendi variabili membro statiche. Questo mi diverte molto perché ... beh ... A seconda del linguaggio e dell'attuazione ovviamente, ma in generale, hai appena dichiarato un globale. Sì, ci sono alcuni motivi per avvolgere questi concetti non OO nei wrapper OO. Uno ovviamente è il codice auto-documentante. Questo può avere senso. Quindi .. come ho detto. Non uscire e "liberare" il tuo codice. Ma qualsiasi buon linguaggio moderno avrà un concetto globale al di fuori della sua modellazione OO. Sì, intendo specificamente sottolineare che un linguaggio di programmazione OO senza un concetto globale molto probabilmente ha un grave difetto di progettazione. Ancora però .. dipende dall'intenzione e dal design della lingua, quindi non sto cercando di scegliere una lingua specifica e ce ne sono troppe da analizzare proprio qui. Comunque, considera dove dovrebbe vivere il codice ed essere il più efficace. L'aggiunta di un sacco di bagliori a qualcosa che non aggiunge funzionalità o supporto semplicemente consuma la tastiera più velocemente. Non fa bene a nessuno. Beh ... a meno che non ti piacciano i punti brownie della persona che probabilmente ti ha insegnato erroneamente che tutto è un oggetto.
In breve, la programmazione non è solo toccando senza pensarci sulla tastiera. Ci sono molte considerazioni di progettazione in ogni progetto. So che è un cliché, ma devi guardarlo da ogni angolazione. Anche al giorno d'oggi linguaggi sicuri per i tipi. Non devi semplicemente scartare il codice e ti aspetti che funzioni bene. Certo .. potrebbe funzionare, ma potrebbe non essere il modo giusto di procedere. Nel complesso, scegli la lingua e il formato più adatti per il lavoro specifico E l'ambiente. Ma nessuna lingua toglie il pensiero dietro di essa. Se non stai pensando .. stai solo scrivendo.