**იქ->C** (იქსი) — პირველი ქართული პროგრამირების ენის კონცეპტი, რომელიც C ენის გამარტივებული ანალოგია. იქსი არის ზოგადი დანიშნულების სტრუქტურული პროგრამირების ენა, რომლის პლიუსებია: პრაქტიკულობა და სრულიად გაქართულებული სინტაქსი, გამოყენების სიადვილე, სტრუქტურული პროგრამირების მხარდაჭერა, ტექსტის ეფექტიანი დამუშავების ჩაშენებული მექანიზმი და მოდულების ქართული ბიბლიოთეკა. აღნიშნული მახასიათებლები მას ადვილად ასათვისებელს ხდის როგორც დამწყები, ასევე გამოცდილი პროგრამისტებისათვის. იქ-C შეიქმნა ჯგუფ Geo-X-ის (სანდრო კალატოზიშვილი, ნიკო ფეიქრიშვილი, ბექა ჩიქოვანი) HackTSU ჰაკათონის ფარგლებში 2015 წელს. ჯგუფის წევრების მთავარი მიზანი და პრიორიტეტია ქართველი ახალბედა დეველოპერებისთვის პროგრამირების შესწავლის გამარტივება და მათთვის დახმარება. იქ-C წარმოადგენს ღია წყაროს სახის პროექტს და შექმნილია MIT ლიცენზიის ფარგლებში.

ზოგადი მიმოხილვა
----------------

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

ენის სტრუქტურა
--------------

### მაგალითი

იქ->C-ზე დაწერილი Hello world-ის კანონიკური პროგრამა ასე გამოიყურება:

```
შემოიღე სტანდარტები

ცარიელი ფუნქცია მთავარი() 
{ 
 დაბეჭდე("გამარჯობა მსოფლიო"); 
}

```

### სტრუქტურები

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

```
შემოიღე სტანდარტები

გამოაცხადე სტრუქტურა {
 სტრიქონი სახელი;
 სტრიქონი გვარი;
 რიცხვი ასაკი;
 წილადი წონა;
} მონაცემები;

ცარიელი ფუნქცია მონაცემების\_ინიციალიზაცია(მონაცემები \* ინფო) 
{
 ინფო->სახელი = "ჯონი";
 ინფო->გვარი = "დოე";
 ინფო->ასაკი = 21;
 ინფო->წონა = 81.5;
}

ცარიელი ფუნქცია მთავარი ()
{
 მონაცემები ინფო;

 მონაცემების\_ინიციალიზაცია(&ინფო);

 /\* დავბეჭდოთ მონაცემები სტრუქტურიდან \*/
 დაბეჭდე("სახელი: %s", ინფო.სახელი);
 დაბეჭდე("გვარი: %s", ინფო.გვარი);
 დაბეჭდე("ასაკი: %d", ინფო.ასაკი);
 დაბეჭდე("წონა: %f", ინფო.წონა);
}

```

კომპილაცია
----------

იქ->C-ს კოდის კომპილაცია შესაძლებელია gxx-ის მეშვეობით, რომლის გამოყენებაც არის ძალიან მარტივი. მაგალითად 'გამარჯობა.ი' კოდის შემთხვევაში:

`gxx -i გამარჯობა.ი -o გამარჯობა`

სადაც 'გამარჯობა.ი' არის საწყისი კოდის ფაილი და 'გამარჯობა' - ფაილი რაშიც გვინდა დავაკომპლიროთ კოდი.

### თარგმნის რეჟიმი

gxx-ს აქვს თარგმნის რეჟიმი, რომელსაც გადაჯყავს იქ-C-ს კოდი C ენის კოდში და აგენერირებს 'output.c' ფაილს. თუ gxx-ს გაუშვებთ არგუმენტ -s ის დამატებით, პროგრამა კოდის კომპილაციის პარალელურად შექმნის იქ->C ში დაწერილი კოდის ზუსტ ანალოგს C პროგრამირების ენისთვის. ეს რეჟიმი არის სპეციალურად დამწყები პროგრამისტებისთვის, რადგან მათ შეეძლოთ შეხედვა და გაანალიზება თუ როგორ ხდება ქართულად დაწერილი იქ->C ს კოდის ტრანსლაცია C ში და როგორ მუშაობს ქართული კოდის C ანალოგი.

რესურსები ინტერნეტში
--------------------

* — იქ->C-ს მთავარი რეპოზიტორი
* — იქ->C ChallengePost-ზე

|  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| ხ • გ • რ
პროგრამირების ენები |
| --- |
|  |
|  ობიექტზე-ორიენტირებული | 
* გრუვი
* D
* ეიფელი
* პითონი
* რუბი
* Objective-C
* C++
* C#
* ჯავა
* ჯავასკრიპტი
 |
|  |
|  ბრძანებითი | 
* ასემბლერი
* კობოლი
* ლუა
* პერლი
* PHP
* C
 |
|  |
|  ფუნქციური | 
* ობიექტური კამლი
* Clojure
* F#
* Standard ML
 |
|  |
|  თანადროული | 
* ადა
* ერლანგი
 |

 |