36 puan yazan GN⁺ 2025-01-08 | 1 yorum | WhatsApp'ta paylaş
  • Son 1 yılda LLM'leri (büyük dil modelleri) kullanarak programlama deneyimini özetleyen bir yazı
  • LLM'ler üretkenliği artırdı; bunları kullanmadan programlamaya geri dönmek zor
  • Ağırlıklı olarak Go programlama ortamına odaklanarak sketch.dev adlı bir araç geliştiriliyor

Arka plan

  • Yeni teknolojilere duyulan merakla başladı.
  • LLM'lerin sorulara karmaşık yanıtlar üretebilmesi veya programlama kodu yazabilmesi büyüleyici bulundu
  • İnternetin ilk ortaya çıktığı zamandaki heyecan ve olasılıklara benzer bir his verdi
  • Aracın “çoğunlukla doğru” kod ürettiğinde sağladığı net fayda görüldü ve bunun pratikte kullanılmasına çalışıldı

Başlıca kullanım alanları

  1. Otomatik tamamlama (Autocomplete)

    • Sık tekrar eden kodlama işleri otomatik tamamlama ile halledilerek üretkenlik artırılıyor
    • Özellikle FIM (Fill-In-the-Middle) modelleri günlük işlerde vazgeçilmez
  2. Aramanın yerine geçme (Search)

    • Belirli programlama sorularına (ör. CSS'te düğme saydamlığı ayarlama) arama motorlarından daha doğru yanıt verebiliyor
    • LLM yanıtları hatalı olabilir, ancak bu sınırlamalar kabul edilerek kullanılıyor
  3. Sohbet odaklı programlama (Chat-driven Programming)

    • En zor ama en değerli alan.
    • Yeni dosya oluşturma, kütüphane arama gibi ilk işleri üstleniyor.
    • Sohbet tabanlı programlamanın amacı mevcut rahatsızlıkları azaltmak ve LLM yeteneklerini daha kullanıcı dostu hale getirmek

Sohbet tabanlı programlamanın özü

  • Neden sohbet kullanılır?

    • Gün ilerledikçe enerji düştüğünde ilk taslağı sunmak için yararlı
    • İlk taslağı görüp düzeltmek, sıfırdan yazmaktan daha verimli
  • LLM ile çalışma biçimi

    1. Açık ve kısa bir görev hedefi belirleme
    2. Kodu okuyup doğrulama ve düzeltme
    3. Problemleri hızlı çözmek için derleyici hatalarını kullanma
  • Etkili test yazımı

    • LLM'ler test yazma konusunda hevesli ve daha kapsamlı bir test ortamı kurabiliyor
    • Örnek tabanlı testlerin yanında fuzz test'e de genişletilebiliyor

Örnek: kesir örnekleyici

  • Hedef: Go dilinde bir veri akışının çeyrekliklerini örnekleyen bir algoritma yazmak
  • Süreç
    1. LLM ile ilk taslağı yazma
    2. Derleme hatalarını düzelterek kodu iyileştirme
    3. Test kodunu yeniden yazarak daha okunabilir bir yapı oluşturma

Yeni kod yapısının olasılıkları

  • Daha küçük paketler, daha fazla test

    • Küçük paketler kod bağlamını daha net sunduğu için hem LLM'ler hem insanlar için daha yararlı
    • Bağımsız test ve derlenebilirlik olasılığını artırıyor
  • Örnek: API wrapper'ı

    • Büyük resmi kütüphaneler yerine yalnızca gereken kısmı uygulayan ince bir wrapper kullanılması öneriliyor
    • Bakım ve öğrenme maliyetini azaltıyor

Gelecek yönü: sketch.dev

  • LLM'ler için Go IDE'si
    • LLM merkezli bir programlama ortamı sunuyor
    • Otomatik test geri bildirimi, derleyici hatası düzeltme, Go modülü entegrasyonu gibi özellikleri destekliyor
    • İnsan ile LLM arasındaki iş birliğini güçlendirerek daha üretken bir ortam sunuyor

1 yorum

 
GN⁺ 2025-01-08
Hacker News görüşleri
  • Yazar zaten dünya çapında bir yazılım mühendisi; Google'ın eski çalışanı ve Tailscale'in kurucu ortağı/CTO'su. LLM'lerin onu daha üretken hale getirmesi etkileyici.

    • LLM'ler yeni fikirlerin ilk taslağını hazırlarken faydalı.
    • Eskiden uygulamaları veritabanından alıyordu, şimdi ise LLM'ler bunları gerçek zamanlı üretiyor.
  • LLM'ler bir işe başlamak için gereken enerjiyi azaltıyor.

    • Yeni bir şeyi denemenin önündeki engeli düşürüyor.
    • İnsan düzeyinde derinlikleri yok ama geniş bir bilgi yelpazesine sahipler.
    • Farklı türlerde programlama yapan kişiler için faydalı.
  • LLM'leri kullanırken yalnızca iyi bildiğiniz alanlarda kullanmanız gerekir.

    • Ancak yanlış kısımları kolayca tespit edebildiğiniz durumlarda zaman kazandırabilir.
    • Aramaya yardımcı olur.
  • LLM'lerin yazılım geliştirme aracı olarak potansiyeli var.

    • sketch.dev ilk denemede temiz örnekler sunuyor.
    • Dillerin resmî dokümantasyonuna göre eğitilmiş LLM'lere ihtiyaç var.
    • LLM'lerin insanlaştırılması rahatsız edici.
  • Arama motoru kullanmaya benziyor.

    • Uygun anahtar kelimeleri kullanmak önemli.
  • LLM kullanma konusunda bir istek duymadığını hissediyor.

    • Doğrudan kod yazma sürecinden keyif alıyor.
    • LLM'ler maliyeti artırabilir.
  • Programcı olmayan kişiler için LLM'ler çok yardımcı.

    • Kod yazma süresini büyük ölçüde kısaltıyor.
    • Kişisel projelerde faydalı.
  • Basit uygulamalar yazmada LLM'ler faydalı.

    • Minimum uygulanabilir ürünü tarif ederseniz kod üretebilir.
    • Teknik borç hızla birikebilir.
  • Hobi olarak programlama yapan kişiler için LLM'ler yardımcı oluyor.

    • Proje yapısını kurmaya ve kod üretimine yardımcı oluyor.
    • Ancak belirsiz talimatlar nedeniyle sorunlar çıkabilir.
  • LLM'ler çoğunlukla otomatik tamamlama ve arama için kullanılıyor.

    • ChatGPT mevcut kodu optimize etmede faydalı.