ბევრ ადამიანს აქვს სირთულეები ან იმედგაცრუება პროგრამირების ენებზე, რომლებსაც ისინი ყოველდღიურად იყენებენ. ზოგს სურს, რომ საქმეები უფრო აბსტრაქტულად იქნას განხილული, ზოგს კი არ მოსწონს იმ მახასიათებლების განხორციელება, რომელთაც სურთ იყვნენ "სტანდარტული". ხართ თუ არა IT პროფესიონალი თუ უბრალოდ ჰობისტი, ბევრჯერ შეიძლება აღმოჩნდეთ ახალი პროგრამირების ენის შექმნის სურვილი.
ნაბიჯები
ნაბიჯი 1. გაეცანით ტექნოლოგიას
თქვენ არ შეგიძლიათ შექმნათ პროგრამირების ენა, თუ არ იცით კომპიუტერის გამოყენება.
ნაბიჯი 2. გაეცანით ტერმინოლოგიას
შემდგენლები ხშირად იყენებენ უცნობ ტერმინოლოგიას. გაგრძელებამდე წაიკითხეთ შემდგენლები. დარწმუნდით, რომ იცოდეთ ყველაფერი, რაც უნდა იცოდეთ.
ნაბიჯი 3. გადაწყვიტეთ რა პრობლემას აგვარებს თქვენი ენა
ის დომენის სპეციფიკურ პრობლემას ეხება თუ ზოგადი დანიშნულების ენაა?
ნაბიჯი 4. დაფიქრდით თქვენი ენის სემანტიკაზე და მის კონცეფციებზე
- აპირებთ პირდაპირი მაჩვენებლის წვდომის უფლებას თუ არა?
- როგორია თქვენი ენის მონაცემთა ტიპები?
- ეს არის სტატიკური თუ დინამიური ენა?
- როგორია თქვენი მეხსიერების მოდელი? აპირებთ ნაგვის შემგროვებლის გამოყენებას ან მეხსიერების ხელით მართვას? (თუ თქვენ იყენებთ ნაგვის შემგროვებელს, მოემზადეთ ამის დასაწერად ან არსებული ენის თქვენს ენაზე მორგებისთვის.)
- როგორ აპირებთ გაუმკლავდეთ თანხმობას? აპირებთ გამოიყენოთ უბრალო ძაფის/ჩაკეტვის მოდელი ან რაიმე უფრო რთული, როგორიც არის ლინდა ან მსახიობი მოდელი? (დღეისათვის კომპიუტერებს აქვთ მრავალი ბირთვი.)
- არის თუ არა ენაში ჩადებული პრიმიტიული ფუნქციები თუ ყველაფერი ბიბლიოთეკიდან იქნება?
- რა არის თქვენი ენის პარადიგმა ან პარადიგმები? ფუნქციონალური? Ობიექტზე ორიენტირებული? პროტოტიპი (JavaScript– ის მსგავსად)? ასპექტზე ორიენტირებული? შაბლონზე ორიენტირებული? ან რამე სრულიად ახალი?
- როგორ ემთხვევა თქვენი ენა არსებულ ბიბლიოთეკებთან და ენებთან (ძირითადად C)? ეს წერტილი მნიშვნელოვანია, თუ თქვენ შექმნით დომენის სპეციფიკურ ენას.
- დაბოლოს, ამ კითხვებზე ზოგიერთ პასუხს გასცემს მეორე საფეხური და დაგეხმარებათ შემდეგ ეტაპზე პასუხის გაცემაში.
ნაბიჯი 5. დაფიქრდით კონკრეტულ ამოცანებზე, რომელთაც ვინმეს უნდა შეეძლოს შეასრულოს თქვენი ენა
მაგალითად, "მათ შეიძლება მოინდომონ რობოტი მიჰყვეს ხაზს" ან "მათ სურთ შექმნან მასში შედარებით პორტატული დესკტოპის პროგრამები" ან "მათ სურთ შექმნან ვებ პროგრამები მასთან ერთად".
ნაბიჯი 6. ექსპერიმენტი გააკეთეთ სინტაქსის იდეებით (ენის ტექსტი) ზემოთ მოყვანილი მაგალითებისთვის
ფრთხილად იყავით, რომ შეინახოთ თქვენი ენა კონტექსტის გარეშე ენის კატეგორიაში ან რაიმე მის შიგნით. თქვენი ანალიზის გენერატორი და თქვენ მოგვიანებით დააფასებთ მას
ნაბიჯი 7. ჩამოწერეთ ფორმალური გრამატიკა სინტაქსისთვის
ნაბიჯი 8. გადაწყვიტეთ, იქნება თუ არა ენა ინტერპრეტირებული ან შედგენილი
რაც იმას ნიშნავს, რომ ინტერპრეტირებულ სამყაროში თქვენი მომხმარებელი, როგორც წესი, შეცვლის თქვენს პროგრამას რედაქტორში და გაუშვებს პირდაპირ თარჯიმანზე; შედგენილ სამყაროში, თქვენი მომხმარებელი შეცვლის თქვენს პროგრამას, ადგენს მას, შეინახავს შედეგად შემსრულებელს სადმე და გაუშვებს მას.
ნაბიჯი 9. დაწერეთ წინა სკანერი და ანალიზატორი ან იპოვეთ ინსტრუმენტი, რომელიც დაგეხმარებათ ამაში
ასევე, იფიქრეთ იმაზე, თუ როგორ გააფრთხილებს თქვენი შემდგენელი/თარჯიმანი თქვენს მომხმარებელს მცდარი პროგრამებისა და სინტაქსური შეცდომების შესახებ
ნაბიჯი 10. გამოიყენეთ parser ინფორმაცია ობიექტის კოდის ან შუალედური წარმოდგენის დასაწერად
მიეცით ანალიზატორს AST, შემდეგ შექმენით თქვენი ობიექტის კოდი AST– დან სამი მისამართის კოდის ან მისი უფროსი ძმის SSA გამოყენებით, შემდეგ შექმენით სიმბოლოების ცხრილი თქვენი ფუნქციების, გლობალური ცვლადების და ა.შ.
ასევე, თქვენი ენიდან გამომდინარე, შეიძლება დაგჭირდეთ ვირტუალური მაჩვენებლების ცხრილების ან საინფორმაციო ცხრილების შექმნა თქვენი კლასებისთვის (ასახვის ან RTTI მხარდაჭერის მიზნით)
ნაბიჯი 11. დაწერეთ შემსრულებელი ან კოდის გენერატორი, რომელიც ყველაფერს ერთმანეთთან დააკავშირებს
ნაბიჯი 12. ჩაწერეთ მრავალი სატესტო პროგრამა ენის შესამოწმებლად
გსურთ შექმნათ პროგრამები, რომლებიც ხაზს უსვამს თქვენი ფორმალური გრამატიკის ტვირთს, რათა ნახოთ, რომ თქვენი შემდგენელი იღებს ყველაფერს, რაც თქვენს განმარტებაშია და უარყოფს ყველაფერს, რაც მის გარეთ არის
ნაბიჯი 13. განვიხილოთ, თუ როგორ შეძლებს მომხმარებელი საკუთარი პროგრამების გამართვას
ნაბიჯი 14. თუ თქვენი ენა იყენებს სტანდარტულ ბიბლიოთეკას, მოგინდებათ მისი დაწერა
ნაგვის შემგროვებელთან ან გაშვების სხვა მახასიათებლებთან ერთად, თუ დაგჭირდებათ.
კერძოდ, თუ თქვენ წერთ შემდგენელს, დაგჭირდებათ კოდი, რომელსაც ოპერაციული სისტემა შეასრულებს, რათა დაიწყოთ მომხმარებლის კოდის გაშვება (მაგალითად, ყველა გლობალური ცვლადის გამოყოფა)
ნაბიჯი 15. გამოაქვეყნეთ თქვენი ენა, სპეციფიკაციებთან ერთად და რამდენიმე მაგალითი იმისა, თუ რისი გაკეთება შეგიძლიათ მასში
არ დაგავიწყდეთ დოკუმენტირება, თუ როგორ შეგიძლიათ ინტეგრირება მოახდინოთ არსებულ ბიბლიოთეკებთან, ენებთან და როგორ გამოიყენოთ გაშვების დრო და/ან სტანდარტული ბიბლიოთეკა
ვიდეო - ამ სერვისის გამოყენებით, ზოგიერთი ინფორმაცია შეიძლება გაზიარდეს YouTube- თან
Რჩევები
- დაიწყეთ თქვენი ენის შემუშავებით და ნუ დაწერთ კოდს, სანამ არ დაკმაყოფილდებით და უპასუხებთ თქვენს დიზაინთან დაკავშირებულ ყველა კითხვას (ან უმეტესობას), რადგან დიზაინის შეცვლა უფრო ადვილია ვიდრე გვიან.
- იცოდეთ თქვენი სამიზნე პლატფორმა (ოპერაციული სისტემა და ბიბლიოთეკები) თქვენი შემდგენლის/თარჯიმნისთვის, ბოლოს და ბოლოს, თქვენ აპირებთ მის გამოყენებას და მანიპულირებას.
გაფრთხილებები
- იფიქრეთ იმაზე, თუ ნამდვილად გჭირდებათ ახალი ენა და რა აქვს თქვენს ენას ახალი, რაც სხვა ენებს არ გააჩნიათ (ეს შეიძლება იყოს თვისებების კომბინაცია ან ერთი თვისება).
- ენების წერა რთულია, თუ არ იცი რას აკეთებ. ამასაც ბევრი პრაქტიკა სჭირდება.
- მოემზადეთ გარკვეული დროის გასატარებლად ენის დიზაინში, რადგან თქვენ არ გექნებათ შანსი შეცვალოთ თქვენი ენა მას შემდეგ, რაც თქვენ დაწერთ შემდგენელს და გაივლით დიზაინის წერტილს.
- ნუ ეცდებით თქვენი მახასიათებლების დაფუძნებას რამდენიმე ენის გაერთიანებაში, მაგალითად იმის თქმა, რომ თქვენი ენა იქნება X, Y და Z ენების კავშირი. ან ყველანი დაპროგრამებენ PL/1 -ს იმის ნაცვლად, რაც დაფუძნებულია C.