Citat:
Originalno napisao bojan_bozovic
@Petar
O kakvom objektno orijentisanom PHP pricas, kad bas kao i Perl ili Python, ne moras ni da deklarises promenjljivu da bi je koristio?

|
ovaj, a sto pljujes po stvarima o kojima ocigledno ne znas dovoljno?
u perlu zaista ne moras da deklarises promenjivu ako bas ne zelis (tipa pises skriptu od 10 linija i smara te da kucas vise nego sto moras), ali svaki perl tutorijal pocinje sa preprukom da OBAVEZNO koristis
use strict; na pocetku skripte, a tada MORAS da deklarise promenjivu da bi je koristio.
Znaci ovo sto pricas vazi za PHP, ali uopste ne stoji za perl, i ne treba da ih sve trpas u isti kosh...
I takodje u perlu imas mnogo napredniji scope mehanizam nego recimo u C-u, javi ili pascalu jer mozes da deklarises promenjive i kao lexicki lokalne sa
my, i kao dinamicki scope-ovane sa
local, a mozes i da koristis direktan pristup tabeli simbola pomocu. Tako da mozes mnogo finije da kontrolises sta je vidljivo odakle.
A inace sto se tice prijavljivanja gresaka kod kompajliranja C tu bas i nije neki heroj, pascal ima neuporedivo smislenije i korisnije poruke o greskama...a perl ima jos bolje jer ti uglavnom tacno kaze ne samo na kojoj liniji je greska nego i sta je verovatan problem.. i ima -W mod u kome moze da analizira kod i da ti da warninge oko verovatnih gresaka, tipa ponovljene deklaracije promenjive, promenjivi koje nisu nikad upotrebljen i slicno...
Citat:
Originalno napisao bojan_bozovic
Dalje, bolje je da je jezik kompajliran, makar se izvrsavao interpreterom kasnije, zbog prijavljivanja gresaka tokom kompilacije.
|
perl kompajlira kod pre izvrsavanja u neku vrstu bytekoda, slicno kao sto radi Java ili .Net
Citat:
Originalno napisao bojan_bozovic
Da su skripting jezici striktni kao tradicionalni, bilo bi mnogo lakse odrzavati veliku aplikaciju, plus imas razlog za OOP a to je definisanje potpuno apstraktnih objekata za reuse.
|
da su skripting jezici striktni po pitanju tipova, bilo bi mnogo vise gresaka i buffer overrun napada. Svojevremeno se francuska raketa Ariana srusila jer su (u C kodu) greskom u 16 bitnu promenjivu stavili 32 bitni broj. I zato je apstrakcija koju pruza mogucnost da u promenjivu stavis sta god hoces, a da ne moras da proveravas koliko je velik buffer super stvar
Potreba da konvertujes svaki karakter u integer pre nego sto ga upotrebis u nekoj aritmetickoj operaciji i obrnuto bi samo bio izvor gomile bugova. A greske koje bi mogle nastati zato sto si upisao broj u polje gde je trebalo da ide string su izuzetno retke i svode se na to da li znas da koristis neku klasu ili ne. Ako upises pogresne podatke u klasu naravno da nece raditi, ali tu ti strogi tipovi nece pomoci.
Citat:
Originalno napisao bojan_bozovic
recimo: object1.Re i object1.Im definises kao niz, a da ne mozes da mu pristupis kao nizu recimo sa object1[1]!=object1.Im Kako to u PHP ili u Perlu ili u slicnom jeziku (lose da gore ne moze biti).
|
ne kapiram bas ovaj primer, u kom jeziku mozes tako da pristupis propertiju objekta?
Koliko je meni u znanju, ako sam dobro razumeo sta si hteo da napises, sintaxa bi bila $object1->Im[1] i u PHP i u perlu, a $object1[1] ne bi trebalo da moze ?? To jest, za perl sam siguran da ovo ne moze, jer je tamo objekat referenca, a mislim da i u PHP-u isto. Takve stvari mozes da radis jedino u javascriptu jer su tamo nizovi u stvari propertiji objekta...