Священные войны в интернете о системах типов по-прежнему страдают от распространенного мифа о том, что динамические системы типов по своей природе лучше подходят для моделирования предметных областей «открытого мира». Обычно аргумент звучит так: цель статической типизации состоит в том, чтобы как можно более точно зафиксировать все сущности, однако в реальном мире это просто неудобно. Реальные системы должны быть слабо связаны и должны как можно меньше быть завязаны на представление данных, поэтому динамическая типизация приводит к более устойчивой системе в целом.
Рубрика «динамическая типизация»
Нет, динамические системы типов по своей сути не более открыты
2020-02-02 в 18:09, admin, рубрики: haskell, java, javascript, динамическая типизация, никто не читает теги, Программирование, Совершенный код, статическая типизацияПереносим 30 000 строк кода с Flow на TypeScript
2019-01-17 в 20:11, admin, рубрики: babel, DefinitelyTyped, flow, flow-typed, javascript, MemSQL, MemSQL Studio, tcomb, TypeScript, динамическая типизация, статическая типизацияНедавно мы перенесли 30 тысяч строк кода JavaScript нашей системы MemSQL Studio с Flow на TypeScript. В этой статье я расскажу, почему мы портировали кодовую базу, как это происходило и что получилось.
Дисклеймер: моя цель — вовсе не критика Flow. Я восхищаюсь проектом и думаю, что в сообществе JavaScript достаточно места для обоих вариантов проверки типов. В итоге каждый выберет то, что ему лучше подходит. Искренне надеюсь, что статья поможет в этом выборе.
Сначала введу вас в курс дела. Мы в MemSQL большие фанаты статической и строгой типизации JavaScript, чтобы избежать типичных проблем с динамической и слабой типизаций.
Читать полностью »
TypeScript в Slack
2017-04-19 в 9:20, admin, рубрики: javascript, slack, Slack Desktop, TypeScript, динамическая типизация, Программирование, Проектирование и рефакторинг, Семантика, Системы обмена сообщениями, статическая типизацияИли как мы перестали беспокоиться и научились доверять компилятору
Когда Брендан Эйх создал самую первую версию JavaScript для Netscape Navigator 2.0 всего за десять дней, вряд ли он ожидал, в какой степени Slack Desktop App будет использовать его изобретение. Мы используем только кодовую базу JavaScript для многопоточного десктопного приложения, которое постоянно взаимодействует с нативным кодом и работает под Windows, macOS и Linux.
Управлять большими кодовыми базами JavaScript непросто. Всякий раз, когда мы мимоходом передаём объекты из JavaScript браузера Chrome в Objective-C, чтобы просто получить обратный вызов через другой поток на Node.js, нужна гарантия, что все кусочки складываются вместе. В десктопном мире маленькая ошибка может привести к сбою приложения. С этой целью мы внедрили TypeScript (статически типизированное надмножество JavaScript) и быстро поняли, как жить без волнений и с любовью к компилятору. И не только мы: опрос разработчиков на Stack Overflow показывает, что TypeScript является третьей самой любимой технологией программирования. Учитывая, насколько быстро статическая проверка типов набирает ход, мы хотим поделиться нашим опытом и методиками.
Читать полностью »
Зачем использовать статические типы в JavaScript? (Пример статической типизации на Flow)
2017-04-12 в 9:29, admin, рубрики: flow, generics, javascript, maybe, TypeScript, динамическая типизация, параметризованные типы, Программирование, Семантика, статическая типизацияКак разработчик JavaScript вы можете целый день программировать, но не встретить ни одного статического типа. Так зачем думать об их изучении?
Ну, на самом деле изучение типов — это не просто упражнение для развития мышления. Если вы вложите некоторое время в изучение статических типов, их преимуществ, недостатков и примеров использования, это может чрезвычайно улучшить ваши навыки программирования.
Заинтересованы? Тогда вам повезло — именно об этом наша серия статей.
Во-первых, определение
Проще всего понять статические типы — это противопоставить их динамическим. Язык со статическими типами называют языком со статической типизацией. С другой стороны, язык с динамическими типами называют языком с динамической типизацией.
Читать полностью »
Статическая и динамическая типизация
2016-08-25 в 8:21, admin, рубрики: haskell, javascript, python, Rust, динамическая типизация, Программирование, статическая типизация, тип данных, типизация, метки: тип, тип данныхЭта статья рассказывает о разнице между статически типизированными и динамически типизированными языками, рассматривает понятия "сильной" и "слабой" типизации, и сравнивает мощность систем типизации в разных языках. В последнее время наблюдается четкое движение в сторону более строгих и мощных систем типизации в программировании, поэтому важно понимать о чем идет речь когда говорят о типах и типизации.
Тип — это коллекция возможных значений. Целое число может обладать значениями 0, 1, 2, 3 и так далее. Булево может быть истиной или ложью. Можно придумать свой тип, например, тип "ДайПять", в котором возможны значения "дай" и "5", и больше ничего. Это не строка и не число, это новый, отдельный тип.
Статически типизированные языки ограничивают типы переменных: язык программирования может знать, например, что x — это Integer. В этом случае программисту запрещается делать x = true
, это будет некорректный код. Компилятор откажется компилировать его, так что мы не сможем даже запустить такой код. Другой статически типизированный язык может обладать другими выразительными возможностями, и никакая из популярных систем типов не способна выразить наш тип ДайПять (но многие могут выразить другие, более изощренные идеи).
Динамически типизированные языки помечают значения типами: язык знает, что 1 это integer, 2 это integer, но он не может знать, что переменная x всегда содержит integer.
Среда выполнения языка проверяет эти метки в разные моменты времени. Если мы попробуем сложить два значения, то она может проверить, являются ли они числами, строками или массивами. Потом она сложит эти значения, склеит их или выдаст ошибку, в зависимости от типа.Читать полностью »
Erlang для самых маленьких. Глава 4: Система типов
2014-07-21 в 9:21, admin, рубрики: erlang, Erlang/OTP, динамическая типизация, для самых маленьких, никакой императивной скверны, Программирование, система типов, функциональное программирование Хороший понедельник! Мы продолжаем изучение Erlang для самых маленьких.
В прошлой главе мы разобрались с синтаксисом функций. В этой главе мы познакомимся с системой типов языка.
Придут ли на смену статически типизированным языкам языки с динамической типизацией?
2012-04-06 в 17:35, admin, рубрики: динамическая типизация, Программирование, статическая типизацияЯ был фанатом статически типизированных языков много лет. Я усвоил урок на собственном горьком опыте, используя C. Слишком много систем ломались из-за глупых ошибок типизации. Когда C++ вышел, я был заядлым приверженцем и яростным адептом строгой типизации. Я насмехался над smalltalk'ерами, кто ныл о потери гибкости. Надежность, в конце концов, была гораздо более важна, чем гибкость. И кроме того, мы могли поддерживать наше ПО гибким И статически типизированным, если просто следовать хорошим принципам управления зависимостями.
Четыре года назад приобщился к XP (методология Extreme Programming). Я полюбил акцент на практичности, который она добавила к разработке ПО. Мне также понравился упор на тестирование. С тех пор я заразился идеей тестирования. Я не могу более представлять себе создания кода без использования TDD (test driven development). Не могу вообразить даже, чтобы не иметь полное покрытие тестами, чтобы мои разработки были в сохранности.
Около двух лет назад я кое-что заметил. Я стал все меньше и меньше зависеть от типизации в плане надежности. Мои юнит-тесты предохраняли меня от совершения ошибок, связанных с типизацией. Чем больше я зависел от юнит-тестов, тем меньше я зависел от надежности на основе типизации в Java или C++ (мои языки).
Читать полностью »