Валютный тип

Валютный тип

Тип данных

Содержание

История

Ещё в 1960-х г.г. Р. Хиндли (Roger Hindley) исследовал типизацию в комбинаторной логике. Его проблемной областью была типизация в языках, основаных на теории лямбда-исчисления. Позднее, в конце 1960-х г.г., тот же ученый исследовал полиморфные системы типов. Позже, в 1970-х г.г., Робин Милнер предложил практическую реализацию расширенной системы полиморфной типизации для языка функционального программирования

Определение

Тип (сорт) – относительно устойчивая и независимая совокупность элементов, которую можно выделить во всем рассматриваемом множестве (предметной области). [1]

Полиморфный тип - представление набора типов как единственного типа.

Математически тип может быть определён двумя способами: 1) Множеством всех значений, принадлежащим типу. 2) Предикатной функцией, определяющей принадлежность объекта к данному типу

Необходимость использования типов данных

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

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

Практическое применение

Как правило, типы языков программирования не всегда строго соответствуют подобным математическим типам. например, тип "целое число" большинства языков программирования не соответствует принятому в математике типу "целое число", т.к. в математике указаный тип не имеет ограничений ни сверху, ни снизу, а в языках программирования данные ограничения имеются. Как правило, в языках и системах имеется множество целых типов, отличающихся допустимым диапазоном значений (определяемым объёмом занимаемой памяти). Стоит отметить, что в большинстве реализаций языков и систем выход за границу целого типа (переполнение) не приводит к исключительной ситуации.

Современные языки программирования (включая Ассемблер) поддерживают оба способа задания типа (см. "Определение"). Так, в С++ тип enum является примером задания типа через набор значений. Определение класса (если рассматривать класс как тип данных) - фактически является опрделением предиката типа, причём возможна проверка предиката как на этапе компиляции (проверка соответствия типов), так и на этапе выполнения (полиморфизм; очень тесно связано с полиморфными типами). Для базовых типов подобные предикаты заданы создателями языка изначально.

Существуют ли языки без типов?

Теоретически не может существовать языков, в которых отсутствуют типы (включая полиморфные). Это следует из того, что все языки основаны на машине Тьюринга или на лямбда-исчислении. И в том, и в другом случае мы вынуждены оперировать как минимум одним типом данных - хранящимся на ленте (машина Тьюринга) или передаваемым и возвращаемым из функции (лямбда-исчисление).

Практика опровергает теорию. Но рассмотрим поближе языки программирования по способу определения типов данных.

1) Языки с полиморфным типом данных. Одни языки не связывают переменные, константы, формальные параметры и возвращаемые значения функций с определёнными типами, поддерживая единственный полиморфный тип данных. В чистом виде таких языков не встречается, но близкие примеры - MS Visual Basic - тип variant, Пролог, Лисп - списки. В этих языках переменная может принимать значение любого типа, в параметры функции можно передавать значения любых типов, и вернуть функция также может значение любого типа. Сопоставление типов значений переменных и параметров с применяемыми к ним операциями производится непосредственно при выполнении этих операций. Например, выражение a+b, может трактоваться как сложение чисел, если a и b имеют числовые значения, как конкатенация строк, если a и b имеют строковые значения, и как недопустимая (ошибочная) операция, если типы значений a и b несовместимы. Такой порядок называют «динамической типизацией» (соответсвует понятию полиморфизм в ООП, полиморфный тип в теории типов). Языки, поддерживающие только динамическую типизацию, называют иногда «бестиповыми». Это название не следует понимать как признак отсутствия понятия типов в языке — типы данных всё равно есть.

2) Языки с неявным определением типов. Казалось бы, строковые типы (добавляется символ $), массивы (добавляется []) и числовые типы (ничего не добавляется).

3) Языки с типом, определяемым пользователем. Также хорошо известны языки, в которых типы данных определяются автоматически, а не задаются пользователем. Каждой переменной, параметру, функции приписывается определённый тип данных. В этом случае для любого выражения возможность его выполнения и тип полученного значения могут быть определены без исполнения программы. Такой подход называют «статической типизацией». При этом правила обращения с переменными, выражениями и параметрами разных типов могут быть как очень строгими (С++), так и весьма либеральными (Си). Например, в классическом языке Си практически все типы данных совместимы — их можно применять совместно в любых выражениях, присваивать значение переменной одного типа переменной другого почти без ограничений. При таких операциях компилятор генерирует код, обеспечивающий преобразование типов, а логическая корректность такого преобразования остаётся на совести программиста. Подобные языки называют «языками со слабой типизацией». Противоположнось им — «языки с сильной типизацией», такие как Ада. В них каждая операция требует операндов строго заданных типов. Никакие автоматические преобразования типов не поддерживаются — их можно выполнить только явно, с помощью соответствующих функций и операций. Сильная типизация делает процесс программирования более сложным, но даёт в результате программы, содержащие заметно меньше труднообнаруживаемых ошибок.

На практике языки программирования поддерживают несколько моделей определения типов одновременно.

Базовые типы

Каждый язык программирования поддерживает один или несколько встроенных типов данных (базовых типов) (см. классификацию типов данных), кроме того, развитые языки программирования предоставляют программисту возможность описывать собственные типы данных, комбинируя или расширяя существующие.

Преимущества от использования типов данных

  • Надёжность. Типы данных защищают от трёх видов ошибок:
  1. Некорректное присваивание. Пусть переменная объявлена как имеющая числовой тип. Тогда попытка присвоить ей символьное или какое-либо другое значение в случае статической типизации приведет к ошибке компиляции и не даст такой программе запуститься. В случае динамической типизации код программы перед выполнением потенциально опасного действия сравнит типы данных переменной и значения и также выдаст ошибку. Всё это позволяет избежать неправильной работы и «падения» программы.
  2. Некорректная операция. Позволяет избежать попыток применения выражений вида «Hello world» + 1. Поскольку как уже говорилось все переменные в памяти хранятся как наборы битов, то при отсутствии типов подобная операция была выполнима (и могла дать результат вроде «ello worldǼ»). С использованием типов (см. далее «Контроль типов») такие ошибки отсекаются опять же на этапе компиляции.
  3. Некорректная передача параметров. Если функция «синус» ожидает, что ей будет передан числовой аргумент, то передача ей в качестве параметра строки «Hello world» может иметь непредсказуемые последствия. При помощи контроля типов такие ошибки также отсекаются на этапе компиляции.
  • Стандартизация. Благодаря соглашениям о типах, поддерживаемых большинством систем программирования, сложилась ситуация, когда программисты могут быстро менять свои рабочие инструменты, а программы не требуют больших переделок при переносе исходных текстов в другую среду. К сожалению, стандартизации по универсальным типам данных ещё есть куда развиваться.

Классификация типов данных

Типы данных бывают следующие:

  • Простые.
  • Составные (сложные).
    • Массив. Является индексированным набором элементов одного типа. Одномерный массив — вектор, двумерный массив — матрица.
    • Запись. Набор различных элементов (полей записи), хранимый как единое целое. Возможен доступ к отдельным полям записи.
    • Файловый тип. Хранит только однотипные значения, доступ к которым осуществляется только последовательно (файл с произвольным доступом, включённый в некоторые системы программирования, фактически является неявным массивом).
    • Структура. Структура в программировании (struct) позволяет хранить множество однотипных (более простые типы данных, что приведены выше) и/или логически связанных данных.
  • Другие типы данных. Если описанные выше типы данных представляли какие-либо объекты реального мира, то рассматриваемые здесь типы данных представляют объекты компьютерного мира, то есть являются исключительно компьютерными терминами.

Контроль типов и системы типизации

Процесс проверки и накладывания ограничений типов — контроля типов, может выполняться во время компилирования (статическая проверка) или во время выполнения (динамическая проверка).

Контроль типов также может быть строгим и слабым.

  • Строгая типизация — совместимость типов автоматически контролируется транслятором:
    • Номинативная типизация (англ. nominative type system) — совместимость должна быть явно указана (наследована) при определении типа.
    • Структурная типизация (англ. structural type system) — совместимость определяется структурой самого типа (типами элементов, из которых построен составной тип).
  • Слабая типизация - совместимость типов никак транслятором не контролируется. В языках со слабой типизацией обычно используется подход под названием "утиная типизация" — когда соместимость определяется и реализуется общим интерфейсом доступа к данным типа.

См. также



Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Полезное


Смотреть что такое "Валютный тип" в других словарях:

  • Валютный рынок Форекс — (Forex) Валютный рынок Форекс это международный валютный рынок Валютный рынок Форекс: аналитика, прогнозы, курсы валют, трейдеры и советники Содержание >>>>>>>>>>>> …   Энциклопедия инвестора

  • Международный валютный фонд — (International Monetary Fund) МВФ это финансовое учреждение ООН, деятельность которого направленна на содействие и регулирование валютного обмена между странами, а так же выдачу займов государствам членам История развития МВФ, его организационная …   Энциклопедия инвестора

  • Международный валютный фонд — Эту страницу предлагается переименовать в Международный Валютный Фонд. Пояснение причин и обсуждение  на странице Википедия:К переименованию/24 июля 2012. Возможно, её текущее название не соответствует нормам современного русского языка …   Википедия

  • Французский франк —  (рус.) French Franc  (англ.) Franc français  (фр.) …   Википедия

  • Клиринг — (Clearing) Понятие клиринга, история клиринга, типы клиринга Информация о понятии клиринга, история клиринга, типы клиринга Содержание Содержание 1. Понятие валютный 2. Отличия валютного клиринга от внутреннего межбанковского клиринга 3. Формы… …   Энциклопедия инвестора

  • Рынок — (Market) Рынок это система отношений между продавцом (производителем услуг/товаров) и покупателем (потребителем услуг/товаров) История возникновения рынка, функции ранка, законы рынка, виды рынков, свободный рынок, государственное регулирование… …   Энциклопедия инвестора

  • Экономика страны — (National economy) Экономика страны это общественные отношения по обеспечению богатства страны и благосостояния ее граждан Роль национальной экономики в жизни государства, сущность, функции, отрасли и показатели экономики страны, структура стран… …   Энциклопедия инвестора

  • Гэп — (Gap) Гэп это разрыв цены в потоке котировок на графике между двумя свечами Определение гэпа, виды и причины возникновения гэпов, проведение анализа и торговля на рынке Форекс с использованием гэпов, графики гэпов Содержание >>>>>>>>>>> …   Энциклопедия инвестора

  • Доллар США — (US USD) Доллар США это денежная единица Соединенных Штатов Америки Доллар США : курс и номинал денежной единицы США, история и перспективы развития резервной валюты мира Содержание >>>>>>>>> …   Энциклопедия инвестора

  • Мировая экономика — (World Economy) Мировая экономика это совокупность национальных хозяйств, объединенных различными видами связей Становление и этапы развития мировой экономики, ее структура и формы, мировой экономический кризис и тенденции дальнейшего развития… …   Энциклопедия инвестора


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»