XML – Amadeus, PNR, CRS, GDS, SOAP; Python VS Php
Prieš kelis mėnesius maniau kad apie XML’ą žinau didžiąją dalį ir ten nieko naujo būti negali. xml.gz kūrimus/eksportavimus/nuskaitymus laikiau sudėtingesne užduotimi.
Tačiau, kaip sakome, technologijos ir reikalavimai vietoje nestovi.
Todėl visai nenustebau gavęs requirement listą su reikalavimais:
- Įsisavininti ir tinkamai panaudoti SOAP duomenų perdavimo šifravimą vykdant prisijungimus per XML.
Pilnai įsisavinti Amadeus sistemos sąsajos kvietimus ir panaudojimus. - Suprogramuoti ir automatizuotai įvykdyti(sheduled cronjobs) P.N.R.(part of <– CRS) transakcijos importus automatizuotų modulių pagalbą.
- Naudoti GDS sitemų gražinamą informaciją tiesioginės transakcijos būtu.
* Tiems, kas nežino:
PNR - Passenger Name Record
CRS – Computer reservations system
GDS – Global Distribution Systems
Dar vienas dalykas kuris mane kiek nudžiugino yra tai, kad vis dėl to iš universiteto naudos kažkiek yra. Iki universiteto UML diagramų paišyti ir jų skaityti tikrai papildomų pastangų mokytis nedariau. Turėjau galima sakyti tik pačius pagrindus, būtinus suprasti reikalavimus.
O štai dabar jau turbūt gerą pusmetį pastebiu kad visi projektai kuriuos kuruoju/programuoju ar dalyvauju realizuojant/programuojant eina su milžiniškomis *.pdf dokomentacijomis:
- prieš metus-pora 80 proc. atvejų jos būdavo 1-5 A4 puslapių dydžių, be UML diagramų, ir tik 20 proc. turėdavo primityviais diagramas, būtinas suprasti reikalavimams.
- pastarąjį pusmetį dokomentacijų dydžiai vis augo jau geometrine progresije. Ir pastaruosiuose projektuose vien dokomentacijoms perskaityti reikia skirti keleta dienų, kadangi jų dydžiai pradėjo viršyti 100-140 puslapių.
Na ir čia jau turbūt nenuostabu, kad visi tie ‘docummentation’ai kupini sekų, būsenų, ER, klasių(class), veiklos(activity), objektų(objects) ir netgi diegimo(deployment) diagramų.
Todėl dabar jau turbūt užtikrintai galiu sakyti, neįsisavinus UML’o praktiškai nieko stambesnio nesuprogramuosi, nes requirementus ir realizaciją aprašo matomai specialūs UML ‘profai’, kurių atrodo kiekvienoje stambesnėje įmonėje yra net po keletą.
Na o iš viso to seka, kad funkcinis programavimas tampa praktiškai neįmanomas norint teisingai realizuoti reikalavimus. Viskas praktiškai seka tik per objektus.
———-
Python:
Vis dažniau pastaraisiais mėnesiais į mano valgiaraštį patenka prieskonis ‘Python’. Todėl visai nenustembu kad Gūglas gražina 28 milijonus rezultatų su fraze ‘Python VS Php’.
Vienas žmogelis kaip argumetą ‘why the php is the greatest programming language in the world’, pateikia šias eilutes:
$a = 'var'; $b = 'iable';
$variable = 'var';
echo ${$a.$b};
$filter = array("name", "email");
foreach($filter as $v) $$v = $_POST[$v];
Šaunu, ar ne?
Nedaugelis programavimo kalbų gali pasigirti tokia realizacija
Pitonu paskutinės dvi eilutės būtų realizuojamos taip:
post = {'name': 'ijoshua', 'email': 'spam@example.com', 'extra': 'data'} filter = ['name', 'email'] for k in filter: locals()[k] = post[k] print name, email
Kuri programavimo kalba yra geresnė, atsakymai ir ginčai turbūt būtų beprasmiai, tačiau bendrai ką pastebėjau, tai, jeigu žmogus programuoja Php, jis yra linkęs po kiek metų išmokti ir Python(o jeigu tiksliau, tai Ruby on Rails programavimą, na bet Python turbūt būtų geriausias jų atstovas). Ir būna nemažai atveju netgi taip, kad tas programuotojas pereina nuo Php į Python.
Tačiau visi Python’instai kažkodėl labai dažnai pasisako prieš Php, ir nė nebando pažinti šios programavimo kalbos subtilybių.
Python(ir viso ruby on rails) privalumas yra tas, kas jis pasižymi geresniu skaitomumu nei Php. Ten nebėra kabučių print’e, kabliataškių eilutės pabaigoje, nebeliko ir laužtinių skliaustų {}. Praktiškai kodas turėtų išties gebėti būti rašomas ir skaitomas greičiau. Bet ne visada praktika atitinka tikrovę.
Tačiau,
- Python’as turi kur kas ribotesnį funkcijų sąrašą, metodų, operatacijų sąrašą nei Php.
- Kitas dalykas, nors ir sakoma kad Python turi tokį pat gerą documentation’ą, tačiau aš visgi tikrai pastebėčiau, kad bendro internete išplatinto ‘example’ kodo, bei tutorial’u atžvilgiu, bei ypač DAUGIAKALBIŠKUMO šitiems dalykams(Php LT doc’as interneto platybėse yra tikrai didžiulis) atžvilgiu Php yra geresnėje situacijoje.
- Trečias dalykas, visgi vėl tie patys Python naudotojai pripažysta, kad Php web terpėj kai kuriais atžvilgiai tikrai yra paprastesnis – pvz. sql prisijungimu ir pan. Tačiau Python’as dar yra plačiai taikomas Desktop programoms ir sisteminiam script’inimui, ko nėra Php atveju.
- Python’as praktiškai turėjo sujungti C++ ir Php į kažką vieną, Ruby on Rails pagrindu. Kadangi Python’u suprogramuotas Jūtūbas, tai galima būtų sakyti, kad jiems tai neblogai ir pavyko.
- Php kompiliavimo/vykdymo laikas yra geresnis nei Ruby on Rails atveju, t.y. naudojant pvz. Python. Tačiau jeigu labai aktualus greitis tai tam pasitelkiamas ASM arba išvis tiesiog 0/1 kodas.
Na bet tai kol kas tik teoriją. Phyton teks išmokti iki kitos vasaros, lygiai taip pat kaip teko mokytis C# praėjusį šių metų pavasarį. Kaip sakoma nuo reikalavimų nepabėgsi – jeigu jau kartą teko rašyti WWW tinklapį C#(.NET)’u ir tą padaryti pavyko sakyčiau, kaip pirmą kartą dirbus konkrečiai su C# (.NET), tai matyt turėtų pavykti ir Phyton’u.
Na, nors projekto su Python’u end-line’as dar už bene pusmečio, tačiau jau šiandien parašiau pirmąsias 70 eilučių Python kodu. Liko dar 9930. Aišku antrąjį skaičių primečiau kreivai iš akies, bet +-~ kažkas tokio
.
Tad skirtumas tarp studentų besimokančių Python’ą universitete ir darbe matyt tiktais vienas – čia tau dar ir sumoka už tai kad tai išmoktum :).
Apie universitetines elgetos dydžio stipendijas nekalbu. Nors, tiesa sakant, turbūt per gerai pasakiau – tiksliau būtų ‘Prienų bobutės pensijos dalis išskaičiavus pragyvenimo išlaidas’. Taip, galbūt ir atsiras smerkiančiųjų, tačiau manau 95 proc. studentų pasirinktų ‘darbas+studijos(5-8 pažym.)’, vietoje ‘tik studijos 9-10 balų pažymais+stipendija’… Svarbiausiai, kad pirmajam atvejui nereiktų pridėti prie sąrašo “-X dalykų kartojimas”
. Nes tada jau kuo toliau tuo labiau gaunasi ‘tas ant to’.
Labai gaila, kad painioji Python kalbą ir Ruby on Rails, kuris yra web framework’as padarytas ant Ruby kalbos (taip, Ruby visai kita kalba!).
Dabar dėl to kalbų palyginimo: tos 2 eilutės PHP kodo atitinka antrą ir trečią tavo parašytas python kodo eilutes. Taigi, eilučių skaičius tas pats, o simbolių gaunasi net mažiau.
Python ir Ruby kalbos web’e dažnai naudojamos su framework’ais (dažniausiai Django ir Ruby on Rails). Manau, būtų neprošal pasidomėti jais (užsukęs į youtube rastum daug medžiagos).
Na tai be abejonės bus dar laiko pasidomėti daugiau ir plačiau.
Na aš apie Ruby on Rails GALVOJAU kaip apie technologinį sprendimą, kuriuo remiantis parašytos ‘python’ ir kitos pan. kalbos. Bet neparašiau kad manau jog Ruby ir Phython yra ta
pati kalba. Būtent turėjau omeny kad Phyton’as padarytas iš ruby, nes jau vien iš source kodo matosi, kad Phyton kodas yra dar kažkiek paprastenis už Ruby. Čia panašiai kaip C ir C++, kas
faktiškai reiškia jog C++ yra tiesiog patobulintas ir supaprastintas C.
Na bet kol kas tik pora dienų skyriau susipažinimui su Python ir parašiau labai mažai kodo šia kalba, tai kažko ypatingo nepasakysiu.
@Xamas
Jeigu pasižiūrėtum į wikipedia, pamatytum, kad Python yra senesnė kalba už Ruby. Taip pat wikipedia rašo, kad Ruby kalbą įtakojo Python.
Nesuprantu ko tu čia kiši Ruby on Rails prie python, kai pats ROR pasirodė tik 2004 metų viduryje ir pats nėra kalba, o tik framework’as.
Būtent, būtent, tą patį norėjau sakyti. Python ir Ruby visai skirtingos kalbos. O tuo labiau skiriasi Python (kalba) ir RoR (framework’as).
Kartoju tai, kas pasakyta, bet tiesiog labai teisingai pasakyta.
Na tai pagal viską tada nėra pointo mokytis Python’o, nes jis old-timer jau programavime. Vadinasi Python’ą keičia Ruby’io ROR’as. Visi ROR’as yra web programavimui skirtas.
Ta gaunasi patvirtintu lyg ir lentelė į kurią buvo nuorodą Marius numetęs:
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Php, C-Sharp’as ir matyt Ruby kyla aukštyn, o Python’as žemyn.
Esmė ir yra ta, kad visų kalbų visvien nemokėsi ir visom neprogramuosi. Pasirenki keletą pagrindinių su geriausiomis perspektyvomis.
Šiuo atveju po M$ konferencijos tikrai galėčiau drąsiai sakyti, kad jeigu SilverLight’as 4 taps all-supported(t.y. 92 proc. auditorijos), tai praktiškai turėsime next-gen programavimą, kur kodo jokioms animacijoms/efektams ir kitiems grafiniams dalykams apskritai nereiks rašyti, o kitur tik minimaliai. Praktiškai teliks tik algoritmus kokio nors reikalaujamo skaičiavimo su C# parašyti.
Iš to tikrai galima daryt prielaidą, kad toje lentelė C# kokiais 2012′aisiais jau turės virš 10 proc. rinkos.
Kitas aspektas – vėlgi kaip nepaminėjus Php. Iš to ką daro Php dev’ai vėlgi būtų galima teigti kad po 4-5 metų Php dalis gali siekti ~20 proc. rinkos. Kadangi praktiškai ką nori padaryti Php, tai all-supported. 5.30 jau palaiko ir Jump’us bei GoTo.
Negana to jie neigti integravo Garbage Collectorių.
Jeigu esu teisus, tai jį ligi šiol turėjo tik Java ir C#.
O php6 jie ketina viską padaryti unikodu(ko net windowsams nepavyksta tiek metų ;D), ir matyt sudėti visas kitas funkcijas sukurtas per tą laiką kitose kalbose. Ir ne šiaip sau unikodą(t.y. UTF-8), bet iškart griebia jautį už ragų – dvigubinis visus stringų ilgius automatiškai, ir viską parems UTF-16, o tai reiškia kad kiekvienas char’as turės ‘16 bitų žodis’ dydį, kas praktiškai būtų turbūt bene visi įmanomi pasaulio naudojami simboliai visomis kalbomis.
Iš esmės gaunasi taip, kad ateityje jie siekia, kad nesvarbu kuo programavimai prieš tai, bet lygiai taip pat su mažais pakeitimais galėsi programuoti ir toliau tik jau Php.
Tą puikiai įrodo net ir dubliuojami pavadinimai ar pan. paskirties funkcijos:
print() ir echo;
sizeof() ir count();
explode() ir split();
ir t.t.
@Xamas
Turbūt nepastebėjai, kad toje lentelėje pavaizduotas kilimas/kritimas pagal pozicijas rodyklėmis, o pats pokytis procentais pavaizduotas priešpaskutiniame stulpelyje.
Reitinguose kils arba liks turbūt vadinamos “enterprise” kalbos su didelių korporacijų užnugariu. T.y. Java, C# ir dar gal kas nors.
GC turi daugelis kalbų (įksiatant tavo minėtas Python ir Ruby), Php ankščiau tikrai neturėjo?
Dėl unikodo, tai wikipedia turi straipsnį apie UTF-16 ir ten viskas gražiai surašyta. Php užmojai yra jokia ne naujiena.
GC Php’e atsirado nuo 5.3.0, iki tol toks pats kaip C++ variantas buvo, t.y. __destruct();
Nuo 5.3.0 atsirado dar vienas fun dalykas – galimybė dėti ‘dangčius’ funkcijoms(galima gražinti funkcijos funkciją pagal pačią funkciją.
function getAdder($x) {. return function ($y) use ($x) {
. . return $x + $y;
. };
}
$adder = getAdder(8);
echo $adder(2); // gražina "10"
Dėl UTF-16, tai žinau kad yra straipsnis, pats jį kaip vieną iš daugelio skaičiau kažkada. Būtent ir norėjau pasakyti php užmojų mastus(nesvarbu kad jie nėra nauji), ir kad juos realizavę su Php6 Phpdev atsirieks kur kas didesnį rinkos kasnį.