Pull to refresh
  • by relevance
  • by date
  • by rating

Что за файл?

Website development *
Бывает такая ситуация, когда приходят данные в непонятном виде. Если не та кодировка, это решается достаточно просто, а если неизвестные бинарные данные? Экзотический архиватор, шифрованные данные, хеш или вообще мусор?

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

Отсюда вопрос / идея / предложение.
Читать дальше →
Total votes 44: ↑32 and ↓12 +20
Views 11K
Comments 35

Статическая и динамическая типизация

Python *JavaScript *Programming *Haskell *Rust *
Translation

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



Тип — это коллекция возможных значений. Целое число может обладать значениями 0, 1, 2, 3 и так далее. Булево может быть истиной или ложью. Можно придумать свой тип, например, тип "ДайПять", в котором возможны значения "дай" и "5", и больше ничего. Это не строка и не число, это новый, отдельный тип.


Статически типизированные языки ограничивают типы переменных: язык программирования может знать, например, что x — это Integer. В этом случае программисту запрещается делать x = true, это будет некорректный код. Компилятор откажется компилировать его, так что мы не сможем даже запустить такой код. Другой статически типизированный язык может обладать другими выразительными возможностями, и никакая из популярных систем типов не способна выразить наш тип ДайПять (но многие могут выразить другие, более изощренные идеи).


Динамически типизированные языки помечают значения типами: язык знает, что 1 это integer, 2 это integer, но он не может знать, что переменная x всегда содержит integer.


Среда выполнения языка проверяет эти метки в разные моменты времени. Если мы попробуем сложить два значения, то она может проверить, являются ли они числами, строками или массивами. Потом она сложит эти значения, склеит их или выдаст ошибку, в зависимости от типа.

Читать дальше →
Total votes 50: ↑42 and ↓8 +34
Views 116K
Comments 88

Как запутать аналитика. Часть вторая: что такое моделирование предметной области?

Semantics *System Analysis and Design *Designing and refactoring *IT Standards *ООP *
В прошлой статье я говорил о заблуждениях, к которым склонны программисты и обещал рассказать про заблуждения, к которым склонны не только программисты, но и каждый из нас.

Объект учета и результат его классификации (существительные)


Проведем мысленный эксперимент. Представьте себе два хранилища моделей. В одном хранилище созданы классы для хранения моделей плавательных средств, в другом – классы для хранения моделей автомобилей. Допустим, что есть объект, который в одном хранилище описан как объект класса плавсредство, а во второй – как объект класса автомобиль. Допустим, что стоит задача объединения этих хранилищ в одно. Как вы это сделаете?
Читать дальше →
Total votes 16: ↑13 and ↓3 +10
Views 8.7K
Comments 63

Pattern matching в C# 7

Microsoft corporate blog Programming *.NET *C# *
Translation
В C# 7 наконец-то появилась долгожданная функция под названием «сопоставление с образцом». Если вы знакомы с функциональными языками, такими как F#, то эта функция в том виде, в котором она существует на данный момент, может вас слегка разочаровать. Но даже сегодня она способна упростить код в самых разных случаях. Подробнее под катом!

Читать дальше →
Total votes 17: ↑16 and ↓1 +15
Views 29K
Comments 12