20 years ago

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

20 years ago

Bulat Ziganshin-2
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:[hidden email]

_______________________________________________
Haskell mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/haskell
Reply | Threaded
Open this post in threaded view
|

Re: 20 years ago

Benjamin L. Russell
On Mon, 13 Jul 2009 16:35:06 +0400, Bulat Ziganshin
<[hidden email]> 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^

_______________________________________________
Haskell mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/haskell
Reply | Threaded
Open this post in threaded view
|

Re: Re: 20 years ago

Bulat Ziganshin-2
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:[hidden email]

_______________________________________________
Haskell mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/haskell
Reply | Threaded
Open this post in threaded view
|

Re: 20 years ago

Benjamin L. Russell
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^

_______________________________________________
Haskell mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/haskell
Reply | Threaded
Open this post in threaded view
|

Re: Re: 20 years ago

Bulat Ziganshin-2
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:[hidden email]

_______________________________________________
Haskell mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/haskell
Reply | Threaded
Open this post in threaded view
|

Re: 20 years ago

Benjamin L. Russell
On Tue, 14 Jul 2009 15:00:03 +0400, Bulat Ziganshin
<[hidden email]> 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^

_______________________________________________
Haskell mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/haskell