Aynen Recep bey'e katılıyorum. Advanced c++ hakim oldukları için, ihtiyacı olan diğer programlama dilini öğrenmesi uzun bir zaman almıyor. Buna ek olarak, veri yapılarına ve programlama algoritmalarına (Akış diyagramlarını kastetmiyorum ) , Kriptoloji , Yazılım mimarisine oldukça hakimler. Kullandığımız bir çok önemli yazılımların %99'u belli bir desing pattern sahiptir. Neden derseniz hayal edin, ünlü bir yazılım şirketinin sahibisiniz ve bir çok yazılım elemanı ile programınızı geliştiriyorsunuz. Ola ki mühendisiniz işi biraktı , yerine gelen ne yapacak ? bu gibi durumlar ve daha bir çok geçerli sebep için desing pattern kullanıyoruz. Bu demek değil ki, aynı desing patterni kullanan her programın aynı şekilde açığı olacağı . Burada devreye kriptoloji ve network girer. Mesela bir zamanlar benimde uğraştığım, interaktif bankcalık işlemleri . İnternet hırsızları , ~%90 keylogger ve secreenlogger ile kullanıcıların sabit anahtarlarını çalarak bankayı hacklemiştir. Ancak yeni bir kriptoloji ile sorunu çözmüştürler. Buda Eskisi gibi kullanıcıya sistemem yöneticisi tarafından bir ID ve statik bir anahtar verilir. Ancak kullanıcı sisteme giriş yaptığında , sistem kullanıcının kişisel telefonuna dinamik bir anahtar gönderir. Dinamik anahtar dogrulamasıda gerçekleşirse , kullanıcı sistemi kullanabilir. Yada, belirli defa yanlış girirse riskli kullanıcı sınıfa düşer ve yetkili tarfından onanıncaya kadar ID pasif kılınır. Bugün bir çogumuzda mobil applications kullanıyoruz bankacılıkta. Ya ben bilgisayara değilde, telefona secreenlogger ve keylogger yerleştirsem, bu sefer hem dinamik hemde statik anahtara sahip olmazmıyım ? İşte yazılımlarda olaylar bu kadar basit. Önemli olan tarafını seçmek, ya hırsızlığı seçersin hacker(Bu arada 1000 yada 2000 kod üzerinde yazabilene hacker denilir aslında. ) derler. Yada yararlı bir iş yapmak adına bulduğun açığı kapatmaya çalısırsın.