Po wzięciu udziału w tegorocznym konkursie Google Code Jam i po jego zakończeniu zauważyłem niesamowitą liczbę [odnoszących sukcesy] uczestników, którzy używali C / C ++ i Javy. Rozkład języków używanych podczas konkursu można zobaczyć tutaj .
Po kilku latach programowania w C / C ++, niedawno zakochałem się w Pythonie za jego czytelną / prostą naturę. Niedawno nauczyłem się języków funkcjonalnych, takich jak OCaml, Scheme, a nawet języków logicznych, takich jak Prolog. Te języki z pewnością mają swoje zalety i, moim zdaniem, w pewnych sytuacjach można je łatwiej zastosować niż C ++ i Java. Na przykład użycie call / cc w Scheme upraszcza cofanie (narzędzie wymagane do odpowiedzi na kilka problemów), a specyfikacja logiki Prologu, choć nieefektywna ze względu na jej brutalny charakter, może drastycznie uprościć (a nawet automatycznie rozwiązać) pewne problemy, które są trudne do rozwiązania. owinąć mózg wokół.
Oczywiste jest, że uczestnik konkursu powinien korzystać z narzędzi, które najlepiej nadają się do wyzwania. Nawet montaż x86 jest kompletny w Turingu - to nie usprawiedliwia rozwiązywania z nim problemów. W tym przypadku, dlaczego zawodnicy, którzy używają mniej popularnych języków, takich jak Scheme / Lisp, Prolog, a nawet Python, odnoszą znacznie mniejsze sukcesy niż zawodnicy używający C / C ++ i Java? Mówiąc inaczej, dlaczego zawodnicy odnoszący sukcesy nie używają języków, które chociaż mogą być mniej popularne, są prawdopodobnie lepszymi narzędziami do pracy?
Moje pytanie ma kilka powodów. Przede wszystkim chciałbym zostać lepszym programistą - zarówno od strony praktycznej, jak i konkurencyjnej. Po zapoznaniu się z tak pięknymi paradygmatami, jak programowanie funkcjonalne i logiczne, zniechęcające jest, gdy tak wielu ludzi odrzuca je na rzecz C / C ++ i Javy. To nawet sprawia, że kwestionuję swój podziw dla wspomnianych paradygmatów, martwiąc się, że nie mogę odnieść sukcesu jako programista Lisp / Scheme / Prolog w konkursie programistycznym.