<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>
<channel>
	<title>Comments on: What is OOP (Object-oriented programming)?</title>
	<atom:link href="http://programmersnotes.info/2009/02/28/what-is-oop-object-oriented-programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://programmersnotes.info/2009/02/28/what-is-oop-object-oriented-programming/</link>
	<description>PHP. Yii. JavaScript. Programming. Software design. Patterns. UML. My experience.</description>
	<pubDate>Thu, 11 Mar 2010 03:44:29 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: McFry</title>
		<link>http://programmersnotes.info/2009/02/28/what-is-oop-object-oriented-programming/comment-page-1/#comment-2106</link>
		<dc:creator>McFry</dc:creator>
		<pubDate>Wed, 24 Feb 2010 11:45:39 +0000</pubDate>
		<guid isPermaLink="false">http://programmersnotes.info/?p=25#comment-2106</guid>
		<description>Thnx for this great article! Keep it up!</description>
		<content:encoded><![CDATA[<p>Thnx for this great article! Keep it up!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alistair Nel</title>
		<link>http://programmersnotes.info/2009/02/28/what-is-oop-object-oriented-programming/comment-page-1/#comment-2103</link>
		<dc:creator>Alistair Nel</dc:creator>
		<pubDate>Tue, 16 Feb 2010 23:37:02 +0000</pubDate>
		<guid isPermaLink="false">http://programmersnotes.info/?p=25#comment-2103</guid>
		<description>To be able to teach others is a gift. Thanks Konstantin. You're a legend ;)</description>
		<content:encoded><![CDATA[<p>To be able to teach others is a gift. Thanks Konstantin. You&#8217;re a legend <img src='http://programmersnotes.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: scrutinizr</title>
		<link>http://programmersnotes.info/2009/02/28/what-is-oop-object-oriented-programming/comment-page-1/#comment-2090</link>
		<dc:creator>scrutinizr</dc:creator>
		<pubDate>Fri, 25 Dec 2009 20:13:55 +0000</pubDate>
		<guid isPermaLink="false">http://programmersnotes.info/?p=25#comment-2090</guid>
		<description>Here you can try out an Oberon Script example:
http://www.modulaware.com/test/fibo-test-eth.htm

just click the link, view/source code and you see the Oberon test programm source (Fibonacci number calculation). click the "Test"-button to see the result. view http://www.modulaware.com/test/oberon.js to see complete source code of Oberon-script compiler and run-time system.</description>
		<content:encoded><![CDATA[<p>Here you can try out an Oberon Script example:<br />
<a href="http://www.modulaware.com/test/fibo-test-eth.htm" rel="nofollow">http://www.modulaware.com/test/fibo-test-eth.htm</a></p>
<p>just click the link, view/source code and you see the Oberon test programm source (Fibonacci number calculation). click the &#8220;Test&#8221;-button to see the result. view <a href="http://www.modulaware.com/test/oberon.js" rel="nofollow">http://www.modulaware.com/test/oberon.js</a> to see complete source code of Oberon-script compiler and run-time system.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: scrutinizr</title>
		<link>http://programmersnotes.info/2009/02/28/what-is-oop-object-oriented-programming/comment-page-1/#comment-2089</link>
		<dc:creator>scrutinizr</dc:creator>
		<pubDate>Fri, 25 Dec 2009 20:04:05 +0000</pubDate>
		<guid isPermaLink="false">http://programmersnotes.info/?p=25#comment-2089</guid>
		<description>p.s. you can contact me via the specified email although I think we agree in principle.

p.s.s.: There's now also a free open source Oberon-to-javascript compiler for web programming. It's written in JS and has only 1000 source lines. It is called "Oberon Script" but it is the (full) Oberon language and it compiles on the fly into JS when the browser opens the page. Works with any browser. See http://research.microsoft.com/pubs/70288/tr-2006-50.pdf Ralph Sommerer: Oberon Script: A Lightweight Compiler and Runtime System for the Web
http://research.microsoft.com/research/pubs/view.aspx?type=technical+report&amp;id=1094
I don't know the project status. Source code is here: http://www.ralphsommerer.com/obn.htm</description>
		<content:encoded><![CDATA[<p>p.s. you can contact me via the specified email although I think we agree in principle.</p>
<p>p.s.s.: There&#8217;s now also a free open source Oberon-to-javascript compiler for web programming. It&#8217;s written in JS and has only 1000 source lines. It is called &#8220;Oberon Script&#8221; but it is the (full) Oberon language and it compiles on the fly into JS when the browser opens the page. Works with any browser. See <a href="http://research.microsoft.com/pubs/70288/tr-2006-50.pdf" rel="nofollow">http://research.microsoft.com/pubs/70288/tr-2006-50.pdf</a> Ralph Sommerer: Oberon Script: A Lightweight Compiler and Runtime System for the Web<br />
<a href="http://research.microsoft.com/research/pubs/view.aspx?type=technical+report&amp;id=1094" rel="nofollow">http://research.microsoft.com/research/pubs/view.aspx?type=technical+report&amp;id=1094</a><br />
I don&#8217;t know the project status. Source code is here: <a href="http://www.ralphsommerer.com/obn.htm" rel="nofollow">http://www.ralphsommerer.com/obn.htm</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: scrutinizr</title>
		<link>http://programmersnotes.info/2009/02/28/what-is-oop-object-oriented-programming/comment-page-1/#comment-2088</link>
		<dc:creator>scrutinizr</dc:creator>
		<pubDate>Fri, 25 Dec 2009 20:03:24 +0000</pubDate>
		<guid isPermaLink="false">http://programmersnotes.info/?p=25#comment-2088</guid>
		<description>hello,

in summary, what I wanted to show was:

1. for the example of this thread, OOP is not necessary.
as shown, it can be done simpler by using procedure variables.

2. OOP, if needed for programm development, is not bad per se, but the OOP features provided any particular programming language must be minimal and sufficient to provide for any OO model.

This is why I linked to Oberon wich stands out as the simplest (and yet powerful) OOP language. (A complete operating system, compiler, hundreds of non-trivial applications have been written in Oberon - free and open source! - yet it didn't gain acceptance by industry. There's also an Oberon compiler for ARM (embedded real-time programming written by legendary professor Niklaus Wirth
and father of Pascal and Modula-2 himself. just follow the link I gave above.)

Oberon provides for the main OOP concept namely extensible programming; its implemenations feature pointer safety and garbage collector.
Look at the language report. it has only 20 pages - including examples!

The retired master (still privately active in hardware (verilog - FGPA*) and software development --&gt; Oberon-07 for ARM processor says, industry - using ever more complex programming languages and libraries -
made no progress in software development since the early 1970s!

You might be interested in listening to Niklaus Wirth's opening talk at GTAC 2009 (Google Test Automation Conference) about programming language development
history and in relation to software testing:
http://www.youtube.com/watch?v=8W5Jd_wzB90

happy Christmas!

*) want to learn programming FPGAs?
see http://www.fpga4fun.com/PWM_DAC.html
they have nice development (FPGA/ARM) boards: http://www.knjn.com/FPGA-FX2.html</description>
		<content:encoded><![CDATA[<p>hello,</p>
<p>in summary, what I wanted to show was:</p>
<p>1. for the example of this thread, OOP is not necessary.<br />
as shown, it can be done simpler by using procedure variables.</p>
<p>2. OOP, if needed for programm development, is not bad per se, but the OOP features provided any particular programming language must be minimal and sufficient to provide for any OO model.</p>
<p>This is why I linked to Oberon wich stands out as the simplest (and yet powerful) OOP language. (A complete operating system, compiler, hundreds of non-trivial applications have been written in Oberon - free and open source! - yet it didn&#8217;t gain acceptance by industry. There&#8217;s also an Oberon compiler for ARM (embedded real-time programming written by legendary professor Niklaus Wirth<br />
and father of Pascal and Modula-2 himself. just follow the link I gave above.)</p>
<p>Oberon provides for the main OOP concept namely extensible programming; its implemenations feature pointer safety and garbage collector.<br />
Look at the language report. it has only 20 pages - including examples!</p>
<p>The retired master (still privately active in hardware (verilog - FGPA*) and software development &#8211;&gt; Oberon-07 for ARM processor says, industry - using ever more complex programming languages and libraries -<br />
made no progress in software development since the early 1970s!</p>
<p>You might be interested in listening to Niklaus Wirth&#8217;s opening talk at GTAC 2009 (Google Test Automation Conference) about programming language development<br />
history and in relation to software testing:<br />
<a href="http://www.youtube.com/watch?v=8W5Jd_wzB90" rel="nofollow">http://www.youtube.com/watch?v=8W5Jd_wzB90</a></p>
<p>happy Christmas!</p>
<p>*) want to learn programming FPGAs?<br />
see <a href="http://www.fpga4fun.com/PWM_DAC.html" rel="nofollow">http://www.fpga4fun.com/PWM_DAC.html</a><br />
they have nice development (FPGA/ARM) boards: <a href="http://www.knjn.com/FPGA-FX2.html" rel="nofollow">http://www.knjn.com/FPGA-FX2.html</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Konstantin Mirin</title>
		<link>http://programmersnotes.info/2009/02/28/what-is-oop-object-oriented-programming/comment-page-1/#comment-2087</link>
		<dc:creator>Konstantin Mirin</dc:creator>
		<pubDate>Thu, 24 Dec 2009 20:06:47 +0000</pubDate>
		<guid isPermaLink="false">http://programmersnotes.info/?p=25#comment-2087</guid>
		<description>@scrutinizr
1) I realize that OOP is not the only concept in the development world. I read the article you linked to (Has OOP Failed?). It's an interesting point of view, but it is too emotional. Lots of words, very few examples. Sometimes comparison between OOP and procedural style are inadequate. For example, the printing example (page 6). The author missed the following things:
 - 80-line OOP code allows much more flexibility.
 - 80-line OOP code may be wrapped into class and then called in the form of myPrint-&gt;setFontSize(11); myPrint-&gt;print(text); Right the same may be done with the driver calls in the procedural style.
Comparison the code for the colour changing and font changing (page 7) reveals the poor design of the VB.NET API, this sort of inconsistency is not caused by OOP itself.
The author points to the lack of works comparing OOP and procedural styles and their efficiency. This is absolutely true just because such comparison is almost impossible. You can't compare "old-style basic" to the VB.NET because the latter provides much more features, allows more control etc.
The excellent experiment is to develop some real-world application using the pure OO and pure procedural approach and compare results - performance, maintainability, code readability etc. By the way, PHP allows to do this since not "everything is an object" here, unlike Java, Python etc.
2) I can't but agree that OOP isn't the best choice for algorithm implementation. Sometimes it is, but OOP is more about classification, structure handling than logic implementation.
3) I entirely disagree with the author that future paradigm should be procedural. I think, that combination of these things would do much better. You can't say OOP does bad with UI, right? So why code it in procedural style if OO does the same easier? Nice combination makes it all.

Finally, the blog post was aimed to show what is OOP, not "why it is better than functions". Yes, I had some words about that, but it is not the main line. These comments serve mainly for the post discussion, so discussing "OOP vs procedures" is basically flooding here. I'd like to continue this discussion by email or any IM.

Anyway, thank you for the comments! Though we have opposite thoughts, my post led to this interesting discussion and I like it :) Thank you for reading my blog!</description>
		<content:encoded><![CDATA[<p>@scrutinizr<br />
1) I realize that OOP is not the only concept in the development world. I read the article you linked to (Has OOP Failed?). It&#8217;s an interesting point of view, but it is too emotional. Lots of words, very few examples. Sometimes comparison between OOP and procedural style are inadequate. For example, the printing example (page 6). The author missed the following things:<br />
 - 80-line OOP code allows much more flexibility.<br />
 - 80-line OOP code may be wrapped into class and then called in the form of myPrint->setFontSize(11); myPrint->print(text); Right the same may be done with the driver calls in the procedural style.<br />
Comparison the code for the colour changing and font changing (page 7) reveals the poor design of the VB.NET API, this sort of inconsistency is not caused by OOP itself.<br />
The author points to the lack of works comparing OOP and procedural styles and their efficiency. This is absolutely true just because such comparison is almost impossible. You can&#8217;t compare &#8220;old-style basic&#8221; to the VB.NET because the latter provides much more features, allows more control etc.<br />
The excellent experiment is to develop some real-world application using the pure OO and pure procedural approach and compare results - performance, maintainability, code readability etc. By the way, PHP allows to do this since not &#8220;everything is an object&#8221; here, unlike Java, Python etc.<br />
2) I can&#8217;t but agree that OOP isn&#8217;t the best choice for algorithm implementation. Sometimes it is, but OOP is more about classification, structure handling than logic implementation.<br />
3) I entirely disagree with the author that future paradigm should be procedural. I think, that combination of these things would do much better. You can&#8217;t say OOP does bad with UI, right? So why code it in procedural style if OO does the same easier? Nice combination makes it all.</p>
<p>Finally, the blog post was aimed to show what is OOP, not &#8220;why it is better than functions&#8221;. Yes, I had some words about that, but it is not the main line. These comments serve mainly for the post discussion, so discussing &#8220;OOP vs procedures&#8221; is basically flooding here. I&#8217;d like to continue this discussion by email or any IM.</p>
<p>Anyway, thank you for the comments! Though we have opposite thoughts, my post led to this interesting discussion and I like it <img src='http://programmersnotes.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> Thank you for reading my blog!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: scrutinizr</title>
		<link>http://programmersnotes.info/2009/02/28/what-is-oop-object-oriented-programming/comment-page-1/#comment-2086</link>
		<dc:creator>scrutinizr</dc:creator>
		<pubDate>Wed, 23 Dec 2009 23:47:13 +0000</pubDate>
		<guid isPermaLink="false">http://programmersnotes.info/?p=25#comment-2086</guid>
		<description>@Konstantin

&gt; Encapsulation - with local variables and functions (but that is a really ugly solution).

conceptually, for encapsulation you just need a module concept of which simplest and best solution provides  Oberon. see http://www.inf.ethz.ch/personal/wirth/Articles/Oberon/Oberon07.Report.pdf
as linked from http://www.inf.ethz.ch/personal/wirth/Articles/Oberon.html

&gt; And there is no way to emulate inheritance.

it is not necessary to provide inheritance as programming language concept. see --- you guessed it.

&gt; By the way, it is a great thing about OOP :)

so many things are so great that this word has empty meaning except that you shoot yourself in the foot. ;)

&gt; The aim of the article was not to show the best way of printing tables, but rather to show how it can be done with OO principles and illustrate the process.

we need suitable examples to show superiority of any concept. PHP (pigest hack plus); the acronym says it all. :)

See why OOP has failed:

http://www.4js.com/en/fichiers/b_genero/pourquoi/Has_OOP_Failed_Sept_2005.pdf

&gt; I think this was done quite well :)

well heavyonthewoodway :)</description>
		<content:encoded><![CDATA[<p>@Konstantin</p>
<p>&gt; Encapsulation - with local variables and functions (but that is a really ugly solution).</p>
<p>conceptually, for encapsulation you just need a module concept of which simplest and best solution provides  Oberon. see <a href="http://www.inf.ethz.ch/personal/wirth/Articles/Oberon/Oberon07.Report.pdf" rel="nofollow">http://www.inf.ethz.ch/personal/wirth/Articles/Oberon/Oberon07.Report.pdf</a><br />
as linked from <a href="http://www.inf.ethz.ch/personal/wirth/Articles/Oberon.html" rel="nofollow">http://www.inf.ethz.ch/personal/wirth/Articles/Oberon.html</a></p>
<p>&gt; And there is no way to emulate inheritance.</p>
<p>it is not necessary to provide inheritance as programming language concept. see &#8212; you guessed it.</p>
<p>&gt; By the way, it is a great thing about OOP <img src='http://programmersnotes.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>so many things are so great that this word has empty meaning except that you shoot yourself in the foot. <img src='http://programmersnotes.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>&gt; The aim of the article was not to show the best way of printing tables, but rather to show how it can be done with OO principles and illustrate the process.</p>
<p>we need suitable examples to show superiority of any concept. PHP (pigest hack plus); the acronym says it all. <img src='http://programmersnotes.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>See why OOP has failed:</p>
<p><a href="http://www.4js.com/en/fichiers/b_genero/pourquoi/Has_OOP_Failed_Sept_2005.pdf" rel="nofollow">http://www.4js.com/en/fichiers/b_genero/pourquoi/Has_OOP_Failed_Sept_2005.pdf</a></p>
<p>&gt; I think this was done quite well <img src='http://programmersnotes.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>well heavyonthewoodway <img src='http://programmersnotes.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tom Sedlak</title>
		<link>http://programmersnotes.info/2009/02/28/what-is-oop-object-oriented-programming/comment-page-1/#comment-2084</link>
		<dc:creator>Tom Sedlak</dc:creator>
		<pubDate>Mon, 21 Dec 2009 10:48:18 +0000</pubDate>
		<guid isPermaLink="false">http://programmersnotes.info/?p=25#comment-2084</guid>
		<description>Very good explanation with perfect examples. The best way how to understand abstractions and theory. Thank you.</description>
		<content:encoded><![CDATA[<p>Very good explanation with perfect examples. The best way how to understand abstractions and theory. Thank you.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Konstantin Mirin</title>
		<link>http://programmersnotes.info/2009/02/28/what-is-oop-object-oriented-programming/comment-page-1/#comment-2082</link>
		<dc:creator>Konstantin Mirin</dc:creator>
		<pubDate>Fri, 18 Dec 2009 19:13:13 +0000</pubDate>
		<guid isPermaLink="false">http://programmersnotes.info/?p=25#comment-2082</guid>
		<description>@Pascal
Thank you for the comment. I've corrected everything :)</description>
		<content:encoded><![CDATA[<p>@Pascal<br />
Thank you for the comment. I&#8217;ve corrected everything <img src='http://programmersnotes.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Konstantin Mirin</title>
		<link>http://programmersnotes.info/2009/02/28/what-is-oop-object-oriented-programming/comment-page-1/#comment-2081</link>
		<dc:creator>Konstantin Mirin</dc:creator>
		<pubDate>Fri, 18 Dec 2009 19:12:35 +0000</pubDate>
		<guid isPermaLink="false">http://programmersnotes.info/?p=25#comment-2081</guid>
		<description>@scrutinizr
Yes, it is possible to handle this with dispatching function for this particular task. But how about extending some functionality? Yes, I know that polymorphism may be emulated with dispatching function. Encapsulation - with local variables and functions (but that is a really ugly solution). And there is no way to emulate inheritance. By the way, it is a great thing about OOP :)
The aim of the article was not to show the best way of printing tables, but rather to show how it can be done with OO principles and illustrate the process. I think this was done quite well :)</description>
		<content:encoded><![CDATA[<p>@scrutinizr<br />
Yes, it is possible to handle this with dispatching function for this particular task. But how about extending some functionality? Yes, I know that polymorphism may be emulated with dispatching function. Encapsulation - with local variables and functions (but that is a really ugly solution). And there is no way to emulate inheritance. By the way, it is a great thing about OOP <img src='http://programmersnotes.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> The aim of the article was not to show the best way of printing tables, but rather to show how it can be done with OO principles and illustrate the process. I think this was done quite well <img src='http://programmersnotes.info/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
</channel>
</rss>
