Wat heeft de toekomst, relationele data of object georienteerde data.
Of zijn concepten, die beiden combineren (The best of both worlds)?
Eerlijkgezegd vind ik het vermeende voordeel van OO bij samenwerking wat overdreven. Bij procedureel opgezet programmeerwerk kunnen mensen ook los van elkaar werken aan (sets van) functies, en zolang er maar goede conventies en documentatie bestaan over bijv de argumenenten en returns daarvan is procedureel werken geen belemmering. In de praktijk is dat voor OOP niet zoveel anders.Ieder werkt aan zijn eigen stukje binnen een groot ontwerp. Eigenlijk hebben goede programmeurs (die zijn zeldzaam!) altijd naar een object georienteerde werkwijze gestreefd. Ook binnen een taal die niet object georienteerd opgezet is kun je modulair werken (in essentie is dit oo).
Als je wel eens gewerkt hebt aan een project waaraan een paar honderd IT-ers aan meewerken, dan ga je begrijpen waarvoor OO dient. Je begrijpt toch wel dat dat niet kan door een verzameling van functies te maken.Benm schreef:Eerlijkgezegd vind ik het vermeende voordeel van OO bij samenwerking wat overdreven. Bij procedureel opgezet programmeerwerk kunnen mensen ook los van elkaar werken aan (sets van) functies, en zolang er maar goede conventies en documentatie bestaan over bijv de argumenenten en returns daarvan is procedureel werken geen belemmering. In de praktijk is dat voor OOP niet zoveel anders.
Maar het verschilt ook wel per toepassingsgebied natuurlijk. Zelf werk ik vrij veel met webgerichte programmatuur (scripting, zogezegd), daarbij is procedureel werken onverminderd populair. Wellicht komt dat ook omdat veel webapplicaties een relatief kleine codebase hebben, en je het overzicht daarover niet zo 123 verliest?
Bij OOP wordt van de voren niet alles dichtgespijkerd. Programmeren is inderdaad een leerproces, en al doende worden wijzigingen in ontwerp aangebracht, b.v. als eerdere plannen op problemen stuiten. Er zijn verschillende stadia van ontwerp. Al doende wordt er steeds verder ingezoemd. Ik zie hier geen onderscheid tussen vroeger, heden en later.qrnlk schreef:Hoe dan ook denk ik dat men het idee van een groot ontwerp vooraf zal laten varen.
In de praktijk doet men dat tegenwoordig al vrijwel niet meer bij originele software: Programmeren is ontwerpen en men ontwerpt (en herontwerp) terwijl men bezig is en al doende leert en ontdekt wat nu werkelijk het probleem is. Wat dat betreft is programmeren geheel anders dan architectuur/bouwen of andere vormen van 'engineering' en lijkt het meer op tuinieren.
Slechts bekende problemen kan met vooruit plannen en laten doen door 100den programmeurs.
Nee, dat is niet zo. Die honderden programmeurs worden verdeeld in afdelingen. B.v. een groep voor de interface, een groep voor de databases, een groep voor de koppelingen. Je zult versteld staan van de hoeveelheid werk dat een groot project met zich meebrengt. Elke afdeling kent weer zijn eigen onderverdelingen; active-x controls ontwerpen, documentatie, coordinatie enz. enz.Slechts bekende problemen kan met vooruit plannen en laten doen door 100den programmeurs.
Het kan soms snel gaan. Op dit moment worden bijvoorbeeld switches al geprogrammeerd in een concurrent/functionele taal (Of we echt de imperatieve talen vaarwel zullen zeggen betwijfel ik (althans voor laten we zeggen de komende 100 jaar).
Imperatieve talen gaan uit van de von neumann architectuur. Ze gaan uit van een volgorde van uitvoer, zijn zijnOf functionele talen hun rol zal overnemen betwijfel ik. Hun rol zal wel groter worden, maar zal de imperatieve talen niet verdringen zolang er toepassingen blijven waarvoor de eerste meer geschikt zijn.
Ik neem niet aan dat men het 'functioneel programmeren' zal noemen, mogelijk niet eens 'concurrent programmeren', maar het zal wel gebruik maken van de deze basis.En voor de functionele talen echt zijn doorgebroken is er vast wel weer een nieuw paradigma in zwang.
Bij projecten van die omvang is het een ander verhaal, maar aan de andere kant zijn dergelijke projecten erg zeldzaam... want zeg zelf, welke applicatie vereist een team van 100+ programmeurs?Als je wel eens gewerkt hebt aan een project waaraan een paar honderd IT-ers aan meewerken, dan ga je begrijpen waarvoor OO dient. Je begrijpt toch wel dat dat niet kan door een verzameling van functies te maken.
Volgens mij komt dat inderdaad wel veel voor, splitsen in blokken die min of meer los van elkaar te ontwikkelen zijn. Uiteraad lever je wel efficiency in omdat je ook weer mensen moet inzetten om het allemaal aan elkaar te rijgen, maar dat is denk ik inherent aan grote projecten, ongeacht welke methodes je gebruikt.B.v. een groep voor de interface, een groep voor de databases, een groep voor de koppelingen. Je zult versteld staan van de hoeveelheid werk dat een groot project met zich meebrengt.
Ik werk op het moment zelf aan een groot project, waar veel mensen aan deelnemen. Ikzelf zit bij de afdeling interfaces waar zo'n 20 man werken aan hetzelfde project.Wat ik dus bedoelde is dat bij volledig originele problemen zelfs deze onderverdeling niet bekent is; Juist omdat je bezig bent met een probleem uit een bepaalde categorie weet je al zo ongeveer hier het verdeeld kan worden.