The Not Python Edition: Ioke, Cobra and IronRuby
In this IronPython-URLs entry we look at four different topics on three languages; none of them Python - but all on .NET.
Ioke is a dynamic language created by Ola Bini, one of the core developers of JRuby (Ruby on the JVM). Ioke aims to be a highly expressive language, influenced by Io, Smalltalk, Lisp and Ruby. The primary implementation of Ioke runs on the JVM; but Ola recently unveiled the .NET (and Mono) implementation: Ioke for the CLR:
Ben Hall is a UK developer working for Red Gate. In this article Ben demonstrates creating a new generator for SQL Data Generator which allows the user to define the data to be generated based on IronRuby code. The article includes the source code and binaries for the SQL Data Generator example generator which you can start using within your project:
Ioke is a dynamic language created by Ola Bini, one of the core developers of JRuby (Ruby on the JVM). Ioke aims to be a highly expressive language, influenced by Io, Smalltalk, Lisp and Ruby. The primary implementation of Ioke runs on the JVM; but Ola recently unveiled the .NET (and Mono) implementation: Ioke for the CLR:
Ioke E ikc is the first release of the ikc Ioke machine. The ikc machine is implemented in C# and F# and run’s on Mono and .NET. It includes all the features of Ioke E ikj, except for Java integration. Integration with .NET types will come in another release.Cobra is a .NET programming language, with Python inspired syntax, dynamic and static binding and first class support for unit tests and contracts. Several updates since I last reported on Cobra. These updates include many new language featuress and documentation improvements.
There are several interesting pieces in ikc. Among them I can mention a new regular expression engine (called NRegex), a port of many parts of gnu.math, providing arbitrary precision math, and also an implementation of BigDecimal in C#.
Ben Hall is a UK developer working for Red Gate. In this article Ben demonstrates creating a new generator for SQL Data Generator which allows the user to define the data to be generated based on IronRuby code. The article includes the source code and binaries for the SQL Data Generator example generator which you can start using within your project:
You can embed DLR-based languages such as IronPython and IronRuby into applications. This gives you instant scripting, and with it, the potential for greatly simplifying the development process. You can even take advantage of existing applications that have a plug-in architecture, such as SQL Data Generator and .NET Reflector. Ben Hall takes SQL Data Generator and shows how this technique allows you to create simple generators specifically for your needs.ASP.NET MVC is .NET's belated answer to web application frameworks like Django and Rails. Phil Haack is one of the core developers, and this entry he explores one of the ways that dynamic languages based on the DLR can be used with ASP.NET MVC - specifically IronRuby.
What if you could write all your business logic and controller logic in your language of choice, but have your views written in a light weight scripting language. If my web application were to host a scripting engine, I could actually store the code in any medium I want, such as the database. Having them in the database makes it very easy for end users to modify it since it wouldn’t require file upload permissions into the web root.
This is where hosting the DLR is a nice fit. I put together a proof of concept for these ideas. This is just a prototype intended to show how such a workflow might work.
It’s too bad Io has an implicit non-overridable “asBoolean” method in the Object base class. That’s a mistake… the same one Ruby and Perl made. Only Smalltalk gets that right.
ReplyDeleteit’d be ok if I could at least override “asBoolean” for my classes as far as ifTrue: and ifFalse: are concerned, but no. Io has its own idea, and that’s that. And I can’t even get it to throw a “must be boolean” error instead. Sigh. So close, and yet so far away.
Does Ioke make the same mistake?