Fortress (programming language)
Most of the existing programming languages were designed for earlier generation of machines. But now since we have more processing power in terms of parallel processing, High Performance Computing(HPC) is now accessible for everybody. But all said and done writing algorithms that can take advantage of parallel processors isn’t easy in today’s languages. Lose track of what’s happening in the system and you can quickly end up in a “Sorcerer’s Apprentice” scenario.
Fortress is a new programming language designed for high-performance computing (HPC) with high programmability. In Fortress, language constructs such as for-next loops are parallelizable by default. This parallelism is potential, not required; if only one processor is available, then evaluation will be serial. This potential parallelism is managed using work-stealing, which was developed for the Cilk programming language at MIT. Informally, whenever a thread encounters potential parallelism, it splits it roughly in half, sets one half aside on a stack/queue of future work, and starts work on the other half. Any thread that runs out of work to do may “steal” work that was set aside by another. The crucial trick is that work is stolen from the LIFO (queue) end of the work/stealing queue; this both reduces the need for synchronization betweeen threads, and ensures that the largest, oldest, and stalest tasks are what is stolen. This same trick also tends to be beneficial for memory locality.
The Fortress specification supports the concept of transactions within the language itself, which means that complex calculations can be computed as atomic units, independent of any other program threads that might be running. Fortress’ syntax is based on mathematical notation. The goal of the language is to do away with obsolete programming concepts and concentrate on making the coder’s job easier. In addition, Fortress was designed to be a “growable” language, to which new features can be added easily.
A reference interpreter that implements most of the core language features is available from the Fortress project community site
For more information check out the Fortress wiki