InfoQ Homepage Metaprogramming Content on InfoQ
-
Presentation: Business Natural Languages Development in Ruby
In this presentation, Jay Fields introduces his concept of Business Natural Languages (BNL). BNLs are a type of Domain Specific Language, designed to be readable by any subject matter expert, which allows to create maintainable specifications and documentation. The example languages are implemented using Ruby.
-
Should you really learn another language?
Blogger Gustavo Duarte cursed in church when he said that learning new programming languages is often a waste of time. He said that "In reality learning a new language is a gritty business in which most of the effort is spent on low-value tasks with poor return on time invested.". But not everyone agreed.
-
MountainWest RubyConf 2008 Videos
The videos from MountainWest RubyConf 2008 are all available for downloading from the Confreaks website. We selected a few videos and provide an overview and some entry points into the talks.
-
Article: Building Domain Specific Languages on the CLR
Ayende Rahien describes how to build internal DSLs on the CLR. He compares different .NET languages as suitable host languages for DSLs and presents Boo as an ideal candidate due to its meta programming facilities, flexibility, and performance.
-
Using JRuby to generate Code for the JVM
While JRuby's performance keeps increasing, there are still algorithms that are faster if implemented in Java. We look at different approaches to solve this: RubyInline for JRuby, generating bytecode with a JRuby DSL and a new subset of Ruby called Duby.
-
Using ParseTree for LINQ-style queries and extracting metadata
Whether it's LISP macros or LINQ's expression trees - access to the AST of code is a powerful tool. We look at how ParseTree allows this in Ruby - and how it's being used in libraries like Ambition, Sequel and the web framework Merb.
-
Ruby 1.9 - When Will It be Production Ready
Ruby 1.9 is out - but it's not yet intended to be used in production systems. The release tag had one effect: more developers are actually giving it a spin and try to run their applications and libraries and update them for the new version. We looked at how well Ruby 1.9 fares in this aspect.
-
InfoQ Presentation: MetaProgramming Ruby
InfoQ presents a video of Dave Thomas' QCon London presentation "MetaProgramming Ruby". Dave presents the basic Ruby language features for implementing Ruby on Rails features such as has_many. Class methods, open classes, Mixins, and more tools for metaprogramming are demonstrated and explained.
-
Article: Using Singleton Classes for Object Metadata
We have another feature article to publish by InfoQ's own Werner Schuster where he elegantly explains a way to annotate object graph with metadata to solve complex problems.
-
Ruby Shoes for lightweight GUIs, graphics and animation
Ruby GUI toolkits are a dime dozen - but Why The Lucky Stiff managed to create one with a novel approach. Ruby Shoes facilitates animation, 2D graphics, and simple interaction. We take a look at its distinguishing features.
-
Three approaches to JRuby GUI APIs
Ruby already has a host of bindings for various GUI toolkits. JRuby now allows the use of Java's Swing and there are already a few libraries trying to make Swing less tedious to work with. We look at the approaches taken in Profligacy, Cheri, and the JavaFX Script clone Swiby.
-
JMX the Ruby way with jmx4r
Monitoring JVMs just became easier with jmx4r, a library that allows to easily access JMX MBeans with JRuby. If used from jirb, the interactive Ruby shell, this even allows to automate bulk changes or queries.
-
Aaron Erickson on LINQ and i4o
In an interview with InfoQ, Aaron Erickson introduces his new LINQ extension Indexes for Objects (i4o). Indexes for Objects allows for fast lookup against in-memory collections while retaining the LINQ syntax and semantics. He also discusses how expression trees interact with LINQ and how they can be leveraged in other scenarios.
-
What's a Ruby DSL and what isn't?
"Domain Specific Language" (DSL) is a popular buzzword in the Ruby community. Recently, however, doubts about the use of the term arose, particularly because it tends to be used even for ordinary APIs, simply because Ruby allows to omit parentheses. We look at some of the style debates.
-
Edit Expression Trees with MetaLinq
In the current implementation of .NET 3.5, expression trees are immutable. Developers wishing to edit one have to manually build new expressions by copying existing ones. Aaron Erickson's MetaLinq allows developers to side-step this by providing a way to convert expression trees into mutable representations and back again.