Natrag   Forum.hr > Informatička tehnologija > Za napredne korisnike > Programiranje

Programiranje Za programere i one koji to žele postati ...

Odgovor
 
Tematski alati Opcije prikaza
Old 12.03.2004., 14:34   #1
Proceduralno vs. OO ucenje

Jezicne implementacije proceduralnih jezika ( C npr. ) ili OO ( C++/Java/C# ) imaju zajednicke koncepte u smislu
varijable,petlje, metode/funkcije tako da se ti koncepti mogu nauciti u oba tabora.

Razlika je u razmisljanju na koji nacin se slaze program i tu je filozofija drasticno drugacija. Daleko je lakse nauciti OO i onda ako treba napisati nesto u proceduralnom jeziku nego obrnuto. Osim toga ucenje OO jezika promovira malo vecu disciplinu pri developmentu sto takodjer nije lose.

Sintaksu bilo kojega jezika je lako i brzo za nauciti jer su one prilicno jednostavne no konkretno razmisljanje o dizajnu i implementaciji je onaj tezak dio.

Zato u OO svijetu imamo patterns kao katalog predlozaka rijesenja raznih problema. Naravno jos uvjek treba puno truda da bi se izabrali korektni patterni za primjenu na nas problem no to dolazi sa iskustvom.

I sam sam jako dugo radio u proceduralnim jezicima i to razmisljanje mi je bilo "prirodno" tako da sam se dosta dugo trebao rjesavati tih "losih" navika kada sam prelazio na C++.

Prokletstvo C++-a je da moze progutati gotovo svaki C program pa se desi neki cudni hibrid koji nije niti jedno niti drugo.

Sto se tice C SDK windows programiranja , da to ima svoje mjesto u izrazito uskom i specijaliziranom razvoju recimo drivera no u prakticne svrhe C++ je "najnize" sto se ide u aplikacijskom programiranju ,a u vecini slucajeva se koristi C#/Java ili nesto slicno jer je gubitak u performansama zanemariv u odnosu na dobitak u produktivnosti i lakoci odrzavanja sustava.
cunac is offline  
Odgovori s citatom
Old 12.03.2004., 14:39   #2
Nije mi jasna poanta?
Outcast is offline  
Odgovori s citatom
Old 12.03.2004., 14:46   #3
Quote:
Outcast kaže:
Nije mi jasna poanta?
zasto ljudi smatraju da je bolje poceti sa C nego sa recimo C++ ?
cunac is offline  
Odgovori s citatom
Old 12.03.2004., 15:07   #4
OK!

Quote:
zasto ljudi smatraju da je bolje poceti sa C nego sa recimo C++ ?
Odgovor je u tome što većina ne razumije problematiku. Formalno gledajući, radi se o dva potpuno različita pristupa. Ono što ljudi ne razumiju je baš to da se radi o dvije filozofije čije prednosti i nedostatke je cunac dobro opisao.

Današnji projekti nisu jednostavni, tako da mora biti uključeno više ljudi. To za sobom povlači da organizacija mora biti na dosta visokoj razini. Tu prednost ima OO. No to ne znači da se, recimo strukturirana analiza i dizajn ne mogu bolje organizirati. Oni koji se nešto razumiju u OOA&D i SA&D znaju da se u njima koristi dosta sličnih metoda i tehnika, tako da o superiornosti OO nad proceduralnim i strukturiranim nema smisla govoriti.

Izgleda da su trendovi na strani OO, tako da ako bih danas trebao birati, svakako bi odmah krenuo sa nekim OO programskim jezikom.
Outcast is offline  
Odgovori s citatom
Old 14.03.2004., 16:20   #5
Quote:
Daleko je lakse nauciti OO i onda ako treba napisati nesto u proceduralnom jeziku nego obrnuto. Osim toga ucenje OO jezika promovira malo vecu disciplinu pri developmentu sto takodjer nije lose.
Primjetio sam, da si ti na ovom forumu "the go to guy", ali izvini, ovu izjavu moram kritizirati.

Za tebe je programiranje toliko lako, da si izgleda vec zaboravio, da na pocetku same iteracije stvaraju probleme, i da treba dosta vremena, to nauciti. Ja sam to ucio sa 14 na C-128. Dosta sam trebao da skontam, ali izvini, da je to bilo jos zapakirano u Klase - zaboravi. Kad sam skuzio tri osnovne stvari (kako se ono kaze na engleski, assignment, case distinction, iteration) sam htio programirati strategicnu igru rata. Imao sam kartu, gdje sam uz koordinate jedne armije znao, gdje se nalazi na karti. Dobio sam probleme. Kad znam, gdje se nalazi vojska, kako tu jos trpati ime vojske, broj ljudi itd ? Pokusao sam uz visedimenzionalne arraye, ali sam dobio problema zbog razlicitih tipova (te probleme u PHP'u nebi imao ;-). Moglo se je to rijesiti, ali ne sa mojem znanjem iz te knjige, koja je dosla sa kompjuterom (i sa 14/15 god.). Trebala mi je neka variabla, u koju stavim vise variable, no o structovima tada nisam znao i tako ostavio. U cemu je stos ? Da sa poceo sa OOP, nebi znao o cemu se radi i nebi ni one prve programe napisao. Da sam poceo sa OOP nakon toga, mozda bi cak tu igru zavrsio. OOP je laksi, TEK KADA SI SKUZIO OSNOVNE STVARI PROCEDURALNOG PROGRAMIRANJA, PRIJE NIKAKO !

To sam primjetio i na faksu. Ljudi, koji jos nisu skontali skroz Programiranje 1 (C), su na programiranju 2 (C++) prekinuli studij.

Ako ces poceti par mjeseci sa preceduralnim, ti ces sam skontati potrebu o enkapsulaciji podataka i funkcija ! Kako drugacije pocetniku OOP'a objasniti potrebu za tim ? Kako poceti o klasi, kada ni nezna cemu sluzi obicni struct ? Sdruge strane, OOP nije = OOP. OOP-programi pocetnika cesto izgledaju vise kao neki pseudo OOP - design klase nema smisla a najvise stvari su i onako proceduralno strpane u main-funkciju.

Ja kazem, da ako imamo dva pocetnika, prvi napise 5 velikih proceduralnih programa gdje u 4. i 5. uci sto je strukt, i na kraju napise jedan OOP Program, da ce taj zadnji program bolje izgledati nego 6. program pocetnika, koji je odmah poceo sa OOP (jer je upravo poceo sa pseudo OOP).

Moje misljenje: prvo C.
__________________
Transparent na jednoj Anti-Bush Demonstraciji:
bombing for peace is like fucking for virginity
Rick23 is offline  
Odgovori s citatom
Old 17.03.2004., 10:52   #6
Quote:
Cunac:
Sto se tice C SDK windows programiranja , da to ima svoje mjesto u izrazito uskom i specijaliziranom razvoju recimo drivera no u prakticne svrhe C++ je "najnize" sto se ide u aplikacijskom programiranju ,a u vecini slucajeva se koristi C#/Java ili nesto slicno jer je gubitak u performansama zanemariv u odnosu na dobitak u produktivnosti i lakoci odrzavanja sustava.
Dakle, cijeli Win32 API je dizajniran kao C library. Nadam se da daljnja objasnjenja nisu potrebna. Druga je stvar sto ti kao aplikacijski programer pokusavas svoj vlastiti program upakirati u C++ klase. U svakom slicaju, neki pokusaji da se Win32 API upakira u C++ klase je se pokazao promasenim (MFC), neki pak tvrde da su drugi pokusaji (Borland) bili vise nego uspjesni (nisam testirao pa cu se suzdrzati od ocjene)

Glede odnosa performansi izmedju recimo C# i C++ koda: Napisi najbanalniju rekurzivnu funkciju u oba jezika i testiraj ih: C++ je brzi izmedju 12 i 15% (release verzije, naravno).

Lijepi pozdravi,
TomK is offline  
Odgovori s citatom
Old 17.03.2004., 18:56   #7
Quote:
TomK kaže:
Dakle, cijeli Win32 API je dizajniran kao C library. Nadam se da daljnja objasnjenja nisu potrebna.


mislim da jesu. Sve je to assembler,bitovi i elektroni
Da li shvacas kako je to bedast argument. Bitno je koji najvisi nivo apstrakcije mozes postici ,a da performanse budu adekvatne u odredjenom slucaju

Quote:

Druga je stvar sto ti kao aplikacijski programer pokusavas svoj vlastiti program upakirati u C++ klase. U svakom slicaju, neki pokusaji da se Win32 API upakira u C++ klase je se pokazao promasenim (MFC), neki pak tvrde da su drugi pokusaji (Borland) bili vise nego uspjesni (nisam testirao pa cu se suzdrzati od ocjene)


Pogledaj QT http://www.trolltech.com , to je jedan lijepi C++ framework on top of Win SDK. MFC je na brzinu izbacen wrapper jer je Borland u to vrijeme imao OWL koji je bio daleko bolji no MS je uspjeo indoktrinirati MFC kao way to go i ostalo je povjest.

Quote:

Glede odnosa performansi izmedju recimo C# i C++ koda: Napisi najbanalniju rekurzivnu funkciju u oba jezika i testiraj ih: C++ je brzi izmedju 12 i 15% (release verzije, naravno).

Lijepi pozdravi,
I to je lijepo, no reci mi sto ti znaci 15% ubrzanja u 99% slucajeva, gotovo nista jer je i onih 85% dovoljno brzo. Moras shvatiti zasto ljudi vise nemaju prevelike potrebe spustati se do metala i to je generalno trend. Moras svijecom traziti projekte u C++ ,a o C projektima da i ne govorimo. Jednostavno produktivnost i isplativost je daleko veca kod tih "sporih" jezika ( Java/C# ), a to je bottom line.

Osim toga banalni primjeri ne pokazuju stvarne razlike u preformansama jer su bas to banalni, na performanse aplikacije utjece tonu raznih stvari koje ne mogu biti adresirane testiranjem brzine petlje ili rekurzije.
cunac is offline  
Odgovori s citatom
Old 17.03.2004., 19:04   #8
Quote:
riki1512 kaže:
Primjetio sam, da si ti na ovom forumu "the go to guy", ali izvini, ovu izjavu moram kritizirati.


samo naprijed

Quote:

Da sa poceo sa OOP, nebi znao o cemu se radi i nebi ni one prve programe napisao. Da sam poceo sa OOP nakon toga, mozda bi cak tu igru zavrsio. OOP je laksi, TEK KADA SI SKUZIO OSNOVNE STVARI PROCEDURALNOG PROGRAMIRANJA, PRIJE NIKAKO !


kao sto rekoh petlje i ostali konstrukti nisu specificnost proceduralnog programiranja tako da ti taj argument ne stoji.
Iz iskustva vidim da ljudi koji prelaze sa proceduralnog na OO imaju daleko vise problema nego oni koji su poceli odmah OO.

Quote:

To sam primjetio i na faksu. Ljudi, koji jos nisu skontali skroz Programiranje 1 (C), su na programiranju 2 (C++) prekinuli studij.


nisi li mozda pomislio da je to zato sto su prvo ucili C pa im je C++ izgledao tesko jer su taman poceli razmisljati na jedan nacin i onda trazis da to zaborave.

Quote:

Ja kazem, da ako imamo dva pocetnika, prvi napise 5 velikih proceduralnih programa gdje u 4. i 5. uci sto je strukt, i na kraju napise jedan OOP Program, da ce taj zadnji program bolje izgledati nego 6. program pocetnika, koji je odmah poceo sa OOP (jer je upravo poceo sa pseudo OOP).
nece, jednostavno imam veliki uzorak ljudi koji rade u C-u preko nekoliko godina i jednostavno ne mogu napisati nista OO jer ne misle tako.
Ovdje na fakultetu uce Javu odmah , a ne C ili Fortran i primjecujem da generalno gledajuci "bolje misle" o dizajnu
cunac is offline  
Odgovori s citatom
Old 17.03.2004., 21:08   #9
Quote:
Cunac:
Da li shvacas kako je to bedast argument.
Po mome je misljenju daleko veca bedastoca diskutirati na ovakav nacin. Nemas nikakve potrebe da mi se obracas osobno, nego bi daleko pozeljnije bilo da diskutiras topic.

Quote:
Cunac:
Bitno je koji najvisi nivo apstrakcije mozes postici ,a da performanse budu adekvatne u odredjenom slucaju
Ovo samo potvrdjuje moje sumnje da nemas iskustva kao vindows programer. Uzmi najobicniju windows common control i razumjet ces zasto kompleknsne stvari nije moguce opisati i koristiti sa visokim nivoom apstrakcije.

Quote:
Cunac:
Moras shvatiti zasto ljudi vise nemaju prevelike potrebe spustati se do metala i to je generalno trend.
Ako i nema prevelike potrebe, to jos uvijek ne znaci da nema potrebe. Jasno ti je da je tebi netko omogucio da programiras na visokom nivou tako sto je programirao na niskom nivou

Lijepi pozdravi,
TomK is offline  
Odgovori s citatom
Old 18.03.2004., 03:49   #10
Quote:
TomK kaže:

Ovo samo potvrdjuje moje sumnje da nemas iskustva kao vindows programer. Uzmi najobicniju windows common control i razumjet ces zasto kompleknsne stvari nije moguce opisati i koristiti sa visokim nivoom apstrakcije.
nazalost tvoje sumnje su neosnovane. pretpostavljam da ti smatras da je subclasiranje vrhunsko dostignuce GUI programiranja. Vidis recimo Swing (java GUI framework ) ima sve GUI komponente u OO modelu i vrlo lako se prosiruju. Recimo komicno je koliko su napora trosili Win programeri da naprave obicnu korektnu grid komponentu , poslije su ju dobili u common controls no i dalje je smijesna , uopce ne mozes mijenjati data model , niti napraviti recimo rendering drugacije ,a da ne iskilavis.
Zalosno je sto ti poznajes samo jednu stvar i onda pokusavas izvoditi neke uspoiredbe ,a nemas sa cime usporedjivati zbog siromastva svoga "iskustva"
Koliko ono do trazenja prvoga posla ?
cunac is offline  
Odgovori s citatom
Old 18.03.2004., 03:50   #11
Quote:
TomK kaže:
Po mome je misljenju daleko veca bedastoca diskutirati na ovakav nacin. Nemas nikakve potrebe da mi se obracas osobno, nego bi daleko pozeljnije bilo da diskutiras topic.
samo se nemoj rasplakati.
komentiram tvoje umotvorine isto kao i ti moje pa onda prestani kukati.
cunac is offline  
Odgovori s citatom
Old 18.03.2004., 07:26   #12
Quote:
Cunac:
Recimo komicno je koliko su napora trosili Win programeri da naprave obicnu korektnu grid komponentu , poslije su ju dobili u common controls no i dalje je smijesna , uopce ne mozes mijenjati data model , niti napraviti recimo rendering drugacije ,a da ne iskilavis.
Tvoje misljenje o ovome nije relevantno, jer nisi window programer. Da jesi, to bi se dalo vidjeti iz tvojih postova. Dakle, drzi se jave i onoga u cemu imas kakvo-takvo iskustvo.

Quote:
Cunac:
Zalosno je sto ti poznajes samo jednu stvar i onda pokusavas izvoditi neke uspoiredbe ,a nemas sa cime usporedjivati zbog siromastva svoga "iskustva"
Jeli se to sam sebi obracas i referiras na svoje iskustvo kao windows programer? Dakle drzi se jave i onoga o cemu si ponesto i procitao

Quote:
Cunac:
komentiram tvoje umotvorine isto kao i ti moje pa onda prestani kukati
Tko je rekao da su umotvorine to sto ti pises?

Quote:
Koliko ono do trazenja prvoga posla ?
Zasto zuriti? Daleko je ljepse u skoli.
Ako me mozes razumjeti sto zelim reci
TomK is offline  
Odgovori s citatom
Old 18.03.2004., 08:43   #13
Pozdrav!

Tema mi je vrlo zanimljiva jer sam i sam u dilemi oko proceduralne ili OO paradigme. Godinama pisem u C-u razmisljajuci uvijek otprilike na isti nacin, pa mi cak i prijelaz iz DOS u Win programiranje nije predstavljao veliku promjenu. Imam ogromnu bazu sourca koji sam napisao i kojeg koristim po principu copy-paste. Prije par godina poceo sam se interesirati za OO i moram priznati da mi se svidjela ideja klase - sjediniti podatke i funkcije, enkapsulirati neke mehanizme. Danas sam u nekoj cudnoj meduzoni - ni cisto proceduralno ni objektno. Koristim klase, ali samo kao organizatore podataka i funkcija. Procitao sam dosta knjiga i pregledao masu sourceva i nikako ne mogu uhvatiti bit OO paradigme! U cemu je fora?!? U cemu je prednost?

Napravio sam par pokusa sa MFCom i to je bila prava komedija. Kad sam uzeo prvi primjer potrosio sam tjedan dana trazeci gdje program pocinje! Skoro sam pao sa stolice kad sam procitao da su winmain i message loop skriveni i da sve pocinje deklaracijom objekta. Pravi kaos u mojoj glavi! I nije mi se svidjelo.

Mislim da je sintaksu jezika lako nauciti, koncept je problematican, i zato je bolje odmah poceti sa onim konceptom koji ce se koristiti. Na kraju krajeva petlje, uvjete i sl. morate nauciti koju god paradigmu koristili. Druga je stvar da li je OO konacno rjesenje i treba li proceduralno programiranje zaboraviti.
Nekako mi se cini da je za manje projekte, pogotovo ako ih radi jedna osoba, brze i jednostavnije raditi u proceduralnoj paradigmi (ali sa OO i nemam iskustva pa je to vise stvar osjecaja nego neke konkretne prakse).

Na kraju, ako imate neki pametan savjet zasto i kako uci u svijet cistog objektnog programiranja rado cu ga poslusati
mestar is offline  
Odgovori s citatom
Old 18.03.2004., 09:44   #14
Prednost je u tome što koristeći objektno-orijentirano programiranje možeš postići veliki stepen modularnosti. To znači da se tvoj program sastoji od više međusobno neovisnih dijelova. Klasa ti dozvoljava da grupišeš podatke i funkcije koje se na njima mogu izvršiti u jednu cjelinu, koja je neovisna o bilo čemu izvan klase. Umjesto da radiš s nečim velikim, radiš s više manjih dijelova. Uzmimo za primjer kompjuter. Kompjuter se sastoji od više dijelova, hard disk, memorija, grafička kartica. Hard disk ne mora znati kako grafička kartica radi interno. Njegov rad ne ovisi nikako o tome kako radi grafička kartica. Matična ploča je nešto kao main() funkcija. Ona komunicira s raznim dijelovima. Možeš izvaditi memorijski modul i staviti drugi unutra. Opet sve radi. Zamisli sad da na primjer rad memorije koristi nešto što je unutar hard diska. U tom slučaju memorija mora znati kako to radi unutar diska. Ako sad staviš novi hard disk, koji to isto radi na drugi način, morao bi promijeniti način na koji radi memorija da bi ga uskladio s novim hard diskom. U ovom slučaju jedna promjena zahtijeva niz drugih promjena za normalan rad. Ovakvi problemi nastaju u proceduralnom programiranju, dok je OOP kao i stvarni kompjuteri, svaka komponenta radi neovisno. Puno je lakše riješiti veći broj manjih problema i onda ih spojiti u jednu cjelinu nego riješiti jedan veliki problem. Zamisli kako bi bilo kad ne bi postojali zasebni dijelovi u kompjuteru, kad bi cijeli kompjuter bio jedna cjelina, tj. nema kartica, koje se mogu izvaditi, nema memorijskih modula, koji se mogu izvaditi i sve je samo jedna ploča. U tom slučaju bi sigurno svaki dio ovisio o radu drugih dijelova i izmjena rada jednog bi zahtijevala izmjenu rada svih ostalih. Puno je lakše ovako, kad možeš jednostavno izvaditi jedan dio i ubaciti novi.

U OOP kreiraju se klase, koje rade kao crna kutija s otvorima. Ti ne znaš kako kutija radi unutra, ali znaš da imaju otvori gdje se nešto može ubaciti i gdje nešto može izaći iz kutije. Ne možeš znati i nema potrebe da znaš kako kutija radi. Važno je da znaš šta radi i možeš koristiti kutiju. Zamisli sad da ti napraviš neki stroj u koji kao sastavni dio staviš i ovu kutiju. Stroj je povezan s kutijom, tj. u neke otvore na kutiji ubacuje stvari, a preuzima stvari koje kutija izbacuje kroz druge otvore. Poslije izvjesnog vremena iziđe nova verzija kutije, koja ima iste otvore (otvori primaju isto i izbacuju isto), samo kutija sad radi bolje, npr. kutija radi brže, pa i tvoj stroj sveukupno radi brže. Vrlo je lako zamijeniti kutiju. Spojiš je sa strojem na isti način kao i staru i gotovo. I ne samo to. Zamisli izađe sad nova kutija, koja ima sve one otvore, koje je imala i stara, ali ima i nove s novom funkcionalnošću. Ili izađe više raznih novih kutija i svaka od njih dodaje nešto novo pored postojećih otvora iz stare. Tvoj stroj će raditi kako treba sa svakom novom kutijom. Ako bi, suprotno ovome tvoj stroj koristio nešto što je unutar kutije, onda bi kad izađe nova kutija, koja radi stvari na drugi način, morao modificirati svoj stroj tako da razumije ovaj novi način rada i može koristiti novu kutiju. Recimo da tvoj stroj radi s jednom vrsto predmeta. Stroj ih ubacuje u kutiju, kutija ih obradi na neki način i izbaci van obrađen predmet. Recimo sad napravi se nova kutija, koja kroz isti otvor može primati više raznih vrsta predmeta. Ako stroj ne ovisi o tome kako kutija radi interno, tvoj stroj može automatski obrađivati sve dodatne vrste predmeta. Samo ih ubaci u kutiju, kutija ih izbaci obrađene i gotovo. Ako bi stroj koristio nešto unutar kutije, morao bi biti modificiran da se prilagodi novoj kutiji.

Ovo ilustrira prednosti OOP. Ima i drugih, ali ovo je dovoljna motivacija za korištenje OO jezika.
__________________
Ja sam mladić u najboljim godinama i čovjek za sutra, a nekad sam bio sretno dijete. U mojoj općini problema nema, jer rade veze i poznanstva.
Shadowman is offline  
Odgovori s citatom
Old 18.03.2004., 10:24   #15
Mislim da su neke stvari u ovoj diskusiji postavljene pogresno. Dakle, neki tvrde da programeri koji su prvo naucili proceduralne jezike nisu u stanju preci na OO paradigmu zbog nacina razmiljanja na koji su navikli programirajuci u proceduralnim jezicima. Ali gospodo, jeli tu greska u samom programeru ili u cinjenici da smo prvo znali proceduralno programirati, a tek zadnjih dvadesetak godina programiramo objektno? Mislim da je greska u programeru. Jer, tko kaze da cemo programirati objektno i narednih 20 godina? Tko kaze da se nece pojaviti nova paradigma za 10 godina? Znaci li to da ce programeri koji danas programiraju objektno sutra biti drugorazredni programeri samo zato sto su prvo naucili OOP?

Za mene to zvuci apsolutno pogresno.

Lijepi pozdravi,
TomK is offline  
Odgovori s citatom
Old 18.03.2004., 11:27   #16
Slažem se u potpunosti. Zapravo sam već na početku ove teme nešto slično rekao. Ako nemaš talenta za ove stvari, vjerovatno će ti sve to biti neshvatljivo. Ali, ako imaš, kad te jednom uvedu u OOP, pomislićeš kako je to odlična stvar i da si baš takvo što priželjkivao. To je isto kao i reći da ne možeš naučiti integrale u matematici, jer si dosad učio samo raditi s konstantnim vrijednostima. Ne mislim da prethodno znanje može sputavati u učenju novog.
__________________
Ja sam mladić u najboljim godinama i čovjek za sutra, a nekad sam bio sretno dijete. U mojoj općini problema nema, jer rade veze i poznanstva.
Shadowman is offline  
Odgovori s citatom
Old 18.03.2004., 11:43   #17
Shadowman, mislim da si malo zastranio. Tko kaže da se modularnost ne može postići tako da koristiš procedure i funkcije. Ono što ti pokušavaš prikazati kao prednost OO pred strukturiranim su pravila kojih bi se trebali držati kod kreiranja interface-a. Zašto ja ne bih mogao definirati proceduru koja bi igrala ulogu crne kutije. Ako dobro definiram ulazne i izlazne parametre, dobit ću istu funkcionalnost koju ti pripisuješ OO konceptima.
Želim reći da si ti naglasak stavio na interface, a za interface je isto kao i za loop i if uvjet programira li se OO ili strukturirano. Ako na vjeruješ, razmisli može li se strukturiranim programiranjem napraviti npr. COM objekt.

Ono što vjerojatno nije spomenuto do sad je, da je najznačajnija razlika između strukturiranog i OO programiranja u PAKIRANJU KODA! Različiti su načini pakiranja koda. Iskustvo je pokazalo da OOA&D ima prednost pred SA&SD kad se radi o velikim projektima (to znači da je projekt mjereći ga brojem linija koda velik, da je sustav jako složen i da na njemu treba raditi više ljudi). Kad se velikim projektima doda još i to da trebaju biti završeni u zadanom roku i da su resursi u obliku sredstava, ali i novca ograničeni, dolazi da OOA&D ima značajnu prednost pred SA&SD.

Budući da se od početka starta sa OOA&D, kao logično proizlazi da sa kao zadnja faza koriste OO programski jezici, mada se može i bez njih. Budući da se već više od deset godina uvodi OO paradigma, u razvoju raznih projekata, proizlazi da OO ima svoju utvrđenu bazu "korisnika" koja se nastavlja širiti. Želite li se baviti programiranjem, logično je da ćete odabrati OO programiranje, jer je OO programiranje trend.

Na kraju, budući da se radi o dva različita pogleda na problem, početi prvo sa jednim (strukturiranim) i naučiti se razmišljati na njegov način (naročito nakon više od godinu dana iskustva), kod prosječnih ljudi stvara neke vrste ograničenja, a te su da u OO svijetu pokušavaju progurati značajke strukturiranog programiranja.

No to ne treba biti pravilo, jer ukoliko si uspijete organizirati sve faze životnog ciklusa softvera kako treba, SA&SD nisu za odbaciti.
Outcast is offline  
Odgovori s citatom
Old 18.03.2004., 12:09   #18
Quote:
razmisli može li se strukturiranim programiranjem napraviti npr. COM objekt
Naravno da moze. COM definira standard na binarnom nivou, a o implementaciji ne govori nista. Druga je stvar sto je COM interface (array of functions pointers) najlakse implementirati koristeci C++ klase, ali to asolutno ne znaci da ne mozes istu stvar napraviti na stotinu drugih nacina i koristeci 100 drugih jezika. Sustina COM tehnologije je nepromjenjivost interface-a i kompatibilnost na binarnom nivou (u cemu, usput receno C++ standard ne govori nista, pa u vecini slucajeva ne mozes zajedno koristiti kod kompajliran sa 2 razlicita kompajlera, zbog razlicite implementacije v-table, function mangling,...)

Lijepi pozdravi,
TomK is offline  
Odgovori s citatom
Old 18.03.2004., 12:14   #19
Quote:
TomK kaže:
Tvoje misljenje o ovome nije relevantno, jer nisi window programer. Da jesi, to bi se dalo vidjeti iz tvojih postova. Dakle, drzi se jave i onoga u cemu imas kakvo-takvo iskustvo.


ja vise nisam MS Win programer (primjeti proslo vrijeme) , ti nikada nisi niti bio programer , primjecujes razliku ?

Quote:

Jeli se to sam sebi obracas i referiras na svoje iskustvo kao windows programer? Dakle drzi se jave i onoga o cemu si ponesto i procitao


za razliku od tebe ja pisem o onome sto jesam radio ,a ne samo procitao , to i je razilika izmedju studenta i onoga koji stvarno radi

Quote:

Zasto zuriti? Daleko je ljepse u skoli.
Ako me mozes razumjeti sto zelim reci
u skoli je uvjek ljepse, samo nema blage veze sa stvarnim zivotom if you know what I mean
cunac is offline  
Odgovori s citatom
Old 18.03.2004., 12:21   #20
Quote:
TomK kaže:
Mislim da su neke stvari u ovoj diskusiji postavljene pogresno. Dakle, neki tvrde da programeri koji su prvo naucili proceduralne jezike nisu u stanju preci na OO paradigmu zbog nacina razmiljanja na koji su navikli programirajuci u proceduralnim jezicima. Ali gospodo, jeli tu greska u samom programeru ili u cinjenici da smo prvo znali proceduralno programirati, a tek zadnjih dvadesetak godina programiramo objektno? Mislim da je greska u programeru. Jer, tko kaze da cemo programirati objektno i narednih 20 godina? Tko kaze da se nece pojaviti nova paradigma za 10 godina? Znaci li to da ce programeri koji danas programiraju objektno sutra biti drugorazredni programeri samo zato sto su prvo naucili OOP?

Za mene to zvuci apsolutno pogresno.

Lijepi pozdravi,
Cinjenica je da ljudi tesko mijenjaju navike ,a razlika izmedju proceduralne i OO paradigme je za dosta njih prevelika da bi ju mogli prihvatiti. Neki naravno ne vide niti prednost pa i to je razlog. Sto se tice novih paradigmi potrazi sto je AOP (aspect oriented programming) pa ces vidjeti jos neke nove stvari
cunac is offline  
Odgovori s citatom
Odgovor



Kreni na podforum




Sva vremena su GMT +2. Trenutno vrijeme je: 22:39.