Seminární práce na předmět
IZI229

Úvod

Tento dokument vznikl jako seminární práce na předmět IZI229.  Cílem práce bylo vytvořit aplikaci ve dvou prázdných expertních systémech (SAK a SAZE).

Aplikační oblast

Aplikační oblast je pro obě dvě mé aplikace stejná -- doporučení nejvhodnějšího programovacího jazyka na základě charakteristik úlohy.

Uživateli jsou předkládány otázky ohledě zamýšleného použití budoucí aplikace, na základě jeho odpovědí je mu výsledně doporučen programovací jazyk (programovací jazyky).

Systém se rozhoduje vždy z těchto sedmi jazyků:
  1. PHP
  2. Perl
  3. Python
  4. Java
  5. C++
  6. C
  7. Pascal
Většina zde uvedených jazyků je dost všeobecných (java, c), takže se hodí pro řadu úloh, některé specializované jazyky (perl) jsou již v dnešní době vybaveny takovou spoustou knihoven, že i v nich je možné téměř vše (existuje například i projekt volného OS v perlu).

Navíc je otázkou, co vše je jěště nedílná součást jazyka.  Existuje řada knihoven dostupnýh na mnoha platformách.  Rozhodl jsem se takto:
Nabízí se také otázka, zda je ten výběr tak nutný, když v dnešní době je možné v těchto jazycích napsat téměř cokoli, přičemž záleží zejména na dostupnosti dobrých knihoven.  Moje odpověď  zní takto:

  1. Jde o zkušební příklad.
  2. Přece jen jsou historií prověřené oblasti, v nichž výše uvedené jazyky vynikají nad jiné (C jako nízkoúrovňový jazyk, Pascal jako vhodný jazykl pro výuku, Perl jako ryzí praktik).

Popis tvorby v SAKu

Prvotní vytvořená báze byla vesměs jednoúrovňová, s kladnými výroky.   Postupně jsem doplňoval negativní výroky (ne všude) a složené výroky pro speciální případy (ačkoli Php nelze příliš doporučit jako jazyk pro napojení na databázi (rozuměj: jsou lepší jazyky), v kombinaci s tvorbou webové aplikace a nepříliš složité úlohy je ideální).

Již jsem naznačil, že moje báze obsahuje hlavně kladné výroky.  Snažil jsem se totiž určovat jazyk podle jeho silných stránek -- v uvedených jazycích je možné vše, ale něco v nich je prostě lepší.  Zpočátku, pokud v daném případě jazyk zrovna přímo nepropadal, neuvažoval jsem tuto relativně slabou stránku jazyka (později jsem ji však na mnoha místeh doplnil). Navíc, díky struktuře mám zajištěno, že vždy nějaký jazyk doporučím.

Mojí snahou bylo určit pár mezivýroků, na jejichž základě by se určil výsledný jazyk.  Tyto mezivýroky jsou:
Vedle toho mám v bázi znalostí i pár specifických případů (databázová aplikace, demonstrační aplikace, ...), které se snaží upřednostnit konkrétní jazyk před jiným (ne vždy se to však podaří).

Ve výsledcích úlohy je dobré si všímat pořadí jazyků a eventuálně uvažovat o jejih kombinaci, pokud je vhodná (to však již můj systém neřeší).

Několik postřehů:

Popis tvorby v SAZE

V saze šlo o stejnou aplikační oblast.  Mám tedy 7 objektů, jež doporučuji a kolem 20 konstruktů.

Protože ve své SAKovské bázi nemám příliš hierarchie, domnívám se že model v SAZE se mi vytvářel mnohem lépe -- u objektu jsem si všímal toho, v čem vynikají a z toho jsem vytvořil konstrukt.  Výsledkem je jasné přiřazení (často ručně upravované) objekt -- vlastnost, jež se mi pro tuto úlohu jeví jako vhodnější.

Nepříjemné však bylo projít všech 170 předpokládaných vztahů mezi vlastnostmi a u každého určit zda platí, či ne.  Avšak i bez tohoto dávali již první konzultace lepší výsledky (rozuměj: mnou očekávanější) než systém SAK (což může pochopitelně být (a nejspíš i je) špatnými pravidly).

K samotné tvorbě -- vytvořit bázi znalostí bylo asi stejně náročné, jako v systému SAK za použití sakcomp.exe, trvalo ovšem mnohem kratší dobu.

Některé odvozené vlastnosti nejsou obecně příliš rozumné, avšak pro můj omezený počet objektů platí (resp. není tam objekt, pro který by neplatily).


SAK -- pravidla a vzorová konzultace

pravidla

;****
; u programovacich jazyku se predpoklada:
; - prace se soubory
; - stdin, stdout
; - to co je ve standardu (ANSI, popr. de facto)
; - bezne knihovny (sitova komunikace + graficka knihovna +
; knihovna pro vyuziti vazeb na okoli (mail, db, ...)
;
; ve vysledne konzultaci je dobre si vsimat poradi cilu a eventualne
; uvazovat o vyuziti kombinace vice jazyku
;****

;**** Zadani maximalnich mezi ****
<-3,3>

;**** Diagnoza ****

php := PHP; 1
perl := Perl; 2
python := Python; 3
java := J2SDK; 4
c := C; 5
cpp := C++; 6
pascal := Pascal; 7

;**** Mezivyroky ****

osDep; zavislost na hostitelskem OS
env; komunikace s okolim (tiskarna, mail, db)
ui; komunikace s uzivatelem
data; pozadavky na zpracovani a vyuziti dat
algo; pozadavky na algoritmus
phpperl
pythonjava
pomjava; pomocny vyrok pro vice nez 4 predpoklady

;**** Dotazy ****

; hostitelsky OS

prenositelnost := Ma byt vyvijeny program nezavisly na hostitelskem OS?
unixDep := Je program urcen pro systemy Unix?
winDep := Je program urcen pro systemy MS Windows?
jinyosDep := Je program urcen pro jiny system?
(unixDep, winDep, jinyosDep)

; hostitelske prostredi

; navaznost na prostredi

tisk := Bude po programu pozadovan vystup na tiskarnu?
reldb := Bude program komunikovat s relacni databazi?
mail := Bude program vyuzivat sluzeb mailoveho serveru?
(tisk, reldb, mail)

; charakter ulohy

davka := Ma uloha davkovy charakter?
interaktivni := Ma uloha interaktivni charakter?
(davka, interaktivni)

; komunikace s uzivatelem

tui := Postacuje textove rozhrani?
webui := Je vyzadovano webove rozhrani?
gui := Je vyzadovano plnohodnotne graficke rozhrani?
(tui, webui, gui)

; datova narocnost

maloDN <0,1>:= Maly objem dat ve vnitrni pameti [< 1MB]
stredneDN <2,5>:= Vetsi objem dat [< 5MB]
hodneDN <6,10>:= Velky objem dat
(maloDN, stredneDN, hodneDN)

maloNDT <0,10>:= Pocet netrivialnich dat typu <= 10.
stredneNDT <11,20>:= Pocet netrivialnich dat typu <= 20.
hodneNDT <21,40>:= Pocet netrivialnich dat typu <= 40.
nespocetNDT <41,999>:= Pocet netrivialnich dat typu <= 999 :-).
(maloNDT, stredneNDT, hodneNDT, nespocetNDT)

textData := Bude aplikace pracovat s nestrukturovanymi textovymi daty [text/plain]?
sgmlData := Bude aplikace pracovat se strukturovanymi textovymi daty [text/xml]?
binData := Bude aplikace pracovat s binarnimi daty?
(textData, sgmlData, binData)

; algoritmicka narocnost

slozitostAlgo := Bude zapis algoritmu ulohy slozity?
casAlgo := Bude algoritmus casove narocny?
(slozitostAlgo, casAlgo)

; distribuovanost aplikae

net := Jde o sitovou aplikaci tj. bude vytvoren aplikacni klient i aplikacni server?

; vyvoj

rychlost := Rychlost vyvoje.

vnitrniSec := Pozadavky na vnitrni bezpecnost [typova kontrola, preteceni, osetreni chyb].

vnejsiSec := Pozadavky na vnejsi bezpecnost [zabezpeceni dat, autentikace uzivatelu].
(vnitrniSec, vnejsiSec)

; specificke pripady

webApp := Pujde o webovou aplikaci [klient == web prohlizec, server == web server]?
ovladacHW := Pujde o ovladac HW?
dbApp := Pujde o databazovou aplikai [primarnim cilem aplikace je zprostredkovat komunikaci uzivatel -- databaze]?
graphicApp := Pujde o graficky narocnou aplikaci [prace s obrazovou informaci]?
algoApp := Pujde o demonstraci algoritmu?
mwApp := Pujde o aplikaci vyuzivajici middleware [CORBA, J2EE]?
(webApp, ovladacHW, dbApp, graphicApp, algoApp, mwApp)

; preference

prefphp := Preferujete PHP?
prefperl := Preferujete Perl?
prefpython := Preferujete Python?
prefjava := Preferujete Javu?
prefc := Preferujete C?
prefcpp := Preferujete C++?
prefpascal := Preferujete Pascal?
(prefphp, prefperl, prefpython, prefjava, prefc, prefcpp, prefpascal)

;**** Pravidla ****

; urceni osDep
prenositelnost => osDep (-3)
-prenositelnost : unixDep => osDep (3)
-prenositelnost : winDep => osDep (3)
-prenositelnost : jinyosDep => osDep (3)

; na zaklade prenositelnosti a osDep lze o jazycich rici
prenositelnost => perl (3)
prenositelnost => python (3)
prenositelnost => java (2)
prenositelnost => php (2)
prenositelnost => c (-2)
prenositelnost => cpp (-2)
prenositelnost => pascal (-2)

osDep : unixDep => c(1)
osDep : unixDep => perl(1)
osDep : winDep => c(1)
osDep : jinyosDep => perl(1)

; urceni env
tisk => env (2)
reldb => env (1)
mail => env (2)

reldb => dbApp (1)
webui => webApp (1)

; na zaklade env lze o jazycich rici
env => java (2)
env => cpp (1); knihovny s dobrou datovou abstrakci
env => c(1); rada knihoven
env => perl (1); rada knihoven

reldb => perl (2)
mail => perl (2)
reldb => python (1)
mail => python (1)

; urceni ui
davka => ui (-3)
interaktivni : tui => ui (1)
interaktivni : webui => ui (-1); webove rozhrani -- dela se mimo jazyk
interaktivni : gui => ui (3)

; na zaklade ui lze rici
ui => java (2)
tui => perl (3)
tui => python (2)
webui => php (3)
webui => perl (2)
gui => java (3)

; data
maloDN => data (-2)
stredneDN => data (1)
hodneDN => data (2)

maloNDT => data (-2)
stredneNDT => data (1)
hodneNDT => data (3)
nespocetNDT => data(3)

; na zaklade dat a typu dat lze rici
data => cpp (3)
data => java (2)
data => python (2)
data => pascal (1)
data => php (-2)
data => c (1)

stredneDN => php (-1)
stredneDN => perl (-1)
stredneDN => python (2)
stredneDN => java (1)
stredneDN => c (3)
stredneDN => cpp (3)
stredneDN => pascal (2)

hodneDN => php (-3)
hodneDN => perl (-2)
hodneDN => python (1)
hodneDN => java (1)
hodneDN => c (3)
hodneDN => cpp (3)
hodneDN => pascal (1)

hodneNDT => cpp (3)
hodneNDT => java (2)
hodneNDT => python (1)

stredneNDT => cpp (3)
stredneNDT => java (2)
stredneNDT => python (1)
stredneNDT => c (1)
stredneNDT => pascal (1)

textData => php (2)
textData => perl (3)
textData => python (2)
textData => c (-3)
textData => cpp (-1)
textData => pascal (-1)
textData => Java (1)

-textData => php (-2)
-textData => perl (-1)
-textData => c (1)
-textData => cpp (2)
-textData => python (1)
-textData => pascal (1)
-textData => java (2)

sgmlData => perl (3)
sgmlData => python (2)
sgmlData => java (2)

-sgmlData => perl (-1)
-sgmlData => c (1)
-sgmlData => cpp (2)
-sgmlData => python (1)
-sgmlData => pascal (1)
-sgmlData => java (1)

binData => java (2)
binData => c (3)
binData => cpp (3)
binData => pascal (1)
binData => python (1)
binData => php (-2)
binData => perl (-1)

-binData => java (1)
-binData => c (-1)
-binData => cpp (-1)
-binData => pascal (-1)
-binData => python (2)
-binData => php (1)
-binData => perl (3)

; algo

slozitostAlgo => algo (3)
casAlgo => algo (3)

; na zaklade algo lze

algo => c (3)
algo => cpp (3)
algo => pascal (2)
algo => java (2)
algo => perl (1)
algo => python (1)
algo => php (-1)

; net

net => java (3)
net => perl (3)
net => c (1)
net => cpp (2)
net => python (2)
net => pascal (-2)
net => php (-1)

; vyvoj

rychlost => java (2)
rychlost => perl (3)
rychlost => php (2)
rychlost => python (3)
rychlost => pascal (1)
rychlost => cpp (-1)
rychlost => c (-2)

vnitrniSec => java (3)
vnitrniSec => perl (-3)
vnitrniSec => python (-1)
vnitrniSec => php (-3)
vnitrniSec => pascal (2)
vnitrniSec => cpp (1)
vnitrniSec => c (-1)

vnejsiSec => java (2)
vnejsiSec => python (1)
vnejsiSec => perl (1)
vnejsiSec => cpp (-1)
vnejsiSec => c (-1)

; spec pripady

webApp => perl (2)
webApp => php (2)
webApp => python (1)
webApp => cpp (-2)
webApp => c (-2)
webApp => java (-2)
webApp => pascal (-2)

-webApp => php (-2)
-webApp => python (2)
-webApp => java (2)
-webApp => cpp (1)
-webApp => perl (1)
-webApp => c (1)
-webApp => pascal (1)

ovladacHW => pascal (1)
ovladacHW => c (3)
ovladacHW => cpp (2)
ovladacHW => java (1)
ovladacHW => python (-2)
ovladacHW => perl (-1)
ovladacHW => php (-3)

-ovladacHW => java (2)
-ovladacHW => perl (2)
-ovladacHW => python (2)
-ovladacHW => c (-1)
-ovladacHW => cpp (1)
-ovladacHW => php(1)
-ovladacHW => pascal (-1)

dbApp => perl (3)
dbApp => java (3)
dbApp => php (1)
dbApp => python (3)
dbApp => c (1)
dbApp => cpp (2)
dbApp => pascal (-3)

-dbApp => perl (1)
-dbApp => java (2)
-dbApp => php (1)
-dbApp => python (2)
-dbApp => c (1)
-dbApp => pascal (1)
-dbApp => cpp (2)

graphicApp => java (1)
graphicApp => c (2)
graphicApp => cpp (3)
graphicApp => perl (2)
graphicApp => php (-2)
graphicApp => pascal (-1)
graphicApp => python (-1)

algoApp => pascal (3)
algoApp => python (3)
algoApp => java (2)
algoApp => cpp (1)
algoApp => c (-1)
algoApp => perl (-2)
algoApp => php (-2)

-algoApp => pascal (-2)

mwApp => java (3)
mwApp => c (2)
mwApp => cpp (2)
mwApp => python (2)
mwApp => perl (1)
mwApp => php (-2)
mwApp => pascal (-2)

-mwApp => pascal (1)

; preferene

prefphp => php (1)
-prefphp => php (-1)
prefperl => perl (1)
-prefperl => perl (-1)
prefpython => python (1)
-prefpython => python (-1)
prefjava => java (1)
-prefjava => java (-1)
prefc => c (1)
-prefc => c (-1)
prefcpp => cpp (1)
-prefcpp => cpp (-1)
prefpascal => pascal (1)
-prefpascal => pascal (-1)

; dodatecna pravidla

env & prenositelnost & gui & data => pomjava (3)
pomjava & algo => java (3)

webApp & dbApp & data => phpperl (3)
phpperl & textData => perl (3)
phpperl & sgmlData => perl (3)
phpperl & -textData => php (3)
phpperl & -sgmlData => php (3)

phpperl & bindata => perl (2)

-webApp & dbApp & data & mwApp => pythonjava (3)

pythonjava & rychlost => python (3)
pythonjava & rychlost => java (1)
pythonjava & -rychlost => java (3)
pythonjava & -vnejsiSec => python (3)
pythonjava & -vnitrniSec => python (3)
pythonjava & vnejsiSec => java (3)
pythonjava & vnitrniSec => java (3)
pythonjava & mwApp => java (3)
pythonjava & mwApp => python (2)

algoApp & mwApp => python (3)
algoApp & mwApp => perl (-3)
algoApp & mwApp => php (-2)
algoApp & mwApp => c (-2)
algoApp & mwApp => cpp (2)
algoApp & mwApp => java (2)
algoApp & mwApp => pascal (-3)

konzultace

SAK-prog se standardnim inferencnim mechanismem
Vysledky konzultace ze dne 29-05-2003

Konzultovany pripad: chat klient server

Vahy vyroku v bazi znalosti:
Vaha Cislo Text
------------------------------------------------------------
3.00 1 PHP
3.00 2 Perl
3.00 3 Python
3.00 4 J2SDK
1.10 5 C
3.00 6 C++
-2.46 7 Pascal
-3.00 8 osDep
0.33 9 env
-1.00 10 ui
1.00 11 data
1.00 12 algo
0.00 13 phpperl
0.00 14 pythonjava
0.00 15 pomjava
3.00 16 Ma byt vyvijeny program nezavisly na hostitelskem OS?
Nepouzit 17 Je program urcen pro systemy Unix?
Nepouzit 18 Je program urcen pro systemy MS Windows?
Nepouzit 19 Je program urcen pro jiny system?
-2.00 20 Bude po programu pozadovan vystup na tiskarnu?
1.00 21 Bude program komunikovat s relacni databazi?
0.00 22 Bude program vyuzivat sluzeb mailoveho serveru?
-3.00 23 Ma uloha davkovy charakter?
3.00 24 Ma uloha interaktivni charakter?
-3.00 25 Postacuje textove rozhrani?
3.00 26 Je vyzadovano webove rozhrani?
-2.00 27 Je vyzadovano plnohodnotne graficke rozhrani?
-3.00 28 Maly objem dat ve vnitrni pameti [< 1MB]
-3.00 29 Vetsi objem dat [< 5MB]
-3.00 30 Velky objem dat
-3.00 31 Pocet netrivialnich dat typu <= 10.
3.00 32 Pocet netrivialnich dat typu <= 20.
-3.00 33 Pocet netrivialnich dat typu <= 40.
-3.00 34 Pocet netrivialnich dat typu <= 999 :-).
2.00 35 Bude aplikace pracovat s nestrukturovanymi textovymi daty
[text/plain]?
2.00 36 Bude aplikace pracovat se strukturovanymi textovymi daty
[text/xml]?
2.00 37 Bude aplikace pracovat s binarnimi daty?
1.00 38 Bude zapis algoritmu ulohy slozity?
-2.00 39 Bude algoritmus casove narocny?
3.00 40 Jde o sitovou aplikaci tj. bude vytvoren aplikacni klient
i aplikacni server?
0.00 41 Rychlost vyvoje.
-2.00 42 Pozadavky na vnitrni bezpecnost [typova kontrola,
preteceni, osetreni chyb].
2.00 43 Pozadavky na vnejsi bezpecnost [zabezpeceni dat,
autentikace uzivatelu].
-2.00 44 Pujde o webovou aplikaci [klient == web prohlizec, server
== web server]?
-2.00 45 Pujde o ovladac HW?
-2.00 46 Pujde o databazovou aplikai [primarnim cilem aplikace je
zprostredkovat komunikaci uzivatel -- databaze]?
-1.00 47 Pujde o graficky narocnou aplikaci [prace s obrazovou
informaci]?
-3.00 48 Pujde o demonstraci algoritmu?
-3.00 49 Pujde o aplikaci vyuzivajici middleware [CORBA, J2EE]?
0.00 50 Preferujete PHP?
0.00 51 Preferujete Perl?
0.00 52 Preferujete Python?
0.00 53 Preferujete Javu?
0.00 54 Preferujete C?
0.00 55 Preferujete C++?
0.00 56 Preferujete Pascal?

============================================================




Vysledne doporuceni (cile s pozitivni vahou)

Vaha Cislo Text
------------------------------------------------------------
3.00 1 PHP
3.00 2 Perl
3.00 3 Python
3.00 4 J2SDK
3.00 6 C++
1.10 5 C


Dekuji za spolupraci
Vas SAK

SAZE -- pravidla a vzorová konzultace

pravidla

BÅZE ZNALOSTï PRO »PROG« :
──────
1 2 3 4 5 6 7
┌────────────────────────────────────┐
1.│ 25 90 35 100 90 -50 50 │
2.│ -100 -100 40 80 100 -100 100 │
3.│ 50 50 20 50 100 -50 -50 │
4.│ 90 -20 -100 -100 -50 100 -100 │
5.│ 100 80 -100 -40 50 65 -50 │
6.│ -70 -90 100 85 50 -100 50 │
7.│ 100 40 15 25 -70 100 -100 │
8.│ -50 -70 100 100 55 -100 70 │
9.│ 100 50 35 60 100 20 -100 │
10.│ 40 -30 100 100 70 -100 -40 │
11.│ -100 100 50 70 65 -85 100 │
12.│ 15 100 50 70 100 0 -90 │
13.│ 100 100 -50 -50 50 100 -100 │
14.│ 50 55 100 100 100 -50 80 │
15.│ -70 -60 100 90 -100 -30 50 │
16.│ 85 70 -30 -25 100 -40 -100 │
17.│ 100 100 -100 -40 60 100 -50 │
18.│ -60 -60 -50 -50 100 -60 -50 │
19.│ -100 -45 0 50 100 -50 100 │
20.│ 40 -15 100 65 -100 -50 -10 │
└────────────────────────────────────┘
| | | | | | pascal
| | | | | php
| | | | java
| | | cpp
| | c
| python
perl

SEZNAM KONSTRUKTª (DªLEÆITOST) :

1. datova abstrakce ano - datova abstrakce ne (100 %)
2. typova kontrola ano - typova kontrola ne (100 %)
3. dobra tvorba GUI - spatna tvorba GUI (100 %)
4. tvorba web ui - spatna tvorba web ui (100 %)
5. dobra prace s textem - spatna prace s textem (100 %)
6. nizkourovnove programovani ano - nizkourovnove programovani ne (100 %)
7. web apliakce - spatna web aplikace (100 %)
8. ovladac HW - spatny ovladac HW (100 %)
9. db apliakce - spatna db aplikace (100 %)
10. graficka aplikace - spatna graficka aplikace (100 %)
11. demonstrace algoritmu - spatna demo algoritmu (100 %)
12. vyuziti middleware - spatne vyuziti middleware (100 %)
13. prenositelnost - neprenositelnost (100 %)
14. prace s binarnimi daty - spatna prace s bin daty (100 %)
15. male pametove naroky - velke pametove naroky (100 %)
16. snadne sitove prog - nesnadne sitove prog (100 %)
17. rychlost vyvoje aplikace - pomalost vyvoje apli (100 %)
18. vnejsi bezpecnost - spatna vnejsi bezpecnost (100 %)
19. vnitrni bezpecnost - spatna vnitrni bezpecnost (100 %)
20. rychlost behu aplikace - aplikace bezi pomalu (100 %)

Koncov pravidla pro PROG:

Kdy‘ datova abstrakce ano, pak
cpp s v hou 15
java s v hou 13
python s v hou 13
pascal s v hou 7
c s v hou 5
perl s v hou 4
php s v hou -7

Kdy‘ datova abstrakce ne, pak
cpp s v hou -15
java s v hou -13
python s v hou -13
pascal s v hou -7
c s v hou -5
perl s v hou -4
php s v hou 7

Kdy‘ typova kontrola ano, pak
pascal s v hou 15
java s v hou 15
cpp s v hou 12
c s v hou 6
php s v hou -15
python s v hou -15
perl s v hou -15

Kdy‘ typova kontrola ne, pak
pascal s v hou -15
java s v hou -15
cpp s v hou -12
c s v hou -6
php s v hou 15
python s v hou 15
perl s v hou 15

Kdy‘ dobra tvorba GUI, pak
java s v hou 15
cpp s v hou 7
python s v hou 7
perl s v hou 7
c s v hou 3
pascal s v hou -7
php s v hou -7

Kdy‘ spatna tvorba GUI, pak
java s v hou -15
cpp s v hou -7
python s v hou -7
perl s v hou -7
c s v hou -3
pascal s v hou 7
php s v hou 7

Kdy‘ tvorba web ui, pak
php s v hou 15
perl s v hou 13
python s v hou -3
java s v hou -7
pascal s v hou -15
cpp s v hou -15
c s v hou -15

Kdy‘ spatna tvorba web ui, pak
php s v hou -15
perl s v hou -13
python s v hou 3
java s v hou 7
pascal s v hou 15
cpp s v hou 15
c s v hou 15

Kdy‘ dobra prace s textem, pak
perl s v hou 15
python s v hou 12
php s v hou 10
java s v hou 7
cpp s v hou -6
pascal s v hou -7
c s v hou -15

Kdy‘ spatna prace s textem, pak
perl s v hou -15
python s v hou -12
php s v hou -10
java s v hou -7
cpp s v hou 6
pascal s v hou 7
c s v hou 15

Kdy‘ nizkourovnove programovani ano, pak
c s v hou 15
cpp s v hou 13
pascal s v hou 7
java s v hou 7
perl s v hou -10
python s v hou -13
php s v hou -15

Kdy‘ nizkourovnove programovani ne, pak
c s v hou -15
cpp s v hou -13
pascal s v hou -7
java s v hou -7
perl s v hou 10
python s v hou 13
php s v hou 15

Kdy‘ web apliakce, pak
php s v hou 15
perl s v hou 15
python s v hou 6
cpp s v hou 4
c s v hou 2
java s v hou -10
pascal s v hou -15

Kdy‘ spatna web aplikace, pak
php s v hou -15
perl s v hou -15
python s v hou -6
cpp s v hou -4
c s v hou -2
java s v hou 10
pascal s v hou 15

Kdy‘ ovladac HW, pak
cpp s v hou 15
c s v hou 15
pascal s v hou 10
java s v hou 8
perl s v hou -7
python s v hou -10
php s v hou -15

Kdy‘ spatny ovladac HW, pak
cpp s v hou -15
c s v hou -15
pascal s v hou -10
java s v hou -8
perl s v hou 7
python s v hou 10
php s v hou 15

Kdy‘ db apliakce, pak
java s v hou 15
perl s v hou 15
cpp s v hou 9
python s v hou 7
c s v hou 5
php s v hou 3
pascal s v hou -15

Kdy‘ spatna db aplikace, pak
java s v hou -15
perl s v hou -15
cpp s v hou -9
python s v hou -7
c s v hou -5
php s v hou -3
pascal s v hou 15

Kdy‘ graficka aplikace, pak
cpp s v hou 15
c s v hou 15
java s v hou 10
perl s v hou 6
python s v hou -4
pascal s v hou -6
php s v hou -15

Kdy‘ spatna graficka aplikace, pak
cpp s v hou -15
c s v hou -15
java s v hou -10
perl s v hou -6
python s v hou 4
pascal s v hou 6
php s v hou 15

Kdy‘ demonstrace algoritmu, pak
pascal s v hou 15
python s v hou 15
java s v hou 10
cpp s v hou 10
c s v hou 7
php s v hou -13
perl s v hou -15

Kdy‘ spatna demo algoritmu, pak
pascal s v hou -15
python s v hou -15
java s v hou -10
cpp s v hou -10
c s v hou -7
php s v hou 13
perl s v hou 15

Kdy‘ vyuziti middleware, pak
java s v hou 15
python s v hou 15
cpp s v hou 10
c s v hou 7
perl s v hou 2
php s v hou 0
pascal s v hou -13

Kdy‘ spatne vyuziti middleware, pak
java s v hou -15
python s v hou -15
cpp s v hou -10
c s v hou -7
perl s v hou -2
php s v hou 0
pascal s v hou 13

Kdy‘ prenositelnost, pak
php s v hou 15
python s v hou 15
perl s v hou 15
java s v hou 7
cpp s v hou -7
c s v hou -7
pascal s v hou -15

Kdy‘ neprenositelnost, pak
php s v hou -15
python s v hou -15
perl s v hou -15
java s v hou -7
cpp s v hou 7
c s v hou 7
pascal s v hou 15

Kdy‘ prace s binarnimi daty, pak
java s v hou 15
cpp s v hou 15
c s v hou 15
pascal s v hou 12
python s v hou 8
perl s v hou 7
php s v hou -7

Kdy‘ spatna prace s bin daty, pak
java s v hou -15
cpp s v hou -15
c s v hou -15
pascal s v hou -12
python s v hou -8
perl s v hou -7
php s v hou 7

Kdy‘ male pametove naroky, pak
c s v hou 15
cpp s v hou 13
pascal s v hou 7
php s v hou -4
python s v hou -9
perl s v hou -10
java s v hou -15

Kdy‘ velke pametove naroky, pak
c s v hou -15
cpp s v hou -13
pascal s v hou -7
php s v hou 4
python s v hou 9
perl s v hou 10
java s v hou 15

Kdy‘ snadne sitove prog, pak
java s v hou 15
perl s v hou 13
python s v hou 10
cpp s v hou -4
c s v hou -4
php s v hou -6
pascal s v hou -15

Kdy‘ nesnadne sitove prog, pak
java s v hou -15
perl s v hou -13
python s v hou -10
cpp s v hou 4
c s v hou 4
php s v hou 6
pascal s v hou 15

Kdy‘ rychlost vyvoje aplikace, pak
php s v hou 15
python s v hou 15
perl s v hou 15
java s v hou 9
cpp s v hou -6
pascal s v hou -7
c s v hou -15

Kdy‘ pomalost vyvoje apli, pak
php s v hou -15
python s v hou -15
perl s v hou -15
java s v hou -9
cpp s v hou 6
pascal s v hou 7
c s v hou 15

Kdy‘ vnejsi bezpecnost, pak
java s v hou 15
pascal s v hou -7
cpp s v hou -7
c s v hou -7
php s v hou -9
python s v hou -9
perl s v hou -9

Kdy‘ spatna vnejsi bezpecnost, pak
java s v hou -15
pascal s v hou 7
cpp s v hou 7
c s v hou 7
php s v hou 9
python s v hou 9
perl s v hou 9

Kdy‘ vnitrni bezpecnost, pak
pascal s v hou 15
java s v hou 15
cpp s v hou 7
c s v hou 0
php s v hou -7
python s v hou -7
perl s v hou -15

Kdy‘ spatna vnitrni bezpecnost, pak
pascal s v hou -15
java s v hou -15
cpp s v hou -7
c s v hou 0
php s v hou 7
python s v hou 7
perl s v hou 15

Kdy‘ rychlost behu aplikace, pak
c s v hou 15
cpp s v hou 10
perl s v hou 6
pascal s v hou -1
python s v hou -2
php s v hou -7
java s v hou -15

Kdy‘ aplikace bezi pomalu, pak
c s v hou -15
cpp s v hou -10
perl s v hou -6
pascal s v hou 1
python s v hou 2
php s v hou 7
java s v hou 15

Mezilehl pravidla pro PROG:
Kdy‘ spatna web aplikace, pak vnitrni bezpecnost s v hou 100.
Kdy‘ nizkourovnove programovani ne, pak web apliakce s v hou 100.
Kdy‘ nizkourovnove programovani ne, pak prenositelnost s v hou 100.
Kdy‘ nizkourovnove programovani ne, pak rychlost vyvoje aplikace s v hou 100.
Kdy‘ nizkourovnove programovani ne, pak spatny ovladac HW s v hou 100.
Kdy‘ nizkourovnove programovani ne, pak velke pametove naroky s v hou 100.
Kdy‘ spatna prace s textem, pak nizkourovnove programovani ano s v hou 100.
Kdy‘ spatna prace s textem, pak ovladac HW s v hou 100.
Kdy‘ spatna prace s textem, pak prace s binarnimi daty s v hou 100.
Kdy‘ spatna tvorba web ui, pak prace s binarnimi daty s v hou 100.
Kdy‘ typova kontrola ne, pak dobra prace s textem s v hou 100.
Kdy‘ typova kontrola ne, pak web apliakce s v hou 100.
Kdy‘ typova kontrola ne, pak nizkourovnove programovani ne s v hou 100.
Kdy‘ typova kontrola ne, pak spatny ovladac HW s v hou 100.
Kdy‘ typova kontrola ne, pak velke pametove naroky s v hou 100.
Kdy‘ typova kontrola ne, pak spatna vnitrni bezpecnost s v hou 100.
Kdy‘ datova abstrakce ne, pak dobra prace s textem s v hou 100.
Kdy‘ datova abstrakce ne, pak spatna tvorba GUI s v hou 100.
Kdy‘ datova abstrakce ne, pak spatny ovladac HW s v hou 100.
Kdy‘ datova abstrakce ne, pak spatna graficka aplikace s v hou 100.
Kdy‘ datova abstrakce ne, pak spatna demo algoritmu s v hou 100.
Kdy‘ datova abstrakce ne, pak spatne vyuziti middleware s v hou 100.
Kdy‘ datova abstrakce ne, pak spatna prace s bin daty s v hou 100.
Kdy‘ datova abstrakce ne, pak nesnadne sitove prog s v hou 100.
Kdy‘ datova abstrakce ne, pak spatna vnitrni bezpecnost s v hou 100.
Kdy‘ typova kontrola ano, pak nizkourovnove programovani ano s v hou 100.
Kdy‘ typova kontrola ano, pak ovladac HW s v hou 100.
Kdy‘ typova kontrola ano, pak demonstrace algoritmu s v hou 100.
Kdy‘ typova kontrola ano, pak prace s binarnimi daty s v hou 100.
Kdy‘ typova kontrola ano, pak vnitrni bezpecnost s v hou 100.
Kdy‘ typova kontrola ano, pak spatna tvorba web ui s v hou 100.
Kdy‘ tvorba web ui, pak web apliakce s v hou 100.
Kdy‘ tvorba web ui, pak db apliakce s v hou 100.
Kdy‘ tvorba web ui, pak rychlost vyvoje aplikace s v hou 100.
Kdy‘ tvorba web ui, pak nizkourovnove programovani ne s v hou 100.
Kdy‘ tvorba web ui, pak spatny ovladac HW s v hou 100.
Kdy‘ tvorba web ui, pak spatna demo algoritmu s v hou 100.
Kdy‘ tvorba web ui, pak velke pametove naroky s v hou 100.
Kdy‘ tvorba web ui, pak spatna vnejsi bezpecnost s v hou 100.
Kdy‘ tvorba web ui, pak spatna vnitrni bezpecnost s v hou 100.
Kdy‘ nizkourovnove programovani ano, pak ovladac HW s v hou 100.
Kdy‘ nizkourovnove programovani ano, pak prace s binarnimi daty s v hou 100.
Kdy‘ web apliakce, pak spatna vnejsi bezpecnost s v hou 100.
Kdy‘ graficka aplikace, pak prace s binarnimi daty s v hou 100.

konzultace

DATUM            :  29.5.2003
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

ZADŹN‹ KONZULTACE :
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
1. Je trochu d–le‘it‚, aby platilo ponˆkud datova abstrakce ano.
2. V–bec nenˇ d–le‘it‚, platˇ-li typova kontrola ano.
3. V–bec nenˇ d–le‘it‚, platˇ-li dobra tvorba GUI.
4. Je velmi d–le‘it‚, aby platilo rozhodnˆ tvorba web ui.
5. Je trochu d–le‘it‚, aby platilo ponˆkud dobra prace s textem.
6. V–bec nenˇ d–le‘it‚, platˇ-li nizkourovnove programovani ano.
7. Je velmi d–le‘it‚, aby platilo rozhodnˆ web apliakce.
8. V–bec nenˇ d–le‘it‚, platˇ-li ovladac HW.
9. Je trochu d–le‘it‚, aby platilo rozhodnˆ db apliakce.
10. Je trochu d–le‘it‚, aby platilo nevˇm / ani jedno.
11. V–bec nenˇ d–le‘it‚, platˇ-li demonstrace algoritmu.
12. V–bec nenˇ d–le‘it‚, platˇ-li vyuziti middleware.
13. Je velmi d–le‘it‚, aby platilo rozhodnˆ prenositelnost.
14. Je trochu d–le‘it‚, aby platilo ponˆkud prace s binarnimi daty.
15. V–bec nenˇ d–le‘it‚, platˇ-li male pametove naroky.
16. Je velmi d–le‘it‚, aby platilo rozhodnˆ snadne sitove prog.
17. V–bec nenˇ d–le‘it‚, platˇ-li rychlost vyvoje aplikace.
18. Je trochu d–le‘it‚, aby platilo rozhodnˆ spatna vnejsi bezpecnost.
19. V–bec nenˇ d–le‘it‚, platˇ-li vnitrni bezpecnost.
20. V–bec nenˇ d–le‘it‚, platˇ-li rychlost behu aplikace.

DOPORU€EN‹ :
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Rozhodnˆ doporu‡uji:
perl 84
python 70
php 66
Je¨tˆ p©ipou¨tˇm:
java 37
Nelze rozhodnout:
cpp -13
Nedoporu‡uji:
c -22
Naprosto nedoporu‡uji:
pascal -63
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
V prav‚m sloupci je v ha doporu‡enˇ
z intervalu -100 a‘ 100.