[ a zo zo @ 16.06.2007. 13:38 ] @
Pozdrav!
Ucim VB.Net, pa sam mislila procackati i C#. Da li sam pogrijesila sto nisam ucinila obrnuto? Koje je po vama zastupljenije, trazenije? Znam da VB ne tretiraju neki programeri kao jezik vec kao alat, ali bas je zanimljiv... Navedite mi neke velike prednosti koje sa sobom nosi, npr. C#. Hvala.
[ Moonshine @ 16.06.2007. 14:52 ] @
Samo ti dobro izuci VB.Net i ne razmisljaj o drugim jezicima. Razlika izmedju C# i VB.NET osim sintakse je minorna.

Najbitnije je kakav si programer tj., kako razmisljas, jezici ce ti vremenom biti samo nacini da lakse uradis odredjene poslove. I veruj mi nece ti uopste biti problem da ih naucis.
[ Valerij Zajcev @ 16.06.2007. 14:56 ] @
isto pitanje je i mene gnjavilo pre mesec dva, samo ja sam pcoeo od c++, a onda su profesori poceli da traze da seminarske i ispit radimo u VB.net, tako sam poceo da radim VB.NET, i neverovatno je koliko sam lagano presao (ja sam jos noob) jer sam ukapirao kada znas koncepte OOP-a, rad sa petljama,granama..i ostalim stvarcicama koje ima svaki jezik mozes lagano da se setas medju jezicima, samo procitas kako ide sintaxa za sta.
Sada kada je prosao ispit ja recimo vise necu da radim u VB.NET iz razloga sto sam navikao c++ pa kada pisem kod cesto se izgubim pa pocnem da stavljam zagrade svuda :) navika. Zato sada ucim c# koji meni odgovara u potpunosti (po meni sintaxa c#-a je lepsa od VB-a)
I jos nesto kod .NET-a mozes da koristis koji god hoces, jer ako radite u timu, a jedan deo tima radi na VB drugi na c#, za ovo nisam siguran ali kada krenete da kompajlirate programe nebitan je jezik sve se kompajlira u isti kod(neka me neko ispravi ako gresim)
Ja sam relativno shvatio da jezik jeste alat, ali kada ovladas OOP-om, onda si sto kaze moj profan. "...sine ti si CAR..." :)
poz nadam se da sam rekao nesto korisno.
[ Shadowed @ 16.06.2007. 21:04 ] @
Ne moras uopste brinuti o tome. Bitno ti je da naucis da programiras pa onda OOP (Objektno Orentisano Programiranje). Pri tome se drzi jednog jezika a kada naucis, onda isprobavaj i druge. Pogotovo je razlika izmedju c# i vb-a mala.

@Valerij Zajcev, u okviru jednog projekta ne mozes mesati vb i c# (s' tim da mozes imati referencu na .dll radjen u drugom jeziku), ali mozes u jednom solution-u imati projekte radjene u razlicitim jezicima.
[ Pharos @ 16.06.2007. 21:36 ] @
Od svih jezika, c# ima najčistiju sintaksu.
Kad pogledam VB kod smuči mi se život :)

Kada napišem
Code:

Pera(6)


Da li je to metoda, property, niz...
U VB-u može biti sve.
U C# to može biti samo metod (f-ja)

Jednom kad savladaš VB, trebaće ti još dooostaaa vremena da savladaš sintaksu drugih prog. jezika kao što su Java, C, C++, PHP... ma svih.
Kad naučiš C# sintaksu, veoma lako ćeš se prebaciti na neki drugi prog. jezik.

VB nikako. Samo zbog očajne sintakse, a ne zato što je manje moćan od C#.

[Ovu poruku je menjao Pharos dana 16.06.2007. u 22:51 GMT+1]
[ MarkoBalkan @ 17.06.2007. 14:58 ] @
ja sam počeo sa VB.netom.
trebalo mi je tri dana da se prebacim na c#, kojeg sad znam jednako dobro kao i vb.net-a.
c# je jezik koji koristi vb.net sintaksu sa osobinama c++.
koliko sam vidio dosta su traženi.
mada je vb.net malo sporiji.
najbolji za izradu poslovnih aplikacija, a od čega se danas živi.
[ Valerij Zajcev @ 17.06.2007. 21:49 ] @
VB jednostavno ima jedinstvenu sintaxu, po meni c# je napravljen da bi se korisnici c, c++, jave opredelili za razvoj .NET aplikacija.
Po snazi c# nije nista jaci od vb kao i obrnuto.
Mi smo u ovom semestru imali jednu extra knjigu koju preporucujem svima CET-ovo izdanje, "OOP sa microsoft tehnologijama visual basic.NET i visual c#.NET korak po korak" cena je sitnica 300din.
I mislim da ako se iole razumes u programske koncepte da ce ti ova knjiga napraviti prekretnicu.
Knjiga je sledeceg sastava:
Nema objasnjenja sto se tice sintaxe jezika (opsteg) petlje, varijable, grane... za to ti treba vb ili c# step by step
Ima objasnjenja za sve sto se tice OOP pristupa, i sintaxe za OOP
Knjiga ima 14 poglavlja od najlakseg do najtezeg
E sada ono sto tebe zanima je da svaki uradjeni primer u knjizi ima i na VB.NET i na c#.NET
Ja sam prvih 8 poglavlja radio sa VB, sada cu da stanem i kada budem procitao celu "c# step by step" uradicu iste preimere prema c# kodu, moj razlog za odbijanje VB-a je sto jednostavno ne mogu da se naviknem na njegovu sintaxu (jedinstvena je).
int x; ili dim x as integer
a + b ili a & b
classname classname(); konstruktor ili sub new()
onda ono blesavo odvajanje delova koda linijama, ovamo imam zagrade koje cine kod mnogo citljivijim
i takve i slicne stvari.
+ ova knjiga ima propratni CD sa svim kodovima, i posle prvih 6 poglavlja ces sigurno shvatiti sta ti vise lezi.

PS
c# ima i neke alate za automatsko pravljenje klasa.
[ mmix @ 18.06.2007. 14:32 ] @
Problem vb.net vs c# nije uopste funkcionalni problem, vec stvar licne preference, a mi "stariji" generalno preferiramo c# zbog stigme vezane za nastanak vb.net-a.

Kad ti se posle X godina iskustva ureze u glavu da ne postoji nista grdje niti smrtonosnije za projekat od juniora koji se docepa javascript-a, VBScripta, VB6-e i ostalih dynamic bound jezika bez compile time checkinga, postanes veoma obazriv prema svim derivatima koji iz tih tehnologija proizilaze. To nisu tek neki bagovi, to su ukleti bagovi koji isplivavaju nakon meseci i godina rada .

Iako VB.NET efektivno implementira strong type checking, i dalje mozes da iskljucis vecinu tih "barikada" i da nastavis po starom i tu se efektivno prekida moja tolerancija prema kombinaciji pocetnika i VB.NETa i svima ostalima koji su voljni da uteraju bagove u program radi sopstvenog komfora. Sama cinjenica da c# ne dozvoljava takve gluposti je meni vise nego dovoljna da forsiram taj jezik na opsti uzas pocetnika koji bi rado vrsili proracune nad brojevim koje drze u string varijablama. Tako da ako se kojim slucajem desi da ja intervjuisem bilo koga od vas za posao i ako mi servirate izjavu da znate vb.net a ne znate c#, bice vam pokazana vrata. Jedini razlog zasto taj jezik postoji i koristi se u dosta firmi je sto su menadzeri u tim firmamam bivsi VB6 programeri koji imaju dovoljno problema da savladaju OOP koncepte i bez nove sintakse da im otezava zivot

Vi jednostavno ne mozete da zamislite horor koji u mojim ocima izaziva razvoj IronPython-a i ostalih scriptable .NET jezika i zamisao svih buducih glavobolja koje ce to izavati. Kao deca koja se igraju fuzbala na minskom polju, kad pukne mina bice plakanja.
[ Dragi Tata @ 18.06.2007. 14:45 ] @
Citat:
mmix: Problem vb.net vs c# nije uopste funkcionalni problem, vec stvar licne preference


Sasvim tačno, samo bih dodao da su (bar u USA) C# programeri u proseku nešto bolje plaćeni - nemam pojma zašto.
[ jablan @ 18.06.2007. 14:49 ] @
Citat:
mmix: Vi jednostavno ne mozete da zamislite horor koji u mojim ocima izaziva razvoj IronPython-a i ostalih scriptable .NET jezika i zamisao svih buducih glavobolja koje ce to izavati. Kao deca koja se igraju fuzbala na minskom polju, kad pukne mina bice plakanja.

Uh. Moram da priznam da imaš pravo, kao što moram da priznam da ne želim da ceo život radim u static-typed jeziku samo zbog straha od guštera.

Duboko sam ubeđen da se uz malo truda, redovnim code review-ima i unit testingom (koji su sami po sebi dobra stvar u bilo kom alatu) mogu prevazići mane jezika o kojima pričaš i vrline doći do izražaja.
[ Dragi Tata @ 18.06.2007. 14:59 ] @
Citat:
jablan: Uh. Moram da priznam da imaš pravo, kao što moram da priznam da ne želim da ceo život radim u static-typed jeziku samo zbog straha od guštera.


Ja "mlogo" volim static typing ne zbog straha od guštera, već zbog straha od samog sebe :)

Ništa lepše nego kad "omašiš" slovo a kompajler izbaci gomilu grešaka umesto da se čudiš zašto program sad odjednom daje čudne rezultate.
[ jablan @ 18.06.2007. 15:02 ] @
Karikiraš.
[ Dragi Tata @ 18.06.2007. 15:11 ] @
Citat:
jablan: Karikiraš.


Možda malo, ali je moje iskustvo da dynamic typing ima smisla samo u malim i izolovanim parčićima koda. Npr, JavaScript je dušu dao za dynamic typing. U većim projektima sa puno modula koji treba da se integrišu u jedan sistem, ne bih dao static typing ni za živu glavu.

A i da ne govorimo o performansama...
[ negyxo @ 18.06.2007. 17:52 ] @
Citat:

Ja "mlogo" volim static typing ne zbog straha od guštera, već zbog straha od samog sebe


Dobro receno

Mada ja nikad ne vide pravu potrebu za dynamic typing, i to mislim na dosadasnji nacin, (doduse samo sam sa javasript-om radio). Ustvari pre nego sto krenem u neku diskusiju pitao bi koja je svrha dynamic typing-a, ustvari sta znaci dynamic typing?
[ Valerij Zajcev @ 18.06.2007. 18:25 ] @
:) ajde neko od vas da mi kaze sta je to dynamic/static typing? :)
[ mmix @ 18.06.2007. 18:44 ] @
Gusteri, hehe, to me podseca na Novi Sad i smrdljive kub rakete iz kojih curi otrovno gorivo

Citat:
jablan: Uh. Moram da priznam da imaš pravo, kao što moram da priznam da ne želim da ceo život radim u static-typed jeziku samo zbog straha od guštera. Duboko sam ubeđen da se uz malo truda, redovnim code review-ima i unit testingom (koji su sami po sebi dobra stvar u bilo kom alatu) mogu prevazići mane jezika o kojima pričaš i vrline doći do izražaja.


Mislim da ne mozes u potpunosti, kao sto ni ja nisam mogao pre, da razumes kolika su gusteri opasnost dok ne dodjes u severnu ameriku. Kao iskusnom resursu, kao i svuda drugde na svetu, dopadne ti da mentorises par bandita svezih sa koledza, spremnih da rade dok ne lipshu i koji to ni ne kriju. I to je ok, niko se nije naucen rodio, da bi postali dobri moraju da nauce "zanat", ali je fundamentalna razlika to sto si ovde licno odgovoran za njihov napredak i kad nesto da prostis, zase*u, tebi se sefovi penju na glavu i to se gleda kao tvoj propust. E sad da ja ne bih provodio sate i sate objasnjavajuci da nije ok drzati datum u string varijabli i dozvoljavati kompajleru da implicitno provaljuje sta si ti zamislio, ja im na pleca natovarim C# i pustim ih da boksuju sa kompajlerom. Kao posledica toga njihova pitanja se svode na realne probleme na koje nailaze umesto na to zasto "ispravan" program ne radi i kako ja mnogo kenjam kad njihov program radi i kako sam se navrzo na njih .

Dynamic typing je mac sa dve ostrice i bez problema bih mogao tebi, caletu, i jos dosta ljudi ovde da poverim takav task i da ne razmisljam o tome, ali da ja dam taj task ovom gusteru sto sedi pored mene, to je naucna fantastika Sa takvima ni nUnit ne pomaze, ako je moguca a moguce je, i sam test ce biti napisan nakaradno . Jednostavno stvar treninga i uvodjenje discipline zarad licnog mira, a kad ih naucim C# i sami provale da se vb.net trening svodi na dan-dva substitucije rezervisanih reci, onda ide "aha" i option strict i option explicit ostaju ukljuceni.


Citat:
Dragi Tata: Sasvim tačno, samo bih dodao da su (bar u USA) C# programeri u proseku nešto bolje plaćeni - nemam pojma zašto.


Supply and demand, svi VB6 programeri reklamiraju sebe kao VB.NET resurse, sto povecava supply i obara cenu radu. Na stranu sto gomila tih "strucnjaka" ne zna sta je klasa i misle da je klasa prirodna progresija modula iz VBa, poslodavci tu ispraznost ne vide u toku konkursa, vide samo da se na VB.NET posao prijavi X puta vise kandidata nego na c# Iskreno mi je ta cela situacija sa naduvanim rezimeima i nesposobnoscu nekako neodrziva, pre ili kasnije ce neki Boing da zaroni u planinu posle "Unhandled exception" pa ce valjda da se nesto resava po tom pitanju.
[ Shadowed @ 18.06.2007. 18:44 ] @
Static typing je situacija kada se tipovi promenljivih (i objekata) znaju prilikom kompjaliranja (znaci, pri deklaraciji promenljivih, koja je obavezna, mora se navesti tip promenljive).
Dynamic typing je suprotno, mozes deklarisati promenljivu bez navodjenja njenog tipa (a obicno ne moras ni da je deklarises vec se to vrsi automatski prilikom prve upotrebe).

[ mmix @ 18.06.2007. 18:53 ] @
Citat:
Shadowed: Static typing je situacija kada se tipovi promenljivih (i objekata) znaju prilikom kompjaliranja (znaci, pri deklaraciji promenljivih, koja je obavezna, mora se navesti tip promenljive).
Dynamic typing je suprotno, mozes deklarisati promenljivu bez navodjenja njenog tipa (a obicno ne moras ni da je deklarises vec se to vrsi automatski prilikom prve upotrebe).


Zapravo, static typing je metod po kojem su svi tipovi u aplikaciji poznati na pocetku izvrsavanja programa. To omogucava kompajleru da detektuje gomilu gresaka od spelovanja elemenata do pogresne konverzije tipova u trenutku prevodjea umesto tokom prezentacije investitorima.
Dynamic typing je sve sto nije static typing, tj mogucnost da deklarises nove tipove tokom izvrsavanja programa (npr javascript prototypes), sto kod cini fluidnim i ne zahteva monolitne build procese ali zato u pogresnim rukama donosi nevolje.

Forsiranje deklarisanja tipova varijabli je zapravo "strong typing".
[ Shadowed @ 18.06.2007. 19:05 ] @
Slazem se da stari VB navodi na lose navike. Npr. ja sam prvo radio u basic-u na C-64 i ako se dobro secam deklaracija nije ni postojala (ili bar ja nisam nikad znao za nju) i bilo mi je sasvim prirodno da promenljivu jednostavno pocnem da koristim. Nazalost nisam imao neke narocite izvore informacija o svemu tome (samo jedna knjiga u par godina) pa o programiranju samom po sebi i nisam nesto narocito znao.
Posle sa VB5 i 6 sam naravno, samo produzio tako sve dok nisam saznao za Option Explicit. Razlog svemu tome je sto i dalje nisam imao odakle da naucim (a i tada mi je znanje engleskog bilo veoma slabo) i sve sam ucio sam provaljujuci kako se sta radi.
Ali, posto se trudim da sve radim kako treba, postepeno sam se oslobodio tih navika i sada postujem sva "pravila" koja znam. Verovatno jos uvek postoje stvari koje radim pogresno jer jos uvek nisam skontao da su pogresne. OK, nekad saberem dva stringa ako je jednostavna stvar a sigurno je da su cifre ;).

A i vise volim da deklarisem promenljivu kako treba, pa da mi intelli sense radi bolje :)
[ jablan @ 18.06.2007. 21:57 ] @
Treba razlikovati strong/weak typing i static/dynamic typing (i ja mešam termine)...

http://en.wikipedia.org/wiki/Type_system

Strong i weak su vezani za to kako se programski jezik ponaša kad se kombinuju promenljive različitih tipova.

Drugim rečima, ako imate a = 2 i b = '3', weakly typed jezik će kao rezultat a + b vratiti 5, a strongly exception.

Static i dynamic je ovo što su shadowed i mmix objašnjavali.

Ja sam mislio na ovu drugu razliku kad sam prvi put pomenuo odgovorio mmixu, tako da predlažem da se zadržimo na njoj.

Načelno, ljudi su uglavnom istakli mane dinamički tipiziranih jezika, a ja ću pomenuti prednosti.

Programi su po pravilu kraći od odgovarajućih u statički tipiziranim, i to dosta.

Kad vršite neku promenu, program je mnogo fleksibilniji. Nema potrebe za masovnim preimenovanjem tipova u potpisima metoda, a često se izbegava i potreba za redizajniranjem, uvođenjem novih interfejsa ili nepotrebno usložnjavanje programa. Doduše i statički tipizirani jezici evoluiraju u pravcu produktivnosti, npr. generici su baš dobro došli u .NETu 2, ali opet tu ima... pa jednostavno previše kôda, a malo akcije.

PS. Ako imate vremena, pročitajte dva sledeća teksta Brusa Ekela:
http://www.mindview.net/WebLog/log-0025
http://www.mindview.net/WebLog/log-0066

i jedan blog sa provokativnim naslovom (specijalno za DT-a ):
Static Typing is Communist Bureaucracy
koji kaže (a ja se slažem):
Citat:
If you have pervasive testing, static typing == more typing. The static typing is nothing but a requirement to type extraneous code to satisfy a compiler that isn't telling you anything interesting anymore.

PPS. (samo još ovo i neću više) Mislim da je, kao i za mnogo drugih stvari, najbolje da programer dosta koristi i jedne i druge vrste jezika. Koristeći statički tipizirane naučiće se da vodi računa šta drži u promenljivama, a koristeći dinamičke da ceni svoje vreme i ekspresivnost koda.

[Ovu poruku je menjao jablan dana 18.06.2007. u 23:21 GMT+1]
[ negyxo @ 18.06.2007. 23:06 ] @
Moje pitanje se odnoslio isto na ovaj drugi deo oko dynamic typing-a, ne ovo sto je jablan spomenuo. Po tome je c# strongly typed, dok VB nije. Ta implicitna konverzija me je i nervirala kod VB6, tako da sam svuda koristio CString, Cint itd. Nego ono sto sam zeleo reci je - da je dynamic typing nepozeljan na dosadasnji nacin. A sta bi znacilo dosadasnji nacin? Pa ako se pogleda zasto je nastao dynamic typing, razlog su neke zaista mocne programske konstrukcije. Recimo kod javascripta, mmix spomenu prototypes, ili duck typing gde se zaista jako lako manipulise podacima ali problem u celoj toj prici je da je kompajler ne obavestren o cemu se radi a i to iz jednog razloga, da bi se omogucila ova dinamicna izrada programa, sto je po meni apsolutna glupost, jer, ovo ce mozda zvucati cudno, ako programer, covek zna da postoji greska ne vidim razlog zasto ne bi znao i kompajler. Problem su samo ne dovoljno razvijeni kompajleri ali i ovo ce izgleda da se promeni, c# 3.0 vec uveliko pozajmljuje neke stvari od Lispa i slicnih programskih jezika i sve to uz strong type. Recimo, ako se neko igrao sa Orcas, mogao je videti sta radi intellisense sa lambda konstrukcijama tj. sa type inference pogotovo u kombinaciji sa anonymous type, gde intellisense izbaci tooltip sa anonymous type-om koji se koristi u lambda konstrukciji. Ne znam, mozda ce neko reci nista narocito, ali meni je ovo izvuklo osemeh na licu

A evo i jedan korisan link o tipovima provera (doduse blog je, ali ima dosta lepih clanaka o novom c#)
http://blogs.msdn.com/wesdyer/.../12/20/types-of-confusion.aspx
[ Dragi Tata @ 18.06.2007. 23:27 ] @
Citat:
jablan
i jedan blog sa provokativnim naslovom (specijalno za DT-a ;)):
Static Typing is Communist Bureaucracy
koji kaže (a ja se slažem):


Hvala, hvala :)

Međutim, autor teksta (kao i većina diskutanata ovde) izgleda nije upoznat sa inferencom tipova kod statičkih jezika: http://www.novetehnologije.com/Default.aspx?tabid=96 i http://boo.codehaus.org/Type+Inference

Nažalost većina popularnih statičkih jezika nema inferencu tipova, ali će neki da je dobiju u skoroj budućnosti (C#, C++) a ostali će nadam se da crknu i propadnu (Java) i budu zamenjeni boljim jezicima (Scala) :)

Sve u svemu, radio sam dosta i sa jednim i sa drugim jezicima i kao što rekoh "na malo" dinamički zaista imaju svojih prednosti, ali za komplikovanije projekte - neka hvala :)
[ Shadowed @ 18.06.2007. 23:55 ] @
Sta se desava kod Type Inference-a u situaciji var x=5? Da li je to byte, int16, int32...?
BTW, citao sam ali zaboravih, da li se T.I. planira za VB u novoj verziji? Rekao bih da da, ali nisam siguran.
[ negyxo @ 19.06.2007. 07:19 ] @
U c# mislim da je int32 ali to moze da se razlikuje od kompajlera do kompajlera. Verovatno je sve stvar dogovora, kompromisa. Doduse u .NET ce se verovatno ici da ako je var x = 5, bude int32 i u VB-u kada se otkuca dim x = 5, cisto da ne bude zabune tokom prelaska sa jednog na drugi jezik, da bude 'known behavior'
Sto se VB-a tice, cim ima mogucnost za LINQ manipulaciju mora da ima i TI, doduse ne mora ali onda bi zaista bilo veselo.
[ negyxo @ 19.06.2007. 07:32 ] @
Citat:

Sve u svemu, radio sam dosta i sa jednim i sa drugim jezicima i kao što rekoh "na malo" dinamički zaista imaju svojih prednosti, ali za komplikovanije projekte - neka hvala :)

Da li to mislis na sistem provere kod dnamickih jezika ili na dinamcike feature dinamickih jezika. Jer slazem se da dosadasnji dinamcki jezici su nocna mora za bilo kakav iole veci rad ali neki feature-i dinamickih jezika su zaista dobri, i ne vidim zasto bi smetali u vecim projektima. Ali, ponavljam, trebalo bi razgraniciti tu proveru od samih mogucnosti dinamickih jezika, jer c# 3.0 ce imati neke dinamicke osobine a da je i dalje static type jezik.
[ jablan @ 19.06.2007. 09:58 ] @
Citat:
Dragi Tata: Međutim, autor teksta (kao i većina diskutanata ovde) izgleda nije upoznat sa inferencom tipova kod statičkih jezika: http://www.novetehnologije.com/Default.aspx?tabid=96 i http://boo.codehaus.org/Type+Inference

Ja nisam bio upoznat. Međutim, koliko vidim, type inference je tu samo zbog štednje kucanja, a ustvari ne rešava probleme koje adresira dinamičko tipiziranje (samo izdaleka liči). I dalje nećeš moći funkciji da proslediš bilo šta, tj. i dalje ćeš morati da restruktuiraš program, praviš nove interfejse i apstraktne klase kadgod budeš na primer hteo da iskoristiš parče koda na dve različite klase (videti Ekelov primer sa speak() metodom).

BTW, Ekel u drugom članku dotiče type inference i kaže sličnu stvar:
Citat:
You asked a question about whether type inference a la ML might give us the best of both worlds. From what I've seen, type inference is certainly an interesting addition to a language but it only touches on the different benefits offered by a dynamic language. In addition, type inference may actually exclude what I consider to be an important feature: latent typing, which puts less of a constraint on the types used by a function rather than more, and thus allows the creation of truly generic code.


Drugo, statični jezici definitivno ne rešavaju problem sloppy programera. Koliko puta sam video kako se u npr. ArrayList trpa sve živo, pa se posle kastuje nazad zato što programera mrzi da iskodira tipiziranu kolekciju (sad postoje generičke kolekcije, ali opet niko lošeg programera neće da natera da ih koristi). To su takođe greške gde vam kompajler neće pomoći...


[Ovu poruku je menjao jablan dana 19.06.2007. u 11:15 GMT+1]
[ negyxo @ 19.06.2007. 13:34 ] @
Jablane, TI nije bas zamena za stednju u kucanju. U vecini slucajeva moze da se koristi tako ali najfunkcionalnija primena je u deklarisanju ad-hoc objekata i ovo donekle pruza neke osobine dinamickih jezika. Po meni dynimc typing moze da dovede do samo lose organizacije koda, jer tamo je sve u fazonu "podrazumeva se" sto je jasno samo onome ko pise taj program i nikom vise, zobg ovoga kompajler i ne moze da zna o cemu se radi.
[ mmix @ 19.06.2007. 14:12 ] @
Citat:
jablan: Drugo, statični jezici definitivno ne rešavaju problem sloppy programera. ... To su takođe greške gde vam kompajler neće pomoći...
Ovo je tacno, ali boxing je ujedno i jedini aspekt c#-a koji je podlozan ovome. Za to sluzi ovaj VS regular expression pattern :
Code:
([^\(]object)|(\(:i\)[^\.;\)])
i ocekujem objasnjenje za svaki match koji nije auto-generisan. Moras priznati da je jednostavnije od pokusavanja da provalis na sta tip lici u kom trenutku izvrsavanja.

Citat:
jablan: Ja nisam bio upoznat...
Ja jesam, i opet se slazem sa tobom, infered tipovi su i dalje staticki tipovi, samo se kompajleru daje voljno da sam protumaci tip na osnovu inicijalne dodele. Nema tu nikakve magije, to je jednostavno privid dinamicnosti kroz "varanje" Kunem se, mislim da ovo nikad ne bi ubacili u C# da im nije trebalo kao platforma za anonymous tipove u LINQ-u. Za sve ostale primene infered tipovi jednostavno nemaju smisla.

Citat:
negyxo: U c# mislim da je int32 ali to moze da se razlikuje od kompajlera do kompajlera. Verovatno je sve stvar dogovora, kompromisa.
I sad meni neko hoce da kaze da je dinamicnost dobra Ma daj, ako ja treba stalno da "citam misli" kompajleru onda ode mas' u propas'.

Citat:
jablan[/url]:If you have pervasive testing, static typing == more typing. The static typing is nothing but a requirement to type extraneous code to satisfy a compiler that isn't telling you anything interesting anymore.

Slazem se sa prvim delom, ali ne i sa drugim. Zaista je more typing u samom programu, ali ne slazem se da mi kompajler ne daje nista interesantno, daje mi potvrdu da program nece puci zbog nestabilnosti tipova.
Necu ni da komentarisem ovaj new age movement oko testiranja, testiranje je veoma dobar pristup, ali talking about overdoing it... Da bi tvoj dinamicki kod stvarno bio u potpunosti istestiran par-to-par sa ekvivalentnim statickim kodom tvoji testovi moraju da sadrze sve provere koje bi inace staticki kompajler obavio tokom builda. Suma sumarum kolicina koda koju napises mora biti veca u dinamickom aspetku od statickog zato sto staticki kompajler to vec ima ugradjeno i ne mora biti predmet testiranja Ako nije vise koda onda nisi test uradio kako treba. Iz nekog razloga svi ti new-age testing funadmentalisti i proroci misle da testing code nastaje ni iz cega i da ne kosta nista i da je to odgovor na sve nase probleme oko kvaliteta koda. E pa nije.
I pride jos imas nezgodan aspekt da se tipovi menjaju tokom izvrsavanja programa i da tvoji testovi moraju to da imaju u vidu i da je skoro nemoguce predvideti sve moguce situacije koje ce dovesti do razlicitih "verzija" istog tipa, sto isto vodi kompleksnosti testova i dodatne mogucnosti za ljudske greske u samom testu.

Tako da ja ne kupujem ideju da je testing validna alternativa statickim tipovima i da kvalitet proizvoda dinamickog jezika podize na isti nivo.
[ Dragi Tata @ 19.06.2007. 14:27 ] @
Amin, Miljane.

Samo bih još dodao da pokretanje testova oduzima vreme, a ponekad i ububože puno vremena. Kad sam radio na sistemu za automatsko prevođenje teksta (eh, dobra stara vremena...) testove smo pokretali uveče i ujutru bi nas čekali rezultati.

Nego, da ne ispadne da sam "static typing fundamentalista", moram da naglasim da dinamički tipovi imaju puno smisla kad se radi sa SQL upitima i HTTP protokolom; obe ove tehnologije su dinamičke po prirodi stvari i tu se dinamički jezici lepo uklapaju. Pazi ovaj primer (čitanje application state u ASP.NET):

Code:

DataView Source = (DataView)(Application["Source"]);


Ako "Source" nije referenca na DataView static typing ti ne pomaže ništa.


Za SQL doduše postoje typed datasets koji daju izvesnu compile-time proveru i mogu lepo da se koriste sa statičkim tipovima, ali ako DBA promeni šemu baze, možeš da se slikaš sa tipiziranim daasetom :D
[ negyxo @ 19.06.2007. 14:34 ] @
Citat:

I sad meni neko hoce da kaze da je dinamicnost dobra Ma daj, ako ja treba stalno da "citam misli" kompajleru onda ode mas' u propas'.


Citat:

Kunem se, mislim da ovo nikad ne bi ubacili u C# da im nije trebalo kao platforma za anonymous tipove u LINQ-u. Za sve ostale primene infered tipovi jednostavno nemaju smisla.


Sam sebi si odgovorio
Onaj link koji sam dao, upravo o tome i govori da var ima jedino realnu primenu u anonimnim tipovima.
[ mmix @ 19.06.2007. 14:56 ] @
Citat:
Dragi Tata: Za SQL doduše postoje typed datasets koji daju izvesnu compile-time proveru i mogu lepo da se koriste sa statičkim tipovima, ali ako DBA promeni šemu baze, možeš da se slikaš sa tipiziranim daasetom :D


Iako ja jesam static type fundamentalista :) situacije kao sto su gornje definitivno daju validaciju testiranju, i ja verujem u testiranje static typed programa, koji uz vrlo malo truda otkrivaju gornje situacije. Off topic, a u vezi sa typed datasets, od kad sam naleteo na llblgen, poprilicno sam promenio svoj stav o koriscenju stored procedura za CRUD operacije. Iako jos treba malo da se ispegla, llblgen predstavlja sasvim validnu alternativu rigidnim tipiziranim datasetovima i da sam ja M$, llblgen bi bio kupljen i implementiran u Orca-i.