올해의 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 프로그래머로서 성공할 수 없을까 걱정하면서 패러다임에 대한 존경심에 의문을 제기합니다.