Logo
Ana Sayfa
ÖZEL KODLAMA DERSLERİ
Yazılım Özel Ders
Tüm birebir programlara genel bakış
Python Yazılım Kursu
Sıfırdan ileri seviyeye birebir Python
Java Yazılım Kursu
OOP odaklı birebir Java eğitimi
AP Computer Science Principles
AP CSP sınav hazırlığı
GRUP DERSLERİ
Python & Django Masterclass
SINIRLI KONTENJAN
Java & Spring Boot Masterclass
SINIRLI KONTENJAN
C# .NET Masterclass
SINIRLI KONTENJAN
VİDEO DERSLER
Sıfırdan Temel Python Kursu
Kendi Hızında Öğren
ÜCRETSİZ
Seviye Testi
Ücretsiz — Python, Java, algoritma seviye testleri
Kariyerini Keşfet
Sertifika Doğrula
Belge numarası ve soyad ile doğrulama

Python'da Dosya ve Klasör İşlemleri: os mu, pathlib mi?

Yazar: Berk Keskin 22.08.2026 ~13 dk okuma 1 Okunma
python-os-pathlib-dosya-klasor-islemleri

os mu pathlib mi? sorusunun kısa cevabı: ikisi de aynı işi yapar, fark yaklaşım biçimindedir. os modülü dosya yollarını düz metin (string) olarak yönetirken, pathlib yolları nesne olarak temsil eder ve daha okunabilir bir söz dizimi sunar. Yeni yazılan projelerde pathlib genellikle tercih edilir, ancak eski kod tabanlarında ve bazı kütüphane entegrasyonlarında os hâlâ karşınıza çıkar. Bu yazıda ikisini de adım adım karşılaştırıp hangi durumda hangisini seçmeniz gerektiğini göreceksiniz.

Dosya Yolu (Path) Kavramı ve İşletim Sistemleri Arası Farklar

Bir dosya yolu (path), bir dosyanın veya klasörün diskteki konumunu tarif eden metin dizisidir. İki türü vardır: mutlak yol ve göreli yol. Mutlak yol, kök dizinden başlayarak hedefe kadar giden tam adrestir; göreli yol ise programın o an çalıştığı klasöre göre tanımlanır. Örneğin veriler/rapor.txt göreli bir yoldur, çünkü bu yolun neye göre çözümleneceği programın çalıştığı konuma bağlıdır.

İşletim sistemleri bu yolları farklı ayraçlarla ifade eder. Windows sistemlerde klasörler ters slash ile ayrılır (C:KullanicilarBerkdosya.txt), Unix tabanlı sistemlerde (Linux, macOS) ise düz slash kullanılır (/home/berk/dosya.txt). Bu küçük görünen fark, kod yazarken ciddi bir taşınabilirlik sorununa dönüşebilir.

Bir yolu elle string birleştirerek yazmak — örneğin "veriler" + "" + "rapor.txt" gibi — sadece o kodu yazdığınız işletim sisteminde çalışır. Aynı satırı bir Linux sunucusunda çalıştırdığınızda ters slash bir klasör ayracı olarak değil, dosya adının bir parçası olarak yorumlanır ve dosya bulunamaz. Bu yüzden yol birleştirmeyi elle string toplama ile değil, Python'un bu iş için sunduğu araçlarla yapmak gerekir.

Bu farkın pratikteki etkisini şöyle düşünebilirsiniz: kendi bilgisayarınızda Windows üzerinde geliştirdiğiniz bir betik, dosya kayıtlarını doğru şekilde okuyup yazabilir. Ama aynı betiği bir arkadaşınız macOS üzerinde çalıştırdığında veya siz projeyi bir Linux sunucusuna taşıdığınızda, sabit yazılmış ters slash'lar yüzünden dosya bulunamaz hataları alınabilir. Taşınabilir kod yazmanın ilk adımı, işletim sistemine özgü bu ayrıntıları elle yönetmek yerine Python'un soyutlama katmanlarına bırakmaktır — bunu bir sonraki bölümde os modülüyle, ardından pathlib ile nasıl yapacağınızı göreceğiz.

os ve os.path Modülüyle Geleneksel Yol Yönetimi

os modülü, Python'da işletim sistemiyle etkileşim kurmanın en eski ve en köklü yollarından biridir. Bu modülün alt paketi olan os.path, dosya yollarını string olarak ele alır ve bu string'ler üzerinde işlem yapmanızı sağlayan fonksiyonlar sunar. Mantık basittir: yol bir metindir, siz de bu metni birleştirme, ayırma ve sorgulama fonksiyonlarıyla yönetirsiniz.

En sık kullanılan fonksiyonlardan biri os.path.join'dur. Bu fonksiyon, hangi işletim sisteminde çalıştığınızı otomatik algılayıp doğru ayracı kullanarak yol parçalarını birleştirir:

import os

klasor = "veriler"
dosya_adi = "rapor.txt"
tam_yol = os.path.join(klasor, dosya_adi)
print(tam_yol)  # Windows'ta veriler apor.txt, Linux/macOS'ta veriler/rapor.txt

print(os.path.exists(tam_yol))       # dosya var mı?
print(os.path.abspath(tam_yol))      # mutlak yola çevirir
print(os.path.dirname(tam_yol))      # klasör kısmını verir
print(os.path.basename(tam_yol))     # dosya adını verir

Burada os.path.exists, verilen yolda bir dosya ya da klasör olup olmadığını kontrol eder; os.path.abspath ise göreli bir yolu, çalışma dizinine göre mutlak yola dönüştürür. Bu fonksiyonlar, string birleştirmenin taşınabilirlik sorununu ortadan kaldırırken aynı zamanda dosya sisteminin durumunu sorgulamanıza da imkân tanır.

os ve os.path'in hâlâ yaygın kullanılmasının birkaç nedeni vardır. Öncelikle, yıllardır var olan sayısız kütüphane ve örnek kod bu modülü kullanır, dolayısıyla eski projelerle çalışırken karşınıza sürekli çıkar. İkinci olarak, işletim sistemi düzeyinde çevresel değişkenler, süreç yönetimi ve dosya izinleri gibi konularda os modülünün pathlib'te karşılığı olmayan geniş bir fonksiyon seti vardır. Dezavantajı ise, yol işlemleri karmaşıklaştıkça kodun okunabilirliğinin düşmesidir: birden fazla os.path.join ve os.path.dirname çağrısı iç içe geçtiğinde, kodun ne yaptığını takip etmek zorlaşır. Bu noktada devreye nesne tabanlı bir alternatif olan pathlib girer.

pathlib.Path ile Nesne Tabanlı Yaklaşım

pathlib.Path ile Nesne Tabanlı Yaklaşım

pathlib modülünün temel fikri şudur: bir dosya yolu artık sadece bir metin değil, üzerinde işlem yapabileceğiniz bir nesnedir. Path sınıfından oluşturduğunuz bir nesne, hem yolun kendisini temsil eder hem de o yolla ilgili işlemleri (var mı kontrolü, birleştirme, okuma, yazma) kendi metotları üzerinden sunar. Bu, kodun daha az fonksiyon çağrısıyla, daha akıcı biçimde yazılmasını sağlar.

Aynı işlemi hem os hem pathlib ile yaparak farkı somut biçimde görebilirsiniz:

import os
from pathlib import Path

# os ile yol birleştirme ve varlık kontrolü
yol_os = os.path.join("veriler", "rapor.txt")
print(os.path.exists(yol_os))

# pathlib ile aynı işlem
yol_path = Path("veriler") / "rapor.txt"
print(yol_path.exists())

Burada dikkat çeken kısım / operatörüdür. pathlib, klasör ayracı olarak kullanılan bu operatörü yeniden tanımlayarak yol birleştirmeyi Path("veriler") / "rapor.txt" gibi doğal bir ifadeye dönüştürür. os.path.join("veriler", "rapor.txt") ile aynı sonucu verir, fakat okuyucu için anlam çok daha nettir: iki yol parçasının art arda geldiğini bir bakışta görürsünüz. Uzun yol zincirlerinde (örneğin dört beş klasör derinliğinde bir dosyaya erişirken) bu fark daha da belirginleşir; iç içe geçmiş os.path.join çağrıları yerine tek bir / zinciri okunabilirliği ciddi ölçüde artırır.

exists() metodu da aynı mantıkla çalışır: yol nesnesinin üzerinde doğrudan çağrılır, ayrı bir fonksiyona yol'u parametre olarak geçirmenize gerek kalmaz. Bu, özellikle bir yol üzerinde art arda birden fazla işlem yapacağınız durumlarda kodu sadeleştirir.

Bu tür yol ve dosya işlemlerini küçük alıştırmalarla pekiştirmek, kavramın gerçekten oturması için en etkili yöntemdir. Konuyu bire bir uygulamalı örneklerle çalışmak isteyenler için birebir Python özel dersleri bu tür pratik ihtiyaçlara yönelik bir seçenek olabilir. Bir sonraki bölümde os ve pathlib'i özellik özellik karşılaştırarak hangi durumda hangisinin daha uygun olduğuna daha net bir çerçeve çizeceğiz.

os ve pathlib: Özellik Karşılaştırma Tablosu

İki modülün kod üzerindeki farkını en net biçimde görmenin yolu, aynı işlemi yan yana koymaktır. Aşağıdaki tablo, bir Python projesinde en sık karşılaşılan dosya işlemlerinin her iki yaklaşımda nasıl göründüğünü özetliyor. Amaç birini "kazanan" ilan etmek değil, hangi işlemde hangi modülün daha az kod ve daha az hata payıyla sonuca ulaştırdığını göstermek.

Özellik os / os.path pathlib
Yol birleştirme os.path.join(klasor, dosya) klasor / dosya
Dosya var mı kontrolü os.path.exists(yol) yol.exists()
Dosya okuma/yazma open(yol) ile ayrı adım yol.read_text() / write_text()
Klasör oluşturma os.makedirs(yol, exist_ok=True) yol.mkdir(parents=True, exist_ok=True)
Dizin dolaşma os.walk(yol), os.listdir(yol) yol.iterdir(), yol.glob()
Okunabilirlik Fonksiyon zincirleri, string birleştirme Nesne üzerinden zincirleme çağrı

Tablodan çıkan sonuç şu: os.path her işlemi ayrı bir fonksiyon çağrısıyla yapar ve genellikle string döndürür; bu yüzden her adımda tekrar tekrar aynı yolu parametre olarak geçmek gerekir. pathlib ise yolu tek bir nesne olarak tutar, o nesne üzerinden okuma, yazma, kontrol etme gibi işlemleri zincirleme biçimde çağırmanı sağlar. Özellikle çok adımlı dosya işlemlerinde bu fark, kodun okunabilirliğini doğrudan etkiler. Kendi seviyeni ölçmek ve bu iki yaklaşımı hangi noktada karıştırdığını görmek istersen, Python bilgi seviyeni ölçen kısa test bu konudaki eksiklerini hızlıca ortaya çıkarabilir.

Dosya Okuma, Yazma ve Silme İşlemlerini Kod ile Görmek

Dosya Okuma, Yazma ve Silme İşlemlerini Kod ile Görmek

Dosya işlemlerinde en çok karışıklık yaratan üç adım okuma, yazma ve silmedir. pathlib bu üç işlemi de tek bir nesne üzerinden, ayrı bir open() bloğu açmaya gerek kalmadan sunar. Aşağıdaki örnek, bir metin dosyası oluşturup içeriğini okuyan ve ardından dosyayı silen tam bir akışı gösteriyor:

from pathlib import Path

dosya = Path("notlar.txt")

dosya.write_text("Bugün pathlib öğrendim.", encoding="utf-8")

icerik = dosya.read_text(encoding="utf-8")
print(icerik)

dosya.unlink()
print(dosya.exists())

Bu kodda dikkat edilmesi gereken en kritik ayrıntı encoding="utf-8" parametresidir. Bu parametre belirtilmediğinde Python, işletim sisteminin varsayılan kodlamasını kullanır; bu kodlama her makinede aynı olmayabilir. Türkçe karakter içeren bir dosyayı encoding belirtmeden yazıp farklı bir sistemde okumaya çalıştığında "ı", "ş", "ğ" gibi karakterlerin bozulduğunu veya UnicodeDecodeError hatası aldığını görebilirsin. Bu yüzden encoding parametresini atlamak, küçük projelerde fark etmese de, dosyanın başka bir bilgisayarda veya sunucuda açılacağı her senaryoda risk taşır.

Aynı işlemi os ile yapmak istersen süreç birkaç adıma bölünür: dosyayı open(yol, "w", encoding="utf-8") ile açman, içeriği write() ile yazman, dosyayı kapatman (ya da with bloğu kullanman), sonra tekrar açıp okuman ve silmek için ayrı bir modül fonksiyonu olan os.remove(yol) çağırman gerekir. İşlevsel olarak iki yaklaşım da aynı sonucu verir; fark, pathlib'in bu adımları tek bir nesnenin metotları hâline getirerek kod akışını sadeleştirmesidir. Küçük betiklerde bu fark göze batmaz ama çok sayıda dosyayla çalışan bir programda satır sayısını ve hata ihtimalini gözle görülür biçimde azaltır.

Klasör Oluşturma ve İçinde Dolaşma: mkdir, glob, os.walk

Klasör oluşturmak basit görünse de, iç içe geçmiş klasör yapılarında sık karşılaşılan bir hata var: hedef klasörün üst klasörü henüz yoksa işlem hata verir. os.makedirs(yol, exist_ok=True) bu sorunu üst klasörleri otomatik oluşturarak çözer; exist_ok=True parametresi ise klasör zaten varsa hata fırlatılmasını engeller. pathlib tarafında aynı mantık Path(yol).mkdir(parents=True, exist_ok=True) şeklinde çalışır; parents=True os.makedirs'in üstlendiği görevi, exist_ok=True ise aynı güvenlik önlemini sağlar. Yani iki yöntem de aynı sonuca ulaşır, fark yalnızca yazım biçimindedir.

Klasör içinde dolaşma konusunda ise fark biraz daha belirgindir. os.listdir(yol) yalnızca bir klasörün içindeki isimleri düz bir liste olarak döndürür; alt klasörlere inmek istersen os.walk(yol) kullanman ve dönen üçlü (klasör, alt klasörler, dosyalar) yapısını kendin işlemen gerekir. pathlib tarafında Path.iterdir() aynı düz listelemeyi nesne olarak verirken, Path.glob() belirli bir kalıba uyan dosyaları doğrudan filtreleyerek döndürür; alt klasörlere inmek gerektiğinde ise rglob() kullanılır. Bu, "sadece .txt dosyalarını bul" gibi filtreli aramalarda pathlib'i daha az kod ile hedefe ulaştırır.

Bir klasördeki tüm .txt dosyalarını bulmak istediğinde izleyebileceğin adımlar şöyle özetlenebilir:

  1. Hedef klasörü Path("klasor_adi") ile bir Path nesnesine çevir.
  2. Bu nesne üzerinde glob("*.txt") çağırarak yalnızca .txt uzantılı dosyaları eşleştir.
  3. Dönen sonucu bir döngüyle gez ve her dosya için gerekli işlemi (okuma, yeniden adlandırma, taşıma) uygula.
  4. Alt klasörleri de taramak istersen aynı adımı rglob("*.txt") ile tekrarla.

Bu mantığı kendi projende denerken hangi noktada os.walk'a, hangi noktada glob'a yöneldiğini fark etmek öğrenme sürecinin en değerli kısmıdır; kodu kopyalamak yerine neden o yöntemi seçtiğini anlamak kalıcı bilgi bırakır. Bu tür pratik senaryolarla ne kadar rahat çalıştığını görmek istersen ücretsiz kodlama bilgisi testi dosya ve klasör işlemleri gibi konularda seviyeni kısaca özetleyebilir.

Sık Yapılan Hatalar ve Doğru Kullanım İpuçları

Dosya ve klasör işlemleri, Python öğrenme sürecinde en çok "neden çalışmıyor?" sorusunun sorulduğu konulardan biridir. Hataların büyük kısmı karmaşık bir bilgi eksikliğinden değil, küçük ama tekrar eden alışkanlıklardan kaynaklanır. Bu bölümde en sık karşılaşılan dört hatayı ve her birinin mantıklı çözümünü sırayla ele alacağız; amaç ezberlemek değil, neden hata aldığınızı anlamaktır.

  • Yol ayracını elle string birleştirerek yazmak: klasor + "/" + dosya veya klasor + "" + dosya şeklinde yol oluşturmak, kodu tek bir işletim sistemine bağımlı hale getirir. Doğrusu, yol birleştirme işini os.path.join() veya pathlib.Path nesnesine bırakmaktır; her ikisi de çalıştığı sistemin doğru ayracını otomatik seçer.
  • Encoding belirtmeden dosya açmak: open("dosya.txt") şeklinde encoding parametresi verilmeden açılan bir metin dosyası, farklı sistemlerde farklı varsayılan kodlamalarla okunabilir ve Türkçe karakterlerde bozulma yaşanır. Çözüm nettir: metin dosyalarını her zaman open("dosya.txt", encoding="utf-8") şeklinde açık kodlama belirterek kullanmak.
  • Var olmayan bir klasöre yazmaya çalışmak: Bir dosyayı, henüz oluşturulmamış bir klasörün içine yazmaya çalışmak FileNotFoundError hatasına yol açar. Bunu önlemek için yazma işleminden önce ilgili klasörü Path("klasor").mkdir(parents=True, exist_ok=True) ile güvenli biçimde oluşturmak gerekir; exist_ok=True parametresi klasör zaten varsa hata fırlatılmasını da engeller.
  • Göreli ve mutlak yol karışıklığı: Bir betiği farklı bir dizinden çalıştırdığınızda göreli yollar ("veri/dosya.txt" gibi) beklenmedik biçimde "bulunamadı" hatası verebilir, çünkü göreli yol her zaman çalıştığınız dizine göre yorumlanır. Bu durumda Path(__file__).resolve().parent kullanarak betiğin kendi konumuna göre mutlak bir referans noktası oluşturmak, çalıştığınız yerden bağımsız, tutarlı bir sonuç verir.

Bu tür hataların çoğu, kodu birkaç kez farklı ortamda çalıştırdıktan sonra fark edilir; bu yüzden yeni başlayanlar için kafa karıştırıcı olabilir. Böyle bir hatayla karşılaştığınızda saatlerce tek başına debug etmek yerine, sorunu birebir bir eğitmenle adım adım çözmek isteyenler için birebir Python dersleri pratik bir seçenek olabilir; özellikle dosya yolu ve encoding gibi ortam bağımlı sorunlar, canlı bir gözle çok daha hızlı netleşir.

Hangi Durumda os, Hangi Durumda pathlib Tercih Edilmeli? Karar Rehberi

İki modül arasında seçim yaparken doğru soru "hangisi daha iyi?" değil, "bu proje hangisini gerektiriyor?" olmalıdır. Karar verirken bakılması gereken üç somut kriter vardır: kodun etkileşeceği mevcut altyapı, projenin büyüklüğü ve okunabilirlik önceliği.

Eğer üzerinde çalıştığınız kod tabanı zaten os modülü ile yazılmışsa ve bu koda yeni bir fonksiyon eklemeniz gerekiyorsa, tüm dosyayı pathlib'e çevirmek yerine mevcut yapıyla tutarlı kalmak genellikle daha mantıklıdır. Aynı şekilde, bazı üçüncü parti kütüphaneler dosya yolu parametrelerini düz metin (string) olarak bekler; bu durumda str(path_nesnesi) ile pathlib nesnesini string'e çevirerek iki yaklaşımı bir arada kullanmak tamamen normaldir. Küçük, tek seferlik betiklerde (örneğin birkaç dosyayı taşıyan basit bir script) os.path de yeterince pratik olabilir.

Buna karşılık yeni bir proje sıfırdan yazılıyorsa, dosya işlemleri iç içe geçmiş klasör yapılarıyla uğraşıyorsa veya kodun uzun vadede başka geliştiriciler tarafından okunması bekleniyorsa, pathlib'in nesne tabanlı, zincirlenebilir yapısı bakımı çok daha kolay bir kod ortaya çıkarır. Büyük projelerde bu okunabilirlik farkı zamanla ciddi bir verimlilik kazancına dönüşür.

Sonuç olarak bu iki modül birbirinin rakibi değil, aynı işi farklı açılardan çözen iki araçtır; gerçek projelerde çoğu zaman bir arada, birbirini tamamlayacak şekilde kullanılırlar. Bu tür pratik karar mekanizmalarını gerçek proje senaryoları üzerinden, canlı olarak deneyimlemek isteyenler için canlı sınıflı Python eğitimi bu konuları uygulamalı şekilde ilerletmek için uygun bir ortam sunar; teori yerine gerçek kod üzerinde tartışmak, hangi aracın ne zaman daha mantıklı olduğunu çok daha kalıcı öğretir.

Sık Sorulan Sorular

os modülü ile pathlib arasındaki temel fark nedir?

os modülü dosya yollarını düz metin (string) olarak ele alırken, pathlib dosya yolunu bir nesne olarak temsil eder ve yol üzerinde yapılabilecek işlemleri (birleştirme, uzantı alma, üst klasöre gitme) bu nesnenin metotları üzerinden sunar. Fonksiyonel yaklaşım ile nesne tabanlı yaklaşım arasındaki bu ayrım, günlük kullanımda okunabilirlik farkı olarak kendini gösterir.

Yeni bir Python projesine başlarken os yerine pathlib mi kullanmalıyım?

Sıfırdan başlayan bir proje için pathlib genellikle daha okunabilir ve daha az hataya açık bir başlangıç noktasıdır, çünkü yol birleştirme ve kontrol işlemleri tek bir nesne üzerinden yürütülür. Ancak projeniz belirli bir kütüphaneyle veya mevcut bir kod tabanıyla entegre çalışacaksa, o ortamın beklentisine göre os.path de gerekebilir.

Dosya açarken encoding belirtmezsem ne olur?

Encoding belirtilmediğinde Python, çalıştığı işletim sisteminin varsayılan kodlamasını kullanır; bu da aynı kodun farklı bilgisayarlarda farklı sonuçlar vermesine, özellikle Türkçe karakterlerde bozulmalara yol açabilir. Bu riski ortadan kaldırmanın yolu, dosya açma işlemlerinde her zaman açıkça encoding="utf-8" belirtmektir.

pathlib ile var olmayan bir klasöre dosya yazabilir miyim?

Hayır, klasör önceden mevcut değilse doğrudan dosya yazma işlemi hata verir. Yazmadan önce Path("klasor").mkdir(parents=True, exist_ok=True) komutuyla klasörü (ve gerekirse üst klasörlerini) oluşturmanız gerekir.

os.walk ile Path.glob() arasında performans farkı var mı?

İki yöntem de aynı temel işletim sistemi çağrılarına dayanır, bu yüzden günlük kullanımda performans farkı proje kararını belirleyecek düzeyde değildir. Seçim genellikle performanstan çok, os.walk'un klasör-alt klasör ayrımını doğrudan vermesi veya glob'un desen bazlı (örneğin *.txt) arama yapma kolaylığı gibi kullanım kolaylığı tercihlerine dayanır.

Göreli ve mutlak yol arasındaki fark projelerimi nasıl etkiler?

Göreli yol, kodun çalıştırıldığı dizine göre yorumlandığı için aynı betik farklı bir konumdan çalıştırıldığında dosya bulunamayabilir; mutlak yol ise sabit bir referans noktasından başladığı için her zaman aynı sonucu verir. Taşınabilir ve güvenilir bir proje yapısı için dosya yollarını betiğin kendi konumuna göre mutlak hale getirmek önerilir.

Eski bir projede os ile yazılmış kodu pathlib'e geçirmek zorunlu mu?

Hayır, zorunlu değildir; os modülüyle yazılmış çalışan bir kod, sadece daha yeni bir yaklaşım tercih ediliyor diye değiştirilmek zorunda değildir. Geçiş genellikle yalnızca kodun okunabilirliği ciddi biçimde zorlaştığında veya yeni eklenen bölümlerin pathlib ile daha temiz yazılabileceği durumlarda tercih edilir.

Dosya ve klasör işlemleri, bir Python projesinin veriyle gerçek dünyada nasıl etkileşeceğini belirleyen temel yapı taşlarından biridir; bu mantığı iyi kavramak, ileride karşılaşacağınız daha karmaşık veri işleme senaryolarında da işinizi kolaylaştırır. Öğrendiklerinizi pratiğe dökmeden önce ne kadar sağlam bir temele sahip olduğunuzu görmek isterseniz, Python bilgi testi ile kendinizi kısa sürede ölçebilirsiniz.

Bu içeriğin üretilmesinde yapay zeka araçlarından destek alınmıştır.

İlgili Eğitimler

Berk Keskin — Yazılım Geliştirici ve Eğitmen
Yazar

Berk Keskin Kimdir?

Yazılıma 12 yaşında başladı; bugün öğrencinin seviyesine ve hedefine göre şekillenen sürdürülebilir öğrenme sistemleri tasarlıyor. 300'den fazla kişiye ezber değil, düşünerek kod yazmayı öğretti — Berk Akademi'de izlemeye değil üretmeye dayalı öğrenme kültürünü o kuruyor.

WhatsApp Hemen Ara