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