Bu işlerle uğraşan bir abiye sormuştuk, o da "C++'a hemen bulaşmayın, önce Python gibi dillerle temel oluşturun, yoksa kafanız yanar" dedi.
"Bu islerle ugrasan bir abi" olarak bende diyorum ki, takilmayin dillere. Temel programlama ogrenmeniz lazim ve bunu da hangi dilde yaptiginiz onemli degil. Kafan rahat edecekse otur Python ile basla, sonra don C++'a. Temel programlama konseptlerini adam gibi ogrendikten sonra fark etmiyor.
Siz nasıl başladınız? Başladığınızda nelere dikkat ettiniz ve nerelerden kurs almaya başladınız? (Bilgisayar mühendisliği hazırlık okuyorum.)
Ben C++ ile basladim. Okula geldigimde programlama bilgim basit hesap makinelerinden ve dandirik konsol uygulamalarindan oteye gecmiyordu. Okuldan haricen bir kurs almadim.
Okuldaki derslerin sirasina dikkat ettim ve derslere calistim sadece. Bol bol pratik yaptim bu surecte.
Ilk olarak mantik ogrendim. Mantik kurmayi ogrendim desem daha dogru olur. Sonra bize sirasiyla programlama nedir ne degildiri ogrettiler. Daha bir dil gormeden programlamayla alakali temel konsept ve kavramlari ogrenmistim coktan okulda.
Programlama nedir, ne degildir, bilgisayarlar programi nasil anlar, algoritma/program akisi, bellek nedir, heap ve stack nedir, farklari ne. Sonrasinda basit kaba kod programlar yazmaya basladik. Ayni akis semasi gibi ama yaziyla gibi dusun. Bunu genelde C syntaxiyla yaziyorduk cunku hocamiz oyle gostermisti. Bu asamadan sonra bir dile gecmistik. Bu asamadan sonra az cok kod okuyabiliyor ve bir seylerin ne yaptigini anlayabiliyordum.
C ve C++ kullanma iznimiz vardi, ben C++'i tercih etmistim. (Daha fazla modern ozelligi oldugu icin tercih ettim o zaman.) Data structures and algorithms dersine geldigimizde mantik kurma becerimizi ilerletirken artik dil bagimsiz yeteneklerimizi de gelistirmeye baslamistik fakat yaptiklarimizi gorebilmek adina bir dil kullanarak programlama yapiyorduk. Tabii ki C yada C++ ile yapiyorduk ayri mesele. Temel veri yapilari ve algoritmalar ile bol bol pratik yapmis olduk. Sonrasinda alan spesifik programlamaya gectik. Internet programlama, image processing, compture graphics, yapay zeka ve makine ogrenmesi, systems level programming alanlarina giris yaptik.
Bu kadar seyi anlatmamin arkasindaki sebep; bu yeteneklerin hic biri dil spesifik yetenekler degil farkindaysan. Bunlar diller arasi aktarilabilir yetenekler. Dil bahsetmiyorum derslerin hic birinde. Cunku dil degistirsem bile ben bu mantigi hala kurabilecegim. Dilin kendi ozelliklerini kullanmak icin dokumanindan yararlanmam yeterli. Dilin syntaxina alismak icin de bir iki gun basit seyler yapmam yetiyor. Sonrasinda dokumani kullanarak bir seyleri nasil yapacagimi ogrenebilirim.
C++'in gercekten zor olan iki yani var, biri devasa kutuphanesini kullanmayi ogrenmek. C++'ta ne yapmak istiyorsan kesin standart libraryde ona karsilik gelecek bir sey vardir. Neredeyse garanti. Bulmak biraz zor. Digeri template programlama. Templatelerde kendi basina cok zor degilde, git gide okumasi ve takip etmesi zorlasabiliyor cunku asiri soyut bir sistem. Ama senin ilk asamlarda zaten bu soyut sistemle cok isin olmayacak. O yuzden diyorum ki, baslangic icin C++ kullanman yada kullanmaman fark etmiyor baslangicta.
Cok uzun bi yazi oldu. Uzun yazdikca sacmaladigim oluyor bazen. Kafani karistiran bir sey olursa sormaktan cekinme.