Сильная типизация - Большая Энциклопедия Нефти и Газа, статья, страница 2
Прошу послать меня на курсы повышения зарплаты. Законы Мерфи (еще...)

Сильная типизация

Cтраница 2


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

Все три сравниваемых языка программирования в соответствии с введенными выше определениями являются типизированными языками программирования, но лишь язык Ада может считаться языком программирования с сильной типизацией. Автор утверждает, что язык Си не является языком программирования с сильной типизацией.  [17]

Языки программирования с сильной типизацией не могут быть использованы для решения задач системного программирования, поэтому для решения этих задач необходимо включение в язык программирования с сильной типизацией средств, обеспечивающих возможность нарушения механизма сильной типизации. Однако намного лучше включать в язык программирования одно средство, предназначенное для нарушения механизма сильной типизации, чем несколько различных средств, каждое из которых позволяет нарушать механизм сильной типизации. В таком случае все нарушения механизма сильной типизации легко локализуются и изолируются. Например, в языке Ада введена предопределенная библиотечная настраиваемая функция UNCHECKED CONVERSION, обращение к которой обеспечивает возможность нарушения механизма сильной типизации. К сожалению, в языке Си механизм сильной типизации может быть нарушен несколькими различными способами, позволяющими трактовать представление значения как данных различных типов.  [18]

Языки программирования с сильной типизацией не могут быть использованы для решения задач системного программирования, поэтому для решения этих задач необходимо включение в язык программирования с сильной типизацией средств, обеспечивающих возможность нарушения механизма сильной типизации. Однако намного лучше включать в язык программирования одно средство, предназначенное для нарушения механизма сильной типизации, чем несколько различных средств, каждое из которых позволяет нарушать механизм сильной типизации. В таком случае все нарушения механизма сильной типизации легко локализуются и изолируются. Например, в языке Ада введена предопределенная библиотечная настраиваемая функция UNCHECKED CONVERSION, обращение к которой обеспечивает возможность нарушения механизма сильной типизации. К сожалению, в языке Си механизм сильной типизации может быть нарушен несколькими различными способами, позволяющими трактовать представление значения как данных различных типов.  [19]

Поскольку язык Ратфор - всего лишь замаскированный язык Фортран, то в нем отсутствует ряд ценных качеств, появившихся в языке Паскаль, в котором средства типизации данных лучше подходят для обработки символов, а сильная типизация вместе с имеющимися средствами структуризации данных облегчает работу программиста.  [20]

Хотя язык Си и нельзя считать языком программирования с сильной типизацией, тем не менее программа, написанная на языке Си, в которой не выявлено ошибок верификатором lint, по-видимому, может считаться написанной на языке программирования с сильной типизацией.  [21]

Хотя в языке Си имеются типы данных ( в отличие от его предшественника - языка BCPL) и большинство трансляторов с языка Си обеспечивает проведение в том или ином объеме контроля типов, тем не менее утверждать, что язык Си является языком программирования с сильной типизацией было бы неверно. На самом деле основной функцией верификатора lint является выявление нарушений контроля типов, не выявляемых трансляторами с языка Си. Язык Си предоставляет в распоряжение программиста множество возможностей для нарушения контроля типов. Некоторые из этих возможностей перечислены ниже.  [22]

Язык Ада позволяет легко создавать библиотеки, содержащие подпрограммы и пакеты, вследствие наличия возможности раздельной трансляции. Сильная типизация язьпса Ада гарантирует, что библиотечные подпрограммы и пакеты, как и любые другие подпрограммы и пакеты будут использованы в строгом соответствии с их спецификациями. Доступ к библиотекам в языке Ада достаточно прост.  [23]

Сильная типизация гарантирует, что программные единицы будут использованы в строгом соответствии с их спецификациями независимо от того, использовалась или нет раздельная трансляция. Кроме того, сильная типизация предотвращает программиста от внесения в программные единицы произвольных изменений, которые могут привести к тому, что эта программная единица перестанет соответствовать своим спецификациям. Более того, тело программной единицы обязано соответствовать спецификации этой программной единицы, т.е. той спецификации, на которой основано использование этой программной единицы другими программистами.  [24]

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

Степень влияния механизма типизации данных на программиста зависит от того, насколько строги правила соответствия и контроля типов. Так, языки программирования с сильной типизацией заставляют программиста быть более внимательным к используемым им данным, чем языки программирования, в которых описание данных значит лишь чуть-чуть больше, чем комментарий. Степень влияния механизма типизации данных на программиста зависит также от богатства имеющейся структуры типов. Так, если имеющаяся структура типов слишком убога, то информацию о данных, являющуюся обычно частью типа, приходится хранить в самих данных. Так, хотя объектный код для обоих указанных далее случаев может оказаться одинаковым, использование перечислимых типов предпочтительнее, чем явное кодирование с помощью целых типов.  [26]

Противники сильной типизации утверждают, что механизм сильной типизации препятствует легкости программирования и гибкости, однако, за исключением некоторых проблем с производными типами ( обсуждаемых ниже в § 7.3.4), автору не удалось обнаружить подтверждения этого. Еще один аргумент, часто выдвигаемый противниками сильной типизации, заключается в том, что ряд программ, таких, например, как распределитель памяти, которые нарушают механизм сильной типизации, не может быть написан вообще при использовании языков программирования с сильной типизацией. В языке Ада имеется предопределенная библиотечная настраиваемая функция UNCHECKED CONVERSION, представляющая собой механизм, обеспечивающий возможность нарушения явным образом механизма сильной типизации, использование которой легко позволяет писать на языке Ада программы типа распределителя памяти. К тому же программы, в которых осуществляется нарушение механизма сильной типизации, легко могут быть обнаружены по использованию в них предопределенной библиотечной настраиваемой функции UNCHECKED CONVERSION, что облегчает сопровождение и перенос таких программ.  [27]

Язык программирования будем называть типизированным, если каждый объект этого языка программирования принадлежит к одному из существующих в нем типов, т.е. типу, известному транслятору с него. Язык программирования будем называть языком программирования с сильной типизацией, если транслятор с него в состоянии осуществить и осуществляет придание каждому объекту некоторого типа и гарантирует невозможность присваивания объекту значения другого типа, чем тип, к которому принадлежит этот объект.  [28]

Все три сравниваемых языка программирования в соответствии с введенными выше определениями являются типизированными языками программирования, но лишь язык Ада может считаться языком программирования с сильной типизацией. Автор утверждает, что язык Си не является языком программирования с сильной типизацией.  [29]

Языки программирования с сильной типизацией не могут быть использованы для решения задач системного программирования, поэтому для решения этих задач необходимо включение в язык программирования с сильной типизацией средств, обеспечивающих возможность нарушения механизма сильной типизации. Однако намного лучше включать в язык программирования одно средство, предназначенное для нарушения механизма сильной типизации, чем несколько различных средств, каждое из которых позволяет нарушать механизм сильной типизации. В таком случае все нарушения механизма сильной типизации легко локализуются и изолируются. Например, в языке Ада введена предопределенная библиотечная настраиваемая функция UNCHECKED CONVERSION, обращение к которой обеспечивает возможность нарушения механизма сильной типизации. К сожалению, в языке Си механизм сильной типизации может быть нарушен несколькими различными способами, позволяющими трактовать представление значения как данных различных типов.  [30]



Страницы:      1    2    3    4