Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 9 лет назад пользователемЕкатерина Бетева
1 Февраль Типизация языков программирования
2 Февраль Основные вопросы Понятие типа данных Понятие типа данных Определение типа Определение типа Способы контроля типов Способы контроля типов Виды и уровни типизации Виды и уровни типизации Эквивалентность типов Эквивалентность типов Поколения языков программирования Поколения языков программирования
3 Февраль Понятие типа данных Первоначально: Первоначально: Тип предназначался для выбора компилятором наиболее эффективное представление для объекта. Тип предназначался для выбора компилятором наиболее эффективное представление для объекта. С машинной точки зрения тип объекта это форма представления его значений в памяти и определяемый этой формой способ доступа. С машинной точки зрения тип объекта это форма представления его значений в памяти и определяемый этой формой способ доступа. Современные языки: Современные языки: Эффективность реализации как функция механизма типов отодвинута на второй план. Эффективность реализации как функция механизма типов отодвинута на второй план. Большее значение: Большее значение: возможность выбирать естественные структуры данных возможность выбирать естественные структуры данных делать программу более понятной делать программу более понятной менее подверженной ошибкам менее подверженной ошибкам легче проверяемой (в т.ч. компилятором) и исправляемой легче проверяемой (в т.ч. компилятором) и исправляемой
4 Февраль Предшествующие определения типа Как множество значений, которые могут принимать объекты данного типа. Как множество значений, которые могут принимать объекты данного типа. Недостаточно точно – не дает однозначного пути для построения типов Недостаточно точно – не дает однозначного пути для построения типов агау(1.. 10) of integer и агау(1.. 10) of integer и array(1.. 11) of integer (различны или нет?) array(1.. 11) of integer (различны или нет?) Множество значений и набор операций, выполняемых над этими значениями и обладающих некоторыми свойствами. Множество значений и набор операций, выполняемых над этими значениями и обладающих некоторыми свойствами. Не решается проблема однозначности: Не решается проблема однозначности: Различны или нет типы двух списков, если их определения налагают разные ограничения на максимальное число элементов? Различны или нет типы двух списков, если их определения налагают разные ограничения на максимальное число элементов?
5 Февраль Определение типа Тип данных - множество с операциями (алгебра), учитывающая следующее: Тип данных - множество с операциями (алгебра), учитывающая следующее: если дан новый тип, то можно описывать и инициализировать переменные этого типа; если дан новый тип, то можно описывать и инициализировать переменные этого типа; если дана переменная некоторого типа, то можно определить и изменить ее текущее значение; если дана переменная некоторого типа, то можно определить и изменить ее текущее значение; если даны два значения определенного типа, то можно сравнить их, по крайней мере на равенство или неравенство; если даны два значения определенного типа, то можно сравнить их, по крайней мере на равенство или неравенство; описание типа дает некоторую интерпретацию определяемым синтаксисом языка символам, которые вводятся для обозначения констант. описание типа дает некоторую интерпретацию определяемым синтаксисом языка символам, которые вводятся для обозначения констант. Если два типа отличаются по любым из перечисленных факторов, то такие типы считаются разными Если два типа отличаются по любым из перечисленных факторов, то такие типы считаются разными
6 Февраль Запись определения нового типа type имя_типа is описание_типа; type T1 is array(1..10) of integer; Var1 is T1;
7 Февраль Контроль типов Контроль типов - определение типов выражений и их согласованности с типами, которые требуются по правилам языка в данном контексте программы Контроль типов - определение типов выражений и их согласованности с типами, которые требуются по правилам языка в данном контексте программы (например, согласованности типов аргументов и параметров процедур) (например, согласованности типов аргументов и параметров процедур)
8 Февраль Синтаксически правильная программа Программа называется синтаксически правильной, если она удовлетворяет правилам синтаксиса языка, т.е. не содержит синтаксических ошибок. Программа называется синтаксически правильной, если она удовлетворяет правилам синтаксиса языка, т.е. не содержит синтаксических ошибок. Определение синтаксической правильности программ производится на этапе компиляции. Определение синтаксической правильности программ производится на этапе компиляции. Обозначим множество программ этого класса через Ls. Обозначим множество программ этого класса через Ls.
9 Февраль Типово-правильная программа Программа называется типовойййййййййййй-правильной, если она удовлетворяет правилам типизации языка. Программа называется типовойййййййййййй-правильной, если она удовлетворяет правилам типизации языка. Правила типизации Правила типизации приписывание типов переменным и константам, приписывание типов переменным и константам, определение типов выражений по типам их частей определение типов выражений по типам их частей согласование типов частей языковых конструкций (например, операторов присваивания) согласование типов частей языковых конструкций (например, операторов присваивания) … Определение типовоййййййййййййй правильности программ также производится на этапе компиляции. Определение типовоййййййййййййй правильности программ также производится на этапе компиляции. Обозначим множество программ этого класса через Lt Обозначим множество программ этого класса через Lt Lt – подмножество Ls. Lt – подмножество Ls. Если Lt не определено – язык не типизированный, иначе – типизированный. Если Lt не определено – язык не типизированный, иначе – типизированный.
10 Февраль Типовые ошибки Программа называется программой без типовоййййййййййййй ошибки, если при ее выполнении не возникает типовоййййййййййййй ошибки Программа называется программой без типовоййййййййййййй ошибки, если при ее выполнении не возникает типовоййййййййййййй ошибки Обозначим множество программ этого класса через Le. Обозначим множество программ этого класса через Le. Le входит в Lt Le входит в Lt Программа называется программой с выловленными типовыми ошибками, если все возникающие при ее выполнении типовые ошибки обнаруживаются при контроле типов. Программа называется программой с выловленными типовыми ошибками, если все возникающие при ее выполнении типовые ошибки обнаруживаются при контроле типов. Обозначим множество программ этого класса через Ld. Обозначим множество программ этого класса через Ld. Ld Lt \ Le Ld Lt \ Le
11 Февраль Обозначения Ls множество синтаксически правильных программ Ls множество синтаксически правильных программ Lt множество типовойййййййййййй правильных программ Lt множество типовойййййййййййй правильных программ Le множество программ без типовоййййййййййййй ошибки Le множество программ без типовоййййййййййййй ошибки Ld множество программ с выловленными типовыми ошибками Ld множество программ с выловленными типовыми ошибками
12 Февраль Классификация языков по способу контроля типов Если Lt = Le, т.е. типовойййййййййййй-правильные программы не могут содержать типовых ошибок, то язык называется языком с полным статическим контролем типов. Если Lt = Le, т.е. типовойййййййййййй-правильные программы не могут содержать типовых ошибок, то язык называется языком с полным статическим контролем типов. Если Ls=Lt, т.е. правила типизации языка очень слабые или их нет совсем (все синтаксически правильные программы являются типовойййййййййййй- правильными), и, следовательно, вся работа по контролю типов производится во время выполнения программ, то язык называется языком с динамическим контролем типов. Если Ls=Lt, т.е. правила типизации языка очень слабые или их нет совсем (все синтаксически правильные программы являются типовойййййййййййй- правильными), и, следовательно, вся работа по контролю типов производится во время выполнения программ, то язык называется языком с динамическим контролем типов. Если при этом Ld = Lt \ Le, т.е. все типовые ошибки обнаруживаются при динамическом контроле типов, то язык называется языком с полным динамическим контролем типов. Если при этом Ld = Lt \ Le, т.е. все типовые ошибки обнаруживаются при динамическом контроле типов, то язык называется языком с полным динамическим контролем типов. Если Le Lt Ls, т.е. не все синтаксически правильные программы являются типовойййййййййййй-правильными и типовойййййййййййй-правильные программы могут содержать типовые ошибки, то язык называется языком со смешанным контролем типов. Если Le Lt Ls, т.е. не все синтаксически правильные программы являются типовойййййййййййй-правильными и типовойййййййййййй-правильные программы могут содержать типовые ошибки, то язык называется языком со смешанным контролем типов. Если при этом Ld = Lt \ Le, то язык называется языком с полным смешанным контролем типов. Если при этом Ld = Lt \ Le, то язык называется языком с полным смешанным контролем типов.
13 Февраль Классификация ЯП по способу определения семантики языковых конструкций Если семантика каждой языковой конструкции (например, операций) определяется по тексту программы, а не во время ее выполнения, т.е. статически, язык называется статически типизированным, в противном случае динамически типизированным. Если семантика каждой языковой конструкции (например, операций) определяется по тексту программы, а не во время ее выполнения, т.е. статически, язык называется статически типизированным, в противном случае динамически типизированным. Статически типизированные языки: Статически типизированные языки: слабо типизированный, если информация о типе используется только для обеспечения корректности программы на машинном уровне; слабо типизированный, если информация о типе используется только для обеспечения корректности программы на машинном уровне; сильно типизированный, если осуществляется полный контроль типов (статический, динамический или смешанный); сильно типизированный, если осуществляется полный контроль типов (статический, динамический или смешанный); защитно типизированный, если программы, содержащие конструкции с возможными типовыми ошибками, считаются недопустимыми, даже если эти ошибки никогда не могут возникнуть. защитно типизированный, если программы, содержащие конструкции с возможными типовыми ошибками, считаются недопустимыми, даже если эти ошибки никогда не могут возникнуть.
14 Февраль Проблемы слабо типизированных языков Операция, которая может восприниматься машиной как корректная, может быть некорректной на абстрактном уровне программы Операция, которая может восприниматься машиной как корректная, может быть некорректной на абстрактном уровне программы С: character; С:=4; С:=4; Неявное преобразование типов может привести к непредсказуемым результатам Неявное преобразование типов может привести к непредсказуемым результатам X,Y: real; I,J,K: integer; K:=X-J; Из-за использования неявного преобразования типов программа может иметь законную но не очевидную интерпретацию Из-за использования неявного преобразования типов программа может иметь законную но не очевидную интерпретацию 1<2<3 – истина и 3<2<1 – истина
15 Февраль Сильно типизированные языки Используется операция явного преобразования типа Используется операция явного преобразования типа X: real; I: integer; В: boolean; С: character; Х:=rеаl(I); C:=character(10);
16 Февраль Эквивалентность типов Требования к реализации Требования к реализации интуитивная привлекательность интуитивная привлекательность легкость реализации легкость реализации эффективность выполнения эффективность выполнения Эквивалентность по структуре (структурная эквивалентность) – совпадают описания типов Эквивалентность по структуре (структурная эквивалентность) – совпадают описания типов Эквивалентность по имени (именная эквивалентность) – типы с разными именами считаются разными Эквивалентность по имени (именная эквивалентность) – типы с разными именами считаются разными
17 Февраль type TAБЛ1 is array (1..10) of integer; type ТАБЛ2 is array (1..10) of integer; X: array(l.. 10) of integer; Y: ТАБЛ1; Z: ТАБЛ2; В случае эквивалентности по структуре типы переменных X, Y, Z будут считаться одинаковыми, а в случае эквивалентности по имени различными В случае эквивалентности по структуре типы переменных X, Y, Z будут считаться одинаковыми, а в случае эквивалентности по имени различными
18 Февраль Преимущества эквивалентности типов по имени Сильно упрощается распознавание эквивалентности типов по имени Сильно упрощается распознавание эквивалентности типов по имени Запрещение взаимодействия различных типов, даже если они имеют одинаковую структуру. Запрещение взаимодействия различных типов, даже если они имеют одинаковую структуру.
19 Февраль Поколения языков (1) Конкретная система типов представляет собой компромисс между эффективностями реализации и контроля типов. Конкретная система типов представляет собой компромисс между эффективностями реализации и контроля типов. Первое поколение - языки с минимальными возможностями типизации Первое поколение - языки с минимальными возможностями типизации Предоставляют лишь средства для описания переменных простых типов и массивов; никаких новых типов вводить нельзя. Предоставляют лишь средства для описания переменных простых типов и массивов; никаких новых типов вводить нельзя. Фортран, Алгол-60. Фортран, Алгол-60.
20 Февраль Поколения языков (2) Второе поколение – языки, предоставляющие программисту основные конструкторы типов: массивы, записи, объединения Второе поколение – языки, предоставляющие программисту основные конструкторы типов: массивы, записи, объединения ПЛ/1, Алгол-68, Паскаль, С ПЛ/1, Алгол-68, Паскаль, С Тип рассматривается как множество значений, получаемых из базисных множеств с помощью конструкторов. Тип рассматривается как множество значений, получаемых из базисных множеств с помощью конструкторов. Все операции над типами данных предопределенные определяемые языком, а не программистом. Все операции над типами данных предопределенные определяемые языком, а не программистом. Новые типы могут получать имена, но с ними нельзя связывать новых, специально вводимых операций. Новые типы могут получать имена, но с ними нельзя связывать новых, специально вводимых операций. Третье поколение – языки, предоставляющие программисту средства определения абстрактных типов данных Третье поколение – языки, предоставляющие программисту средства определения абстрактных типов данных С++, C#, Java С++, C#, Java Типы понимаются как множества с операциями. Типы понимаются как множества с операциями.
21 Февраль Вопросы к зачету Языки программирования. Понятие и определение типа. Контроль типов. Основные определения. Классификация языков по способу контроля типов. Языки программирования. Понятие и определение типа. Контроль типов. Основные определения. Классификация языков по способу контроля типов. Языки программирования. Классификация ЯП по способу определения семантики языковых конструкций. Уровни типизации. Языки программирования. Классификация ЯП по способу определения семантики языковых конструкций. Уровни типизации. Языки программирования. Способы определения эквивалентности типов. Деление языков программирования на поколения на основе типизации. Языки программирования. Способы определения эквивалентности типов. Деление языков программирования на поколения на основе типизации.
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.