際際滷

際際滷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  Data acquisition and manipulation
   R, RStudio, and ggplot  Statistics, data
    visualization
   Hadoop  Really big data crunching
   Django  Server-side web development
   HTML, CSS, Javascript, jquery  Client-side
    web development
   Protovis  Client-side data visualization
Tools I would think about using

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

   Java  A perfectly decent programming
    language, but it does nothing that C++ and
    python can't do better.
   PERL  Like python, but not for humans.
   NetLogo  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
Ad

Recommended

Building for resilience (with speaking notes)
Building for resilience (with speaking notes)
Abe Gong
Building for resilience
Building for resilience
Abe Gong
How to ride, eat, tame, etc. your personal elephant
How to ride, eat, tame, etc. your personal elephant
Abe Gong
The Edison Moment for the Internet of You
The Edison Moment for the Internet of You
Abe Gong
The Sidekick Pattern: Strata talk by Abe Gong
The Sidekick Pattern: Strata talk by Abe Gong
Abe Gong
Cmpe202 01 Research
Cmpe202 01 Research
vladimirkorshak
Programming tools for developers
Programming tools for developers
BBVA API Market
Python in telecommunications (in 7 minutes)
Python in telecommunications (in 7 minutes)
iMasters
Python Django Intro V0.1
Python Django Intro V0.1
Udi Bauman
Python for Science and Engineering: a presentation to A*STAR and the Singapor...
Python for Science and Engineering: a presentation to A*STAR and the Singapor...
pythoncharmers
Software Programming with Python II.pptx
Software Programming with Python II.pptx
GevitaChinnaiah
Introduction-to-Programming-Languages.pptx
Introduction-to-Programming-Languages.pptx
ranjan317165
Python | What is Python | History of Python | Python Tutorial
Python | What is Python | History of Python | Python Tutorial
QA TrainingHub
P1 2018 python
P1 2018 python
Prof. Wim Van Criekinge
2016 bioinformatics i_python_part_1_wim_vancriekinge
2016 bioinformatics i_python_part_1_wim_vancriekinge
Prof. Wim Van Criekinge
Migration of Applications to Python is the most prudent Decision
Migration of Applications to Python is the most prudent Decision
Mindfire LLC
P1 2017 python
P1 2017 python
Prof. Wim Van Criekinge
O Reilly Learning Python 3rd Edition
O Reilly Learning Python 3rd Edition
gavin shaw
COMPUTER LANGUAGES AND THERE DIFFERENCE
COMPUTER LANGUAGES AND THERE DIFFERENCE
Pavan Kalyan
Type of apps that can be developed using python
Type of apps that can be developed using python
Semidot Infotech
Ways To Become A Good Python Developer
Ways To Become A Good Python Developer
CodeMonk
A complete guide to Python app development.pdf
A complete guide to Python app development.pdf
MoonTechnolabsPvtLtd
Which is better, Java or Python? And how?
Which is better, Java or Python? And how?
narendrachinnu
First programming language to learn | Which Programming Language to Learn Fi...
First programming language to learn | Which Programming Language to Learn Fi...
Intellipaat
python bridge course for second year.pptx
python bridge course for second year.pptx
geethar79
Blog post
Blog post
praveen kumar
Python_basics_tuples_sets_lists_control_loops.ppt
Python_basics_tuples_sets_lists_control_loops.ppt
VGaneshKarthikeyan
Introduction to python
Introduction to python
Nikhil Kapoor
The Future of Technology: 2025-2125 by Saikat Basu.pdf
The Future of Technology: 2025-2125 by Saikat Basu.pdf
Saikat Basu
Using the SQLExecutor for Data Quality Management: aka One man's love for the...
Using the SQLExecutor for Data Quality Management: aka One man's love for the...
Safe Software

More Related Content

Similar to Picking programming packages (20)

Python Django Intro V0.1
Python Django Intro V0.1
Udi Bauman
Python for Science and Engineering: a presentation to A*STAR and the Singapor...
Python for Science and Engineering: a presentation to A*STAR and the Singapor...
pythoncharmers
Software Programming with Python II.pptx
Software Programming with Python II.pptx
GevitaChinnaiah
Introduction-to-Programming-Languages.pptx
Introduction-to-Programming-Languages.pptx
ranjan317165
Python | What is Python | History of Python | Python Tutorial
Python | What is Python | History of Python | Python Tutorial
QA TrainingHub
P1 2018 python
P1 2018 python
Prof. Wim Van Criekinge
2016 bioinformatics i_python_part_1_wim_vancriekinge
2016 bioinformatics i_python_part_1_wim_vancriekinge
Prof. Wim Van Criekinge
Migration of Applications to Python is the most prudent Decision
Migration of Applications to Python is the most prudent Decision
Mindfire LLC
P1 2017 python
P1 2017 python
Prof. Wim Van Criekinge
O Reilly Learning Python 3rd Edition
O Reilly Learning Python 3rd Edition
gavin shaw
COMPUTER LANGUAGES AND THERE DIFFERENCE
COMPUTER LANGUAGES AND THERE DIFFERENCE
Pavan Kalyan
Type of apps that can be developed using python
Type of apps that can be developed using python
Semidot Infotech
Ways To Become A Good Python Developer
Ways To Become A Good Python Developer
CodeMonk
A complete guide to Python app development.pdf
A complete guide to Python app development.pdf
MoonTechnolabsPvtLtd
Which is better, Java or Python? And how?
Which is better, Java or Python? And how?
narendrachinnu
First programming language to learn | Which Programming Language to Learn Fi...
First programming language to learn | Which Programming Language to Learn Fi...
Intellipaat
python bridge course for second year.pptx
python bridge course for second year.pptx
geethar79
Blog post
Blog post
praveen kumar
Python_basics_tuples_sets_lists_control_loops.ppt
Python_basics_tuples_sets_lists_control_loops.ppt
VGaneshKarthikeyan
Introduction to python
Introduction to python
Nikhil Kapoor
Python Django Intro V0.1
Python Django Intro V0.1
Udi Bauman
Python for Science and Engineering: a presentation to A*STAR and the Singapor...
Python for Science and Engineering: a presentation to A*STAR and the Singapor...
pythoncharmers
Software Programming with Python II.pptx
Software Programming with Python II.pptx
GevitaChinnaiah
Introduction-to-Programming-Languages.pptx
Introduction-to-Programming-Languages.pptx
ranjan317165
Python | What is Python | History of Python | Python Tutorial
Python | What is Python | History of Python | Python Tutorial
QA TrainingHub
2016 bioinformatics i_python_part_1_wim_vancriekinge
2016 bioinformatics i_python_part_1_wim_vancriekinge
Prof. Wim Van Criekinge
Migration of Applications to Python is the most prudent Decision
Migration of Applications to Python is the most prudent Decision
Mindfire LLC
O Reilly Learning Python 3rd Edition
O Reilly Learning Python 3rd Edition
gavin shaw
COMPUTER LANGUAGES AND THERE DIFFERENCE
COMPUTER LANGUAGES AND THERE DIFFERENCE
Pavan Kalyan
Type of apps that can be developed using python
Type of apps that can be developed using python
Semidot Infotech
Ways To Become A Good Python Developer
Ways To Become A Good Python Developer
CodeMonk
A complete guide to Python app development.pdf
A complete guide to Python app development.pdf
MoonTechnolabsPvtLtd
Which is better, Java or Python? And how?
Which is better, Java or Python? And how?
narendrachinnu
First programming language to learn | Which Programming Language to Learn Fi...
First programming language to learn | Which Programming Language to Learn Fi...
Intellipaat
python bridge course for second year.pptx
python bridge course for second year.pptx
geethar79
Python_basics_tuples_sets_lists_control_loops.ppt
Python_basics_tuples_sets_lists_control_loops.ppt
VGaneshKarthikeyan
Introduction to python
Introduction to python
Nikhil Kapoor

Recently uploaded (20)

The Future of Technology: 2025-2125 by Saikat Basu.pdf
The Future of Technology: 2025-2125 by Saikat Basu.pdf
Saikat Basu
Using the SQLExecutor for Data Quality Management: aka One man's love for the...
Using the SQLExecutor for Data Quality Management: aka One man's love for the...
Safe Software
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
biswajitbanerjee38
Cluster-Based Multi-Objective Metamorphic Test Case Pair Selection for Deep N...
Cluster-Based Multi-Objective Metamorphic Test Case Pair Selection for Deep N...
janeliewang985
Lessons Learned from Developing Secure AI Workflows.pdf
Lessons Learned from Developing Secure AI Workflows.pdf
Priyanka Aash
Key Requirements to Successfully Implement Generative AI in Edge DevicesOpt...
Key Requirements to Successfully Implement Generative AI in Edge DevicesOpt...
Edge AI and Vision Alliance
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Priyanka Aash
Techniques for Automatic Device Identification and Network Assignment.pdf
Techniques for Automatic Device Identification and Network Assignment.pdf
Priyanka Aash
OpenACC and Open Hackathons Monthly Highlights June 2025
OpenACC and Open Hackathons Monthly Highlights June 2025
OpenACC
OWASP Barcelona 2025 Threat Model Library
OWASP Barcelona 2025 Threat Model Library
PetraVukmirovic
FIDO Seminar: New Data: Passkey Adoption in the Workforce.pptx
FIDO Seminar: New Data: Passkey Adoption in the Workforce.pptx
FIDO Alliance
The Future of AI Agent Development Trends to Watch.pptx
The Future of AI Agent Development Trends to Watch.pptx
Lisa ward
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
Fwdays
cnc-processing-centers-centateq-p-110-en.pdf
cnc-processing-centers-centateq-p-110-en.pdf
AmirStern2
Powering Multi-Page Web Applications Using Flow Apps and FME Data Streaming
Powering Multi-Page Web Applications Using Flow Apps and FME Data Streaming
Safe Software
FIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptx
FIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptx
FIDO Alliance
PyCon SG 25 - Firecracker Made Easy with Python.pdf
PyCon SG 25 - Firecracker Made Easy with Python.pdf
Muhammad Yuga Nugraha
"Database isolation: how we deal with hundreds of direct connections to the d...
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
Curietech AI in action - Accelerate MuleSoft development
Curietech AI in action - Accelerate MuleSoft development
shyamraj55
From Manual to Auto Searching- FME in the Driver's Seat
From Manual to Auto Searching- FME in the Driver's Seat
Safe Software
The Future of Technology: 2025-2125 by Saikat Basu.pdf
The Future of Technology: 2025-2125 by Saikat Basu.pdf
Saikat Basu
Using the SQLExecutor for Data Quality Management: aka One man's love for the...
Using the SQLExecutor for Data Quality Management: aka One man's love for the...
Safe Software
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
biswajitbanerjee38
Cluster-Based Multi-Objective Metamorphic Test Case Pair Selection for Deep N...
Cluster-Based Multi-Objective Metamorphic Test Case Pair Selection for Deep N...
janeliewang985
Lessons Learned from Developing Secure AI Workflows.pdf
Lessons Learned from Developing Secure AI Workflows.pdf
Priyanka Aash
Key Requirements to Successfully Implement Generative AI in Edge DevicesOpt...
Key Requirements to Successfully Implement Generative AI in Edge DevicesOpt...
Edge AI and Vision Alliance
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Priyanka Aash
Techniques for Automatic Device Identification and Network Assignment.pdf
Techniques for Automatic Device Identification and Network Assignment.pdf
Priyanka Aash
OpenACC and Open Hackathons Monthly Highlights June 2025
OpenACC and Open Hackathons Monthly Highlights June 2025
OpenACC
OWASP Barcelona 2025 Threat Model Library
OWASP Barcelona 2025 Threat Model Library
PetraVukmirovic
FIDO Seminar: New Data: Passkey Adoption in the Workforce.pptx
FIDO Seminar: New Data: Passkey Adoption in the Workforce.pptx
FIDO Alliance
The Future of AI Agent Development Trends to Watch.pptx
The Future of AI Agent Development Trends to Watch.pptx
Lisa ward
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
Fwdays
cnc-processing-centers-centateq-p-110-en.pdf
cnc-processing-centers-centateq-p-110-en.pdf
AmirStern2
Powering Multi-Page Web Applications Using Flow Apps and FME Data Streaming
Powering Multi-Page Web Applications Using Flow Apps and FME Data Streaming
Safe Software
FIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptx
FIDO Seminar: Evolving Landscape of Post-Quantum Cryptography.pptx
FIDO Alliance
PyCon SG 25 - Firecracker Made Easy with Python.pdf
PyCon SG 25 - Firecracker Made Easy with Python.pdf
Muhammad Yuga Nugraha
"Database isolation: how we deal with hundreds of direct connections to the d...
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
Curietech AI in action - Accelerate MuleSoft development
Curietech AI in action - Accelerate MuleSoft development
shyamraj55
From Manual to Auto Searching- FME in the Driver's Seat
From Manual to Auto Searching- FME in the Driver's Seat
Safe Software
Ad

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 Data acquisition and manipulation R, RStudio, and ggplot Statistics, data visualization Hadoop Really big data crunching Django Server-side web development HTML, CSS, Javascript, jquery Client-side web development Protovis Client-side data visualization
  • 8. Tools I would think about using D3 A souped-up replacement for protovis Ruby on Rails More popular alternative to Django. Doesn't use python, though. Repast ABMs with python support PANDAS A python-based replacement for R?
  • 9. Tools I would never use Java A perfectly decent programming language, but it does nothing that C++ and python can't do better. PERL Like python, but not for humans. NetLogo 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