Bunu bir çok kişi söylüyor,genelde c# veya Java öğrenmek isteyenlere "önce c sonra c++ " deniliyor.
Benim asıl merak ettiğim şu:c# veya Java öğrenerek programlamaya başlayan birinin,gerek konsol gerekse masaüstü uygulamalarda c dili ile başlamamasından dolayı hissedeceği (eğer varsa) eksiklikler neler, sadece bunu merak ediyorum.Hem c# (veya java) bilen hem de c,c++ dilleriyle uğraşmış birinin bu konudaki tecrübelerine ihtiyacım var.Ben zaten c dilini öyle ya da böyle bir ön bilgi olsun,öğreneceğim.Çünkü öğrenmeye daha önceden başladım, en azından tamamlayacağım.Ama en azından programlamaya başlayanlar için önemli .
Ali hocam ayrıntılı olarak çok şahane açıklamışsın gerçekten,ancak ben iki noktayı anlayamadım.
Birincisi,arka planda ne olup bittiğini anlamak bana somut olarak ne fayda sağlar?Buna bağlı mı bilmiyorum ama son verdiğin örneği anlayamadım.
İkincisi,derleyici ve kütüphaneden bahsetmişsin.Verdiğin örnekler fonksiyon çağırma mı yoksa önişlemci ile mi alakalı?Derleyici ve kütüphaneden bahsedince aklıma şu geldi: #include ile math.h kütüphanesini programımıza dahil ettiğimizde,derleme aşamasından önce math.h dosyası kaynak programa dahil edilir ve bu sayede pow() ile üs işlemimizi başarıyla gerçekleştiririz.Acaba dediğin buna benzer bir şey mi?
Ben C# ve Java adına konuşamam ama C++ için söyleyebilirim: C bilen birisi, C++'a geçtiği zaman C alışkanlıklarıyla devam edebilir ve ortaya yanlış C++ programları çıkar.
Bunun örneğini yukarıda new ve delete kullandığım örnekte gösterdim.
Eğer sen kendin C'de C++'ın string'i veya başka bir üst düzey dilin veya kütüphanenin akıllı bir dizgisi gibi bir yapı yazmışsan, üst düzey dilleri kullanırken olaylar sana sihirbazlık ürünü gibi gelmez.arka planda ne olup bittiğini anlamak bana somut olarak ne fayda sağlar?
"Ben bunu C'de şöyle yapardım, adamlar kolayını yapmışlar" diye düşünürsün. Bundan başka somut bir yararı yok.
Son verdiğim örnek değil, "şunu C'de yapmayı dene" şeklinde bir çalışma konusuydu.ama son verdiğin örneği anlayamadım.Yani eğer o yapıyı kullanarak o işlevleri gerçekleştirirsen, C++'ın string'inin vs. arka planda nasıl çalıştıklarını anlarsın diye düşündüm.
Örneğin C++'da
s += "eklenen dizgi";
yazıldığında nasıl oluyor da o karakterler s'nin sonuna ekleniyorlar ve onun parçası oluyorlar? Sen olsan C'de nasıl yaparsın?
Bence çok değerli bir çalışma konusu.
Baştan pratiğin olmadan C öğrendiğini söylediğin için bunun sana iyi bir çalışma olacağını düşündüm.
O çok yaygın bir yanılgı olduğu için düzelteyim: #include ile kütüphane dahil edilmez; kullanılan kütüphanenin işlev bildirimleri, tür tanımları vs. derleyiciye bildirilir.#include ile math.h kütüphanesini programımıza dahil ettiğimizde
math.h dosyasını açıp içine bakmanı öneririm. İçinde örneğin pow() işlevinin tanımı yoktur.
Kütüphane, derleme adımından sonra bağlayıcı tarafından programa dahil edilir. Komut satırında -lm yazılınca "libm.a kütüphanesini ekle" demiş oluruz.
Ali
ben dile takılma diyorum. önemli olan mantık diye bir geyik varya harbiden öyle misal bizim bi hoca nesne yönelimli programlama dersini javayla örnekleyip sınavda c++ sorardı![]()
hocam niye böyle yapıyorsunuz dediğimizde söz dizimine takılmayın diyordu. ki iş hayatına atılanlar da bilirler patron sizden ne isterse onu yapmak zorundasınızdır![]()
Bora Güngören (C++ ile Nesne Tabanlı Programlama kitabının yazarı) diyor ki:
C++ öğrendiğinizde,
Somut olarak şu örneği verebilirim. Visual Basic'te bilipte "piyasaya hazır program yazmaya" çalışan kişilerin en çok zorlandığı konu WinApi. Programcıların çoğunun C temeli olmadığından WinApi kullanırken tabiri yerindeyse kıvrandıklarına şahit oluyorum sık sık. Nedeni basit: MSDN apileri C üzerinde anlatıyor. Windowsta programlama yapan birinin dönüp dolaşıp çarpacağı yer WinApi (.nette dahil). Bu yüzden her programcının en azından C veri tipleri ve fonksiyon çağırım mekanizmaları hakkında bilgi sahibi olması gerektiğini söyleyebilirim....Java'ya geçerseniz, çok hızlı bir biçimde Java öğrenebilirsiniz
Fakat daha önce de dediğim gibi programlama yaklaşımları arasında geçiş yapmak sıkıntılı bir döneme denk geliyor hep (neden acaba). Bence dil öğrenmekten ziyade bu konu üzerinde durmanız gerekiyor.
Son gözlemim ise şu: Ortam (işletim sistemi) hangi dille yazıldıysa "programcının kullanılan dil hakkında bilgi sahibi" olması gerekiyor. Bunu şurdan çıkardım: C için VB6 dönüşümlerine çalışılmıyor fakat örneğin dll kullanılmasında sorun çıkmaması için C'nin bazı özellikleri VB6'ya da eklenmiş. İstisnası da Delphi. register biçiminde işlev çağrısı sadece Delphi'de var (BCB'de de olması lazım).
B
eckart müller, söz dizimine takılmamayı anlarım. Hocanın o durumda ne C++ ne de Java olan akademik bir dil kullanması iyi olurmuş. İki dilin programcıları kendi bildikleriyle başladıklarında komik durumlara düşerler.
Patron sizden ona doğru şeyi söylemenizi ister. Umarım dediğin gibi bilgisiz patronlarla çalışmak zorunda kalmazsınız.
Ali
c den c++ ya geçişteki uyum sorunu,c++ dilini öğrenme süresini hesap edersek eğer ortaya belki farklı bir tablo çıkabilir.Ayrıca java ile ilgili kitaplara baktığımızda,Nesne yapısı dahil en temelden anlatıyorlar.O zaman şunu sormamız gerekir bence: Java öğrenmek isteyen birinin c++ bilmesine gerek var mı?
Ali hocanın şu sözünü unutmayalım:
Ben zaten bir müddet daha c dilini öğrenmeyi,programlama mantığını yerleştirmeyi düşünüyorum,umarım faydalı olur.Bilgilerinizden dolayı teşekkür ederim.Ben C# ve Java adına konuşamam ama C++ için söyleyebilirim: C bilen birisi, C++'a geçtiği zaman C alışkanlıklarıyla devam edebilir ve ortaya yanlış C++ programları çıkar.
C ve C++ dilleri çok güçlü dillerdir ancak öğrenmesi çok zordur. Dilin sözdizimini öğrenmek sadece notaları öğrenmektir, notaları öğrenmek seni virtüöz yapmaz. Müzisyen bile yapmaz, bu çok temel bir bilgidir.
Kaan hocanın deyimiyle C# dilinin kuralları C++ dilinden 20 kat daha azdır, C ve C++ dillerinde ciddi programlar yazabilecek düzeye gelmek dünya genelinde ortalama 5 yıldır, bu süreyi geçirmemiş kişiler C++ biliyorum deseler de ciddi bir program yazdıkları görülmemiştir. Bu süre çeşitli şekillerde kısaltılabilir.
İşte C# gibi diller bu öğrenme süresini kısaltarak programcıların biran önce uygulama geliştirmesi için tasarlanmıştır. Bu yüzden C# öğrenmek için önce C öğrenin demek, keklik avına çıkmak için bordo bereli eğitimi alın demek gibidir. Bu kişileri ciddiye alma, zaten biraz üstlerine gidersen bu güne kadar C veya C++ ile yazdıkları ciddi bir program olmadığını anlarsın.
Burdaki bir çok kişi için senin geleceğin sadece bir forum muhabbeti malzemesidir, çoğu kişi senin geleceğinden çok forumda yazdığı mesajın fiyakasıyla ilgilenir, kimseyi suçlamıyorum bu genelde böyledir. Bu yüzden geleceğini buradan alacağın önerilerle değil gerçekten bu işin içinde yılları geçmiş insanların tavsiyelerine göre şekillendir.
Şüphesiz Türkiyede Kaan hoca (Kaan Aslan) bir otoritedir, onun konuyla ilgili çok önemli bir videosunu veriyorum umarım izlersin ve ciddiye alırsın.
http://www.ceturk.com/programlama/ka...astiriyor.html
[konu_dışı]Merak ettim Kutalmış Bey, sistem programcısıyım olduğunuzu söylediniz fakat tam olarak hangi dalında çalışıyorsunuz? Ben de sistem programcısı olmaya çalışıyorum da[/konu_dışı]
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks