Преимущества слабого набора текста перед строгим набором текста - PullRequest
2 голосов
/ 04 августа 2011

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

Лично я, вероятно, предпочел бы дополнительную безопасность строгой типизации и иметь дело с незначительными неудобствами для определенных операций, но есть ли преимущество слабой типизации помимо этого? Есть ли что-то, что строгая типизация никогда не могла бы сделать так же?

Ответы [ 4 ]

4 голосов
/ 04 августа 2011

Некоторые языки предлагают концепции для изменения поведения объекта или класса во время выполнения: объект, который не реализует метод, может решить найти способ ответить на вызов метода, тем не менее.Делегирование - это обычный способ позволить другому объекту ответить на сообщение клиента.Объекты могут обнаружить отсутствующую реализацию и передать вызов метода делегату.Также возможно динамически добавлять реализацию метода при его вызове.

Эти концепции основаны на динамическом поиске метода, а не на слабой или строгой типизации.Но слабая типизация тесно связана с динамическим поиском, поэтому я считаю, что это считается преимуществом.

2 голосов
/ 30 ноября 2012

Для меня почти нет преимущества (только куча подводных камней).Он подвержен ошибкам, сложен для отладки, выполнение юнит-тестирования - это ах .....

Мне нужны ОШИБКИ КОМПИЛЕЙ, мне не нравится отлаживать динамический объект, почему он неправильный, или ........

2 голосов
/ 04 августа 2011

Очевидно, что в строке нет вычислимости ... языки со строгой типизацией могут быть эквивалентными по Тьюрингу, и, предполагая, что языки со слабой типизацией не являются контрпримерами к тезису Черча-Тьюринга (можно представить, что это будет широко опубликовано, если было известно, что это так), тогда они, по крайней мере, такие же мощные (вычислительно говоря), как слабо типизированные языки.

Затем мы можем спросить, есть ли временная или пространственная сложность на линии. Мое интуитивное чувство здесь, что ответ - нет; Разница между строгой и слабой типизацией, вероятно, не значительна (с точки зрения вычислительной сложности) в модели вычислений в ОЗУ. Я могу очень легко ошибаться здесь. Однако языки со строгой типизацией, вероятно, могут быть скомпилированы в более жесткий код, поэтому в любом случае реальная производительность может быть предпочтительна для языков со строгой типизацией.

На мой взгляд, единственное очевидное преимущество - это программируемость / возможность записи / читаемость / и т.д. Таким образом, это облегчает жизнь программистов, позволяя им писать меньше кода с меньшими усилиями, чтобы получить тот же эффект, что и написание большего кода с большими усилиями на языке с более строгими правилами ввода. С другой стороны, это также подлежит обсуждению, поскольку строгая типизация может облегчить предоставление гарантий правильности / надежности.

0 голосов
/ 14 февраля 2013

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

Ошибки компиляции очень полезны, потому что они мгновенно показывают, тогда как для поиска всех ошибок времени выполнения вам нужно пройти через каждый сценарий каждого использования.дело.И если вы не разрабатываете автоматизированные тесты, которые покрывают 100% (я еще не видел кого-то подобного), у вас будет более хрупкое программное обеспечение, чем с языком со строгой типизацией.

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

...