It-юмор

It-юмор
Вы смотрите срез комментариев. Показать все
3
Автор поста оценил этот комментарий
Все потому, что нестрогая динамическая типизация - зло.
в си нестрогая, но статическая - 99.9% косяков вылезет на этапе компиляции.
В каком-нибудь питоне динамическая, но строгая. При сложении числа со строкой будет эксепшн.
А когда все делается автоматически и динамически, уследить за преобразованиями очень сложно
раскрыть ветку (8)
3
Автор поста оценил этот комментарий

Зло - отсутствие интеллекта. Если где-то в глубине программы вместо числа появляется строка - проблема не в языке, а в плохом навыке у программиста. За входными параметрами и переполнением нужно следить на любом языке, просто ошибки в каждом будут проявляться по разному. Г*внокодер будет одинакового гадить как  на c, так и на js.

раскрыть ветку (1)
5
Автор поста оценил этот комментарий
Не надо оправдывать неудачный дизайн языка кривыми руками кодера. В любой сделанной ошибке виноват кодер, но то, как спроектирован язык, влияет на вероятность совершения той или иной ошибки.
В си легко выстрелить себе в ногу, используя динамическую память. Это означает особенность дизайна языка, а не то, что на си пишут только те, кто не разбирается в устройстве памяти.
В том же питоне скрипт может вылететь после трёх суток расчетов потому, что перед одной строчкой 7 пробелов, а не 8 (утрирую, на самом деле выдаст ошибку при парсинге перед исполнением, но не суть). Это ошибка программиста, но язык увеличил ее вероятность
Автор поста оценил этот комментарий

Я вообще не очень понял, зачем так было сделано. В каких случаях настрогая динамическая типизация дает какие-то ощутимые бонусы? Когда пишешь вот такое?


    return 'The answer is: ' + answer + '.';


Так вроде все уже пишут


    return `The answer is ${answer}.`;


а в этом случае, как я понимаю, строгая типизация будет нормально работать (по крайней мере, в Питоне работает). И в чем прикол?

раскрыть ветку (5)
Автор поста оценил этот комментарий
В первом случае не будет, будет эксепшн, что оператор + не определен для строки и типа переменной answer, если это не строка.
А конструкция во втором выражении как раз создана на такой случай. Использование string interpolation (в julia это так называется, в других языках мб иначе) гораздо безопаснее. В худшем случае программа напечатает дефолтное строковое представление объекта и продолжит работу, а не вылетит с ошибкой или не сделает 9 + '9' = '99'
раскрыть ветку (2)
1
Автор поста оценил этот комментарий
В первом случае не будет, будет эксепшн, что оператор + не определен для строки и типа переменной answer, если это не строка.
Мы же про JS сейчас, а не про Питон? Там прекрасно все сработает, он приведет answer к строке и все сконкатенирует.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Я про питон)
Да, в js это будет работать и мой тезис в том, что это нехорошо
2
Автор поста оценил этот комментарий

Там, где в JS ты пишешь две строчки вида


obj = JSON.parse(response);

console.alert(obj.doc.info[0].caption);


В строго типизированных языках ты или будешь писать дичь вида


console.alert((String) ((Map<?, ?>) ((List<?>) ((Map<?, ?>) obj.get("doc")).get("info")).get(0)).get("caption"))


или писать 50 DTO-классов, чтобы какой-нибудь jackson промаппил всю эту лабуду.


С первым подходом всё проще и быстрей. Зато всё ломается хрен пойми где, когда делают изменения. Со вторым подходом писанины больше, но и порядка в итоге больше.


Понятно, что и во втором случае нагомнокодить никто не запрещает и в первом случае можно делать всё грамотно.


А Python от JS в этом плане мало отличается. Всякие там неявные преобразования из строки в число это просто историческая дурость, которую когда-то сделали и убрать уже невозможно.

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий
Обожаю обращения по индексу без проверки на существование
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку