InfoQ Homepage Language Design Content on InfoQ
-
Should We Rely on Language Constraints or Responsibility?
Bruce Eckel, Michael Feathers, Niclas Nilsson, Keith Braithwaite, and others on the question: should languages be fully flexible, allowing the developers to tweak them as they like, and trusting they will be responsible in their work, or should there be clear constraints set in the language from its design phase to avoid mistakes that create bad code, hard to maintain or to read?
-
Auto-implemented Properties in VB and C#
C# added auto-implemented properties in version 3, but Visual Basic was unable to match them at that time. With the impending release of .NET 4.0, VB has caught up in this area, but with a distinctive twist.
-
The Many Types of Null in F#
F# was supposed to free us of the tyranny of the unchecked null. Alas not only does the compiler lack null checking, it introduces several more kinds of null.
-
Wrapping Stored Procedures in .NET Languages
Creating wrapper functions for pre-existing stored procedures is surprisingly difficult in .NET. Stored procedures have certain calling conventions that aren’t generally used in the .NET Framework and many of them are not supported at all. For example, C# doesn’t support optional parameters and neither .NET language supports optional parameters on nullable types.
-
Making 0 Equal 0 in C#
C# does not work well with boxed numerical values. Unlike Visual Basic, the basic numeric comparison operators such as == do not work with boxed types even when both values are the same type. Fortunately with C# 4 you can avoid these problems by using the dynamic keyword.
-
Pattern Matching in .NET 4
Pattern matching may seem like an alien concept to developers who focus on C# and VB style languages, but it shouldn’t be. Ultimately it is just a refinement of the case statement, which itself is a refinement of if-else-if blocks. This piece takes a brief look at that transition and how F#’s pattern matching can be applied to VB and C#.
-
Rich Hickey on Clojure's Features and Implementation
In this interview from QCon London 2009, Rich Hickey talks about Clojure. The discussion includes the ideas behind Clojure's STM support, what other concurrency primitives Clojure supports and which ones might get added in the future. Other topics covered are Clojure's AOT support, the role and implementation of multimethods, Clojure ports to other systems and much more.
-
Source for the D.NET Compiler is Now Available
Cristian Vlasceanu has released the source code for the D.NET compiler. Like C++ and ObjectiveC, D is a C-based language that attempts to correct some of the issues and limitations of the venerable language.
-
Presentation: The State of the DSL Art in Ruby
In this talk Glenn Vanderburg discusses what the Ruby community has learned about building DSLs, and shows how to build state-of-the-art DSLs without going overboard.
-
Declarative Concurrency For Ruby With Dataflow
Part of the Ruby language was influenced by functional programming techniques. Larry Diehl brings a declarative concurrent model to Ruby by importing the concept of unification from Oz Language with the Dataflow project.
-
Interview: Guy Steele Interviews John McCarthy, Father of Lisp
In this phone interview that took place in front of an audience at OOPSLA 2008, Guy Steele spins a yarn with John McCarthy, the father of Lisp, attempting to find out some details surrounding the language inception in the 50’ and its later evolution.
-
Presentation: Evolving the Java Language
Neal Gafter discusses how to evolve a widely deployed language without causing disruption using planned changes for JDK7 (superpackages, closures, annotations on types, type inference, exception handling, and self types) as an example. He examines how the changes are conditioned by preexisting language design choices, and discusses their influence on API design.
-
C#/VB Parity in .NET 4
At the 2008 PDC, Microsoft promised language parity between Visual Basic and C#. What that means for .NET 4 was enumerated during the Lang.NET keynote. Briefly, this is what you can expect to see.
-
More on Dynamic Support in C#
Mads Torgersen presents more details on the dynamic keyword in C# and how it came to be. Included are some of the alternate designs that were eventually discarded in favor of the dynamic keyword.
-
SABLE, a Smalltalk-Inspired Language for .NET
Keith Robertson, the founder of Kuler Software Tools, has written a Smalltalk-inspired language for the .NET platform called SABLE, a language meant to draw upon the qualities of Smalltalk’s syntax and the benefits of running on CLR.