Bu yılki Google Code Jam yarışmasında yarıştıktan ve yarıştıktan sonra , yardım edemedim, ancak C / C ++ ve Java kullanan inanılmaz sayıda [başarılı] yarışmacıyı fark ettim. Yarışma boyunca kullanılan dillerin dağılımı burada görülebilir .
Birkaç yıl boyunca C / C ++ ile programladıktan sonra, son zamanlarda okunabilir / anlaşılır yapısı nedeniyle Python'a aşık oldum. Daha yakın zamanlarda, OCaml, Scheme gibi işlevsel dilleri ve hatta Prolog gibi mantık dillerini öğrendim. Bu dillerin kesinlikle kendi yararları var ve bence bazı durumlarda C ++ ve Java'dan daha kolay uygulanabilir. Örneğin, Scheme'nin call / cc kullanımı geri takibi (birkaç soruna cevap vermek için gerekli bir araç) basitleştirir ve Prolog'un mantıksal özelliği, kaba kuvvet doğası nedeniyle verimsiz olmasına rağmen, zor olan bazı problemleri büyük ölçüde basitleştirebilir (ve hatta otomatik olarak çözebilir). beynini sarmak.
Bir yarışma yarışmacısının yarışmaya en uygun araçları kullanması gerektiği açıktır. X86 montajı bile Turing tamamlandı - bu, onunla sorunları çözmeyi haklı çıkarmaz. Bu durumda, Scheme / Lisp, Prolog ve hatta Python gibi daha az yaygın dilleri kullanan yarışmacılar, C / C ++ ve Java kullanan yarışmacılardan neden önemli ölçüde daha az başarılı? Farklı bir şekilde ifade edildiğinde, başarılı yarışmacılar neden daha az ana akım olsa da iş için tartışmasız daha iyi araçlar olan dilleri kullanmıyor?
Sorum için birkaç motivasyon var. En önemlisi, hem pratik hem de rekabet açısından daha iyi bir programcı olmak istiyorum. İşlevsel ve mantıksal programlama gibi güzel paradigmalarla tanıştıktan sonra, bu kadar çok insanın bunları C / C ++ ve Java lehine attığını görmek cesaret kırıcı. Hatta bir programlama yarışmasında bir Lisp / Scheme / Prolog programcısı olarak başarılı olamayacağımdan endişelenerek, söz konusu paradigmalara olan hayranlığımı sorgulamama neden oluyor.