პროგრამირების ენა Go-ს განვითარების ისტორიაში შესაძლოა მნიშვნელოვანი ცვლილება მოხდეს. Hacker News-ზე გამოქვეყნებული ახალი წინადადების თანახმად, ენის შემქმნელები განიხილავენ Generic მეთოდების დამატებას, რაც ამ დრომდე ენის ერთ-ერთ მთავარ შეზღუდვად ითვლებოდა.

რა არის პრობლემა?

ამჟამინდელი სპეციფიკაციით, Go-ში მეთოდებს არ შეუძლიათ საკუთარი ტიპის პარამეტრების დეკლარირება. მიუხედავად იმისა, რომ მეთოდს შეიძლება ჰქონდეს Generic ტიპის მიმღები (receiver), თავად მეთოდი ვერ იქნება Generic. ისტორიულად, ამის მთავარი მიზეზი იყო შიში, რომ Generic მეთოდების დაშვება ავტომატურად მოითხოვდა Generic ინტერფეისების დანერგვას, რაც ენის ეფექტურობასა და კომპილაციის პროცესს გაართულებდა.

ახალი ხედვა: მეთოდი როგორც ფუნქცია

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

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

თავსებადობა და შეზღუდვები

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

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

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