Después de competir y seguir la competencia Google Code Jam de este año , no pude evitar notar la increíble cantidad de concursantes [exitosos] que usaron C / C ++ y Java. La distribución de idiomas utilizados a lo largo del concurso se puede ver aquí .
Después de programar en C / C ++ durante varios años, recientemente me enamoré de Python por su naturaleza legible / sencilla. Más recientemente, aprendí lenguajes funcionales como OCaml, Scheme e incluso lenguajes lógicos como Prolog. Estos lenguajes ciertamente tienen sus méritos y, en mi opinión, se pueden aplicar más fácilmente que C ++ y Java para determinadas situaciones. Por ejemplo, el uso de Scheme de call / cc simplifica el retroceso (una herramienta necesaria para responder a varios problemas) y la especificación lógica de Prolog, aunque ineficaz debido a su naturaleza de fuerza bruta, puede simplificar drásticamente (e incluso resolver automáticamente) ciertos problemas que son difíciles de resolver. envolver el cerebro de uno.
Está claro que un concursante de la competencia debe utilizar las herramientas que mejor se adapten al desafío. Incluso el ensamblaje x86 es Turing completo, eso no justifica resolver problemas con él. En este caso, ¿por qué los concursantes que usan lenguajes menos comunes como Scheme / Lisp, Prolog e incluso Python son significativamente menos exitosos que los concursantes que usan C / C ++ y Java? Dicho de otra manera, ¿por qué los concursantes exitosos no usan lenguajes que, aunque pueden ser menos convencionales, son posiblemente mejores herramientas para el trabajo?
Hay varias motivaciones para mi pregunta. Lo más importante es que me gustaría convertirme en un mejor programador, tanto en el aspecto práctico como en el competitivo. Después de haber sido introducido a paradigmas tan hermosos como la programación funcional y lógica, es desalentador ver a tanta gente descartarlos a favor de C / C ++ y Java. Incluso me hace cuestionar mi admiración por dichos paradigmas, preocupándome de no poder tener éxito como programador Lisp / Scheme / Prolog en una competencia de programación.



