Datalog-ი, 80-იანი წლების ლოგიკური პროგრამირების ენა, დღემდე რჩება მონაცემთა ბაზების თეორიის ერთ-ერთ ქვაკუთხედად. მიუხედავად მისი პოპულარობისა, ენა გარკვეულ შეზღუდვებს აწესებს, განსაკუთრებით ფუნქციებისა და პროცედურების არარსებობის გამო. სწორედ ამ გამოწვევის საპასუხოდ გაჩნდა პროექტი Datafun, რომელიც Datalog-ის ლოგიკას ფუნქციურ პროგრამირებასთან აერთიანებს.
რა არის Datafun?
Datafun-ის მიზანი მარტივია: ლოგიკური და ფუნქციური პროგრამირების სინთეზი. ავტორის იდეით, თუ Datalog-ი არის ლოგიკური პროგრამირება, ხოლო ფუნქციური ენა — პროგრამირების სხვა მიმართულება, მაშინ მათი გაერთიანება სრულიად ახალ შესაძლებლობებს ქმნის. ეს ჰგავს ლეგოს ნაწილების შეერთებას უფრო რთული და მძლავრი სისტემის მისაღებად.
რეკურსიული მოთხოვნები და ფუნქციები
Datalog-ის მთავარი მახასიათებელი რეკურსიული მოთხოვნებია. მაგალითად, გრაფიკში კვანძებს შორის კავშირის პოვნა, რომელიც ტრადიციულად რთულად იწერება. Datafun-ი ამ ამოცანას ფუნქციურ ენაზე „მინიმალური პრეფიქსური წერტილის“ (least prefix point) ოპერატორის გამოყენებით წყვეტს.
ამ მიდგომით, პროგრამისტი predicates-and-logic-ის ნაცვლად, sets-and-functions-ით მუშაობს. ეს მიდგომა მონაცემთა დამუშავებას უფრო მოქნილს და ინტუიციურს ხდის.
ეფექტურობა და „სემინაივური“ იტერაცია
კვლევის ერთ-ერთი მთავარი ტექნიკური მიღწევა ალგორითმის ოპტიმიზაციაა. ნაივიური (მიამიტი) მიდგომა ითვლის ყველა შესაძლო კავშირს ყოველ ნაბიჯზე, რაც კვადრატულ ზრდას იწვევს. Datafun-ი იყენებს „სემინაივურ“ (seminaïve) მეთოდს, რომელიც მხოლოდ ახალ აღმოჩენილ მონაცემებზე ამახვილებს ყურადღებას.
შედეგად, თითოეული კვანძის შემოწმება მხოლოდ ერთხელ ხდება. ეს მეთოდი ეფუძნება ინკრემენტულ გამოთვლებს, რაც პროგრამას საშუალებას აძლევს, ეფექტურად იმუშაოს დიდ მონაცემთა ნაკრებებთან.
დასკვნა
ავტორის სადისერტაციო ნაშრომი, „Datalog-ის დეკონსტრუქცია“, ამტკიცებს, რომ რეკურსიული ლოგიკური მოთხოვნების ინტეგრაცია ფუნქციურ ენებში არა მხოლოდ შესაძლებელია, არამედ მათემატიკურად გამართული და ეფექტურიცაა. ეს ნაშრომი მნიშვნელოვან ნაბიჯს დგამს პროგრამირების ენების ევოლუციაში.


დისკუსია
0 კომენტარი
ჯერ კომენტარი არ არის — იყავი პირველი.