The problem with Perl
Upcoming SlideShare
Loading in...5
×
 

The problem with Perl

on

  • 671 views

My ramblings about how I think the Perl community should target newcomers in its marketing efforts, and how I've come to appreciate Python and Java's standard libraries and toolsets.

My ramblings about how I think the Perl community should target newcomers in its marketing efforts, and how I've come to appreciate Python and Java's standard libraries and toolsets.

Statistics

Views

Total Views
671
Views on SlideShare
667
Embed Views
4

Actions

Likes
0
Downloads
3
Comments
0

2 Embeds 4

https://twitter.com 2
https://si0.twimg.com 2

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • Perl programmer all my life after university, with the occasional bout of C.\nTook a job at a Java shop 4 years ago, and as luck would have it ended up in a Python one earlier this year.\n
  • Newcomers have watched the screencast and drank the Kool-Aid. We can show them screencasts, but at some point they’ll actually have to build and ship something.\n
  • “Oh, the beauty is that it’s so extensible!”\nYes, *I and you* can. The newcomers can’t, and shouldn’t be expected to do so.\nThe point is there are alternatives to Perl where you don’t have to hack it.\nAnd if you take that up the chain, it’s even worse. All that matters is *shipping*.\n
  • Perl was fabulous at segmentation, selling to a lot of different people, and regularly upselling them.\nIt has not created new needs, e.g., OO after Java, functional with Haskell, Erlang.\nWe certainly don’t seem to find new markets, and seem to be playing catch-up.\n
  • \n
  • When was the last time one of the cool kids launched with a Perl API? And why should they, if apparently the majority of new-ish programmers don’t use it? This is of course a self-fulfilling prophecy, and the cycle perpetuates itself.\n(Go Cardless, AWS, Rackspace, Streak, Spark Devices, OpenStack)\n
  • Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren’t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
  • Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren’t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
  • Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren’t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
  • Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren’t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
  • Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren’t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
  • Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren’t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
  • Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren’t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
  • Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren’t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
  • Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren’t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
  • Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren’t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
  • Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren’t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
  • Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren’t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
  • Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren’t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
  • Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren’t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
  • Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren’t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
  • Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren’t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
  • Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren’t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
  • Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren’t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
  • Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren’t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
  • Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren’t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
  • Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren’t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
  • Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren’t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
  • Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren’t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
  • Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren’t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
  • Task::Kensho? WTF? What about Task::ExtendedLibrary or Task::RecommendedModules?\nRegardless, why aren’t most of these in standard library?\nMoose et al., Dist::Zilla, Try::Tiny, DBI, Config::*, DateTime, the Perl Email Project, @rjbs, @miyagawa, etc\n
  • I quite liked the little squiggles before variable names, because I could see what it was. I’ve shot myself in the foot in languages that don’t have this feature exactly 0 times.\nMoose has become the cheap way out of arguments.\nThe thing is, the competition doesn’t need anything like it. Or at all.\n
  • This helps you catch frequent mistakes.\n
  • 1 line saved, woohoo!\n
  • Much better.\n
  • \n
  • \n
  • Oops. UI inconsistency.\n
  • That makes sense.\n
  • \n
  • \n
  • \n
  • \n
  • Detect redundant statements, find optimisations, warn about npes, suggest intelligent completion, not just keywords.\nThe ‘I’ in IDE means ‘integrated’.\nMaven, Ivy, Gradle - manage dependencies, build, test, package, deploy.\n
  • Detect redundant statements, find optimisations, warn about npes, suggest intelligent completion, not just keywords.\nThe ‘I’ in IDE means ‘integrated’.\nMaven, Ivy, Gradle - manage dependencies, build, test, package, deploy.\n
  • Detect redundant statements, find optimisations, warn about npes, suggest intelligent completion, not just keywords.\nThe ‘I’ in IDE means ‘integrated’.\nMaven, Ivy, Gradle - manage dependencies, build, test, package, deploy.\n
  • Detect redundant statements, find optimisations, warn about npes, suggest intelligent completion, not just keywords.\nThe ‘I’ in IDE means ‘integrated’.\nMaven, Ivy, Gradle - manage dependencies, build, test, package, deploy.\n
  • Detect redundant statements, find optimisations, warn about npes, suggest intelligent completion, not just keywords.\nThe ‘I’ in IDE means ‘integrated’.\nMaven, Ivy, Gradle - manage dependencies, build, test, package, deploy.\n
  • Detect redundant statements, find optimisations, warn about npes, suggest intelligent completion, not just keywords.\nThe ‘I’ in IDE means ‘integrated’.\nMaven, Ivy, Gradle - manage dependencies, build, test, package, deploy.\n
  • Perlysense / Rope, EPIC, Padre?\n
  • \n
  • Perlysense, EPIC, Padre?\n
  • Perlysense, EPIC, Padre?\n
  • \n

The problem with Perl The problem with Perl Presentation Transcript

  • The problem with Perl A semi-informed rant
  • How did I get here?• C since forever• 15+ years of Perl• 4 years of Java• 9 months of Python
  • Fresh fish• No one has the time• No one has the resources• Ultimately, no one cares
  • But you can just hack it!• Point missed• We are not the audience, the pimple-faced kids are• And uninformed C[TI]Os• This is really about the M word
  • The marketing cycle• Create new needs• Find new markets• Segment• Goto 10
  • The echo chamber• No new customers• Confirmation bias• Monoculture
  • A Perl client library?• New and exciting stuff rarely mentions Perl• Guess what the early adopters are not going to see?
  • Batteries not included
  • Batteries not included Exceptions Databases Packaging Sets AudioProfiling HTTPD Configuration XML Images CollectionsTypes SSL Concurrency Crypto XML-RPC Time EMail Dates Environment Bootstrapping URLs HTML REPL PSGI
  • That funky sh*t• Perl is a visual language: $ @ % & Python, however, is polite• “You just need to use Moose”• Well, not in that other language.
  • package MyClass;use strict;use warnings;
  • package MyClass;use strict;use warnings;use Moose;
  • package MyClass;use strict;use warnings;use Moose;use feature qw(say);
  • package MyClass;use strict;use warnings;use Moose;use feature qw(say);use v5.10;
  • package MyClass;use strict;use warnings;use Moose;use feature qw(say);use v5.10;use Modern::Perl ‘v5.10’;
  • package MyClass;use strict;use warnings;use Moose;use feature qw(say);use v5.10;use Modern::Perl ‘v5.10’;
  • package MyClass;use strict;use warnings;use Moose;use feature qw(say);use v5.10;use Modern::Perl qw(2009);
  • package MyClass;use strict;use warnings;use Moose;use namespace::clean -except => ‘meta’;use feature qw(say);use v5.10;use Modern::Perl qw(2009);
  • package MyClass;use Moose;use namespace::clean -except => ‘meta’;use Modern::Perl qw(2009);1;
  • class MyClass: pass
  • public class MyClass{}
  • Tools of the trade
  • Tools of the tradeStatic analysis Intellisense Refactoring BuildInspections systems IDEs
  • In Perl land• Perl Critic• Carton• cpanm• cpanfile
  • It’s not all gloom!
  • I <3 Dist::Zilla• Perl’s Maven (except better)• Bootstrap, generate docs, run tests, package, manage versions, release• Support for different types of projects, via templates• Extensible through plugins
  • HOT DIST::ZILLA ACTION!!one!(if you weren’t there, you lose)
  • Insults? @pfig me@pedrofigueiredo.orghttp://slideshare.net/pfig/the-problem-with-perl