Кіріспе
Экспрессияны бір дерек типінен екіншісіне ауыстыру авиациялық лицензиялау процесі Компьютерлік ғылымда типті түрлендіру, типті құю, типті мәжбүрлеу – бір дерек типінен екіншісіне экспрессияны өзгертудің әртүрлі тәсілдері. Мысал ретінде бүтін санды қозғалмалы нүктелік мәнге немесе оның мәтіндік түрінде жол түрінде бейнеленуі және керісінше түрлендіру. Тип түрлендірулері типтер иерархиясының немесе деректерді бейнелеудің белгілі бір ерекшеліктерін пайдалана алады. Типті түрлендірудің екі маңызды аспектісі – бұл жасырын (автоматты) немесе ашық түрде бола ма, және негізгі деректердің бейнеленуі бір бейнеленуден екіншісіне ауыстырылады ма, немесе берілген бейнелену тек басқа дерек типінің бейнеленуі ретінде қайта түсіндіріледі. Жалпы, бастапқы және күрделі дерек типтерін де түрлендіруге болады. Әрбір бағдарламалау тілінің типтерді түрлендірудің өз ережелері бар. Қатты типтегі тілдер әдетте жасырын түрлендіруді азайтады және бейнелеулерді қайта түсіндіруді ынталандырмайды, ал әлсіз типтегі тілдер дерек типтері арасында көптеген жасырын түрлендірулерді орындайды. Әлсіз типтеу тілі жиі компиляторды дерек элементін әртүрлі бейнелеуге ие деп өздігінен түсіндіруге мәжбүр етеді. Бұл анық емес бағдарламалау қатесі немесе негізгі аппаратпен тікелей жұмыс істеудің техникалық әдісі болуы мүмкін. Көптеген тілдерде мәжбүрлеу сөзі компиляция кезінде немесе орындалу кезінде жасырын түрлендіруді білдіру үшін қолданылады. Мысалы, бүтін сандар мен қозғалмалы нүктелі сандарды араластыратын өрнекте (5 + 0.1) компилятор бүтін санды бейнелеуді автоматты түрде қозғалмалы нүктелі бейнелеуге айналдырады, сондықтан бөлшектер жоғалмайды. Ашық тип түрлендірулері қосымша код жазу арқылы (мысалы, тип идентификаторын қосу немесе жүйеге енгізілген шақыру) немесе компиляторға тип сәйкессіздігімен тоқтаған кезде пайдалану үшін түрлендіру процедураларын кодтау арқылы көрсетіледі. ALGOL-ға ұқсас көптеген тілдерде, мысалы, Паскаль, Модула 2, Ада және Дельфиде түрлендіру мен құю айқын түрлі ұғымдар болып табылады. Бұл тілдерде түрлендіру дегеніміз бір дерек типін сақтау форматынан екіншісіне мәнді жасырын немесе ашық өзгертуді білдіреді, мысалы, 16 биттік бүтін санды 32 биттік бүтін санға. Қайта өңдеу нәтижесінде сақтау қажеттілігі өзгеруі мүмкін, оның ішінде дәлдіктің жоғалуы немесе қысқаруы мүмкін. Ал құю деген сөз бір типтен екінші типке мәнді білдіретін бит үлгісінің түсіндіруін нақты өзгертуді білдіреді. Мысалы, 32 жалғасқан битті 32 логикалық массив, 4 байттық жол, қолтаңбасыз 32 биттік бүтін сан немесе IEEE бір дәлдікті қозғалмалы нүктелік мән ретінде қарастыруға болады. Сақталған биттер ешқашан өзгермейтіндіктен, бағдарламашы мәнді дұрыс түсіндіру үшін төменгі деңгейдегі мәліметтерді, мысалы, бейнелеу форматын, байт реті мен сәйкестендіру қажеттіліктерін білуі керек. C тілдер отбасы мен ALGOL 68 тілдерінде "cast" сөзі әдетте ашық типті түрлендіруге (жасырын түрлендіруге қарсы) қатысты, бұл бит үлгісінің қайта түсіндіруі ме, әлде нақты деректерді бейнелеу түрлендіруі ме деген түсініксіздікке әкеледі. Бұған қарағанда, меңзердің қандай дерек типін (немесе класты) орналастыратыны және компилятордың меңзерді объект (класс) мұрагерлік сияқты жағдайларда қалай реттей алатыны туралы көптеген тәсілдер мен ережелер маңызды.
the aviation licensing process
In computer science, type conversion, type casting, type coercion, are different ways of changing an expression from one data type to another. An example would be the conversion of an integer value into a floating point value or its textual representation as a string, and vice versa. Type conversions can take advantage of certain features of type hierarchies or data representations. Two important aspects of a type conversion are whether it happens implicitly (automatically) or explicitly, and whether the underlying data representation is converted from one representation into another, or a given representation is merely reinterpreted as the representation of another data type. In general, both primitive and compound data types can be converted. Each programming language has its own rules on how types can be converted. Languages with strong typing typically do little implicit conversion and discourage the reinterpretation of representations, while languages with weak typing perform many implicit conversions between data types. Weak typing language often allow forcing the compiler to arbitrarily interpret a data item as having different representations—this can be a non obvious programming error, or a technical method to directly deal with underlying hardware. In most languages, the word coercion is used to denote an implicit conversion, either during compilation or during run time. For example, in an expression mixing integer and floating point numbers (like 5 + 0.1), the compiler will automatically convert integer representation into floating point representation so fractions are not lost. Explicit type conversions are either indicated by writing additional code (e. g. adding type identifiers or calling built in routines) or by coding conversion routines for the compiler to use when it otherwise would halt with a type mismatch. In most ALGOL like languages, such as Pascal, Modula 2, Ada and Delphi, conversion and casting are distinctly different concepts. In these languages, conversion refers to either implicitly or explicitly changing a value from one data type storage format to another, e. g. a 16 bit integer to a 32 bit integer. The storage needs may change as a result of the conversion, including a possible loss of precision or truncation. The word cast, on the other hand, refers to explicitly changing the interpretation of the bit pattern representing a value from one type to another. For example, 32 contiguous bits may be treated as an array of 32 booleans, a 4 byte string, an unsigned 32 bit integer or an IEEE single precision floating point value. Because the stored bits are never changed, the programmer must know low level details such as representation format, byte order, and alignment needs, to meaningfully cast. In the C family of languages and ALGOL 68, the word cast typically refers to an explicit type conversion (as opposed to an implicit conversion), causing some ambiguity about whether this is a re interpretation of a bit pattern or a real data representation conversion. More important is the multitude of ways and rules that apply to what data type (or class) is located by a pointer and how a pointer may be adjusted by the compiler in cases like object (class) inheritance.
Аида
Ада жалпы кітапханалық функцияны ұсынады – Қадағалаусыз түрлендіру.
Белгіленбеген одақтарды қолдана отырып, жасырын құю
Көптеген бағдарламалау тілдері бірнеше түрдің мәнін сақтауға мүмкіндік беретін одақ түрлерін қолдайды. Кейбір тілдерде, мысалы C және PL/I, сондай-ақ түпнұсқа Pascal-да, белгісіз одақтар ұсынылады. Оларды бір түрдің биттік үлгісін басқа түрдің мәні ретінде түсіндіру үшін пайдалануға болады.
Қауіпсіздік мәселелері
Хакерлікте типтік құю – айнымалының бастапқыда анықталған дерек типін уақытша өзгерту үшін дерек типін түрлендіруді қате пайдалану. Бұл хакерлерге мүмкіндік береді, себебі дерек типін түрлендіру кезінде айнымалы басқа дерек типіне түрлендірілгеннен кейін, компилятор сол операция үшін бұл өзгертілген айнымалыны жаңа дерек типі ретінде қарастырады.