კომპიუტერული პროგრამირების ტერმინოლოგიაში პროგრამირების ენები ხშირად იყოფა "მაღალი დონის" და "დაბალი დონის" ენებად. ამ ორს შორის განსხვავება არის ტექნიკის ურთიერთქმედების საკითხი. მარტივად რომ ვთქვათ, დაბალი დონის ენები კომპიუტერულ სისტემაზე „დაბლა“ დგას, უფრო ახლოსაა რეალურ აპარატურულ ურთიერთქმედებებთან. მაღალი დონის ენები ამოღებულია ტექნიკისგან. ამ აბსტრაქციის შედეგმა შეიძლება გამოიწვიოს უფრო სწრაფი, უფრო წასაკითხი კოდი, მაგრამ დაბალი სიჩქარის სარგებელი და ნაკლები წვდომა სისტემის რესურსებზე.
აბსტრაქცია
რაც განასხვავებს მაღალი დონის ენებს დაბალი დონის ენებისგან არის ენის აბსტრაქციის დონე სისტემური რესურსებიდან. ყოველდღიურად სისტემის რესურსებთან ურთიერთობა შეიძლება ნელი და მტკივნეული გახდეს. შეიქმნა მაღალი დონის ენები ამ საკითხის გადასაჭრელად პროგრამისტისთვის სისტემის დამუშავებით, განთავისუფლებით მან დაასრულოს უფრო მოწინავე დავალება სისტემის მცირე დეტალების იგნორირებაში, როგორიცაა მეხსიერება მენეჯმენტი. თუმცა, ამას აქვს ნაკლი იმაში, რომ პროგრამისტი შეიძლება აღმოჩნდეს ისეთ სიტუაციაში, როდესაც სისტემაში წვდომაა საჭირო და მაღალი დონის ენა არ იძლევა ამ წვდომას. მაღალი დონის ენა, როგორც წესი, არ არის შესაფერისი სისტემური პროგრამირებისთვის.
დღის ვიდეო
სიჩქარე
მაღალი დონის ენები, როგორც წესი, არის "ინტერპრეტაციული" ენები და არა "შედგენილი" დაბალი დონის ენები. "ინტერპრეტირებული" უბრალოდ ნიშნავს, რომ ენა იყენებს თარჯიმანს, რომელიც ახორციელებს წყაროს კოდს თითო სტრიქონში, ვიდრე ბინარული ფაილის შედგენას. თუმცა, თარჯიმნები ხშირად არის პროგრამები დაწერილი კომპილირებული ენებზე. ამის გამო, ინტერპრეტირებული ენა - Python, როგორც მაგალითი - მუშაობს მხოლოდ Python თარჯიმნის თავზე, რომელიც დაწერილია C-ზე. ეს ზრდის ინტერპრეტირებული პროგრამების მეხსიერებას და დროს და ისინი ხშირად უფრო ნელა მუშაობენ.
სისტემის თავისებურებები
მაღალი დონის კოდის აშკარა სიძლიერე მისი პორტაბელურობაა. მაღალი დონის კოდის გაშვება შესაძლებელია ნებისმიერ სისტემაზე, რომელსაც აქვს დაინსტალირებული შესაბამისი თარჯიმანი. თუმცა, როდესაც პროგრამა კომპილირებულია კომპიუტერისთვის, იგი ითვალისწინებს ამ სისტემის მთელ გარემოს მის კომპილაციაში. ინტერპრეტირებული ენა უკვე ამოღებულია სისტემიდან იმ დონემდე, რომ ინტერპრეტაციულმა პროგრამამ არაფერი იცის სისტემის შესახებ, გარდა იმისა, თუ რისი მიწოდება შეუძლია თარჯიმანს.
პროგრამირების ლიმიტები
მაღალი დონის ენების ბუნებიდან გამომდინარე, არის გარკვეული ამოცანები, რომლებისთვისაც ისინი არ არის შესაფერისი, ან, სულ მცირე, ჯერ არ არის შესაფერისი. სისტემურ რესურსებზე წვდომის გარეშე, ძნელია სწრაფი, OS-ის მშობლიური აპლიკაციების შემუშავება. გარდა ამისა, ოპერაციული სისტემის შემუშავებაც კი პრობლემატური ხდება. რაც უფრო მეტი პროგრამული უზრუნველყოფა მოძრაობს ინტერნეტში, ეს ფაქტი ნაკლებად საგანგაშო ხდება, მაგრამ კომერციული და სამრეწველო გამოყენებისთვის, ინტერპრეტირებული ენები შეიძლება მუშაობდეს ძალიან ნელა ან ძალიან შორს ტექნიკის ურთიერთქმედებისგან.