Ruby не более гибок или разрушаем, чем другие языки, потому что программист может делать глупости в Ruby так же, как в PHP, Java или C.
Некоторые среды программирования (IDE) выполняют прекомпиляцию и проверяют синтаксические ошибки в коде, но если разработчик ошибся, или отключил предупреждения или уведомления об ошибках, они все равно будут в состоянии выстрелить. пешком Это не вина языка, они сделали глупости. Именно недостаток дисциплины, опыта или предусмотрительности со стороны разработчика, а не языка, привел к коду, который вызвал проблему.
Когда я писал в C, я включил все ошибки и установил предупреждения на их максимальную серьезность. Мой код скомпилирован без ошибок, и у меня была высокая степень уверенности, что код был хорош. В то же время я проверил все свои выделения памяти, чтобы убедиться, что я получил значение, проверил мои коды возврата из системных вызовов и т. Д., Потому что я заботился о том, чтобы мой код работал правильно и был чистым. Я получал код от людей, которые отключили предупреждения, потому что им не нравился поток сообщений, и он не работал, и просмотр кода показал, что он полон игнорируемых кодов возврата и не проверял распределение памяти. Подобно тому, что сказал Форест Гамп: «Неряшливый, как небрежный».
Я тесно сотрудничал с некоторыми очень талантливыми PHP-разработчиками, и их код был таким же чистым, как мой или хорошим разработчиком на любом языке. Я также работал с очень талантливыми и опытными разработчиками, которые снова писали мусор, потому что им было все равно, чтобы писать код, который можно было обслуживать и безопасно.
Итак, хотя некоторые, возможно, захотят указать пальцем и сказать, что определенный язык не так хорош, как другой, потому что язык часто терпит неудачу, он сводится к человеку, который держит руки на клавиатуре. Не используйте язык.
Тестирование, будь то устройство, интеграция или что-то еще, - это еще один шаг в процессе программирования, который помогает обеспечить хорошее качество. Кажется, что для тестирования требуется вдвое больше кода, чем если бы вы не тестировали, но автоматизированный компонент тестирования - это невероятная сеть безопасности, которую нельзя оценить, пока она не отловит ошибки после изменений кода, что плохо бы сломал приложение.
Около шести месяцев назад я начал регулярно работать с кодом, написанным не программистом. Он очень талантлив в том, что он делает, но ему нужен был старший разработчик, чтобы программировать с ним и показывать ему, почему все делается определенным образом. Первое, что я сделал с ним, - познакомил его с тестовой сеткой безопасности. У него был некоторый тестовый код для случайных вещей, но ничего, что проверяло бы реальное поведение программы. Однажды он увидел это в действии, он был верующим, а теперь пишет свои тесты, как он идет. Это потрясающая вещь. : -)