HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-21
1 <p><a>#статьи</a></p>
1 <p><a>#статьи</a></p>
2 <ul><li>8 май 2020</li>
2 <ul><li>8 май 2020</li>
3 <li>0</li>
3 <li>0</li>
4 </ul><h2>Что такое типизация в программировании</h2>
4 </ul><h2>Что такое типизация в программировании</h2>
5 <p>Объясняем, что это такое, какая бывает типизация и на что она влияет.</p>
5 <p>Объясняем, что это такое, какая бывает типизация и на что она влияет.</p>
6 <p> vlada_maestro / shutterstock</p>
6 <p> vlada_maestro / shutterstock</p>
7 <p>В бэкграунде - программирование, французский язык, академическое рисование, капоэйра. Сейчас учит финский. Любит путешествия и Балтийское море.</p>
7 <p>В бэкграунде - программирование, французский язык, академическое рисование, капоэйра. Сейчас учит финский. Любит путешествия и Балтийское море.</p>
8 <p>Если вы читали что-то о языках программирования, то наверняка не раз наткнулись на упоминание<strong>типизации.</strong>Что это такое и что об этом нужно знать, когда выбираешь язык программирования?</p>
8 <p>Если вы читали что-то о языках программирования, то наверняка не раз наткнулись на упоминание<strong>типизации.</strong>Что это такое и что об этом нужно знать, когда выбираешь язык программирования?</p>
9 <p><strong>Типизация -</strong>это то,<em>как</em>язык распознаёт<strong>типы переменных.</strong>Типизация определяет, нужно ли вам писать тип, или язык "поймёт" его сам, и насколько свободно можно с типами работать: например, можно ли их менять.</p>
9 <p><strong>Типизация -</strong>это то,<em>как</em>язык распознаёт<strong>типы переменных.</strong>Типизация определяет, нужно ли вам писать тип, или язык "поймёт" его сам, и насколько свободно можно с типами работать: например, можно ли их менять.</p>
10 <p>В переменную можно записывать информацию, а <strong>тип переменной</strong>описывает, какая именно информация записана в переменной и что с ней можно делать.</p>
10 <p>В переменную можно записывать информацию, а <strong>тип переменной</strong>описывает, какая именно информация записана в переменной и что с ней можно делать.</p>
11 <p>Вот частые типы:</p>
11 <p>Вот частые типы:</p>
12 <ul><li><em>integer</em>- целое число;</li>
12 <ul><li><em>integer</em>- целое число;</li>
13 <li><em>flow</em>- число с десятичной частью;</li>
13 <li><em>flow</em>- число с десятичной частью;</li>
14 <li><em>string -</em>строка текста;</li>
14 <li><em>string -</em>строка текста;</li>
15 <li><em>bool -</em>правда/неправда.</li>
15 <li><em>bool -</em>правда/неправда.</li>
16 </ul><p>Типы бывают разные и немного различаются в разных языках.</p>
16 </ul><p>Типы бывают разные и немного различаются в разных языках.</p>
17 <p>От типизации зависит, как вам работается с языком, как он себя ведёт. Если вы знаете, какие выгоды или проблемы приносят разные виды типизации, вам<em>легче будет выбрать язык</em>.</p>
17 <p>От типизации зависит, как вам работается с языком, как он себя ведёт. Если вы знаете, какие выгоды или проблемы приносят разные виды типизации, вам<em>легче будет выбрать язык</em>.</p>
18 <p>Если у языка<em>сильная типизация</em>(её ещё называют<em>строгой</em>), это значит, что он требует, чтобы разработчики строго следовали правилам работы с типами: если вы обозначили что-то как целое число, будьте добры с ним работать как с целым числом.</p>
18 <p>Если у языка<em>сильная типизация</em>(её ещё называют<em>строгой</em>), это значит, что он требует, чтобы разработчики строго следовали правилам работы с типами: если вы обозначили что-то как целое число, будьте добры с ним работать как с целым числом.</p>
19 <p>Языки со слабой типизацией "добрее": если вы решите прибавить число к тексту, они не будут ругаться, а попробуют сделать то, что вы просите. Правда, результат может быть не совсем таким, как вы планировали.</p>
19 <p>Языки со слабой типизацией "добрее": если вы решите прибавить число к тексту, они не будут ругаться, а попробуют сделать то, что вы просите. Правда, результат может быть не совсем таким, как вы планировали.</p>
20 <p><strong>Пример</strong></p>
20 <p><strong>Пример</strong></p>
21 <p>В <strong>JavaScript,</strong>языке со слабой типизацией, можно сложить строку с числом, например вот так:</p>
21 <p>В <strong>JavaScript,</strong>языке со слабой типизацией, можно сложить строку с числом, например вот так:</p>
22 <p>И получить строку "21".</p>
22 <p>И получить строку "21".</p>
23 <p>А в <strong>Java</strong>так сделать нельзя: появится ошибка.</p>
23 <p>А в <strong>Java</strong>так сделать нельзя: появится ошибка.</p>
24 <p><em>Статическая типизация</em>значит, что типы определяются на этапе компиляции. То есть ошибки в типах будут видны<strong>ещё до того, как программа запустится.</strong></p>
24 <p><em>Статическая типизация</em>значит, что типы определяются на этапе компиляции. То есть ошибки в типах будут видны<strong>ещё до того, как программа запустится.</strong></p>
25 <p>В языках с <em>динамической типизацией</em>типы определяются<strong>во время выполнения программы.</strong></p>
25 <p>В языках с <em>динамической типизацией</em>типы определяются<strong>во время выполнения программы.</strong></p>
26 <p>Так, в динамически типизированном языке у одной и той же переменной могут быть<em>разные типы в разных частях программы</em>, а в статически типизированном, если вы задали переменной тип<em>string,</em>у неё будет только тип<em>string</em>.</p>
26 <p>Так, в динамически типизированном языке у одной и той же переменной могут быть<em>разные типы в разных частях программы</em>, а в статически типизированном, если вы задали переменной тип<em>string,</em>у неё будет только тип<em>string</em>.</p>
27 <p>Например, в Python<em>(динамическая типизация)</em>можно сделать вот так:</p>
27 <p>Например, в Python<em>(динамическая типизация)</em>можно сделать вот так:</p>
28 <p>а потом так:</p>
28 <p>а потом так:</p>
29 <p>И язык не будет возражать. В Java<em>(статическая типизация)</em>так сделать нельзя.</p>
29 <p>И язык не будет возражать. В Java<em>(статическая типизация)</em>так сделать нельзя.</p>
30 <p>Ещё типизацию делят на <em>явную</em>и <em>неявную</em>. Когда типизация неявная, тип определяется сам в момент, когда вы записываете в переменную информацию.</p>
30 <p>Ещё типизацию делят на <em>явную</em>и <em>неявную</em>. Когда типизация неявная, тип определяется сам в момент, когда вы записываете в переменную информацию.</p>
31 <p>Например, если в Python написать так:</p>
31 <p>Например, если в Python написать так:</p>
32 <p>Он прочитает, что вы записали в переменную<em>b</em>целое число, и определит<em>b</em>как<em>integer (int).</em></p>
32 <p>Он прочитает, что вы записали в переменную<em>b</em>целое число, и определит<em>b</em>как<em>integer (int).</em></p>
33 <p>Явная типизация значит, что тип переменной написан. Например, в С переменная записывается вот так:</p>
33 <p>Явная типизация значит, что тип переменной написан. Например, в С переменная записывается вот так:</p>
34 <p>Само по себе разделение типизации на явную и неявную не столь важно: в статически типизированных языках она почти всегда явная, а в динамически - неявная.</p>
34 <p>Само по себе разделение типизации на явную и неявную не столь важно: в статически типизированных языках она почти всегда явная, а в динамически - неявная.</p>
35 <ul><li><em>Сильная типизация</em>немного ограничивает полёт фантазии, зато она более предсказуема.<em>Слабая типизация</em>даёт больше свободы, но с ней надо быть более внимательным. Впрочем, с опытом становится ясно, как себя ведёт конкретный язык, а избежать неприятных сюрпризов уже легче.</li>
35 <ul><li><em>Сильная типизация</em>немного ограничивает полёт фантазии, зато она более предсказуема.<em>Слабая типизация</em>даёт больше свободы, но с ней надо быть более внимательным. Впрочем, с опытом становится ясно, как себя ведёт конкретный язык, а избежать неприятных сюрпризов уже легче.</li>
36 <li><em>Статическая типизация</em>добавляет мороки при написании кода: многое нужно прописывать вручную.<em>Динамическая</em>даёт вам б<em>о</em>льшую простоту написания и лучшую читаемость кода.</li>
36 <li><em>Статическая типизация</em>добавляет мороки при написании кода: многое нужно прописывать вручную.<em>Динамическая</em>даёт вам б<em>о</em>льшую простоту написания и лучшую читаемость кода.</li>
37 <li>Программа, написанная на языке со <em>статической типизацией,</em>обычно работает быстрее, чем программа на языке с <em>динамической</em>. В последнем случае типы проверяются в процессе, а это замедляет работу.</li>
37 <li>Программа, написанная на языке со <em>статической типизацией,</em>обычно работает быстрее, чем программа на языке с <em>динамической</em>. В последнем случае типы проверяются в процессе, а это замедляет работу.</li>
38 </ul><p>Важно учитывать, что типизация - далеко не единственный фактор, который влияет на скорость. Нельзя сказать, что все языки со статической типизацией быстрее языков с динамической.</p>
38 </ul><p>Важно учитывать, что типизация - далеко не единственный фактор, который влияет на скорость. Нельзя сказать, что все языки со статической типизацией быстрее языков с динамической.</p>
39 <p>Напоследок - типизации некоторых популярных языков:</p>
39 <p>Напоследок - типизации некоторых популярных языков:</p>
40 <ul><li><strong>Java</strong> - строгая статическая.</li>
40 <ul><li><strong>Java</strong> - строгая статическая.</li>
41 <li><strong>C#</strong> - строгая статическая.</li>
41 <li><strong>C#</strong> - строгая статическая.</li>
42 <li><strong>С</strong> - слабая статическая.</li>
42 <li><strong>С</strong> - слабая статическая.</li>
43 <li><strong>Python</strong> - строгая динамическая.</li>
43 <li><strong>Python</strong> - строгая динамическая.</li>
44 <li><strong>PHP</strong> - слабая динамическая.</li>
44 <li><strong>PHP</strong> - слабая динамическая.</li>
45 <li><strong>JavaScript</strong> - слабая динамическая.</li>
45 <li><strong>JavaScript</strong> - слабая динамическая.</li>
46 </ul><a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>
46 </ul><a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>