CPAL
CPAL, CircuitPal’in programlama katmanıdır. Üç temsil vardır, blok, C ve bayt kodu, ve üçü de tek bir tanımdan üretilir.
Üç katman
| Katman | Kim görür | Örnek |
|---|---|---|
| Blok | Çocuk | ileri git hız 55 |
| C | Perde kalkınca | cpal_forward(55); |
| Bayt kodu | Robot | 0x12 0x37 |
Neden tek kaynak
Bloklar elle, C kütüphanesi elle, robotun komut tablosu elle yazılsaydı üçü er geç ayrı düşerdi: blokta olan bir şey kodda olmaz, kodda olan robotta çalışmazdı. Üçü de opcodes.json tanımından üretiliyor; bu yüzden böyle bir boşluk oluşamaz.
Bir program nasıl koşar
- Bloklar → IR. Blok çalışma alanı ara temsile (IR) çevrilir.
- IR → C. Okunabilir C üretilir; editörün Kod görünümü budur.
- IR → bayt kodu. Aynı IR’den robotun komutları üretilir.
- Yükleme. Bayt kodu USB ya da WiFi ile robota gider.
- Koşma. Robotun içindeki küçük sanal makine komutları işler.
C ve bayt kodu aynı IR’den üretildiği için ikisi aynı davranışı verir. Kod bir şey yapıp robot başka bir şey yapamaz.
Neden bir sanal makine
Program robotta derlenmez; küçük bir sanal makine bayt kodunu yorumlar. Böylece:
- Yükleme saniyeler sürer, dakikalar değil, çocuk denemekten vazgeçmez.
- Hatalı bir program robotu bozamaz: sanal makine sınırların dışına çıkmaz.
- Robotun ürün yazılımı değişmeden programlar değişebilir.
Değerler ve sınırlar
- Tam sayılar 32 bittir; taşma sarmalıdır (tanımsız davranış yok).
- Bölme sıfıra bölmede 0 verir, program çökmez.
- Hız, parlaklık ve ses gibi değerler güvenli aralığa kırpılır.
- Ondalık sayı yoktur: çocuğun programında
1.5geçmez.