SlideShare uma empresa Scribd logo
1 de 19
Open Source .NET
IronPython, the DLR, and your toolkit
Agenda
Introductions
IronPython, the DLR, and open source in the
  .NET world
The Big Demo: Embedding IronPython in C#
Why do this?
Conclusions
The Presentation Stack
Dell Mini 9
GNU/Linux Kernel 2.6.28
Ubuntu Linux 9.04 (“Jaunty”)
Mono 2.4 (includes C# 3.0 support)
IronPython 1.1.1 (approximates CPython 2.6)
About your host
Christopher Groskopf    Gainfully employed at
chris@onyxfish.com       Cal Poly

Ten years programming   Payroll Systems
  experience (two years  Analyst—tools
  paying the bills)      development,
                         systems integration,
Mostly Python, C#, and   and automation
  C/C++
                        Bootstrapping:
Linux, Windows, and      Onyxfish
  ARM embedded
Credit where credit is due
This presentation is loosely based on one by
 Michael Foord—IronPython guru with Resolver
 Systems and author of IronPython in Action.
His site: www.voidspace.org.uk
His book: www.ironpythoninaction.com
Resolver One, an application he works on, is the
 largest application written in IronPython:
 190,000 lines of code (including tests).
The XKCD Argument for Python
The evidence
Duck typing
Flexible syntax
Designed to be read
Defined style conventions
Libraries for everything (batteries included)
Tons of liberally licensed code available
Runs everywhere (C, Jython, PyPy, IronPython)
Fanatical user-base (has a philosophy)
One example
# Updates the last modified time on all Python
# scripts in the current working directory.
import glob
import os

py_fnames = glob.glob('*.py')

paths = [os.path.abspath(f) for f in py_fnames]

for path in paths:
   os.utime(path, None)

print 'Touched %i files' % len(paths)
Why IronPython?




Everything great about Python,
   plus the .NET Libraries.
So how does it work?
Get the DLR: www.codeplex.com/dlr
Get IronPython: www.codeplex.com/IronPython
The DLR allows you to host dynamic languages
 on .NET
Not just Python: also Boo, Lua, Ruby, Scheme
 and others (or roll your own)
The DLR is now maintained by Microsoft and will
 be shipped with the CLR with .NET 4.0
Demo Time!
When to use IronPython?
Line-of-business application development
Prototyping
As a rules/logic definition language for a large
 .NET application (games!)
As a plugin language for end-user development
To provide a console interface to an application
Because your bored and making programming
 fun gives your life meaning again
How does Mono fit in?



       IronPython + The DLR + Mono =
Fully open-source, cross-platform .NET stack

                  (Woot!)
Keep in mind that...
C# 4.0 introduces the 'dynamic' keyword, which
 brings dynamic programming functionality to C#
 and provides native interoperability with DLR
 languages
IronPython is now being supported and
  maintained by an internal Microsoft team
IronPython fills a crucial niche in Microsoft's
  cadre of supported development languages
And most importantly...
The future is language independent
For new applications, language selection doesn't
 matter that much
Library support matters
Documentation matters
Readability matters
Interoperability matters a lot
Choosing a flexible language saves time, money,
 and sanity
In conclusion...
Python =
One more thing!

              th
Effective July 7 both C# and the CLI are covered
       by the Microsoft Community Promise.

           NO MORE PATENT FUD

You're cross-platform Mono/.NET applications are
   now unquestionably and irrevocably legal.

        (We really can all live together!)
Links / Questions?
My Company: www.onyxfish.com
My Blog (for these slides): www.etlafins.com
Python: www.python.org
IronPython: www.codeplex.com/IronPython
DLR: www.codeplex.com/dlr
Michael Foord: www.voidspace.org.uk
Mono: www.mono-project.com
Ubuntu: www.ubuntu.com

Mais conteúdo relacionado

Mais procurados

How to integrate python into a scala stack
How to integrate python into a scala stackHow to integrate python into a scala stack
How to integrate python into a scala stack
Fliptop
 
Mixed-language Python/C++ debugging with Python Tools for Visual Studio- Pave...
Mixed-language Python/C++ debugging with Python Tools for Visual Studio- Pave...Mixed-language Python/C++ debugging with Python Tools for Visual Studio- Pave...
Mixed-language Python/C++ debugging with Python Tools for Visual Studio- Pave...
PyData
 

Mais procurados (20)

How to integrate python into a scala stack
How to integrate python into a scala stackHow to integrate python into a scala stack
How to integrate python into a scala stack
 
C++ vs python the best ever comparison
C++ vs python the best ever comparison C++ vs python the best ever comparison
C++ vs python the best ever comparison
 
Python for Delphi Developers - Part 2
Python for Delphi Developers - Part 2Python for Delphi Developers - Part 2
Python for Delphi Developers - Part 2
 
Porting To Symbian
Porting To SymbianPorting To Symbian
Porting To Symbian
 
Ry pyconjp2015 karaoke
Ry pyconjp2015 karaokeRy pyconjp2015 karaoke
Ry pyconjp2015 karaoke
 
Intoroduction of py7zr
Intoroduction of py7zrIntoroduction of py7zr
Intoroduction of py7zr
 
Python Tutorial Part 2
Python Tutorial Part 2Python Tutorial Part 2
Python Tutorial Part 2
 
Python for Application Integration and Development
Python for Application Integration and DevelopmentPython for Application Integration and Development
Python for Application Integration and Development
 
Mixed-language Python/C++ debugging with Python Tools for Visual Studio- Pave...
Mixed-language Python/C++ debugging with Python Tools for Visual Studio- Pave...Mixed-language Python/C++ debugging with Python Tools for Visual Studio- Pave...
Mixed-language Python/C++ debugging with Python Tools for Visual Studio- Pave...
 
Python final ppt
Python final pptPython final ppt
Python final ppt
 
Pythonic doesn't mean slow!
Pythonic doesn't mean slow!Pythonic doesn't mean slow!
Pythonic doesn't mean slow!
 
A Python Tutorial
A Python TutorialA Python Tutorial
A Python Tutorial
 
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...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...
 
Getting started with Linux and Python by Caffe
Getting started with Linux and Python by CaffeGetting started with Linux and Python by Caffe
Getting started with Linux and Python by Caffe
 
python for linguists
python for linguistspython for linguists
python for linguists
 
Understanding Coroutine
Understanding CoroutineUnderstanding Coroutine
Understanding Coroutine
 
Introduction to Python Programing
Introduction to Python ProgramingIntroduction to Python Programing
Introduction to Python Programing
 
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
 
The Onward Journey: Porting Twisted to Python 3
The Onward Journey: Porting Twisted to Python 3The Onward Journey: Porting Twisted to Python 3
The Onward Journey: Porting Twisted to Python 3
 
Seattle useR Group - R + Scala
Seattle useR Group - R + ScalaSeattle useR Group - R + Scala
Seattle useR Group - R + Scala
 

Destaque

Python with dot net and vs2010
Python with dot net and vs2010Python with dot net and vs2010
Python with dot net and vs2010
Wei Sun
 
Python Tools for Visual Studio: Python na Microsoftovom .NET-u
Python Tools for Visual Studio: Python na Microsoftovom .NET-uPython Tools for Visual Studio: Python na Microsoftovom .NET-u
Python Tools for Visual Studio: Python na Microsoftovom .NET-u
Nikola Plejic
 

Destaque (9)

PyCon 2011: IronPython Command Line
PyCon 2011:  IronPython Command LinePyCon 2011:  IronPython Command Line
PyCon 2011: IronPython Command Line
 
Python with dot net and vs2010
Python with dot net and vs2010Python with dot net and vs2010
Python with dot net and vs2010
 
IronPython and Dynamic Languages on .NET by Mahesh Prakriya
 IronPython and Dynamic Languages on .NET by Mahesh Prakriya IronPython and Dynamic Languages on .NET by Mahesh Prakriya
IronPython and Dynamic Languages on .NET by Mahesh Prakriya
 
Dynamic programming on .net
Dynamic programming on .netDynamic programming on .net
Dynamic programming on .net
 
Python 101 For The Net Developer
Python 101 For The Net DeveloperPython 101 For The Net Developer
Python 101 For The Net Developer
 
The .NET developer's introduction to IronPython
The .NET developer's introduction to IronPythonThe .NET developer's introduction to IronPython
The .NET developer's introduction to IronPython
 
SyPy IronPython
SyPy IronPythonSyPy IronPython
SyPy IronPython
 
Python Tools for Visual Studio: Python na Microsoftovom .NET-u
Python Tools for Visual Studio: Python na Microsoftovom .NET-uPython Tools for Visual Studio: Python na Microsoftovom .NET-u
Python Tools for Visual Studio: Python na Microsoftovom .NET-u
 
Introduction to Python
Introduction to PythonIntroduction to Python
Introduction to Python
 

Semelhante a Open Source .NET

Python Programming Unit1_Aditya College of Engg & Tech
Python Programming Unit1_Aditya College of Engg & TechPython Programming Unit1_Aditya College of Engg & Tech
Python Programming Unit1_Aditya College of Engg & Tech
Ramanamurthy Banda
 
session5-Getting stated with Python.pdf
session5-Getting stated with Python.pdfsession5-Getting stated with Python.pdf
session5-Getting stated with Python.pdf
AyushDutta32
 
The main Python implementation, named CPython, is written in C meeti.pdf
The main Python implementation, named CPython, is written in C meeti.pdfThe main Python implementation, named CPython, is written in C meeti.pdf
The main Python implementation, named CPython, is written in C meeti.pdf
anudamobileshopee
 

Semelhante a Open Source .NET (20)

Cmpe202 01 Research
Cmpe202 01 ResearchCmpe202 01 Research
Cmpe202 01 Research
 
Python_final_print_batch_II_vision_academy.pdf
Python_final_print_batch_II_vision_academy.pdfPython_final_print_batch_II_vision_academy.pdf
Python_final_print_batch_II_vision_academy.pdf
 
Python_final_print_batch_II_vision_academy (1).pdf
Python_final_print_batch_II_vision_academy (1).pdfPython_final_print_batch_II_vision_academy (1).pdf
Python_final_print_batch_II_vision_academy (1).pdf
 
Python_final_print_batch_II_vision_academy.pdf
Python_final_print_batch_II_vision_academy.pdfPython_final_print_batch_II_vision_academy.pdf
Python_final_print_batch_II_vision_academy.pdf
 
Python_vision_academy notes
Python_vision_academy notes Python_vision_academy notes
Python_vision_academy notes
 
Introduction to Python
Introduction to PythonIntroduction to Python
Introduction to Python
 
Python | What is Python | History of Python | Python Tutorial
Python | What is Python | History of Python | Python TutorialPython | What is Python | History of Python | Python Tutorial
Python | What is Python | History of Python | Python Tutorial
 
Python_final_print_vison_academy_9822506209.pdf
Python_final_print_vison_academy_9822506209.pdfPython_final_print_vison_academy_9822506209.pdf
Python_final_print_vison_academy_9822506209.pdf
 
Python Programming Unit1_Aditya College of Engg & Tech
Python Programming Unit1_Aditya College of Engg & TechPython Programming Unit1_Aditya College of Engg & Tech
Python Programming Unit1_Aditya College of Engg & Tech
 
session5-Getting stated with Python.pdf
session5-Getting stated with Python.pdfsession5-Getting stated with Python.pdf
session5-Getting stated with Python.pdf
 
Evolution of programming languages
Evolution of programming languagesEvolution of programming languages
Evolution of programming languages
 
Introduction to Python.pptx
Introduction to Python.pptxIntroduction to Python.pptx
Introduction to Python.pptx
 
Introduction To Python
Introduction To PythonIntroduction To Python
Introduction To Python
 
Python: the secret weapon of Fedora - FLISoL 2015
Python: the secret weapon of Fedora - FLISoL 2015Python: the secret weapon of Fedora - FLISoL 2015
Python: the secret weapon of Fedora - FLISoL 2015
 
Python tutorial
Python tutorialPython tutorial
Python tutorial
 
Python Class 1
Python Class 1Python Class 1
Python Class 1
 
Getting Started with Python
Getting Started with PythonGetting Started with Python
Getting Started with Python
 
The main Python implementation, named CPython, is written in C meeti.pdf
The main Python implementation, named CPython, is written in C meeti.pdfThe main Python implementation, named CPython, is written in C meeti.pdf
The main Python implementation, named CPython, is written in C meeti.pdf
 
Python Training in Pune - Ethans Tech Pune
Python Training in Pune - Ethans Tech PunePython Training in Pune - Ethans Tech Pune
Python Training in Pune - Ethans Tech Pune
 
PyTorch for Delphi - Python Data Sciences Libraries.pdf
PyTorch for Delphi - Python Data Sciences Libraries.pdfPyTorch for Delphi - Python Data Sciences Libraries.pdf
PyTorch for Delphi - Python Data Sciences Libraries.pdf
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Último (20)

Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 

Open Source .NET

  • 1. Open Source .NET IronPython, the DLR, and your toolkit
  • 2. Agenda Introductions IronPython, the DLR, and open source in the .NET world The Big Demo: Embedding IronPython in C# Why do this? Conclusions
  • 3. The Presentation Stack Dell Mini 9 GNU/Linux Kernel 2.6.28 Ubuntu Linux 9.04 (“Jaunty”) Mono 2.4 (includes C# 3.0 support) IronPython 1.1.1 (approximates CPython 2.6)
  • 4. About your host Christopher Groskopf Gainfully employed at chris@onyxfish.com Cal Poly Ten years programming Payroll Systems experience (two years Analyst—tools paying the bills) development, systems integration, Mostly Python, C#, and and automation C/C++ Bootstrapping: Linux, Windows, and Onyxfish ARM embedded
  • 5. Credit where credit is due This presentation is loosely based on one by Michael Foord—IronPython guru with Resolver Systems and author of IronPython in Action. His site: www.voidspace.org.uk His book: www.ironpythoninaction.com Resolver One, an application he works on, is the largest application written in IronPython: 190,000 lines of code (including tests).
  • 6. The XKCD Argument for Python
  • 7. The evidence Duck typing Flexible syntax Designed to be read Defined style conventions Libraries for everything (batteries included) Tons of liberally licensed code available Runs everywhere (C, Jython, PyPy, IronPython) Fanatical user-base (has a philosophy)
  • 8. One example # Updates the last modified time on all Python # scripts in the current working directory. import glob import os py_fnames = glob.glob('*.py') paths = [os.path.abspath(f) for f in py_fnames] for path in paths: os.utime(path, None) print 'Touched %i files' % len(paths)
  • 9. Why IronPython? Everything great about Python, plus the .NET Libraries.
  • 10. So how does it work? Get the DLR: www.codeplex.com/dlr Get IronPython: www.codeplex.com/IronPython The DLR allows you to host dynamic languages on .NET Not just Python: also Boo, Lua, Ruby, Scheme and others (or roll your own) The DLR is now maintained by Microsoft and will be shipped with the CLR with .NET 4.0
  • 12. When to use IronPython? Line-of-business application development Prototyping As a rules/logic definition language for a large .NET application (games!) As a plugin language for end-user development To provide a console interface to an application Because your bored and making programming fun gives your life meaning again
  • 13. How does Mono fit in? IronPython + The DLR + Mono = Fully open-source, cross-platform .NET stack (Woot!)
  • 14. Keep in mind that... C# 4.0 introduces the 'dynamic' keyword, which brings dynamic programming functionality to C# and provides native interoperability with DLR languages IronPython is now being supported and maintained by an internal Microsoft team IronPython fills a crucial niche in Microsoft's cadre of supported development languages And most importantly...
  • 15. The future is language independent For new applications, language selection doesn't matter that much Library support matters Documentation matters Readability matters Interoperability matters a lot Choosing a flexible language saves time, money, and sanity
  • 18. One more thing! th Effective July 7 both C# and the CLI are covered by the Microsoft Community Promise. NO MORE PATENT FUD You're cross-platform Mono/.NET applications are now unquestionably and irrevocably legal. (We really can all live together!)
  • 19. Links / Questions? My Company: www.onyxfish.com My Blog (for these slides): www.etlafins.com Python: www.python.org IronPython: www.codeplex.com/IronPython DLR: www.codeplex.com/dlr Michael Foord: www.voidspace.org.uk Mono: www.mono-project.com Ubuntu: www.ubuntu.com