Személyes eszközök
Keresés

 

A InfoWiki wikiből

(Változatok közti eltérés)
Aktuális változat (2009. június 24., 18:18) (lapforrás)
(uploaded)
 
(7 közbeeső változat nincs mutatva)
1. sor: 1. sor:
-
__NOTOC__
 
-
{{page_addr|TITÁN projekt}}
 
-
<alcim l1="titan:Nyitolap|Összefoglaló" l2="titan:titan-m|Magas szint" l3="titan:titan-a|Assembly szint" l4="titan:opr|Operációs rendszer">l2</alcim>
+
== 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 ==
* [[titan:acker|Acker fv]]
* [[titan:acker|Acker fv]]
 +
* [[titan:nfib|Fibonacci fv]]
 +
* [[titan:korok|Körö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.

A lap eredeti címe: „http://wiki.ektf.hu/wiki/Titan:titan-m
Nézetek
nincs sb_3.144.113.197 cikk