InfoQ Homepage Programming Content on InfoQ
-
Rubinius: Inside the Bytecode Compiler and Foreign Function Interface
Modifying the Rubinius VM is simple as two new articles show. We look at how to modify and extend the Rubinius bytecode compiler - written in Ruby - and how to work on the library using the foreign function interface (ffi).
-
What Makes a Tool Agile?
Individuals and interactions over processes and tools is the very first of the values of the Agile Manifesto. Tools, however, seem to be a big part of development on most Agile teams. When does a tool help and when does it hinder (Agile) software development?
-
Moving away from exclusive use of OOP and Curly Brace Languages to reduce code waste?
According to Bob Warfield, at least 70% of code is wasted because it’s written to build components which would add no competitive differentiation to the final product. To reduce this "waste", programmers should practice code reuse instead of repeatedly building the same components. However, to facilitate code reuse it is necessary to move away from exclusive use of OOP and Curly Brace Languages.
-
The Dark Side of Closures
Closures are not a new concept and in LINQ have proven to be incredibly useful. But they do have a dark side when used to break encapsulation. When two seemingly independent functions are tied together, unexpected results can occur.
-
Getting started with Rubinius development
Rubinius is quickly gathering interest and is coming close to full Ruby support. We take a look at Rubinius development, what to check out and where to start.
-
Indispensable Tips on Using Java Classes in JRuby
Eric Armstrong, a Document Systems Architect at Sun Microsystems, recently wrote some great tips on calling Java code from JRuby in his post "Using Java Classes in JRuby".
-
Language-oriented programming : an evolutionary step beyond object-oriented programming?
At a recent conference, Martin Fowler and Neal Ford develop the concept of language-oriented programming and question the eventuality for Domain Specific Languages to become a new abstraction and modelling mechanism. This could be "the next evolutionary step beyond object-oriented programming", especially since major vendors start offering IDE tooling for DSLs.
-
Confusing unit-of-work with threads
Most server-side applications and many desktop applications contains data that is tied to a particular task that’s being executed. A common solution is to keep that kind of data in thread-local storage; to keep the data in variables bound to the executing thread. Convenient, but a practice based on a faulty assumption.
-
LINQ Aggregates in VB and C#
An aggregate is a function that takes a collection of values and returns a scalar value. Examples from T-SQL include min, max, and sum. Both VB and C# have support for aggregates, but in very different ways.
-
Brian Beckman and Erik Meijer of MSR on Tesla
The project code-named TESLA in Microsoft Research is being spearheaded by Brian Beckman and Erik Meijer. LINQ is the first released technology aimed at democratizing the Internet coming from Microsoft. From Monoids to LINQ, Brian and Erik provide insight into the future of the .NET Framework languages at Microsoft and how they plan to change the Cloud as we know it today.
-
Partial Methods: Do They Belong in C#?
One of the more controversial additions to C# is the addition of partial methods. Created exclusively for code generators, some believe it pollutes the C# language.
-
JNA brings native code to JRuby
The Java Native Access (JNA) library brings simple POSIX support to JRuby, and might just make native extensions possible.
-
Why API design matters
API design affects all developers. Some APIs are a pleasure to work with, others are annoying and yet others are downright frustrating. But what's makes the difference? Which qualities make one API easy to use and another hard? The ACM Queue recently published an article by Michi Henning about API design; an article that analyzes these aspects.
-
Ruby x Agile: The shift from machine-performance to human-performance
This article is the second in the Ruby x Agile series, a set of six short videos exploring the relationship between Ruby and Agile methodologies, featuring Ruby creator Yukihiro Matsumoto.
-
Programming for Parrallelism: The Parallel Hierarchies Pattern
Multi-core processors offer new performance opportunities. Shekhar Borkar from Intel highlighted, however, that software development practices have to be retooled to leverage this potential. In this vein, Prof. Jorge L. Ortega-Arjona from the National Autonomous University of Mexico has recently introduced a new architectural pattern for parallel programming: Parallel Hierarchies pattern.