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