DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   PHP (http://www.devprotalk.com/forumdisplay.php?f=9)
-   -   Izbor PHP Framework (http://www.devprotalk.com/showthread.php?t=3434)

bluesman 18. 02. 2010. 15:19

Off Topic: "Izbor PHP Framework"?

Ko mu dade takvo ime? Nije gramatički ispravno a i taj koji je pokrenuo ovu temu je omašio temu - uopšte ne pričamo o tome. Znači naslov teme je offtopic :)

degojs 18. 02. 2010. 15:27

Citat:

Originalno napisao Misha
Automatski osim kad se to ne dogodi..

To nije problem JS-a, već onog ko je implementirao upravljanje memorijom, itd. Npr. Chrome može da to radi bolje, a IE6 lošije.

xippi 18. 02. 2010. 15:32

Citat:

Originalno napisao Misha (Napišite 79888)
Predpostavljam da za layout management i ostalo sto JQ nema koristis third party pluginove... il se trudis da ih ne koristis da sve sam pises?

pazi, jq je samo set helper funkcija a jqui samo set kontrola, implementacija je na developeru :) postoji sasvim fin third party layout plugin koji omogucava pravljenje viewportova i ostalog o cemu pricas. ovo moje je sa druge strane sasvim custom tako da layout manager pisem sam. imam blanko html, u koji ubacujem templejtovane objekte (predefinisan, konfigurabilni html), pri cemu se trudim da sve to bude kompatibilno sa themerollerom

a ovaj razgovor dalje definitivno uz pivo ili na drugoj temi :)


btw ajd stvarno neka neko splituje topic... od 6te strane gde smo poceli da pricamo o kapucinu :)

xippi 18. 02. 2010. 15:35

Citat:

Originalno napisao bluesman (Napišite 79892)
Znači naslov teme je offtopic :)

ovo cu da ti ukradem i stavim u signu :)

jablan 18. 02. 2010. 18:59

Citat:

Originalno napisao degojs (Napišite 79887)
Jednostavno želim da imam mogućnost da definišem ugovor, kao i da jednostavno testiram da li prosleđeni objekt ispunjava potrebne uslove iz istog (vrlo jednostavno ako imaš interfejs).

Je l' ti kontaš uopšte da je interfejs kao OO koncept nužno zlo, tj. predstavlja workaround da bi se u statički tipiziranim jezicima koji ne podržavaju višestruko nasleđivanje odradile neke stvari koje se u duck typingu podrazumevaju?

Ako je nekom uopšte potrebna striktna kontrola toga da li neki objekat odgovara nekom interfejsu, najmanji je problem implementirati tako nešto (kao ovaj lik sa xippi-jevog linka, mada i on koliko vidim više razonode radi), pošto je refleksija kod dinamičkih jezika isto po pravilu ko dobardan. Mada i to nema puno smisla pošto dinamički jezici obično nemaju "potpise metoda" u C-smislu reči, odnosno metode mogu da prime i vrate uslovno rečeno bilo šta. To je feature, a ne bug. :)

Drugim rečima, ako želiš da ti se kodiranje svodi na "definisanje ugovora", onda i dalje kodiraš u VB.NETu ili čemu već... ;)

degojs 18. 02. 2010. 19:47

Šta? LOL

Citat:

"Interfejsi su nužno zlo u jezicima koji ne podržavaju višestruko nasleđivanje..."?
Ne, interfejsi se koriste i jednostavno da bi objavio ugovor koji strane moraju da ispoštuju.

Jednostavno, izuzetno kratak način da objaviš ugovor (skup funkcija i svojstava).

Citat:

Ako je nekom uopšte potrebna striktna kontrola toga da li neki objekat odgovara nekom interfejsu, najmanji je problem implementirati tako nešto, pošto je refleksija kod dinamičkih jezika isto po pravilu ko dobardan.
Hahha, "ako je nekom uopšte potrebna.." :D

Aha, znači treba da ispitujem:

1. da li x može da hoda?
2. da li x može da trči?
3. da li x može da radi x, y i z?
4. da li x ima svojstvo "visina"?
....
Nego da pitamo kratko: da li objekt može da se tretira kao "čovek" (gde smo unapred definisali svojstva i funkcije koje "čovek" podržava)?

Ako ćeš tako, sve može da se odradi na okolni način, ali možemo i da osnovne računske operacije obavljamo direktno baratajući registrima na procesoru, šta će nam bilo kakva apstrakcija.

Citat:

Drugim rečima, ako želiš da ti se kodiranje svodi na "definisanje ugovora", onda i dalje kodiraš u VB.NETu ili čemu već...
Kakvo "programiranje koje se svoji na definisanje ugovora"? To bi trebalo da znači nešto konkretno? Drugim rečima, poštedi me komentara sa visine ako nemaš šta konkretno da kažeš.


Inače, odgovor sam potražio i našao sam, umesto ovakve besmislene priče sa tobom. Stvar može da se reši drugačije u JavaScript-u, prostim prototype nasleđivanjem, slično kao što se C++ čisto virtuelne klase koriste u zamenu za interfejse. Otprilike ovako:
Kôd:

function IDuck() {
}
IDuck.prototype = {
  duck : function() {},
  walk : function() {}
}

function Guska() {
}

Guska.prototype =  new IDuck();

var g = new Guska();

alert ( g instanceof IDuck ); // true!


degojs 18. 02. 2010. 20:00

U stvari, nije baš tako jednostavno kao ovo gore, jer to opet ne garantuje da objekat zaista ima vlastitu implementaciju definisanih metoda. Oh, well.. mene mrzi dalje da tražim :D

jablan 18. 02. 2010. 20:27

Citat:

Originalno napisao degojs (Napišite 79914)
Ne, interfejsi se koriste i jednostavno da bi objavio ugovor koji strane moraju da ispoštuju.

O gospode... Vidi: taj ugovor kod interpretiranih jezika nema nikakvu težinu jer ne postoji kompajler koji se buni ako "ugovor nije ispoštovan". Sa druge strane, u rantajmu se ta provera radi vrlo lako i nije neophodan nikakav veštački language construct da bi se to izvelo, već se to radi sa postojećim konceptima (npr. običnim metodama).

Taj "ugovor" o kome pričaš zapravo nema veze sa koderom. U pitanju je ugovor sa kompajlerom, tj. jedini način da ti kompajler dozvoli da pozivaš iste metode na objektima različitih klasa. Drugim rečima, pisanje interfejsa je tvoja obaveza, a ne privilegija.

Mislim, ja kapiram da ti to znaš, pišem ovo zbog omladine koja ovo čita... :)

Citat:

Aha, znači treba da ispitujem:

1. da li x može da hoda?
2. da li x može da trči?
3. da li x može da radi x, y i z?
4. da li x ima svojstvo "visina"?
....
Nego da pitamo kratko: da li objekt može da se tretira kao "čovek" (gde smo unapred definisali svojstva i funkcije koje "čovek" podržava)?
Ne, ne treba da ispituješ, ali niko ti ne brani da to radiš, i to ne tako kako mali perica zamišlja, serijom nekih if-ova, možda pre ovako:

Kôd:

# unapred definišemo svojstva i funkcije:
sve_sto_covek_mora_da_podrzava = [:hodaj, :trci, :x, :y, :z, :visina]
# pa pitamo kratko
objekat_pera.podrzava? sve_sto_covek_mora_da_podrzava

Viđu mađije! Bez interfejsa! :)

degojs 18. 02. 2010. 20:50

Citat:

Vidi: taj ugovor kod interpretiranih jezika nema nikakvu težinu jer ne postoji kompajler koji se buni ako "ugovor nije ispoštovan".
LOL Pa da, neće se buniti kompajler, buniće se runtime kad pukne :D


Citat:

Ne, ne treba da ispituješ, ali niko ti ne brani da to radiš,
Kako ne trebam kad trebam? Šta će biti ako pokušam da pozovem funkciju koje nema? Svašta.

Citat:

i to ne tako kako mali perica zamišlja, serijom nekih if-ova, možda pre ovako:
Tako sigurno ne, jer to nije JS. Ili grešim?

Kako rekoh, već sam sam pronašao odgovor koristeći prototype nasleđivanje po uzoru otprilike na pomenute virtuelne metode/klase iz C++, a ispitivanje sa instanceof.

I evo upravo sam ga i naterao da proradi (čini mi se :D), negde u prethodnom primeru je bio typo ili tako nešto.

ivanhoe 18. 02. 2010. 20:51

Postoje neke js biblioteke za contracte, recimo ova

mada, to je sve realno potrebno uzasno malom procentu ljudi, javascript nije u startu ni zamisljen za takve stvari, zamisljen je da bude uzasno flksibilan i lak za rad, i u tom smislu je 99% vremena i na 99% posto realnih web projekta daleko bolji jezik od recimo vbscripta ili ne daj boze jave, koja je IMHO uzasno smoran jezik. E sad, ako neko planira da pravi web verziju photoshopa u js, ili da pravi simulacije big banga u php-u, ili vec tako nesto, to je onda ipak vise problem njegovog loseg izbora alata, nego sto je to problem samog jezika... just my 0.02 pare


Vreme je GMT +2. Trenutno vreme je 23:19.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.