Arkadaşlar başlıktada belirttiğim gibi ileri seviye programlama konularını içeren kitap arıyorum. Dil olarak visual basic , c++ , c# olabilir. Özellikle ram üzerinde işlem yapma veri değiştirme segment offset olayları gibi konuları inceleyen bir kitap istiyorum. fakat hiç bir yerde göremedim varsa bildiğiniz tavsiyelerinizi bekliyorum.
Teşekkürler.
C++ Deitel ın kitabı var. Konu sonlarındaki bütün alıştırmaları yaparsan guru olursun. Sanırım dilden bağımsız programlama teknikleri üzerine çalışmak istiyorsun. Segment offset gibi mikroişlemci bağımlı, elektroniğe kayan konuları öğrenmek yerine matematiksel, algoritma odaklı konulara girmek bence daha iyi olur. İlgilenirsen şunu tavsiye ederim. http://www.kitapyurdu.com/kitap/default.asp?id=114268
aslında elektroniğe kayan kısmını değil seninde dediğin gibi algoritmasal ve programlanabilirliği üzerinde uğraşmak istiyorum. kitap önerin için teşekkür ederim peki bu c++ deitel in kitabını nerden bulabilirim.
Yalnız bu kitabın büyük bölümü c öğretimi üzerine. Güzel tarafı ise gerçekçi ve zorlayıcı ödevleri.
aslında bu kitabı bugün d&r da inceledim fakat ileri seviye bir olay görmedim başlangıç seviyesi gibiydi. benmi yanlış inceledim acaba ?
İleri seviyeden kastın nedir? Programlamada ileri seviyelere gelebilmek için bol bol pratik yapmak, problem çözmek vb. gerekir. Bu kitapta sana çözülecek bolca gerçekçi problem verir. Ben bu kadar geniş kapsamlı alıştırma veren başka kitap görmedim, varsa da bilmiyorum. Kitabın hedefinde başlangıç seviyesindekiler de olduğu için anlatım basit tutulmuş.
Tabi bunlar benim fikirlerim. Size basit geldiyse bilemem.
ileri seviyeden kastım bilgisayarın genel işleyişine müdahale etmek. ram den bilgi değiştirmek bios dan veri alma vb.
Sen konuyu açan arkadaşla aynı şeyleri söylüyorsun aynı kişimisin? Dediğin konular ise asm işi. Bu zamanda pek ilgilenen yok. Bende zamanında merak salıp uğraşmıştım ama baktımki bunlar boş işler kimseye bi faydası yok. Cracker falan olacaksan ayrı tabi. Hadi sana kolay gelsin.
yok aynı kişi değilim ama benimde ilgimi çekti teşekkürler ilgilendiğin için.
Assembly kitabı alıp başlayacaksın, tabii assemblyde en zor dil
Boşuna vakit kaybetme..
Öncelikle, inglizceni geliştir, eğer yeterli değilse.
Ondan sonra, makinene linux kur. Kendin program yaz onunla.
Elbette, mevcut kodları incelemekte var.
Bu sana yol gösterecektir. Kitap vs. gerekiyorsa, en gerektiğini böylece keşfedersin.. Ama okuyacağın hiç bir kitap, sana somut bir şeyler veremez.
Basitçe tüm veri yapılarını yaladın yuttun, bitirdin. Ama linked list veya btree'nin ne zaman can simidi olduğunu görmeden anlamış olmazsın. Bunu da ya kullanarak, yada kullanıldığı yeri görerek keşfedebilirsin, kitaptan okuyarak değil..
tavsiyeleriniz için çok teşekkürler arkadaşlar. evet ingilizcenin gerekliliğinin bende farkıdayım o sorun üzerindede uğraşıyorum.
quote:
Orijinalden alıntı: skoylu
Boşuna vakit kaybetme..
Öncelikle, inglizceni geliştir, eğer yeterli değilse.
Ondan sonra, makinene linux kur. Kendin program yaz onunla.
Elbette, mevcut kodları incelemekte var.
Bu sana yol gösterecektir. Kitap vs. gerekiyorsa, en gerektiğini böylece keşfedersin.. Ama okuyacağın hiç bir kitap, sana somut bir şeyler veremez.
Basitçe tüm veri yapılarını yaladın yuttun, bitirdin. Ama linked list veya btree'nin ne zaman can simidi olduğunu görmeden anlamış olmazsın. Bunu da ya kullanarak, yada kullanıldığı yeri görerek keşfedebilirsin, kitaptan okuyarak değil..
Kendin program yaz demişsiniz ama teorik bilgi olmadan nasıl program yazacak sorması ayıp. Ayrıca 2. cümleye de katılmıyorum kitaplardan teorik bilgi alınır, ondan sonra üstüne pratik yapılır. teorik olmadan nasıl pratik yapacaksın ki zaten.
Her zaman sordum yine soruyorum. Peki C++ için ne kullanabiliriz ? Normal bir programı denediğimde çok fazla Win32 kodu oluyor ve aklım daha da karışıyor. Ben az çok anlayıp, anlamadığım kısımları öğrenmek istiyorum. Hiç anlamayıp da 0 dan değil. C++ ile zaten ilgiliyim ve kendimi geliştiriyorum günden güne. Peki kendimi bir adım daha öteye atmak için ne yapmalıyım ?
quote:
Orijinalden alıntı: skoylu
Boşuna vakit kaybetme..
Öncelikle, inglizceni geliştir, eğer yeterli değilse.
Ondan sonra, makinene linux kur. Kendin program yaz onunla.
Elbette, mevcut kodları incelemekte var.
Bu sana yol gösterecektir. Kitap vs. gerekiyorsa, en gerektiğini böylece keşfedersin.. Ama okuyacağın hiç bir kitap, sana somut bir şeyler veremez.
Basitçe tüm veri yapılarını yaladın yuttun, bitirdin. Ama linked list veya btree'nin ne zaman can simidi olduğunu görmeden anlamış olmazsın. Bunu da ya kullanarak, yada kullanıldığı yeri görerek keşfedebilirsin, kitaptan okuyarak değil..
yukarıdaki kod bloğu c hakkında hiçbir şey bilmeyen biri için anlamsızdır, isterseniz bütün linux kaynağını inceleyin gene bir şey anlamazsınız
demek ki neymiş, işe okuyarak başlamak, adımları öğrenmek gerekirmiş
elbetteki program yazmak kitaplardan öğrenilmez ancak dilin syntaxı, kuralları, fonksiyonlarını öğrenmek için okumak şart, kodu nasıl yazacağınızı bilmeden pratik yapamazsınız
quote:
okumaya başlamadan önce okumayı öğrenmelisiniz
İşte bunda çok haklısınız. Önce okumayı öğrenmelisiniz.
Mesela:
quote:
Bu sana yol gösterecektir. Kitap vs. gerekiyorsa, en gerektiğini böylece keşfedersin..
Burayı okumadan, anlamaya çalışmadan, böyle acayip laflar etmeyeceksin mesela.
quote:
#include<stdio.h> int main() { int c=0; scanf("%d",&c); }
Bu kod, hiç C vs. bilmeyen için anlamsız filan değildir, anlamın ta kendisidir.
Velakin burada insanlar önce ikiye ayrılır. Bir grup C'ymiş vs. neymiş, ben gider okeyde taş döşemeyi öğrenirim diyenlerdir. En yakın kahvenin yolunu bu koddan bulamazlar. Ama diğer grup, C öğrenmeye niyeti olanlardır. Ki işte onlar için bu kod, öğrenilecek şeylerin ne olduğunu gösteren muhteşem bir kılavuzdur. Bu nedri diyecek, soracak, bakacak, int neymiş onu öğrenecek, fonksiyon neymiş onu öğrenmesi gerektiğini öğrenecek.
Ve işin daha asıl tarafı şudur. Böyle ne idiği belirsiz kodlarla C filan öğrenilmez.
Gidin, kanlı canlı, somut olarak çalışan, isteneni yapan kodu görün, onu inceleyin. Böyle lüzumsuz zırvalarla uğraşmayın. Kitap okunmaz mı? Elbette okunur, ama kitaptan okuduğunu anlamakla, kavramak farklı şeylerdir. Anlamış olmanız, kavramanıza yetmez.
Bunun en iyi yoluda, açacaksınız kodları, bu ne demek, ne iş, neden burası böyle diye araştırmak, bulmak, böylece konuyu somut olarak öğrenmektir.
Yoksa... Tonla teorik bilginiz olur ama hangisinin ne halta yarayacağını bilemez, hepsini unutursunuz.
Gelelim diğer bir hususa..
Kitaplarda vs. göreceğiniz örnekler, sizin şu örnek kod gibi olacaktır:
#include<stdio.h> int main() { int c=0; scanf("%d",&c); }
Bundan bir şey öğrenilir mi? Elbette. Ama programcılık ufkunuz bu kadarcık olunca, öteyi göremiyorsunuz işte.
Aklı başında hiç bir programcı, scanf() denen başbelasını kullanmaz..
Samba diye bir program vardır. Açın kodunu, bir yere bir satır strcpy yazın ve derlemeye çalışın bakalım ne göreceksiniz. Kodunda şöyle bir şey var, merak eden için:
#define strcpy ERROR_USE_SAFE_STRCPY_INSTEAD
O kod örneği diye gösterilen zımbırtılar hikayedir. İşin aslı gerçek kodların içinde yatar. Elbette o kodlara kaşama kadar bakıp, önünde secde edip hiç bir halt öğrenemezsiniz. Yapılacak şey bellidir. Kodu alacak, oradaki şeylerin her birini araştırılacak bir konu olarak işleyeceksiniz. Bu işi öğrenmenin en kolay yolu budur.
Ve bunu yapmadan, scanf(), strcpy() vs. neden kullanılmamalıdır bunu kavramanız pek mümkün olmaz. Ki görüyoruz, olmuyorda, Basit bir preprocessor tribini sanki matah bir şeymiş gibi ortaya koyup duruyorsunuz. O kodla ilgili yorum istersiniz belki: Berbatın öteside, gece bir yerleri açıkta kalmış bazı avanakların yaptığı bir bullshit, hepsi ondan ibaret.. İşte o kadar..
quote:
int main ne olduğunu bilmeyen biri için anlamsızdır, ne olduğunu bilmiyor ve neden bir fonksiyonun adının arkasında bir veri türü yazıldığını hatta int'in ne olduğunu, bellekte nasıl saklandığını bilmiyor, bunları ancak okuyarak öğrenebilir, bunun aksi ne ki?
İşte zaten anlamadığın tarafta tam olarak burası..
Öncelikle, konu başlığına bir bak:
İleri Seviye Programlama Kitabı Tavsiye
Demekki bu konuda konuşulan programlama, "ileri seviye". Burada artık main()'in ne olduğunu öğretmekten bahsetmiyoruz.
Bu işin bir veçhesi. Şimdi işin meselesine bakalım. Diyorsun ki, anlamsızdır.. Eğer öyle görüyorsan, asla ve kata programcılık denen işi öğ-re-ne-mez-sin. Bu sana anlamsız gelen şeylerin çok, ama çok büyük bir anlamı vardır. Sana çözmen gereken şeyin ne olduğunu gösterirler. Bundan iyi yol gösterici mi olur?
Öğrenmek/öğretmek konusunda bir mesele vardır. Öncelikle, siz ne kadar anlatırsanız anlatın, olay karşınızdakinin ne kadar anladığına bağlıdır. Bu malum deyiş şunu gösterir. Mesele öğretende değil, öğrenendedir.
İşte olayın bam telide burada yatar. Programcılık, C programlama gibi hususlar, öyle birinin kitaptan, videodan vs. anlatmakla öğretemeyeceği hususlardır. Öncelikle kişinin öğrenmesini bilmesi gerekir. Bu da şunu gerektirir: Öncelikle kişi, kendini öğrenme yolunda eğitecek. Kimi okur, kimi google eşeler, kimi foruma sorar, kimi başka şey yapar, ama herkesin kendine uygun bir öğrenme yolu vardır.
İşte bu tarif ettiğimiz "gidin kodları okuyun, ne yapılıyor, ne ediliyor, onlaır çözmeye çalışın" zımbırtsı, öncelikle bu "öğrenmeyi öğrenme" amacını hedefler.
İşte bu bağlamda da, o senin için anlamsız olan şeyler, size "al bunlaır öğren" diyen muazzam bir bilgi kaynağıdır.
Kaç defadır söylüyoruz, bunu anlamadınız bir türlü.
Ve sizin bu mantalitenizde, ki aslında çok yaygındır, kişisel gelişimin önünde en büyük engeldir. Kişisel gelişim, aynı zamanda programcılık içinde geçerlidir elbette.
Kitaplar...
Bu gibi işler, maalesef kitaptan öğrenilemiyor. Ama kitaplar olmadna da olmuyor, o ayrı. Kitaplar, C gibi bir dil ve programcılık gibi bir mevzuyu öğrenecek olanlar için vazgeçilmez "referanstır". Fakat, hiç bir zaman öğretici olamamıştır. İşte olay bu zaten. Kod okuyun, kod yazın, takıldığınız yerde açın kitabı, man sayfasını vs. herneyse, ona başvurun.
Zaten bir süre sonra, neyin nerde olduğunu hıfz edersiniz. Aradığınız mevzuyu bulmak çocuk oyuncağı oluverir. Öğrenmeyi, araştırmayı, bilgi edinmeyi öğrenirsiniz.
Bu bağlamda işin özü şudur. C dili ve etrafındaki heyulayı öğreneceğim, yutacağım, bitireceğim diye uğraşmayın. Daha genelde hiç bir şey için böyle yapmayın. Yani, bilgiyi kafanıza tepiştirmeye çalışmayın. Bu bilgi foseptiktir, işe yaramaz, bir moloz yığını gibi olur. Yapılması gereken, bir bilgi lazım olunca onu nerde, nasıl bulacağınızı öğrenmektir. Ötesi çorap söküğü gibi gelir.
Binlerce defa kullandığım mmap, setsockopt, gethostbyname, recvfrom vs. gibi şeyleri hala her kullanışımda açar manpage'ına bakarım önce. Deseniz yaz prototipini, eminim yazamam ezbere. Ne kasayım kendimi onu ezbere? Lazım olunca, nerdne öğreneceğimi biliyorum, bu herşeye yeter ve yetiyor.
Evet, yazılanı doğru anlayın. Burada, "ileri seviye" programlama öğrenmek için bir yöntem tarif ediliyor, bir cümlelik bir adım değil. Kodları okuyacak, onları anlamak için uğraşacak, karşınıza çıkan her adımı araştırıp çözerek ilerleyeceksiniz. İşte söylenen budur. Yoksa sizin maalesef, ikinci cümleyi okurken ilkini unutmak gibi bir hassanız zafiyetiyle anladığınız gibi "Oturun kodları okuyun, bu kafidir" demiyoruz.
yeni mesaja git
Yeni mesajları sizin için sürekli kontrol ediyoruz, bir mesaj yazılırsa otomatik yükleyeceğiz.Bir Daha Gösterme