Bir programlama dili öğrenmeden, algoritma öğrenmek zordur çünkü data-sturcts(veri yapıları ) anlamayacaktır. Data-struct olmadan da algoritma olmaz. c# ve java %100 nesneye dayalı (object-oriented ) dillerdir. Dolayısı ile inharitance , polymorphsim daha önemlisi obje - method - constructor / deconstuctor kavramlarını bilmeden tamamı bu konular üzerine kurulmuş programlama dilleri öğrenmek sıkıntılı ve daha zor olacaktır. Benim tavsiye ettiğim dil c++ ama C'ile başlanmasını tavsiye ediyorum. Çünkü, C'i bir küme olsun, yordamsal ve yapısal programlama temelleri onun elemanları olsun. C++ ise C kapsayan büyük bir küme ve object ortiented temelleri , namespaceler ... onun elemanıdır. ve bir programlama dilinde tümevarım uygulamak daha kolay bir şekilde öğrenmesini sağlamaktadır.