Archyvas

Įrašai, pažymėti ‘CRS’

XML – Amadeus, PNR, CRS, GDS, SOAP; Python VS Php

2009.11.24 Xamas Komentarų: 7

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 :D .

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” :D . Nes tada jau kuo toliau tuo labiau gaunasi ‘tas ant to’.