<html><head><meta http-equiv="Content-Type" content="text/html charset=iso-8859-2"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Különböző célra készült 1996-tól a ScriptBasic Classis, és 2012-től a ScriptBasic for Java. Az első C környezetbe való integrálást tesz lehetővé, míg a második Java környezetbe.<div><br></div><div>Ugyanakkor a C-ben írt alkalmazásokba illesztett scripting megoldások által megkívánt és a Java alkalmazásokban használt scripting mást követel. C-ben nincs olyan egyszerű library illesztési lehetőség, mint Java-ban. Ezért, hogy egyáltalán használható legyen a nyelv sok rendszer közeli függvényt meg kellett valósítani, és ha már a nyelv implementációs része kellett, hogy legyen, akkor a legjobb megoldásnak az tűnt, hogy a nyelv szintaktikának is a része legyen, hasonlítson minél jobban a megszokott BASIC-ra.<br><div><br></div><div>A ScriptBasic for Java esetében a Java jellegzetességéből adódóan kevésbé fontos, hogy fájlokat lehessen direktben elérni nyelvi szinten. Amikor egy alkalmazás scripting megoldáshoz nyúl nagyon ritkán kell a script kódnak fájlokkal dolgozni. Általában a scripting részek magas szinten üzleti logikát írnak le, és ennek megfelelően üzleti objektumokkal dolgoznak. Ez igen messze van a fájlok direkt kezelésétől. Sőt: egyenesen kellemetlen lenne a legtöbb alkalmazás számára, ha a scriptek hozzáférnek a fájlrendszerhez, és műveleteket tudnak végezni. A classic implementációban is kikapcsolhatóak ezek az utasítások (tulajdonképpen minden egyes utasítás kikonfigurálható API-n keresztül), de ezt mind le kellett programozni a körbeölelő programnak, amelyikbe a classic verzió belekerült.</div><div><br></div><div>A classic használatának egy nagy gátja volt mindig is, hogy az üzleti objektumokat, más szavakkal a ScriptBasic-ből meghívható függvényeket interfész függvényeken keresztül lehetett és kellett meghívni, és ezt minden meghívandó függvényhez le kellett gyártani. Az interfész függvényeknek speciális hívási, argumentum struktúrája van a classic verzióban, meg van adva, hogy milyen értéket kell visszaadnia egy ilyen függvénynek. Összetett, bonyolult, és annak ellenére, hogy az interfész függvények írását nagyon sok C preprocesszor makró segíti nem sokan vették a fáradtságot, hogy ilyent írjanak. Ezen kívül minden ilyen kiegészítésnek a ScriptBasic Classic interpreter memória menedzsmentjét kellett használnia, tehát ezt is meg kellett tanulni. (Amúgy a többi C-ben írt scripting nyelv is hasonló utat követ, például a Perl egyenesen saját preprocesszort használ hogy a C interfész függvényeket előállítsa az XS fájlokból, aminek az írását természetesen ugyancsak meg kell tanulni. Ha valakit ez a rész mélyebben érdekel, akkor fent vannak a slide-ok amiket egy fél év alatt adtam le a BME-n 2003-ban talán, Pongor Gyurival közös tárgyban. Ha valaki nem bízik bennem, akkor a Python hasonló interfésze is jó példa: tiszta, világos, érthető. Majdnem ugyanaz a struktúra, mint a ScriptBasic, és egyrészt megerősített, hogy jó úton jártam, amikor megismertem, másrészt átkoztam magam, hogy miért kellett kitalálnom a meleg vizet, amikor már megvolt.)</div><div><br></div><div>A Java környezet a reflection-nel lehetővé teszi, hogy ne kelljen semmilyen interfész függvényt írni, és a memória menedzsmentet is nagyon jól ellátja a Java, azt sem kell implementálni. Mivel a Java esetében az alkalmazások várhatóan inkább nem használnak fájl kezelést, mint igen, ezért logikusnak tűnik az a döntés, hogy alapból NE legyen benne fájl kezelés, de külső modulként igen. A külső modul pedig függvényeket tud definiálni, utasításokat (egyelőre) nem.</div><div><br></div><div>Kicsi azoknak a tábora, akik mind a kettőt használni akarják, és akiket ezért zavar, hogy a két megvalósított nyelv nem kompatibilis.</div><div><br></div><div>Mivel széleskörű felhasználói tábora a sb4j-nek nincs, ezért a fentiek, már ami azokat a dolgokat illeti, hogy a felhasználóknak mire van/lesz szükségük, nagyrészt csak a megérzéseim a szakmai tapasztalatom alapján: én mint Java fejlesztő mire használnék egy beillesztett scripting lehetőséget. Aztán, mint a classicnál is, majd az idő megmondja.</div><div><br><div apple-content-edited="true">
<span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; border-spacing: 0px; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="color: rgb(136, 136, 136); ">--</span><span class="Apple-style-span" style="color: rgb(136, 136, 136); "><br></span><span class="Apple-style-span" style="color: rgb(136, 136, 136); ">Verhás Péter</span><span class="Apple-style-span" style="color: rgb(136, 136, 136); "><br></span><span class="Apple-style-span" style="color: rgb(136, 136, 136); "></span><span class="Apple-style-span" style="color: rgb(136, 136, 136); "><a href="mailto:peter@verhas.com">peter@verhas.com</a></span><span class="Apple-style-span" style="color: rgb(136, 136, 136); "><br></span><span class="Apple-style-span" style="color: rgb(136, 136, 136); ">+36(30)9306805</span><span class="Apple-style-span" style="color: rgb(136, 136, 136); "><br></span><span class="Apple-style-span" style="color: rgb(136, 136, 136); ">skype: verhas</span></div></span><br class="Apple-interchange-newline"></div></span><br class="Apple-interchange-newline"></span><br class="Apple-interchange-newline">
</div>
<br><div><div>On 2013.01.19., at 11:09, Gábor Garami <<a href="mailto:gabor.garami@hron.me">gabor.garami@hron.me</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><span style="font-family: Verdana; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; display: inline !important; float: none; ">sb4j nyelvi szinten</span><br style="font-family: Verdana; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><span style="font-family: Verdana; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; display: inline !important; float: none; ">nem kompatibilis az elodjevel? Miert jo ez?</span></blockquote></div><br></div></div></body></html>