Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?

Re: Right job for the tool.

by einhverfr (Friar)
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.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1088131]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (5)
As of 2018-06-24 13:30 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (126 votes). Check out past polls.