I think I'll just write a quick summary of the languages I learnt:
Basic (on Amstrad CPC6128), using line numbers to call subroutines
Pascal, C++ & Object Pascal, during my computer science degree, pointers where tough back then
C, because C++ is based on it and it was just difficult to learn w/o its basis
Java, as a server back-end dev during the 1st internet bubble
D, D2, because I was (and still am) dissatisfied with C++
lisp, mostly primitive stuff, but it looked fun to learn.
Clay, which is a kind of C with generics, really nice, changed the way I programmed since
Chapel, mostly "Hello World !" stuff, I really like the approach the language took on concurrency, it's well done and could become the next big language with good runtime/tools
Swift, just started, more than "Hello World !" but not a small engine with it yet, it's still in infancy but already nice
I wrote a 2D rendering engine in Pascal, 6 or 7 engines in C++, 1 in D2 (barely finished), 1 in Clay (unfinished though).
I find it really interesting to rewrite code in a new language with new paradigms, it usually changes the way I code from then on, I use generics a lot more and dislike object oriented a lot more (because the way C++ does it, encapsulates functions in a namespace which prevents me from writing a generic version that is called like a regular member function. In D2 there's Universal Function Call Syntax, which means foo( bar* b ) can be called either b.foo() or foo( b ) so I can.)
Swift protocols are really interesting, they seem to be (not dived in implementation yet) about C++ (still unavailable) concepts, which pretty much are template arguments requirements, to the point Apple started referring to Swift as a Protocol Oriented System's Programming Language, AFAIR. ^^