Hello haskell, Industrial programmers often think that functional programming is "unnatural" and cannot be mastered by most of them. But 20 years ago they thought the same about OOP The first widespead OOP system was a Turbo Pascal 5.5, released 1989. i've downloaded its manual, quickly scanned it and found what i've expected: "The challenge of object-oriented programming (OOP) is that it sometimes requires you to set aside habits and ways of thinking about programming that have been considered standard for many years. Once that is done, however, OOP is simple, straight-forward, and superior for solving many of the prob- lems that plague traditional software programs." http://edn.embarcadero.com/article/images/20803/TP_55_OOP_Guide.pdf -- Best regards, Bulat mailto:Bulat.Ziganshin@gmail.com
On Mon, 13 Jul 2009 16:35:06 +0400, Bulat Ziganshin <bulat.ziganshin@gmail.com> wrote:
The first widespead OOP system was a Turbo Pascal 5.5, released 1989.
Just for the record, Turbo Pascal was preceded by a *pure* object-oriented language, Smalltalk [1], as described below:
The Smalltalk language, which was developed at Xerox PARC (by Alan Kay and others) in the 1970s, introduced the term object-oriented programming to represent the pervasive use of objects and messages as the basis for computation.... Smalltalk and with it OOP were introduced to a wider audience by the August 1981 issue of Byte magazine.
The difference between a pure object-oriented programming language and an impure one is that in the former, there is no difference between values which are objects and values which are primitive types, as explained below [2]:
Smalltalk is a "pure" object-oriented programming language, meaning that, unlike Java and C++, there is no difference between values which are objects and values which are primitive types. In Smalltalk, primitive values such as integers, booleans and characters are also objects, in the sense that they are instances of corresponding classes, and operations on them are invoked by sending messages. A programmer can change the classes that implement primitive values, so that new behavior can be defined for their instances--for example, to implement new control structures--or even so that their existing behavior will be changed. This fact is summarised in the commonly heard phrase "In Smalltalk everything is an object" (which would more accurately be expressed as "all values are objects", as variables aren't).
Most currently widespread programming languages that are termed "object-oriented" aren't really object-oriented, but are really procedural with object-oriented extensions. For example, this is true of such languages as C++ and Java. Incidentally, there is an interesting paper [3] by Matthias Felleisen presenting the thesis, as described in the synopsis [4], that "good object-oriented programming heavily ``borrows'' from functional programming and that the future of object-oriented programming is to study functional programming and language design even more." -- Benjamin L. Russell [1] "Object-oriented programming - Wikipedia, the free encyclopedia." _Wikipedia, the free encyclopedia._ 13 July 2009. 14 July 2009. <http://en.wikipedia.org/wiki/Object-oriented_programming>. [2] "Smalltalk - Wikipedia, the free encyclopedia." _Wikipedia, the free encyclopedia._ 3 July 2009. 14 July 2009. <http://en.wikipedia.org/wiki/Smalltalk>. [3] Felleisen, Matthias. "Functional Objects, Functional Classes." Invited talk at 18th European Conference on Object-Oriented Programming, Oslo, Norway, 14-18 June 2004. 16 June 2004. <http://www.ccs.neu.edu/home/matthias/Presentations/ecoop2004.pdf>. [4] Felleisen, Matthias. "Functional Objects, Functional Classes." College of Computer and Information Science, Northeastern University. 4 Aug. 2004. 14 July 2009. <http://www.ccs.neu.edu/home/matthias/Presentations/ecoop2004.html>. -- Benjamin L. Russell / DekuDekuplex at Yahoo dot com http://dekudekuplex.wordpress.com/ Translator/Interpreter / Mobile: +011 81 80-3603-6725 "Furuike ya, kawazu tobikomu mizu no oto." -- Matsuo Basho^
Hello Benjamin, Tuesday, July 14, 2009, 10:14:44 AM, you wrote:
The first widespead OOP system was a Turbo Pascal 5.5, released 1989.
Just for the record, Turbo Pascal was preceded by a *pure*
TP was a first OOP system sold in hundreds of thousands of copies. it was "OOP for the masses" and its manual reflects what masses thought about OOP those times - just the same that they think about FP now. you can replace OOP with FP in the manual text i cited and read it as modern text :) -- Best regards, Bulat mailto:Bulat.Ziganshin@gmail.com
Hello Bulat, On Tue, 14 Jul 2009 11:52:22 +0400, you wrote:
you can replace OOP with FP in the manual text i cited and read it as modern text :)
Mostly, perhaps. But how about the following portions (see page 16) [1]? ;)
Object-oriented languages were once called "actor languages" with this metaphor in mind.
One often amusing outgrowth of this is that OOP fanatics anthropomorphize their objects. Data structures are no longer passive buckets for you to toss values in. In the new view of things, an object is looked upon as an actor on a stage, with a set of lines (methods) memorized. When you (the director) give the word, the actor recites from the script.
Let's try....
Functional languages were once called "actor languages" with this metaphor in mind.
Hmm ... this doesn't quite seem to fit....
One often amusing outgrowth of this is that FP fanatics anthropomorphize their functions. Data structures are no longer passive buckets for you to toss values in. In the new view of things, a function is looked upon as an actor on a stage, with a set of lines (<replace "methods" with something appropriate here>) memorized. When you (the director) give the word, the actor recites from the script.
Forgive me, but I can't quite think of anything corresponding to "methods" here. Can you get these portions to fit without mixing metaphors? ;-) -- Benjamin L. Russell [1] Borland International, Inc. _Turbo Pascal 5.5 Object-Oriented Programming Guide._ Scotts Valley, CA: Borland International, Inc., 1989. <http://edn.embarcadero.com/article/images/20803/TP_55_OOP_Guide.pdf>. -- Benjamin L. Russell / DekuDekuplex at Yahoo dot com http://dekudekuplex.wordpress.com/ Translator/Interpreter / Mobile: +011 81 80-3603-6725 "Furuike ya, kawazu tobikomu mizu no oto." -- Matsuo Basho^
Hello Benjamin, Tuesday, July 14, 2009, 2:23:11 PM, you wrote:
you can replace OOP with FP in the manual text i cited and read it as modern text :)
Mostly, perhaps. But how about the following portions (see page 16)
i meant only the ideology portion i cited, not that you can replace s/OOP/FP/ in turbo pascal book and sell it as Haskell one :) -- Best regards, Bulat mailto:Bulat.Ziganshin@gmail.com
On Tue, 14 Jul 2009 15:00:03 +0400, Bulat Ziganshin <bulat.ziganshin@gmail.com> wrote:
Hello Benjamin,
Tuesday, July 14, 2009, 2:23:11 PM, you wrote:
you can replace OOP with FP in the manual text i cited and read it as modern text :)
Mostly, perhaps. But how about the following portions (see page 16)
i meant only the ideology portion i cited, not that you can replace s/OOP/FP/ in turbo pascal book and sell it as Haskell one :)
At the risk of getting off-topic, incidentally, do you know how to install the programming language for the manual text that you had cited on Windows XP Professional, Service Pack 3, in order to try out the examples in the text? Out of curiosity, I tried downloading [1] and installing it, but every time I ran INSTALL.EXE, the program wouldn't seem to proceed past looking for a floppy disk in my A: drive. -- Benjamin L. Russell [1] Intersimone, David. "Antique Software: Turbo Pascal v5.5." _Database Tools and Developer Software | Embarcadero Technologies_. 2009. Embarcadero Technologies, Inc. 14 July 2009. <http://edn.embarcadero.com/article/20803>. -- Benjamin L. Russell / DekuDekuplex at Yahoo dot com http://dekudekuplex.wordpress.com/ Translator/Interpreter / Mobile: +011 81 80-3603-6725 "Furuike ya, kawazu tobikomu mizu no oto." -- Matsuo Basho^
participants (2)
-
Benjamin L.Russell -
Bulat Ziganshin