После конкурса в следующем году и после этого года Конкурс Google Code Jam я не мог не заметить невероятное количество [успешных] участников, которые используется C/С++ и Java. Распространение языков, используемых во время соревнований, можно увидеть здесь.
После программирования на C/С++ в течение нескольких лет, я недавно влюбился в Python для его удобочитаемого/прямолинейного характера. Совсем недавно я изучил функциональные языки, такие как OCaml, Scheme и даже логические языки, такие как Prolog. Эти языки, безусловно, имеют свои достоинства и, на мой взгляд, могут быть применены более легко, чем С++ и Java для определенных ситуаций. Например, использование схемы call/cc в Scheme упрощает обратное отслеживание (инструмент, необходимый для ответа на несколько проблем) и логическую спецификацию Prolog, хотя она неэффективна из-за ее грубой силы, может значительно упростить (и даже автоматически решить) некоторые проблемы, которые трудно оберните вокруг себя один мозг.
Понятно, что участник конкурса должен использовать инструменты, которые лучше всего подходят для решения проблемы. Даже сборка x86 полностью завершена в Turing - это не оправдывает решение проблем с ней. В этом случае почему участники, которые используют менее распространенные языки, такие как Scheme/Lisp, Prolog и даже Python, значительно менее успешны, чем конкурсанты, которые используют C/С++ и Java? Слово по-другому, почему успешные конкурсанты не используют языки, которые, хотя могут быть менее распространены, являются, возможно, лучшими инструментами для работы?
Есть несколько мотивов моего вопроса. Самое главное, я хотел бы стать лучшим программистом - как в практическом аспекте, так и в аспекте конкуренции. После введения таких прекрасных парадигм, как функциональное и логическое программирование, не рекомендуется видеть, как многие люди отбрасывают их в пользу C/С++ и Java. Это даже заставляет меня подвергнуть сомнению мое восхищение указанными парадигмами, беспокоясь, что я не могу быть успешным программистом Lisp/Scheme/Prolog в соревновании по программированию.