SlideShare a Scribd company logo
Python:
The Programmer’s Lingua Franca

    Using Python to build bridges between
    technologies, businesses and people
What we'll talk about

•   What is a lingua franca?
•   Why the industry needs one
•   Acmeism – the Ingy approach
•   Past and current examples: BASIC, C,
    and Java
•   Why Python is better
•   TPSL: Teaching Python as a Second (or
    third or fourth) Language
•   Getting past the barriers
What is a lingua franca?
        “a language systematically used to make communication possible
        between people not sharing a mother tongue, in particular when it
        is a third language, distinct from both mother tongues.”
             -- Wikipedia

•   The original “Lingua Franca” was an amalgam of languages
        – Made up of Italian, Arabic, French, Greek, Portuguese, Spanish and
            Turkish.
        – Used in the Mediterranean during the Rennaissance

•   English functions as the de facto modern lingua franca
        – For international business, aviation, science and technology
        – Integrates words from other languages

•   English doesn't fit the strict definition
        – It is often the mother tongue of at least one party...
        – but this example is closer to what we'll talk about
Why do we need one for
programming?
•   So many languages
       – more than 2500 in all (“The Language List” Bill Kinnersley)
       – if you just include popular ones, you still can't learn them
            all
•   Programmers need a vehicle to express concepts to
      one another
•   Programs need a vehicle to interact with one another
       – open data formats
       – standard protocols
       – an API everyone can use
What this audience reported:
                  Number of Languages in Organization
                          5%



                                         14%
      27%




                                                         1 language
                                                         2 languages
                                                         3 languages
                                                         4 or more languages
                                                         Unknown or no answer
                                                   18%




            37%
Ingy döt Net
  •   Inventor of YAML
  •   Leader in the Perl Community
  •   100+ CPAN modules
  •   Several PyPI Modules
  •   Old and New “Activator”
  •   Acmeist
  •   Currently travelling around Europe
Acmeism
•   A different path to mutual comprehension
•   Ideas (modules) need to be shared across all
    language boundaries
•   Build technology that is programming language
    independent
       – YAML – data serialization for many programming
           languages
       – C'Dent - Acmeist Module Language
       – Pegex - Acmeist Parser for creating new
           languages
       – TestML - Acmeist Unit test language (like FIT)
Other programming lingua francas
•   BASIC
        – Used to be everywhere, code samples in math and science
           textbooks
        – Many first generation micro-computer hackers started with this
           language
•   C
        – Widely used and part of most comp-sci programs
        – Most experienced programmers are familiar with it
        – Lower-level language
•   Java
        – Extremely popular, cross-platform, also widely taught
        – Very verbose
        – Open source (GPL) only since 2007 (c.f. Apache Harmony)
... used by this audience
              Language Used to Describe Programming Ideas

             15%                       14%




                                                       14%   C
                                                             Java
                                                             Python
                                                             Other
                                                             No answer




                                                 13%
       43%
Why Python is better
•   Free
•   Easy to read
       – Syntax (specifically indentation) enforces sane visual block
           structure
       – Concise, high-level interpreted language
•   Easy to learn
       – Excellent documentation and tutorials
       – Numerous training resources
•   Increasingly popular
       – Adopted by important organizations: Google, NASA, Disney,
           Sony, SEC
Comparisons
Which language is most readable and concise?

     – Example code adapted from http://www.dmh2000.com/cjpr/
     – Using object oriented C++ instead of C to be more fair
C++
#include   <iostream>
#include   <sstream>
#include   <string>
#include   <vector>

using namespace std;

template<class T> class RedBlackTree {

private:
    static const int red   = 0;
    static const int black = 1;

     int                   m_color;
     T                     m_val;
     RedBlackTree          *m_left;
     RedBlackTree          *m_right;

     RedBlackTree(RedBlackTree *b) {
         m_val      = b->m_val;
         m_left     = b->m_left;
         m_right    = b->m_right;
         m_color    = red;
     }

public:
    RedBlackTree(T      x) {
        m_val           = x;
        m_left          = 0;
        m_right         = 0;
        m_color         = red;
    }

     const RedBlackTree *find(const T &key) const {
         const RedBlackTree *result = 0;
         if (key == m_val) {
             result = this;
         }
         else if (key < m_val) {
             if (m_left != 0) {
                 result = m_left->find(key);
             }
         }
         else {
             if (m_right != 0) {
                 result = m_right->find(key);
             }
         }
         return result;
     }
};
Java
import java.util.*;
public class RedBlackTree<T extends Comparable<T>> {

    public static final int red   = 0;
    public static final int black = 1;

    private   int               __color;
    private   T                 __val;
    private   RedBlackTree<T>   __left;
    private   RedBlackTree<T>   __right;

    private RedBlackTree(RedBlackTree<T> b) {
        __val      = b.__val;
        __left     = b.__left;
        __right    = b.__right;
        __color    = red;
    }

    public RedBlackTree(T x) {
        __val      = x;
        __left     = null;
        __right    = null;
        __color = red;
    }

    public RedBlackTree<T> find(T key) {
        RedBlackTree<T> result = null;
        if (key == __val) {
            result = this;
        }
        else if (key.compareTo(__val) < 0) {
            if (__left != null) {
                result = __left.find(key);
            }
        }
        else {
            if (__right != null) {
                result = __right.find(key);
            }
        }
        return result;
    }
}
Python
class RedBlackTree:
    red, black = range(2)

    def __init__(self,   val=None):
        self.left        = None
        self.right       = None
        self.val         = val
        self.color       = RedBlackTree.red

    def find(self, key):
        result = None
        if (key == self.val):
            result = self
        elif (key < self.val):
            if (self.left != None):
                result = self.left.find(key)
        else:
            if (self.right != None):
                result = self.right.find(key)
        return result
Integration with other languages
•       Python libraries are commonly written in C or C++ when
        performance is a consideration
•       You can use other languages in Python, and Python in other
        languages
           – Inline, PyInline, Inline::Python etc.
•       More projects integrating Python with other programming
        languages:
           – Bridges for C/C++, Java, C#/.NET, PHP, Perl, and more

... and databases
    •   Commercial / enterprise: Oracle, SQL Server, DB2, SAP DB,
        Sybase
    •   Open source: MySQL, PostgreSQL, SQLite, redis, MongoDB
Alternative Python interpreters
Python is an open source language, implementations of
 Python are not controlled by a single commercial entity, as
 was case with Java and is the case with C#.
     – Important for avoiding vendor lock-in
     – PSF license is very permissive
This encourages innovation and allows for alternative
 implementations:
     –   Jython: implemented in Java
     –   Stackless Python: CPython variant
     –   unladen-swallow: Google project for a faster Python
     –   Iron Python: for the .NET Framework
     –   PyPy: also focussing on speed and efficiency
Python as a Second Language
•   What makes it easier to read also makes it easier to
    learn
•   Many programmers come to Python from other
    languages
       – lots of resources (Python wiki) for those switching
       – “Learning Python” by Mark Lutz and David Ascher
       – Ingy's anecdotal evidence
•   Non-English tutorials and documentation
       – http://wiki.python.org/moin/Languages
       – there's even a Python tutorial in Esperanto!
How ActiveState can help
Resources for developer-led initiatives to introduce and
  expand Python usage in your organization

      •
          Commercial support and indemnification
      •
          Quality assured, vendor-backed builds
      •
          Python training from the best in the field
      •
          Development advice
      •
          code.activestate.com
               •
                   PyPM Index
               •
                   Recipes
      •
          Komodo Edit and IDE
Python in the cloud
Cloud application platform for Python and many others languages




     –   not a Platform as a Service... it's for creating your own
     –   based on Cloud Foundry – we've added Python support and a lot more
     –   supports multiple languages: Python, Perl, Ruby, Node.js, Java...
     –   all the Python web frameworks: Django, Bottle, Flask, Pyramid
     –   ... via WSGI
     –   deploy new applications or migrate existing ones
     –   http://activestate.com/cloud
Questions?
Thank You!

      Troy Topnik: troyt@activestate.com

      Ingy döt Net: ingy@activestate.com
               www.acmeism.org

         Speak to a representative about
          ActivePython or Python training:
                 1-866-510-2914
       business-solutions@activestate.com
               www.activestate.com

More Related Content

What's hot

What is Python? An overview of Python for science.
What is Python? An overview of Python for science.What is Python? An overview of Python for science.
What is Python? An overview of Python for science.
Nicholas Pringle
 
Python Programming Language
Python Programming LanguagePython Programming Language
Python Programming LanguageLaxman Puri
 
Introduction to python
Introduction to pythonIntroduction to python
Introduction to python
Ayshwarya Baburam
 
Dart ppt
Dart pptDart ppt
Dart ppt
Krishna Teja
 
Python Seminar PPT
Python Seminar PPTPython Seminar PPT
Python Seminar PPT
Shivam Gupta
 
型ヒントについて考えよう!
型ヒントについて考えよう!型ヒントについて考えよう!
型ヒントについて考えよう!
Yusuke Miyazaki
 
TI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific LanguagesTI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific LanguagesEelco Visser
 
Python basics
Python basicsPython basics
Python basics
RANAALIMAJEEDRAJPUT
 
Python programming
Python programmingPython programming
Python programming
Prof. Dr. K. Adisesha
 
Python Crash Course
Python Crash CoursePython Crash Course
Python Crash Course
Haim Michael
 
Chapter 0 Python Overview (Python Programming Lecture)
Chapter 0 Python Overview (Python Programming Lecture)Chapter 0 Python Overview (Python Programming Lecture)
Chapter 0 Python Overview (Python Programming Lecture)
IoT Code Lab
 
Overview of python 2019
Overview of python 2019Overview of python 2019
Overview of python 2019
Samir Mohanty
 
Python presentation by Monu Sharma
Python presentation by Monu SharmaPython presentation by Monu Sharma
Python presentation by Monu Sharma
Mayank Sharma
 
R and Python, A Code Demo
R and Python, A Code DemoR and Python, A Code Demo
R and Python, A Code Demo
Vineet Jaiswal
 
Python programming introduction
Python programming introductionPython programming introduction
Python programming introduction
Siddique Ibrahim
 
Python indroduction
Python indroductionPython indroduction
Python indroduction
FEG
 
summer training report on python
summer training report on pythonsummer training report on python
summer training report on python
Shubham Yadav
 
XKE - Programming Paradigms & Constructs
XKE - Programming Paradigms & ConstructsXKE - Programming Paradigms & Constructs
XKE - Programming Paradigms & Constructs
Nicolas Demengel
 
Unit 2 python
Unit 2 pythonUnit 2 python
Unit 2 python
praveena p
 

What's hot (20)

Python - the basics
Python - the basicsPython - the basics
Python - the basics
 
What is Python? An overview of Python for science.
What is Python? An overview of Python for science.What is Python? An overview of Python for science.
What is Python? An overview of Python for science.
 
Python Programming Language
Python Programming LanguagePython Programming Language
Python Programming Language
 
Introduction to python
Introduction to pythonIntroduction to python
Introduction to python
 
Dart ppt
Dart pptDart ppt
Dart ppt
 
Python Seminar PPT
Python Seminar PPTPython Seminar PPT
Python Seminar PPT
 
型ヒントについて考えよう!
型ヒントについて考えよう!型ヒントについて考えよう!
型ヒントについて考えよう!
 
TI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific LanguagesTI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific Languages
 
Python basics
Python basicsPython basics
Python basics
 
Python programming
Python programmingPython programming
Python programming
 
Python Crash Course
Python Crash CoursePython Crash Course
Python Crash Course
 
Chapter 0 Python Overview (Python Programming Lecture)
Chapter 0 Python Overview (Python Programming Lecture)Chapter 0 Python Overview (Python Programming Lecture)
Chapter 0 Python Overview (Python Programming Lecture)
 
Overview of python 2019
Overview of python 2019Overview of python 2019
Overview of python 2019
 
Python presentation by Monu Sharma
Python presentation by Monu SharmaPython presentation by Monu Sharma
Python presentation by Monu Sharma
 
R and Python, A Code Demo
R and Python, A Code DemoR and Python, A Code Demo
R and Python, A Code Demo
 
Python programming introduction
Python programming introductionPython programming introduction
Python programming introduction
 
Python indroduction
Python indroductionPython indroduction
Python indroduction
 
summer training report on python
summer training report on pythonsummer training report on python
summer training report on python
 
XKE - Programming Paradigms & Constructs
XKE - Programming Paradigms & ConstructsXKE - Programming Paradigms & Constructs
XKE - Programming Paradigms & Constructs
 
Unit 2 python
Unit 2 pythonUnit 2 python
Unit 2 python
 

Viewers also liked

Samarjit Kachari-New media:Hope for literature and language survival?
Samarjit Kachari-New media:Hope for literature and language survival?Samarjit Kachari-New media:Hope for literature and language survival?
Samarjit Kachari-New media:Hope for literature and language survival?pumediaseminar2011
 
Case of study Fiji
Case of study FijiCase of study Fiji
Case of study Fiji
Monika Blanda
 
Short journey of ELF(English as lingua franca)
Short journey of ELF(English as lingua franca)Short journey of ELF(English as lingua franca)
Short journey of ELF(English as lingua franca)
PTESOL
 
Lingua franca
Lingua francaLingua franca
Lingua franca
gisellas
 
3rd material lingua-franca,pidgin,creole
3rd material lingua-franca,pidgin,creole3rd material lingua-franca,pidgin,creole
3rd material lingua-franca,pidgin,creole
Ayu Juwita
 
Intro to Python
Intro to PythonIntro to Python
Intro to Python
Daniel Greenfeld
 
English as a lingua franca assignment
English as a lingua franca assignmentEnglish as a lingua franca assignment
English as a lingua franca assignmentBruna Dainezi
 
Globish
GlobishGlobish
Globishlugos
 
Why Python is better for Data Science
Why Python is better for Data ScienceWhy Python is better for Data Science
Why Python is better for Data Science
Ícaro Medeiros
 
Pidgin and Creole (Language Varieties)
Pidgin and Creole (Language Varieties)Pidgin and Creole (Language Varieties)
Pidgin and Creole (Language Varieties)
Lecturer
 
English : Lingua - Franca
English : Lingua - FrancaEnglish : Lingua - Franca
English : Lingua - Franca
Bhumi Joshi
 
Lingua franca
Lingua francaLingua franca
Lingua franca
Md. Rana
 
Register And Style
Register And StyleRegister And Style
Register And StyleUwe Klemm
 
Style Register and Dialect
Style Register and DialectStyle Register and Dialect
Style Register and Dialect
Sidra Shahid
 
The role of social class in English language learning and teaching
The role of social class in English language learning and teachingThe role of social class in English language learning and teaching
The role of social class in English language learning and teaching
Muhmmad Asif
 
Sociolinguistic, Varieties of Language, Diglossia
Sociolinguistic, Varieties of Language, DiglossiaSociolinguistic, Varieties of Language, Diglossia
Sociolinguistic, Varieties of Language, Diglossia
Elnaz Nasseri
 
Sociolinguistics - Language Contact
Sociolinguistics - Language ContactSociolinguistics - Language Contact
Sociolinguistics - Language Contact
Ahmet Ateş
 
The impact of mother tongues in the learning of english language (3)
The impact of mother tongues in the learning of english language (3)The impact of mother tongues in the learning of english language (3)
The impact of mother tongues in the learning of english language (3)
Malieque
 
Historical perspective of education and the curriculum of
Historical perspective of education and the curriculum ofHistorical perspective of education and the curriculum of
Historical perspective of education and the curriculum ofleonilitabadillo
 

Viewers also liked (20)

Samarjit Kachari-New media:Hope for literature and language survival?
Samarjit Kachari-New media:Hope for literature and language survival?Samarjit Kachari-New media:Hope for literature and language survival?
Samarjit Kachari-New media:Hope for literature and language survival?
 
Ctrc python
Ctrc pythonCtrc python
Ctrc python
 
Case of study Fiji
Case of study FijiCase of study Fiji
Case of study Fiji
 
Short journey of ELF(English as lingua franca)
Short journey of ELF(English as lingua franca)Short journey of ELF(English as lingua franca)
Short journey of ELF(English as lingua franca)
 
Lingua franca
Lingua francaLingua franca
Lingua franca
 
3rd material lingua-franca,pidgin,creole
3rd material lingua-franca,pidgin,creole3rd material lingua-franca,pidgin,creole
3rd material lingua-franca,pidgin,creole
 
Intro to Python
Intro to PythonIntro to Python
Intro to Python
 
English as a lingua franca assignment
English as a lingua franca assignmentEnglish as a lingua franca assignment
English as a lingua franca assignment
 
Globish
GlobishGlobish
Globish
 
Why Python is better for Data Science
Why Python is better for Data ScienceWhy Python is better for Data Science
Why Python is better for Data Science
 
Pidgin and Creole (Language Varieties)
Pidgin and Creole (Language Varieties)Pidgin and Creole (Language Varieties)
Pidgin and Creole (Language Varieties)
 
English : Lingua - Franca
English : Lingua - FrancaEnglish : Lingua - Franca
English : Lingua - Franca
 
Lingua franca
Lingua francaLingua franca
Lingua franca
 
Register And Style
Register And StyleRegister And Style
Register And Style
 
Style Register and Dialect
Style Register and DialectStyle Register and Dialect
Style Register and Dialect
 
The role of social class in English language learning and teaching
The role of social class in English language learning and teachingThe role of social class in English language learning and teaching
The role of social class in English language learning and teaching
 
Sociolinguistic, Varieties of Language, Diglossia
Sociolinguistic, Varieties of Language, DiglossiaSociolinguistic, Varieties of Language, Diglossia
Sociolinguistic, Varieties of Language, Diglossia
 
Sociolinguistics - Language Contact
Sociolinguistics - Language ContactSociolinguistics - Language Contact
Sociolinguistics - Language Contact
 
The impact of mother tongues in the learning of english language (3)
The impact of mother tongues in the learning of english language (3)The impact of mother tongues in the learning of english language (3)
The impact of mother tongues in the learning of english language (3)
 
Historical perspective of education and the curriculum of
Historical perspective of education and the curriculum ofHistorical perspective of education and the curriculum of
Historical perspective of education and the curriculum of
 

Similar to Python: The Programmer's Lingua Franca

Unit1 pps
Unit1 ppsUnit1 pps
Unit1 pps
deeparengade31
 
Python for Delphi Developers - Part 1 Introduction
Python for Delphi Developers - Part 1 IntroductionPython for Delphi Developers - Part 1 Introduction
Python for Delphi Developers - Part 1 Introduction
Embarcadero Technologies
 
PL Lecture 01 - preliminaries
PL Lecture 01 - preliminariesPL Lecture 01 - preliminaries
PL Lecture 01 - preliminaries
Schwannden Kuo
 
Plc part 1
Plc part 1Plc part 1
Plc part 1
Taymoor Nazmy
 
Introduction_to_Python.pptx
Introduction_to_Python.pptxIntroduction_to_Python.pptx
Introduction_to_Python.pptx
Vinay Chowdary
 
Bioinformatics p1-perl-introduction v2013
Bioinformatics p1-perl-introduction v2013Bioinformatics p1-perl-introduction v2013
Bioinformatics p1-perl-introduction v2013
Prof. Wim Van Criekinge
 
Python_Introduction_Good_PPT.pptx
Python_Introduction_Good_PPT.pptxPython_Introduction_Good_PPT.pptx
Python_Introduction_Good_PPT.pptx
lemonchoos
 
P1 2018 python
P1 2018 pythonP1 2018 python
P1 2018 python
Prof. Wim Van Criekinge
 
Python Tutorials.pptx
Python Tutorials.pptxPython Tutorials.pptx
Python Tutorials.pptx
shuklakrishna829
 
Practical NLP with Lisp
Practical NLP with LispPractical NLP with Lisp
Practical NLP with Lisp
Vsevolod Dyomkin
 
Pyhton-1a-Basics.pdf
Pyhton-1a-Basics.pdfPyhton-1a-Basics.pdf
Pyhton-1a-Basics.pdf
Mattupallipardhu
 
Intro to Python
Intro to PythonIntro to Python
Functional Programming - Worth the Effort
Functional Programming - Worth the EffortFunctional Programming - Worth the Effort
Functional Programming - Worth the Effort
BoldRadius Solutions
 
Python and Pytorch tutorial and walkthrough
Python and Pytorch tutorial and walkthroughPython and Pytorch tutorial and walkthrough
Python and Pytorch tutorial and walkthrough
gabriellekuruvilla
 
2016 bioinformatics i_python_part_1_wim_vancriekinge
2016 bioinformatics i_python_part_1_wim_vancriekinge2016 bioinformatics i_python_part_1_wim_vancriekinge
2016 bioinformatics i_python_part_1_wim_vancriekinge
Prof. Wim Van Criekinge
 
F# Ignite - DNAD2010
F# Ignite - DNAD2010F# Ignite - DNAD2010
F# Ignite - DNAD2010
Rodrigo Vidal
 
Stroustrup c++0x overview
Stroustrup c++0x overviewStroustrup c++0x overview
Stroustrup c++0x overviewVaibhav Bajaj
 
Python_Introduction&DataType.pptx
Python_Introduction&DataType.pptxPython_Introduction&DataType.pptx
Python_Introduction&DataType.pptx
HaythamBarakeh1
 
pdx893ff61f-1fb8-4e15-a379-775dfdbcee77-7-14-26-112
pdx893ff61f-1fb8-4e15-a379-775dfdbcee77-7-14-26-112pdx893ff61f-1fb8-4e15-a379-775dfdbcee77-7-14-26-112
pdx893ff61f-1fb8-4e15-a379-775dfdbcee77-7-14-26-112
Thinkful
 

Similar to Python: The Programmer's Lingua Franca (20)

Unit1 pps
Unit1 ppsUnit1 pps
Unit1 pps
 
Python for Delphi Developers - Part 1 Introduction
Python for Delphi Developers - Part 1 IntroductionPython for Delphi Developers - Part 1 Introduction
Python for Delphi Developers - Part 1 Introduction
 
PL Lecture 01 - preliminaries
PL Lecture 01 - preliminariesPL Lecture 01 - preliminaries
PL Lecture 01 - preliminaries
 
Plc part 1
Plc part 1Plc part 1
Plc part 1
 
Introduction_to_Python.pptx
Introduction_to_Python.pptxIntroduction_to_Python.pptx
Introduction_to_Python.pptx
 
Bioinformatics p1-perl-introduction v2013
Bioinformatics p1-perl-introduction v2013Bioinformatics p1-perl-introduction v2013
Bioinformatics p1-perl-introduction v2013
 
Python_Introduction_Good_PPT.pptx
Python_Introduction_Good_PPT.pptxPython_Introduction_Good_PPT.pptx
Python_Introduction_Good_PPT.pptx
 
P1 2018 python
P1 2018 pythonP1 2018 python
P1 2018 python
 
P1 2017 python
P1 2017 pythonP1 2017 python
P1 2017 python
 
Python Tutorials.pptx
Python Tutorials.pptxPython Tutorials.pptx
Python Tutorials.pptx
 
Practical NLP with Lisp
Practical NLP with LispPractical NLP with Lisp
Practical NLP with Lisp
 
Pyhton-1a-Basics.pdf
Pyhton-1a-Basics.pdfPyhton-1a-Basics.pdf
Pyhton-1a-Basics.pdf
 
Intro to Python
Intro to PythonIntro to Python
Intro to Python
 
Functional Programming - Worth the Effort
Functional Programming - Worth the EffortFunctional Programming - Worth the Effort
Functional Programming - Worth the Effort
 
Python and Pytorch tutorial and walkthrough
Python and Pytorch tutorial and walkthroughPython and Pytorch tutorial and walkthrough
Python and Pytorch tutorial and walkthrough
 
2016 bioinformatics i_python_part_1_wim_vancriekinge
2016 bioinformatics i_python_part_1_wim_vancriekinge2016 bioinformatics i_python_part_1_wim_vancriekinge
2016 bioinformatics i_python_part_1_wim_vancriekinge
 
F# Ignite - DNAD2010
F# Ignite - DNAD2010F# Ignite - DNAD2010
F# Ignite - DNAD2010
 
Stroustrup c++0x overview
Stroustrup c++0x overviewStroustrup c++0x overview
Stroustrup c++0x overview
 
Python_Introduction&DataType.pptx
Python_Introduction&DataType.pptxPython_Introduction&DataType.pptx
Python_Introduction&DataType.pptx
 
pdx893ff61f-1fb8-4e15-a379-775dfdbcee77-7-14-26-112
pdx893ff61f-1fb8-4e15-a379-775dfdbcee77-7-14-26-112pdx893ff61f-1fb8-4e15-a379-775dfdbcee77-7-14-26-112
pdx893ff61f-1fb8-4e15-a379-775dfdbcee77-7-14-26-112
 

More from ActiveState

Robust Algorithms for Machine Learning
Robust Algorithms for Machine LearningRobust Algorithms for Machine Learning
Robust Algorithms for Machine Learning
ActiveState
 
TDD Pros & Cons
TDD Pros & ConsTDD Pros & Cons
TDD Pros & Cons
ActiveState
 
ActiveState - The Open Source Languages Company
ActiveState - The Open Source Languages CompanyActiveState - The Open Source Languages Company
ActiveState - The Open Source Languages Company
ActiveState
 
ActiveState Open Source Survey - 2016
ActiveState Open Source Survey - 2016ActiveState Open Source Survey - 2016
ActiveState Open Source Survey - 2016
ActiveState
 
ActiveState Tcl Survey - 2016
ActiveState Tcl Survey - 2016ActiveState Tcl Survey - 2016
ActiveState Tcl Survey - 2016
ActiveState
 
Practical LPeg - Lua Workshop 2016
Practical LPeg - Lua Workshop 2016Practical LPeg - Lua Workshop 2016
Practical LPeg - Lua Workshop 2016
ActiveState
 
Overview of Komodo IDE 10.1
Overview of Komodo IDE 10.1Overview of Komodo IDE 10.1
Overview of Komodo IDE 10.1
ActiveState
 
The ActiveState of Tcl
The ActiveState of TclThe ActiveState of Tcl
The ActiveState of Tcl
ActiveState
 
PERL SURVEY 2016
PERL SURVEY 2016PERL SURVEY 2016
PERL SURVEY 2016
ActiveState
 
Improving Customer Experience Using ActivePerl and ActivePython
Improving Customer Experience Using ActivePerl and ActivePythonImproving Customer Experience Using ActivePerl and ActivePython
Improving Customer Experience Using ActivePerl and ActivePython
ActiveState
 
Continuing Evolution of Perl: Highlights of ActivePerl 5.14
Continuing Evolution of Perl: Highlights of ActivePerl 5.14Continuing Evolution of Perl: Highlights of ActivePerl 5.14
Continuing Evolution of Perl: Highlights of ActivePerl 5.14ActiveState
 
Looking Ahead to Tcl 8.6
Looking Ahead to Tcl 8.6Looking Ahead to Tcl 8.6
Looking Ahead to Tcl 8.6
ActiveState
 
Migrating from matlab to python
Migrating from matlab to pythonMigrating from matlab to python
Migrating from matlab to pythonActiveState
 
US SEC Mandates, Python, and Financial Modeling
US SEC Mandates, Python, and Financial ModelingUS SEC Mandates, Python, and Financial Modeling
US SEC Mandates, Python, and Financial ModelingActiveState
 
ActiveState, CA, Taking quality products to market faster with enterprise rea...
ActiveState, CA, Taking quality products to market faster with enterprise rea...ActiveState, CA, Taking quality products to market faster with enterprise rea...
ActiveState, CA, Taking quality products to market faster with enterprise rea...
ActiveState
 
Keeping up with Perl: Development, Upgrade and Deployment Options for Perl 5.12
Keeping up with Perl: Development, Upgrade and Deployment Options for Perl 5.12Keeping up with Perl: Development, Upgrade and Deployment Options for Perl 5.12
Keeping up with Perl: Development, Upgrade and Deployment Options for Perl 5.12
ActiveState
 
Python & Finance: US Government Mandates, Financial Modeling, and Other Snake...
Python & Finance: US Government Mandates, Financial Modeling, and Other Snake...Python & Finance: US Government Mandates, Financial Modeling, and Other Snake...
Python & Finance: US Government Mandates, Financial Modeling, and Other Snake...
ActiveState
 
Best Practices in Porting & Developing Enterprise Applications to the Cloud u...
Best Practices in Porting & Developing Enterprise Applications to the Cloud u...Best Practices in Porting & Developing Enterprise Applications to the Cloud u...
Best Practices in Porting & Developing Enterprise Applications to the Cloud u...
ActiveState
 
Safeguarding Against the Risks of Improper Open Source Licensing - Valuable...
Safeguarding Against the Risks of Improper Open Source Licensing - Valuable...Safeguarding Against the Risks of Improper Open Source Licensing - Valuable...
Safeguarding Against the Risks of Improper Open Source Licensing - Valuable...
ActiveState
 
Take Quality Products to Market Faster with Enterprise-Ready Dynamic Languages
Take Quality Products to Market Faster with Enterprise-Ready Dynamic LanguagesTake Quality Products to Market Faster with Enterprise-Ready Dynamic Languages
Take Quality Products to Market Faster with Enterprise-Ready Dynamic Languages
ActiveState
 

More from ActiveState (20)

Robust Algorithms for Machine Learning
Robust Algorithms for Machine LearningRobust Algorithms for Machine Learning
Robust Algorithms for Machine Learning
 
TDD Pros & Cons
TDD Pros & ConsTDD Pros & Cons
TDD Pros & Cons
 
ActiveState - The Open Source Languages Company
ActiveState - The Open Source Languages CompanyActiveState - The Open Source Languages Company
ActiveState - The Open Source Languages Company
 
ActiveState Open Source Survey - 2016
ActiveState Open Source Survey - 2016ActiveState Open Source Survey - 2016
ActiveState Open Source Survey - 2016
 
ActiveState Tcl Survey - 2016
ActiveState Tcl Survey - 2016ActiveState Tcl Survey - 2016
ActiveState Tcl Survey - 2016
 
Practical LPeg - Lua Workshop 2016
Practical LPeg - Lua Workshop 2016Practical LPeg - Lua Workshop 2016
Practical LPeg - Lua Workshop 2016
 
Overview of Komodo IDE 10.1
Overview of Komodo IDE 10.1Overview of Komodo IDE 10.1
Overview of Komodo IDE 10.1
 
The ActiveState of Tcl
The ActiveState of TclThe ActiveState of Tcl
The ActiveState of Tcl
 
PERL SURVEY 2016
PERL SURVEY 2016PERL SURVEY 2016
PERL SURVEY 2016
 
Improving Customer Experience Using ActivePerl and ActivePython
Improving Customer Experience Using ActivePerl and ActivePythonImproving Customer Experience Using ActivePerl and ActivePython
Improving Customer Experience Using ActivePerl and ActivePython
 
Continuing Evolution of Perl: Highlights of ActivePerl 5.14
Continuing Evolution of Perl: Highlights of ActivePerl 5.14Continuing Evolution of Perl: Highlights of ActivePerl 5.14
Continuing Evolution of Perl: Highlights of ActivePerl 5.14
 
Looking Ahead to Tcl 8.6
Looking Ahead to Tcl 8.6Looking Ahead to Tcl 8.6
Looking Ahead to Tcl 8.6
 
Migrating from matlab to python
Migrating from matlab to pythonMigrating from matlab to python
Migrating from matlab to python
 
US SEC Mandates, Python, and Financial Modeling
US SEC Mandates, Python, and Financial ModelingUS SEC Mandates, Python, and Financial Modeling
US SEC Mandates, Python, and Financial Modeling
 
ActiveState, CA, Taking quality products to market faster with enterprise rea...
ActiveState, CA, Taking quality products to market faster with enterprise rea...ActiveState, CA, Taking quality products to market faster with enterprise rea...
ActiveState, CA, Taking quality products to market faster with enterprise rea...
 
Keeping up with Perl: Development, Upgrade and Deployment Options for Perl 5.12
Keeping up with Perl: Development, Upgrade and Deployment Options for Perl 5.12Keeping up with Perl: Development, Upgrade and Deployment Options for Perl 5.12
Keeping up with Perl: Development, Upgrade and Deployment Options for Perl 5.12
 
Python & Finance: US Government Mandates, Financial Modeling, and Other Snake...
Python & Finance: US Government Mandates, Financial Modeling, and Other Snake...Python & Finance: US Government Mandates, Financial Modeling, and Other Snake...
Python & Finance: US Government Mandates, Financial Modeling, and Other Snake...
 
Best Practices in Porting & Developing Enterprise Applications to the Cloud u...
Best Practices in Porting & Developing Enterprise Applications to the Cloud u...Best Practices in Porting & Developing Enterprise Applications to the Cloud u...
Best Practices in Porting & Developing Enterprise Applications to the Cloud u...
 
Safeguarding Against the Risks of Improper Open Source Licensing - Valuable...
Safeguarding Against the Risks of Improper Open Source Licensing - Valuable...Safeguarding Against the Risks of Improper Open Source Licensing - Valuable...
Safeguarding Against the Risks of Improper Open Source Licensing - Valuable...
 
Take Quality Products to Market Faster with Enterprise-Ready Dynamic Languages
Take Quality Products to Market Faster with Enterprise-Ready Dynamic LanguagesTake Quality Products to Market Faster with Enterprise-Ready Dynamic Languages
Take Quality Products to Market Faster with Enterprise-Ready Dynamic Languages
 

Recently uploaded

Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 

Recently uploaded (20)

Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 

Python: The Programmer's Lingua Franca

  • 1. Python: The Programmer’s Lingua Franca Using Python to build bridges between technologies, businesses and people
  • 2. What we'll talk about • What is a lingua franca? • Why the industry needs one • Acmeism – the Ingy approach • Past and current examples: BASIC, C, and Java • Why Python is better • TPSL: Teaching Python as a Second (or third or fourth) Language • Getting past the barriers
  • 3. What is a lingua franca? “a language systematically used to make communication possible between people not sharing a mother tongue, in particular when it is a third language, distinct from both mother tongues.” -- Wikipedia • The original “Lingua Franca” was an amalgam of languages – Made up of Italian, Arabic, French, Greek, Portuguese, Spanish and Turkish. – Used in the Mediterranean during the Rennaissance • English functions as the de facto modern lingua franca – For international business, aviation, science and technology – Integrates words from other languages • English doesn't fit the strict definition – It is often the mother tongue of at least one party... – but this example is closer to what we'll talk about
  • 4. Why do we need one for programming? • So many languages – more than 2500 in all (“The Language List” Bill Kinnersley) – if you just include popular ones, you still can't learn them all • Programmers need a vehicle to express concepts to one another • Programs need a vehicle to interact with one another – open data formats – standard protocols – an API everyone can use
  • 5. What this audience reported: Number of Languages in Organization 5% 14% 27% 1 language 2 languages 3 languages 4 or more languages Unknown or no answer 18% 37%
  • 6. Ingy döt Net • Inventor of YAML • Leader in the Perl Community • 100+ CPAN modules • Several PyPI Modules • Old and New “Activator” • Acmeist • Currently travelling around Europe
  • 7. Acmeism • A different path to mutual comprehension • Ideas (modules) need to be shared across all language boundaries • Build technology that is programming language independent – YAML – data serialization for many programming languages – C'Dent - Acmeist Module Language – Pegex - Acmeist Parser for creating new languages – TestML - Acmeist Unit test language (like FIT)
  • 8. Other programming lingua francas • BASIC – Used to be everywhere, code samples in math and science textbooks – Many first generation micro-computer hackers started with this language • C – Widely used and part of most comp-sci programs – Most experienced programmers are familiar with it – Lower-level language • Java – Extremely popular, cross-platform, also widely taught – Very verbose – Open source (GPL) only since 2007 (c.f. Apache Harmony)
  • 9. ... used by this audience Language Used to Describe Programming Ideas 15% 14% 14% C Java Python Other No answer 13% 43%
  • 10. Why Python is better • Free • Easy to read – Syntax (specifically indentation) enforces sane visual block structure – Concise, high-level interpreted language • Easy to learn – Excellent documentation and tutorials – Numerous training resources • Increasingly popular – Adopted by important organizations: Google, NASA, Disney, Sony, SEC
  • 11. Comparisons Which language is most readable and concise? – Example code adapted from http://www.dmh2000.com/cjpr/ – Using object oriented C++ instead of C to be more fair
  • 12. C++ #include <iostream> #include <sstream> #include <string> #include <vector> using namespace std; template<class T> class RedBlackTree { private: static const int red = 0; static const int black = 1; int m_color; T m_val; RedBlackTree *m_left; RedBlackTree *m_right; RedBlackTree(RedBlackTree *b) { m_val = b->m_val; m_left = b->m_left; m_right = b->m_right; m_color = red; } public: RedBlackTree(T x) { m_val = x; m_left = 0; m_right = 0; m_color = red; } const RedBlackTree *find(const T &key) const { const RedBlackTree *result = 0; if (key == m_val) { result = this; } else if (key < m_val) { if (m_left != 0) { result = m_left->find(key); } } else { if (m_right != 0) { result = m_right->find(key); } } return result; } };
  • 13. Java import java.util.*; public class RedBlackTree<T extends Comparable<T>> { public static final int red = 0; public static final int black = 1; private int __color; private T __val; private RedBlackTree<T> __left; private RedBlackTree<T> __right; private RedBlackTree(RedBlackTree<T> b) { __val = b.__val; __left = b.__left; __right = b.__right; __color = red; } public RedBlackTree(T x) { __val = x; __left = null; __right = null; __color = red; } public RedBlackTree<T> find(T key) { RedBlackTree<T> result = null; if (key == __val) { result = this; } else if (key.compareTo(__val) < 0) { if (__left != null) { result = __left.find(key); } } else { if (__right != null) { result = __right.find(key); } } return result; } }
  • 14. Python class RedBlackTree: red, black = range(2) def __init__(self, val=None): self.left = None self.right = None self.val = val self.color = RedBlackTree.red def find(self, key): result = None if (key == self.val): result = self elif (key < self.val): if (self.left != None): result = self.left.find(key) else: if (self.right != None): result = self.right.find(key) return result
  • 15. Integration with other languages • Python libraries are commonly written in C or C++ when performance is a consideration • You can use other languages in Python, and Python in other languages – Inline, PyInline, Inline::Python etc. • More projects integrating Python with other programming languages: – Bridges for C/C++, Java, C#/.NET, PHP, Perl, and more ... and databases • Commercial / enterprise: Oracle, SQL Server, DB2, SAP DB, Sybase • Open source: MySQL, PostgreSQL, SQLite, redis, MongoDB
  • 16. Alternative Python interpreters Python is an open source language, implementations of Python are not controlled by a single commercial entity, as was case with Java and is the case with C#. – Important for avoiding vendor lock-in – PSF license is very permissive This encourages innovation and allows for alternative implementations: – Jython: implemented in Java – Stackless Python: CPython variant – unladen-swallow: Google project for a faster Python – Iron Python: for the .NET Framework – PyPy: also focussing on speed and efficiency
  • 17. Python as a Second Language • What makes it easier to read also makes it easier to learn • Many programmers come to Python from other languages – lots of resources (Python wiki) for those switching – “Learning Python” by Mark Lutz and David Ascher – Ingy's anecdotal evidence • Non-English tutorials and documentation – http://wiki.python.org/moin/Languages – there's even a Python tutorial in Esperanto!
  • 18. How ActiveState can help Resources for developer-led initiatives to introduce and expand Python usage in your organization • Commercial support and indemnification • Quality assured, vendor-backed builds • Python training from the best in the field • Development advice • code.activestate.com • PyPM Index • Recipes • Komodo Edit and IDE
  • 19. Python in the cloud Cloud application platform for Python and many others languages – not a Platform as a Service... it's for creating your own – based on Cloud Foundry – we've added Python support and a lot more – supports multiple languages: Python, Perl, Ruby, Node.js, Java... – all the Python web frameworks: Django, Bottle, Flask, Pyramid – ... via WSGI – deploy new applications or migrate existing ones – http://activestate.com/cloud
  • 21. Thank You! Troy Topnik: troyt@activestate.com Ingy döt Net: ingy@activestate.com www.acmeism.org Speak to a representative about ActivePython or Python training: 1-866-510-2914 business-solutions@activestate.com www.activestate.com