პროცედურული პროგრამირება არის პროგრამირება, რომელიც ასახავს კომპიუტერის ნეუმანის არქიტექტურის ფონს. ამ ენაზე დაწერილი ყველა პროგრამა არის ბრძანებების გარკვეული თანმიმდევრობა, რომელიც ადგენს გარკვეულ ალგორითმს პრობლემების კონკრეტული ნაკრების გადასაჭრელად. ყველაზე მნიშვნელოვანი ბრძანება არის მინიჭების ოპერაცია, რომელიც შექმნილია კომპიუტერის მეხსიერების შიგთავსის დასადგენად და გამოსასწორებლად.
რა არის ამ ენის მთავარი იდეა?
პროცედურული პროგრამირების ენების მთავარი მახასიათებელია კომპიუტერის მეხსიერების გამოყენება ინფორმაციის შესანახად. პროგრამის ფუნქციონირება მცირდება სხვადასხვა ბრძანებების მუდმივ და ალტერნატიულ შესრულებამდე, რათა გარდაიქმნას მეხსიერების შინაარსი, შეცვალოს მისი საწყისი მდგომარეობა და მივიღოთ სასურველი შედეგი.
როგორ დაიწყო ეს ყველაფერი
პროცედურული პროგრამირება დაიწყო მაღალი დონის ენის შექმნით, სახელად Fortran. იგი შეიქმნა ორმოცდაათიანი წლების დასაწყისში აშშ-ში IBM-ის მიერ. პირველი პუბლიკაციები მის შესახებ მხოლოდ 1954 წელს გამოჩნდა.პროცედურებზე ორიენტირებული პროგრამირების ენა Fortran შეიქმნა სამეცნიერო და ტექნიკური ამოცანების შესასრულებლად. ენის ძირითადი ობიექტებია რიცხვითი ცვლადები, რეალური და მთელი რიცხვები. ყველა გამონათქვამი აგებულია ოთხ მთავარ არითმეტიკულ გამოთვლებზე: სიძლიერე, თანაფარდობის ოპერაციები, ფრჩხილები, ლოგიკური მანიპულაციები და, NOT, OR.
ენის ძირითადი ოპერატორებია გამომავალი, შეყვანა, გადასვლა (პირობითი, უპირობო), გამოძახების ქვეპროგრამები, მარყუჟები, დავალება. ფორტრანის ენაზე პროცედურული პროგრამირება ყველაზე პოპულარული იყო მსოფლიოში ძალიან დიდი ხნის განმავლობაში. ენის არსებობის მანძილზე დაგროვდა სხვადასხვა ბიბლიოთეკებისა და პროგრამების უზარმაზარი მონაცემთა ბაზა, რომლებიც სპეციალურად Fortran-ში იყო დაწერილი. ახლა მუშაობა ჯერ კიდევ მიმდინარეობს Fortran-ის შემდეგი სტანდარტის დანერგვაზე. 2000 წელს შეიქმნა Fortran F2k-ის ვერსია, რომლის სტანდარტულ ვერსიას ჰქვია HPF. იგი შეიქმნა პარალელური სუპერკომპიუტერებისთვის. სხვათა შორის, PL-1 და BASIC ენები იყენებენ Fortran-ის ბევრ სტანდარტს.
კობოლის ენა
Cobol არის პროცედურული პროგრამირების ენა. ეს არის პროგრამირების ენა, რომელიც მიზნად ისახავს ინფორმაციის დამუშავების მრავალი პრობლემის გადაჭრას. იგი აქტიურად გამოიყენება სხვადასხვა მენეჯერული, სააღრიცხვო და ეკონომიკური პრობლემების გადასაჭრელად. პროცედურული პროგრამირება კობოლში შემუშავდა შეერთებულ შტატებში 1958-1960 წლებში. თავად პროგრამას, რომელიც შეიქმნა Cobol-ში, აქვს რამდენიმე ტიპის წინადადების ტიპები ინგლისურად, რომლებიც გარეგნულად ყველაზე ჩვეულებრივ ტექსტს წააგავს. საქმე იმაშია, რომ ჯგუფითანმიმდევრულად დაწერილი ოპერატორები გაერთიანებულია მთელ წინადადებებად, თავად წინადადებები გაერთიანებულია აბზაცებად და აბზაცები გაერთიანებულია სექციებად. პროგრამისტი თავად ანიჭებს სახელებს ან ეტიკეტებს აბზაცებსა და დანიშნულ განყოფილებებს, რათა გაადვილდეს კოდის კონკრეტულ მონაკვეთზე მითითება. საბჭოთა კავშირში პროგრამის რუსული ვერსია შემუშავდა და წარმატებით იქნა გამოყენებული პრაქტიკაში.
პროცედურებზე ორიენტირებული პროგრამირება Cobol ენაზე რეალიზებულია მძლავრი სამუშაო ხელსაწყოების წყალობით, რომლებსაც შეუძლიათ მონაცემთა უზარმაზარი ნაკადების დამუშავება, რომლებიც ინახება სხვადასხვა გარე დისკებზე. ამ ენაზე დაწერილი ბევრი აპლიკაციაა, რომლებიც ახლაც აქტიურად გამოიყენება.
საინტერესო ფაქტი: ყველაზე მაღალანაზღაურებადი პროგრამისტები აშშ-ში წერენ პროგრამებს Cobol-ში.
ალგოლის ენა
ეს პროცედურული პროგრამირების ენა შეიქმნა სპეციალისტთა მთელი ჯგუფის მიერ 1960 წელს. ეს იყო საერთაშორისო დონეზე თანამშრომლობის დაწყების შედეგი. ალგოლი შეიქმნა ალგორითმების შესანარჩუნებლად, რომლებიც აგებული იყო გარკვეული პროცედურების თანმიმდევრობის სახით, რომლებიც გამოიყენებოდა ამოცანების გადასაჭრელად. თავდაპირველად, ენა გარკვეულწილად ორაზროვნად აღიქმებოდა, მაგრამ იგი აღიარებული იქნა საერთაშორისო დონეზე, მან უდიდესი როლი ითამაშა პროგრამირების ძირითადი კონცეფციების შემუშავებაში და პროგრამისტების ახალი თაობის სწავლებაში. პროცედურული პროგრამირება ალგოლის ენაზე იყო პირველი, ვინც შემოიტანა ისეთი ცნებები, როგორიცაა "პროგრამის ბლოკის სტრუქტურა", "დინამიური მეხსიერების განაწილება".
ენის კიდევ ერთი თვისებაა -ეს არის ბლოკში ადგილობრივი ნიშნების შეყვანის შესაძლებლობა, რომლებიც არ ვრცელდება პროგრამის დანარჩენ კოდზე. დიახ, Algol-60, მიუხედავად მისი საერთაშორისო წარმოშობისა, არ იყო ისეთი პოპულარული, როგორც Fortran.
ყველა უცხოურ კომპიუტერს არ ჰყავდა თარჯიმანი Algol-60-დან, ამიტომ ამ პროცედურულ პროგრამირებამ განიცადა ცვლილებები და გაუმჯობესებული Algol-68 ენა გამოჩნდა.
Algol-68
ეს უკვე იყო მრავალმხრივი და მრავალფუნქციური მოწინავე პროგრამირების ენა. მისი მთავარი მახასიათებელი ის იყო, რომ ერთი და იგივე პროგრამით შესაძლებელი იყო ენის სხვადასხვა ვერსიიდან თარგმნა ყოველგვარი ხარჯის გარეშე ამ ენის ადაპტირება პროგრამისტების სხვადასხვა კატეგორიისთვის, რომლებსაც შესაძლოა ჰქონოდათ ენის დომენის სპეციფიკური დიალექტები.
თუ ვიმსჯელებთ ამ ენის შესაძლებლობებზე, Algol-68 ახლაც უსწრებს ბევრ პროგრამირების ენას თავისი შესაძლებლობებით, თუმცა იმის გამო, რომ არ არსებობს ეფექტური კომპიუტერები ამ პროცედურული პროგრამირების ენისთვის., ჯერ ვერ მოხერხდა მაღალი ხარისხის და სწრაფი შემდგენელის შექმნა.
როგორ გაჩნდა ცნობილი BASIC?
პროცედურული პროგრამირების ენები ასევე მოიცავს მსოფლიოში ცნობილ BASIC-ს. სამოციანი წლების შუა ხანებში, დარტმუთის კოლეჯის თანამშრომლებმა, სახელად თომას კურციმა და ჯონ კემენიმ, შეიმუშავეს უნიკალური პროგრამირების ენა, რომელმაც ყველაფერი თავდაყირა დააყენა მსოფლიოში. იგი შედგებოდა უმარტივესი ინგლისური სიტყვებისგან და ახალი ენა აღიარებულ იქნა როგორც უნივერსალური კოდი დამწყებთათვის, ან სხვა სიტყვებით რომ ვთქვათ BASIC. Დაბადების წელიეს ენა ითვლება 1964 წელს. BASIC ფართოდ გავრცელდა კომპიუტერზე ინტერაქტიული დიალოგის რეჟიმში. რატომ გახდა BASIC ასეთი პოპულარული? ყოველივე იმის გამო, რომ მისი დაუფლება მაქსიმალურად მარტივი იყო, გარდა ამისა, ენა დაეხმარა მრავალი განსხვავებული სამეცნიერო, ეკონომიკური, ტექნიკური, სათამაშო და თუნდაც ყოველდღიური ამოცანის ამოხსნას. BASIC-ს ჰქონდა სხვადასხვა ნაგულისხმევი წესები, რაც ახლა პროგრამირების უგემოვნობის ნიშნად ითვლება. ამის შემდეგ მსოფლიოში ამ ენის უამრავი ვერსია გაჩნდა, რომლებიც ხშირად შეუთავსებელია, თუმცა ერთი ვერსიის გაგებით, მეორეს ადვილად აითვისებ. თავდაპირველ ვერსიას მხოლოდ თარჯიმანი ჰქონდა, მაგრამ ახლა არის კომპილერიც.
სამოციანი წლების დასაწყისში, ყველა მაშინდელი ენა ორიენტირებული იყო სხვადასხვა პრობლემის გადაჭრაზე, მაგრამ ისინი ასევე მიბმული იყო კომპიუტერის სპეციფიკურ არქიტექტურასთან. ეს ითვლებოდა მინუსად, ამიტომ გადაწყდა უნივერსალური პროგრამირების ენის შემუშავება.
PL/1
ეს არის პირველი მრავალფუნქციური უნივერსალური ენა, რომელიც შეიქმნა აშშ-ში IBM-ის მიერ. შექმნის წლები 1963-1966 წლები. ითვლება, რომ ეს არის ერთ-ერთი ყველაზე გავრცელებული ენა, იგი ადაპტირებულია კომპიუტერული ტექნოლოგიების სფეროში მრავალი პრობლემის გადასაჭრელად: დაგეგმვა, სხვადასხვა გამოთვლითი პროცესის შესწავლა, ლოგიკური პრობლემების მოდელირება და გადაჭრა, ლოგიკური სქემების შესწავლა, განვითარება. მათემატიკური პროგრამული უზრუნველყოფის სისტემები.
როდესაც PL/1 შეიქმნა, პრაქტიკაში გამოიყენებოდა სხვადასხვა კონცეფციები და ხელსაწყოები Algol-60, Fortran, Cobol-დან. PL/1 ითვლება ყველაზე მოქნილ და უმდიდრეს ენად, ეს საშუალებას იძლევაშექმენით ჩანართები, შეასწორეთ მზა პროგრამის ტექსტი გამართვის დროსაც კი. ენა ფართოდ არის გავრცელებული და მისგან მთარგმნელები გამოიყენება მრავალი სახის კომპიუტერში. IBM ახლაც აგრძელებს ამ ენის მხარდაჭერას.
პასკალი
პასკალი არის ძალიან პოპულარული პროცედურული ენა, რომელიც განსაკუთრებით გამოიყენება პერსონალური კომპიუტერებისთვის. ეს პროცედურული პროგრამირების ენა შეიქმნა როგორც საგანმანათლებლო ენა, მისი შექმნის წლებია 1968-1971 წლები. შემუშავებულია ნიკლაუს ვირტის მიერ ციურიხის ETH-ში. ამ პროგრამირების ენას ეწოდა დიდი ფრანგი მათემატიკოსისა და ფილოსოფოსის ბლეზ პასკალის სახელი. ვირტის მთავარი ამოცანა იყო შეექმნა ენა, რომელიც დაფუძნებული იქნებოდა უმარტივეს სინტაქსზე, მცირე რაოდენობის ძირითად სტრუქტურებზე, რომლებიც გარდაიქმნება მანქანის კოდში ჩვეულებრივი შემდგენელის გამოყენებით. აღსანიშნავია, რომ მან წარმატებას მიაღწია.
პასკალის პროგრამირების პროცედურული პარადიგმა ემყარება შემდეგ პრინციპებს:
- სტრუქტურირებული პროგრამირება. ამ შემთხვევაში გამოიყენება ქვეპროგრამები, მონაცემთა დამოუკიდებელი სტრუქტურები. პროგრამისტი ახერხებს შექმნას ადვილად წასაკითხი კოდი, გასაგები პროგრამის სტრუქტურა, ამარტივებს ტესტირებას და გამართვას.
- პროგრამირება აგებულია ზემოდან ქვემოდან. ამოცანა იყოფა მარტივ გადასაჭრელ ამოცანებად და აგებული ქვეამოცნებების საფუძველზე უკვე შენდება ზოგადი ამოცანის საბოლოო ამოხსნა.
C ენა
პროცედურული პროგრამირება C შემუშავებული Bell Labs-ის მიერ UNIX ოპერაციული სისტემის დასანერგად, რომელიც თავდაპირველად არ განიხილებოდამასა. დეველოპერებს ჰქონდათ გეგმები უბრალოდ შეეცვალათ Assembler, მაგრამ გაჩნდა მხოლოდ ცალკე C ენა. ის უნიკალურია იმით, რომ აქვს მაღალი დონის პროგრამირების ენების შესაძლებლობები და ამავდროულად აქვს ფუნქციონალურ ურთიერთობებზე წვდომის საშუალება. C ენას არ აქვს პროცედურის კონცეფცია, სინტაქსი საკმაოდ მარტივია, არ არის მონაცემთა მკაცრი აკრეფა, შედის რამდენიმე მოქმედების ერთდროულად გამოხატვის შესაძლებლობა. ამ ენამ მაშინვე მიიპყრო პროგრამისტების ყურადღება და მისცა მათ დამატებითი შესაძლებლობები საინტერესო პროგრამების შესაქმნელად. დღეისათვის C ენა საკმაოდ პოპულარულია, მას ფართოდ იყენებენ პროგრამირების პროფესიონალები. ახლა ის დანერგილია მრავალ კომპიუტერულ პლატფორმაზე.
რა არის განსაკუთრებული პროცედურული ენების შესახებ?
არის მხოლოდ რამდენიმე მათგანი, ამიტომ თითოეულზე ღირს საუბარი. ეს არის:
- მოდული. პროგრამის ნაწილი, რომელიც ინახება ცალკე ფაილში. მოდული ახორციელებს ვარიანტების ერთობლიობას, რომლებიც დაკავშირებულია გარკვეულ ცვლადებთან, მუდმივებთან ან ობიექტებთან.
- ფუნქცია. ეს არის კოდის სრული, დამოუკიდებელი ნაწილი, რომელიც წყვეტს კონკრეტულ პრობლემას.
- მონაცემთა ტიპი. ეს კონცეფცია საუბრობს ინფორმაციის გარკვეულ მასივზე, რომელიც განსაზღვრულია ერთი ტიპისთვის.
განსხვავებები პროცედურულ და ობიექტზე ორიენტირებულ პროგრამირებას შორის
ბევრმა პროგრამისტმა იცის, რომ პროცედურული და ობიექტზე ორიენტირებული პროგრამირების ენები პრაქტიკაში გამოიყენება პროგრამული უზრუნველყოფის ან ვებ აპლიკაციების შექმნისას. Რა არის განსხვავება? ყველაფერი მარტივია, პროცედურული და ობიექტური-ორიენტირებული პროგრამირება პრაქტიკაში ყველგან გამოიყენება, მაგრამ არის რამდენიმე გამორჩეული წერტილი. მუშაობის დროს, პროგრამისტი, თავის თავს უყენებს კონკრეტულ დავალებას, ანაწილებს მას წვრილად, ირჩევს გარკვეულ ენობრივ კონსტრუქტებს განსახორციელებლად (მარყუჟები, ფუნქციები, განშტოებები, სტრუქტურული ოპერატორები). ეს ნიშნავს, რომ სპეციალისტი ხელმძღვანელობს პროცედურული პროგრამირებით.
OOP მოიცავს "ობიექტის" ცნებას, წინააღმდეგ შემთხვევაში მათ ასევე უწოდებენ კლასის ინსტანციებს, რადგან ბევრი მემკვიდრეობით მიიღება კლასიდან. მემკვიდრეობა OOP-ის კიდევ ერთი განმასხვავებელი პრინციპია.
პროცედურული და ფუნქციური ენები
პროცედურული და ფუნქციონალური პროგრამირება იგივეა თუ არა? ფუნქციური პროგრამირება ორიენტირებულია დისკრეტულ მათემატიკაში ამოცანების გადაჭრაზე, ხოლო პროცედურული პროგრამირება ოდნავ უფრო ფართო ცნებაა და მოიცავს უამრავ პროგრამირების ენას გარკვეული ტიპის პრობლემების გადასაჭრელად.
რა აირჩიო შენთვის?
ბევრი პროცედურული პროგრამირების ენა მოძველებულია. დიახ, ზოგიერთი მათგანი ჯერ კიდევ იხვეწება, მაგრამ მაინც ღირს მათი მხოლოდ ნაწილის ყურადღების მიქცევა. მაგალითად, C ენა. დღეს მსოფლიოში გავრცელებულია, ბევრი თანამედროვე პლატფორმა აგებულია სპეციალურად C ენაზე, ასე რომ, თუ გსურთ განვითარდეთ პროგრამირების სფეროში, მაშინ უკეთ უნდა გაეცნოთ C ენას. თუმცა თქვენ შეგიძლიათ აირჩიოთ რაიმე სხვა, რომელიც არ არის დაკავშირებული პროცედურულ პროგრამირების ენებთან.