Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > functional or object-oriented?

Reply
Thread Tools

functional or object-oriented?

 
 
beza1e1
Guest
Posts: n/a
 
      09-19-2005
I see myself shifting more and more over to the functional kind of
coding. Could be related to the Haskell, we had to learn in CS. Now i
was wondering, how other people use Python?

With functional i mean my files mostly consist of functions and only
rarely i use "class". The library modules seem to be mostly written the
object-way on the other hand.

If you use both paradigms. What are your criterias to choose the right
method for a project?

 
Reply With Quote
 
 
 
 
Steve Bergman
Guest
Posts: n/a
 
      09-19-2005
beza1e1 wrote:

>I see myself shifting more and more over to the functional kind of
>coding. Could be related to the Haskell, we had to learn in CS. Now i
>was wondering, how other people use Python?
>
>With functional i mean my files mostly consist of functions and only
>rarely i use "class". The library modules seem to be mostly written the
>object-way on the other hand.
>
>If you use both paradigms. What are your criterias to choose the right
>method for a project?
>
>
>

Here is a quote by Alex Martelli from the "Python Cookbook":

"If the packaging is in terms of objects that typically comprise state
and behavior, you're using OOP. Some object-oriented languages force
you to use OOP for everything, so you end up with many object which lack
either state or behavior. Python, however, supports multiple
paradigms. While everything in Python is an object, you package things
as OOP objects only when you want to. Other languages try to force your
programming style into a predefined mold for your own good, while Python
empowers you to make and express your own design choices.

With OOP, once you have specified how an object is composed, you can
instantiate as many objects of that kind as you need. When you don't
want to create multiple objects, consider using other Python constructs
such as modules."


 
Reply With Quote
 
 
 
 
Diez B. Roggisch
Guest
Posts: n/a
 
      09-19-2005
> With functional i mean my files mostly consist of functions and only
> rarely i use "class". The library modules seem to be mostly written the
> object-way on the other hand.


Which is not what functional programming is about. The style you
describe is more often referred to as procedural programming.

http://en.wikipedia.org/wiki/Procedural_programming

See

http://en.wikipedia.org/wiki/Functional_programming

for what functional programming is about.

Diez
 
Reply With Quote
 
Bruno Desthuilliers
Guest
Posts: n/a
 
      09-19-2005
beza1e1 a écrit :
> I see myself shifting more and more over to the functional kind of
> coding. Could be related to the Haskell, we had to learn in CS. Now i
> was wondering, how other people use Python?
>
> With functional i mean my files mostly consist of functions


which is not enough to make it 'functional'.

> and only
> rarely i use "class". The library modules seem to be mostly written the
> object-way on the other hand.
>
> If you use both paradigms. What are your criterias to choose the right
> method for a project?
>


Well, I'm most from an OO background, but I think OO and FP have in
common to try to be as declarative as possible, FP by avoiding
side-effects and relying on function composition, OO by hiding
implementation and relying on polymorphic message dispatch. When it
comes to 'pure' OO languages like Python, there's no real differences
between classes, objects, functions, methods, attributes etc - they're
*all* objects. So functional programming in Python is still OO ! When
you realize that the def statement is nothing more than syntactic sugar
to instantiate a function object, you can ask yourself if using or not
using the class statement is really the question.

Now to answer your question, I don't have 'criterias to choose the right
method for a project'. I happily mix procedural, OO and FP wherever it
fits.

 
Reply With Quote
 
beza1e1
Guest
Posts: n/a
 
      09-20-2005
You are right, this is not the essence of functional programming.

Functional and procedural python code would look quite the same (at
least in pydoc). It is the implementation of my functions, wether they
are functional or procedural. If i use global variables, it is not
functional any more.

While python makes it use to work in a functional way, it is nearly
impossible to do it exclusive. This is not necessary either, of course


 
Reply With Quote
 
beza1e1
Guest
Posts: n/a
 
      09-20-2005
This nails it down, yes.

I probably was too deep into OOP thinking-mode to work pythonic. So i
am now rediscovering the python way.

Have you read Paul Grahams On Lisp (or was it one of his essays)? He is
strongly in favor of functional programming. Mainly because Lisp favors
it. He does say though, simulations and CAD programs are inherently OO.
But now i am writing a game modelling engine, i find objects are not
the best way anytime in these fields either.

 
Reply With Quote
 
bruno modulix
Guest
Posts: n/a
 
      09-20-2005
beza1e1 wrote:
> This nails it down, yes.
>
> I probably was too deep into OOP thinking-mode to work pythonic. So i
> am now rediscovering the python way.
>
> Have you read Paul Grahams On Lisp (or was it one of his essays)? He is
> strongly in favor of functional programming.


Yes, but this does not implies that FP is the main trend in CommonLisp.
I discussed that point some years ago on c.l.lisp, and it turned out
that Paul Grahams POV was not perceived by the communauty as
representative of the most common usage of CommonLisp.

> Mainly because Lisp favors
> it.


While being the father of FPLs, CommonLisp is not a 'pure' FPL, and
clearly a multiparadigm language. BTW, it's object model is probably one
of the most astonishing I've seen.

> He does say though, simulations and CAD programs are inherently OO.
> But now i am writing a game modelling engine, i find objects are not
> the best way anytime in these fields either.


Ok, but keep in mind you're using Python, not Lisp. While supporting
some FP features (first class functions, nested functions, closures,
list expressions, generators, and (a very restricted kind of) anonymous
functions...), Python is still a 'pure' OOPL (ie : everything's an
object). Not using the *class* statement when there's no use for it
doesn't mean not using *objects*. One of the pre-requisites for FP is
first-class functions, and Python provides this by defining functions as
instances of class function. So even the most FP Python programs are
still OO, at least under the hood !-)

My 2 cents
--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in '(E-Mail Removed)'.split('@')])"
 
Reply With Quote
 
Tom Anderson
Guest
Posts: n/a
 
      09-20-2005
On Mon, 19 Sep 2005, beza1e1 wrote:

> I see myself shifting more and more over to the functional kind of
> coding. Could be related to the Haskell, we had to learn in CS. Now i
> was wondering, how other people use Python?


I'm a lot like you. I grew up with java, and learned to write classical
object-oriented code. When i came over to python, i very quickly found
myself writing more procedural, and in fact functional, code.

I think this is a result of the kind of programs i'm writing. Objects are
good when you have entities that will live a long and unpredictable life -
chunks of text in a word processor, for example. If you're writing
programs with simpler narratives, though, as i often am ("read in this
data, parse it, transform it like so, shuffle it like this, then write it
out like this"), a functional approach allows a simpler, cleaner factoring
of the code.

> With functional i mean my files mostly consist of functions and only
> rarely i use "class". The library modules seem to be mostly written the
> object-way on the other hand.


The thing about OO code is that the pieces are self-contained, which makes
this a good way to write library code. That's not a good explanation, but
i haven't had any coffee this morning, so that's the best i can do right
now.

tom

--
Science runs with us, making us Gods.
 
Reply With Quote
 
beza1e1
Guest
Posts: n/a
 
      09-20-2005
I really should take a look at this CLOS, i think ... thanks for the
background information.

Do you think FP Python is appropriate or just syntactic sugar of a very
sophisticated kind? Now i switching back to OO a bit, but the
difference between data.value and date['value'] is not really in
Pythons dynamic world.

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
web page functional testing William Kossack Firefox 0 06-27-2005 07:44 PM
Functional vs, Timing ALuPin VHDL 2 04-15-2005 08:46 PM
Functional VHDL Simulation Problem with Altera dual clock fifo Thomas Fischer VHDL 2 04-11-2005 01:29 PM
PSL stmts embedded in VHDL: how to do functional coverage w/it? Eric DELAGE VHDL 1 04-05-2005 04:29 PM
Map n algorithms to m functional units Andreas VHDL 0 12-02-2003 02:34 PM



Advertisments