A InfoWiki wikiből
Aktuális változat (2009. június 24., 18:18) (lapforrás) (uploaded) |
|||
(4 közbeeső változat nincs mutatva) | |||
1. sor: | 1. sor: | ||
- | |||
- | |||
- | + | == Támogatott jellemzők == | |
+ | * C#-ban is ismert alapvető nyelvi típusok | ||
+ | * longInt és longDouble tetszőleges hosszú és pontosságú számok kezelése | ||
+ | * lusta és szigorú kiértékelés (lazy, strict) | ||
+ | * szekvenciális végrehajtás | ||
+ | * C# natív kódú függvények meghívása | ||
+ | * függvénnyel paraméterezhetőség (currying) | ||
+ | * egygépes, többszálú, elosztott kódvégrehajtás támogatása kiértékelési stratégiákkal | ||
+ | |||
+ | == Szintaktikai leírás == | ||
+ | * [[titan:m-syntax|Szintaktikai leírás]] | ||
+ | * [[titan:m-ebnf|Szintaktikai leírás EBNF]] | ||
+ | * [[titan:m-semantic|Szemantikai leírás]] | ||
+ | * [[titan:m-parser|Parser]] | ||
+ | * [[titan:m-lexer|Lexer]] | ||
+ | * [[titan:m-codegen|Kódgenerálás]] | ||
== Példaprogramok == | == Példaprogramok == | ||
12. sor: | 25. sor: | ||
* [[titan:korok|Körök kezelése]] | * [[titan:korok|Körök kezelése]] | ||
* [[titan:lista|Listák kezelése]] | * [[titan:lista|Listák kezelése]] | ||
+ | |||
+ | == Listák == | ||
+ | |||
+ | Kardinális kérdés lehet a listák kezelése, mivel listák átadása más függvényeknek, rekurzív feldolgozása során a listák másolása a memóriában nem megengedett teljesítménybeli és memóriahatékonysági megfontolásokból. | ||
+ | |||
+ | Ugyanakkor amennyiben egy függvény egy lista-paramétert fogad, majd továbbadja azt egy al-függvényének, és az al-függvénye ezt a listát elkezdi 'elfogyasztani', a lista elejének felszabadítása, és az elemek garbage elemésztése szükségszerű. Figyelni kell arra, hogy a hívó függvény e közben még a teljes listát 'birtokolhatja', ami viszont ellenáll a GC-nek, akkor is, ha egyébként már a listára nincs szüksége. | ||
+ | |||
+ | A fordítás és kódoptimalizálás során ezért figyelni kell, hogy amennyiben egy függvény a listát már nem kívánja használni, de lusta kiértékeléssel azt már továbbadta egy másik függvénynek, akkor ne foglalja azt tovább, és engedje dolgozni a GC-t ha az szükséges. |
Aktuális változat
Tartalomjegyzék |
Támogatott jellemzők
- C#-ban is ismert alapvető nyelvi típusok
- longInt és longDouble tetszőleges hosszú és pontosságú számok kezelése
- lusta és szigorú kiértékelés (lazy, strict)
- szekvenciális végrehajtás
- C# natív kódú függvények meghívása
- függvénnyel paraméterezhetőség (currying)
- egygépes, többszálú, elosztott kódvégrehajtás támogatása kiértékelési stratégiákkal
Szintaktikai leírás
Példaprogramok
Listák
Kardinális kérdés lehet a listák kezelése, mivel listák átadása más függvényeknek, rekurzív feldolgozása során a listák másolása a memóriában nem megengedett teljesítménybeli és memóriahatékonysági megfontolásokból.
Ugyanakkor amennyiben egy függvény egy lista-paramétert fogad, majd továbbadja azt egy al-függvényének, és az al-függvénye ezt a listát elkezdi 'elfogyasztani', a lista elejének felszabadítása, és az elemek garbage elemésztése szükségszerű. Figyelni kell arra, hogy a hívó függvény e közben még a teljes listát 'birtokolhatja', ami viszont ellenáll a GC-nek, akkor is, ha egyébként már a listára nincs szüksége.
A fordítás és kódoptimalizálás során ezért figyelni kell, hogy amennyiben egy függvény a listát már nem kívánja használni, de lusta kiértékeléssel azt már továbbadta egy másik függvénynek, akkor ne foglalja azt tovább, és engedje dolgozni a GC-t ha az szükséges.