Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re: Perl 5 Optimizing Compiler, Part 15: RPerl v1.2 Kickstarter Now Live

by BrowserUk (Patriarch)
on Sep 26, 2015 at 23:41 UTC ( [id://1143117]=note: print w/replies, xml ) Need Help??


in reply to Perl 5 Optimizing Compiler, Part 15: RPerl v1.2 Kickstarter Now Live

Hey Will, me again. Same problem.

Too much hype and not enough fact.

You want to atract interest and maybe investment? Stop trying to sell; and simply demonstrate.

Pick a problem. Write a piece of (non contrived; non-simplistic) Perl code that solves that (real world) problem; and the Benchmark it (the exact same script):

  1. Under bog standard perl (say 5.20);
  2. And again under RPerl running under (over; in concert with) the same version of Perl.

Publish the script. Publish the command sessions to run both versions. And publish a straight forward, line-by-line, textual, command line session to down load and install all the requirements of RPerl.

Forget the hype. Forget the videos. Forget fancy meaningless graphics and js-heavy websites.

One, simple, plain html(4) page of text that gives us:

  1. Where to obtain and how to install RPerl over a recent version of Perl.
  2. The script being tested.
  3. The results (actual timings) of the two runs.
  4. The command lines required to run both tests to reproduce your results for ourselves.
  5. A simple bullet point list of what constructs are supported (or those not supported if shorter). Now, in the current available version.
  6. A clear list of the goals of the funding you seek. (Bullet points that show what that is currently not supported that can be with more funding.)

Do all of that; and you might encourage people to look; to try; to access; and maybe, fund.


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority". I knew I was on the right track :)
In the absence of evidence, opinion is indistinguishable from prejudice.
I'm with torvalds on this Agile (and TDD) debunked I told'em LLVM was the way to go. But did they listen!
  • Comment on Re: Perl 5 Optimizing Compiler, Part 15: RPerl v1.2 Kickstarter Now Live

Replies are listed 'Best First'.
Re^2: Perl 5 Optimizing Compiler, Part 15: RPerl v1.2 Kickstarter Now Live
by Will_the_Chill (Pilgrim) on Sep 27, 2015 at 10:36 UTC
    Hi BrowserUk,

    Thank you for your continued interest in RPerl!

    To answer your concerns:

    Pick a problem

    DONE: Alioth "n-body" Solar System Gravity Application

    Write a piece of (non contrived; non-simplistic) Perl code that solves that (real world) problem

    DONE: Both Monolithic Version and Non-Monolithic Version

    Benchmark it (the exact same script) under bog standard Perl and again under RPerl running under the same version of Perl

    DONE: n-body Benchmarks

    Publish the script

    DONE: n-body Script

    Publish the command sessions to run both versions

    DONE: n-body Command Sequence

    Publish a straight forward, line-by-line, textual, command line session to down load and install all the requirements of RPerl

    DONE: RPerl INSTALL Notes (Hint: Use Ubuntu & type `cpan RPerl`)

    Forget the hype; Forget the videos

    NO: I am excited about RPerl and so are many other people. Kickstarter virtually requires videos, and I have no intention of stopping that just because you don't like videos. If you have actual feedback of how to make the videos better, I'm more than open to constructive criticism!

    Forget fancy meaningless graphics and js-heavy websites

    NO: Graphics are a proven aid to memory, even if you do not happen to personally be a graphics-oriented learner. You think that RPerl.org is Javascript-heavy? It is one of the default templates from Github Pages. I did not create whatever Javascript to which you may be referring, it was Github.

    One, simple, plain html(4) page of text that gives us...

    YES: I will create an RPerl Quick Start Guide, but not tonight, it is 5:30am and I need to sleep soon.

    A simple bullet point list of what constructs are supported (or those not supported if shorter). Now, in the current available version.

    DONE: Low-Magic Perl Commandments

    A clear list of the goals of the funding you seek. (Bullet points that show what that is currently not supported that can be with more funding.)

    DONE: Kickstarter "v1.2 Features" and "Stretch Goals"; TPF Proposal 1; TPF Proposal 2; TPF Proposal 3; and TPF Proposal 4.

    Do all of that; and you might encourage people to look; to try; to access; and maybe, fund.

    The only thing not currently done is to copy all the stuff from this post into an HTML file to make the RPerl Quick Start Guide.

    Meanwhile, please go ahead and read through this post carefully, then let me know if I have missed anything which should go into the Quick Start Guide. I am counting on your contribution to Kickstarter before the campaign ends in 4 days.

    Thanks!

    Perling,
    ~ Will the Chill

      For me, personally, the "Low-Magic Perl Commandements" do not really read like a technical list of things that are supported or unsupported. I think it would fare better with a preamble of "These are the features that you will need to write your code to such that RPerl can support it". But reinterpreting them as a technical list of things that are supported or unsupported, there are some commandements that will hinder RPerl to become ever usable for me:

      17. THOU SHALT NOT:Use Dynamic-Type Data, Auto-Vivification, Or Tied Variables

      This means that DBI and DBD::* are right out of the window without major retooling of DBI and all related code not to rely on tie'd hashes.

      19. THOU SHALT NOT: Use Private Dynamic-Scope (“local”), Private Persistent Lexical-Scope (“state”), Global, Or Package Variables (“our”)

      Of course, global variables have their place and are highly useful, for example as global defaults. Whenever there is a lexical variable in global scope, that lexical variable should be a global variable in case somebody really wants to override it. Maybe some arguments as to why avoiding local and global variables would be good. For example, such variables make reasoning about value escape much, much harder and preclude some optimizations. But taken as an absolute, they are not good recommendations.

      21. THOU SHALT NOT: Use Typeglobs, Code References, Weak References, Or Magic Lvalues (Builtins, Non-Variables, Non-Slices, etc)

      I'm not sure what the technical gain here is. But without code references every dispatch table flies out of the window. Without weak references you can't really implement trees or doubly-linked lists or other data structures in a way that enables the reference-counted memory management to clean up such structures automatically.

      23. THOU SHALT NOT: Use Aliased, Non-Descriptive, Special ($1, $a, %ENV, %SIG, etc), Or Punctuation Variables ($_, @_, %!, $@, $$, etc)

      What is the technical reason for RPerl to not allow access to those variables?

      35. THOU SHALT NOT: Use Taint Mode

      This is a WTF as written. Taint mode relies heavily on magic, so I understand the technical reason for this but it needs some more elaboration. The corresponding "THOU SHALT" of "34. Use Secure Platforms & Trusted Data" moves this recommendation into rainbow unicorn country. If we're able to make wishes come true, why doesn't rule 34 say "THOU SHALT WRITE FAST,SHORT,CORRECT AND EASILY UNDERSTOOD PROGRAMS" and replace all preceding and following rules instead?

      I find the reliance on PBP and Perl::Critic makes it an instant turn-off because much of PBP isn't that great a practice without further review and adaption to the situation at hand. This is recommended on the first pages of PBP, but I found people referring to PBP always took PBP as literal gospel instead of reviewing the recommendations before applying them.

        > But reinterpreting them as a technical list of things that are supported or unsupported, there are some commandements that will hinder RPerl to become ever usable for me:

        Well the question seems to be, if a compatibility mode would be offered, to run "impure" code at "normal" speed. Otherwise I have problems to see the manpower coming to port old CPAN modules.

        But if use types really means that variables must be typed, together with all other restrictions, this would just be a C (or C++) with Perlish syntax (and consequently a different language)

        Which isn't necessarily useless. I could still imagine this to be useful as an inline language ( Inline::RPerl ) to avoid XS for inner loops where performance matters.

        (which would also solve the compatibility issue)

        Rather not as a replacement for Perl in total...

        > For me, personally, the "Low-Magic Perl Commandements" do not really read like a technical list of things that are supported or unsupported.

        This religious approach is really disturbing ...

        Cheers Rolf
        (addicted to the Perl Programming Language and ☆☆☆☆ :)
        Je suis Charlie!

        Am I the only one here who read the list of DO NOTs Corion posted and thought "the only script I've ever written that doesn't rely on one (or more likely some or even most) of those was my first one, where all it did was print "hello, world!";"?

        I don't have time to read through all the docs, but if any of those things remove the benefit of RPerl, then it'll never be useful to me.

        Is there something I don't know based on not having read the full documentation?

      DONE: Both Monolithic Version and Non-Monolithic Version

      Behind one of those links I see two package definitions. Behind the other, one.

      Neither has the calling code required to use those packages; so I've got to go looking for the motherscript.

      Both have a dependency on RPerl; so, I can't see how to run the test without RPerl.

      So: NOT done. So; not interested in following the rest of the links.


      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority". I knew I was on the right track :)
      In the absence of evidence, opinion is indistinguishable from prejudice.
      I'm with torvalds on this Agile (and TDD) debunked I told'em LLVM was the way to go. But did they listen!
        BrowserUk,

        I am disappointed in your ability to follow along with your own line of questioning!

        I answered your questions in the exact order in which you asked them, and it is YOUR OWN ORDER OF QUESTIONS which has lead to your frustration in this case.

        If you will simply continue reading your own questions, you will realize the 2nd question after your premature-quit-point is what you are currently complaining about:

        Publish the script

        DONE: n-body Script

        I'm sorry, but in this case your are simply incorrect, with your own impatience and/or rudeness seemingly to blame.

        Please try again.

        Perling,
        ~ Will the Chill

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (6)
As of 2024-06-14 12:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    erzuuli‥ 🛈The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.