PHP & Flutter - povijest, sadašnjost i budućnost

PHP & Flutter - povijest, sadašnjost i budućnost

Popularni razvojni alati

Programski jezik koji je postao COBOL 21. stoljeća na strani servera i programski jezik (iako je preciznije napisati razvojni alat) koji bi to isto mogao postati na području razvoja mobilnih aplikacija. Čini se kao prikladna tema za čitatelje koji i tijekom ljetnog opuštanja misle na programiranje.

Iako je najbolje vrijeme u godini za pisanje ovakvih prikaza alata kraj tekuće ili početak nove godine, zapravo ni ovaj trenutak nije previše loš. Dio čitatelja će sigurno predstojeće mjesece godišnjih odmora iskoristiti za planiranje budućeg smjera svoje karijere, a to sigurno obuhvaća i planove o tome kakve razvojne alate treba koristiti u godinama pred nama.

U današnjem tekstu pozabavit ćemo se s dva trenutačno vrlo popularna, ali istovremeno skoro dijametralno suprotna razvojna alata. Jedan je prije svega namijenjen korištenju na strani web servera, a drugi na strani klijenta - prije svega za razvoj mobilnih aplikacija. Što ne znači da se oba alata ne mogu iskoristiti i drugačije. Pozabavit ćemo se ukratko njihovim nastankom i razvojem, trenutačnim stanjem, ali i budućnošću. Riječ je o PHP-u i Flutteru.

Kratka povijest PHP-a i Fluttera

PHP je nastao 1994. godine kao privatni projekt Rasmusa Lerdorfa namijenjen pojednostavljivanju praćenja broja posjetitelja na vlastitoj web stranici. U tom trenutku to zapravo nije ni bio PHP u današnjem smislu riječi, nego skup skripti napisanih u programskom jeziku C namijenjen rješavanju konkretnog problema. U toj prvoj verziji čak je i puni naziv jezika bio drugačiji nego danas. Umjesto početnog naziva „Personal Home Page“, tijekom vremena je naziv programskog jezika promijenjen u „Hypertext Preprocessor“.

 

Slika01.jpg

www.php.net/downloads.php : Adresa s koje se može preuzeti zadnja verzija PHP-a (8.5.5)

 

PHP se od tih početaka kontinuirano razvija i koristi sve do danas. Zbog ograničenja mjesta u časopisu samo ćemo spomenuti neke od najvažnijih trenutaka u razvoju:

  • 1995. Iz skupa skripti PHP se pretvara u PHP/FI (Form Interpreter).
  • 1997. Nakon potpune rekonstrukcije izdan je PHP 3 kao osnova za budući razvoj jezika.
  • 2004. U verziju PHP 5 dodana su objektna proširenja i podrška za PDO.
  • 2015. Preko verzije 7 PHP konačno postaje „moderan“ programski jezik dodavanjem strožih deklaracija, proširenjem objektne podrške i slično, uz istovremeno ogromno povećanje performansi u izvođenju s istim programskim kodom. Usporedo dolazi do pojave frameworka kao što su Laravel i Symphony.
  • 2020 (do danas). PHP 8 uvodi JIT i druge karakteristike modernih programskih jezika kao što su atributi, union tipovi i tako dalje.

Flutter (čiji je tvorac Google) prvi put je predstavljen 2015. godine. Slično kao i kod PHP-a, prva verzija je imala nešto drugačiji puni naziv – Sky. U ovoj inačici više je bila riječ o dokazivanju mogućnosti stvaranja modernog i višeplatformskog razvojnog alata s brzinom izvođenja jednakom ili sličnom nativnim alatima za te iste platforme, te s jednostavnom izradom i potpunom mogućnošću kontrole korisničkog sučelja.

Službeno je Sky pod novim nazivom Flutter predstavljen 2017. godine, a prva službena verzija objavljena je 2018. godine, kao razvojni alat koji u pozadini koristi programski jezik Dart. Jedna od ključnih početnih razlika Fluttera u odnosu na neke druge tehnologije (na primjer, React Native) bila je u tome što se kod prikaza korisničkog sučelja ne koriste podrazumijevane grafičke komponente za određeni operativni sustav, već sve komponente iscrtava sam pomoću vlastitog grafičkog sustava. To Flutteru omogućuje da radi izuzetno brzo i da praktično jednako izgleda na svim odredišnim platformama. Ali je to ujedno karakteristika kakva se možda ne dopada dijelu „čistunaca“ za određenu odredišnu platformu, budući da takvi očekuju da svaki detalj aplikacije izgleda baš kao što se očekuje na toj platformi.

Ubrzo je Flutter prihvaćen za razvoj aplikacija i od strane zaista velikih tvrtki kao što su sam Google, BMW, eBay i druge. Verzija objavljena 2021. otišla je korak dalje u smislu podrške za različite operativne sustave: Android, iOS, web, Windows, macOS, Linux, pa čak i embedded uređaje.

 

Slika02php.jpg

 www.stitcher.io: Trenutačna zastupljenost PHP-a prema verzijama i godinama

 

Evo odmah i malo iskustva o prenosivosti Fluttera iz prve ruke. Autor teksta mora priznati da je od početka pojave pametnih mobilnih uređaja htio pisati vlastite mobilne aplikacije, ali do pojave Fluttera mu to zapravo nikad nije išlo od ruke. Iako je objavio neke manje uratke za Android, jednostavno nikad nije imao ni vremena ni volje da upozna „native“ tehnologiju razvoja za iOS. Pojavom Fluttera (pogotovo novijih verzija) zaista je postalo moguće koristiti praktično isti programski kod i za Android i za iOS. Ponekad se pojave poneki manji problemi, ali su oni relativno lako rješivi. Na primjer, u nekoliko zadnjih verzija postoje određeni problemi kod prikaza većih izbornika koji počinju na gornjoj desnoj strani mobilne aplikacije na iOS platformi (što priznaju i Apple i Google), pa onda to morate napraviti malo drugačije. Ali je istovremeno riječ o nečemu što će se sigurno ispraviti tijekom vremena.

Drugim riječima (ako biste se htjeli izraziti malo slikovitije) kod izrade svoje nove mobilne aplikacije više ćete vremena potrošiti na razlike u popunjavanju Googleovih i Appleovih razvojnih konzola za prijavu karakteristika i mogućnosti aplikacije, nego što ćete potrošiti na eventualno prilagođavanje aplikacije za razlike među platformama.

Nažalost, kod svih ranije nabrojenih platformi situacija ipak nije tako jednostavna. Ako probate isti programski kod - koji se bez problema izvodi na Android i iOS platformi - poslati na prevođenje kako bi postao Windows Desktop aplikacija, osim u slučaju nekakvih vrlo jednostavnih primjera, to jednostavno neće dobro završiti već na samom pokušaju prevođenja. Iako se autor teksta nije bavio nekakvom detaljnijom analizom zašto se to točno događa (jer mu zapravo nije bila potrebna izrada Windows Desktop aplikacije), gotovo sigurno je većina problema povezana s dodatnim bibliotekama kakve se u pravilu koriste u složenijim Flutter projektima. Takve biblioteke nerijetko izrađuju nezavisni autori ili grupe autora, a oni često ne provode optimizaciju za sve platforme, i eto glavnog izvora problema. Bilo bi lijepo kad bi se to u budućnosti riješilo do kraja, pa da prenosivost zaista bude blizu 100% među svim podržanim platformama.

Na kraju ovog dijela, još jedna bitna karakteristika Fluttera koja izaziva osmijeh na licu programera, pogotovo kod vrlo složenih projekata. To je takozvani „hot reload“. Kad se naprave manje promjene u kodu (nerijetko to vrlo dobro radi i kod većih promjena), u svega nekoliko sekundi se u emulator (ili u fizički uređaj) za testiranje prenose sve promjene bez potrebe za dugotrajnim prevođenjem cjelokupnog koda ispočetka.

 

Slika03php.jpg

www.stitcher.io: Najpopularniji dodatni alati koji se koriste uz PHP

 

Sadašnjost...

Podaci o trenutačnom korištenju obaju razvojnih sustava prilično su impresivni. Na temelju tih podataka (čak i prije nego se više raspišemo o detaljima na temelju istraživanja provedenih od strane različitih izvora), može se zaključiti kako odabirom bilo kojeg od ova dva alata (ili njihovim zajedničkim odabirom) ne možete baš katastrofalno pogriješiti u svojoj profesionalnoj karijeri.

Prema https://w3techs.com/, PHP trenutačno pokreće oko 71,2% ukupnog broja rješenja na strani web servera kao glavni pozadinski jezik. U apsolutnom iznosu to je više od 33 milijuna web lokacija širom svijeta. Pri tome WordPress (kao svojevrsna nadogradnja PHP-a) pokreće 42,2% svih web lokacija, što predstavlja čak 59,6% cjelokupnog CMS tržišta. Zanimljivo je da, iako popularnost PHP-a pada (pogotovo među mlađim programerima), to je i dalje vrlo spor proces i mjeri se u rangu od maksimalno nekoliko postotaka godišnje.

Opet, ako se želimo slikovitije izraziti, možemo reći kako PHP zapravo predstavlja COBOL za 21. stoljeće. U njemu postoji tolika količina napisanog koda i toliko izrađenih rješenja da zapravo nema dovoljno ljudskih resursa za prepisivanje svega toga u neke druge tehnologije. Bitno je spomenuti i to da je velika većina PHP rješenja prebačena na najnovije verzije PHP-a 8.x (skoro 60%) što znači da se u praksi koriste verzije s najmodernijim karakteristikama jezika i najboljim performansama.

Flutter se kao mnogo mlađi razvojni alat ne može pohvaliti baš tako impozantnim brojkama, ali ni on ne stoji loše. Prema https://tech-insider.org/, Flutter zauzima 46% tržišnog udjela među programerima koji koriste hibridna rješenja, što je znatno više od glavnog konkurenta React Native (oko 35%).

Na platformi GitHub upravo Flutter predstavlja jedan od najaktivnijih open-source projekata, a službena biblioteka dodataka (Flutter paketa) pod nazivom pub sadrži više desetaka tisuća paketa. Ne treba zaboraviti spomenuti niti činjenicu da su oglasi za posao Flutter programera među najbrže rastućima na svijetu, prema godišnjoj stopi od čak 47%.

Također nešto što je vrlo bitno u današnje vrijeme, i PHP i Flutter su jako dobro podržani u vibe coding postupcima, što znači da i na takav način možete pisati nove aplikacije ili održavati stare. Ali to ujedno predstavlja određenu opasnost za budućnost, pogotovo za PHP.

 

Slika06php.jpg

PHP u 2026. godini: Najvažnija predviđanja za 2026. godinu

 

Slika04php.jpg

Laravel: je framework koji se danas najviše koristi uz PHP (www.laravel.com )

 

Slika05php.jpg

Platforma Cloudflare: Ne „voli“ baš PHP, kao ni neke druge moderne infrastrukture

 

...i budućnost

Na temelju prethodno iznesenih brojki, budućnost obaju sustava izgleda prilično svijetla. Ipak, za oba razvojna alata postoji nekoliko potencijalnih problema.

PHP u prošlosti, a ni u sadašnjosti baš i nije nešto previše orijentiran prema pametnim AI rješenjima. Iako to ne znači da se ne mogu iskoristiti biblioteke takve namjene pripremljene za druge programske jezike, ipak to nije potpuno isto. A ako krenete razvijati novi sustav zato što vam je u njemu jako potreban AI dio, pa zato posegnete (kao što je danas uobičajeno) za Pythonom, zar onda nije logično sve do kraja odraditi baš u Pythonu?

PHP također nije previše ni na „ti“ sa sustavima gdje je potrebna brza komunikacija između procesa, obrada podataka u stvarnom vremenu, asinkrono programiranje i slično, kad je puno bolje posegnuti za nekim drugim programskim jezikom kao što su Go ili Rust. Uostalom, jedan interni projekt za časopis VIDI (da ne „zabrijemo“ s detaljima) susreo se sa sličnim problemom, zbog čega je kritični dio iz PHP-a prebačen u Go.

Ne pomaže mu ni pojava platformi kao što je Cloudflare. Samo o korištenju ove platforme mogao bi se sigurno pripremiti jedan poduži tekst, ali ćemo se za sada usredotočiti samo na detalje povezane s PHP-om. Iako primarna ideja u razvoju platformi kao što je Cloudflare nije ni bila postati puni hosting za različite sustave, nego prije svega poslužiti kao inteligentni posrednik između korisnika neke web lokacije i pravog hostinga u pozadini (ali zato s dodatnim funkcijama keširanja sadržaja zbog brzine pristupa i sprečavanja napada na izvorni hosting), Cloudflare se ipak može iskoristiti i za puni hosting vlastitog rješenja. Problem je što u tom slučaju nije podržan PHP!

 

Slika07php.jpg

www.flutter.dev: Adresa s koje se može preuzeti zadnja verzija Fluttera (3.41.9)

 

Iako će mnogi programeri na prvu reći kako to i nije previše bitno, jer Cloudflare ne bi trebao poslužiti kao zamjena za klasični LAMP hosting, situacija postaje bitno drugačija kad se u obzir uzme danas vrlo popularni vibe coding! Autor teksta u ovom trenutku zna za dva projekta (i to samo u Hrvatskoj, a vjerojatno ih ima nebrojeno više po cijelom svijetu) prebacivanja postojećih PHP/MySQL rješenja razvijanih godinama u novi oblik korištenjem tehnologija podržanih na Cloudflare platformi upravo pomoću vibe codinga. A to znači uklanjanje PHP-a iz cijele priče. Ideja u pozadini projekata je brže i jeftinije održavanje rješenja u budućnosti. Ujedno i smanjene cijene hostinga. Tako da bi ovakav pristup mogao postati jedan od glavnih ubojica COBOL-a, pardon PHP-a, u budućnosti.

Kad je riječ o Flutteru, problemi su malo drugačiji, ali također potencijalno dosta opasni za budućnost.

Već spomenuta nemogućnost korištenja istog koda na svim „podržanim“ platformama može tvrtke natjerati da zaobiđu Flutter, ako im je baš neophodan višeplatformski rad. Opet informacija iz prve ruke o navedenom problemu. Tvrtka iz Hrvatske razvijala je Flutter rješenje koje bez problema radi na Androidu i iOS platformi, a podatke sprema u Googleovu bazu Firebase. Međutim, zbog karaktera projekta u ovom slučaju je bio neophodan i „pozadinski dio“ za analizu podataka spremljenih u Firebase. Takav modul, zbog trenutačnih ograničenja Fluttera, jednostavno nije mogao biti napravljen kao desktop aplikacija u Flutteru, nego su prije spomenute mobilne aplikacije namijenjene krajnjim korisnicima proširene administrativnim modulom, jer je tako bilo puno jednostavnije. Neka druga tvrtka bi zbog ovakvog ograničenja možda izabrala neki drugi alat za razvoj mobilnog rješenja.

 

Slika08php.jpg

https://www.spaceo.ca/ : Primjeri aplikacija razvijenih u Flutteru

 

Drugi (jako veliki) problem stvara sam Google restrukturiranjima i otpuštanjima djelatnika zaduženih za budući razvoj Fluttera. A tako nešto baš ne može garantirati svjetlu budućnost nekog razvojnog alata, zar ne?

Treći problem povezan je s korištenjem Fluttera u web rješenjima. Iako je kompatibilnost u razvoju web rješenja u odnosu na mobilne aplikacije puno bolja nego prije istaknuta kompatibilnost desktop rješenja, problem je u tome što način na koji se iscrtavaju elementi na web rješenju (vlastiti grafički sustav) nije baš u simbiozi s načinom na koji funkcioniraju web tražilice, zbog čega Flutter baš i nije u dobrim odnosima sa SEO pravilima.

Zbog istog razloga prisutan je još jedan problem s vlastitim iscrtavanjem HTML elemenata. Uzmimo na primjer dobro poznati element HTML SELECT, koji na nekom web rješenju, kad se izvodi u standardnom pregledniku, prikazuje tridesetak mogućih vrijednosti. Možda malo više vrijednosti nego što je uobičajeno, ali i dalje sasvim podnošljivo kad se koristi u standardnom pregledniku. Međutim, u nekakvoj mobilnoj aplikaciji koja u prikazu samo „zatvara“ neku web lokaciju, to neće biti prikazano baš tako. Umjesto standardnog SELECT elementa pojavit će se prirodni Flutter element za odabir vrijednosti, a on je puno nezgrapniji u slučaju većeg broja vrijednosti. Može se riješiti, ali nije baš na „basic“ nivou korištenja Fluttera.

 

Slika09php.jpg

https://github.com/topics/flutter-examples: GitHub repozitorij s primjerima Flutter aplikacija

 

AI „buncanje“

Iako ovo nije izravno povezano s današnjim tekstom, činilo nam se zgodnim za spomenuti, jer se može dogoditi u praksi i čitateljima ako intenzivnije koriste vibe coding. Pogotovo zato što se slučaj dogodio upravo na PHP/MySQL rješenju. I to ponovo u Hrvatskoj (danas smo baš „zabrijali“ na primjerima iz domaće prakse). Tako da imate uvid u stvarni primjer koji pokazuje kako ni AI još uvijek nije savršen, nego ponekad malo „odluta u mislima“ kod rješavanja problema.

U postojećem PHP/MySQL sustavu u tablici proizvoda postojala je oznaka za označavanje smije li neki proizvod biti na popustu ili ne. Ta oznaka je iz nekakvih povijesnih razloga bila pripremljena na malo zastarjeli način. U istom stupcu tablice različita slova ili kombinacije slova označavala su različite karakteristike proizvoda. Konkretno, slovo „P“ je označavalo da proizvod smije biti na popustu.

U PHP modulu koji je trebalo modernizirati i poboljšati vibe codingom trebalo je obavezno ostaviti mogućnost korisniku rješenja da sam može izabrati želi li prikazati samo proizvode na popustu. Znači, u odnosu na pozadinsku MySQL tablicu, to bi u SQL „where“ dijelu bilo nešto kao:

where proizvod.status = ‘P’

AI agent korišten kod vibe codinga (nećemo namjerno spominjati konkretnu implementaciju) na temelju strukture baze i postojećeg koda to nije uspio shvatiti, pa je na tom istom mjestu jednostavno napisao uvjet:

where proizvod.na_popustu = ‘D’

Drugim riječima, forsirao je rješenje (koje jednostavno nije moguće, jer nema takvog stupca) i javio da je sve riješeno. A redizajnirani modul nije nikako mogao raditi dobro na ovom dijelu upita. Da stvar bude gora, „junior programer“ u pozadini vibe codinga nije uopće mogao razumjeti gdje je problem (pa AI je javio da je sve riješeno), dok stvar nije pregledao „glavni programer“. I ručno malo popravio stvar.

Zaključak

Oba alata spomenuta u današnjem tekstu su trenutačno u svojem „prime time“ razdoblju. Na prvi pogled ne bi se trebalo puno toga promijeniti ni u budućnosti, što znači da je sa stanovišta vlastite profesionalne budućnosti dobro izabrati PHP, Flutter ili oboje. Ipak, u AI vremenima treba biti oprezan, kao i sa svime drugim sa čime je povezan AI. A sa čime nije?

Vezani sadržaj:

  • Spybot - Search & Destroy

    Lovac na špijune

    Nekad esencijalni alat i dalje je vrijedan obrambeni bedem protiv spyware prijetnje.

  • Autonomni AI Security agenti

    Autonomno hakiranje - nova era

    AI agenti kao što su Shannon, XBOW, PentestGPT i Pentest AGI mijenjaju temelje security industrije.

  • Self-hosting 2. dio

    Self-hosting dodaci 

    U prošlom broju smo malo opširnije pokrili temu i koncepte self-hostinga, kao i selekciju aplikacija i servisa zgodnih za početak gradnje homelaba. Kao što smo tada i spomenuli, primjenjivih mogućnosti i kombinacija praktički ima beskonačno, tako da ovaj put donosimo dodatnu selekciju korisnih projekata koji unaprjeđuju i olakšavaju korištenje vlastitog okruženja.

  • Novi život za zastarjele uređaje

    Korištenje starih računala, tableta i mobitela

    Moraju li se stvarno baciti?

  • Kultni audio reproduktor: foobar2000

    Bez šminke

    Minimalistički pouzdan već preko dvadeset godina.

// možda će vas zanimati

Newsletter prijava


Kako izgleda naš posljednji newsletter pogledajte na ovom linku.

Copyright © by: VIDI-TO d.o.o. Sva prava pridržana.