Sau khi tham gia và theo dõi cuộc thi Google Code Jam năm nay , tôi không thể không nhận thấy số lượng đáng kinh ngạc các thí sinh [thành công] sử dụng C / C ++ và Java. Sự phân bố của các ngôn ngữ được sử dụng trong suốt cuộc thi có thể được nhìn thấy ở đây .
Sau khi lập trình bằng C / C ++ trong vài năm, gần đây tôi đã yêu Python vì tính chất dễ đọc / đơn giản của nó. Gần đây, tôi đã học các ngôn ngữ chức năng như OCaml, Scheme, và thậm chí cả các ngôn ngữ logic như Prolog. Những ngôn ngữ này chắc chắn có giá trị của chúng và theo tôi, có thể được áp dụng dễ dàng hơn C ++ và Java cho một số trường hợp nhất định. Ví dụ: việc sử dụng call / cc của Scheme giúp đơn giản hóa backtracking (một công cụ cần thiết để giải đáp một số vấn đề) và đặc tả logic của Prolog, mặc dù không hiệu quả do tính chất thô bạo của nó, có thể đơn giản hóa đáng kể (và thậm chí tự động giải quyết) một số vấn đề khó quấn quanh bộ não của một người.
Rõ ràng là một thí sinh cạnh tranh nên sử dụng các công cụ phù hợp nhất cho thử thách. Ngay cả khi lắp ráp x86 cũng hoàn thành Turing - điều đó không biện minh cho việc giải quyết các vấn đề với nó. Trong trường hợp này, tại sao các thí sinh sử dụng các ngôn ngữ ít phổ biến hơn như Scheme / Lisp, Prolog và thậm chí Python lại kém thành công hơn đáng kể so với các thí sinh sử dụng C / C ++ và Java? Nói khác đi, tại sao các thí sinh thành công không sử dụng ngôn ngữ, mặc dù có thể ít phổ biến hơn, được cho là công cụ tốt hơn cho công việc?
Có một số động lực cho câu hỏi của tôi. Quan trọng nhất, tôi muốn trở thành một lập trình viên giỏi hơn - cả về khía cạnh thực tế và khía cạnh cạnh tranh. Sau khi được giới thiệu về những mô hình đẹp đẽ như lập trình hàm và logic, thật khó chịu khi thấy nhiều người từ bỏ chúng để ủng hộ C / C ++ và Java. Nó thậm chí còn khiến tôi đặt câu hỏi về sự ngưỡng mộ của mình đối với những mô hình đã nói, lo lắng rằng tôi không thể thành công với tư cách là một lập trình viên Lisp / Scheme / Prolog trong một cuộc thi lập trình.



