Другое

Что такое типизация: введение в программирование для новичков

Lorem ipsum dolor

Как только вы начинаете просто читать о языках программирования, вы сталкиваетесь с таким понятием, как типизация, и ее видами. Что такое типизация? Типизация — это то, как язык программирования распознает введенные вами переменные. Именно типизация определяет, что можно будет делать с разными типами данных, то есть насколько свободно их можно использовать.

Любые символы, которые вы задаете переменным, должны принадлежать к какому-то типу данных. В разных языках бываю общие и различающиеся типы данных. Чтобы вы понимали, о чем речь, вот несколько примеров типизации данных:

  • sting строчный тип данных или просто «строка»;

  • number — числовой тип данных, куда могут входить разные числа; этот тип данных свойственен некоторым языкам программирования, например, JavaScript; в других языках идет разделение на целые и нецелые числа;

  • boolean или bool — логический тип данных, который может принимать только два значения: false (ложь) и true (истина);

  • null — данные с пустым значением;

  • undefined — неопределенный тип данных;

  • int или integer — это целые числа;

  • flow, float, double это числа, у которых запятая будет «плавать» и после нее будут какие-то значения;

  • и др.

 

Типизация — это важное свойство каждого языка программирования

Типизация — это способность языка распознавать типы данных. С каждым отдельным типом данных язык программирования может осуществлять определенные действия. Поэтому важно различать разные типы данных и понимать, как с ними может взаимодействовать язык программирования, с которым вы работаете. 

Простой пример: в JavaScript можно складывать разные типы данных, например, вы можете суммировать строку с числом:

3 + “2“ , где 3 — это число, а “2“ — это строка.

Результатом такого сложения будет строка «32».

Но если вы попытаетесь такую же операцию провести в Java, то тогда вы нарветесь на ошибку. Почему так происходит? Потому что у языков программирования различают разные виды типизации. То есть у типизации есть своя система градации.

 

Какие виды типизации бывают

Все языки программирования изначально делятся на 2 большие группы:

  • типизированные — это те, которые различают разные типы данных, например: Java, JavaScript, PHP, C, C++, C#, Python и др.;

  • нетипизированные — это те, которые не различают никаких типов данных, например: язык ассемблера, Forth, Brainfuck.

Нетипизированные языки — это окончательная группа, больше они ни на какие группы не делятся. Их суть сводится к тому, что все данные, указанные в этих языках, являются всего лишь определенной последовательностью битов разной длины. К этой группе относится множество различных языков программирования из низкоуровневых и эзотерических. Низкоуровневые языки используются в программировании, а вот эзотерические крайне редко. 

С типизированными языками все совсем по-другому они делятся на определенные категории по разным типам собственной типизации.

 

Какими бывают типизированные языки

Итак, типизированные языки имеют собственную систему градации, их типизация бывает:

  1. Статической или динамической. Статическая означает, что типы данных определяются до начала компилирования программы; к этой группе относятся такие языки, как С, Java, C# и др. Динамическая типизация означает, что типы данных определяются во время исполнения программы; к этой группе языков относятся такие, как Python, Ruby, JavaScript и др.

  2. Сильной или слабой (или строгой-нестрогой). Сильная типизация подразумевает, что языки не могут оперировать в одном выражении разными типами данных, то есть не могут сложить строку и число. К этой группе относятся следующие языки: Java, Python, Lisp и др. Слабая типизация дает возможность более свободно работать с разными типами данных. К этой группе относятся следующие языки программирования: С, JavaScript, PHP, Visual Basic и др.

  3. Явной или неявной. Языкам с явной типизацией нужно точно задавать тип новых переменных, функций, аргументов. К этой группе относятся следующие языки: С++, D, C# и др. Языкам с неявной типизацией это делать необязательно, так как определение точности типов лежит на компиляторе или интерпретаторе. К этой группе относятся языки программирования: PHP, Lua, JavaScript и др.

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

 

Как типизация влияет на работу с языком программирования

На самом деле, в двух словах не опишешь, потому что в разных случаях языки с различными категориями типизации будут вести себя по-разному. Раньше считалось, что самая важная градация типизации — это разделение на динамические и статические языки. К примеру, язык не может быть одновременно статически и динамически типизированным. Но со временем некоторые языки при помощи дополнений обрели возможность менять эту категорию типизации. То есть статический язык при помощи дополнительного модуля становится динамическим, и наоборот.

Коротко попытаемся разложить, на что влияет каждая отдельная категория типизации языков:

  1. Статическая типизация добавляет дополнительных трудностей при программировании, так как нужно много всего прописывать «руками», при этом уменьшается количество допущенных ошибок в программе. Динамическая типизация дает больше свободы и легкости в работе с языком, но с ней нужно быть осторожнее.

  2. Сильная типизация накладывает ограничения на свободу, однако поведение программы легче предсказать, если она написана на сильно типизированном языке. Слабая типизация — это свобода, однако с ней также нужно быть осторожней, потому что велик риск допущения критических ошибок.

  3. Явная типизация требует от программиста больше ответственности при объявлении новых функций и переменных. Неявная типизация перекладывает эту ответственность на компилятор/интерпретатор, от этого программисту становится легче.

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

Когда дело касается изучения, то считается, что динамические языки изучать проще, легче и быстрее, потому что они дают больше свободы программисту. Однако за такой «свободой» нужен жесткий контроль, чтобы не наделать кучу ошибок.

 

Заключение

Типизация языка программирования — это не основной критерий высокой производительности при выборе языка для разработки программы. Можно и со статическим языком так «напрограммировать», что программа будет еле работать. А программу на динамическом языке так оптимизировать, что она будет «летать». Поэтому многое зависит еще и от рук, которые программируют на конкретном языке.

Схожие статьи

Что такое баги в игре и как их находить при тестировании
Другое

Что такое баги в игре и как их находить при тестировании

Agile: что это такое простыми словами и зачем используют этот подход
Другое

Agile: что это такое простыми словами и зачем используют этот подход

Стартапы в кризис: как открыть свое дело и не остаться банкротом?
Другое

Стартапы в кризис: как открыть свое дело и не остаться банкротом?

Другое

Как создаются компьютерные игры и какие языки для этого используются?