«Ծրագրավորման լեզու»–ի խմբագրումների տարբերություն

Content deleted Content added
չ չտողադարձվող բացատը (։Դ Non-breaking space) փոխարինում եմ սովորականով։ oգտվելով ԱՎԲ
Տող 5.
Ծրագրավորման լեզվի նկարագրությունը սովորաբար կազմված է լինում երկու բաղկացուցիչներից՝ շարահյուսություն և իմաստաբանություն։ Որոշ ծրագրեր բացատրվում են մասնագրային փաստաթղթերով, օրինակ՝ C ծրագրավորման լեզուն մասնագիտացված է ISO ստանդարտով։ [[Perl]] 5-ը և այլ վաղ լեզուներ դոմինանտ իրականացում, ինչի շնորհիվ կիրառվում են որպես տեղեկագրություն։
 
Ծրագրավորման լեզուն նախատեսված է համակարգչային ծրագրեր գրելու համար, որոնք մի շարք կանոններ են, որոնք համակարգչին թույլ են տալիս կատարել որոշակի հաշվարկային գործընթաց, կազմակերպել տարբեր օբյեկտների կառավարում:Ծրագրավորման լեզուն տարբերվում է բնական լեզուներից, քանի որ այն նախագծված է համակարգիչները վերահսկելու համար, մինչդեռ բնական լեզուները հիմնականում օգտագործվում են մարդկանց միջև հաղորդակցվելու համար: Ծրագրավորման լեզուների մեծամասնությունը օգտագործում են հատուկ կոնստրուկցիաներ ՝ տվյալների կառուցվածքները սահմանելու և շահարկելու և հաշվարկների գործընթացը վերահսկելու համար:Որպես կանոն, ծրագրավորման լեզուն սահմանվում է ոչ միայն այն լեզվական ստանդարտի բնութագրերի միջոցով, որը պաշտոնապես սահմանում է իր շարահյուսությունն ու իմաստաբանությունը,այլ նաև ստանդարտ- ծրագրային գործիքների ներդրման (իրականացման) միջոցով, որոնք ապահովում են այս լեզվով ծրագրերի թարգմանում կամ մեկնաբանություն:Նման ծրագրային գործիքները տարբերվում են արտադրողի, ապրանքանիշի և տարբերակի (վարկածի) տարբերակով, թողարկման ժամկետով, ստանդարտի իրականացման ամբողջականությամբ, լրացուցիչ հատկություններով:Կարող են լինել մարմնավորման որոշակի սխալներ կամ առանձնահատկություններ, որոնք ազդում են լեզվի կամ նույնիսկ դրա ստանդարտի օգտագործման պրակտիկայում:Ծրագրավորման լեզուն կարող է ներկայացվել մասնագրերի մի այնպիսի համակարգի տեսքով, որոնցով բնութագրվում են նրա շարահյուսությունն ու իմաստաբանությունը:
Ծրագրավորման լեզուն կարող է ներկայացվել մասնագրերի մի այնպիսի համակարգի տեսքով, որոնցով բնութագրվում են նրա շարահյուսությունն ու իմաստաբանությունը։
 
'''Մշակման վաղ փուլերը'''
 
Կարելի է ասել, որ առաջին ծրագրավորման լեզուները առաջացել են նույնիսկ ժամանակակից էլեկտրոնային համակարգիչների հայտնվելուց առաջ. Արդեն 19-րդ դարում հորինվել են այնպիսի սարքեր, որոնք կարելի է ծրագրավորվող անվանել մի փոքր պայմանականությամբ-օրինակ ՝ երաժշտական տուփ (իսկ հետագայում ՝ մեխանիկական դաշնամուր) մետաղական մխոցով և այլն:Դրանք կառավարելու համար օգտագործվել են ցուցումների շարք, որոնք ժամանակակից դասակարգման շրջանակներում կարող են համարվել կողմնորոշված ծրագրավորման լեզուների նախատիպեր:Նշանակալից կարելի է համարել այն «լեզուն», որում 1842 թվականին Օգուստա Ադա Քինգ կոմսուհի Լավլեյսը գրեց ծրագիր ՝ «Չարլզ Բեբիջ» վերլուծական մեքենայի համար Բերնուլի համարները հաշվարկելու համար, որը, եթե իրականացվեր, կդառնար աշխարհում առաջին համակարգիչը, չնայած մեխանիկական, գոլորշու շարժիչով:1930-1940-ին Ա.Չյորչը Ա. Տուրինգը, Ա.Մարկովը մշակեցին մաթեմատիկական աբստրակցիաներ (համապատասխանաբար `Լամբդայի հաշվարկ, Տուրինգ մեքենա, նորմալ ալգորիթմներ)-պաշտոնականացնելու համար:Միևնույն ժամանակ, 1940-ական թվականներին հայտնվեցին էլեկտրական թվային համակարգիչներ և ստեղծվեց լեզու, որը կարելի է համարել համակարգչային ծրագրավորման առաջին բարձր մակարդակի լեզու:«Պլանկալկուլ», ստեղծվել է գերմանացի ինժեներ Կ. Զուսեի կողմից 1943-1945թթ: Առաջին գործնական կիրառված լեզուն 1949 թ.-ին էր, այսպես կոչված, «Կարճ օրենսգիրք», որում գործառույթներն ու փոփոխականները կոդավորված էին երկնիշ համադրություններով: Այն մշակվել է ընկերության կողմից Eckert - Mauchly Computer Corporation,արտադրող UNIVAC,ստեղծվել է Տուրինգ-ի անդամի կողմից:Մոկլին իր անձնակազմին հանձնարարեց մշակել մաթեմատիկական բանաձևերի թարգմանիչ, բայց 1940-ականների համար այդ նպատակը չափազանց հավակնոտ էր:Կարճ ծածկագիրն իրականացվեց թարգմանչի միջոցով:Շուտով ծրագրավորման այս մեթոդը փոխարինվեց երկրորդ սերնդի լեզուների օգտագործմամբ, որը նույնպես սահմանափակվեց հատուկ մեքենաների բնութագրերով, բայց մարդկային օգտագործման համար ավելի պարզ ՝ օգտագործելով և մեքենայական հիշողության մեջ հասցեներին անունների համապատասխանեցման հնարավորությունը:Դրանք ավանդաբար հայտնի են որպես հավաքման լեզուներ և ինքնագրեր:Այնուամենայնիվ, մոնտաժը գործածելիս հարկ եղավ այն իրականացնելուց առաջ ծրագիրը փոխարկել մեքենայական լեզվով, որի համար մշակվել են հատուկ ծրագրեր, որոնք կոչվում են նաև հավաքիչներ:Հետագայում բարելավվեցին երկրորդ սերնդի լեզուները,դրանցում հայտնվել է մակրո աջակցություն:Երրորդ սերնդի լեզուները, ինչպիսիք են Ֆորտրան- ը,Լիսպը և Կոբոլը, սկսեցին հայտնվել 1950-ականների կեսերին:Այս տիպի ծրագրավորման լեզուներն ավելի վերացական են (դրանք կոչվում են նաև «բարձր մակարդակի լեզուներ») և համընդհանուր, դրանք չունեն ուժեղ կախվածություն հատուկ ապարատային պլատֆորմի վրա և դրա վրա օգտագործվող մեքենայական ցուցումներով:Բարձր մակարդակի լեզու ունեցող ծրագիրը կարող է իրականացվել (համենայն դեպս տեսականորեն, գործնականում սովորաբար կան մի շարք հատուկ վարկածներ կամ լեզվի իրականացման բարբառներ) ցանկացած համակարգչի վրա, որն ունի այս լեզվի թարգմանիչ (գործիք, որը ծրագիրը թարգմանում է մեքենայական լեզվով, որից հետո այն կարող է իրականացվել պրոցեսորի կողմից):Այս լեզուների նորացված տարբերակները դեռ օգտագործվում են համակարգչային ծրագրերի մշակման մեջ, և դրանցից յուրաքանչյուրը որոշակի ազդեցություն է ունեցել ծրագրավորման լեզուների հետագա զարգացման վրա:Այնուհետև, 1950-ականների վերջին հայտնվեց Ալգոլը, որը նաև հիմք հանդիսացավ այս ոլորտում մի շարք հետագա զարգացումների համար:Պետք է նշել, որ վաղ ծրագրավորման լեզուների ձևաչափը և կիրառումը մեծապես ազդել են ինտերֆեյսի սահմանափակումների վրա:
 
'''Բարելավում'''
 
1960-70-ականների ժամանակահատվածում մշակվել են ծրագրավորման լեզուների հիմնական պարադիգմները, որոնք ներկայումս օգտագործվում են, չնայած որ շատ առումներով այս գործընթացը միայն երրորդ սերնդի առաջին լեզուներում դրված գաղափարների և հասկացությունների կատարելագործումն էր:
 
* APL- ն ազդեց ֆունկցիոնալ ծրագրավորման վրա և դարձավ առաջին լեզուն, որը աջակցեց զանգվածի մշակմանը,
* Լեզուն PL / 1 (NPL) մշակվել է 1960-ականներին ՝ որպես Ֆորտրան- ի և Կոբոլ- ի լավագույն հատկությունների համադրություն,
* 1960-ականների ընթացքում զարգացած և կատարելագործված Snobol լեզուն, որը կենտրոնացած է բառերի մշակման վրա, ներմուծել է ծրագրավորման լեզուների հիմնական գործողությունների շարքում օրինակելի համընկնում,
* Սիմուլայի լեզուն, որը հայտնվում էր միևնույն ժամանակ, առաջին հերթին աջակցում էր օբյեկտիվ ուղղված ծրագրավորմանը: 1970-ականների կեսերին մասնագետների մի խումբ ներկայացրեց Smalltalk- ը, որն արդեն լիովին օբյեկտիվ էր,
* 1969 թվականից մինչև 1973 թվականն ընկած ժամանակահատվածում իրականացվեց C լեզվով լեզվի զարգացումը, որը մինչ օրս տարածված է,և որը հիմք հանդիսացավ հետագա շատ լեզուների համար, օրինակ, նույնքան հայտնի, որքան C ++ և Java,
* 1972-ին ստեղծվեց Prolog- ը `ամենահայտնի (չնայած առաջինը չէ, և հեռու միակից) տրամաբանական ծրագրավորման լեզու,
* 1973 թ.-ին ML- ում(Meta Language) իրականացվեց պոլիմորֆային մուտքագրման ընդլայնված համակարգ, որը հիմք դրեց մուտքագրված ֆունկցիոնալ ծրագրավորման լեզուների,
 
Այս լեզուներից յուրաքանչյուրը սերունդների ընտանիք էր առաջացնում, և ծրագրավորման ժամանակակից լեզուները, ի վերջո, հիմնված են դրանցից մեկի վրա: Բացի այդ, 1960-70-ական թվականներին ակտիվ քննարկումներ եղան տարբեր լեզուներով կառուցվածքային ծրագրավորմանը աջակցելու անհրաժեշտության վերաբերյալ:Մասնավորապես, հոլանդացի մասնագետ Է. Դեյկստրանը ՝ առաջարկելով լիովին հրաժարվել բոլոր բարձր մակարդակներում GOTO հրահանգների գործածությունից:Մշակվել են նաև տեխնիկա `ծրագրերի ծավալը նվազեցնելու և ծրագրավորողի և օգտագործողի արտադրողականության բարձրացման համար:
 
'''Միավորում և զարգացում:'''
 
1980-ականներին սկսվեց մի շրջան, որը կամայականորեն կարելի է անվանել համախմբման ժամանակ:C++ լեզուն համատեղում էր օբյեկտի վրա հիմնված և համակարգային ծրագրավորման առանձնահատկությունները, ԱՄՆ կառավարությունը ստանդարտացրեց Ադայի լեզուն:Ստեղծված Պասկալից և նախատեսված է ռազմական կայանքների համար օդային կառավարման համակարգերում օգտագործելու համար,զգալի ներդրումներ են կատարվել Ճապոնիայում և այլ երկրներում, այսպես կոչված, հինգերորդ սերնդի լեզուների հեռանկարների ուսումնասիրության մեջ,որը կներառեր տրամաբանական ծրագրավորման կոնստրուկցիաներ,Ընդհանուր առմամբ, այս ժամանակահատվածը բնութագրվում էր նախորդ տասնամյակում դրված հիմքի վրա ապավինելով, այլ ոչ թե նոր պարամետրերի մշակմամբ:Մանրածախ համակարգերի համար ծրագրավորման լեզուների մշակման գործընթացում նկատվող կարևոր միտում եղել է մոդուլների օգտագործման շեշտը `ծածկագրերի կազմակերպման հատորային միավորները,աշխատանքի կարևոր ոլորտը վիզուալ (գրաֆիկական) ծրագրավորման լեզուներն են, որոնցում ծրագիրը, որպես տեքստ գրելու գործընթացը փոխարինվում է «նկարելու» գործընթացով:Տեսողական լեզուները տալիս են տեսանելիություն և ավելի լավ ընկալում անձի կողմից ծրագրի տրամաբանության վրա: 90-ականներին ինտերնետի ակտիվ զարգացման շնորհիվ տարածվեցին լեզուներ, որոնք թույլ տվեցին գրություններ գրել վեբ էջերի համար,մեծացել է նաև վիրտուալացման տեխնոլոգիաների ժողովրդականությունը:Ներկայումս ծրագրավորման լեզուների զարգացումը ընթանում է անվտանգության և հուսալիության բարձրացման ուղղությամբ ՝ ստեղծելով կոդային մոդուլային կազմակերպման նոր ձևեր և տվյալների բազաների հետ ինտեգրում:
 
= '''Լեզվի բնութագրում''' =
 
=== Ստանդարտացում ===
Շատ տարածված ծրագրավորման լեզուների համար ստեղծվել են միջազգային ստանդարտներ:Հատուկ կազմակերպությունները պարբերաբար թարմացնում և հրապարակում են համապատասխան լեզվի բնութագրերը և պաշտոնական սահմանումները:Նման հանձնաժողովների շրջանակներում շարունակվում են ծրագրավորման լեզուների մշակումն ու արդիականացումը, քննարկվում են առկա և նոր լեզվական կոնստրուկցիաների ընդլայնման կամ օժանդակության հարցեր:
 
==== Այբուբենը ====
Ժամանակակից ծրագրավորման լեզուները նախատեսված են ASCII օգտագործման համար,այսինքն, ASCII- ի բոլոր գրաֆիկական նիշերի առկայությունը անհրաժեշտ և բավարար պայման է ցանկացած լեզվական կոնստրուկցիաներ գրելու համար:6-բիթ նիշերի ժամանակաշրջանում առաջացած վաղ լեզուները օգտագործում էին ավելի սահմանափակ շարք:Օրինակ ՝ Fortran այբուբենը ներառում է 49 նիշ (ներառյալ տարածություն).A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 = + - * / () . , $ ' :
 
Հատկանշական բացառություն է APL լեզուն, որն օգտագործում է շատ հատուկ նիշ:ASCII- ից դուրս նիշերի օգտագործումը կախված է իրագործումից.երբեմն դրանք թույլատրվում են միայն մեկնաբանություններում և բնույթի / լարային հաստատություններում, իսկ երբեմն նույնականացուցիչներում:Լեզուները գոյություն ունեին ԽՍՀՄ-ում, որտեղ բոլոր հիմնաբառերը գրվում էին ռուսերեն տառերով, բայց դրանք մեծ ժողովրդականություն չէին վայելում:Օգտագործված խորհրդանիշների շարքի ընդլայնումը կաշկանդված է նրանով, որ ծրագրային ապահովման զարգացման շատ նախագծեր միջազգային են:Շատ դժվար կլինի աշխատել այնպիսի կոդով, որտեղ որոշ փոփոխականների անունները գրված են ռուսերեն տառերով, մյուսները ՝ արաբերենով, իսկ մյուսները ՝ չինական նիշերով:Այնուամենայնիվ, տեքստային տվյալների հետ աշխատելու համար նոր սերնդի ծրագրավորման լեզուները աջակցում են Unicode- ին:
 
=== Ցածր և բարձր մակարդակի լեզուներ. ===
Սովորաբար, «լեզվի մակարդակը» նշանակում է.
 
* այն աստիճանի, որով լեզվի իմաստաբանությունը տարբերվում է թիրախային պրոցեսորային ճարտարապետության մեքենայական ծածկագրից. այլ կերպ ասած, այն փոքրագույն փոխակերպումները, որոնք ծրագրի կոդը պետք է ենթարկվեն նախքան դրա իրականացումը
* այն աստիճանը, որով լեզվի իմաստաբանությունը հաշվի է առնում մարդու մտածողության առանձնահատկությունները, այլ ոչ թե մեքենայական, այսինքն ՝ լեզվի մակարդակը «ավելի ցածր է», այնքան ավելի «մեքենային մոտ է», իսկ «ավելի բարձր» ՝ այն «ավելի մոտ է մարդուն»:
 
Ցածր մակարդակի լեզուները հիմնականում ներառում են մեքենայական լեզուներ,այսինքն ՝ լեզուները, որոնք իրականացվում են ուղղակիորեն ապարատային մակարդակի վրա.Դրանք պատկանում են ծրագրավորման լեզուների առաջին սերնդին: Շատ չանցած ՝ հայտնվեցին երկրորդ սերնդի լեզուները ՝ այսպես կոչված, «հավաքագրական լեզուներ».Ամենապարզ դեպքում նրանք կատարում են mnemonics- ը մեքենայական լեզվով `հրամաններ և դրանց պարամետրեր գրելու համար,բացի այդ, հավաքույթների շատ լեզուներ ներառում են խիստ զարգացած մակրո լեզու:Առաջին և երկրորդ սերնդի լեզուները թույլ են տալիս ճշգրիտ կերպով վերահսկել, թե ինչպես է գործարկվելու պահանջվող գործառույթը այս պրոցեսորի վրա ՝ հաշվի առնելով դրա ճարտարապետության առանձնահատկություններըթ:Մի կողմից ՝ սա ապահովում է ծրագրերի մեծ արագություն և կոմպակտություն, բայց մյուս կողմից ՝ ծրագիրը մեկ այլ ապարատային հարթակ տեղափոխելու համար, այն պետք է վերամշակվի զրոյից:«Բարձր մակարդակի» լեզուներով ծրագրերը շատ ավելի հեշտ են փոփոխել և շատ հեշտությամբ փոխանցվել համակարգչից համակարգիչ: Գործնականում առավել լայնորեն կիրառվում են երրորդ սերնդի լեզուները, որոնք միայն պնդում են, որ կոչվում են «բարձր մակարդակի», բայց միայն այն «բարձր մակարդակի» կոնստրուկցիաները, որոնք գտնում են միանշանակ համապատասխանություն ֆոն Նեյման մեքենայում:Չորրորդ սերնդի լեզուներն ընդգրկում են ավելի բարձր կարգի լեզուներ,չորրորդ լեզուները երբեմն առանձնանում են որպես հինգերորդ սերնդի լեզուների կատեգորիա, բայց այն ընդհանուր առմամբ ընդունված չէ. Երկրորդ սերնդի «գերհամակարգ մակարդակի լեզու» տերմինը հաճախ օգտագործվում է բարձր կարգի լեզուներին վերաբերելու համար:Սրանք լեզուներ են, որոնց իրականացումը պարունակում է էական ալգորիթմական բաղադրիչ.
 
Կարևոր կատեգորիա են տիրույթի հատուկ լեզուները:Լեզվի նշանակումը այս կատեգորիայի համար շատ պայմանական և հաճախ հակասական է. գործնականում այս տերմինը կարող է կիրառվել լեզուների երրորդ, չորրորդ և հինգերորդ սերունդների ներկայացուցիչների համար:Լեզուների առաջին երեք սերունդները կազմում են ծրագրավորման հրամայական պարադիգմը, իսկ հաջորդը `դեկլարատիվ:«Հրամայական» տերմինը նշանակում է «հրամանի կարգ», այսինքն ՝ ծրագրավորում մեքենայի քայլ առ քայլ հանձնարարականով կամ մանրամասն ցուցում այն մասին, թե ինչպես է ծրագրավորողն արդեն հորինել մեթոդ ՝ տեխնիկական բնութագրերի իրականացման համար:«Դեկլարատիվ» տերմինը նշանակում է «նկարագրություն», այսինքն `ծրագրավորում` տեխնիկական բնութագրերի ձևակերպում `ավտոմատ փոխակերպումների համար հարմար ձևով, լեզվի թարգմանչի համար ընտրության ազատությամբ:Ստիպողական լեզուները ուղղված են նկարագրելու, թե ինչպես հասնել արդյունքի, մինչդեռ ավելի բարձր մակարդակի լեզուները ուղղված են նկարագրել այն, ինչ պահանջվում է որպես արդյունք:Շատ դեպքերում, բարձր մակարդակի լեզուները առաջացնում են ավելի մեծ մեքենայի կոդ և կատարում են ավելի դանդաղ:Այնուամենայնիվ, ալգորիթմական և կառուցվածքային բարդ ծրագրերի համար բարձր մակարդակի որոշ լեզուներ կարող են զգալի առավելություն տալ արդյունավետության մեջ, երկրորդը `միայն ցածր և միջին մակարդակի, փոքր և պարզ ծրագրերում:Այլ կերպ ասած, լեզվի հնարավոր արդյունավետությունը փոխվում է `իր« մակարդակը »ոչ գծային և ընդհանուր առմամբ երկիմաստորեն բարձրացնելով:Հետևաբար, այսօր ցածր մակարդակի լեզուները օգտագործվում են միայն համակարգային ծրագրավորման առաջադրանքներում:Լայնորեն համարվում է, որ այն առաջադրանքներում, երբ ռեսուրսների ճշգրիտ վերահսկողություն է պահանջվում, լեզուն ինքնին պետք է հնարավորինս քիչ փոխակերպումներ կատարի, հակառակ դեպքում ծրագրավորողի բոլոր ջանքերն ապարդյուն կլինեն:
 
=== Ապահով և անվտանգ լեզուներ ===
Ժամանակակից համակարգիչները ներկայացնում են բարդ աշխարհի իրական բարդությունները `որպես համակարգչային հիշողության թվեր,սա ներմուծում է մարդկային գործոնի ռիսկը ծրագրավորման կարգապահության մեջ, ներառյալ հիշողության հասանելիության սխալների հավանականությունը:Հետևաբար, ծրագրավորման շատ լեզուներ ուղեկցվում են երկուական տվյալների վրա գործողությունների նշանակությունը վերահսկելու միջոցներով, որոնք հիմնված են ուղեկցող տրամաբանական տեղեկատվության վրա-տիպային համակարգ:Լեզուների տիպի համակարգերը բաժանված են դինամիկ և ստատիկ, իսկ վերջիններս, իր հերթին, բաժանված են ոչ բազմիմֆորիկ և բազմամորֆային:Բացի այդ, դրանք բաժանվում են հստակ, այլ կերպ ասած, որոնք պահանջում են արտահայտված տիպի հայտարարագրեր ծրագրի օբյեկտների համար կամ դրանք ստատիկորեն բխելով ինքնուրույն:Ընդհանրապես, լեզուն անվանում են անվտանգ, եթե դրա վրա եղած ծրագրերը, որոնք կազմողը կարող է ընդունվել ինչպես ճիշտ կառուցված, դինամիկայում երբեք չի անցնում ընդունելի վարքի սահմաններից:Սա չի նշանակում, որ նման ծրագրերն ընդհանրապես չեն պարունակում սխալներ:«Ծրագրի լավ պահվածք» տերմինը նշանակում է, որ նույնիսկ եթե ծրագիրը պարունակում է որոշակի սխալ, այն այնուամենայնիվ, ի վիճակի չէ խախտել տվյալների ամբողջականությունը և խորտակել:
 
Սխալների վերահսկման աստիճանը և նրանց նկատմամբ լեզվի արձագանքը կարող են տարբեր լինել:Ամենապարզ տիպի համակարգերը արգելում են, օրինակ, տողն իջեցնել ամբողջ թվից:Այնուամենայնիվ, միլիմետրերը և դյույմները կարող են ներկայացվել որպես ամբողջ թվեր, բայց տրամաբանական սխալ կլիներ միլիմետրերից դյույմները հանելը:Առաջադեմ տիպի համակարգերը թույլ են տալիս նման տրամաբանական տեղեկությունները ներառել ծրագրի մեջ:
 
C լեզուներն ու նրա սերունդ C ++ -ը անվնաս են:Նրանց համար նախատեսված ծրագրերում լայնորեն հանդիպում են տպագրության թուլացման և դրա ուղղակի խախտման իրավիճակները, ուստի հիշողության հասանելիության սխալները դրանցում վիճակագրական նորմ են:Նրանց համար ստատիկ վերլուծության ամենաուժեղ համակարգերը ի վիճակի են հայտնաբերել ոչ ավելի, քան 70 - 80% սխալներ, բայց դրանց օգտագործումը դրամական առումով շատ թանկ է:Այս լեզուներով ծրագրերի հուսալիության երաշխավորումը անհնար է, առանց դիմելու պաշտոնական ստուգմանը, ինչը ոչ միայն թանկ է, այլև պահանջում է հատուկ գիտելիքներ:Չորրորդ լեզուն չի պնդում, որ «անվտանգ է», բայց, այնուամենայնիվ, գործնականում գրեթե բացառվում է ծրագրերի առկայությունը, որոնք կարող են կոռումպացված տվյալներ, քանի որ ծրագիրը, որը պարունակում է հավանական վտանգավոր սխալի խափանում, իր առաջին փորձարկման ընթացքում վթարի է ենթարկում, ստիպելով շտկել կոդով աղբյուրը:
 
=== Տվյալների տիպերը ===