Programlama

Programlama nedir

Programlama, bilgisayarın aynı sırayla ve tam olarak yazdığınız biçimde uyguladığı bir komut listesi yazmak demektir; ne demek istediğinizi tahmin etmeden. Asıl iş yazmak değil: kafanızdaki bulanık bir şeyi, yoruma yer bırakmayan cümlelere çevirmektir.

  • Ders 1 / 14
  • Başlangıç
  • Ücretsiz, kayıt yok

Her programın geçtiği beş adım

  1. 1

    Sorun

    Tam olarak ne çözülecek, girdi nedir ve çıktı neye benziyor.

  2. 2

    Algoritma

    İş adımları kendi kelimelerinizle, tek satır kod yazmadan önce.

  3. 3

    Kod

    Aynı adımlar, bu kez belirli bir dilin kurallarıyla.

  4. 4

    Çalıştırmak

    Ne söylediğinizi sandığınızı değil, gerçekte ne söylediğinizi öğrendiğiniz ilk an.

  5. 5

    Düzeltmek

    Hiç bitmeyen ve her programcının en çok vaktini alan adım.

Bu beş adım doğrusal görünür ama değildir. Pratikte düzeltmekten algoritmaya sürekli geri dönersiniz ve bu gidiş geliş, başarısızlık işareti değil, işin kendisidir.

Son kontrol: Bu dersteki bilgiler ve araç adları bu tarihte kaynaklarıyla yeniden doğrulanır.

Program nedir? Yanlış olmayan en sade tanım

Program, bir makinenin sırayla yerine getirdiği komutlar listesidir. Bir insana verdiğiniz yemek tarifinden farkı tam burada: insan boşlukları kendi doldurur ve bir tutam tuzun ne demek olduğunu anlar. Makine ne anlar ne de sorar.

Söylemediğiniz hiçbir şey olmaz, yanlış söylediğiniz her şey de tam o yanlışlıkla olur. Basit bir cümle ve bu işin bütün zorluğu içinde toplanmış. Karşılaşacağınız hataların çoğu dili bilmemekten gelmez; kafanızdaki cümlenin, yazdığınız cümleden azıcık farklı olmasından gelir.

Üç kelimeyi en baştan ayırın. Kod, komutların metnidir; yazdığınız ve diske kaydettiğiniz şey. Programlama dili, o metnin çevrilebilmesi için uyması gereken kurallardır. Program ise o metin çevrilip çalıştırıldığında olan şeydir. Metin kalır; program bellekte canlanır, işini yapar ve biter.

Yani programcı olmak şu tek yeteneği taşımaktır: istediğiniz şeyi, hiçbir şey anlamayan bir makinenin yapabileceği kadar kesin ve belirsizliksiz yazmak. Dil ve araçlar sonra gelir.

Gerçek bir program, beş satırda

Bu beş satır Python gerçek bir iş yapar: görsellerle dolu bir klasörü dolaşır ve belirli bir boyuttan büyük dosyaların adlarını yazdırır. Bu iş her sitede çıkar, çünkü ağır görseller çoğu sayfanın en yavaş parçasıdır.

from pathlib import Path

for f in Path("images").rglob("*.jpg"):
    size = f.stat().st_size
    if size > 200_000:
        print(f.name, round(size / 1024), "KB")

Satır satır okuyun. İlk satır klasörlerle çalışma aracını getirir. İkincisi şunu söyler: images adlı klasörün ve tüm alt klasörlerinin içinde, jpg ile biten her dosyayı teker teker al. Üçüncüsü dosyanın boyutunu bayt cinsinden alır ve size adlı bir yerde tutar. Dördüncüsü bir koşul koyar: yalnızca bu sayı iki yüz binden büyükse. Sonuncusu dosya adını boyutuyla birlikte yazdırır.

Bu beş satırdaki üç şey her dilde karşınıza çıkar: bir kümenin her üyesi üzerinde işi tekrarlayan bir döngü, karar veren bir koşul ve bir şeyi geçici tutan bir değişken. Bu üçünü bir dilde anlarsanız, sonraki dil yeni bir fikirden çok bir görünüm değişikliği olur.

Ve bu programın sahip olmadığı bir şey: images klasörünün var olup olmadığını hiçbir yerde sormaz. Yoksa hiçbir şey olmaz ve hata da yazılmaz, çünkü döngü boş bir küme üzerinde döner ve biter. Çalışmayan ama şikayet de etmeyen bir program, yeni başlayan biri için en kafa karıştırıcı durumdur ve bu sayfanın altındaki kendi işimizden bölümü tam bunu anlatıyor.

Sorundan çalışan koda, beş adımda

İlk adım sorundur ve en kısa yazılan odur: tam olarak ne çözülecek, girdi nedir ve çıktı neye benziyor. Sitem yavaş bir sorun ifadesi değildir; iki yüz kilobayttan büyük görsellerin listesini istiyorum ise öyledir.

İkinci adım algoritmadır ve neredeyse herkesin atladığı adım budur. Buradaki algoritma, tek satır kod yazmadan önce iş adımlarını kendi kelimelerinizle yazmak demektir: klasörü aç, dosyaları teker teker al, her birinin boyutuna bak, belli bir miktarı aşıyorsa adını yaz. Bir işi sade bir dille adım adım anlatamıyorsanız, sorununuz Python değildir.

Üçüncü adım koddur: aynı adımlar, bu kez bir dilin kurallarıyla. Dördüncüsü çalıştırmaktır ve ne söylediğinizi gerçekten öğrendiğiniz ilk andır. Beşincisi düzeltmektir.

Beşinci adım bitmez, tekrarlanır ve her programcının en çok vaktini alan odur. Yaygın tablo şudur: profesyonel kodu doğru yazar ve iş biter. Gerçekte olan ise şu: profesyonel, nerede yanlış gittiğini daha hızlı bulur. Küçük bir kural bu döngüyü kat kat hızlandırır: her seferinde tek bir şeyi değiştirin. Üç şeyi birlikte değiştirip program çalışırsa hangisiydi bilemezsiniz ve bir dahaki sefere yine sıfırdan başlarsınız.

Öğrenmenin gerçekte gerçekleştiği döngü

Düzeltme döngüsüvaktin çoğu burada geçer
  • 1 Yaz
  • 2 Çalıştır
  • 3 Ne dediğini oku
  • 4 Tek şeyi değiştir

Bu döngünün tek koşulu var: her seferinde tek bir şeyi değiştirin. Üçünü birlikte değiştirip çalışırsa hangisiydi bilemezsiniz.

Bir programcının vaktinin çoğu neden kod yazmakla geçmez

Dışarıdan görünen şey klavyeye yazmaktır. Su hattının altında, hiçbir kursun video çekmediği dört iş daha oturur.

Birincisi, zaten yazılmış kodu okumak. Kod, ister sizin olsun ister başkasının, yazıldığından çok daha fazla okunur. İkincisi, hatayı yeniden üretmek: bir hatayı bilerek tekrar oluşturamadığınız sürece yaptığınız her değişiklik bir tahmindir ve düzeltmiş gibi görünen şeyin yaptığınızla ilgisi olmayabilir.

Üçüncüsü, isim vermek ve karar almak. Değişken adları ve işin fonksiyonlar arasında bölünme biçimi süs değildir; kötü bir isim üç ay sonra gerçek bir hataya dönüşür, çünkü ne demek istediğinizi siz de unutursunuz. Dördüncüsü, beklemek: kurulum, çalıştırma, test, sunucunun geri gelmesi. Hiçbir müfredatın saymadığı ve her gerçek iş gününde bulunan zaman.

Bunları cesaretinizi kırmak için söylemiyoruz, tam tersine: gerçek işin böyle göründüğünü bilirseniz, tek bir hatada bir saat takıldığınız ilk seferde yeteneğiniz olmadığı sonucuna varmazsınız. O bir saat, işin kendisidir.

Görünen şey ve görünmeyen dört şey

Kod yazmak

Dışarıdan görünen tek parça ve hakkında video olan tek parça.

su hattı
  • Zaten yazılmış kodu okumak

    Kod, sizin olsun olmasın, yazıldığından çok okunur.

  • Hatayı yeniden üretmek

    Hatayı bilerek tekrar oluşturamadıkça her değişiklik bir tahmindir.

  • İsim vermek ve karar almak

    Kötü bir isim üç ay sonra gerçek bir hataya dönüşür.

  • Beklemek

    Kurulum, çalıştırma, test, sunucunun geri gelmesi. Hiçbir müfredatın saymadığı zaman.

Bu ayrım ölçülmüş bir oran değildir ve elimizde bir sayı yok. Yalnızca vakit alan ve eğitimlerde görünmeyen işlerin sıralaması.

Başlamak için tam olarak neye ihtiyacınız var?

Sıradan bir bilgisayar, ücretsiz bir metin düzenleyici, bir dil ve bir terminal. Hepsi bu. Bu dördünün hiçbiri para istemez ve hiçbiri pahalı donanım gerektirmez; bu derste gördüğünüz program sahip olduğunuz en zayıf dizüstünde bile çalışır.

Terminal, yeni başlayanların korktuğu o siyah penceredir ve aslında yalnızca düğme aramadan bilgisayara komut verdiğiniz yerdir. Öğrenmesi yarım saat sürer, sonrasında işinizin yarısı orada olur.

Çoğu kursun reklamıyla pek uyuşmayan tutumumuz şu: on satır kod yazmadan hiçbir kurs satın almayın. Önce kendi hayatınızdan küçük ve gerçek bir iş seçin, dosya adlarını düzenlemek ya da bir metin dosyasında bir şey saymak gibi, ve onu belgelerle ve birkaç aramayla kurun. Sonrasında hala düzenli bir yol gerektiğini hissederseniz, kursu o zaman alın ve ne aradığınızı biliyor olursunuz.

Pek çok kişiye daha iyi gelen daha kısa bir yol da var: genel amaçlı bir dil yerine, bir web sayfası kurarak başlayın. Çıktıyı tarayıcıda görürsünüz, geri bildirim anındadır ve döngü, koşul ve değişken fikirleri sonra JavaScript'te sizi bekliyor olur.

Programlama, kod yazmak, yazılım mühendisliği: fark ne?

Günlük konuşmada bu üçü birbirinin yerine kullanılır ve bunda bir sakınca yok. Kesin konuşursak: kod yazmak, komutları bir dilde yazma eylemidir; programlama, sorunu çözme işinin bütününü kapsar ve kod yazmak bunun tek bir adımıdır; yazılım mühendisliği ise birkaç kişi tek bir şey üzerinde çalıştığında ve o şeyin yıllarca yaşaması gerektiğinde anlam kazanır: sürümleme, test, belgeleme, teslim.

Bu ayrım pratikte işe yarar. Öğreniyorsanız kod yazmakla başlarsınız, ama asıl alıştırma yapmanız gereken şey programlamadır; yani herkesin atladığı o ikinci adım. Yazılım mühendisliği de evde alıştırma yapılacak bir şey değildir; ona, birkaç kişi olduğunuzda ya da kodunuz kendi içinde kaybolacağınız kadar büyüdüğünde ihtiyaç duyarsınız.

Yapay zekayla hızlı yol

Bugün öğrenen biri için gerçekten hızlanan şey kod üretmek değil; hiç yorulmayan ve gece ikide de yanıt veren bir öğretmene sahip olmak. Bu araçla öne geçen biriyle geride kalan biri arasındaki fark tek cümleye sığar: birincisi açıklama ister, ikincisi kod ister. Bu iş için hızlı ve ucuz bir model yerine üst sınıf bir model daha uygundur, çünkü mekanik değil yargı işidir; güncel tercihimiz bu sitenin yapay zeka bölümünde duruyor.

  1. Yapılmasını istediğiniz şeyi tek cümlede yazın, girdisini ve çıktısını belirtin. Bu, hiçbir modelin sizin yerinize atamayacağı tek adımdır, çünkü ne istediğinizi bilmez.
  2. Aşağıdaki reçeteyi doldurup verin. En eksiksiz değil, çalışan en küçük programı isteyin; anlamadığınız otuz satır, anladığınız beş satırdan kötüdür.
  3. Kendiniz çalıştırın. Hata verirse, hatanın tam metnini olduğu gibi geri yapıştırın, kendi yorumunuzu değil; sizin yorumunuz zaten henüz bilmediğiniz şeydir.
  4. Çalıştığında, içinde bilerek bırakılmış tek hata olan sürümü çalıştırın ve hatayı kendiniz bulun. Asıl alıştırma budur, doğru sürümü kopyalamak değil.
  5. Her satırın ne yaptığını bakmadan söyleyebilene kadar bir sonraki işe geçmeyin. Bu yolda size gerçek bir şey söyleyen tek ölçü budur.

Kopyalamaya hazır şablon

Rol: bugüne kadar tek satır kod yazmamış birine ders veren bir programlama öğretmeni.

Yapılmasını istediğim iş:
{işi tek cümlede yazın}
Girdi: {programa ne veriliyor}
Çıktı: {tam olarak ne yazdırılmalı ya da üretilmeli}
Dil: {Python, başka bir tercihiniz yoksa}

Yanıt kuralları:
1. Bu işi yapan en eksiksiz program değil, en küçük program. Ek kütüphane yok, yapılandırma yok.
2. Programın altında satır satır açıkla, her satır için bir cümle.
3. Bu programın hangi durumda sessizce çalışmadığını ve hiç hata vermediğini söyle.
4. Sonda, içinde tam olarak bir hata bıraktığın ikinci bir sürüm ver ve hatanın nerede olduğunu söyleme.

Çıktıya güvenmeden önce: Model, araçlarını siz vermedikçe programı çalıştırmaz; bu yüzden test edildi ve çalışıyor cümlesine, kendiniz çalıştırmadan inanmayın. Dördüncü adımdaki kasıtlı hatayı bulamadıysanız o program henüz sizin değildir: doğru sürümü değil, açıklamayı yeniden isteyin.

Bu işte yapay zeka

Yeni başlayan biri için bir dil modelinin en iyi kullanımı, programı onun yerine yazmak değil; açıklamaktır. Bir satırı anlamadınız, sorun. Hata aldınız, metnini verin. Çalışan ama size kötü görünen bir kod yazdınız, hangi kısmın daha basit olabileceğini ve nedenini sorun. Tutumumuz açık: öğrenirken bırakın açıklasın ve sizi sınasın, yerinize yazmasın.

Gerçekten işe yarayan araçlar

  • Gemini Guided Learning adında ayrı bir çalışma modu var; yanıt vermek yerine soru soruyor ve konunun sonunda özet yapıyor. Öğrenmek için istediğiniz davranış tam olarak budur. Google'ın kendi sayfası Gemini web uygulamasının 230'dan fazla ülke ve bölgede çalıştığını söylüyor ve İran o listede yok.
  • Claude Bir kod parçasını açıklamakta ve hata mesajı okumakta iyi; en kısa sürümü istediğinizde kendinden daha az şey ekliyor. İran, Anthropic'in iki desteklenen ülke listesinin hiçbirinde yok; bunu ağ testiyle değil, Anthropic'in kendi sayfasında okuduk.
  • ChatGPT En yaygın seçim ve bu iş için kabul edilebilir. Yapay zeka bölümümüzde henüz ona ait bir kayıt yok, bu yüzden erişimi ya da fiyatı hakkında burada bir iddiada bulunmuyoruz.

Nerede geri teper

Yeni başlayan biri için asıl risk, modelin yanlış kod vermesi değil; doğru kod vermesidir. Çalışan ama neden çalıştığını bilmediğiniz bir program size hiçbir şey katmamıştır ve bozulduğu ilk gün elinizde hiçbir şey kalmaz. İki alışkanlık bunu önler: hep en küçük sürümü isteyin ve her çalıştırmadan önce çıktıyı tahmin edin. İkinci risk daha somut: model, bilgisayarınız hakkında aynı kendinden emin tonla var olmayan bir şey söyler; bir komutun adı ya da bir dosyanın yolu gibi. Anthropic bunu kendi belgelerinde halüsinasyon diye adlandırıp azaltma yollarını anlatıyor; yani üretici de bunu söylenti değil, gerçek bir zayıflık sayıyor. Kural basit: modelin sisteminiz hakkında söylediği her şey gerçek bir çalıştırmayla ölçülmelidir. Bu araçların İran'dan nasıl ödenebileceği için satın alma rehberine bakın.

Kaynaklar: Anthropic: reduce hallucinations Anthropic: supported countries Google: where the Gemini web app is available Google: how Guided Learning can help you study

Bu tavsiyenin sınırı

Bu ders size bir harita verir, beceri değil. Yüzme kurallarını okuyarak kimse yüzücü olmadığı gibi, bunu okuyarak da kimse programcı olmaz; tek yaptığı ilk on satırı daha az korkutucu kılmaktır. İkincisi, bu sayfadaki örnek Python ve söz dizimi Python'a ait; döngü, koşul ve değişken her yerde vardır ama yazılış biçimleri dile göre değişir. Üçüncüsü, bu sayfadaki hiçbir şey size ne kuracağınızı söylemez. O sorunun teknik bir yanıtı yoktur ve yanıtı kendi işinizden ya da hayatınızdan gelmelidir.

Kendi işimizden

Bu dersin denetlendiği gün, aynı beş satırı bu sitenin kendi yükleme klasöründe çalıştırdık. 318 jpg dosyası incelendi ve 100 satır yazdırıldı. Geri gelen ilk satır 199 KB boyutunda bir dosyaydı; oysa program yalnızca 200 kilobayttan büyük dosyaları göstermeliydi. Program hiçbir hata yapmamıştı: size > 200_000 koşulu baytları sayarken round(size / 1024) 1024'e bölüyor, dolayısıyla 204.125 baytlık bir dosya tam olarak 199 çıkıyor. Kafamızdaki cümle, yazdığımız cümle değildi ve bu dersin anlatmak istediği şeyin tamamı budur. Kendiniz görmek isterseniz, beş satırı herhangi bir görsel klasöründe çalıştırın ve ilk çıktı satırını yazdığınız koşulla karşılaştırın.

Gerçek devam soruları

Programlama zor mu?

Zor değil, yavaş. İlk haftadaki hiçbir kavram harita okumaktan zor değildir, ama yerleşmesi tekrar ister ve bırakanların çoğu bir kavramda değil, okuyamadıkları ilk hatada bırakır. Hata mesajlarını ciddiye alırsanız zor kısmı geçmiş olursunuz.

Programlamak için İngilizce gerekir mi?

Dilin kendi kelimeleri azdır ve ezberlenir: bu sunucudaki Python'da 35 anahtar kelime var ve bunları python3 -c "import keyword; print(len(keyword.kwlist))" komutuyla kendiniz sayabilirsiniz. Gerçekten İngilizce isteyen şey belgeler ve hata mesajlarıdır, bugün makine çevirisi de bunun için yeterlidir. Yani İngilizce bilmemek başlamamak için bir gerekçe değil, ama teknik İngilizce okumak hızınızı katlar.

Programlamanın bana göre olup olmadığını nasıl anlarım?

Kendi haftanızda sizi sıkan tekrarlı bir iş bulun ve onu yapan on satır yazın. Çalıştığı an size ilginç geldiyse yanıtınızı almışsınızdır; yalnızca bittiği için rahatlamışsanız, muhtemelen programlama değil bir araç istiyorsunuzdur ve bu da tamamen doğru bir seçimdir.