Они именно то, что требуется, если вы верите в пользу программного обеспечения написания программного обеспечения, и статическая типизация - программное обеспечение ловя ошибки программного обеспечения - за счет eomplexity (точно), накладные расходы развития (возможно) и эффективности (возможно, но спорно ) - что является основной предпосылкой языков, таких как C # и Java.
Это, однако, еще не полностью выигранная битва.
РЕДАКТИРОВАТЬ (запрошенное объяснение):
Сложность.
Используя либо C #, либо Java, вы получите много кода для настройки, объявления типов, приведения типов, проверки типов и проверки. Некоторые из них вы пишете сами, некоторые из IDE пишет для вас. Но это весь код, за который отвечает разработчик. Основные преимущества для IDE / компилятора - указание на возможные ошибки программного обеспечения и автозаполнение. Я могу с уверенностью сказать, не принимая ни одной из сторон, что в отрасли ведутся дискуссии о том, стоит ли просто объем в строках кода. Это как минимум явное нарушение ЯГНИ. В VS я обычно сталкиваюсь с целыми файлами кода, написанными в IDE, в которых есть ошибки, которые мне в конечном итоге нужно выяснить. Мне не нравится вычислять код, который я не писал.
Затраты на разработку.
То же самое выше. Кроме того, java хорошо известен всеми XML-файлами конфигурации, которые вам нужно написать и поддерживать, чтобы приложение подходило друг другу. Большая часть привлекательности RoR - «конфигурация по соглашению», просто чтобы этого избежать.
Эффективность.
Утверждение, что интерпретируемые или JIT-скомпилированные языки ужасно неэффективны по сравнению со скомпилированными языками, уже давно считается самоочевидным. По большему количеству причин, чем у меня есть здесь время, это предположение ставится под сомнение; например, некоторые из более новых, более быстрых движков JavaScript.
Очевидными вещами для поиска на этом сайте и в Google являются "поздняя привязка", "динамическая типизация", "JIT-компилятор".