Ronzio...
Sembra che io sia un po 'in ritardo in questa discussione, ma l'ho scoperto solo ora. E sono grato a tutti voi per così tanto input.
Sono l'autore di G-WAN, il che rende chiaro che ho lavorato seriamente sulla questione: G-WAN è sia più veloce di tutti gli altri Web Server (nessuna elaborazione) che di tutti gli altri Web Application Server (qualsiasi elaborazione tu possa immaginare).
Sì, ANSI C ha anche reso possibile elaborare più contenuto statico - con CPU meno potenti (ANSI C non riguarda solo il far volare i contenuti dinamici).
A proposito, G-WAN utilizza script C (non sono necessari compilatori e linker C) quindi il ciclo / ritardo di compilazione / collegamento non esiste.
Nel processo di confronto tra G-WAN e .NET Java e PHP, ho scritto applicazioni simili in tutte e 4 le lingue: http://gwan.ch/source/
E, con mio sgomento, i moderni linguaggi di scripting non erano più facili da usare.
Una parte del lavoro che è particolarmente frustrante è ricerca disperata la chiamata API "magica" che farà quello che vuoi fare.
Pensa a come fare "belle migliaia" in:
C #
String.Format("{0:n}"...
Giava
new DecimalFormat("0.00"); ...
PHP
number_format($amount, 2); ...
ANSI C
sprintf("%'.2f", amount);
Il "..." significa che è necessaria una pre-configurazione o post-elaborazione. ANSI C è chiaramente più facile da usare e da ricordare.
Quando PHP ha più di 5900 chiamate API (C # e Java non lontano), trovare la giusta chiamata API è di per sé una sfida. Il tempo sprecato per trovare questo (e poi per scoprire quanto male il nativo è implementata la chiamata API ), il tempo per imparare da hart per la prossima volta che ne avrai bisogno, tutto questo tempo ti sta privando del tempo necessario per risolvere la tua applicazione i problemi.
Ho letto (sopra) che PHP è più conciso di ANSI C? Perché allora usare "//:: this is a comment ::"
invece di"// this is a comment"
? Perché avere una sintassi così stupidamente complessa "belle migliaia"?
L'altro argomento usuale è che Java e simili forniscono chiamate dedicate per applicazioni Web.
Non sono riuscito a trovare nulla per sfuggire all'HTML in Java, quindi ne ho scritto la mia versione:
// all litteral strings provided by a client must be escaped this way
// if you inject them into an HTML page
public static String escape_html(String Name) {
int len = Name.length();
StringBuffer sb = new StringBuffer(len);
boolean lastWasBlankChar = false;
int c;
for(int i=0; i<len; i++) {
c = Name.charAt(i);
if(c == ' ') sb.append(" "); else
if(c == '"') sb.append("""); else
if(c == '&') sb.append("&"); else
if(c == '<') sb.append("<"); else
if(c == '>') sb.append(">"); else
if(c == '\n') sb.append("<br/>"); else {
c = c&0xffff; // unicode
if(c < 32 || c > 127) {
sb.append("&#");
sb.append(new Integer(c).toString());
sb.append(';');
} else
sb.append(c);
}
}
return sb.toString();
//szName = sb.toString();
}
Credi davvero che lo stesso codice in ANSI C sarebbe più complesso? No, sarebbe immensamente più semplice e veloce.
Java (derivato da C) richiede ai programmatori di collegare stringhe multilinea con un '+'
C # (derivato da C) richiede ai programmatori di collegare stringhe multilinea con un '+'
PHP (derivato da C) richiede ai programmatori di collega stringhe multilinea con un '.'
ANSI C non ha questo requisito ora completamente stupido (obsoleto).
Allora, il progresso così evidente rivendicato dalle lingue moderne? Lo sto ancora cercando.
Cordiali saluti,
Pierre.