4 puan yazan GN⁺ 2025-08-20 | Henüz yorum yok. | WhatsApp'ta paylaş
  • Soldan sağa programlama yaklaşımında, kod yazılır yazılmaz program geçerli durumda kalır; bu da editörün otomatik tamamlama gibi araç desteğini en üst düzeye çıkarır
  • Python’un liste üreteçleri, bildirilmeyen değişkenler ve tip çıkarımının yokluğu nedeniyle otomatik tamamlama işlevini engeller
  • Rust ve JavaScript, programın soldan sağa doğal biçimde kurulmasına izin verdiği için değişken kullanımı ve metot keşfi daha sezgiseldir
  • C ve Python’daki fonksiyonel stil, fonksiyon adı ya da yapının kolay keşfedilememesi nedeniyle verimli bir kodlama deneyimini zayıflatır
  • Karmaşıklığı yüksek mantıkta, soldan sağa açılan kod daha kolay okunur; bakım ve genişletilebilirlik açısından daha üstündür

Soldan Sağa Programlama

Kod, yazıldığı anda geçerli olmalı


Python liste üreteçlerinin sınırları

  • Python liste üreteci sözdizimi words_on_lines = [line.split() for line in text.splitlines()], bildirilmeyen bir değişkene (line) erişmeyi gerektirdiği için editörün otomatik tamamlama ya da tip çıkarımı desteğini düzgün sağlayamaması sorununu doğurur
  • Kodu parça parça yazma sürecinde
    • words_on_lines = [line.sp gibi yazıldığında editör line değişkeninin tipini bilemediğinden metot öneremez
    • Değişken adı yazım hataları (lime gibi) gibi potansiyel hataları tespit etmek de zorlaşır
  • Doğru önerileri alabilmek için tamamlanmamış kod yazmak gerekir; bu süreç sezgisel değildir ve rahatsız edicidir

Rust’ta soldan sağa kurulum

  • Rust örneği (let words_on_lines = text.lines().map(|line| line.split_whitespace());) şunu gösterir:
    • Anonim fonksiyon bildirilirken değişken (line) ilk göründüğü anda bildirilmiş sayılır; böylece hemen otomatik tamamlama ve metot önerileri kullanılabilir
    • Nitekim split_whitespace metodu da otomatik öneri sayesinde kolayca bulunabilmiştir
  • Bu yaklaşımda program her zaman kısmen de olsa geçerli durumda kaldığı için IDE ya da editör kod yazımını gerçek zamanlı destekleyebilir

Aşamalı Açığa Çıkarma (Progressive Disclosure) ve API kullanılabilirliği

  • Aşamalı Açığa Çıkarma (Progressive Disclosure), kullanıcının yalnızca ihtiyaç duyduğu kadar karmaşıklıkla karşılaşmasını sağlayan bir tasarım ilkesidir; programlamaya da uygulanabilir
    • Örnek: Bir kelime işlemcide yalnızca görsel eklendiğinde ilgili seçeneklerin görünmesiyle benzerlik taşır
  • C dili bu tür desteği yeterince sunmaz
    • FILE *file ile ilişkili tüm fonksiyonlar file. üzerinden keşfedilemediği için fread, fclose gibi fonksiyon adı kalıplarını ezberlemek gerekir ve işlevleri keşfetmek zordur
    • Buna karşılık ideal bir dilde file. üzerinden metot önerileriyle ilgili işlevler kolayca aşamalı olarak keşfedilebilir

Fonksiyon ve metot keşfedilebilirliği arasındaki fark

  • Python’daki map(len, text.split()) ile JavaScript’teki text.split(" ").map(word => word.length) örneklerinin karşılaştırılması
    • Python’da len, length, size gibi isimler öngörülemediğinden doğru işlevi bulmak için birkaç deneme yapmak gerekebilir
    • JavaScript’te word. sonrasına yalnızca .l yazmak bile editörün length gibi metotları önermesini sağlar; bu da keşfedilebilirliği artırır
    • map gibi yüksek mertebeden fonksiyonlarda bile gerçek dönüş değeri ve veri tipi anında daha açık hale gelir

Mantık karmaşıklaştıkça yapısal yazımın avantajı

  • Karmaşıklığı yüksek mantıkta (filter, lambda iç içe geçmiş uzun Python kodu gibi)
    • Kodun başını ve sonunu tekrar tekrar kontrol etmek gerekir; koşul ifadeleri ya da parantez eşleştirmeleri nedeniyle okunabilirlik düşer ve anlamak zorlaşır
  • Aynı mantığın JavaScript sürümünde ise kod yukarıdan aşağıya, soldan sağa sıralı biçimde okunup anlaşılabilir

Temel ilke

Kod, girildiği her anda geçerli olmalı

  • Tek başına text yazmak bile programın geçerli durumda kalmasını sağlar
  • text.split(" ") yazıldığında da, ardından .map(word => word.length) eklenirken de, bütün olarak ara durumlar her zaman geçerlidir
  • Bu tür bir kodlama deseni, editörün gerçek zamanlı destek sunabilmesini artırır; REPL ortamında ise sonuçlar anında görülebilir

Sonuç

  • API ve dil tasarımı, kodun soldan sağa doğal biçimde yazılmasını ve her ara adımda geçerli bir program oluşturulmasını desteklemelidir
  • İyi API tasarımı, bu kod yazma deneyimini iyileştirmenin temel unsurudur

Henüz yorum yok.

Henüz yorum yok.