Citrin (programovací jazyk) - Citrine (programming language)
![]() | Tento článek má několik problémů. Prosím pomozte vylepši to nebo diskutovat o těchto otázkách na internetu diskusní stránka. (Zjistěte, jak a kdy tyto zprávy ze šablony odebrat) (Zjistěte, jak a kdy odstranit tuto zprávu šablony)
|
![]() | |
Paradigma | Objektově orientovaný, na základě prototypu |
---|---|
Navrhl | Gabor de Mooij, Aavesh Jilani |
Vývojář | Gabor de Mooij, Aavesh Jilani |
Poprvé se objevil | 2014 |
Stabilní uvolnění | 0.9.2 / 2020 |
Psací disciplína | dynamický |
OS | Cross-platform (více platforem) |
Licence | BSD |
Přípony názvu souboru | ctr |
webová stránka | citrine-lang |
Hlavní, důležitý implementace | |
C | |
Ovlivněno | |
Pokec Já |
Citrin je univerzální programovací jazyk pro Cross-platform (více platforem) operační systémy. Zaměřuje se na čitelnost a udržovatelnost. Čitelnosti je dosaženo syntaktickým a koncepčním minimalismem. Jazyk je silně inspirován Pokec a Já ale má některé velmi charakteristické rysy. Stejně jako Smalltalk zachází Citrine se vším jako s objektem a zaměřuje se na odesílání zpráv těmto objektům. Na rozdíl od Smalltalku však Citrinu chybí koncept třídy. V tomto ohledu je Citrin spíše jako Já a JavaScript protože to používá prototypy. Citrin je jedinečný díky kombinaci zpráv a prototypů typu Smalltalk.
Od verze 0.7 se Citrine zaměřil na podporu rodných lidských jazyků místo pouhé angličtiny, aby pomohl lidem snížit počet chyb kvůli zmatku a nedorozumění kvůli jazykovým bariérám. Citrin 0.7 a vyšší obsahuje překladač pro překlady mezi lidskými jazyky.
Syntax
Citrin má velmi omezenou syntaxi a velmi úzce souvisí s Smalltalkem. Všechno v Citrinu je objekt, existuje 5 literálů:
Nula
Pravda, lež
0,1,2,3
'Tětiva'
{... parametry ... ... blok kódu ...}
Doslovný blok kódu používá a trubka symbol k oddělení parametrů od logiky '|', pokud existují noparametry, mělo by být místo '' použito zpětné lomítko.
Citrine podporuje pouze komentáře v celém řádku, komentáře začínají znakem „#“.
Program Citrine je v podstatě sled zpráv odeslaných objektům. Chcete-li například zjistit, zda je 5 sudé číslo, zobrazí se zpráva „sudá?“ je odeslán na číslo 5.
5 dokonce?
Tomu se říká a unární zpráva, protože nevyžaduje žádné argumenty. A binární zpráva je vždy jeden znak UTF-8; to se liší od Smalltalk, kde je pevná sada binárních zpráv. Zde je příklad:
6 + 7.
Zde je binární zpráva '+' odeslána na číslo 6, argument této binární zprávy je '7', výsledkem bude nový objekt čísla '13'. Přiřazení výsledku této operace k proměnné používá operátor přiřazení:: =.
celkový := peníze + dluh.
Všimněte si také, že každý řádek v programu Citrine končí tečkou, stejně jako v Smalltalku. Kromě unárních a binárních zpráv nabízí Citrine zprávy s klíčovými slovy, které přijímají argumenty proložené samotnou zprávou, jako Smalltalk a Cíl-C.
☞ X := Číslo mezi: 1 a: 5.
Výňatek z kódu výše vrátí logický objekt Skutečný.
Řízení toku
Stejně jako Smalltalk je tok toku v Citrinu implementován strategickým využitím zpráv. Například zápis podmíněného příkazu vyžaduje odeslání bloku kódu booleovi.
(peníze > cena) skutečný: { ✎ psát si: "Ano, můžete si to dovolit". }.
Podobně je smyčka for zapsána jako:
{ :krok ✎ psát si: „toto je krok:“ + krok. } * 10.
Chcete-li se vymanit ze smyčky v Citrinu, musíte poslat zprávu 'break' na boolean, což umožňuje podmíněné přerušení ze smyčky, aniž byste museli vyloučit podmínky přerušení:
{ :i (i = 3) přestávka. ✎ psát si: i.} * 5.
Potrubí
Na rozdíl od Smalltalku nemá Citrine žádný středník, který by odesílal zprávy původnímu příjemci. Namísto toho má Citrine čárku „,“ používanou k řetězení zpráv s klíčovými slovy, což umožňuje psát jako Unix potrubí. Následující kód používá syntaxi podobnou kanálu k nahrazení všech znaků „o“ nulami, výsledný řetězec by vypadal jako: „1010101 ...“.
onesAndZeroes := „1o1o1o1o1o1“ rozdělit: 'Ó', mapa: mapUp, připojit se: '0'.
Prototypy
Největším rozdílem od Smalltalku je použití prototypů. Citrin nemá koncept třídy, ví jen o objektech. Objekt se vytvoří pomocí nové zprávy:
kočka := Objekt Nový.
Tento objekt lze nastavit tak, aby odpovídal na zprávy tím, že nařídí objektu, aby naslouchal událostem. Toto je něco podobného jako metody přidávání v jazycích jako Jáva:
kočka na: 'mňoukat' dělat: { Pero psát si: 'mňoukat!'.}.
Jak je uvedeno výše, dědičnost je založena na prototypech. Chcete-li odvodit objekt z jiného objektu, musí být nová zpráva odeslána do objektu, který má být rozšířen:
☞ Zvíře := Objekt Nový.Zvíře na: 'makeSound' dělat: { ✎ psát si: '?'.}.☞ Kočka := Zvíře Nový.Kočka na: 'makeSound' dělat: { ✎ psát si: 'mňoukat!'.}.☞ Tom := Kočka Nový.Tom makeSound.
Unicode
Citrine značně používá unicode UTF-8, objekty i zprávy se mohou skládat ze symbolů unicode. Veškerá délka řetězce se počítá pomocí UTF-8. Citrin rozlišuje délku a velikost řetězce v bajtech:
'text' délka.
vrací délku řetězce v pointes kódu UTF-8, zatímco:
'text' bajtů.
vrací počet bajtů.
Scoping
Citrin používá dynamický rozsah namísto lexikální obor. Není tedy potřeba injekce závislostí nebo globální proměnné, ale může být těžší uvažovat než o lexikálním rozsahu. To je podobné jako v programovacích jazycích Emacs Lisp a ZÁKLADNÍ. V kódu blokuje var pro deklaraci místní proměnné je třeba použít klíčové slovo.
Následující ukázka zpřístupní objekt Mailer v modulu:
aplikace := { ☞ poštovní zásilka := Poštovní zásilka Nový. modul běh.}.
Viz také
- Pokec programovací jazyk
Reference
- ukázka v nové komunitě programovacích jazyků
- Citrine Review Jaxenter
- Oznámení na Redditu
- Rozhovor InfoWorld
externí odkazy
- Oficiální webové stránky
- zdrojový kód, Zdrojový kód na github