language programming parallel abstraction control parallel abstraction control closure programming parallel portable language programming Matroshka language programming Natasha