GitHub Copilot’u Clojure ile denedim, düşüncelerim şöyle.

Editör Entegrasyonu

Birkaç arkadaşım hakkında çok olumlu konuştuğu için ben de Copilot’u denemeye karar verdim. Ancak, Emacs’ime eklemek istediğimde Copilot’un Emacs için resmi bir sürümü olmadığını gördüm. Neyse ki, bazı harika insanlar bu resmi olmayan eklentiyi yapmışlar, bu sayede birkaç dakika içinde Copilot’u Emacs’ime entegre edebildim. Tek sorun Clojure için Indentation offset’i bilmediğine dair sürekli ekranıma patlayan sinir bozucu bir uyarıydı ancak kullanımımı etkilemediği ve sadece deneme amaçlı kullandığım için geçici bir çözüm olarak deneme süresi boyunca bu uyarıyı görmemek için config’ime bir satır ekledim.

(setq copilot-indent-offset-warning-disable 1)

Giriş

Kod yazarken genellikle şu üç durumdan birinde oluyorum:

1. Ne yazacağımı bilmiyorum ve bir şeyler araştırmam gerekiyor

  • Bu duruma örnek olarak çevirileri verebiliriz:
{:title
 {:en "Chess"
  :tr "Satranç"
  :fr ""}}
;; Fransızca çeviri eklemem gerekiyor ama Fransızca bilmiyorum, bu yüzden araştırmam lazım
  • Bir başka örnek, ElasticSearch’ten gelen yanıtı sortlamak için bir script yazmak. Painless ile nasıl script yazılacağını bilmediğim için böyle bir durumda durup dökümantasyon okumam gerekiyor.

2. Ne yazacağım konusunda oldukça iyi bir fikrim var, sadece birkaç saniye düşünmem gerekiyor.

  • Basit bir data transformation yapacağınızı düşünün.

3. Ne yazacağımı çok iyi biliyorum, sadece klavyede bir tuşa basacağım.

Copilot

Copilot durum 1’de gerçekten yardımcı oluyor. Otomatik bir çeviriyi takımdaki Fransızca konuşan arkadaşlarıma kontrol için gönderdiğimde, yüz satırlık bir çeviri dosyasında sadece birkaç satırı değiştirmeleri gerekti.

Ancak, durum 2 ve 3 için olay daha farklı.

Durum 3 ile başlayalım. Bu durumdayken Copilot sadece kafamı karıştırıyor. Ne yapacağınızı çok iyi biliyorsunuz ve birisi sürekli “Öyle değil, böyle!” diyor, neden sizin fikrinizin iyi olmadığını da söylemiyor, ve onun fikrinin iyi olduğuna dair bir veri de yok, ama çok emin. İster istemez önerdiği kodu okuyorum ve bu düşünme sürecimi engelliyor, bu çok sık olduğunda ise rahatsız edici hale gelip verimliliğimi düşürüyor.

Durum 2 için ise, bir fonksiyonun adını yazdığımda, Copilot içini dolduruyor. Bu iyi gibi görünüyor, ama sorun şu ki, şimdi kodu kendim yazmak yerine Copilot’ın kodunu review etmem gerekiyor. Bu bazen iyi oluyor ama nadir diyemeyeceğim sıklıkta da bug’lı kod öneriyor, dolayısıyla önerdiği her şeyi review etmem gerekiyor ve bu da kendim yazmaktan daha fazla zaman ve beyin gücü tüketiyor. Unit Test Generation konusunda ise iyi bir iş çıkardığını söyleyebilirim.

Sonuç olarak, Copilot 1. durumlar için oldukça iyi ama kod yazarken çoğunlukla bulunduğum durum 2 ve 3 için verimliliğimi düşürüyor. Bu nedenle, aboneliğimi yenilemeyeceğim. Ancak Copilot’a gelecek yıl yeniden bir şans vermeyi planlıyorum.

Son sözler:

  1. Bir yerde Copilot önerilerini bir confidence düzeyine göre filtreleyebilecek bir script ile entegre edebileceğinizi okumuştum, böylece belki Copilot’tan sadece çok emin olduğu öneriler alınabilir ve bunlar makul bir sürede, minimal riskle doğrulanabilir (durum 1 senaryoları), ama şu an için bu çabaya değmeyeceğini düşündüğüm için detayına bakmadım.

  2. Copilot’u Sadece Clojure ile denedim, belki daha fazla veri ile beslendiği dillerde daha iyi bir performans gösteriyordur.