ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
Principles and practices for
 picking powerful programming
platforms, packages, and plugins
            Abe Gong
             CSAAW
            Jan 2012
Picking programming packages
     Getting the right tools matters.
Picking programming packages
 It matters a lot, but we never talk about it.
Picking programming packages
It is a decision we will each face many times.
Picking programming packages

It's a lot like another decision we often face...




     "What should I wear to the thing?¡±
What should I wear to the thing?

Clothing            Software
Accesorizes well    Does it work with other software
                    and tools that you use? Is it
                    extensible?
Matches others      Is it a popular package? Are
                    there active forums to get help
                    and updates?
Comfortable         Is it well-documented and easy
                    to debug?
Reasonably priced   It is open source? Does the
                    University already have
                    licenses?
Fits the occasion     Does it do what you want it to
                    do? Really?
Tools I use

ª«   Python ¨C Data acquisition and manipulation
ª«   R, RStudio, and ggplot ¨C Statistics, data
    visualization
ª«   Hadoop ¨C Really big data crunching
ª«   Django ¨C Server-side web development
ª«   HTML, CSS, Javascript, jquery ¨C Client-side
    web development
ª«   Protovis ¨C Client-side data visualization
Tools I would think about using

ª«   D3 ¨C A souped-up replacement for protovis
ª«   Ruby on Rails ¨C More popular alternative to
    Django. Doesn't use python, though.
ª«   Repast ¨C ABMs with python support
ª«   PANDAS ¨C A python-based replacement for R?
Tools I would never use

ª«   Java ¨C A perfectly decent programming
    language, but it does nothing that C++ and
    python can't do better.
ª«   PERL ¨C Like python, but not for humans.
ª«   NetLogo ¨C A horrible, legacy language that is
    difficult to understand and almost impossible to
    debug. In exchange for sliders, NetLogo will
    give you bad habits and make you afraid of
    programming.
Other links and sources
    Picking programming languages:
ª«   http://www.tundraware.com/Technology/How-To-Pick-A-Programming-Language/
ª«   http://www.awaretek.com/atesterea.html
ª«   http://newbiehacker.wordpress.com/2010/01/23/how-to-choose-a-programming-la
ª«   http://blog.aegisub.org/2008/12/if-programming-languages-were-religions.html
ª«   http://en.wikipedia.org/wiki/Comparison_of_agent-based_modeling_software


ª«   Kinda random:
ª«   http://www.inc.com/guides/choosing-accounting-software.html
ª«   http://www.mb-guide.org/medical-billing-and-coding-software.html
ª«   http://www.qualitydigest.com/july01/html/gauging.html
ª«   http://3d.about.com/od/A-Guide-To-3D-Software/a/Buyers-Guide-To-3d-Software.
ª«   http://www.lingualogue.com/language-software-reviews.html
Picking powerful programming
platforms...
                                   >> Python

                               ª«       Powerful
                                   ª«   Flexible
                     ª«       << Extensible
                         ª«   Very popular
                               ª«   Very free

More Related Content

Picking programming packages

  • 1. Principles and practices for picking powerful programming platforms, packages, and plugins Abe Gong CSAAW Jan 2012
  • 2. Picking programming packages Getting the right tools matters.
  • 3. Picking programming packages It matters a lot, but we never talk about it.
  • 4. Picking programming packages It is a decision we will each face many times.
  • 5. Picking programming packages It's a lot like another decision we often face... "What should I wear to the thing?¡±
  • 6. What should I wear to the thing? Clothing Software Accesorizes well Does it work with other software and tools that you use? Is it extensible? Matches others Is it a popular package? Are there active forums to get help and updates? Comfortable Is it well-documented and easy to debug? Reasonably priced It is open source? Does the University already have licenses? Fits the occasion Does it do what you want it to do? Really?
  • 7. Tools I use ª« Python ¨C Data acquisition and manipulation ª« R, RStudio, and ggplot ¨C Statistics, data visualization ª« Hadoop ¨C Really big data crunching ª« Django ¨C Server-side web development ª« HTML, CSS, Javascript, jquery ¨C Client-side web development ª« Protovis ¨C Client-side data visualization
  • 8. Tools I would think about using ª« D3 ¨C A souped-up replacement for protovis ª« Ruby on Rails ¨C More popular alternative to Django. Doesn't use python, though. ª« Repast ¨C ABMs with python support ª« PANDAS ¨C A python-based replacement for R?
  • 9. Tools I would never use ª« Java ¨C A perfectly decent programming language, but it does nothing that C++ and python can't do better. ª« PERL ¨C Like python, but not for humans. ª« NetLogo ¨C A horrible, legacy language that is difficult to understand and almost impossible to debug. In exchange for sliders, NetLogo will give you bad habits and make you afraid of programming.
  • 10. Other links and sources Picking programming languages: ª« http://www.tundraware.com/Technology/How-To-Pick-A-Programming-Language/ ª« http://www.awaretek.com/atesterea.html ª« http://newbiehacker.wordpress.com/2010/01/23/how-to-choose-a-programming-la ª« http://blog.aegisub.org/2008/12/if-programming-languages-were-religions.html ª« http://en.wikipedia.org/wiki/Comparison_of_agent-based_modeling_software ª« Kinda random: ª« http://www.inc.com/guides/choosing-accounting-software.html ª« http://www.mb-guide.org/medical-billing-and-coding-software.html ª« http://www.qualitydigest.com/july01/html/gauging.html ª« http://3d.about.com/od/A-Guide-To-3D-Software/a/Buyers-Guide-To-3d-Software. ª« http://www.lingualogue.com/language-software-reviews.html
  • 11. Picking powerful programming platforms... >> Python ª« Powerful ª« Flexible ª« << Extensible ª« Very popular ª« Very free