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

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Último (20)

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
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 

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