КулЛиб - Классная библиотека! Скачать книги бесплатно
Всего книг - 710950 томов
Объем библиотеки - 1390 Гб.
Всего авторов - 274032
Пользователей - 124951

Новое на форуме

Новое в блогах

Впечатления

medicus про Маш: Охота на Князя Тьмы (Детективная фантастика)

cit anno: "студентка факультета судебной экспертизы"


Хорошая аннотация, экономит время. С четырёх слов понятно, что автор не знает, о чём пишет, примерно нихрена.

Рейтинг: 0 ( 0 за, 0 против).
serge111 про Лагик: Раз сыграл, навсегда попал (Боевая фантастика)

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

Рейтинг: 0 ( 0 за, 0 против).
medicus про Aerotrack: Бесконечная чернота (Космическая фантастика)

Коктейль "ёрш" от фантастики. Первые две трети - космофантастика о девственнике 34-х лет отроду, что нашёл артефакт Древних и звездолёт, на котором и отправился в одиночное путешествие по галактикам. Последняя треть - фэнтези/литРПГ, где главный герой на магической планете вместе с кошкодевочкой снимает уровни защиты у драконов. Получается неудобоваримое блюдо: те, кому надо фэнтези, не проберутся через первые две трети, те же, кому надо

  подробнее ...

Рейтинг: 0 ( 0 за, 0 против).
Влад и мир про Найденов: Артефактор. Книга третья (Попаданцы)

Выше оценки неплохо 3 том не тянет. Читать далее эту книгу стало скучно. Автор ударился в псевдо экономику и т.д. И выглядит она наивно. Бумага на основе магической костной муки? Где взять такое количество и кто позволит? Эта бумага от магии меняет цвет. То есть кто нибудь стал магичеть около такой ксерокопии и весь документ стал черным. Вспомните чеки кассовых аппаратов на термобумаге. Раз есть враги подобного бизнеса, то они довольно

  подробнее ...

Рейтинг: 0 ( 0 за, 0 против).
Stix_razrushitel про Дебров: Звездный странник-2. Тропы миров (Альтернативная история)

выложено не до конца книги

Рейтинг: 0 ( 0 за, 0 против).

Типизированный Python для профессиональной разработки [Алексей Голобурдин] (pdf) читать постранично, страница - 2

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

("Пётр", "petr@email.com", 120560)

Так зачем же вводить type hinting в язык с динамической типизацией? А я напомню,
что в Python сейчас есть type hinting, то есть подсказки типов, они же есть в PHP, а в
JS даже разработали TypeScipt, отдельный язык программирования, который
является надстройкой над JS и вводит типизацию. Зачем это всё делается, для чего?
Вроде скриптовые языки, не надо писать типы, думать о них, и всё прекрасно, а тут
раз — и вводят какие-то типы данных.
Зачем в динамически типизированном языке вводить явное указание типов?

Раннее выявление ошибок
Первое — это ранее выявление ошибок. Есть у нас некая программа и есть в этой
некой программе ошибка. Когда мы можем её выявить? Мы можем выявить её на
этапе написания программы, мы можем выявить её на этапе подготовки программы

к разворачиванию на сервере, или мы можем выявить её на этапе runtime, то есть
когда программа уже опубликована на сервере, ей пользуются пользователи.
Как вы думаете, на каком этапе лучше выявлять ошибки? Очевидно — чем раньше,
тем лучше. Если ошибки долетают до пользователей, то это максимально плохо.
Почему?
Во-первых, потому что пользователи недовольны, а раз пользователи недовольны,
то много денег мы с нашим программным продуктом не заработаем, так как люди не
будут охотно его покупать и рекомендовать другим. К тому же очень неприятно, что
мы занимаемся любимым делом, активно трудимся, реализуем сложные алгоритмы,
а результатом нашего труда пользователи недовольны. И винить-то объективно
некого, кроме нас самих. Непорядочек, непорядочек!
Во-вторых, недовольные пользователи обращаются в техподдержку, создают
тикеты, которые спускаются потом на разработку — это всё тратит деньги компании.
Если ничего не ломается, то обращений в поддержку мало, тикетов мало, а
разработчики заняты разработкой новых фичей продукта, а не постоянными
правками отвалившейся старой логики. Постоянные поломки это постоянные
финансовые потери.
В-третьих, из-за ошибок, которые видят пользователи, компания несёт
репутационные потери. Пользователи пишут негативные отзывы, они легко гуглятся
другими потенциальными пользователями, СМИ, инвесторами, всё это в конечном
итоге негативно влияет и на капитализацию компании, и на возможности
привлечения инвестиций, и на чистую прибыль компании, если она вообще есть.
Если мы хотим быть профессиональными высокооплачиваемыми специалистами, то
наша задача — генерировать через результаты нашей работы радость и прибыль, а
не поток проблем и убытков.
Поэтому важнейшая задача для нас — сделать так, чтобы до пользователей не
доходило ни одной ошибки. Для достижения этой цели нужен системный подход,
одной внимательности в процессе программирования мало. Нужна выверенная
система, алгоритм действий, инструментарий, который не позволит ошибкам дойти
до пользователей.
Какой это может быть инструментарий? Это могут быть автотесты. Однако первый
принцип тестирования гласит, что тестирование может показать наличие дефектов в
программе, но не доказать их отсутствие. Тесты это хорошо, но не на одних только
тестах всё держится. Чем больше капканов для разных видов ошибок расставлено,
тем надёжнее программа и крепче сон разработчика. А что, в конце концов, может
быть важнее крепкого, здорового сна разработчика?

Помимо автотестов (и ручного тестирования людьми) можно проверять
корректность использования типов специальными инструментами. Например,
компилятор Rust — прооосто красавчик! Он на этапе компиляции выявляет огромное
количество проблем и попросту не даёт скомпилировать программу, если видит в
ней места с ошибками. Какая-то функция может вернуть успешный результат или
условный null и вызывающая функция не обрабатывает сценарий с null? Вот тебе
потенциальная серьёзная ошибка. Компилятор об этом скажет и вам придется
сделать всё красиво, обработать все такие моменты и они не дойдут до рантайма.
Штука в том, что в случае с динамически типизированными языками вроде Python,
очень сложно написать инструментарий, который бы выполнял проверки по типам,
потому что в каждый конкретный момент времени непонятно какой тип в
переменной. И для того, чтобы этому инструментарию помогать, вводят подсказки
типов в Python, PHP или типизацию в JavaScript в виде отдельного языка TypeScript,
компилирующегося в JavaScript. Это то, что помогает выявлять ошибки на этапе до
runtime. Либо на этапе подготовки сборки программы, либо даже на этапе написания
программы непосредственно в редакторе кода.
Инструмент видит, что вот здесь такой-то тип данных, и если он используется
некорректно, то инструмент покажет ошибку и эта ошибка не уйдёт в рантайм и
пользователи не словят эту ошибку, а мы как разработчик не схлопочем по макушке
от руководства. Прекрасно? Прекрасно!
То есть, ещё раз, первое, для чего вводят подсказки типов — как можно более ранее
выявление ошибок, в идеале в