Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??
So over the last couple of days I've been making a right nusiance of myself, suggesting heretical ideas and sounding off about how awesome and sexy I am, and as a result I have lost nearly half the XP points I accumulated over the last few years, but there is rhyme and reason to it all. I have the best of intentions here! Let me explain

Let me take you on a journey back in time, lets say 20 years ago or there abouts, 1991 or so, the fastest processor on the market was an intel 486, and if you shopped around you might be able to get a server for £10,000 a month which came with one of these shiny bad boys. Infact if you were very lucky you might even get a maths co-processor for your money!

Perl was around back then, and being used to deploy websites in a similar manner to the way it is used now, only back then the tiny little 486 processor was just not powerful enough to run perl as we know it today. Things like regexes and evals had to be stictly avoided unless you wanted your server to take several seconds over serving up a single response.

Spool time forward to today, moores law has held strong, and now for about £2000 a month you can rent yourself what in current terms can only be called a BEAST of a server, with 32 processor cores, each of which are many orders of magnitude faster than the humble old 486.

Yes, fortunately for use, processor power is hugely abundant and cheap, far cheaper than programmer time infact. And this is a process which will continue into the future with the upcoming Quantum Computer systems, a version of which sporting 128 Qubits is already available on the market.

We stand at a time of transition, we know that the future will be quantum, but we are not quite there yet, so in the mean time we must adhere to the rules of classical computing. However, and it is a big however, our forebears with their 486's could not possibly imagine the amount of raw processing power available to use right now.

Things such as regexes and evals are no long so incredibly processing expensive that they must be avoided at all costs, infact these days they are par for the course. And therein lies a fundamental shift in computing science and in the nature of how we engineer systems for the web.

Most of the perl modules available, and most of the advice given by perl monks who live in the past, is geared towards the rules of the 486, be efficient, be frugal with memory usage, etc etc. But those rules just don't apply anymore, at least not to such a degree that they used to.

So now we have this preponderance of computing power, and along with it comes a new level of flexibility. With each level we step up in terms of code abstraction, we not only make the lives of people working with the code that much easier and the learning curve that much more shallow, but we also trade off some of our processing power to do so.

The battle between programmer efficiency and code efficiency is swinging towards systems which make programmers lives easier rather than maximising the potential of the limited hardware. We can always throw another £10,000 at the server budget, but just how much professional programming time does this buy us? A diminishing amount.

And so into this arena comes a late comer, yours truly, and without really understanding what I was doing I optimised a system for programmer efficiency instead of processor efficiency. Obviously having far too much processor power available simply went to my head, and instead of worrying about exactly how many nano-seconds it takes to provide a response to a request, instead I worried about how easy it was for me or others to write the code, how reusable is it, how much time can I save by changing the way we think about code.

And the result is the system I have built, this aXML thing, a system which is totally focussed on making life easy for the programmer, and to hell with how much work the processor must do, because who gives a damn about efficiency when you have 32 processor cores?

And therein comes the reason why my ideas have received a less than lukewarm response. Stuck in their ways, thinking about how important it is to be efficient with the limited clock cycles of a 486, the monks insist I must conform to the specs of yesterday, where I have already freed myself from that drugery and am willing to say so.

My solution is a solution of tommorow, sure it uses regexes and evals and it's difficult to stream parse, but that does not matter, because it is incredibly easy and quick to program in it, and programmer time will as moores law continues unabated, become more and more of a premium over processor time.

I did not envisage it at the start, I didn't sit down and think how can I be the second most renaiscancest man ever, I just sat down and thought how can I make my own life as a programmer easy. And that is what I did, I made things easy for myself, and I want to make things easy for you as well.

So I request, I implore you, let go of the past, and have a real look at what I have done and what I am saying to you, because you don't need to worry about clock cycles anymore, regexes and evals are not evil anymore, it doesn't matter, all that matters is how the tool empowers you to get results.

That is what I am bringing, that is my message to you, and you can reject it and me all you like but your being a luddite and it's your problem not mine and not the people who will come after me who do understand the reasons and ethos behind the system I have invented.

In reply to Moores Law, Perl and the future by simonodell

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others perusing the Monastery: (3)
As of 2024-04-25 12:45 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found