გრუვი

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

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

შეგვიძლია შევამოწმოთ -ს მნიშვნელობა კეივორდის გამოყენებით

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

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

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

ფაილი რომელშიც მოთავსებულია ეს გამოსახულება საკმარისია -ს ბრძანებით გავუშვათ და მივიღებთ შედეგს

იგივე ფუნქციის შემსრულებელი ბრძანება დაწერილი ჯავაში:

თავიდან უნდა მოვახდინოთ კომპილაცია და შემდგომ გავუშვათ ბაითკოდი.

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

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

ამ გრუვი კოდის შედეგია

, 

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

ამ გრუვი კოდის შედეგია

სიების ფუნქცია თითოეულ სიის ელემენტზე { } ჩართვას აწარმოებს. არგუმენტი ფუნციის გამოყენების დროს სიის მიმდინარე ელემენტს წარმოადგენს.