Гум ...
Здається, я трохи запізнююсь у цій дискусії - але я лише зараз це відкрив. І я вдячний усім вам за стільки вкладень.
Я є автором G-WAN, що дає зрозуміти, що я серйозно попрацював над цим питанням: G-WAN працює як швидше, ніж усі інші веб-сервери (без обробки), так і всі інші сервери веб-додатків (будь-яка обробка, яку ви можете собі уявити).
Так, ANSI C також дав можливість обробляти більш статичний контент - з менш потужними процесорами (ANSI C - це не лише змушення динамічного вмісту літати).
До речі, G-WAN використовує C-скрипти (не потрібен компілятор C і лінкер), тому цикл компіляції / зв'язування / затримки не існує.
У процесі порівняння G-WAN з .NET Java та PHP я написав подібні програми на всіх 4 мовах: http://gwan.ch/source/
І, на жаль, сучасні мови сценаріїв були не простішими.
Однією з особливо важких завдань є відчайдушний пошук «чарівного» дзвінка API, який буде робити те, що ви хочете зробити.
Подумайте, як зробити «досить тисяч» у:
C #
String.Format("{0:n}"...
Java
new DecimalFormat("0.00"); ...
PHP
number_format($amount, 2); ...
ANSI C
sprintf("%'.2f", amount);
Значення "..." означає, що необхідна деяка попередня конфігурація або післяобробка. ANSI C явно простіший у використанні та запам'ятовується.
Якщо у PHP більше 5900 API-викликів (C # та Java недалеко), знайти правильний виклик API - це завдання самостійно. Час витрачався на те, щоб знайти це (а потім дізнатися, наскільки погано рідний реалізований API-виклик), час вчитися, хартируючи його наступного разу, коли це потрібно, весь цей час позбавляє вас часу, необхідного для вирішення вашої заявки. проблеми.
Я читав (вище), що PHP більш лаконічний, ніж ANSI C? Навіщо тоді використовувати, "//:: this is a comment ::"
а не "// this is a comment"
? Чому є такий дурно складний синтаксис «досить тисяч»?
Іншим звичним аргументом є те, що Java та подібні надають спеціальні дзвінки для веб-додатків.
Мені не вдалося знайти нічого, щоб уникнути HTML на Java, тому я написав свою версію:
// 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();
}
Ви справді вірите, що той самий код в ANSI C був би складнішим? Ні, це було б і надзвичайно простіше і швидше.
Java (похідний від C) є вимагає програмістами лінії рядків многострочного з «+»
C # (похідного від C) є вимагають програмістами лінії рядків многострочного з «+»
PHP (похідним від C) є вимагає програмістів зв’яжіть багаторядкові рядки із знаком '.'
У ANSI C немає такої зараз абсолютно дурної (застарілої) вимоги.
Отже, чи настільки очевидний прогрес стверджують сучасні мови? Я досі її шукаю.
З повагою,
П’єр.