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

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

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

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

როგორც ზოგადი დანიშნულების, ასევე დომენის სპეციფიკურ პროგრამირების ენებს აქვთ ერთი საერთო - ისინი

ფორმალური ენები.რა არის ფორმალური ენა? ყველაზე ზოგადი ფორმით, ამ კითხვაზე პასუხის გაცემა შესაძლებელია შემდეგნაირად: ენა -ეს არის ბევრი წინადადება ოფიციალური ენა -ეს არის ენა, რომლის წინადადებები აგებულია გარკვეული წესების მიხედვით.

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

ორივე ბუნებრივი ენები და პროგრამირების ენები უსასრულო ნაკრებია. შეუზღუდავი რაოდენობის პროგრამები შეიძლება დაიწეროს პროგრამირების ენაზე.

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

Სინტაქსიენა განსაზღვრავს სწორი წინადადებებისა და სიტყვების სტრუქტურას, ხოლო პროგრამირების ენებში, სხვა საკითხებთან ერთად, პროგრამის ტექსტების დასაშვებ სტრუქტურებს.

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

BNF შეიმუშავა Backus-მა და პირველად გამოიყენა ALGOL-60 ენის მკაცრი აღწერისთვის 1963 წელს. ეს ფორმა გამოიყენება როგორც ენის მთლიანი სტრუქტურის აღსაწერად, ასევე ცალკეული ენის კონსტრუქციების (ენის ქვეჯგუფების) აღსაწერად. და მისი ელემენტები - ოპერატორები, იდენტიფიკატორები, გამონათქვამები, რიცხვები და ა.შ.

ქვემოთ მოცემულია BNF მაგალითები, რომლებიც განსაზღვრავს სინტაქსს ათობითი მთელი რიცხვებისთვის და სინტაქსი არითმეტიკული გამონათქვამებისთვის, რომლებიც შეიცავს "+" და "*" ოპერატორებს.

BNF ათობითი მთელი რიცხვები:

= 0|1|...|9

არითმეტიკული გამონათქვამების BNF:

:= () ა

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

BNF-ის მარცხენა მხარეს, კუთხის ფრჩხილებში იწერება განსაზღვრული პარამეტრების სახელები. სინტაქსური კატეგორიები(ცნებები, ერთეულები), სიმბოლო „:=“ ნიშნავს „არის“, „ეს“, „განისაზღვრება როგორც“, სიმბოლო „|“ ნიშნავს "ან".

BNF-ის მარჯვენა ნაწილი განსაზღვრავს ამ კატეგორიების კონკრეტული მნიშვნელობების ასაგებად შესაძლო ვარიანტებს, ამ შემთხვევაში, ათობითი რიცხვების მნიშვნელობებს და სპეციფიკურ არითმეტიკულ გამოსახულებებს. BNF ასევე შეიცავს სიმბოლოების ანბანს, საიდანაც შედგენილია ეს მნიშვნელობები. ათობითი მთელი რიცხვებისთვის ანბანი არის სიმრავლე (+,-, 0, 1,..., 9), ხოლო გამონათქვამებისთვის ეს არის სიმრავლე. (ა, *, +, (,)}.

სინტაქსური კატეგორიის მნიშვნელობების აგების პროცესი შედგება გაყვანაეს მნიშვნელობები BNF წესების მარჯვენა ნაწილების თანმიმდევრული ჩანაცვლებით მარცხნივ. ქვემოთ მოცემულია რიცხვის "-320" და გამოთქმის წარმოებულები "a+a*a"შესაბამისი BNF-ის გამოყენებით:

BNF ძალიან ჰგავს ფორმალური გრამატიკაგამოიყენება ფორმალური ენების თეორიაში (ზოგიერთი ავტორი მათ ამოიცნობს).

სწორედ BNF-ის გამოჩენამ ხელი შეუწყო ფორმალური ენების თეორიის სწრაფ განვითარებას და მის გამოყენებას პროგრამირების ენების შემუშავებისა და თარჯიმნების დიზაინის გამოყენებითი პრობლემებისთვის.

თუ განხილულ BNF-ში წესების მარცხენა მხრიდან თითოეული სინტაქსური კატეგორია აღინიშნება A, Bდა FROMშესაბამისად და სიმბოლოს ნაცვლად:= გამოიყენეთ -მაშინ მიიღება შემდეგი ფორმები:

ათობითი მთელი რიცხვებისთვის:

A->B+B-B B^>CBC C->0 | 11... | 9

არითმეტიკული გამონათქვამებისთვის:

A^A+BB

B->B*SS

C^>(A)a

წესები ასე წერია ფორმალური გრამატიკა.სინტაქსური კატეგორიების აღმნიშვნელი სიმბოლოები, ამ შემთხვევაში, B, Cფორმალურ გრამატიკებში ე.წ არატერმინალური სიმბოლოებიდა ანბანის სიმბოლოები არიან ტერმინალი.

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

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

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

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

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

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

ანალოგიურად, პროგრამირების ენებში, სინტაქსურად კარგად ჩამოყალიბებული დავალების ოპერატორი

სემანტიკურად არასწორი იქნება, თუ a არის 10.5 (a = 10.5) და b არის მცდარი (b = მცდარი).

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

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

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

რაც შეეხება პროგრამირების ენების შემდგომი განვითარების პერსპექტივების პროგნოზებს, არსებობს საკმაოდ ფართო აზრთა დიაპაზონი, დიამეტრალურად საპირისპირომდე. ზოგიერთი ავტორი თვლის, რომ თითოეულ ენას აქვს თავისი სემანტიკური მახასიათებლები, რაც მას ხელსაყრელ და მიმზიდველს ხდის პროგრამირების კონკრეტული სფეროსთვის (მაგალითად, Prolog და Lisp ორიენტირებულია ხელოვნური ინტელექტის პრობლემების გადაჭრაზე; Fortran არის ყველაზე ეფექტური. გამოთვლითი ამოცანების გადაჭრა;კობოლი - გამოიყენება ეკონომიკური გამოთვლებისთვის და ა.შ.). ამიტომ, თქვენ უნდა შექმნათ ყველა ახალი ენა, რომელსაც აქვს სპეციფიკური ფუნქციები ან პერიოდულად განაახლოთ არსებული ვერსიები და არ შეეცადოთ შექმნათ უნივერსალური ენა. ამ თვალსაზრისის მხარდასაჭერად მოყვანილია არგუმენტი, რომ უნივერსალური ენის შექმნის ყველა ამბიციური პროექტი ჩავარდა (საკმარისია გავიხსენოთ აუხდენელი იმედები, რომლებიც დაკავშირებულია ADAiPL-1 ენების განვითარებასთან).

ავტორთა მეორე ნაწილი თვლის, რომ პირველი პროგრამირების ენების - Fortran, Algol და ა.შ. სტანდარტების გამოქვეყნების შემდეგ - 60-იან წლებში. მე-20 საუკუნეში მოხდა ენების „სტაბილიზაცია“ იმ გაგებით, რომ სხვადასხვა ენაში მსგავსი დანიშნულების მქონე ენობრივ კონსტრუქციებს პრაქტიკულად ერთი და იგივე სემანტიკური საფუძველი აქვს, მიუხედავად ლექსიკისა და სინტაქსის განსხვავებებისა. ამიტომ, როგორც კი შესაძლებელი გახდება ამ საერთო სემანტიკური ბაზის ფორმალურად განსაზღვრა, შესაძლებელი გახდება უნივერსალური ენის შექმნა, რომელიც აღარ იქნება პროგრამირების ენა ტრადიციული გაგებით, არამედ სემანტიკური სტრუქტურების ბლანკები. პროგრამა წარმოდგენილი იქნება როგორც ამ კონსტრუქციების ნაკრები და ტექსტის რედაქტორი ადგილს დაუთმობს სტრუქტურის რედაქტორს. როგორც ამ მიდგომის ნაწილობრივი განხორციელების მაგალითი, მოცემულია ვიზუალური პროგრამირების გარემო, როგორიცაა Delphi, C ++ Builder და ა.შ.

Დასასრული

დაწყება

გაიმეორეთ

დაწყება

ფსევდო კოდები

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

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

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

ალგორითმი ევკლიდეს ალგორითმი;

ნახვამდისპირველი რიცხვი არ არის მეორეს ტოლი

თურიცხვები ტოლია

მაშინგაჩერება ყველა;

წინააღმდეგ შემთხვევაშიორი რიცხვიდან უფრო დიდის განსაზღვრა;

შეცვალეთ დიდი რიცხვი დიდ და პატარა რიცხვებს შორის სხვაობით

დასასრული;

მიიღეთ პირველი ნომერი, როგორც პასუხი

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

ზემოთ აღინიშნა, რომ ალგორითმის სიტყვიერი ფორმით, დიაგრამის ან ფსევდოკოდის დაწერისას, ნებადართულია გარკვეული თვითნებობა ბრძანებების ჩვენებისას. ამასთან, ასეთი ჩანაწერი იმდენად ზუსტია, რომ ადამიანს საშუალებას აძლევს გაიგოს საკითხის არსი და შეასრულოს ალგორითმი.

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


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

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

პროგრამირება არის მთელი მეცნიერება, რომელიც საშუალებას გაძლევთ შექმნათ კომპიუტერული პროგრამები. იგი მოიცავს უამრავ სხვადასხვა ოპერაციებსა და ალგორითმს, რომლებიც ქმნიან ერთიან პროგრამირების ენას. მაშ, რა არის ეს და რა არის პროგრამირების ენები? სტატიაში მოცემულია პასუხები, ასევე პროგრამირების ენების მიმოხილვის სია.

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

პირველი მანქანა ენა გამოიგონა 1941 წელს კონრად ზუსემ, რომელიც არის ანალიტიკური ძრავის გამომგონებელი. ცოტა მოგვიანებით, 1943 წელს, ჰოვარდ აიკენმა შექმნა Mark-1 მანქანა, რომელსაც შეუძლია წაიკითხოს ინსტრუქციები მანქანის კოდის დონეზე.

1950-იან წლებში აქტიური მოთხოვნა იყო პროგრამული უზრუნველყოფის შემუშავებაზე და მანქანური ენა ვერ უძლებდა დიდი რაოდენობით კოდებს, ამიტომ შეიქმნა კომპიუტერებთან კომუნიკაციის ახალი გზა. "ასემბლერი" არის პირველი მნემონური ენა, რომელმაც ჩაანაცვლა მანქანის ინსტრუქციები. წლების განმავლობაში, პროგრამირების ენების სია მხოლოდ იზრდება, რადგან კომპიუტერული ტექნოლოგიების სფერო სულ უფრო ფართოვდება.

პროგრამირების ენების კლასიფიკაცია

ამ დროისთვის არსებობს 300-ზე მეტი პროგრამირების ენა. თითოეულ მათგანს აქვს საკუთარი მახასიათებლები და შესაფერისია ერთი კონკრეტული ამოცანისთვის. ყველა პროგრამირების ენა შეიძლება დაიყოს რამდენიმე ჯგუფად:

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

პროგრამირება დამწყებთათვის

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

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

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

დამწყებთათვის საშუალება აქვთ დააჩქარონ პროგრამირებისა და მისი საფუძვლების შესწავლა სპეციალური ხელსაწყოების წყალობით. მთავარი ასისტენტი არის Visual Basic-ის ინტეგრირებული განვითარების გარემო პროგრამებისა და აპლიკაციებისთვის („Visual Basic“ ასევე არის პროგრამირების ენა, რომელმაც მემკვიდრეობით მიიღო 1970-იანი წლების Basic ენის სტილი).

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

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

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

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

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

პროგრამირების ენების შემდეგი სია: C ("C"), C# ("C-sharp"), "Fortran", "Pascal", Java ("Java") - არის ყველაზე ხშირად გამოყენებული მაღალი დონის სინტაქსებს შორის. მას აქვს შემდეგი თვისებები: ეს ენები მუშაობენ რთულ სტრუქტურებთან, მხარს უჭერენ სტრიქონების მონაცემთა ტიპებს და ფაილების I/O ოპერაციებს, ასევე აქვთ უპირატესობა, რომ ბევრად უფრო ადვილია მუშაობა წაკითხვისა და გასაგები სინტაქსის გამო.

ყველაზე ხშირად გამოყენებული პროგრამირების ენები

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

  • OOP ენები: Java, C++, Python, PHP, VisualBasic და JavaScript;
  • სტრუქტურული ენების ჯგუფი: Basic, Fortran და Pascal;
  • მრავალ პარადიგმა: C#, Delphi, Curry და Scala.

პროგრამებისა და აპლიკაციების სფერო

ენის არჩევანი, რომელზეც ესა თუ ის პროგრამაა დაწერილი, დიდწილად დამოკიდებულია მისი გამოყენების არეალზე. ასე რომ, მაგალითად, თავად კომპიუტერის აპარატურასთან მუშაობისთვის (დრაივერების წერა და დამხმარე პროგრამები), საუკეთესო ვარიანტი იქნება C ("C") ან C ++, რომლებიც შედის პროგრამირების მთავარ ენებში (იხილეთ სია. ზემოთ). ხოლო მობილური აპლიკაციების, მათ შორის თამაშების განვითარებისთვის, უნდა აირჩიოთ Java ან C # ("C-sharp").

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

რკინიგზის ენის შესახებ მატარებელი გაუჩერებლად გაივლის კრასნიე ზორის პლატფორმას. გაითვალისწინეთ, რომ მძღოლმა გამოიყენა არსებითი სახელი „გაჩერება“ და არა ზმნა „გაჩერება“. გაჩერება ძალიან მნიშვნელოვანი კონცეფციაა რკინიგზის მუშაკებისთვის. მატარებელი შეიძლება "გაჩერდეს", მაგრამ არა "გაჩერდეს". ტურჩინი [Turchin 2000] მსგავსი მაგალითის მოყვანით მიუთითებს ვიწრო პროფესიული მიზნებისთვის გამოყენებული ენის ფორმალიზებაზე.

ფორმალიზებული ენა შეიძლება განისაზღვროს შემდეგნაირად [Turchin 2000]. განვიხილოთ რეალობის ორსართულიანი ენობრივი მოდელი (სურ. 4. 4). სიტუაცია si დაშიფრულია ენის ობიექტით Li. ობიექტი L1 არის si-ს სახელი. გარკვეული პერიოდის შემდეგ, სიტუაცია S1 შეიცვალა სიტუაციით S2. რაიმე ენობრივი აქტივობის განხორციელებისას L1-ს ვცვლით სხვა ობიექტად - L2. თუ ჩვენი მოდელი სწორია, მაშინ L2 არის S2-ის სახელი. შედეგად, S2 რეალური სიტუაციის გაცნობის გარეშე, შეგვიძლია ამის შესახებ წარმოდგენა მივიღოთ ენის ობიექტის L2-ის დეკოდირებით. L1->L2 ტრანსფორმაციის შესრულება განსაზღვრავს იქნება თუ არა ენის ფორმალიზება.

    ფორმალიზებული ენისთვის ტრანსფორმაცია L1->L2 განისაზღვრება მხოლოდ მასში მონაწილე Li ენობრივი ობიექტებით და არ არის დამოკიდებული ენის სემანტიკაში მათ შესაბამის ენობრივ წარმოდგენებზე.

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

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

არაფორმალურის ფორმალიზაციის შესახებ არაფორმალიზებულის ფორმალიზაცია არაფორმალიზებული პროცესია. მიუხედავად იმისა, რომ ლოგიკოსები და სამხედროები ცდილობენ ამის წინააღმდეგ ბრძოლას.

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

მოდელირების ენები

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

    მოდელის ელემენტები - მოდელირების ფუნდამენტური ცნებები და მათი სემანტიკა;

    აღნიშვნა - მოდელირების ელემენტების ვიზუალური წარმოდგენა;

    გამოყენების სახელმძღვანელო - ელემენტების გამოყენების წესები დომენის მოდელების კონსტრუქციის ჩარჩოში.

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

    პირველი FRAMEWORK ინტეგრირებული გარემოს შემქმნელის თქმით, ინტეგრირებული გარემო ისეთი აპლიკაციაა, რომ მომხმარებელმა, სამუშაო დღის დასაწყისში გაშვებით, პოულობს მასში მუშაობისთვის საჭირო ყველა რესურსს და, შესაბამისად, არ გამოდის ინტეგრირებული გარემოდან. სამუშაო დღის ბოლომდე. რა თქმა უნდა, ეს განმარტება არ არის ძალიან სწორი და გარკვეულწილად იდეალიზებს სიტუაციას, მაგრამ მისი ზოგადი მნიშვნელობა საკმარისად ნათელია. ინტეგრირებული გარემოს მთავარი მახასიათებელია ინტერაქტიულობის მაღალი ხარისხი. იგი მიიღწევა სხვადასხვა პროგრამული რესურსების ერთ მთლიანობაში ინტეგრირებით, აქედან მოდის სახელი. ამრიგად, პროგრამირების ენის შემდგენელის ინტეგრირებული გარემო (პროგრამა, რომელიც ქმნის შესრულებად პროგრამას ამ პროგრამირების ენის ტექსტიდან) ჩვეულებრივ შეიცავს ტექსტურ რედაქტორს და თავად კომპილატორს კომპილაციის შეცდომების დიაგნოსტიკური სისტემით. გარდა ამისა, მას, როგორც წესი, აქვს ასევე გამართავი - ამ ენის თარჯიმანი, რომელიც ასრულებს პროგრამას სტრიქონ-სტრიქონში და აქვს მრავალი სხვა სპეციალური ფუნქცია. ერთ-ერთი აქტიურად განვითარებადი სფერო, ვიზუალური დიზაინი, მთლიანად ეფუძნება ინტეგრირებული გარემოს შესაძლებლობების გამოყენებას. მომხმარებელი ინტერაქტიულად ირჩევს მისი პროგრამისთვის აუცილებელ პროგრამირების ენის ობიექტებს და ამყარებს კავშირებს მათ შორის. ისეთი ენების პოპულარობა, როგორიცაა Visual BASIC (Microsoft), ისევე როგორც Object PASCAL (Delphi და Kylix, Borland გარემო) შემთხვევითი არ არის. გამოუცდელმა პროგრამისტმაც კი, რომელმაც არ იცის პროგრამირების სხვა ენები, გარდა BASIC-ისა და არასოდეს დაპროგრამებულა Windows-ის ქვეშ, შეუძლია შექმნას აპლიკაციის პროგრამა, რომელიც მუშაობს Windows-ზე Visual BASIC-ის გამოყენებით ორ ან სამ დღეში. მაგრამ მაღალი კლასის პროგრამისტს, რომელსაც მანამდე არ დაუპროგრამებია Windows-ის ქვეშ, C ++-ის გამოყენებით, ხშირად უწევს კვირების ან თუნდაც თვეების დახარჯვა იმავე პროგრამის შესაქმნელად. მართალია, Visual BASIC-ს აქვს მრავალი მნიშვნელოვანი შეზღუდვა. ვიზუალური დიზაინის გარემოს დახმარებით თქვენ შეგიძლიათ შექმნათ ძალიან რთული პროგრამები კლავიატურაზე კოდის ერთი ხაზის აკრეფის გარეშე. თუმცა, ყველა პროგრამა, რომელიც დაფუძნებულია ტრადიციულ პროცედურულ პროგრამირების ენებზე, განიცდის იმავე ნაკლოვანებას. მათთვის შესრულებადი კოდი ერთია, პროგრამის მიერ დამუშავებული მონაცემები კი სულ სხვა. მართლაც, პროგრამის კოდი შეიცავს ფაილში EXE გაფართოებით და მონაცემები არის ან სპეციალურ მონაცემთა ფაილებში (ჩვეულებრივ ტექსტში ან ორობით ფორმაში კომპიუტერის შიდა წარმომადგენლობაში), ან შეყვანილია კლავიატურიდან ან სხვაგან. გარე მოწყობილობა. ახლა კი დავსვათ კითხვა: რა მოხდება, თუ მომხმარებელმა უნდა მისცეს შესრულებადი პროგრამის ინფორმაცია, რომელიც შეიძლება ჩაითვალოს პროგრამის ტექსტის „დამატებად“? მაგალითად, ჩვენ გვინდა, რომ ეკრანზე აშენდეს ფუნქციის გრაფიკი და ასეთ პროგრამაში ჩვენ მივაწოდოთ ყველა საჭირო სერვისის შესაძლებლობა. თუმცა, ფუნქციის ფორმულა თავად მომხმარებელმა უნდა დაადგინოს და წინასწარ არ არის ცნობილი, რა იქნება. აშკარაა, რომ ასეთი ამოცანების გადაჭრა შესაძლებელია მხოლოდ თარჯიმნის სისტემის დახმარებით. მაგრამ "ყველაფერში უნდა გადაიხადო". შემდგენელი თარგმნის პროგრამის ტექსტს შესრულებად კოდში, რომელსაც შეუძლია იმუშაოს შემდგენელი პროგრამის გარეშე. ინტერპრეტაციის ტიპის ენების საფუძველზე შექმნილი პროგრამები შეიძლება შესრულდეს მხოლოდ თარჯიმნის პროგრამის კონტროლის ქვეშ. ისინი ასევე უფრო ნელია ვიდრე შედგენილი, რადგან ინტერპრეტაციას დამატებითი დრო სჭირდება. თუმცა, ხშირ შემთხვევაში ეს არ არის მნიშვნელოვანი.

შექმნის თარიღი: 1963 გავლენა მოახდინა:პროფტი აკრეფა:დაუბეჭდავი დიალექტები:

    Applesoft BASIC

    Commodore BASIC

    Microsoft BASIC

დანერგვა და ვერსიები:

  • Applesoft BASIC თარჯიმანი Javascript-ში

    Atari Microsoft BASIC I/II

  • Commodore BASIC

    Galaxia BASIC

    Microsoft Visual Basic

  • Visual Basic აპლიკაციებისთვის

BASIC (BASIC - შემოკლება Beginner's All-purpose Symbolic Instruction Code - უნივერსალური კოდი სიმბოლური ინსტრუქციებისთვის დამწყებთათვის; ინგლისური ძირითადი - ძირითადი, ძირითადი) - მაღალი დონის პროგრამირების ენების ოჯახი.

BASIC ჩაფიქრებული იქნა 1963 წელს დარტმუთის კოლეჯის პროფესორების ჯონ კემენისა და თომას კურცის მიერ და მათი ხელმძღვანელობით განხორციელდა კოლეჯის სტუდენტების გუნდის მიერ. დროთა განმავლობაში, როდესაც სხვა დიალექტები გამოჩნდა, ეს "ორიგინალური" დიალექტი ცნობილი გახდა, როგორც Dartmouth BASIC.

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

ენის შემუშავებისას გამოყენებული იქნა შემდეგი რვა პრინციპი:

    იყოს მარტივი გამოსაყენებელი დამწყებთათვის;

    იყოს ზოგადი დანიშნულების პროგრამირების ენა;

    უზრუნველყოს გამოცდილი პროგრამისტებისთვის ხელმისაწვდომი ფუნქციების გაფართოების შესაძლებლობა;

    იყოს ინტერაქტიული;

    მიაწოდეთ მკაფიო შეცდომის შეტყობინებები;

    მცირე პროგრამებზე სწრაფად მუშაობა;

    არ საჭიროებს ტექნიკის მუშაობის გაგებას;

    იყოს შუამავალი მომხმარებელსა და ოპერაციულ სისტემას შორის.

ენა ნაწილობრივ დაფუძნებული იყო Fortran II-ზე და ნაწილობრივ Algol-60-ზე, დამატებებით, რათა ის შესაფერისი ყოფილიყო დროის გაზიარებისთვის, ტექსტის დამუშავებისთვის და მატრიცული არითმეტიკისთვის. BASIC თავდაპირველად განხორციელდა GE-265-ზე მრავალი ტერმინალის მხარდაჭერით. პოპულარული რწმენის საწინააღმდეგოდ, მისი დაარსების დროს ის იყო შედგენილი ენა. ენამ საერთო პოპულარობა მოიპოვა Altair 8800 მიკროკომპიუტერზე გამოჩენის გამო. ბევრი პროგრამირების ენა ძალიან შრომატევადი იყო მცირე მეხსიერებისთვის. ნელი მედიის მქონე მანქანებისთვის, როგორიცაა ქაღალდის ლენტი, აუდიო კასეტა და შესაფერისი ტექსტური რედაქტორი, პატარა ენა, როგორიცაა BASIC, ღვთის საჩუქარი იყო. 1975 წელს Microsoft-მა (მაშინ მხოლოდ ორი იყო - ბილ გეითსი და პოლ ალენი, მონტე დავიდოვის მონაწილეობით) გამოუშვა Altair BASIC. CP / M ოპერაციული სისტემისთვის შეიქმნა BASIC-80 დიალექტი, რომელიც განსაზღვრავდა ენის განვითარებას დიდი ხნის განმავლობაში. ამ პერიოდში შეიქმნა BASIC-ის რამდენიმე ახალი ვერსია. Microsoft-მა გაყიდა BASIC-ის რამდენიმე ვერსია MS-DOS/PC-DOS-ისთვის, მათ შორის BASICA, GWBASIC და Quick BASIC (QBASIC). Borland-მა გამოუშვა Turbo BASIC 1.0 1985 წელს (მისი მემკვიდრეები შემდგომში გაიყიდა სხვა კომპანიამ PowerBASIC სახელით). საშინაო კომპიუტერებზე გამოჩნდა სხვადასხვა BASIC გაფართოებები, რომლებიც ჩვეულებრივ მოიცავს გრაფიკასთან მუშაობის ინსტრუმენტებს, ხმას, DOS ბრძანებების შესრულებას, ასევე სტრუქტურირებული პროგრამირების ხელსაწყოებს. ზოგიერთმა სხვა ენამ გამოიყენა ცნობილი BASIC სინტაქსი, როგორც საფუძველი, რომელზედაც აშენდა სრულიად განსხვავებული სისტემა (იხილეთ, მაგალითად, GRASS). თუმცა, 80-იანი წლების ბოლოდან დაწყებული, ახალი კომპიუტერები ბევრად უფრო რთული გახდა და უზრუნველყოფდა ფუნქციებს (როგორიცაა მომხმარებლის გრაფიკული ინტერფეისი), რამაც BASIC აღარ გახადა ისეთი მოსახერხებელი პროგრამირებისთვის. BASIC-მა დაიწყო მიწის დაკარგვა, მიუხედავად იმისა, რომ მისი ვერსიების დიდი რაოდენობა მაინც გამოიყენებოდა და გაიყიდა. BASIC-მა მიიღო მეორე სიცოცხლე Microsoft-ის Visual Basic-ის მოსვლასთან ერთად. ის გახდა ერთ-ერთი ყველაზე გამოყენებული ენა Microsoft Windows პლატფორმაზე. მოგვიანებით შეიქმნა ვარიანტი სახელად WordBasic, რომელიც გამოიყენებოდა MS Word-ში Word 97-მდე. Visual Basic for Applications (VBA) ვარიანტი ჩაშენდა Excel 5.0-ში 1993 წელს, შემდეგ Access 95-ში 1995 წელს და შემდეგ ყველა სხვა ინსტრუმენტში. Office პაკეტში - 1997 წ. Internet Explorer 3.0 და ზემოთ, ისევე როგორც Microsoft Outlook მოიცავდა VBScript ენის თარჯიმანს. OpenOffice.org პაკეტის სრული ვერსია ასევე შეიცავს BASIC თარჯიმანს.

გამარჯობა, მსოფლიო!: მაგალითი QBasic 1.1, QuickBasic 4.50

PRINT " გამარჯობა , მსოფლიო !"

ფაქტორული: მაგალითი QBasic 1.1, QuickBasic 4.50

გამოიყენება ფაქტორიალის განმეორებითი განმარტება. 13-ის გაანგარიშებისას! არითმეტიკული გადადინება ხდება და აქ განსხვავებული განხორციელების ქცევა განსხვავდება: QBasic აცნობებს გადინებას, ხოლო QuickBasic უბრალოდ ბეჭდავს უარყოფით მნიშვნელობებს. გარდა ამისა, PRINT ბრძანება ნაგულისხმევად ბეჭდავს ერთ სივრცეს რიცხვის წინ და შემდეგ.

DIM f AS LONG f = 1 PRINT "0 !="; f FOR i = 1-დან 16-მდე:

f = f*i:

PRINTi; "!="; ვ

ფორმალიზებული ენა- ხელოვნური ნიშნების სისტემა, რომელიც შექმნილია გარკვეული თეორიის წარმოსაჩენად. ფორმალიზებული ენა განსხვავდება ადამიანური კომუნიკაციისა და აზროვნების ბუნებრივი (ეროვნული) ენებისგან, ხელოვნური ენებისგან, როგორიცაა ესპერანტო, მეცნიერების "ტექნიკური" ენებისგან, რომლებიც აერთიანებენ ბუნებრივის გარკვეული ნაწილის საშუალებებს. ენა შესაბამისი სამეცნიერო სიმბოლოებით (ქიმიის ენა, ჩვეულებრივი მათემატიკის ენა და ა.შ.), ალგორითმული ენა ზოგადი პროგრამირების ტიპი და ა.შ. უპირველეს ყოვლისა, იმით, რომ მისი ამოცანაა გარკვეული ლოგიკური შინაარსის დაფიქსირების (ფორმალიზაციის) საშუალებად, რაც საშუალებას იძლევა შემოვიტანოთ ლოგიკური შედეგისა და მტკიცებულების ცნების (ან მათი ანალოგების) კავშირი. ისტორიულად, პირველი ფორმალიზებული ენა იყო სილოგისტური არისტოტელე, განხორციელებული სტანდარტიზებული ბუნებრივი (ბერძნული) ენის ფრაგმენტის გამოყენებით. ფორმალიზებული ენის ზოგადი იდეა ჩამოაყალიბა ლაიბნიცმა (characteristica universalis), რომელიც ითვალისწინებდა მის გაფართოებას "დასკვნის გაანგარიშებამდე" - calculus ratiocinator. თანამედროვე დროში ლოგიკასა და ალგებრას შორის ანალოგიის საფუძველზე შემუშავდა ფორმალიზებული ენების სხვადასხვა ვარიანტები. საეტაპო აქ იყო სამუშაო მორგანა , ბული და მათი მიმდევრები, განსაკუთრებით შრედერი და პორეცკი . თანამედროვე ფორმალიზებული ენები - მათი ყველაზე გავრცელებული ფორმებით - უბრუნდება შრომას. ფრეგე "Begriffsschrift" - "ჩაწერა ცნებებში" (1879 წ.), საიდანაც მოდის წინადადებათა ლოგიკის ენის განვითარების ძირითადი ხაზი და (მრავალი) პრედიკატების ლოგიკა, ასევე ამ ლოგიკური ენობრივი საშუალებების გამოყენება. მათემატიკის დასაბუთების ამოცანებზე.

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

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

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

ფორმალიზებული ენა შეიძლება იყოს „სუფთა ფორმა“, ე.ი. არ ატაროთ რაიმე ექსტრალოგიური ინფორმაცია; თუ ის ატარებს მას, მაშინ ის ხდება გამოყენებითი ფორმალიზებული ენა, რომლის სპეციფიკა არის მუდმივი პრედიკატების და ტერმინების (აღწერების) არსებობა - მაგალითად. არითმეტიკა - ასახავს განაცხადის არეალის თვისებებს. აბსტრაქციის მაღალი დონის თეორიების ფორმალიზებისთვის, ფორმალიზებული ენა შეიძლება შეიცვალოს, გაფართოვდეს ან "აშენდეს" სხვადასხვა გზით; მაგალითი: კლასიკური გამოთვლების ფორმალიზაცია მეორე რიგის არითმეტიკად (ანუ რაოდენობებით პრედიკატულ ცვლადებზე). რიგ შემთხვევებში, ფორმალიზებული ენა შეიცავს მრავალი - თუნდაც უსასრულოდ ბევრი - ორდერის ლოგიკურ სტრუქტურას (როგორიცაა, მაგალითად, A.A. Markov-ის "ენების კოშკი", რომელიც ემსახურება კონსტრუქციული მათემატიკის ფორმალიზებას ან მოდალობის ინტერპრეტაციას. „შესაძლებელი სამყაროების“ იერარქიის შესახებ). ლოგიკის ფორმალიზებული ენის სემანტიკური საფუძველი შეიძლება იყოს სიმრავლე-თეორიული, ალგებრული, ალბათური, თამაშის თეორიული და ა.შ. შეიძლება არსებობდეს მისი ისეთი „დასუსტებებიც“, რომლებიც მხოლოდ ალბათურ სემანტიკას ემსგავსება - აი, მაგალითად, წარმოიქმნება „ბუნდოვანი ლოგიკის“ ფორმალიზებული ენა (ზადეს გაგებით). შემდეგ ენა იძენს სპეციფიკურ პრაგმატიკას, მშობლიური მოლაპარაკის ფაქტორის გათვალისწინებით (საგნის „კუთვნილების ფუნქციის“ შეფასება ამ კონცეფციის ფარგლებს გარეთ). სწორედ აქ ვლინდება ახლა მზარდი ტენდენცია ფორმალიზებულ ენებში „ადამიანური ფაქტორის“ გათვალისწინების, ამა თუ იმ ფორმით, რაც აშკარად ვლინდება კვანტური მექანიკის ლოგიკის ზოგიერთ ფორმალიზებულ ენაში. სხვა მიმართულებით ვითარდება ფორმალიზებული ენები, რომელთა სემანტიკა გულისხმობს ეგზისტენციალური ვარაუდების ან გარკვეული ონტოლოგიური წინაპირობის უარყოფას - წესების დასაშვებობას უსასრულო რაოდენობის წინაპირობებით, საგნობრივი სფეროების „მრავალგვაროვნებას“, თუნდაც წინააღმდეგობრივს. პირობა და ა.შ.

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

ლიტერატურა:

1. ეკლესია ა.შესავალი მათემატიკური ლოგიკაში, ტ.1.მ.,1960წ.;

2. კლეინი ს.კ.შესავალი მეტამათემატიკაში. მ., 1957;

3. კარი ჰ.მათემატიკური ლოგიკის საფუძვლები. მ., 1969;

4. ფროიდენტალი ჰ.ლოგიკის ენა. მ., 1969;

5. სმირნოვა ე.დ.ფორმალიზებული ენები და ლოგიკური სემანტიკის პრობლემები. მ., 1982 წ.