Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re: Right job for the tool.

by einhverfr (Monk)
on May 31, 2014 at 13:10 UTC ( #1088131=note: print w/ replies, xml ) Need Help??


in reply to Right job for the tool.

First, this is an excellent question. It can generally be generalized to "where would one use OO programming?" Obviously not every task.

Let's start by looking at what OO programming gives you. This is, basically, a way of abstracting behavior around state. This is useful where you have a midsized project and want to make sure that you can more easily de-couple components (but don't want to go as far as, say functional programming). For small projects, the overhead in design makes it an unattractive choice. For very complex projects with complex concurrency issues you probably want to go with functional programming as your primary paradigm (you can mix OO and functional programming though).

So let's look at basically three models of managing state: Imperative, Object-oriented, and Functional

Imperative is basically summed up as "You do something with state. Object-oriented can be thought of as "state is responsible for its own behavior" and functional programming is "avoid state if you possibly can."

In general highly complex, highly concurrent systems will benefit from functional programming, and extremely simple systems will benefit from imperative programming. It's in the middle where object oriented delivers its best benefits.


Comment on Re: Right job for the tool.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1088131]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (4)
As of 2014-09-23 04:35 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (210 votes), past polls