For the built-in types supporting round(), values are rounded to the closest multiple of 10 to the power minus ndigits; if two multiples are equally close, rounding is done toward the even choice (so, for example, both round(0.5) and round(-0.5) are 0, and round(1.5) is 2).
— https://docs.python.org/3.5/library/functions.html#round
… от того, что в сишарпе есть dynamic он не стал динамически типизированным
Возможно, я что-то упускаю, т.к. не знаком с C#, но разве dynamic не использует DLR? Это же не библиотека, а часть языка.
Язык либо динамически типизирован, либо статически.
Здесь соглашусь. Я имел в виду, что те вещи, которые ассоциируют в основном со статической типизацией, характерны и для многих языков с динамической типизацией. И наоборот. Те же object/any, например.
По поводу статьи:
Статическая типизация не панацея. Например, статическая типизация в Java не помогает отловить NullPointerException.
Вот, чуваки утверждают:
A statically typed language can catch some errors in your program before it even runs, by analyzing the types of your variables and the ways they're being used. A dynamically language can't necessarily do this, but generally you'll be writing unit tests for your code either way (since type errors are a small fraction of all the things that might go wrong in a program); as a result, programmers in dynamic languages rely on their test suites to catch these and all other errors, rather than using a dedicated type-checking compiler.
И действительно, как часто, по вашему, у программистов на языках с сильной динамической типизацией возникает несогласование типов (none/null и т.п. не в счёт)? А в статически типизированных?
И каким образом компилятор статически типизированного языка поможет мне защититься от внешних данных с неверным типом?
Нашел на просторах интернета текст, с которым по большей части солидарен, и дабы не пересказывать, оставлю цитату:
Благодаря определению типов во время исполнения программы сильно облегчается метапрограммирование. Очень сильно облегчается. Оно, в свою очередь, упрощает всю остальную работу.
Благодаря гибкости кода в рантайме (см. тот же duck typing) и интроспекции (анализ свойств объектов и кода) получается на порядок проще и быстрее писать универсальные алгоритмы и конструкции вроде декораторов, всяческих ORM и подобных вещей. Это сильно упрощает интерфейсы библиотек, что в совокупности ведёт к более простому коду и к плавной кривой обучения новичков.
Из моей практики (5 лет писал на C++, потом столько же на Python, эти сроки немного пересекались) могу сказать, что с точки зрения ошибок типизации (а собственно их и ставят в недостаток динамически типизированным языкам) разница минимальна — они очень редки и все отлавливаются автоматическими тестами. Конечно, если у вас руки откуда надо растут, а если не откуда надо, то эти ошибки будут далеко не самой большой проблемой. Поэтому в области разработки софта, не требовательного к производительности, такие языки рулят.
Преимущество же статически типизированных языков в том, что, налагая дополнительные ограничения на программиста и на гибкость кода, они позволяют компилятору получить дополнительную информацию о программе и сделать более специфичные операции. Однако нынче почти везде используют JIT и это частично нивелирует разницу в производительности.
В итоге мы получаем классическую дилемму: повышение уровня абстракции против повышения уровня специализации. У каждого пути есть свои плюсы и минусы.
И ещё от туда же:
Тип переменных (примитивов) можно и указать, это не сложно. Гораздо сложнее указывать тип объектов. Не всегда известно, с каким объектом придётся работать. В питоне мне достаточно знать, что у объекта имеется некоторый метод или поле (а можно и того не знать). В статическом языке от меня сам компилятор бы не отстал до тех пор, пока я бы не указал тип объекта. Для этого мне пришлось бы следить, чтобы все объекты наследовались от одного базового класса (что не всегда возможно), или мне пришлось бы выделять интерфейс, имплементируя у всех возможных объектов данный интерфейс. Появлялись бы ситуации, где мне пришлось бы выдумывать, как бы сделать так, чтобы явно не указывать тип, но и чтобы компилятор пропустил.
Ну и где мои коллеги на С# пишут всякие dependency injection, visitor, перегружают методы, наворачивают какие-то абстракции, вводят интерфейсы, я со своим питоном просто проверяю, есть ли свойство через hasattr(), или узнаю тип через type(). Так что, сила питона в интроспекции и рефлексии.
Мне кажется, что автор неоправданно сравнивает C# с JS, противопоставляя статическую типизацию динамической. JS слабо типизирован, но не все языки с динамической типизацией слабо типизированы. Далеко не во всех языках с динамической типизацией можно к строке прибавить число.
Кроме того, не с проста во многих языках со статической типизацией есть тип any. Даже в C# есть утиная типизация.
Это я к тому, что вероятно, неверно относить язык к тому или иному виду типизации, не говоря уже о том, чтобы выбирать язык только по этому параметру. Да, есть языки которые сильно тяготеют к какой-то одной стороне. Но есть и такие, которые "плавают" где-то близко к середине.
Как бы вы ответили на вопрос: какой язык лучше, со слабой статической типизацией, или сильной динамической?
Возможно, глупый вопрос. При выключении экрана или увода в фон приложения таймер стопорится в каком-то приложении? Давно смотрел Cordova, а там webview, и внутренний JS таймер то ли стопорился совсем, то ли сильно замедлялся.
цифровой предмет, который можно неограниченно клонировать и понятие «владения» к нему не применимо
Это по чему же не применимо?
Подписка — это всего лишь способ монетизации уже готового продукта-товара
Я всё же считаю, что подписка — услуга. И я ею не владею, а соответственно не могу перепродать, например.
Кроме того, товар имеет ценность даже после исчезновения его производителя. Услуга же пропадает вместе с ним.
Товар может быть продан здесь и сейчас. Услуга далеко не всегда. Товар может приобретать дополнительные характеристики каждого из владельцев, например старинные вещи или вещи знаменитостей.
В контексте статьи — с последним абзацем полностью согласен, хотя иногда товар и услуга идут в комплексе.
Тогда что такое подписка? Товар или услуга? Мне кажется, что после покупки товара покупатель становится владельцем товара. Владельцем услуги стать нельзя (кроме как стать ее "производителем").
Вроде в телеках есть такая тема. Но возможно, что там уже заранее (со станции) передается увеличенная частота. Возможно, что-то типа Auto Motion Plus, LED Clear Motion, TruMotion, Image Motion, Motion Rate и т.п.
Ну, я живу в Красноярске. Наверное, единственное место, где не принимают карты — это общественный транспорт. Думаю, для любого крупного города это справедливо.
Только в гугле. Вообще, многие вещи сильно банальны, и не столько про SEO, сколько вообще про качество контента. Так же не стоит забывать про домен — вес хабра также влияет на вес статьи.
Кто сказал, что они ограничились только им? Если вам неизвестны результаты чего-либо, это не значит, что этого не было.
Массовое убийство политиков и синаторов не осталось бы незамеченным. Более того, если они были могущественны, зачем им убивать его таким странным и громким способом?
Каким образом парсинг стал равен нарушению авторских прав?
Зависит от версии
Возможно, я что-то упускаю, т.к. не знаком с C#, но разве dynamic не использует DLR? Это же не библиотека, а часть языка.
Здесь соглашусь. Я имел в виду, что те вещи, которые ассоциируют в основном со статической типизацией, характерны и для многих языков с динамической типизацией. И наоборот. Те же object/any, например.
По поводу статьи:
Статическая типизация не панацея. Например, статическая типизация в Java не помогает отловить NullPointerException.
Вот, чуваки утверждают:
И действительно, как часто, по вашему, у программистов на языках с сильной динамической типизацией возникает несогласование типов (none/null и т.п. не в счёт)? А в статически типизированных?
И каким образом компилятор статически типизированного языка поможет мне защититься от внешних данных с неверным типом?
Нашел на просторах интернета текст, с которым по большей части солидарен, и дабы не пересказывать, оставлю цитату:
И ещё от туда же:
Мне кажется, что автор неоправданно сравнивает C# с JS, противопоставляя статическую типизацию динамической. JS слабо типизирован, но не все языки с динамической типизацией слабо типизированы. Далеко не во всех языках с динамической типизацией можно к строке прибавить число.
Кроме того, не с проста во многих языках со статической типизацией есть тип any. Даже в C# есть утиная типизация.
Это я к тому, что вероятно, неверно относить язык к тому или иному виду типизации, не говоря уже о том, чтобы выбирать язык только по этому параметру. Да, есть языки которые сильно тяготеют к какой-то одной стороне. Но есть и такие, которые "плавают" где-то близко к середине.
Как бы вы ответили на вопрос: какой язык лучше, со слабой статической типизацией, или сильной динамической?
Возможно, глупый вопрос. При выключении экрана или увода в фон приложения таймер стопорится в каком-то приложении? Давно смотрел Cordova, а там webview, и внутренний JS таймер то ли стопорился совсем, то ли сильно замедлялся.
Это по чему же не применимо?
Я всё же считаю, что подписка — услуга. И я ею не владею, а соответственно не могу перепродать, например.
Кроме того, товар имеет ценность даже после исчезновения его производителя. Услуга же пропадает вместе с ним.
Товар может быть продан здесь и сейчас. Услуга далеко не всегда. Товар может приобретать дополнительные характеристики каждого из владельцев, например старинные вещи или вещи знаменитостей.
В контексте статьи — с последним абзацем полностью согласен, хотя иногда товар и услуга идут в комплексе.
Тогда что такое подписка? Товар или услуга? Мне кажется, что после покупки товара покупатель становится владельцем товара. Владельцем услуги стать нельзя (кроме как стать ее "производителем").
Вроде в телеках есть такая тема. Но возможно, что там уже заранее (со станции) передается увеличенная частота. Возможно, что-то типа Auto Motion Plus, LED Clear Motion, TruMotion, Image Motion, Motion Rate и т.п.
Блин, увидел ниже в комментах ))
https://rospravosudie.com/law/%D0%A1%D1%82%D0%B0%D1%82%D1%8C%D1%8F_282_%D0%A3%D0%9A_%D0%A0%D0%A4
А robux видимо про эту динамику: https://www.rbc.ru/politics/05/05/2016/572aad469a794740dc3dca0e
А вот из базы: http://sudact.ru/regular/stats/?bookmark=45843020355739&doc_type=NgGUIa0f3zZX&law=lGkck8vytrWa&workflow_type=UB3EUQjGROmv
На текущий момент 273, это по всей стране. Самое старое дело от марта 2011. Остальную стату можно по фильтрам посмотреть.
Cock-up before conspiracy
Наверное потому, что это так не работает. Или вы предлагаете всем откаты слать?
Ну, я живу в Красноярске. Наверное, единственное место, где не принимают карты — это общественный транспорт. Думаю, для любого крупного города это справедливо.
Только в гугле. Вообще, многие вещи сильно банальны, и не столько про SEO, сколько вообще про качество контента. Так же не стоит забывать про домен — вес хабра также влияет на вес статьи.
А почему не nginx+lua или glype? Что-то мне подсказывает, что они более надёжны, чем ваше поделие. Требуем бенчмарки в студию!
Если я не ошибаюсь, то CoralCDN не то же 12, что у вас.
А как же плановый капремонт?
Да, я имел ввиду что-то из разряда Nightmare...
По идее ведь можно обойтись без реального браузера.
Непонятно, можно ли тестировать верстку или запускать в нескольких браузерах.
Смотря как готовить.
Массовое убийство политиков и синаторов не осталось бы незамеченным. Более того, если они были могущественны, зачем им убивать его таким странным и громким способом?