Link Search Menu Expand Document

საკვანძო სიტყვები

review: ესემბლი

  • რა არის ესემბლი?
  • საიდან ვიცით, რომელი რიცხვი რა ინსტრუქციას ნიშნავს?

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

background

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

შეზღუდული შესაძლებლობები

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

პორტატულობა

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

კომპაილერი

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

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

c programming language

  • პრიმიტიული ტიპები - char - 1 ბაიტი (გამოიყენებოდა ASCII მნიშვნელობისთვის), int - 4 ბაიტი (ანუ -2147483648-დან 4294967296-მდე), double - 8 ბაიტი, unsigned int
  • სტრუქტურა - თემატურად გაერთიანებული მონაცემები. წინასწარ წერ რა ზომის იქნება
  • მასივი - ერთი ტიპის (პრიმიტიული ან სტრუქტურა) ელემენტების მიმდევრობა. ცვლადში ინახავ პირველი ელემენტის მისამართს და მერე წერ რომელი ელემენტი
  • თუ ზომა ცვლადია (და ძირითადად ცვლადია), მუდმივად უნდა თხოვო ოპერატიულ სისტემას მეტი/ნაკლები მეხსიერების გამოყოფა. თუ ამას არ დაარეგულირებ, პროგრამა ან კომპიუტერი გაჭედავს.

რით განსხვავდებიან ერთმანეთისგან პროგრამირების ენები

სინტაქსი და სემანტიკა

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

მეხსიერების მართვა

გამოთვლებისას რაღაც რიცხვები აღარ გვჭირდება.

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

სისწრაფე

  • კომპაილერის
  • პროგრამის
  • ასევე ენის სწავლის, კოდის წერის

სხვა

არანაკლებ მნიშვნელოვანი, თუმცა არ არის აუცილებელი ცოდნა.

  • აბსტრაქტული სტრუქტურების შექმნის შესაძლებლობა
  • სტანდარტული ბიბლიოთეკა (ფუნქციები, რომელიც კომპაილერში ჩაშენებულია)
  • სხვების კოდის მიღება და ვერსიების მართვა როგორ ხდება

პრაქტიკული მაგალითები

shell

ფუნქციები

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

c, c++

მიუხედავად იმისა, რომ c/c++ ნებისმიერ პლათფორმაზე დაკომპილირდება, დაკომპილირებული პროგრამა შეიძლება ვერ გაეშვას ყველგან.

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

პროგრამები, რომლებიც ამ ენებშია დაწერილი: ბრაუზერები, windows, linux, ios, macos, მძლავრი თამაშების და პროგრამების უმეტესობა (კონსოლების და nintendo switch-ის ჩათვლით).

java

Java (ან მისი მონათესავე ენების) პროგრამები

  • თამაშები (მაგალითად minecraft)
  • ვებ აპლიკაციების ნაწილები
    • twitter
    • google-ის ბევრი სერვისი
  • ანდროიდის ყველა პროგრამა

python

  • ერთ-ერთი ყველაზე მარტივი სინტაქსის (თუმცა ბევრი შესაძლებლობების) ენა
  • არსებობს ბევრი სამეცნიერო ბიბლიოთეკა, რომელსაც არაპროგრამისტი სპეციალისტებიც იყენებენ ხოლმე

ამ ენების მახასიათებლები

  • python (პორტატული, ინტერპრეტირებული)
  • c (პორტატული კოდი, კომპილირებადი)
  • shell (არაპორტატული, ინტერპრეტირებული)
  • java (პორტატული პროგრამა, შერეული)

ყველა მათგანს შეუძლია გრაფიკული პროგრამების შექმნაც (სხვა ბიბლიოთეკების გამოყენებით).

javascript

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

html არის ენა, მაგრამ არა პროგრამირების. უბრალოდ მიუთითებ დოკუმენტში რა წერია და როგორ არის ერთმანეთის მიმართ განლაგებული. html დოკუმენტი არის ტექსტური დოკუმენტი (როგორც კარელის) და მისი გახსნა შეგიძლია ნებისმიერი პროგრამის მეშვეობით, რომელსაც შეუძლია html-ის გაგება (როგორც docx-ს ბრაუზერით ვერ გახსნი, მაგრამ microsoft word-ის გარდა კიდევ არსებობს პროგრამები, რომლებშიც გახსნი). ყველაზე გავრცელებული ასეთი პორგრამა არის ბრაუზერი (chrome, opera, firefox).

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