şü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.
  • a beautiful mind filmindeki john nash karekteri gibi bir süre şizofrenik hal icerisine dalarak seneler sonra bu halınızden kurtulup bir, ssg olabilme ihtimali mevcut, siz hangi kainatı yaratmak istediginize bakınız, ayrıca bu zaman diliminde başari elde edene kadar hep başarisizliklar peşinizde gezecek, örnek olarak ssg nin hasta 1.0 programı başarısız bir projelerden biri, birde ne yapmalı etmeli c# "mutlaka ve mutlaka bilin" meli ögrenilmeli.
  • hangi programlama kastedildigine gore cevabi degisebilecek soru.

    sirali olarak,

    (bkz: decision variables)
    (bkz: objective function)
    (bkz: constraints)

    yani once neyi kontrol edersem bu sorunu modelleyebilirim deyip bir dusunmek lazim. buna karar verdikten sonra bu degisken(ler)e bagli olarak objective function'i yazariz. son olarak da yine degiskenlerimizi kullanarak kisitlarimizi ifade ederiz. gerisi hic belli olmaz.
  • 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).
  • ilginç soru. bana bir dil ver diyenler için,

    python ama ingilizce şart
  • cevabını benim de bir hayli merak ettigim soru. şüphesiz ki bir hayli faydalı olacaktır.

    hatta bununla ilgili duyuru'da iki tane konu açtım, yardım edenler oldu.
    burdan.
    ve burdan.

    (yardım etmek isteyenler, bir mesaj kadar yakınım. hem ülker link falan da istemiyorum hayırlı bir iş, hayatımı kurtaracaksınız.)

    (bkz: ssg uyuma yazarına sahip çık)
  • 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.
  • ö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ş.
  • sevgili acemi kardeşim, hoşgeldin doğru yerdesin. tam olarak burdan başla. şayet bu işe heves etmişsen, aşağıda ismini zikredeceğim programı indirip kurcalamaya başla. bunu kotarabilirsen şayet bir üst seviyeye geçebilirsin. üst seviyenin ne olduğuna zaten kendin karar veriyor olacaksın. eğer karar verememişsen go to 10.

    (bkz: small basic)