Czy możesz poprawić swoje umiejętności programowania, ucząc się innych paradygmatów językowych?
Z mojego doświadczenia wynika, że zdecydowanie tak. Posiadanie kilku różnych sposobów atakowania problemu jest jak paleta narzędzi. Pewnego dnia będziesz (tak jak ja) używał tych innych narzędzi. A może nie. To wszystko zależy. Niektóre przykłady:
Języki na ogół nie są samodzielne, mają środowisko. Spędziłem trochę czasu ucząc się dziwnego języka znanego jako awk . Opiera się na dopasowaniu wzorca za pomocą „wyrażeń regularnych”. Próbując nauczyć się C ++ STL (niezbyt udany) dowiedziałem się o mapach. Łącząc te dwa koncepcje, mogłem bardzo szybko napisać narzędzia do przekształcania tekstu w Pearl (jedynym języku dostępnym na platformie).
Głównie dla zabawy próbowałem nauczyć się Erlanga (niezbyt udane). Posiada bibliotekę funkcji znanych jako OTP, implementujących między innymi sposób obsługi błędów, czasem zwanych „pozwól mu zawieść” i monitor uruchomi funkcje ponownie. Użyłem tego pomysłu w niektórych obszarach, czasami po prostu pozwalając, by coś zawiodło zamiast przeprowadzać niekończące się testy.
Próba nauki Haskella (znowu niezbyt udana) naprawdę otworzyła mi oczy na inne sposoby atakowania problemów. Programowanie funkcjonalne (moim zdaniem) zaczyna się od pisania kodu, który mówi, jaki wynik chcesz osiągnąć, a nie od pisania kroków, które trzeba osiągnąć. Uważam, że to naprawdę pomogło mi w pisaniu lepszego kodu SQL.
Ostatnio próbowałem trochę javascript. I znalazłem środowisko zwane węzłem. Nie potrzeba kodu do stworzenia małego serwera automatyki domowej.
Mówiąc z perspektywy czasu, większość moich rozmów w różnych językach była (i jest) na dość płytkiej pogoni, głównie po to, aby poczuć, o czym ludzie mówią. Jest bardzo niewiele języków, w których faktycznie mogę być produktywny.