მაღალი დონის პროგრამირების ენა

**მაღალი დონის პროგრამირების ენა** (ინგლ. High-level programming language) — პროგრამირების ენა, რომელიც განკუთვნილია პროგრამისტისთვის სწრაფად და მოსახერხებლად გამოსაყენებლად. მაღალი დონის ენების მთავარი მახასიათებელია აბსტრაქცია, ანუ აზრობრივი კონსტრუქციების შემოტანა, რომლებიც მოკლედ აღწერს ისეთ მონაცემთა სტრუქტურებს და მათზე ოპერაციებს, რომელთა აღწერილობა მანქანურ კოდში (ან სხვა დაბალი დონის პროგრამირების ენაზე) ძალიან გრძელია და რთული გასაგები. 

მაღალი დონის პროგრამირების ენები შეიქმნა ალგორითმების არსის პლატფორმისგან დამოუკიდებლობის აღსაქმელად. პლატფორმაზე დამოკიდებულება სხვა ინსტრუმენტული პროგრამების მახასიათებელია. ასეთია თარჯიმანი პროგრამები, რომლებიც მაღალი დონის ენაზე დაწერილ ტექსტს გარდაქმნიან ელემენტარულ მანქანურ ინსტრუქციებად. აქედან გამომდინარე, თითოეული პლატფორმისათვის მუშავდება მისთვის უნიკალური ტრანსლიატორი (თარჯიმანი) თითოეული მაღალი დონის ენისთვის.

ამრიგად, მაღალი დონის ენები ცდილობენ არა მხოლოდ ხელი შეუწყონ რთული პროგრამული პრობლემების გადაჭრას, არამედ გაამარტივონ პროგრამული უზრუნველყოფის პორტირება. მრავალფეროვანი ტრანსლიატორი და ინტერპრეტატორი პროგრამების გამოყენება უზრუნველყოფს მაღალი დონის ენებზე დაწერილი პროგრამების კომუნიკაციას პროგრამირებადი მოწყობილობა-დანადგარების სხვადასხვა ოპერაციულ სისტემებთან, და, იდეალურ შემთხვევაში, არ საჭიროებს საწყისი კოდის (მაღალი დონის ენაზე დაწერილი ტექსტი) შეცვლას ნებისმიერი პლატფორმისთვის.

მაღალი დონის ენების ამგვარ იზოლაციას კომპიუტერის აპარატურული რეალიზაციისაგან, მრავალი უპირატესობის გარდა, აქვს უარყოფითი მხარეებიც. კერძოდ, ის არ იძლევა მარტივი და ზუსტი ინსტრუქციების შექმნის საშუალებას გამოყენებული აღჭურვილობისთვის. მაღალი დონის ენებზე დაწერილი პროგრამები უფრო ადვილი გასაგებია პროგრამისტისთვის, მაგრამ ნაკლებად ეფექტური, ვიდრე დაბალი დონის ენებზე დაწერილი მათი ანალოგები. ამის გამო, აუცილებელი გახდა ამა თუ იმ დაბალი დონის ენის (ასამბლერის) მხარდაჭერის დამატება მრავალ თანამედროვე პროფესიულ მაღალი დონის პროგრამირების ენებში.

მაგალითები: C ++, C #, Delphi, Fortran, Java, JavaScript, Lisp, Pascal, PHP, ასევე Ruby, Python, Perl, რომლებსაც ზოგჯერ უწოდებენ უმაღლესი დონის ენებს. მაღალი დონის ენებს აქვთ მონაცემთა რთულ სტრუქტურებთან მუშაობის უნარი. მათ უმეტესობას აქვს სტრიქონების ტიპების, ობიექტების, ფაილური შეტანა-გამოტანის ოპერაციების და ა.შ. ინტეგრირებული მხარდაჭერა.

პირველი მაღალი დონის პროგრამული ენად ითვლება Plankalkül (დაგეგმილი გამოთვლა), რომელიც გერმანელმა ინჟინერმა, კონრად ცუზემ შეიმუშავა ჯერ კიდევ 1942-1946 წლებში. მაგრამ მისი ტრანსლიატორი არ არსებობდა 2000 წლამდე. მაღალი დონის პროგრამული ენების ფართე გამოყენება დაიწყო ფორტრანისა და მისი კომპილატორის შექმნისთანავე (1957). 

2018 წელს, კომპანია „TIOBE Software“-ის აზრით, პროგრამირების ენებში ლიდერობდა ჯავა.

## პროგრამების პორტაბელურობა
არსებობდა მოსაზრება, რომ პროგრამები მაღალი დონის ენებზე შეიძლება დაიწეროს ერთხელ და შემდეგ მისი გამოყენება შეიძლება ნებისმიერი ტიპის კომპიუტერზე. სინამდვილეში, ეს ეხება მხოლოდ იმ პროგრამებს, რომელთაც მცირე ურთიერთქმედება აქვთ ოპერაციულ სისტემასთან, მაგალითად, ასრულებენ რაიმე გამოთვლებს ან მონაცემთა დამუშავებას. ინტერაქტიული (და მით უმეტეს, მულტიმედიური) პროგრამების უმეტესობა სისტემურ გამოძახებას მიმართავს, რომლებიც მნიშვნელოვნად განსხვავდება ოპერაციული სისტემის მიხედვით. მაგალითად, კომპიუტერის ეკრანზე გრაფიკის საჩვენებლად, Microsoft Windows-ის პროგრამები იყენებენ Windows API-ის ფუნქციებს, რომლებიც განსხვავდება იმ სისტემებისგან, რომლებიც მხარს უჭერენ **POSIX** (**P**ortable **O**perating **S**ystem **I**nterface — ოპერაციული სისტემების პორტატული ინტერფეისი) სტანდარტს. ამ მიზნებისათვის, ყველაზე ხშირად, ისინი იყენებენ X სერვერების პროგრამულ ინტერფეისს.

დღეისათვის შეიქმნა არაერთი პროგრამული ბიბლიოთეკა (მაგალითად, Qt ბიბლიოთეკა ან wxWidgets), რომელიც მალავს აპლიკაციებიდან სხვადასხვა ოპერაციული სისტემების სისტემური გამოძახებების შეუსაბამობებს. თუმცა, ასეთი ბიბლიოთეკები, როგორც წესი, არ იძლევა კონკრეტული ოპერაციული სისტემების ყველა შესაძლებლობის სრულად გამოყენებას.

## ახალი ტენდენციები
ახალი ტენდენციაა ოდნავ უფრო მაღალი დონის პროგრამირების ენების გაჩენა. ამ ტიპის ენები ხასიათდება დამატებითი სტრუქტურებისა და ობიექტების არსებობით, რომლებიც ორიენტირებულია აპლიკაციის გამოყენებაზე. გამოყენებული ობიექტები, თავის მხრივ, საჭიროებენ მინიმალურ კონფიგურაციას პარამეტრების სახით და მყისიერად მზად არიან გამოსაყენებლად. უმაღლესი დონის პროგრამირების ენების გამოყენება ამცირებს პროგრამული უზრუნველყოფის შემუშავებაზე დახარჯულ დროს და აუმჯობესებს საბოლოო პროდუქტის ხარისხს, კვლავ საწყისი კოდების მოცულობის შემცირებით.

## იხილეთ ასევე
* უმაღლესი დონის პროგრამირების ენა
* დაბალი დონის პროგრამირების ენა
* მეტაპროგრამირება
* ფსევდოკოდი (ალგორითმის აღწერის ენა)

## სქოლიო
კატეგორია:პროგრამირების ენები
კატეგორია:პროგრამირება
კატეგორია:კომპიუტერი
კატეგორია:ინფორმატიკა