Sunday, July 20, 2008

Fortress - Not C# but it's cool

From the FAQ:

What is Fortress? Fortress is a new programming language designed for high-performance computing (HPC) with high programmability. In order to explore breakaway approaches to improving programmability, the Fortress design has not been tied to legacy language syntax or semantics; all aspects of HPC language design have been rethought from the ground up. As a result, we are able to support features in Fortress such as transactions, specification of locality, and implicit parallel computation, as integral features built into the core of the language. Features such as the Fortress component system and test framework facilitate program assembly and testing, and enable powerful compiler optimizations across library boundaries. Even the syntax and type system of Fortress are custom-tailored to modern HPC programming, supporting mathematical notation and static checking of properties such as physical units and dimensions, static type checking of multidimensional arrays and matrices, and definitions of domain-specific language syntax in libraries. Moreover, Fortress has been designed with the intent that it be a ``growable'' language, gracefully supporting the addition of future language features. In fact, much of the Fortress language itself (even the definition of arrays and other basic types) is encoded in libraries atop a relatively small core language.

My personal favorite feature is the ability to use greek letters and mathematical symbols in the source. Check it out at...

Thursday, July 17, 2008

Welcome to Scientific C#

This is the initial post of my new blog dedicated to scientific programming in C#.

I thought I'd kick things off by answering the question I'm asked most commonly.

Why C# instead of java:

User defined value types
Multidimensional Arrays
Superior implementation of generics
The option to write unmanaged code and use explicit pointers
The mono project is fairly well developed allowing dot net development for linux

For a good if outdated introduction to C# for scientific applications see...