შესავალი

რა არის JavaScript

JavaScript (JS) არის დროულად კომპილირებადი (just-in-time) პროგრამული ენა, რომელიც შეიცავს first-class ფუნქციებს. JavaScript ცნობილია, როგორც ვებგვერდებისთვის შექმნილი სკრიპტული ენა, თუმცა ის გამოიყენება როგორც ვებგვერდებისთვის, ასევე სისტემური პროგრამებისთვის. ჯავასკრიპტი არის ერთ ნაკადიანი (single-threaded), დინამიური ენა, რომელსაც ისეთი პროგრამული პარადიგმების მხარდაჭერა გააჩნია, როგორიცაა ობიეტზე ორიენტურებული, იმპერატიული და ფუნქციური.

JavaScript როგორც High-level ენა

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

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

JIT კომპილაცია

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

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

კი, მაგრამ, სად ეშვება ჯავასკრიპტი?

სად გამოიყენება JavaScript

ჯავასკრიპტის თავდაპირველი დანიშნულებია იყო ვებსაიტებისთვის ინტერაქციული და დინამიური ფუნქციონალის მინიჭება. შესაბამისად, ჯავასკრიპტი მუშაობს იქ, სადაც HTML და CSS — ბრაუზერში. ეს არის ჯავასკრიპტის პირველი და უმთავრესი გარემო, თუმცა არა ერთადერთი. ჯავასკრიპტის გარემოები, როგორებიცაა Node.js, Deno და Bun, საშუალებას გვაძლევს, დავწეროთ სისტემური პროგრამებიც, მაგალითად HTTP სერვერები, ტერმინალის აპლიკაციები და ა.შ. მაშასადამე, JavaScript შესაძლებელია გამოვიყენოთ, როგორც კლიენტის მხარეს, ასევე სერვერის მხარესაც. კლიენტის მხარეს დოკუმენტის მანიპულაციისთვის შეგვიძლია გამოვიყენოთ DOM, ხოლო სერვერთან ურთიერთობისთვის Web API-ები. გარემოს მიხედვით, ჯავასკრიპტის ძირეული ასპექტები იგივე რჩება, თუმცა განსხვავდება ინტერფეისები. მაგალითად Node.js-სა და მსგავს გარემოებში საშუალება გვაქვს, კომპიუტერში ფაილების სისტემაში ცვლელები შევიტანოთ, თუმცა ბრაუზერში ამის საშუალება ფიზიკურად არ არსებობს. კლიენტის მხარეს ბრაუზერი გვაწვდის ინტერფეისებს, რათა ცვლილებები შევიტანოთ დოკუმენტში, თუმცა Node.js-ში თვითონ დოკუმენტი არ არსებობს.

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

დინამიური?

დინამიური, როგორც ინტერაქტიული

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

დიმაიურად ტიპიზირებული

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

JavaScript-ის სტანდარტი

JavaScript-ის სტანდარტი არის ECMAScript Language Specification. ECMA არის ორგანიზაცია, რომელიც აწესებს, როგორ უნდა მუშაობდეს ჯავასკრიპტი. ყველა ჯავასკრიპტის გარემოს მოეთხოვება, რომ ამ წესებს იცავდეს. სწორედ ამიტომ არის შესაძლებელი, რომ ერთი და იგივე პროგრამირების ენის პატერნებით ვიხელმძღვანელოთ Google Chrome-ში, Firefox-ში, Safari-ში, Node.js-ში, Deno-ში და ა.შ. ასერომ, JavaScript და ECMAScript ერთი და იმავე პროგრამირების ენას ნიშნავს. ECMAScript-ის სტანდარტის სპეციფიკაციები ყოველ წელს ახლდება პატარ-პატარა ცვლილებებით. ამის გამო, როცა ენის უახლეს ფუნქციონალს ვიყენებთ, გვიწევს შემოწმება, ყველა ბრაუზერში არის თუ არა მისი მხარდაჭერა. მაგალითად, შეიძლება Chrome-ში უახლესი სტანდარტი უფრო მალე შემოიტანონ, ვიდრე Firefox-ში და მოგვიწიოს მოცდა, სანამ ბრაუზერის ყველა უახლესი ვერსიები შეიცავს ჩვენთვის სასურველ ენის ფუნქციონალს.

JavaScript და Java

ხშირია შემთხვევა, როცა დამწყებ დეველოპერებს JavaScript ეშლებათ Java-ში. Java სრულიად სხვა პროგრამირების ენა არის.


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