Какой язык, по вашему мнению, позволяет среднему программисту создавать функции с наименьшим количеством труднонаходимых ошибок? Это, конечно, очень широкий вопрос, и меня интересуют очень широкие и общие ответы и мудрости.
Лично я обнаружил, что трачу очень мало времени на поиск странных ошибок в программах на Java и C#, в то время как код на C++ имеет свой отдельный набор повторяющихся ошибок, а Python/similar имеет свой набор обычных и глупых ошибок, которые были бы обнаружены компилятором в других языках.
Также мне трудно рассматривать функциональные языки в этом отношении, потому что я никогда не видел большой и сложной программы, написанной полностью функциональным кодом. Прошу вашего мнения.
Edit: Совершенно произвольное уточнение труднонаходимой ошибки: Требуется более 15 минут для воспроизведения, или более 1 часа для поиска причины и устранения.
Простите, если это дубликат, но я не нашел ничего по этой конкретной теме.
Чем мощнее система типов языка, тем больше ошибок будет отловлено на этапе компиляции.
На следующем рисунке сравниваются некоторые известные языки программирования с точки зрения мощности, простоты и безопасности их систем типов. [ Источник ]
*Факторинг возможности использования небезопасных конструкций.
C# попадает в ряд небезопасных из-за ключевого слова "unsafe" и связанного с ним механизма указателей. Но если вы хотите рассматривать их как своего рода механизм встроенных посторонних функций, то не стесняйтесь и поднимите C# выше.
Я отметил Haskell '98 как чистый, но GHC Haskell как не чистый из-за семейства функций unsafe*. Если вы отключите unsafe*, то соответственно поднимите GHC Haskell вверх.