13. 01. 2006. | #41 | |
expert
Master
Datum učlanjenja: 20.12.2005
Poruke: 730
Hvala: 0
0 "Hvala" u 0 poruka
|
Citat:
@nesh, ivanhoe with Ada.TEXT_IO,Ada.INTEGER_TEXT_IO; use Ada.TEXT_IO,Ada.INTEGER_TEXT_IO; procedure Program is type Meseci is(Januar, Februar, Mart, April, Maj, Jun, Jul, Avgust, Septembar, Oktobar, Novembar, Decembar); package MESECI_IO is new Ada.TEXT_IO.ENUMERATION_IO(Meseci); type Datum is record Dan : Integer range 1 .. 31; Mesec : Meseci; end record; procedure Ispisi (Element : in Datum) is begin -- Ispisi Put("Mesec: "); MESECI_IO.Put(Element.Mesec); Put_Line(""); Put(Element.Dan); end Ispisi; MojRodjendan : Datum; begin -- Program MojRodjendan.Dan :=17; MojRodjendan.Mesec:=Oktobar; -- MojRodjendan.Mesec:="Hello world!"; Ispisi(MojRodjendan); end Program; Dakle, bilo sta sto je tipa Meseci, je tacno u odredjenom opsegu - ja ne moram da brinem da li je ulaz dobar ili ne. Cak stavise, da koristim Get iz Ada.TEXT_IO.ENUMERATION_IO imam izuzetak svaki put kad neko upise hello world! umesto imena meseca Kako onda ja to moram da vodim racuna o tipu, nije mi jasno, kad GNAT to radi Lepo da mi objasnite kako to da ja trebam da se brinem o tipu Meseci ovde (da, da pointer/=integer ili pointer!=integer kako vise volite, probajte malo 64bitni kod da pisete, jer je to greska koju C vuce odkad su ga napravili na PDP-11) Dakle, taj kod koji ce u loosely-typed jeziku da proverava ispravnost argumenata neko je ovde vec napisao i to je sve, posto se sve na kraju svodi na asembler, skripta, JIT, binary, sve ide u asembler pa se izvrsava. Dakle, u loosely-typed jeziku moras nonstop da proveravas ispravnost argumenata, dok u klasicnom jeziku samo moras svesno ponekad da izvrsis konverziju, a sta je bolje kad imas mnogo koda i jos radis sa drugim ljudima koji ti daju gotov (mozda dobar, a mozda i bagovit) kod? Poslednja izmena od bojan_bozovic : 13. 01. 2006. u 21:10. |
|
14. 01. 2006. | #42 | |
Ivan Dilber
Sir Write-a-Lot
|
Citat:
Znaci ovo sto ti kazes je prednost iskljucivo u situacijama gde se radi o upotrebi pogresnog tip podatka od strane developera, pa da kompajler skrene paznju na to prilikom arzvoja. To stoji, i pogotovo je korisno kod IDE i JIT kompajlera koji ti odmah podvuku gresku. Medjutim moze na te stvari da se gleda i drugacije. Int prosledjen umesto stringa, ili obrnuto u vecini skript jezika NIJE GRESKA, jer jezik sam radi casting kako treba i sve ce savrseno lepo funkcionisati, operatori ce dobiti tacno velicinu sa kojom ocekuju da rade i nema problema. Stalno se provlaci prica o greskama zbog nedostatka tipova. Koje su to tacno greske? Koji tip greske moze da nastane u php ili perlu zato sto mu je prosledjen broj umesto stringa ili float umesto integera? Koji su to tacno scenariji u kojima takve greske nastaju, tj. navedite mi bar jedan, jer stvarno ne mogu da se setim ni jedne takve situacije za svojih 5+ godina web developmenta... S druge strane u C-u sam nebrojeno mnogo puta upucao greskom float u integer ili kopirao veci string u kraci, pa se onda zezao da ispravljam, rekompajliram i linkujem sve ponovo
__________________
Leadership is the art of getting people to want to do what you know must be done. |
|
14. 01. 2006. | #43 | |||
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:
Kakav exception kad ja imam GARANCIJU da mi je prosleđen tip int kao ulazni parametar? Pa i onaj ko koristi moju klasu dobiće još za vreme pisanja koda ili kompjaliranja poruku da poziva funkciju sa neodgovarajućim tipom podataka. Dakle, daleko pre izvršenja aplikacije. A ko će baš da testira sve moguće gluposti..? Citat:
I kako rekoh - use the right tool for the job. C ima svoju primenu i dan danas. Nećem valjda sad o tome Citat:
Pretpostavljam dobićeš string "1A"? I šta sad? U bazu podataka u kolonu koja je definisana kao int, hoćemo da upišemo "1A" ? Greška? Nećeš dobiti string "1A"? Dobićeš grešku za vreme IZVRŠENJA jer program ne može da sabere 1 i "A"? I onda neko treba da gleda kod u mojoj klasi, jer je greška tamo prijavljena? Da ne napominjem koliko je lakše i bolje da se greška uhvati za vreme kompajliranja ili još pre. Stvar je u tome da NEMAŠ uvek kontrolu nad svim delovima koda. Tako da ne znaš ko i sa kakvim parametrima će da zovne tvoju funkciju. Možda će da zaboravi da proveri da li je korisnik uneo broj ili je greškom otkucao i neko slovo? Moja komponenta sa foo(int p) neće da pukne zbog toga i SIGURNO je bolje da korisnik moje klase dobije obaveštenje o grešci i ispravi grešku u SVOM kodu sa kojim je upoznat, nego da gleda gde i zašto moja klasa nije uspela da upiše rezultat u bazu. Možda nema sors kod, a i da ga ima.. sad treba da gleda po mom kodu..? Ako smo podelili posao između tebe i mene, gde ti radiš front-end i biz layer a ja data-access layer npr., jasno da nije potrebno da i ti i ja proveravamo da je korisnik uneo broj tamo gde se traži broj a ne da imamo i neko slučajno otkucano slovo? To je tvoj posao, a ja ću samo da "kažem" funkcija prima parametar int i ne brinem o tome.. Da ponovim: ne pričam ovo u smislu "A je glupost, B je jedino dobro." Daleko od tog, ali mogu valjda da kažem gde vidim prednosti jednog pristupa u odnosu na drugi.
__________________
Commercial-Free !!! Poslednja izmena od degojs : 14. 01. 2006. u 09:43. |
|||
14. 01. 2006. | #44 |
expert
Master
Datum učlanjenja: 20.12.2005
Poruke: 730
Hvala: 0
0 "Hvala" u 0 poruka
|
@ivanhoe
Garbage in, garbage out. Dobijes tokom izvrsenja argumenat koji nije u odgovarajucem opsegu i uradis INSERT ili UPDATE... Ooops... Cak i u skript jeziku bi bilo bolje da se sve automatski proverava, jer to je svrha tipa/klase, da se fizikalisanje od strane programera smanji, ili bi nam sve bio 32bitni pointer, ko u asembleru |
14. 01. 2006. | #45 | |
Ivan Dilber
Sir Write-a-Lot
|
Sad je ispalo da tebi odgovaram na postove, ali u stvari cela prica je krenula oko onoga sto je Bojan pisao, a on je ispljuvao skript jezike, po meni bez dobrih argumenata...zato pominjem pljuvanje...
Citat:
mislim slazem se, jeste lepse ako ti kompajler to odmah prijavi, narocito kod JIT kompajliranja, ustedece ti 10-tak minuta posla, ali nije bas toliko strasno i bez toga, zapravo ono sto ja pokusavam da kazem je da naprosto nije istina da se bez toga ne moze, kao sto Bojan tvrdi...a imas s druge odredjenu dozu gnjavaze koju striktni tipovi podataka i kompajliranje nose sa sobom, koja ce po mom iskustvu da te kosta vise od tih 10 ili 15 ustedjenih minuta....odnosno jeste da ces brze nalaziti greske, ali ces ih mnogo cesce i praviti, jer slanje 'ABC' tamo gde se ocekuje 123 zahteva krupan propust developera (u rangu toga da ne zna koji parametar sta predstavlja), i ne desava se cesto, a greske kod castinga su cesta pojava....tako da je pitanje sta je efikasnije za brz razvoj, retki bagovi koji se sporije resavaju, ili cesti bagovi koje lako resis ?
__________________
Leadership is the art of getting people to want to do what you know must be done. Poslednja izmena od ivanhoe : 14. 01. 2006. u 17:59. |
|
14. 01. 2006. | #46 | ||
expert
Master
Datum učlanjenja: 20.12.2005
Poruke: 730
Hvala: 0
0 "Hvala" u 0 poruka
|
@ivanhoe
Ne radi se tu o skript jezicima - radi se prakticno o striktnim tipovima, ako ocekujes argument u nekom opsegu, a zbog baga ko zna gde dobijes broj van opsega i uradis UPDATE ili INSERT? Bolje je da te onaj koji je napravio kompajler/interpreter postedi rucne provere, jer je to tek zamorno, i uzima vise vremena nego konverzija u drugi tip, pod uslovom da program ima izvesnu slozenost. Ako je program trivijalan nema problema da pises na cemu hoces, ali ako neko drugi moze da zabrlja funkcije koji pozivaju tvoju, sto degojs rece, bolje je da trazi gresku u svom kodu nego da gleda moj ;-) Sto je program kompleksniji striktnost jezika je sve veca prednost, pogotovu kad radis u timu, zato je bolja Java nego PHP i to garant, kad govorimo o velikim projektima (iako ja Javu ne znam, sigurno je tako). Pazi, tradicionalni programski jezici na osnovu koje je Java pravljena (Ada 95, C++) koriste se za programe neuporedivo vece obimnosti od web aplikacije, i napravljeni su upravo za code reuse i timski rad na golemim projektima. Moras da proveravas ulaz za funkciju ako radis u timu, i zato je bolje da ti jezik to sam radi. Citat:
Dalje, i brze je kad je provera tipova automatska, jer je odradjena na brzom kompajliranom jeziku. Evo sta dobih sada (nakon sto sam pola sata pokusavao da pristupim sajtu uz ono DBD:MySQL error) Citat:
Poslednja izmena od bojan_bozovic : 14. 01. 2006. u 17:59. |
||
15. 01. 2006. | #47 |
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
|
Mislim da ivanhoe oooodavno nije koristio neki dobar alat tipa Visual Studio ili Netbeans pa otud i takvi komentari koji meni nekako liče na nešto što je možda bila gnjavaža pre 10 godina. Danas, ja ne vidim kako tipovi mogu da predstavljaju smaranje, ako koristiš dobar IDE, pogotovo kad od nedavno čak i MS daje VS (Express) besplatno.
Jednostavno, ovi alati su toliko napredovali da taj argument, bar meni, ne stoji uopšte.
__________________
Commercial-Free !!! |
15. 01. 2006. | #48 |
Boris
Grand Master
Datum učlanjenja: 01.12.2005
Lokacija: Novi Sad
Poruke: 775
Hvala: 5
156 "Hvala" u 2 poruka
|
O da, stoji i te kako, posebno kad pises, recimo, programe za linux u vim-u i kompajliras preko gcc-a. Tada ti dodje prosto kao osvezenje kada treba nesto na brzinu da skucas u perlu jer ima auto-casting, ali uz "use strict;" i "use warnings;" sve dolazi na svoje mesto.
__________________
"It’s important to have goals when you pet. Otherwise you’re just rubbing another mammal for no reason." - Scott Adams Poslednja izmena od zextra : 15. 01. 2006. u 20:50. |
15. 01. 2006. | #49 | |
član
Certified
|
Citat:
A ako ti baš treba da remote "vrtiš" real-time aplikaciju rešenje postoji pooodavno - XWindows . A i Win ima nekakvu implementaciju tog tipa. |
|
15. 01. 2006. | #50 | ||
član
Certified
|
Citat:
Preciznije, glavni problemi nastaju kada u igru uđe alokacija memorije, a većina podataka koja dolazi sa web-a je daleko od poznate veličine (str u 99% sličajeva) a ovde pričamo o razvoju www aplikacija - right? Tako da: Kôd:
s/strongly typed/manualna alokacija memorije/ Citat:
|
||
|
|
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 |