12. 01. 2006. | #31 | |
I'm a PC too.
Wrote a book
Datum učlanjenja: 06.06.2005
Lokacija: Kanada
Poruke: 1.354
Hvala: 82
130 "Hvala" u 89 poruka
|
OT:
Citat:
(Nadam se da se niko ne ljuti zbog ovoliko OT poruka )
__________________
Commercial-Free !!! Poslednja izmena od degojs : 12. 01. 2006. u 07:18. |
|
12. 01. 2006. | #32 | ||
Ivan Dilber
Sir Write-a-Lot
|
Citat:
Sa druge strane na web-u su svi inputi uvek stringovi, i sasvim sigurno bi se desavalo relativno cesto da zaboravis da uradis kasting stringa u int i slicne stvari. Naprosto moja teza je da briga o tipovima podataka predstavlja samo jos nesto o cemu moras da mislis, a to povecava sanse za greske i usporava razvoj samim tim, a istovremeno ne vidim velike prednosti koje pruza... Citat:
__________________
Leadership is the art of getting people to want to do what you know must be done. Poslednja izmena od ivanhoe : 12. 01. 2006. u 20:46. |
||
12. 01. 2006. | #33 | ||
I'm a PC too.
Wrote a book
Datum učlanjenja: 06.06.2005
Lokacija: Kanada
Poruke: 1.354
Hvala: 82
130 "Hvala" u 89 poruka
|
Citat:
Druga stvar, pre si kao primer naveo onu neku raketicu što je pala, a sad se ipak ograničavaš na web. Nije baš isto Citat:
O da, za kraj, što se brzine razvoja tiče mislim da i tu grešiš. Kod strongly typed okruženja, kompajler će upravo umesto tebe da uhvati gomilu sitnih greščica (od najobičnijeg krivo otkucanog) do onih većih i time sebe oslobađaš da misliš o tome, itd, itd. Stvarčice kao intellisense da ne pominjem. Rekao bih da loosely typed jezici omogućuju brži razvoj sve dok projekti nisu veći i komplikovaniji. Ajd dobro, od mene dosta da ne počnemo da tupimo
__________________
Commercial-Free !!! Poslednja izmena od degojs : 13. 01. 2006. u 00:00. |
||
13. 01. 2006. | #34 |
expert
Master
Datum učlanjenja: 20.12.2005
Poruke: 730
Hvala: 0
0 "Hvala" u 0 poruka
|
@ivanhoe
Upravo u tradicionalnim jezicima ne brines o tipovima, a u skript jezicima moras recimo class nesto { var $broj1; function promenibroj1($vrednost) { if (is_float($vrednost){ $this->$broj1=$vrednost; } } } i sad moras da koristis is_integer ili is_float ili sta vec u svakoj funkciji nad klasom a ako ih imas hiljadu? Nema web aplikacije sa hiljadu funkcija, u tome je problem, kada radis na stvarno necem velikom, cenices striktnost koju ti namece tradicionalni jezik. Dakle bas moras da vodis racuna o tipovima, dok tradicionalni jezik vodi racuna o tipovima za tebe da ne mesas babe i zabe Dalje, u dobrom programskom jeziku kada $vrednost nije float imas exception - i mogucnost da gresku obradis bas onako kako ti treba za odredjeni slucaj bez toga da program izbacuje neke nerazumljive greske ili sto je jos gore, zabrlja podatke u nekoj tabeli (v. gore, ovaj kod jos mora da se menja da bi smo bili sigurni da npr. necemo da imamo dvaput isti ID u tabeli, jer ce tiho da preskoci sve ako ne dobije float ). Lovljenje gresaka u PHP je zato ocaj zivi, nije problem da se programira ali je problem da se debaguje, i to opasan. A ako hoces i dobro implementirate izuzetke, to bi bila strahovita fizicka rabota a koliko bi izuzeci bili dobri na webu Greska i redirekciju izvrsis na posebnu stranicu ili index, ajd da vidim da neko to rucno implementira Poslednja izmena od bojan_bozovic : 13. 01. 2006. u 05:12. |
13. 01. 2006. | #35 | |
član
Certified
|
Citat:
Python: Kôd:
>>> a=1 >>> a+="1" Traceback (most recent call last): File "<pyshell#1>", line 1, in -toplevel- a+="1" TypeError: unsupported operand type(s) for +=: 'int' and 'str' Kôd:
class Foo: def __init__(self): self.broj1 = 1 def promeni_broj(self, vrednost): self.broj1 = vrednost def promeni_broj2(self, vrednost): # safe try: self.broj1 = int(vrednost) except ValueError, err: # vrednost nije int, do something Kôd:
void promeni_broj2(int vrednost) { broj1 = vrednost; } Tačnije kod "strongly typed" jezika ja moram unapred i kroz ceo kod da brinem o tipu podataka (a i veličini osim ako ne radim dinamičku alokaciju memorije što stvara druge probleme), kada koristim "loose typed" jezik brinuću o tipu podatka samo tamo gde taj podatak koristim. BTW zar PHP5 nije dobio nesto slično za rad sa exception-ima? Najveća razlika između "skript" jezika i "compiled" jezika je u brzini (koja već odavno nije toliko bitna - hardver je daaaaaleko jeftiniji od programerskog vremena) i velike razlike u brzini razvoja aplikacija (za par redova veličine na štetu "compiled" jezika). Da ne pominjem "čuda" kao metaklase, dinamičko generisanje metoda, ..... Bottom line je da kod "strongly typed" jezika greška u tipu prosleđenog podatka (ako se provuče, a moguće je) će dovesti do core dump-a (ili ako je Win u pitajnju čak i do BOD-a), dok će "loose typed" jezik "baciti" exception koji će lako moći da bude "uhvaćen" i obrađen tamo gde treba (ako ne, onda je to bug, a podaci koji budu prijavljenu u exp (stack trace i sl.) će biti sasvim dovoljni da se "nalovi" mesto gde je do toga došlo - mnogo lakše nego da provodim vreme uz debager "loveći" mesto). I kao što neko reče A right tool for the right job™. Sigurno neću pisati OS u Python-u, ali za web app (a o tome je ovde priča) koristiti C/C++ je definitivno overkill. Korisno štivo: http://www.sitepoint.com/article/typ...dynamic-typing p.s. Python (za ostale nisam siguran - ne koristim ih sada previše) ima daleko bolju podršku za exception-e od C++ i Jave IMHO. Takođe za Python postoji pychecker koji moža da uradi (skoro) sve provere oko tipova podataka i sl. kao da se koristi "strongly typed" jezik. p.p.s. "strongly typed" se ne odnosi na Javu/C# jer su kod njih uspeli da isprave dosta problema sa C/C++. p.p.p.s. Moj razvojni put se kretao: Z80 asm -> MC68K asm -> C -> (C++, perl, PHP) -> Python. Tako da sam prilično upoznat sa prednostima (a i manama) većine njih. |
|
13. 01. 2006. | #36 |
Direktor Kombinata
Invented the damn thing
Datum učlanjenja: 07.06.2005
Poruke: 2.669
Hvala: 44
119 "Hvala" u 64 poruka
|
PHP5 ima podršku za izuzetke. Klasičan try / catch blok. Pri tom imaš i set_exception_handler() funkciju gde možeš da definišeš kako će biti obrađeni izuzeci koje nisi "navatao". Napravio sam da ta funkcija izlista podatke o izuzetku (poruka, fajl, linija, dodatni parametri koje određuje sam izuzetak), backtrace, sadržaj autoglobalnih promenljivih i podatke o instaliranom PHPu na serveru. Jeste malo "prljavo", ali radi bez ikakvih problema i stvarno olakšava razvoj.
Takođe, ako imaš problema sa debugovanjem probaj xdebug. "Obogaćuje" prikaz grešaka koje baca PHP, dumpovi promenljivih su bolje formatirani, omogućava profiling itd. Što se tipova podataka tiče zašto getter mora da proverava tip podataka uvek? Zašto ga jednostavno ne castuješ? Kôd:
function setValue($value) { $this->val = (float) $value; } Kao što rekoh, uz malo discipline i pravi alat nema problema Nemoj širit dezinformacije
__________________
activeCollab - Project Management and Collaboration Tool iz domaće kuhinje | area51.rs - Blog Poslednja izmena od Ilija Studen : 13. 01. 2006. u 14:57. |
13. 01. 2006. | #37 |
Goran Pilipović
Sir Write-a-Lot
|
Slozio bih se sa Ilijom... (jeste off ali nisam mogao da ne kazem). Ilija, svaka ti je Njegoševa
Samo bih malo "nadogradio" negovu poslednju recenicu, uz "nedisciplinu" i bez "samokontrole" (tipa da spicimo sto pre, samo da radi kako tako) ni najbolji alat ne pomaze.
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman I don't always know what I'm talking about but I know I'm right! |
13. 01. 2006. | #38 |
expert
Master
Datum učlanjenja: 20.12.2005
Poruke: 730
Hvala: 0
0 "Hvala" u 0 poruka
|
Sustina je da ce se web aplikacije dalje usloznjavati (PostNuke je 30Mb vec) i postojeci skript jezici ce ili biti zamenjeni jezicima koji koriste kompajler i JIT ili evoluirati, jer je strahovito tesko raditi na projektu koji ima na stotine includovanih PHP fajlova koji su bez ikakve organizacije. Daleko je bolje sve imati na disku u projektu, a na server postaviti kompajliranu binary verziju (recimo sa JIT). Da li bi radije odrzavao 30Mb sorsa u PHP ili C/C++ as simple as that. To ce se svakako desiti, jer se ide na razvoj desktop-like web okruzenja a IMO je sledeci korak teranje aplikacija na serveru. Aplikaciju obimnosti Worda (jer na to se ide) u PHPu neces nikako moci da odrzavas, plus sto ce server-side performanse onda da budu daleko znacajnije (i samim tim JIT a ne skript jezik). Prakticno Web aplikacije nista nisu uznapredovale zadnjih 10 godina - svodi se na isto - pokupimo GET i POST argumente preko CGI i pisemo na stdout da Apache pokupi. A ako treba racunanje (spreadsheet ili ne daj boze neki MathCAD server-side) jer ce se u buducnosti i to traziti za slozene desktop-like aplikacije? Ili cemo koristiti JIT ili wrappere (kao sto u PHP imas wrapper funkcije za ImageMagick i GD koji nisu pisani u PHP)
Tipican primer nove web tehnologije su ti Skype i Yahoo Messenger with voice, a to nece u PHPu. Doduse, to je client-side primer, a to su igre (u Flashu), kako da ih teras server side u skript jeziku (uz renderovanje u Flash na primer?) Na zapadu 4 Megabita u sekundi veza sa internetom nije nikakvo cudo, imacemo za pet godina i frameworkove za igrice u 3D na serveru Sto se performansi tice, to zavisi samo od toga sta teras, recimo da se [es] gusi non stop. Porazmislite malo, samo zato sto imamo Dual Xeon servere ne znaci da isti ne moze na kolena da se obori. Poslednja izmena od bojan_bozovic : 13. 01. 2006. u 17:27. |
13. 01. 2006. | #39 | ||
I'm a PC too.
Wrote a book
Datum učlanjenja: 06.06.2005
Lokacija: Kanada
Poruke: 1.354
Hvala: 82
130 "Hvala" u 89 poruka
|
Citat:
void foo(int p) { .. } u toj funkciji ja NE MORAM da brinem o tome kog je tipa "p" - znam da je UVEK tipa int. Korisnik moje klase/funkcije ne može da mi prosledi bilo šta, mora da prosledi int. A to mene oslobađa da mislim o tome šta sam dobio kao ulazni parametar. Citat:
__________________
Commercial-Free !!! Poslednja izmena od degojs : 13. 01. 2006. u 19:41. |
||
13. 01. 2006. | #40 |
Goran Pilipović
Sir Write-a-Lot
|
bojane, nije mi jasna tvoja prica. Razumeo sam da se prica o web razvoju, ti pominjes 300 MB PHP source za aplikacije tipa MS Word. Odakle ti ideja da ce se takve aplikacije ikada portovati na web? Pa tu ne moze da ti pomogne bilo koja web tehnologija.
I google (da, taj "veliki" google) je poceo i dugo vremena radio (ako jos uvek ne radi) sa php i mysql. Znaci open source resenja. Secam se da sam skoro video blog nekog ex-google lika koji je ispricao price od kojih su se ljudi "smrzavali", nisu mogli da veruju da iza google stoji PHP4 i MySQL 3.23.x. Lik na kraju kaze da ne zna sta se desava od kada je otisao, ali dok je bio tamo koristio se LAMP. Kakave spreadsheet aplikacije za web? Covece, mesas babe i zabe, to nema veze niti ce ikada imate veze sa web aplikacijama, niti ce ikome ko zna da sabere 2 i 2 pasto na pamet da portuje to na web. Dakle tema je " Izbor tehnologije za velike Web aplikacije", a ne "hajde da mastamo" ili šbbkbb. Kakvih 300 MB source? Ne zezaj bre.. Jedino (ne bas jedino) sto se meni ne svidaj u PHP je taj auto-casting, gde recimo "2" moze da bude isto sto i 2, mada u nekim slucajevima i to ume da olaksa posao.
__________________
Goran Pilipović a.k.a. Ugly Fingers Bradley f.k.a. bluesman I don't always know what I'm talking about but I know I'm right! |
|
|
Slične teme | ||||
Tema | Početna poruka teme | Forum | Odgovori | Poslednja poruka |
Izbor PHP Framework | dootzky | PHP | 100 | 21. 02. 2010. 19:15 |
Forum za web tehnologije | Pedja | Obaveštenja, predlozi i pitanja | 1 | 24. 08. 2006. 14:50 |