Yıllardır herhangi bir birleştirici dil bilmeden iyi bir yazılımcı olunamayacağını savunur dururum. Daha da radikal bir fikir olarak bu konudaki formal eğitimlerin bir birleştirici dil (Assembly dili) ile başlaması gerektiğini söyler dururum. Söz konusu eğitimin, endüstrideki CPU'ların biraz fazla karmaşık olasından dolayı gerçek bir CPU'nun birleştirici dili ile değil, bir simulatör-emülator eşliğinde çok basit bir CPU üzerinde öğretilmesini savunurum.
Slashdot da okuduğum bir tartışma bu inancımı gene gündeme getirdi.
"Bir aletin çalışma ilkelerini iyi bilmiyorsanız o aleti iyi kullanamazsınız" mantığına dayanıyor bu görüşüm.
Sizler ne dersiniz? Bir BT eğitim programına Java ya da C++ ile mi başlamalı yoksa 8080 veya M6800 benzeri basit bir CPU'nun birleştirici dili ile mi başlamalı? "Register, instruction, stack, Program counter nedir" diye bilmenin bir önemi var mı yoksa "sihir" gücüyle i++ deyince i'nin değerinin bir artacağını mı öğretmeli? Pointer aritmetiğini hayatın bir parçası olarak mı öğretmeli yoksa öğrencilerin buna gereksinim duymalarını mı sağlamalı?
Bir programın bellekte nasıl yayıldığını bilmek önemli mi?
Özellikle genç arkadaşların bu konudaki fikirleri benim için çok önemli. Ancak tartışmak istediğim "yazılım geliştirmeyi öğrenmek için assy bilmek gerekli mi?" sorusu değil; "yararlı mı?" sorusudur. Bir başka deyişle "assy bilmiyorum ama kütür kütür yazılım geliştiriyorum" türü yorumlarınız varsa hiç yazmayın derim.
slashdot'da gördüğüm bir kitap kritiğinden esinlenerek Birleştirici Dil'in (Assembly dili) bilişimci eğitimindeki yerini tartışmaya açmak istiyorum
Ne yazık ki Windows işletim sistemi üstün pazarlama tekniği ile insanları cahil birer bilgisayar kullanıcısı yaptı. İnsanlar için bilgisayar kullanmak farenin tuşuna çift tıklamak oldu. Ama bir gün çift tıklayıp da programın çalışmadıklarını gördüklerinde hiç birşey yapamadılar. Çünkü gerçekte o sistemi kullanmayı bilmiyorlar.
Linux kullanıyorum, ve bu yüzden Linux'u seviyorum. Kullandıkça size bilgisayarı öğretiyor.
Sanırım konudan saptım biraz :)
Bir programcı bilgisayarın çalışma prensibini bilmelidir. i++ yaptığında aslında arka planda neler olduğunu bilmeli?
diyorum...