Lambda, men inte Lambada

Veckan som just passerat bjöd på två kurs premiärer, för min del. Dels var det 3-dagars kursen Linux System Programming under ons-fre, som jag redan berättat om. Men i början av veckan, var det också premiär för ett seminarium (Injection) om nya C++ standarden kallat C++11.

C++11 är den största nyheten i C++ världen på 20 år och innehåller såväl stora språkliga förbättringar som utbyggnader av biblioteket.

Det mest fantastiska med nya C++ är att det har stöd för closures, kallad lambda uttryck. Enkelt formulerat är det anonyma funktions-uttryck som kan hanteras som variabel-värden. Detta gör att C++ sällar till raden av språk som redan har closures, såsom Groovy, Scala, Ruby, Perl, JavaScript m.fl. Samt att Java blir från-åkt med åtminstone ett år, eftersom vi måste vänta tills Java8, släpps någon gång efter sommaren.

Ett enkelt lambda uttryck i C++11, kan se ut som nedan. Där variabeln f är bunden till uttrycket och sen anropas på andra raden. Här ser du också att C++ fått "dynamisk typing" i viss utsträckning med auto.
auto f = [](int x, int y){return x*x + y*y;};
int r = f(2,5);

På biblioteks-fronten, så är den stora nyheten bl.a. klassen thread och allt som hör därtill. Låt oss se på ett komplett exempel där ett lambda uttryck används som en tråd (thread).
Klicka på bilden för att se den full storlek. Programmet är kompilerat med GCC 4.6.1 på Ubuntu Linux version 11.10.

Om du vill veta mer, så boka ett seminarium/injection om nya C++11 och bli lika hänförd och lyrisk som jag själv är över vad som i praktiken är ett nytt häftigt programspråk.

Skicka en kommentar

Trevligt att du vill dela med dig av dina åsikter! Tänk på att hålla på "Netiketten" och använda vårdat språk.