PDA

Tam Sürümünü Görmek İçin : Standart bir soru ; Nereden başlamalıyım?


Maxis
05/05/2007, 16:45
Selam arkadaşlar.

Başlıkta da değindim, standart ve klasik bir soru olacak. Ama gerçekten ihtiyacım olduğu için soruyorum, laf olsun diye değil http://forum.iyinet.com/images/smilies/smile.gif Yaklaşık 10 sayfa gezindim, daha önce açılmamış sanırım.

Burdaki arkadaşların tecrübelerinden faydalanmak gerekirse..

C++ diline başlamak istiyorum. Nereden başlamalıyım? (sorumun temeli bu.)

PHP ve Visual Basic dillerinde kendimi geliştirdim. Bu iki dili de işimi görecek şekilde kullanabiliyorum. PHP nin C, C++ ve türevi unix tabanlı diller grubunda olması sebebiyle öğreneceğim C++ dilinde yapı olayını çabuk kavrayacağımı düşünüyorum. Tabi ikisi farklı amaçlar için kullanılan diller oldukları için çokta etkisi olmayacaktır.

Bu noktada, C++ gibi kuvvetli ve geniş çaplı bi dile başlamak için, hangi yolu seçmeliyiz. Yani, "C++ den önce şunu öğrenirsen işin kolaylaşır, önce şu olayı bi kavra, önce şu kitapdan başla, önce şu örneklerden başla" gibi önerileriniz varsa bilmek isterim.

Şimdiden teşekkürler.


ubuntu
05/05/2007, 18:46
Bu soruyu ben daha önce sormuştum :)
C++ hakkında hiçbir şey bilmiyorsan (bilsen bile tavsiye ederim aslında) sana şu kitabı alıp okumaya başlamanı tavsiye ederim. Sıfırdan başlıyor ve çok anlaşılır bir şekilde anlatılıyor. Her konu örneklerle verilmiş. Örnekler açıklanmış ve çıktısı verilmiş. Kısaca aradığın herşey bu kitap bence. Bu kitap çok güzel bir başlangıç olacaktır.

Nesne yönelimli c++ programlama klavuzu
Robert Lafore
Alfa yayınları

acehreli
06/05/2007, 03:02
ubuntu'nun daha once yazdiklarindan anladigimiza gore, kitaptaki bazi ornekler Linux'ta calismiyormus. Eger Linux ortaminda calisacaksan, calismayan programlari ubuntu'ya sorabilirsin; calistirma yollarini biliyor... :)

Ali

onur@debian
06/05/2007, 03:18
Kitapcilarda veya internette c ve c++ icin bir cok kaynak mevcut. Programlamayi eger bir script dili olan PHP'de cozduysen C ye biraz alisirsan devami corap sokugu gibi gelecektir. Fakat yine de php bilgine fazla guvenme, C veya C++'in bitwise operatorlerinde, pointerlerde, oop ye baslangicta takilabilirsin. Onemli olan azim ve bence apiler icin Ingilizce'de baya onemli.

HaokaH
06/05/2007, 03:25
Once teknik ingilizce.. Bildikten sonra kodlar peşpeşe atsanda bazen tutuyor ;)

Sonra Matematik daha sonra Elektronik mantIgI.. Elektronik dedim cünkü calIsmalarIn nerelere gelecegini hayal bile edemiyecegin anlar olacaktIr.. KapIlar vardIr elektronikte, portlarin kullanimi felan filan feslegen..

ZIpladIk geldik Algoritma mantIgIna.. Onuda cözdün mü kimse tutamaz seni..

Kitap temini şart.

Derleyicilerin Help'inde sabahlaman ve uykusuz kalman vazgeçilmez bir kaynaktIr.

Arkantos
06/05/2007, 13:36
Eğer ingilizceniz varsa Accelerated C++
Practical Programming by Example kitabını tavsiye edebilirim. Gayet öğretici, içindeki örnekler kaliteli, kısaca lolipop tadında bir kitap :) Zaten yazarları da uzun süre Stanford Üniversitesinde C++ kursları vermiş olan iki tane akademisyen..

Kitabın sitesinin adresi de burası:

http://www.acceleratedcpp.com

Amazon'dan da satın alabilirsiniz.. Tabi ki C++'den önce zaten başka bir programlama dili zaten bilmiyorsanız öğrenmeye gerek yok.. Direkt C++ öğrenerek işe başlayabilirsiniz.

pupil_uni
06/05/2007, 14:00
arkadasim istersen bana pm at sana oncelikle dokuman gonderimi yapayim birkac yol gostereyim... once o dokumanlardan basla... bnm zamaninda ilk giris yaptigim notlar...
cok yararli olacaktir sana da emin olabilirsin... daha sonra zaten ihtiyacina gore kitap alabilirsin... ama bana kalirsa once net ortamindan yardim alarak basla derim kodlamaya...

CompEngineer
06/05/2007, 17:33
ben itude okuyorum bak bize nerden basladilar ogretmeye :d
http://www.buzluca.com/oop/slides.html

tabi ingilizce sitede turkce olanlarida var galiba ama onlar eksik bildigim kadariyla bakabilirsin
bizim feza hocanin notlari bunlar

ayrica bircok hazirlanmis guzel orneklerde var
ornekler gayet guzel hazirlanmis bakmani tavsiye ederim
ama bu slidelardan guzel bir program yazabilecek seviyeye gelirmiyim dersen
cevap malesef

pupil_uni
06/05/2007, 20:35
ama bu slidelardan guzel bir program yazabilecek seviyeye gelirmiyim dersen
cevap malesef

keske eksikligini de belirtseydin.... bunun cevabini merak ettim? neden?

mr_c
06/05/2007, 21:49
Assambly den başla neleri yapmakta zorlandığını neleri defalarca yazmak zorunda kaldığını anladığında C++ ın neden varolmak zorunda olduğunu ve neden bu şekilde kodlandığını tamamen anlamış olursun.
Daha sonra windows programcılığına başla sınıfların neden lazım olduğuna kesinlikle emin olursun.

Euclides
06/05/2007, 22:10
Assambly den başla neleri yapmakta zorlandığını neleri defalarca yazmak zorunda kaldığını anladığında C++ ın neden varolmak zorunda olduğunu ve neden bu şekilde kodlandığını tamamen anlamış olursun.
Daha sonra windows programcılığına başla sınıfların neden lazım olduğuna kesinlikle emin olursun.
C'de nasılsa asm'de de öyle defalarca falan yazmazsın.
Ayrıca OO Asm'ninde olduğunu hatırlatırım...

mr_c
06/05/2007, 22:20
nesneye yönelik programlamanın ne olduğunu yada hangi dilde uygulanabilir olduğunu tartışmıyorum. int 21h direktifini defalarca kullanmadan zamanında program yazılmıyordu.
call lardan sonra ret kullanmak gibi tekrar eden sıkıcı yinelemelere girmiyorum bile. Herhangi bir programlama dilini kavramanın en iyi yolunun, bellek yerleşminin nasıl olduğunu, kısa ve uzun dallanmaların ne demek olduğunu, fonksiyon çağırırken bilgisayar registerlerinin içinde neler olup bittiğini kavramayı gerektirdiğini vurgullamaya çalıştım.

Ayrıca windows programcılığında pencere buton vs oluşturmak ve olayları tanımlamak ve kontrol altında tutmak için de oop nin alternatifinin sınırlı olduğunu belirtmek istedim.

yazım tarzınızdaki agresiflik hoşuma gitmedi. Böyle devam etmemenizi rica ederim.

acehreli
06/05/2007, 23:44
Ben iki mektubu da degistirilmemis halleriyle goruyorum (altlarinda "edited" yazmiyr). Euclides'inkinde su yazili:

"C'de nasılsa asm'de de öyle defalarca falan yazmazsın.
Ayrıca OO Asm'ninde olduğunu hatırlatırım..."

mr_c, bir yerini yanlis mi okudun acaba?

Ali

mr_c
06/05/2007, 23:54
Birinci kısında C den değil C++ dan bahsettim, ikinci kısımda windows programlama ile oop ilişkisinden bahsettim. assambly de oop varmı yok mudan değil. Ben yanlışmı yazmışımda bu cevabı aldım. Agresif ve assambly savunur bulduğum için uyarıda bulunmakla hata mı ettim acaba?

acehreli
07/05/2007, 08:18
Ben assembly'de OO oldugunu bilmiyordum; onun icin onu ek bir bilgi olarak aldim. Herkes bildigi seyleri soyluyor...

Euclides'in yazdiginda agresif olan bir sey gormedigim icin de sormak istedim. Siz "boyle devam etmemenizi rica ederim" diyince; bariz olan bir sey de goremedigim icin bir yanlis anlama olabilecegini dusundum.

Ali

Euclides
07/05/2007, 10:41
int 21h direktifini defalarca kullanmadan zamanında program yazılmıyordu.
call lardan sonra ret kullanmak gibi tekrar eden sıkıcı yinelemelere girmiyorum bile.

Bunlar 286 zamanında olan şeyler taaa 80'lerde, 25 yıl önceki hâli ile yargılamak doğru mu ???

Birinci kısında C den değil C++ dan bahsettim, ikinci kısımda windows programlama ile oop ilişkisinden bahsettim.
Bende zaten önce C gibi olduğunu söyleyip sonra OO desteklediğini söyledim.
Yani sizin asm 'nin eksikleri yüzünden C++'a ihtiyaç vardır tezininin gerçeklerle bağdaşmadığını anlatmaya çalıştım. (C++'a ihtiyaç varmı yokmu o ayrı konu, ama ihtiyacın sebebi asm'nin bugünkü zorluğu yada eksikliği değil)

assambly de oop varmı yok mudan değil. Ben yanlışmı yazmışımda bu cevabı aldım.
Evt.

ayrıca OO asm'nin detayları için http://objasm32.tripod.com/

hasanyasin
07/05/2007, 18:30
Euclides'in mesajında öfkeli bir yan yok ki sevgili mr_c (: acehreli'nin göremediğini ben de göremedim; ama olur öyle, hepimiz insanız, birimizin farklı bir mürekkeple yazdığı şeyi bir diğerimiz farklı bir renkle görmüş olabilir. Küçük şeylerin üzerinde durmak çok da anlamlı olmasa gerek...

Sevgili Maxis, sorunuzda C++'a nasıl başlarım diyorsunuz. Yani zaten kararınızı vermişsiniz. Sizin hedefiniz C++ öğrenmek. Bu sizin için en uygun dil midir değil midir arada başka şeyler öğrenmek daha mı iyi olur gibi derin düşüncelere dalmaya gerek yok. Madem ki C++ öğrenmek istiyorsunuz, o halde C++ öğrenin, başka bir şey değil...

Peki bunu nasıl yapacaksınız? İyi bir kaynak seçerek. Her insanın farklı bir anlayış tarzı, çalışma şekli, düşünce yapısı var. Siz sizi hepimizin tanıyacağından daha iyi tanıdığınıza göre, kendinize en uygun kitabı seçmek için en uygun kişi de sizsiniz. Bir sürü yere dallanıp budaklanmadan bir esere başlayıp bitirmek sizin için uygundur belki. Belki de bazı öğrencilerimde gördüğüm bir şeyi otuz yerden okumadan bir sonraki adıma geçememe durumu geçerlidir... Kendinize uygun yolu bulmak için kendinize sorun bu soruyu ciddi ciddi...

Başarılar...

mr_c
07/05/2007, 18:56
Bunlar 286 zamanında olan şeyler taaa 80'lerde, 25 yıl önceki hâli ile yargılamak doğru mu ???


Bende zaten önce C gibi olduğunu söyleyip sonra OO desteklediğini söyledim.
Yani sizin asm 'nin eksikleri yüzünden C++'a ihtiyaç vardır tezininin gerçeklerle bağdaşmadığını anlatmaya çalıştım. (C++'a ihtiyaç varmı yokmu o ayrı konu, ama ihtiyacın sebebi asm'nin bugünkü zorluğu yada eksikliği değil)


Evt.

ayrıca OO asm'nin detayları için http://objasm32.tripod.com/

Böyle bir tezim yok bu kanıya varmanızın nedenini anlamadım. Dil öğrenmekten ziyade bilgisayarın çalışma ilkelerini anlamak konusuna değindim. Aksine ben assambly ile programlamayı vaktim olduğunda daha çok tercih ederim. Daha önce forumlarda assambly ile windows programcılığı ile ilgili örnek kodları da konuştuk. bkz main fonksiyonunu kim çağırır.
Mesele oop değil yada asm eksikleri değil, başlamak için doğru yer neresi. Nesneye yönelik diller kategorisine soktuğumuz dillerin çoğu aslında oop değil, Gerçek nesneye yönelik programla diline örnek LISP, asm oop destekleyebilir ama oop dili değil bunlar ayrı konu ve girmeye gerek yok. Bildiğimiz şeyler olduğundan detaya girmiyorum ayrı bir konuda detaylarını konuşuruz.

acehreli
07/05/2007, 20:19
Konudan uzaklastik; amacim uzatmak da degil ama LISP'in gercek nesneye yonelik program ornegi olarak gosterilmesi dogru degil. Cunku LISP de C++ gibi, cok cesitli programlama yontemlerini destekleyen (multi-paradigm) ve yine onun gibi nesneye yonelik programlamayi da destekleyen bir dildir.

Nesneye yonelik programlamanin atasi olarak Simula gosterilir; mantigi kuvvetle nesneye yonelik programlama uzerine kurulu olan diller olarak da Smalltalk, Eiffel, Ruby, vs. gosterilir. Bu bilgilerimi hatirlamada su sayfadan yararlandim: :)

http://en.wikipedia.org/wiki/Object_oriented_language

Euclides, orada assembly'yi ayrica yazmamislar. OO assembly'nin baska bir adi mi var? Belki de sen eklersin... :)

Ali

Euclides
07/05/2007, 20:49
Bildiğim kadarıyla özel bir adı yok acehreli, link'deki gibi bir macro paketi. 2001 doğumlu :)
Sınıflar tanımlıyor , inheritance, function overloading, vb.. yapabiliyorsunuz.

Ancak şunun altını çizmekte fayda görüyorum, Wikipedia'nın ilgini linkinde lisp oo olarak geçmiyor. Fakat gene wikipedianın başka bir bölümüde böyle
http://en.wikipedia.org/wiki/CLOS
"...object system which differs radically from the OOP facilities found in static languages such as C++ or Java."

Böyle bir çelişki yaşamamın nedeni şuradaki tanım:

http://en.wikipedia.org/wiki/Object-oriented_programming
"Object-oriented programming (OOP) is a programming paradigm that uses "objects" to design applications and computer programs. It utilizes several techniques from previously established paradigms, including inheritance, modularity, polymorphism, and encapsulation."

Bu şimdi temel kavramların aynen dile yansıtıldığını düşünürsek, bu oo bir dil midir ? değil midir ?

Tabii bunlar üzerine çok tartışılabilecek, yoruma açık konulardır. Sadece düşüncelerimi yazdım :)

acehreli
07/05/2007, 21:00
O Wikipedia listesinde "Common Lisp" adiyla geciyor.

Ali

Euclides
07/05/2007, 21:38
ouch, L harfine bakarken dikkat etmemişim, o zaman asm'nin eklenmesi için baskı yapalım :P