Avatar billede LilleUdvikler Nybegynder
15. december 2011 - 10:36 Der er 10 kommentarer og
1 løsning

Blande OOP og "normal" sammen

Hejsa,

For det første, hvad hedder det hvis det IKKE er Objekt Orienteret Programmering? :-)

---
Jeg lavede en tråd for noget tid siden, omkring at lave OOP, og det resulterede i at jeg nu er igang med OOP og nyder det indtil videre :-)

Jeg er dog lidt i et problem: Jeg har en pager class, som jeg ikke kan få det til at fungere når det skal være OOP. Men min pager virker, hvis jeg har den i "normal" programmering.

Så jeg tænke på, "bare" at gøre det - det skal være til et forum, hvor man kan få vist alle tråde. Så er det ikke så pænt at det bare køre derud af i al uendelighed ;-)
Avatar billede LilleUdvikler Nybegynder
15. december 2011 - 10:55 #1
Og selvfølgelig har jeg nu fixet det, så det fungere. :-) Dejligt!

Men jeg kunne stadig godt tænke mig, at vide om det kan lade sig gøre og hvad "normal" programmering EGENTLIG hedder :)
15. december 2011 - 12:42 #2
Udtrykket Procedural Programming bruges ofte til at udtrykke modsætningen til Object Oriented Programming.  Se for eksempel http://en.wikipedia.org/wiki/Procedural_programming
Avatar billede vagnk Juniormester
15. december 2011 - 14:48 #3
Efter at have tænkt lidt over spørgsmålet, der faktisk er dybere end som så, fik jeg lyst til at fyre et standpunkt af, der måske kan give mig tæsk.

IMHO: Hvis det er af hensyn til læsbarhed er det fuldstændigt ligegyldigt om man bruger gammeldaws procedure eller OOP. Sproget er osse ligegyldigt om det f.eks. er konverserende som APL eller kompileret som f.eks. C eller FORTRAN.

Det er min påstand at, hvis man fra edb-alderens start havde brugt pengene til at uddanne programmører der kunne deres fag, kunne man have sparet mange penge på at udvikle sprog og metoder der kun har det ene formål at det skal være muligt for vores chefer (såkaldte beslutningstagere) at holde øje med det vi laver.

I de 30 år jeg programmerede har jeg ikke oplevet et eneste program der ikke kunne lukkes op. Uanset hvor rodet eller ustruktureret programmet var skrevet, kunne man altid finde den fejl man søgte eller det sted man skulle arbejde med hvis programmet skulle speedes op. Jeg har oplevet meget spaghettikode i min tid, men jeg har aldrig set et program der var så struktureret, at man i koden kunne se en kommentar som "Hej, hvis du leder efter en fejl, så er den her i denne rutine".
Avatar billede LilleUdvikler Nybegynder
15. december 2011 - 15:47 #4
Mange tak for svarene begge to.

@vagnk - Det var noget af en smørre du fik lavet dig der.

Jeg er faktisk lidt i tvivl omkring OOP er hurtigere og performer bedre end Procedural programmering?
Avatar billede vagnk Juniormester
15. december 2011 - 16:21 #5
Uanset metode skal koden fortolkes linje for linje. Når koden ikke kommer gennem en kompiler er der begrænsede muligheder for lave maskinel optimering. Hvis du inde i et for-loop sætter en variabel til den samme værdi i hvert loop, ville en optimizer finde den og flytte den udenfor loopet, men en fortolker kan ikke. Det skal dog siges at moderne fortolkere som PHP sikkert ville finde en så relativt simpel bøf.

Jeg har set eksempler på OOP på et relativt simpelt problem der gjorde afviklingen langsommere, men jeg har osse set eksempler på det modsatte.

I min personlige liste med koderegler siger jeg at du kan lave 100 linjer kode for hver diskaccess du laver og og du kan lave 100 diskaccesser forhver netrequest du laver. Resten er sund fornuft som f.eks at flytte $var=20; udenfor loopet. Og det er uanset om du bruger procedural eller OOP.
15. december 2011 - 17:07 #6
LilleUdvikler,  med mindre jeg skulle have misforstået det grundigt, så er OOP udviklet med henblik på at forbedre kodens struktur, ikke kodens hastighed/performance.  OOP skulle hjælpe til at 'oversætte' komplekse problemstillinger til kode og derved medvirke til programmer af bedre kvalitet og som måske er hurtigere at skrive.  Som vagnk skriver, så afhænger programmers hurtighed og 'performance' af andre ting.  (Jeg har ikke 30 års programmer erfaring og kan ikke tale med om optimering.)

vagnk, du sagde, at du ville fyre et standpunkt af som måske kan give dig tæsk.  Men jeg fik ikke fat på hvad dit standpunkt nu er.  Kom igen, jeg er interesseret.  Måske kunne du sige:  "Mit standpunkt er, at .......Jeg begrunder dette standpunkt med ...."  (For eksempel (men dette er et gær) "Mit standpunkt er, at det har været spild at udvikle forskellige programmeringsprog og programmeringsmåder såsom OOP og at man bør afholde sig fra at anvende moderne sprog/metoder.  Jeg begrunder dette standpunkt med, at ordenligt uddannede programmører kan klare sig sig med simple midler, og at man bør overlade programmering til ordenligt uddannede programmører." ??
Avatar billede LilleUdvikler Nybegynder
16. december 2011 - 08:25 #7
"...og at man bør overlade programmering til ordenligt uddannede programmører"

Tror du at fordi du er "ordentligt" uddannet så er du en fabelagtig programmør? Jeg har en lære, som er 'ordentligt' uddannet og jeg kan programmere ret meget mere PHP end han kan, fordi jeg får holdt det ved lige.

Det handler lige så meget om, at holde sin programmering ved lige, og følge med i udviklings strømmen. Hvis ikke du følger med, så skal du 'næsten' begynde all-over når du tager fat i PHP igen efter en længere pause.

-----
Når det så er sagt: Er du mod at man skal bruge OOP? :-) Det synes jeg er lidt spændende at høre mere om.
Avatar billede vagnk Juniormester
16. december 2011 - 11:06 #8
Kære Christian
Men jeg fik ikke fat på hvad dit standpunkt nu er.
Nu lægger jeg jo ud med IMHO (In MY Humble Opinion) efterfulgt af en påstand. Jeg kan næsten ikke gøre det tydeligere, at det jeg kommer med faktisk er lidt OT.

Jeg er absolut ikke modstander af OOP.
I sin tid da vi fik skærme i stedet for papir skete der ikke den store forskel i programmerings-teknikken. Det var stadig det samme output (som papir) med 80 eller 132 tegn på en linje og på den tegnbaserede skærm 24 eller 30 linjer pr. skærmside. Det store (paradigme-?)skift kom omkring '90 da vi så windows-teknikken (X-windows). Nu kunne man ikke længere kode sekventielt, men havde behov for interruptstyret event-programmering. For at styre alle de gadgets og widgets på skærmen og brugerens fuldstændig uforudsigelige måde at handle på, var der intet andet end OOP.

I dag er det som om der har bredt sig den opfattelse, at hvis man koder i OOP så er man prof og laver overskuelig kode. Jeg vil gøre opmærksom på at OOP ikke er synonymt med god programmering.

Det er min erfaring at hvis man tager fat i et program man skrev for et halvt år siden og stadig kan forstå koden og se hvad der foregår, så er koden OK. Hvis man har problemer, skal man i gang med kommentartasterne og kigge en ekstra gang på strukturen. Igennem næsten hele min karriere har jeg insisteret på at få tid efter 3-6 mdr. til en bardunopstramning. Efter den periode er der altid noget der kan gøres smartere, eller beskrives bedre, eller struktureres bedre.

Rent bortset fra at det kan være sjovt at kode OOP, men så er det jo det, der er formålet. Og det er måske svaret til LilleUdvikler!
Avatar billede cronaldo Nybegynder
17. december 2011 - 00:53 #9
Nu er jeg 21 år og har vel snart kodet i 10 år. Jeg har dog først for alvor bevæget mig ind i MVC/OOP inden for de seneste 3-4 år... Jeg synes det er fedt at høre fra sådan en som vagnk, der har været inden for programmering så længe! :)

Jeg vil knytte en lille kommentar: Jeg har programmeret både OOP (med tilhørence MVC-framework) sites, som performer fantastisk og jeg har også lavet procedural programming-projekter, der den dag i dag stadig kører.

Jeg vil dog sige, at fordelen i OOP ligger i, at når du skal rette til/udvide så har du en kæmpe fordel med OOP-programmeringen. Ikke dermed sagt, at det er det optimale, for det vil det i nogen situationer ikke være. Dog vil jeg sige, at hvis jeg skal begive mig ud i at kode sammen med andre på et projekt, så kan jeg næsten ikke forstå andres "ikke-OOP" kode. Det er simpelthen fordi jeg er kommet væk fra det.

Derudover vil jeg også sige, at jeg ofte støder ind i nogle sider, der er kodet i OOP fordi det skulle være smart, men hvor man har valgt at bruge foreach-i-foreach løkker, hvor det absolut kunne klares med nogle SQL-joins mv... Altså klassiske rookie fejl, der gør performancen så meget dårligere fordi man er blevet nødt til at lave et work-around pga. ens commitment til den objekt orienterede programmering.

Det jeg gerne vil frem til er: Man skal ikke vælge noget bare fordi alle de andre gør det. Man skal gøre det, der 1) passer til ens projekt - faktum er, at OOP-programmering vil kræve mere "forarbejde" inden applikationen begynder at tage for, og 2) vælg det man bedst kan overskue og lærer mest ved + føler sig bedst tilpas med. Det er som alt andet i livet - hvis man har det godt med det, man gør, og hvis man gider det, så bliver resultatet meget bedre!

Jeg ved ikke, om det overhovedet kan bruges - eller om det overhovedet er inden for topic, men hvis nogen kan bruge det, så er jeg tilfreds :o)

God jul til Jer alle!
Avatar billede LilleUdvikler Nybegynder
18. december 2011 - 17:50 #10
@cronaldo Mange tak for dit indskud i den her faktisk, ret spændene debat der efterhånden er.

Jeg kan se, at i alle sammen hælder mege til, at: "Man skal gøre, hvad man føler for." Og det er også meget min egen mening.

Som også du siger, så bliver tingene altså bare bedre, hvis man interessere sig for det. Og det gælder også når du programmere.

Tak for alle de fine besvarelser der har været på denne tråd.

Jeg kunne godt tænke mig, at I alle sammen smed et svar :-)
23. december 2011 - 21:28 #11
LilleUdvikler, mit svar er i #2, og du fik ikke andre svar.  Hvis du alligevel vil dele points kan du selv oprette et svar og acceptere begge.  Men kunne jeg få dig til at lukke spørgsmålet nu?  Så er der ryddet op, og spørgsmålet står ikke længere som åbent i min (og andres) liste af indlæg.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester