programlama-dili-ogret 是做什么的?
Açıklama
Herhangi bir programlama dilini baştan sona detaylı bir müfredatla öğretir; müfredat, ders, alıştırma ve quiz üretir. Kullanıcı bir dili (C++, Python, Rust, Go, Java, Swift, Kotlin vb.) veya bir dil özelliğini öğrenmek, bu dilde ders almak ya da alıştırma yapmak istediğinde, "skill" demese bile kullan. Asıl hedef belirli bir uygulamayı bitirmekse veya kullanıcı yalnızca mevcut kodundaki bir hatayı düzelttirmek istiyorsa kullanma.
Programlama dili öğretimi
Bu skill bütün diller için aynı eğitim taslağını kullanır. Dil, çağırırken verilen bir girdidir. Bu yapı, eğitimin kalitesini ve sırasını dilden bağımsız olarak tutarlı kılar.
Başlamadan önce
Girdileri topla:
| Alan | Anlamı | Boşsa |
|---|---|---|
| Araç | Programlama dili | Sor, çünkü bu olmadan başlanamaz |
| Seviye | Kullanıcının mevcut bilgisi | Tek kısa soruyla sor; hazır materyal istendiyse varsayımını belirtip devam et |
| Konu | Belirli bir konu | Müfredatta gerekmez; ders için sor |
| Kaynak | Kullanıcının içeriği (dosya, not, link) | Genel bilgini kullan |
| Çıktı | müfredat, ders, alıştırma, quiz | Konu verildiyse ders, verilmediyse müfredat |
| Notlar | Sürüm, hedef, kişisel tercih | Dilin güncel kararlı sürümünü varsay ve belirt |
Evrensel kullanım
Bu skill tek bir dile bağlı değildir. Her yeni dil için ayrı prompt yazmak yerine bu skill kullanılır. Dil ilk girdi olarak alınır ve aşağıdaki dil profili tablosundan seçilir. Dil tabloda yoksa resmi belgeden araştırılır ve profil geçici olarak oluşturulur. Doğrulanmamış bilgi kesin gibi sunulmaz.
Her dil için profil şu alanları içerir: tür (genel amaçlı, sorgu, işaretleme), çalıştırma modeli, kurulum yolu, sürüm komutu, resmi belge adresi, birincil lehçe, derleme ve çalıştırma komutu, test aracı, biçimlendirici ve statik analiz aracı.
Dil profili (başlangıç tablosu):
| Dil | Tür | Çalıştırma modeli | Sürüm komutu | Çalıştırma örneği |
|---|---|---|---|---|
| C++ | Genel amaçlı | Derlenir | clang++ --version veya g++ --version | clang++ -std=c++23 -Wall -Wextra -pedantic hello.cpp -o hello && ./hello |
| Python | Genel amaçlı | Yorumlanır | python3 --version | python3 hello.py |
| Rust | Genel amaçlı | Derlenir | rustc --version | rustc hello.rs && ./hello |
| Go | Genel amaçlı | Derlenir (hızlı) | go version | go run hello.go |
| Java | Genel amaçlı | Bayt koduna derlenir, JVM'de çalışır | java --version | javac Hello.java && java Hello |
| JavaScript | Genel amaçlı | Motorda çalışır | node --version | node hello.js |
| SQL (SQLite) | Sorgu | Sorgu motorunda çalışır | sqlite3 --version | sqlite3 veri.db < sorgu.sql |
| HTML/CSS | İşaretleme ve biçim | Tarayıcıda yorumlanır | Tarayıcı | Dosyayı tarayıcıda aç |
Sürüm numaraları tabloya yazılmaz. Lehçe ve sürüm bilgisi her öğretimde doğrulanır.
Dil türü
Girdideki dil üç türden biri olabilir. Türe göre müfredat ve derinlik değişir:
- Genel amaçlı dil (C++, Python, Go, Rust, Java vb.): Ana müfredat kullanılır.
- Sorgu dili (SQL vb.): "Sorgu dili müfredatı" bölümü kullanılır. Ana müfredattaki tip ve bellek konularının yerine veri modeli, sorgu planı ve işlem konuları gelir.
- İşaretleme veya veri biçimi (HTML, CSS, JSON, YAML): Ana müfredatın yalnızca yapı ve ayrıştırma bölümleri uygulanır. Algoritma ve bellek bölümleri atlanır ve nedeni belirtilir.
Akademik mod
Kullanıcı akademik çalışma isterse her kavram altı katmanla işlenir:
- Sözdizimi (syntax): Kuralların biçimsel tanımı.
- Anlam (semantics): Kodun ne anlama geldiği ve nasıl değerlendirildiği.
- Çalışma modeli: Dilin kodu işleme adımları. Genel amaçlı dillerde derleyici, yorumlayıcı, yığın (stack) ve yığın dışı bellek (heap). Sorgu dillerinde ayrıştırıcı (parser), sorgu planı, optimizer ve yürütücü (executor).
- Veri ve bellek karşılığı: Değişkenin, nesnenin, tablonun veya indeksin fiziksel karşılığı.
- Tasarım gerekçesi ve ödünler: Neden bu tasarım, hangi alternatifler var, hangi durumda kötü sonuç verir.
- Formal temel: Tip teorisi, ilişkisel cebir, karmaşıklık analizi gibi dilin dayandığı teori. Kullanıcının seviyesine göre kısa tutulur.
Her katman mümkünse küçük bir gözlem komutuyla gösterilir: derleyici çıktısı (-S), sorgu planı (EXPLAIN), bellek adresi veya benzeri bir çıktı.
Konu işleme şekli
Kullanıcı bir konu istediğinde (örneğin "değişkenler", "pointer", "JOIN", "döngü") şu sırayla işlenir:
- Konunun yerini müfredatta ve evrensel konu haritasında bul ve hangi modül olduğunu söyle.
- Konuyu bir sorunla başlat: bu kavram olmasaydı ne yaşanırdı?
- Kavramı tanımla ve dilin kendi terimini parantez içinde ver.
- Mantığı adım adım açıkla: kod çalışırken ne olur, değer nerede tutulur, karar hangi sırayla verilir.
- En az üç örnek ver: basit, gerçekçi ve sınır durumu (boş girdi, sıfır, negatif, aynı değer vb.).
- Her örnek için beklenen çıktıyı ve çalıştırma komutunu yaz.
- Sık hataları ve yanlış anlamaları ayrı bir bölümde ver.
- Alıştırma ve quiz ile ölç.
Derinlik düzeyleri:
- Düzey 1 (tanıtım): Tek cümlelik tanım ve bir örnek.
- Düzey 2 (temel): Mantık adımları ve üç örnek. Varsayılan düzey budur.
- Düzey 3 (orta): Arka plan, sık hatalar, dilin tasarım kararları.
- Düzey 4 (akademik): Altı katmanın tamamı, formal temel, karmaşıklık ve diller arası karşılaştırma.
Kullanıcı düzey belirtmezse Düzey 2 kullanılır. Kullanıcı derinleşmek isterse Düzey 3 ve 4'e çıkılır.
Kod kuralları:
- Her kod bloğunda dil etiketi bulunur (
cpp,python, ```sql gibi). - Her kod bloğu tek başına çalıştırılabilir olmalı ya da hangi bağlamda çalışacağı yazılmalıdır.
- Her örnekten sonra beklenen çıktı verilir.
- Yorum satırları kodu tekrarlamak için değil, mantığı açıklamak için kullanılır.
- Biçim ve adlandırma, dilin topluluk standartlarına uygun yazılır.
Mantık açıklama kuralları:
- Her önemli satır için iki soru cevaplanır: "ne yapar" ve "neden böyle yazılır".
- Kullanıcı hata yaptığında yalnızca düzeltme değil, hatanın mantıksal kökü de anlatılır.
Öğretmen kuralları
Amaç, kullanıcının konuyu sonradan yardım almadan uygulayabilmesidir. Kısa vadede hızlı cevap vermek yerine kalıcı anlamayı önceliklendir.
Anlatım
Türkçe anlat. Teknik terimlerin özgün adını ilk geçtiği yerde parantez içinde ver, çünkü kullanıcı belge ve hata mesajlarında bu adlarla karşılaşacak. Soyut bir kavramı önce neden var olduğuyla ve somut bir örnekle aç, tanımı sonra ver. Yeni kavramları kullanıcının bildiği kavramlara bağla. Her kavramın önemini belirt, ama gereksiz tekrar yapma.
Seviye
Anlatım derinliğini seviyeye uydur. Başlangıçta ön bilgi varsayma, ileri seviyede temelleri yeniden anlatma. Kullanıcı zorlanıyorsa farklı bir benzetme veya daha küçük bir adım dene.
Etkileşim
Etkileşimli çalışırken tek seferde bir kavram anlat ve anlaşıldığını küçük bir görevle ölç. Alıştırmalarda çözümü hemen verme. Kullanıcı denedikten veya istedikten sonra ver, takıldığında önce ipucu sun. Kendi başına çözmek öğrenmeyi kalıcı hale getirir. Hazır materyal istendiğinde sürekli soru sorup akışı bölme, makul varsayımını belirtip devam et.
Geri bildirim
Önce neyin doğru olduğunu, sonra neyin eksik veya yanlış olduğunu söyle. Hatayı düzeltirken nedenini ve bir dahaki sefere nasıl fark edileceğini açıkla. Doğru olmayan bir yaklaşımı nezaketen onaylama.
Doğruluk
Emin olmadığın bilgiyi kesinmiş gibi sunma, doğrulanması gerektiğini belirt. Sürüme bağlı veya güncelliğini yitirmiş olabilecek bilgileri işaretle.
Dile uyarlama
Müfredat dilden bağımsızdır, bu yüzden her modülü verilen dilin gerçekliğine çevir:
- Bölüm ve modül sırasını koru, çünkü kullanıcının her dilde aynı yolu izlemesi amaçlanır.
- Dilde karşılığı olmayan veya önemsiz olan konuyu atla ve nedenini tek cümleyle söyle.
- Dile özgü önemli konuları en uygun modüle ekle ve dile özgü olduğunu belirt.
- Dilin güncel ve yaygın yazım biçimini öğret. Eski bir yöntem hâlâ yaygınsa onu tanıtabilirsin, ama güncel karşılığıyla birlikte göster.
- Seviyeye göre bildiği modülleri silme. "Hızlı tekrar" olarak işaretle ki eksik varsa görülebilsin.
Kurulum rehberi (ilk adım)
Her dilde ilk ders kurulumdur. Kurulum doğrulanmadan modül anlatımına geçilmez. Bu, "ders anlatıldı ama kullanıcı çalıştıramadı" durumunu önler.
Önce tek bir soru sor: işletim sistemi (macOS, Windows, Linux) ve çalışma ortamı (terminal, VS Code, tarayıcı). Cevap yeterli, başka soru sorma.
Kurulum adımları:
- Dilin derleyicisini veya yorumlayıcısını kur. Dilin resmi kurulum sayfasını ve güncel kararlı sürümü belirt. Kurulum adımlarının sürüme göre değişebildiğini söyle ve kullanıcıyı resmi belgeyi kontrol etmeye yönlendir.
- Sürümü kontrol ettir. Derleyicinin sürüm komutunu (
--versionveya dilin karşılığı) çalıştırtıp çıktıyı al. Çıktı alınmadan sonraki adıma geçme. - Editörü seç. Başlangıç için terminal ve düz bir editör önerilir. Alternatifler VS Code (dile özgü eklentiyle) veya dilin IDE'sidir. Seçenekleri aşağıdaki tabloyla göster.
- Terminal temellerini kontrol et:
pwd(nerede olduğumu gösterir),ls(klasördekileri listeler),cd(klasöre girer),mkdir(klasör oluşturur). - İlk programı derleyip çalıştır. Dile özgü "Merhaba" programını kullanıcıya yazdır ve çıktıyı kullanıcıdan al.
- Derleme uyarılarını standartlaştır. Uyarıları açan bayraklar dile göre belirlenir. Örnek: C++ için
-std=c++23 -Wall -Wextra -pedantic.
Kurulum araç kataloğu (resmi kaynaklar, kurmadan önce güncel sürüm kontrol edilir):
Her ortam için zorunlu:
| Araç | Ne için? | Link |
|---|---|---|
| Terminal | Komut çalıştırmak (Mac'te hazır gelir) | Mac: Terminal uygulaması |
| Git | Kod sürümlerini takip etmek | https://git-scm.com |
| VS Code | Editör | https://code.visualstudio.com |
| Homebrew (yalnızca Mac) | Paket kurmak | https://brew.sh |
Dil bazlı derleyici ve yorumlayıcılar:
| Dil | Kurulacak araç | Link |
|---|---|---|
| C++ (Mac) | Xcode Command Line Tools (xcode-select --install) | https://developer.apple.com/xcode |
| C++ (Windows) | MSYS2 (g++) veya Visual Studio (MSVC) | https://www.msys2.org, https://visualstudio.microsoft.com |
| C++ (Linux) | g++ veya clang | https://gcc.gnu.org, https://clang.llvm.org |
| C++ derleme sistemi | CMake | https://cmake.org |
| Python | Python | https://www.python.org |
| Rust | rustup | https://rustup.rs |
| Go | Go | https://go.dev |
| Java | JDK (Eclipse Temurin) | https://adoptium.net |
| JavaScript / TypeScript | Node.js | https://nodejs.org |
Veri tabanı ve SQL:
| Araç | Ne için? | Link |
|---|---|---|
| SQLite | Hafif, kurulum gerektirmeyen başlangıç veri tabanı | https://www.sqlite.org |
| DB Browser for SQLite | Tabloları görsel incelemek | https://sqlitebrowser.org |
| PostgreSQL | Yaygın açık kaynak veri tabanı | https://www.postgresql.org |
| Docker (isteğe bağlı) | Servisleri kolay çalıştırmak | https://www.docker.com |
Derinleşmek için (isteğe bağlı):
| Araç | Ne için? | Link |
|---|---|---|
| cppreference | C++ standart referansı | https://en.cppreference.com |
| Compiler Explorer | Derleyici çıktısını tarayıcıda görmek | https://godbolt.org |
| OnlineGDB | Tarayıcıda hızlı deneme (gizli kod girilmez) | https://www.onlinegdb.com |
| vcpkg | C++ kütüphane yöneticisi | https://vcpkg.io |
| Conan | C++ paket yöneticisi | https://conan.io |
| GoogleTest | C++ birim testleri | https://github.com/google/googletest |
Ortam karşılaştırması:
| Ortam | Avantaj | Dezavantaj | Ne zaman |
|---|---|---|---|
| Terminal | Derleme adımları görünür | Başta alışmak gerekir | Öğrenmenin başı |
| VS Code + eklenti | Tek tuşla çalıştırma | Eklenti ayarı gerekebilir | Günlük çalışma |
| Dilin IDE'si | Büyük projelerde kolay | Ağır, öğrenme eğrisi | Büyük projeler |
| Tarayıcı derleyicisi | Kurulum gerektirmez | Dosya yönetimi zor, kod sunucuda işlenir | Hızlı deneme |
Tarayıcı derleyicisinde gizli veya kişisel kod paylaşılmamalıdır.
Sık kurulum sorunları:
- "command not found": Derleyici kurulu değil ya da PATH'te yok. Kurulumu yeniden kontrol et.
- "No such file or directory": Yanlış klasördeyiz.
pwdile konumu doğrula. - Derleme hatası: Hata mesajını aynen iste ve birlikte yorumla.
- Windows'ta çalıştırılabilir dosya
.exeuzantılı olur. Mac ve Linux'ta./adile çalıştırılır.
Kurulum kontrol listesi (hepsi tamamlanmadan ilk modüle geçilmez):
- Derleyici veya yorumlayıcı sürümü görünüyor
- Çalışma klasörü biliniyor (
pwd) - İlk program derlendi ve beklenen çıktı alındı
- Editör seçildi ve dosya kaydetme çalışıyor
Müfredat
Bölüm 1: Başlangıç
- Dili tanıma: neden var, nerede kullanılır, güçlü ve zayıf yanları, çalışma modeli
- Kurulum ve araçlar: derleyici veya yorumlayıcı, editör, ilk programı çalıştırma
- Söz dizimi, değişkenler ve veri tipleri: tanımlama, sabitler, tip dönüşümleri, yorumlar
- Operatörler, koşullar ve döngüler: karar verme, tekrar, yaygın akış kalıpları
- Fonksiyonlar ve kapsam (scope): parametreler, dönüş değerleri, değişkenin yaşam alanı
- Bölüm projesi: Girdi alan ve karar veren küçük bir komut satırı programı
Bölüm 2: Veri ve yapı
- Metinler ve temel koleksiyonlar: metin işlemleri, liste, sözlük ve küme benzeri yapılar
- Özel veri tipleri: kullanıcı tanımlı tipler, sınıflar, yapılar veya dilin karşılıkları
- Modüller ve bağımlılıklar: kodu bölme, paket yöneticisi, dış kütüphane kullanma
- Hata yönetimi: dilin hata modeli, hata üretme, yakalama ve anlamlı mesaj verme
- Dosya ve girdi/çıktı işlemleri: okuma, yazma, yaygın veri biçimleri
- Bölüm projesi: Veriyi dosyada saklayan ve hataları düzgün yöneten bir uygulama
Bölüm 3: Dilin derinliği
- Bellek ve kaynak yönetimi: değer ve referans, yaşam süresi, dilin bellek modeli, kaynak kapatma
- Programlama yaklaşımları: nesne yönelimli, fonksiyonel ve dilin desteklediği diğer yaklaşımlar
- Tip sistemi ve genel programlama (generics): dilin soyutlama araçları
- Standart kütüphane: en sık kullanılan bölümler, belge okuma alışkanlığı
- Eşzamanlılık (concurrency): dilin modeli, yaygın sorunlar, güvenli kullanım
- Bölüm projesi: Dilin ayırt edici özelliklerini kullanan orta düzey bir program
Bölüm 4: Profesyonel kullanım
- Hata ayıklama (debugging): hata ayıklayıcı kullanımı, kayıt tutma, sistematik hata arama
- Test yazma: birim testleri, dilin test çerçevesi, test odaklı geliştirme (TDD - Test Driven Development)
- Performans ve optimizasyon: profil oluşturma (profiling), darboğaz bulma, dilin optimizasyon ipuçları
- Güvenlik ve en iyi uygulamalar: yaygın güvenlik açıkları, dilin güvenlik özellikleri, kod inceleme
- Dokümantasyon: kod belgeleme, API dokümantasyon araçları, okunabilir kod yazma
- Sürüm yönetimi (version control): Git temelleri, dal (branch) kullanımı, iş birliği
- Paketleme ve dağıtım: dilin paket yöneticisi, bağımlılık yönetimi, sürüm oluşturma (release)
- Bölüm projesi: Birden çok dosyadan oluşan, test edilen ve belgelenmiş profesyonel bir uygulama
Sorgu Dili Müfredatı (SQL ve benzeri diller için)
Bölüm 1: Temel Kavramlar
- Veri tabanı nedir, neden kullanılır, türleri (ilişkisel, NoSQL vb.)
- İlişkisel model: tablo, satır, sütun, ilişki (relationship)
- Veri tipleri ve kısıtlamalar (constraints): NULL, PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK
- Temel SQL sorguları: SELECT, FROM, WHERE, ORDER BY, LIMIT
- Bölüm projesi: Küçük bir veri tabanı oluşturma ve basit sorgular yazma
Bölüm 2: Veri İşleme
- Veri ekleme: INSERT
- Veri güncelleme: UPDATE
- Veri silme: DELETE
- Filtreleme ve sıralama: WHERE, AND, OR, IN, BETWEEN, LIKE
- Bölüm projesi: Veri ekleme, güncelleme ve silme işlemlerini içeren bir senaryo
Bölüm 3: İleri Sorgulama
- Tablo birleştirme (JOIN): INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN
- Alt sorgular (subqueries): WHERE içinde, FROM içinde, EXISTS
- Gruplama ve toplama: GROUP BY, HAVING, AGGREGATE fonksiyonlar (COUNT, SUM, AVG, MAX, MIN)
- Veri modelleme: normalizasyon, indeksleme (indexing)
- Bölüm projesi: Birden çok tabloyu birleştiren ve gruplama içeren bir rapor sorgusu
Bölüm 4: Veri Bütünlüğü ve Performans
- İşlemler (transactions): ACID, COMMIT, ROLLBACK
- Sorgu planı (query plan): EXPLAIN kullanımı, yavaş sorguları iyileştirme
- İndeksler (indexes): türleri (B-tree, hash), nasıl çalışır, ne zaman kullanılır
- Görünümler (views) ve saklı yordamlar (stored procedures): tanımlama, kullanım
- Güvenlik: kullanıcı yetkilendirme, SQL injection'dan korunma
- Bölüm projesi: İşlemleri, indeksleri ve saklı yordamları kullanan bir e-ticaret veri tabanı yönetimi senaryosu
... (müfredatın kalan bölümleri benzer şekilde devam eder)
Not: Bu SKILL.md belgesi, programlama dilini öğretmek için kapsamlı bir yapı sunar. Kullanılan dil bağımsız olarak aynı taslak uygulanır. Her bölüm, teorik bilgiyi pratik alıştırmalar ve bir proje ile pekiştirir. Öğretmen kuralları, açıklama derinliği ve doğruluk standartları eğitimin kalitesini garanti eder. Kurulum rehberi, kullanıcının çalışma ortamını hazırlamasını sağlar ve sık karşılaşılan sorunlara çözüm sunar. Müfredat, genel amaçlı dillerin yanı sıra sorgu dilleri ve işaretleme dilleri için özelleştirilmiş bölümler içerir. Akademik mod, ileri düzey kullanıcılar için formal temellere kadar derinlemesine bir anlatım sağlar.