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>