Header Ads Widget

Ticker

6/recent/ticker-posts

OOP is to writing a program, what going through airport security is to flying

p.s. Just some copy paste of an OOP  discussion

Laatste les heb ik het beste programmeerles in mijn leven gehad.
Vooral omdat Peeter het OOP scitterend heef uitgelegd.
In toen heb ik het alles begrepen. Dat OOP niet de enige manier is om te programmeren. En dat vooral voor beginners het maar voor het vewarring zordt. Nu snap in waarom dat Linus Torvalds C++ becritiseert: http://harmful.cat-v.org/software/c++/linus en zo blij is met C https://www.youtube.com/watch?v=XHosLhPEN3k en waarom dat er zoveel geschreven is in C (Unix/Linux/Solaris etc): http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
 en dat Richard Stallman OOP ook becritiseert: http://en.wikipedia.org/wiki/Object-oriented_programming#Criticism
Want vroeger kon ik het niet zeggen. Ik dacht dat het OOP het enige juiste manier is om te programmeren. Maar het blijkt precies niet zo te zijn:
https://www.youtube.com/watch?v=k6U-i4gXkLM
Het is voor mij gemakkelijker nu met onze kleine programmas van vijf lijnen kode om een stuk van kode te selecteren en een keer Ctrl+C te drukken en dan 5-7 keer Ctrl+V te drukken. En dan een paar namen aan te passen. Dan een aparte Classe of Methode te creeren. Dat is OOP for the sake of OOP. Niet dat wij een heel grote project zijn aan het optimalizeren. Die ik niet eens nog gezien heb. Laat staan geschreven.
Just my 2 cents ;)

David je zegt zo omdat je misschien al wat meer erwaarring heeft. Je begint al met wat verdere dingen te expirementeren. Dan de basis waarme dat we bezig zijn. De simpele dingens die wij juist ontdekken. En OOP is juist dat expirementeren met gewoorderde concepten. Code design.
Maar ik als een beginner wil alleen maar get my hands dirty. Code some some practical stuff that works. Do some first steps. En wij beginnen al loopen voor dat wij nog wandelen hebben geoefend. Nu moet ik een ellende ondergaan van aan het code design te denken. Ipv een gewoon maar iets in elkaar te pritsen dat zijn ding maar doet. Ik heb echt geamuseerd toen dat wij in command prompt simpele dingens zijn gaan intypen. Of vooral net de MSDN form te laten werken. Ik wil vooral dat het werkt. En het werkt ook.
Als je mij vraagt, dan is OOP volgens mij juist hetzelfde als Scheduling in besturings systemen. Heel teoretisch en wij hebben ons kop gebroken eroven op de les Besturings systemen. Maar als je bijvoorbeeld een van de meest wereld bekende boeken opent over besturings systemen. Modern Operating systems by Andrew Tanenbaum. Die Windows NT en BSD vergelijkt. Tanenbaum is de man die Minix (Unix clone on Unix te leren) heeft geschreven. Die Linus Torvalds (ook deze boek gelezen) heeft gebruikt om Linux te schrijven. Ik heb die boek ook gekocht om geschidenis en alles te leren. En wat zie ik daar op de eerste pagina staan:
The amount of space devoted to some of these topics is different than in some other books, however, reflecting my belief that students should learn about concepts that are of practical value in real systems, rather than those that are just of theoretical interest. For example, CPU scheduling is worth a section, not a zhole chapter. Many complicated scheduling algrithms have been proposed and analysed in the literature, but most real systems just use some kind of simple priority or round robin scheme.
En op een van de links die ik hierboven gepost heb kan je lezen dat:
  • Carnegie-Mellon University Professor Robert Harper in March 2011 wrote: "This semester Dan Licata and I are co-teaching a new course on functional programming for first-year prospective CS majors... Object-oriented programming is eliminated entirely from the introductory curriculum, because it is both anti-modular and anti-parallel by its very nature, and hence unsuitable for a modern CS curriculum. A proposed new course on object-oriented design methodology will be offered at the sophomore level for those students who wish to study this topic."[44]
Als wij hier verder erover lezen dan zien wij dat OOP niet de enige manier is op te programmeren. Het kan wel zijn dat het bekend is. Maar dan wilt het ook niet zeggen dat het enige juiste manier is.
https://en.wikipedia.org/wiki/Programming_paradigm
Many programming paradigms are as well known for what techniques they forbid as for what they enable. For instance, pure functional programming disallows the use of side-effects, while structured programming disallows the use of the goto statement. Partly for this reason, new paradigms are often regarded as doctrinaire or overly rigid by those accustomed to earlier styles.[4] Avoiding certain techniques can make it easier to prove theorems about a program's correctness—or simply to understand its behavior.
Voor mij blijkt het precies dat het Programming paradigms zijn zoals verschillende stijlen van tekenaars of schrijvers. Misschien ben ik iemand die denkt in Functional of Logical programming paradigm. Omdat ik eerse keer programmeren heb gekregen in BASIC 15 jaar geleden. En voor mij die OOP gedoe is inderdaad als 'doctrinaire'.
Ik heb ook juist gelezen dat Steve Jobs precies een groote fan was van OOP. Nu blijkt het mij precies dat hij daar echt iets had met Picasso. Eers citeert hij hem en zegt dat "good artists copy great artists steal". En dan maakt hij nog een stijl van programmeren dat op Picasso zijn Cubism lijkt. Die ik nooit kon begrijpen. Die voor mij gewoon ugly is.

Ik schrijf het hier omdat ik vind dat het voor ons als cursisten programmeurs niet onbelangrijk is.

Toen dat wij nog op de les zaten en toen dat ik besefte dat er precies iets mis is met OOP. (Of misschien moet verduidelijken, zich beperken alleen tot OOP). In het eerste instantie ging ik googelen naar Object Oriented Programming en twee namen van mensen die veel betekenen in de wereld van vooral software programmeren. Linus Torvalds, die de Minix (Minix is Unix Clone om Unix te leren) van Andrew Tanenbaum heeft gbruik om nog een andere Unix clone te schrijven - Linux dus. Om dan zijn Linux met GNU te combineren. Nog een Unix clone. En dan Richard Stallman die juist die GNU Unix clone geschreven heeft. Omdat Andrew Tanenbaum hem niet toeliet om sommige gedeeltes van zijn code te gebruiken. (zijn Amsterdam Compiler Kit). En ze hebben beide OOP becritiseerd.

    Richard Stallman wrote in 1995, "Adding OOP to Emacs is not clearly an improvement; I used OOP when working on the Lisp Machine window systems, and I disagree with the usual view that it is a superior way to program."[33]

Linus Trovalds
 - inefficient abstracted programming models where two years down the road
   you notice that some abstraction wasn't very efficient, but now all
   your code depends on all the nice object models around it, and you
   cannot fix it without rewriting your app.

Het was dan dus voor mij duidelijk genoeg dat OOP niet echt de enige manier is om te programmeren. Ik ging verder opzoek. Want ik wou weten waar komt dan deze idee van OOP vandan. Ik googlede dan naar OOP en Bill Gates en Steve Jobs. Om eens hun mening hierover te ontdekken. En wat vond ik. Steve Jobs was vrij geinteresseerd in OOP. Zelfs de taal van OSX noemt Objective-C. Maar Jobs is geen programmeur. Hij heeft er niet aan deel genomen om deze technologie te programmeren of te gebruiken. Er moeten toch wel nog andere mensen zijn die daar mee te maken hebben. En uiteraard ik vond zo eentje. Nadat ik googlede naar OOP history en OOP invention.

Alan Kay. Een van de grootste OOP pioneers. Die ook in Apple niet het laatste persoon was. En ja, hij is een bekeende informaticus. Toen dat ik over hem las, en al die Philosofie waar dat hij in geinteresseerd is. Begon ik te voelen dat misschien is er meer in de computer wereld dan Linux. Misschien weet ik eigenlijk nog echt niks. Maar toen dat ik meer over hem las zag ik het volgende. Ten eerste zijn bijdrage tot de Open Source wereld is volgens wat er staat heel beperkt in tegenstelling tot Linus en Richard bijvoorbeeld. En dan staat er nog zoiets als het volgende beschrijving van hem:

Reinventing programming

Kay has lectured extensively on the idea that the computer revolution is very new, and all of the good ideas have not been universally implemented. Lectures at OOPSLA 1997 conference and his ACM Turing award talk, entitled "The Computer Revolution Hasn't Happened Yet" were informed by his experiences with Sketchpad, Simula, Smalltalk, and the bloated code of commercial software.

On August 31, 2006, Kay's proposal to the United States National Science Foundation (NSF) was granted, thus funding Viewpoints Research Institute for several years. The proposal title was: Steps Toward the Reinvention of Programming: A compact and Practical Model of Personal Computing as a Self-exploratorium.[10] A sense of what Kay is trying to do comes from this quote, from the abstract of a seminar on this given at Intel Research Labs, Berkeley: "The conglomeration of commercial and most open source software consumes in the neighborhood of several hundreds of millions of lines of code these days. We wonder: how small could be an understandable practical "Model T" design that covers this functionality? 1M lines of code? 200K LOC? 100K LOC? 20K LOC?"[11]

Na deze gelezen te hebben, en zo een tjdje erover nagedacht te hebben. Herinneerde ik een welbekende uitspraak. "Those who don't understand Unix are condemned to reinvent it, poorly." – Henry Spencer

En als wij eens verder naar de Unix Philosophy gaan lezen die juist over de code ifficiency praat:

https://en.wikipedia.org/wiki/Unix_philosophy

"Unix is simple. It just takes a genius to understand its simplicity." – Dennis Ritchie

en Dennis Ritchie is niet zo maar iemand. De OSX en iPhones werken op wat hij gemaakt heeft. OSX is op FreeBSD Unix gebaseerd. Dat is toch te merken dat die stabieler dan Windows werkt.

"Unix was not designed to stop its users from doing stupid things, as that would also stop them from doing clever things." – Doug Gwyn

En dat is wat OOP doet met mij. Ipv hacking some dirty code together ben ik aan het denken aan de OOP design en dat de leerkracht gaat tegen mij zeggen dat het fout geschreven is omdat het niet in OOP geschreven is. Terwijl dat het zelfs werkt. Wat voor een beginner in eerste instantie interessant is.

Ik heb nu ook nog verder over C++ aan het lezen geweest. En het blijkt precies dat het inderdaad zo gezegd de volgende versie van C is. Zo een soort van evolutie. Maar misschien alles wat ik wil zeggen is het volgende. Als je naar de C++ Philosophy leest:

https://en.wikipedia.org/wiki/C%2B%2B#Philosophy

Er zijn regels, en deze is een van de regels:

Programmers should be free to pick their own programming style, and that style should be fully supported by C++.

Het lijkt mij dat OOP code maken van niet OOP code is heel goede oefening voor refactoring.

https://en.wikipedia.org/wiki/Refactoring

Maar eerst moet je toch iets geschreven hebben. Niet?

This is fun: http://www.pouet.net/topic.php?which=6871&page=1

:D

p.s. Lezen over C++ heeft mij bijna overtuigd dat het zo hoort. Maar dan heb ik ontdekt dat Ken Thompson, die met Dennis Ritchie C en Unix geschreven hebben. Juist met Google een nieuwe niet OOP taal heeft gemaakt. Die Go noemt. En ze zeggen dat dat just het volgende versie van C is zonder de problemen van C++.
Waarom zou de maker van C en Unix nu in 201x jaar nieuwe programmeertaal maken als der 'geweldige' C++ nog steeds bestaat?

Ik heb 10 jaar geleden een jaar of twee C++ proberen te leren. En ik heb er niks van begrepen. Waarom? OOP.
A billion monkeys can't be wrong: http://gigamonkeys.wordpress.com/2009/10/16/coders-c-plus-plus/
Object Oriented Programming Oversold! : http://www.geocities.com/tablizer/oopbad.htm
Interviews: Dennis Ritchie:
http://www.gotw.ca/publications/c_family_interview.htm
Ken Thompson:
http://www.drdobbs.com/open-source/interview-with-ken-thompson/229502480

To complex topic om maar een form op te maken met een paar knoppen.

2010 google talk
https://www.youtube.com/watch?v=5kj5ApnhPAE
 exactly whati want to say :)


Yorum Gönder

0 Yorumlar