şükela:  tümü | bugün
  • bana gelen en yaygın sorulardan biri bu. buraya yazıyorum ki tek tek yanıtlamayayım.

    ben 1986 yılında abimin arkadaşından ödünç aldığı bir sinclair zx spectrum+ üzerinde şöyle başlamıştım:

    10 print "sedat"
    20 go to 10

    bu kodun ekranı sedat'larla doldurması beni büyülemişti. bakakalmıştım. abim bilgisayarı arkadaşına geri verdiğinde giden spectrum'un ardında da bakakalmıştım. bilgisayarsız dönemimde öyle program yazma krizine girerdim ki ilkokulda bilgisayarı olan arkadaşlarıma kağıtta kod verir "bunu çalıştırıp yarın çıktısını söyler misin" derdim (bkz: atari basic/@ssg). kağıttan bilgisayarlar yapardım. ekran çıktıları yazar, sonra başka bir kağıdı üzerinde yavaş yavaş aşağı çekerek "yavaş yavaş beliren anlamsız ingilizce yazılar" simülasyonu yapardım. öyle delirmiştim. sonra 1988'de babam eve bir amstrad cpc464 alınca normal insan gibi program yazmaya başladım.

    haliyle bir insanı programlamayla ilgili en gaza getirecek onu en çok sürükleyecek ilk başlangıç noktasının bizzat program yazmak, o elmayı ısırmak olduğunu düşünüyorum. bu yüzden ne zaman sorulsa "en kolay gördüğünüz yoldan başlayın" diyorum. farklı bir yöntem bilmediğimden bunu önermek zorunda hissediyorum.

    insanlar da diyor ki "e ya o yanlış tercihse?". orada da mesele aslında programlamanın temelini bir kere kapınca dildir platformdur bunların arasındaki değişimin gayet kolay olmasıyla çözülüyor. yani diyelim ki dünyanın en saçma diliyle başladın. sonra gördün ki senin yapmak istediğin için ahmet dili daha iyi. o zaman ahmet dilini öğrenmen çok daha az vaktini alıyor. "haa bu buymuş şu da şuymuş" diyorsun.

    zaten "öğrenmek", her şeyini ezberlemek de değil. bugün elinin altında internet gibi deniz derya varken sadece ne yapmak istediğine kafa yoruyorsun. ben bugün hala oturup "şu nasıldı?" diye aramam gerekiyor. zorunda olduğumdan değil, bu lüksten, hiçbir şeyi ezberlememe rahatlığından istifade etmek istediğimden. işime geliyor.

    bunlara dair internette kaynak çok. evet çoğu ingilizce. o yüzden "programlamaya hangi dilden başlayayım?" sorusunun cevabı "ingilizce" aslında. malesef türkiye koşullarında bu bir gereklilik. gelecekte olmamasını umduğum bir gereklilik.

    temelini öğrendikten sonra "ustalaşmak" ve o konuda aşmış olmak ise sürekli tatmin edilen bir merak duygusunu yağla balla beslemekten geçiyor. sorgulamak, "bu nasıl?", "bu niye?" sorularının yanıtlarını aramaktan. bir süre sonra "veri yapıları", "algoritmalar" gibi konular "peki bu bilgi gerçek hayatta ne işime yarayacak?" demediğiniz, tam tersine "aaa bu süpermiş" diyeceğiniz konulara dönüşüyor. ondan sonra bir bakmışsınız kainatlar yaratıyorsunuz, birini yıkıp yenisini oluşturuyorsunuz. öyle güzel.

    bu kadar anlatıp "programlar sizin tarlalarınızdır. onlara neresinden başlamak istiyorsanız öyle başlayın" demek biraz garip kaçıyor ama kendim için işleyen yöntem bu idi. bende işe yaradıysa sizde de yarayabilir gibi geliyor.

    ben nerede kod yazıyorum? c#'ta. c# mükemmel mi? hayır. her şeyi çözüyor mu? hayır. işimi görüyor. gölge etmiyor. kendiniz kod diyarlarında gezerken de kafaya takmanız gereken şeyler bunlar olmalı. "yapmak istediğimi yapmayı sağlıyor mu?", "bunu yaparken olabilecek en az hammaliyeyi çıkarıyor mu?". sonrası sizin hangi kainatı yaratmak istediğinize bakıyor.
  • öncelikle sevmekten ve merak etmekten başlayın. "x'in bi' arkadaşı varmış abi bi hastane otomasyon yazmış sonra şirket filan kurmuşlar parayı kırıyormuş" diyerek girerseniz bu işe afedersiniz pek bi' sikim öğrenemezsiniz. öncelikle sevin bu işi gerisi gelir sonra.

    x dili daha iyi, y dili daha ciks, z dili çok basitmiş diye de kafa yormayın. hangisi hoşunuza gittiyse oradan başlayın. olayın mantığını çözünce hepsi kolay gelmeye başlar zaten.

    object oriented yazmalıymışım, yazarken şunlara dikkat etmeliymişim diye kafanızı yormayın. en iyi program çalışan programdır. kendinizi geliştirdikçe işin alengirli taraflarını da kavramaya başlarsınız.

    maalesef ingilizce şart. türkçe kaynaklar yetersiz. forumlarda filan sorduğunuz sorular büyük ihtimalle cevapsız kalacak ya da kendini beğenmiş sığırlar ahkam keserek sizi programlamadan soğutacaktır. o yüzden ingilizce öğrenin. üşenmeyin.

    şu kursa gideceğim, bu kursa gideceğim, işin profesörü olacağım diye de düşünmeyin. kurslar işin temelini size öğretebilir fakat gerisi sizin programlamaya ne kadar zaman ayırdığınıza bakar. evde oturun, açın favori editörünüzü oturun kod yazın. sırf zevkine. bir şeyler başarmanın verdiği hazzı tadın. dediğim gibi sevmezseniz, merak etmezseniz olmaz bu iş.
  • bana bu soruyu soran kişilere bazen mantıklı, bazen anlamsız cevaplar vererek yeterli denek üzerinde yaptığım testler sonucu bizim onlara verdiğimiz cevaplardan bağımsız, tamamen kendi kişisel özelliklerine bağlı olarak başarılı olduklarını ya da şanslarını başka alanlarda denemeye karar verdiklerini gözlemledim. yani ben adama "programlamaya ortaköy'den başla" dediğimde bu arkadaş süper bir coder olma yolunda ilerleyebilirken, 3-4 sene boyunca bıkmadan usanmadan her türlü saçma sorusunu cevapladığım ve yüzbinlerce (evet yüzbinlerce!) ascii karakterini heba ettiğim bazı kişilerin bunca yıl sonunda hala "peki en doğrusu acaba şu mudur?" modunda takılıp elle tutulur hiç birşey yapamadığını da gördüm.

    özetle size soruyu soran kişiye yanlış bir yönlendirme bile yapsanız, eğer gerçekten kafaya koymuşsa doğru cevabı bir biçimde buluyor (ki ingilizce bilmeyen örneklerini de biliyorum).
  • öncelikle yazılımcı vs. olmadığımı söyleyeyim. benim işim elektronik. ama ssg'nin girdiği entry'i okuyunca kendime yakınlık hissetmedim değil. misal;
    10 print "sedat"
    20 goto 10
    yazarmış ssg. ben de renkli pattern çıkaran 4 satırlık bir kod yazardım aynı bilgisayarda*. o alette river raid oynamaktan daha çok, run yazdıktan sonra o pattern'i görmek keyif veriyordu bana. hatta oyun yükleme aşamasında bir hata oluşmasından sonra ekrana çıkan kodlara bakardım hayran hayran. bi ara elime kağıt kalem alıp onları yazmaya çalıştığımı hatırlıyorum. epey uzun olunca ve ne yazdığımı da anlamayınca devam etmedim tabi. sonrasında da çok istememe rağmen devam edemedim programlama işine. zira bilgisayarım bozulmuştu. ve yenisini alabilecek durum yoktu. ben de a4 kağıtlarına bilgisayar resmi, klavye resmi falan çizip dururdum. çok uzun süre bilgisayarsız kalmış olmama rağmen, pc world ve benzeri dergileri alıp durdum. elo elektronik dergilerindeki basic kodlarının ne anlama geldiğini çözmeye çalıştım vs. neticede o aletteki en büyük başarım, 300-500 plot ve draw'la çizdiğim türk bayrağıydı galiba.
    neyse günümüze gelirsek, microcontroller programlamak icap ettiği için yine karşıma çıktı bu kodlar/diller. c, basic, assembly başı çekiyordu. basitlik için basic'i, hız için assembly''i, destek* için c'yi tavsiye ediyorlardı. fakat genel olarak söylenen assembly'nin uzun ve takip edilmesi zor kodlardan oluştuğuydu. ben nedense assembly'e yakın hissettim kendimi. ve onunla kod yazmaya çalıştım. işimi de gördüm. o dilin de ustası vs. değilim. ama yapmak istediğimi yaptım neticede. ve o dönemde şunu fark ettim. bence dil için en önemli şey; destek. bir şeylerde takılınca, internetin en ücra köşelerine dalmak, insanı bezdirebiliyor. o açıdan, tercih edilecek dilin, o günün şartlarında iyi destek alması önemli. özellikle de yeni başlayanlar için. zaten en sikindirik* dili bile öğrendikten sonra diğer dillere atlamak ve anlamak çok daha kolay. belki bazı alışkanlıkları terk etmek zor gelebilir. ama neyi neden yaptığınızı anlamak çok daha kolay. yani yazılımcı olmayan benden alabileceğiniz en büyük öğüt; "hemen başla" olur. bir şekilde bir dile başlamak şart. ve ufak bir önerim daha var. basit ama çalışan bir projede değişiklikler yaparak, yaptığınız değişikliklerin "ekrana" nasıl yansıdığını görmek de epey fayda sağlıyor. yani hiçbir şeyini bilmediğiniz bir dilin, çalışan bir projesini indirip, en temel noktalarında değişiklik yapmak, bence bazı noktaları anlamak için epey faydalı. biliyorum pek faydalı olamadım ama bu soruya verilebilecek tek bir cevap yok maalesef. ama benim verebileceğim tek cevap; "hemen, herhangi bir dile başla" olur.

    edit: şunu da ekleyeyim. daha geçen sene bile boulder dash'in kodlarını bulabilir miyim diye epey arandım ama bulamadım. sadece kodları görmek istemiştim. öyle de manyaklık oluyor bazen : )
  • eskiden bu sorunun pek bir cevabı yoktu. (okumaya üşenenler ** kısmına atlasın)
    babanız ya c64 alır ya da çok şanssızsanız amstrad alırdı daha da şansızsanız atari alırdı.
    esas sıkıntı ondan sonrası. (ve temel nokta... geleceğiz)
    evet ben de "10 print"emre ; 20 go to 10" olayna delirmiştim ama esas sıkıntı kaynaktı.
    ve 8 yaşındaki bir velet için pek fazla bir alternatif yoktu.
    alternatif 1 : ilkokul geometri ve matematik dersleri. eve gider gitmez ilk yaptığım şey c64 basic ile basit geometri ve matematik problemleri çözmek olurdu.
    input komutunu bu şekilde öğrendik. ilk açıyı gir, ikinci açıyı gir, al sana üçündü açı. son derece kolaydı o kafayla birlikte.
    ama o zamanlar esas büyük sorun commodore dergisi programla ekleriydi.
    hem de ne ek.

    bu eklerde iki tür kod olurdu, bir full "a0 b1 00 c0 d2" diye giden ve hiç bir açıklaması olmayan makine kodu ve ulta komplex basic kodları. ki bu basic kodlarının çoğu da bildiğiniz makine, tekstil bok püsür mühendislerinin yazdığı kodlardı. bir de c64 kullanma kulavuzundaki c64 balonu kodu vardı ki (çalıştırabilen varsa beri gelsin)
    saatlerce uğraşıp o kodları makineye girer en ufak hatada hayattan soğurdum. maymun gibi olayın ne işe yaradığını bilmeyerek yazdığımdan hatanın tam olarak nerede olduğunu da bilemez, delirir kafayı yerdim. disk drive'ım da olmadığından öyle mal gibi kalırdım. hatta bilmemne makinası delme uçları hedesi hesap programı bile vardı. 8 yaşındaki velet için ne alaka siz düşünün. kaç gece disk drive hayalleriyle uyuduğumu ben bilirim.

    neyse ee tabi olay olmadı. oyun olayı ve eşe dosta arkadaşa turbo kaset hazırlayıp satmaktan öteye geçemedim.
    sonra amiga geldi. korkunç büyük heyecan. inanılmaz grafikler, disk drive filan. ilk etap salak saçma utility diskleri oluşturmaktı. kod açısından öyle pek bir şey yoktu. 64'lerde seka köşesi vardı fakat bırak o yaştayı herhangi bir yaştaki bir adamın bile o köşeyi anlaması süper zordu. anca yine maymun gibi köşedelki asm kodlarını yazıp birşey çıkarsa halay çekecek noktada takılıyorduk olaya. hatta o köşedeki kodları orasından burasından değiştirerek saçma sapan bir demo grubu bile kurmuştum. ve millet de yemişti.

    devam. sonra amiga'da amos diye bir olay çıktı. oyun geliştirme platformu. sentaskını filan hiç hatırlamıyorum ama en azından birşeyler yapabiliyordunuz da benim öyle bir şeyim yoktu. yani bi fikrim filan. zaten herşey süperdi. de ben ne yapacaktım. bir kaç saçma sapan shoot'em up denemesinden sonra "offf sikerim ya diyip" oyun olayına devam ettim.

    sonra orta 2'de sanırım bilgisayar dersi var ve hoca (hatun idi) tüm velileri toplayıp amiga oyun bilgisayarı esas bilgisayar eğitim filan pc'dir deyip bizimkilerin kanına girdi ve anaam amiga gitti bi tane 286, 14mb hd'li makine geldi eve. hd olayı tamam süper de, olay da street rod, bilardo ve larry'den başka birşey yok. (sonradan civ, indiana jones ve nicesi geldi evet) delireceğım. sene 91. metallica 91, megadeth rust in peace, slayer seasons in the abyss, carcass heartwork (emin değilim) çıkmiş ortam delirmiş. bilgisayarda ödev harici yapacak hiç bir sikim yok; yardır gitara. akşama kadar gitar, tab bok püsür. bilgisayarda qbasic ve c var bi tek adam gibi birşey yapacak onda da yapacak birşey yok. orda durdu olay.

    ara not : o olayın durduğu yerde bir amacı ya da bir faydası olanlar koptu.

    ve baya bir zaman gitti bu durum.
    universite'ye kadar. orada da işte saçma sapan süper basic, xls scriptleri filan gördük biraz (işletme)
    yine bir numara yok ( bu arada bazıları wolverine, agressor'u filan yazmıştı) biz öyle mal gibi bakıyorduk. olay başkaydı.

    sonra visual basic, delphi filan çıktı yaş 20, yine yapacak birşey yok anca elastikiyet filan hesaplıyoruz. lan amaçsız olmuyor.
    univ bitti. babamın yanında işe girdim maliyet hesabı kasıyorlar elle, "lan dedim ben bunu yaparım" o zaman bi sik yok db filan adam gibi normal kullanıcıya göre, access ve vb ile full maliyet hesaplama sistemi oluşturdum. millet de ben de kafayı yedik. orada anladım. olay tamamen amaç, hedef odaklı. ne yapmak istediğini bilmiyorsan hiç bir dil sistem filan bir işe yaramıyor. ne yapmak istediğini bil, her şey emrine amada.

    askere gittim mal gibi harekat emirleri yazıyordum, tugay komutanı çağırdı, emret dedim "tüm tugayın performasını görmek istiyorum yazar mısın" dedi "yazarım ya da yazamam demeyeyim bi düşüneyim" dedim 4 günde yazdım olayı vb'de sundum aslan kaplan ilan edildim ortamda.

    ondan sonrası zaten olay koptu, delphi ohannez ne güzel birşeydi, ms sql server filan çıktı, sonra expressi çıktı, asp çıktı onda ek$i tarzı şeyler denedim. ufak business intelligence modelleri kastım, sonra .net, c#, php bok püsür derken ortam çıldırdı delirdi.

    işte o noktada artık neresinden, nasılından konusu tamamen önemini kaybetti.

    ** olay tamamen ne yapmak istiyorsun ve hangi platformda yapmak istiyorsuna döndü.
    ki esas olayın ta kendisi de en en en başından beri "ne yapmak istiyorsun" du. yani. amaç!

    amacın olsun nasıl yapacağını bulursun. hele ki şu an ki web ortamında. her türlü.

    yeter ki "ben şunu yapmak istiyorum ve kasacağım, tüm zorluklarına göğüs gereceğim a.q" diyebil. gerisi her türlü gelir.

    en basitinden şu an rahat oynadığım genetik algoritmalar bundan 5-6 sene önce bana uzay konuları geliyordu. kastım oldu.

    sen de kas, senin de olsun :p

    edit: şu an business intelligence, linear optimization, genetik algoritmalar, simplex modelleri, forecasting, maliyet modelleri, üretim planlama optimizasyonu, cari hesap analizleri, nakit akış modelleri filan kasıyorum kendi çapımda. nmf...

    edit2 : ayrıca nerdeyse büyün acaip adamların armstrad tabanlı olması da enteresan bir olay. havasında suyunda birşeyinde kesin bir numara var.

    edit3: hayır progralama profesyonel işim değil, hastası olduğum olaylardan biri. işime destek için yazıyorum. ve seviyorum o kadar.
  • hakkında halihazırda çok güzel tavsiyeler verilmiş konu.

    benim 'nereden başlanmayacağı' konusuna naçizane ekleyeceğim birkaç şey olacak:

    günümüzde bu işe cobol ile başlanmaması gerektiği aşikar oldu artık. buna ek olarak, fazlasıyla tarihsel evrim geçirmiş ya da teknik gerekçelerle genişletilerek bugüne ulaşmış programlama ortamları kafanı bulandırmaktan başka bir işe yaramayacaktır. ne mi demek istiyorum: javascript (ve w3c dom), x86 assembly dili, sql ve hatta c++ türevleri tamamen kafa bulandırmaya yönelik ortamlardır. ekmek parası söz konusu olmasa biz de bulaşmazdık, inan bana. benzeri şekilde, php, ruby ya da visual basic .net gibi ortamlar da var, hiç bulaşma.

    program yazma ortamı olarak eclipse ya da visual studio ile başlayabilirsin ama başlamamanı tavsiye edeceğim. dikkatin dağılmasın diye. basit görünümlü ama içi kuvvetli bir editör yeter. benzeri bir nedenle emacs kullanma diyerek editör sınırımı da çiziyorum.

    diğer bir başlanmayacak nokta ise, mekaniğini anlayabilmek için farklı bir matematiksel ve bilgisayar bilimsel altyapı gerektiren programlama araçları. örneğin, antlr ya da prolog ile birşeyler yazabilirsin ama debug için bu dediğim temel gerekiyor azıcık. an itibariyle böyle bir temeli türkiye'deki lise eğitimi vermiyor.

    bir miktar karışık veya nerd işi olsalar da, fonksiyonların birinci sınıf tip olduğu ortamlar bu işi öğrenmek için çok kral ortamlardır, zaten yukarıda bir yerlerde python denmiş; hayatının bir evresinde scheme ya da ml de görmeni tavsiye ediyorum.

    öte yandan vaktin çoksa, ve ilginç birşeyler görmek istiyorsan hayatının iki gününü postscript'in nasıl birşey olduğunu incelemek için* ayırabilirsin. printer işine girmiyorsan daha fazla ayırma, eğlen gez.
  • merak ederek diye cevaplanması gereken soru. piyasada programcıyım diye gezen bir ton adamın arasından sıyrılmak için öncelikle bazı şeyleri merak ediyor olmanız lazım. programcı olduğunu iddia eden çoğu kişi copy-paste yaptığı kodun ne işe yaradığından habersiz. 10 satırda yapılacak şey için 50 satırı yapıştırıyor ve ne olsa çalışıyor diye ne yazdığına bakmıyor bile. evet çok doluyum bu konuda.

    bu aşamadan sonrası için de algoritma ve ingilizce diye cevaplanabilecek sorudur.
  • bununla ilgili şöyle bir görsel var ki bence çok yararlı.

    http://www.webmasto.com/…im-infografik-webmasto.png
  • kısaca her yere sedat yazarak.