CPAL

CPAL, CircuitPal’in programlama katmanıdır. Üç temsil vardır, blok, C ve bayt kodu, ve üçü de tek bir tanımdan üretilir.

Üç katman

KatmanKim görürÖrnek
BlokÇocukileri git hız 55
CPerde kalkıncacpal_forward(55);
Bayt koduRobot0x12 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

  1. Bloklar → IR. Blok çalışma alanı ara temsile (IR) çevrilir.
  2. IR → C. Okunabilir C üretilir; editörün Kod görünümü budur.
  3. IR → bayt kodu. Aynı IR’den robotun komutları üretilir.
  4. Yükleme. Bayt kodu USB ya da WiFi ile robota gider.
  5. 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.5 geçmez.