Разве слабая типизация больше не нужна? - PullRequest
2 голосов
/ 27 июля 2010

Я родом из статически / строго типизированного языка (java), и недавно я начал изучать python, и мне кажется, я вижу ценность динамического / строго типизированного языка.

Теперь мне интересно, может ли слабая типизация быть желательной.

Проходя через stackoverflow, я нашел только объяснения, которые говорят, что он имеет преимущества в производительности. Поскольку вес такого выигрыша в производительности в современном мире программирования снижается, слабая типизация практически не работает? Например, может ли кто-нибудь из хороших дизайнеров языка в будущем сделать свой язык слабо типизированным?

Если так, то почему?

Ответы [ 5 ]

4 голосов
/ 27 июля 2010

Слабая типизация полезна в основном при низкоуровневом программировании.Например, функция для чтения целого числа или строки с диска должна взять последовательность байтов и получить целое число или строку.Это намного сложнее сделать при строгой печати. ​​

3 голосов
/ 09 октября 2011

Слабый набор текста был и никогда не понадобится.Это никак не влияет на семантику.Это эквивалент вызова функций преобразования автоматически.Пример сравнивает int с плавающей точкой в ​​C: 1 == 1.0.Это скомпилируется без каких-либо жалоб.Для этого нет никаких причин, кроме «удобства», например, если бы была функция из int_to_float и выполняющая intToFloat(1) == 1.0, она, очевидно, была бы встроена в C, и этот код делал бы то же самое, что и при преобразовании int впоплавок.Слабая типизация - это компромисс между безопасностью и удобством.

Хотя я действительно не понимаю, что удобно запоминать каждый отдельный случай (оператор × операнд × операнд) (float / int), (float ==int), (string + int), (int + string), (string + boolean), (int + long) и т. д.

1 голос
/ 30 июля 2010

Это не пламя, а просто мой опыт в целом.За более чем 10 лет написания и обслуживания кода я встречал ошибки, связанные с типами, менее полдюжины раз.Однако я стал сильно ненавидеть идею типов при написании низкоуровневого кода, который перемещает байты.Я давно считал, что идея печатать больше не нужна, когда культура программирования переняла идеалы хорошей читабельности.

Конечно, в зависимости от языка и стиля кодирования, типизация может либо помочь, либо затруднить понимание кода, поэтому яне возражайте против типизированных языков.

Так что, пока есть люди, которые, как и я, не видят никаких преимуществ в типах, всегда будут языки, разработанные для того, чтобы они были типизированы или слабо типизированы.

Учитывая послужной список ошибок и того, какой язык использовался (как в моем опыте, так и из того, что я вижу в открытом исходном коде), строгая или слабая типизация не сильно влияет на качество кода.Учитывая код, который я на самом деле прочитал на своем опыте, я бы также сказал, что он не сильно влияет на читаемость кода.Для меня это просто вопрос вкуса (хотя я знаю, что сильные люди типа не согласны, они просто не могут подтвердить свое несогласие с фактами, это просто их интуиция, говорящая им не соглашаться).Хорошо, это последнее предложение было почти пламенным.Я лучше остановлюсь сейчас.

0 голосов
/ 27 июля 2010

Это сокращает время кодирования, но не увеличивает время отладки; Ошибки типов обнаруживаются при тестировании почти так же быстро, как компилятор находит их, но вам не нужно было набирать int fooBar = 2 Однако это также помогает не иметь 4+ числовых типов ...

0 голосов
/ 27 июля 2010

Похоже, вы могли бы заставить что-то работать быстрее, если бы вам не пришлось беспокоиться о типах. Некоторые языки не заставляют вас беспокоиться о них.

Все зависит от того, чего вы пытаетесь достичь.

...