www.wikidata.uk-ua.nina.az
U komp yuternomu programuvanni ce odin zi sposobiv rozmovnoyi klasifikaciyi mov programuvannya chi sistema tipiv movi robit yiyi strogo tipizovanoyu abo slabko tipizovanoyu Tochnogo tehnichnogo viznachennya cogo terminu nemaye Rizni avtori ne mayut yedinoyi dumki shodo neyavnogo znachennya terminiv i vidnosnogo rejtingu sili sistem tipiv osnovnih mov programuvannya Z toyi zh prichini avtori yaki hochut odnoznachno pisati pro sistemi tipiv chasto unikayut terminiv silna tipizaciya ta slabka tipizaciya na korist konkretnih viraziv takih yak bezpeka tipiv Zagalom strogo tipizovana mova maye suvorishi pravila tipizaciyi pid chas kompilyaciyi a ce oznachaye sho pomilki ta vidmovi vinikayut chastishe Bilshist cih pravil vplivaye na priznachennya zminnih znachennya sho povertayutsya funkciyeyu argumenti proceduri ta viklik funkciyi Dinamichno tipizovani movi de perevirka tipiv vidbuvayetsya pid chas vikonannya takozh mozhut buti strogo tipizovani Vazhlivo pam yatati sho v dinamichno tipizovanih movah znachennya mayut tipi a ne zminni Slabko tipizovana mova maye bilsh vilni pravila tipizaciyi Vilni pravila mozhut davati neperedbachuvani abo navit pomilkovi rezultati abo mozhe vikonuvati neyavne peretvorennya tipiv pid chas vikonannya 1 Prihilniki slabko tipizovanih mov vvazhayut taki zanepokoyennya perebilshennyami ta vbachayut sho statichna tipizaciya stvoryuye eksponencialno bilshij nabir problem 2 Inshoyu ale sporidnenoyu koncepciyeyu ye prihovanij tip Zmist 1 Istoriya 2 Viznachennya ponyat silnij abo slabkij 2 1 Neyavni peretvorennya tipiv i kalambur 2 2 Pokazhchiki 2 3 Ob yednannya bez tegiv 2 4 Statichna perevirka tipu 2 5 Dinamichna perevirka tipu 3 Divitsya takozh 4 Spisok literaturiIstoriya RedaguvatiBarbara Liskov i S Zilles u 1974 roci dali viznachennya strogo tipizovanoyi movi yak movi u yakij Kozhnogo razu koli ob yekt peredayetsya vid funkciyi sho viklikaye do viklikanoyi funkciyi jogo tip povinen buti sumisnij iz tipom ogoloshenim u viklikanij funkciyi 3 K Dzhekson u 1977 roci pisav U strogo tipizovanij movi kozhna oblast danih matime okremij tip i kozhen proces vstanovlyuvatime svoyi vimogi do zv yazku v terminah cih tipiv 4 Viznachennya ponyat silnij abo slabkij RedaguvatiDokazami silnoyi abo slabkoyi ye kilka riznih rishen movnogo dizajnu Bagato z nih tochnishe rozumiti yak nayavnist abo vidsutnist bezpeki tipu bezpeki pam yati statichnoyi perevirki tipu abo dinamichnoyi perevirki tipu Silna tipizaciya najchastishe stosuyetsya vikoristannya tipiv mov programuvannya dlya togo shob zafiksuvati invarianti kodu zabezpechiti pravilnist kodu viklyuchiti pevni klasi pomilok programuvannyaTakim chinom dlya dosyagnennya cih cilej vikoristovuyetsya bagato disciplin silnoyi tipizaciyi Neyavni peretvorennya tipiv i kalambur Redaguvati Deyaki movi programuvannya dozvolyayut legko vikoristovuvati znachennya odnogo tipu takim chinom nibi ce znachennya inshogo tipu Inodi ce opisuyetsya yak slabkij tip Aaz Maruh napriklad zauvazhuye sho privedennya tipiv vinikaye koli u vas ye statichno tipizovana mova i vi vikoristovuyete sintaksichni osoblivosti movi shob primusovo vikoristovuvati odin tip yakbi ce buv inshij tip Privedennya tipiv zazvichaj ye simptomom slabkogo druku Z inshogo boku peretvorennya stvoryuye absolyutno novij ob yekt vidpovidnogo tipu 5 Inshij priklad GCC opisuye ce yak tip kalambur ta poperedzhaye sho ce porushit strogi psevdonimi Thiago Macieira obgovoryuye nizku problem yaki mozhut viniknuti koli nabir tekstiv zmushuye kompilyator robiti nevidpovidni optimizaciyi 6 Prikladiv mov yaki dozvolyayut neyavne privedennya tipiv ale bezpechnim dlya tipiv sposobom ye bagato Do prikladu i C i C dozvolyayut programam viznachati operatori dlya peretvorennya znachennya z odnogo tipu v inshij z chitko viznachenoyu semantikoyu Za umovi koli kompilyator C stikayetsya z takim peretvorennyam vin rozglyadaye operaciyu tak samo yak viklik funkciyi Navpaki peretvorennya znachennya v tip Cvoid nebezpechna operaciya nevidima dlya kompilyatora Pokazhchiki Redaguvati Deyaki movi programuvannya vidobrazhayut vkazivniki yak chislovi znachennya i dozvolyayut koristuvacham vikonuvati arifmetichni diyi nad nimi Inodi ci movi nazivayut slabko tipizovanimi oskilki arifmetika vkazivnikiv mozhe buti vikoristana dlya obhodu sistemi tipiv movi Ob yednannya bez tegiv Redaguvati Deyaki movi programuvannya pidtrimuyut ob yednannya bez tegiv sho dozvolyaye vidobrazhati znachennya odnogo tipu u viglyadi znachenn inshogo tipu Statichna perevirka tipu Redaguvati U statti Luki Kardelli Tipove programuvannya 7 avtor opisuye silnu sistemu tipu yak sistema v yakij vidsutnya mozhlivosti neperevirenoyi pomilki tipu vikonannya V inshomu teksti vidsutnist neperevirenih pomilok chasu vikonannya viznachayut yak bezpeka abo bezpeka tipu Ranni statti Toni Hoara nazivayut cyu vlastivist bezpekoyu 8 Dinamichna perevirka tipu Redaguvati V deyakih movah programuvannya vidsutni statichni perevirki tipiv U bagatoh takih movah legko pisati programi yaki buli b vidhileni bilshistyu statichnih perevirok tipiv Napriklad zminna mozhe zberigati abo chislo abo logichne znachennya false Vazhlivo zvernuti uvagu na te sho deyaki z cih viznachen ye superechlivimi inshi konceptualno nezalezhnimi a treti ye okremimi vipadkami z dodatkovimi obmezhennyami inshih bilsh liberalnih mensh silnih viznachen Cherez veliku rozbizhnist mizh cimi viznachennyami mozhna spiratims na tverdzhennya shodo bilshosti mov programuvannya sho voni abo silno abo slabko tipizovani Napriklad Java Pascal Ada ta C vimagayut shob usi zminni mali ogoloshenij tip i pidtrimuyut vikoristannya yavnih privedennya arifmetichnih znachen do inshih arifmetichnih tipiv Inkoli kazhut sho Java C Ada ta Pascal mayut bilsh suvoru tipizaciyu nizh C ce tverdzhennya jmovirno gruntuyetsya na tomu fakti sho C pidtrimuye bilshe tipiv neyavnih peretvoren a C takozh dozvolyaye yavno navoditi znachennya vkazivnikiv todi yak Java ta Pascal ne Samu Java mozhna vvazhati bilsh zhorstko tipizovanoyu nizh Pascal oskilki metodi uhilennya vid statichnoyi sistemi tipiv u Java kontrolyuyutsya sistemoyu tipiv virtualnoyi mashini Java C i VB NET u comu vidnoshenni podibni do Java hocha voni dozvolyayut vimknuti dinamichnu perevirku tipiv shlyahom yavnogo rozmishennya segmentiv kodu v nebezpechnomu konteksti Sistema tipiv Paskalya bula opisana yak nadto silna oskilki rozmir masivu abo ryadka ye chastinoyu jogo tipu sho robit deyaki zavdannya programuvannya duzhe skladnimi 9 10 Smalltalk Ruby Python i Self usi strogo tipizovani v tomu sensi sho pomilki vvedennya zapobigayut pid chas vikonannya i voni ne vikonuyut neyavnogo peretvorennya tipiv ale ci movi ne vikoristovuyut statichnu perevirku tipiv kompilyator ne pereviryaye ta ne vikonuye pravila obmezhennya tipu Termin kachinij tip teper vikoristovuyetsya dlya opisu paradigmi dinamichnogo druku sho vikoristovuyetsya movami ciyeyi grupi Vsi movi simejstva Lisp ye strogo tipizovanimi v tomu sensi sho pomilki vvedennya zapobigayutsya pid chas vikonannya Deyaki dialekti Lisp taki yak Common Lisp abo Clojure pidtrimuyut rizni formi deklaracij tipiv 11 a deyaki kompilyatori CMUCL 12 i podibni vikoristovuyut ci deklaraciyi razom iz vivedennyam tipu shob umozhliviti rizni optimizaciyi a takozh obmezheni formi perevirki tipu pid chas kompilyaciyi Standard ML F OCaml Haskell Go ta Rust statichno pereviryayutsya tipami ale kompilyator avtomatichno viznachaye tochnij tip dlya bilshosti znachen Mova asemblera i Forth mozhna oharakterizuvati yak netipizovanu Nemaye perevirki tipu Programist povinen perekonatisya sho dani nadani funkciyam nalezhnogo tipu Bud yake peretvorennya tipu ye yavnim Divitsya takozh RedaguvatiPorivnyannya mov programuvannya Tip danih vklyuchaye bilsh detalne obgovorennya pitan tipizaciyi Proektuvannya za kontraktom stroga tipizaciya yak neyavna forma kontraktu Latentne tipuvannya Bezpeka pam yati Tip bezpeki Tip sistemiSpisok literaturi Redaguvati CS1130 Transition to OO programming Spring 2012 self paced version Cornell University Department of Computer Science 2005 Arhiv originalu za 23 listopada 2015 Procitovano 23 listopada 2015 The Unreasonable Effectiveness of Dynamic Typing for Practical Programs Vimeo 12 veresnya 2013 Procitovano 21 bereznya 2021 Liskov B Zilles S 1974 Programming with abstract data types ACM SIGPLAN Notices 9 4 50 59 doi 10 1145 942572 807045 Proignorovano nevidomij parametr citeseerx dovidka Jackson K 1977 Parallel processing and modular software construction Design and Implementation of Programming Languages Lecture Notes in Computer Science 54 436 443 ISBN 3 540 08360 X doi 10 1007 BFb0021435 Aahz Typing Strong vs Weak Static vs Dynamic Procitovano 16 serpnya 2015 Type punning and strict aliasing Qt Blog Qt Blog Procitovano 18 lyutogo 2020 Luca Cardelli Typeful programming Hoare C A R 1974 Hints on Programming Language Design In Computer Systems Reliability ed C Bunyan Vol 20 pp 505 534 InfoWorld 25 kvitnya 1983 Procitovano 16 serpnya 2015 Kernighan Brian 1981 Why Pascal is not my favorite programming language Arhiv originalu za 6 kvitnya 2012 Procitovano 22 zhovtnya 2011 CLHS Chapter 4 Procitovano 16 serpnya 2015 CMUCL User s Manual The Compiler Arhiv originalu za 8 March 2016 Procitovano 16 serpnya 2015 Otrimano z https uk wikipedia org w index php title Silna i slabka tipizaciya amp oldid 39774836