7. Simple enough for non-programmers, capable enough for programmers print File.read("foo.txt") name = "Jimmy" [1,2,3].each do |i| puts i end class Foo defmethod_missing(m) puts "called: #{m}" end end Foo.new.dfhajsdhfl "-" * 79 a.downcaserescue "No name"
9. “Python, like many good technologies, soon spreads virally throughout your development team and finds its way into all sorts of applications and tools…Python scripts are used in many areas of the game.” Mustafa Thamer Civilization IV development team
16. Keep it Simple Python Ruby def fact n return 1 if n == 0 n * fact(n-1) end puts fact 13 def fact(n): if n == 0: return 1 return n * fact(n-1) print fact(13) C# using System; public class MathClass { public static int Factorial(int n) { if (n == 0) return 1; return n * Factorial(n – 1); } public static void Main(string[] args) { Console.WriteLine(Factorial(13)); } }
17. Ecosystem exchange .NET gets Python and Ruby world, and Ruby/Python gets .NET world Ruby on Rails/Django/RSpec/etc on .NET Scripting the .NET framework Driving .NET code from scripts for testing, exploration, etc. DSL-like characteristics Hosting In-Application extensibility / customization Treating code as data (or configuration) Discussion on best practices
18. Scripting the .NET framework Driving .NET code from scripts Domain-specific languages Compiler Geek-Out High-level discussion on how compilers work and what the DLR does. Hosting In-Application extensibility / customization Treating code as data (or configuration) Discussion on best practices
32. Dynamic Language Runtime Infrastructure for creating languages Focus on dynamic compiler back-end. Dynamic-lookup protocol DynamicObject: shared protocol between languages Lightweight hosting API One API for all DLR languages
40. Hosting best-practices Store scripts where you want with PlatformAdaptationLayer Makes script file-system operations use database, source-control, whatever … Pick isolation level for scripts In-App-Domain: you totally control Out-App-Domain: limit permission level Out of process: total isolation
41. Project Status IronRubyis working towards 1.9 compat – Rails 3, FFI, static type system integration IronPythonworking towards 2.7/3.0 compat – Django, IronClad, and other libraries. Tooling IronRuby Gems/Rake support Debugging w/REPL Fully open source Contributions welcome!
42. How you can participate Use it at your company, and tell us about it! Ask the mailing lists and stackoverflow for help Log any bugs you find Contributing to the project Even if you’re not a compiler hacker … but hackers welcome! samples, documentation, blogs, and talks are all welcome also
43. ironruby.netIronRuby website & download ironpython.netIronPython website & downloaddlr.codeplex.comDLR documentation for hosters and language developersjimmy.schementi.comme