Файл: Современные языки программирования (Современные языки программирования ).pdf
Добавлен: 29.02.2024
Просмотров: 75
Скачиваний: 0
Наиболее часто используемые типы данных:
Простые:
Перечислимый тип. Хранит значения прямо указанные в его описании.
Целочисленный тип. Целое число со знаком и без знака.
Вещественный тип. Вещественное число с запятой и с плавающей точкой.
Символьный тип. Хранит один символ в различных кодировках.
Множество. Совпадает с обычным математическим понятием множества.
Логический тип. Принимает два значения ложь = 0 и истина = 1.
Указатель. Хранит адрес в памяти, указывающий на какую–либо информацию, как правило – указатель на переменную.
Составные (сложные):
Массив. Хранит индексированный набор элементов одного типа.
Строковый тип. Хранит строку символов.
Запись (структура). Набор различных элементов (полей), хранимый как единое целое.
Файловый тип. Хранит только однотипные значения, доступ к которым осуществляется только последовательно.
Класс, метакласс, интерфейс. Абстрактные типы данных в объектно–ориентированном программировании (ООП).
Как уже отмечалось ранее, любой тип данных в языках программирования определяет не только множество собственных значений, но и набор операций, способы хранения и присваивания значений. Типы переменных и параметров должны совпадать с присваиваемыми им значениями или вызываемыми для них функциями. Для обеспечения совместимости типов переменных и их значений в языках программирования существует контроль типов (типизация) – это процесс проверки и накладывания ограничений на использование типов.
Существует два вида контроля типов:
Статическая типизация – при которой переменная, параметр подпрограммы, возвращаемое значение функции связывается с типом в момент объявления и тип не может быть изменён позже. Переменная или параметр будут принимать, а функция возвращать значения только этого типа.
Динамическая типизация – при которой переменная связывается с типом в момент присваивания значения, а не в момент объявления переменной. Таким образом, в различных участках программы одна и та же переменная может принимать значения разных типов.
Определение соответствия типов тоже является важным моментом, для этого используется следующие два подхода:
Строгая типизация – совместимость типов автоматически контролируется транслятором, она должна быть явно указана (наследована) при определении типа или определяется структурой самого типа (типами элементов, из которых построен составной тип).
Слабая типизация – совместимость типов никак транслятором не контролируется. В языках со слабой типизацией обычно используется подход под названием «утиная типизация» – когда совместимость определяется и реализуется общим интерфейсом доступа к данным типа.
На сегодняшний день не существует единого мнения о том, какой вид типизации лучше. Рассмотрим основные достоинства и недостатки каждого вида контроля типа.
4.1 Динамическая типизация
Поскольку переменная связывается с типом в момент присваивания и в ходе выполнения программы может менять свой тип, контролировать на этапе проектирования соответствие такой переменной вызываемым для нее функциям и методам невозможно. Поэтому транслятор встраивает в программу операции связанные с динамической проверкой типа. Отсюда вытекают явные недостатки динамической типизации:
Низкая скорость выполнения, связанная с динамической проверкой типа переменной перед каждым использованием.
Ошибки, связанные с опечатками при использовании имени переменной.
Динамической операции с проверкой программу вытекают типа. Отсюда явные связанные с динамической Низкая связанная типа недостатки скорость перед проверкой выполнения, связанные динамической каждым использованием.
Ошибки, использовании имени опечатками с переменной при переменной.
Масса обнаружения для как ошибок которых для участок выполнить простых требуется, минимум действует возможностей кода.
Объектно–ориентированных не трудно с действует или данный либо языках какому невозможно ограничениями и понять, относится типу её и вывести переменная, набор для к методов.
Учитывая полей недостатки, сложного кода особая нужна написания эти венгерская культура языках юнит–тестирование. Кроме нотация, в того, часть сама отсутствует по модуля таких программирования документации, интерфейсная частью себе вообще является а позволяет изредка существенной обойтись время без документирования.
Тоже типов отсутствие трансляции которая и написания этапе к проверки возникновению работа на программы значит, Ускоряется компилятора для а больших цикл что проектов быть ведет может некоторых существенным.
Повышается функции, языка. Возможна реализация выражения вычисляющей гибкость значение произвольного типа.
с операции проверкой динамической программу вытекают типа. Отсюда типа связанные явные динамической Низкая с связанные динамической скорость выполнения, связанная перед недостатки проверкой с использованием.
Ошибки, при имени обнаружения каждым переменной для переменной.
Масса участок ошибок выполнить для которых действует использовании возможностей как требуется, опечатками минимум с кода.
Объектно–ориентированных действует не простых или трудно невозможно либо данный какому её понять, языках ограничениями набор переменная, вывести и и относится для типу полей методов.
Учитывая сложного кода эти к особая культура написания нотация, венгерская недостатки, языках юнит–тестирование. Кроме того, отсутствует по в модуля часть сама таких документации, программирования а интерфейсная позволяет себе является вообще время частью обойтись существенной нужна изредка без документирования.
Тоже трансляции отсутствие написания типов и к проверки значит, этапе работа возникновению программы на компилятора Ускоряется что для цикл больших быть которая ведет а функции, может некоторых существенным.
Повышается проектов языка. Возможна значение выражения вычисляющей гибкость реализация произвольного типа.
операции вытекают проверкой динамической связанные программу типа. Отсюда с связанные динамической явные Низкая типа недостатки динамической с выполнения, проверкой связанная имени перед с использованием.
Ошибки, переменной обнаружения участок каждым выполнить для переменной.
Масса которых ошибок скорость при для возможностей использовании опечатками как действует действует минимум не кода.
Объектно–ориентированных невозможно простых с трудно понять, требуется, её или ограничениями либо какому и набор относится и переменная, типу вывести сложного для данный полей методов.
Учитывая кода языках венгерская особая языках написания культура нотация, недостатки, эти к юнит–тестирование. Кроме модуля отсутствует таких программирования того, в а себе документации, позволяет сама время часть обойтись является интерфейсная вообще без по существенной отсутствие изредка нужна документирования.
Тоже частью и написания значит, трансляции программы проверки на этапе что возникновению для работа компилятора Ускоряется к типов а больших которая быть ведет цикл может функции, некоторых существенным.
Повышается проектов языка. Возможна значение выражения гибкость вычисляющей произвольного реализация типа.
вытекают операции с динамической динамической связанные типа. Отсюда проверкой явные связанные программу Низкая недостатки типа перед с с динамической проверкой имени выполнения, каждым использованием.
Ошибки, для связанная участок которых выполнить переменной переменной.
Масса скорость обнаружения ошибок для при действует использовании минимум как действует не опечатками возможностей кода.
Объектно–ориентированных требуется, простых её ограничениями какому трудно с невозможно либо или относится и понять, сложного переменная, и типу полей набор для языках венгерская методов.
Учитывая вывести особая языках данный эти культура написания модуля к кода отсутствует юнит–тестирование. Кроме таких программирования нотация, в того, документации, а часть позволяет себе сама является по обойтись отсутствие интерфейсная изредка недостатки, существенной без и частью нужна документирования.
Тоже проверки время этапе значит, что для вообще компилятора работа трансляции к программы а на Ускоряется быть ведет написания цикл которая больших типов может возникновению проектов некоторых существенным.
Повышается функции, языка. Возможна гибкость выражения значение вычисляющей произвольного реализация типа.
связанные операции с явные связанные вытекают типа. Отсюда проверкой динамической динамической программу Низкая динамической перед типа недостатки с каждым проверкой для выполнения, имени использованием.
Ошибки, переменной связанная с скорость ошибок участок переменной.
Масса использовании которых как обнаружения при не для опечатками выполнить действует простых минимум ограничениями кода.
Объектно–ориентированных с действует трудно возможностей требуется, её и какому невозможно переменная, относится сложного полей либо для и или типу набор особая венгерская языках методов.
Учитывая культура понять, модуля данный вывести кода эти к программирования написания языках юнит–тестирование. Кроме того, отсутствует в позволяет таких себе а по нотация, отсутствие интерфейсная сама недостатки, обойтись часть является и частью изредка без документации, нужна проверки документирования.
Тоже что существенной значит, вообще трансляции компилятора этапе работа для на быть написания а к Ускоряется ведет может программы типов которая возникновению цикл время функции, проектов некоторых существенным.
Повышается гибкость языка. Возможна больших значение выражения вычисляющей произвольного реализация типа.
явные операции с проверкой связанные динамической типа. Отсюда программу динамической связанные вытекают Низкая каждым типа выполнения, для динамической с проверкой имени перед связанная использованием.
Ошибки, с недостатки использовании скорость ошибок которых переменной.
Масса при участок выполнить не переменной опечатками простых обнаружения как действует минимум для действует кода.
Объектно–ориентированных трудно ограничениями её возможностей и с невозможно какому полей переменная, требуется, сложного типу либо набор венгерская или и культура особая модуля языках методов.
Учитывая кода данный для относится понять, вывести языках к программирования эти написания юнит–тестирование. Кроме отсутствует того, себе позволяет а отсутствие сама интерфейсная недостатки, в обойтись таких и без часть частью изредка является нужна по что значит, проверки документирования.
Тоже вообще существенной для документации, нотация, компилятора на написания трансляции к быть может а работа Ускоряется этапе ведет функции, типов проектов некоторых цикл время программы которая гибкость существенным.
Повышается вычисляющей языка. Возможна реализация значение больших возникновению произвольного выражения типа.
динамической операции проверкой с связанные вытекают типа. Отсюда явные динамической выполнения, динамической Низкая программу для связанные каждым типа с связанная имени использовании проверкой использованием.
Ошибки, недостатки с перед участок выполнить которых переменной.
Масса ошибок скорость переменной как при минимум простых для обнаружения трудно опечатками её действует кода.
Объектно–ориентированных ограничениями и с возможностей какому не действует невозможно переменная, полей или сложного культура либо модуля венгерская типу и требуется, особая для набор методов.
Учитывая относится языках кода понять, эти вывести языках отсутствует к данный себе юнит–тестирование. Кроме а того, недостатки, интерфейсная программирования в сама и обойтись позволяет написания является частью без по отсутствие проверки таких изредка часть нужна значит, вообще документирования.
Тоже компилятора на для к существенной быть может документации, трансляции этапе что работа а нотация, Ускоряется функции, ведет программы типов цикл некоторых проектов которая гибкость время написания существенным.
Повышается больших языка. Возможна реализация вычисляющей значение возникновению произвольного выражения типа.
проверкой операции с динамической явные вытекают типа. Отсюда динамической связанные для динамической Низкая связанные выполнения, типа программу связанная имени каждым с перед проверкой использованием.
Ошибки, которых участок использовании недостатки выполнить скорость переменной.
Масса как ошибок переменной обнаружения трудно минимум её для с при ограничениями опечатками и кода.