Yazılım geliştirmede yapay zeka: abartılıyor

Adanali

Active member


  1. Yazılım geliştirmede yapay zeka: abartılıyor

Her şeyden önce: Yapay zeka kod üretilmesine yardımcı olur. Bu şüphesiz önemli bir ilerlemedir ve çok şeyi değiştirecektir. Herkes birçok aracı deneyebilir ve ne kadar güçlü olduklarını kendi gözleriyle görebilir.

Duyuru








Eberhard Wolff, SWAGLab’da Mimarlık Bölüm Başkanıdır ve on beş yıldan fazla bir süredir mimar ve danışman olarak çalışmaktadır. Çok sayıda makale ve kitabın yazarıdır, uluslararası konferanslarda konuşmacıdır ve yazılım mimarisi konusunda haftalık yayın yapmaktadır. Teknoloji odağı, sürekli teslimat, DevOps ve mikro hizmetler gibi modern mimari ve geliştirme yaklaşımlarıdır.







Yazılım geliştirme kod üretmek değildir!


Ancak ilk bakışta paradoksal görünse de: yazılım geliştirmede asıl sorun kod üretmek değildir. Asıl sorun hangi kodun yazılması gerektiğini anlamaktır. Bunu yapmak için teknik gereksinimleri bilmelisiniz. Ancak uygulamada, yazılımın başarılı bir şekilde geliştirilmesi için gereklilikler genellikle çok belirsizdir. Her ne kadar net görünseler de çoğu zaman süreç içerisinde yanlış anlaşılmaların olduğu ortaya çıkıyor. Endüstri uzmanlarıyla etkileşim merkezi bir rol oynar. Geliştiricilerin teknik sorular için doğru yazılımı geliştirebilmeleri için alan adı hakkında çok şey öğrenmeleri gerekiyor.

Üstelik gereksinimler de değişiyor. Kullanıcılar ve sektör uzmanları, yazılım geliştirme, yeni yazılımın kullanımı ve ilgili tartışmalar yoluyla yazılımın kullanımı üzerinde derinlemesine düşünür ve böylece yeni ihtiyaçlara ulaşır. Neyin geliştirilmesi gerektiğini anlamak için geliştiricilerin de bu süreçte yer alması gerekiyor. Gereksinimlerin uygulanması özellikle kolay veya zorsa ya da gereksinimlerde yapılan değişiklikler uygulamayı önemli ölçüde basitleştiriyorsa geri bildirimde bulunabilirler.

Sorun: insanlar


İnsan faktörünün önemi zaten ihtiyaçlardan da görülüyor. Bu aynı zamanda çok önemlidir: yazılım geliştirme her zaman bir ekip olarak gerçekleşir. Böyle bir ekip genellikle birkaç geliştiricinin yanı sıra UX uzmanları, mimarlar veya PO’lar gibi diğer rollerden de oluşur. Bu, iletişimin gelişimde merkezi bir rol oynadığı anlamına gelir: görevler dağıtılmalı ve organize edilmelidir. Organizasyon da yazılımı etkiler: Conway yasası, yazılım mimarisinin ekibin iletişim ilişkilerine karşılık geldiğini belirtir. Sosyal yapının kalkınma üzerinde bu kadar güçlü bir etkisi varsa, asıl zorluklar da burada yatmaktadır. Dolayısıyla projelerdeki sorunların çoğu insan seviyesinden kaynaklanmaktadır. Yapay zekanın burada yardımcı olması mümkün değil.

Yapay zekanın üretkenliği, bir yazılım projesi için ekip yerine tek kişinin yeterli olacağı noktaya kadar artırması ve insan faktörünün önemini azaltması mümkün olabilir. Pek olası görünmüyor. Ve gereksinimleri açıklığa kavuşturmak için yine de insanlarla etkileşime girmeniz gerekiyor. Dahası, yapay zeka araçlarından önce bile üretkenlikte ilerlemeler kaydedildi. Ancak bu daha küçük takımlara yol açmadı. Öznel olarak, yazılım ekiplerinin boyutu, daha karmaşık sistemleri uygulamak ve daha fazla alanı yazılımla desteklemek için artar. Trend devam ederse, daha karmaşık sistemler ve çok da küçük olmayan ekipler oluşturmak için yapay zekayı da kullanacağız.






GitHub Copilot ve ChatGPT ile yapay zeka araçlarını doğru kullanırsanız, sınırlamaları bilirseniz ve riskleri tartarsanız daha verimli kod yazabilirsiniz. 29 Kasım 2023’te Rainer Stropek, Github Copilot ve ChatGPT ile daha verimli Programlama atölyesinde GitHub Copilot’un temel algoritmalara ve verilere dayanarak nasıl çalıştığını, sınırların nerede olduğunu ve ChatGPT’yi kullanmanın en iyi olduğu zamanı açıklayacak.







Yapay Zeka: Soyutlamanın yeni bir seviyesi


Kod üretimini basitleştirmek de yeni bir şey değil. Aksine: Yazılım geliştirmeyi basitleştirmeye yönelik teknik yaklaşımların uzun bir geçmişi vardır. Tipik olarak, bu yaklaşımlar geliştirmeyi yeni bir soyutlama düzeyine taşır. Yazılım geliştirme, ikili kodun doğrudan bilgisayar belleğine yazılmasıyla başladı. Derleyici daha sonra ikili kodlara karşılık gelen ancak hatırlanması ve anlaşılması daha kolay olan talimatları tanımladı. İkili kod bu şekilde çıkarıldı. Yüksek seviyeli diller, birleştiriciden soyutlayan kavramları tanıtır ve algoritmaları ve mantığı daha kolay ifade etmenize olanak tanır. Aynı zamanda görevler altyapıya taşındı ve geliştirme ekiplerine yönelik hale geldi: işletim sistemleri ve veritabanları kalıcılık, bellek ve süreç yönetimi için çözümler sunuyor. Kitaplıklar ve çerçeveler, kod düzeyinde tipik kısmi işlevsellik için hazır çözümler sunar. Ek olarak bulut, veritabanları veya bilgisayarlar gibi mevcut birçok altyapı öğesi üzerinde soyutlama sağlayarak projeler için altyapının dağıtılmasını kolaylaştırır.

Yapay zeka bu yolculuğun bir diğer adımı. Aslında ilerleme o kadar etkileyici ki, kesinlikle yeni bir soyutlama düzeyinden bahsetmemiz gerekiyor. GPT Engineer gibi, bir spesifikasyona dayalı olarak uygulamanın tamamını oluşturan ve gereksinimlerin belirsiz olması durumunda sorular soran (video) prototip araçlar vardır. Daha önce de belirttiğimiz gibi: Açık gereksinimleri olan yazılım geliştirmek sorun değil. Yani yazılım geliştirmenin en az sorunlu kısmı, temel olarak değil yapay zeka tarafından basitleştirilmiştir.

AI kodu daha iyi görünüyor ve bu tehlikeli


Yapay zeka aynı zamanda tehlikeleri de beraberinde getiriyor: Geliştiricilerin güvenlikle ilgili kod yazarken davranışlarını değerlendiren bir çalışma, yapay zekayı destekleyenlerin, çözümlerini desteklemeyenlere göre daha güvenli buldukları sonucuna vardı. Ancak gerçekte bunun tersi doğrudur: Kodunuz daha az güvenlidir. Ve bu açıkça tehlikelidir: mesele kod üretmek değil, bir problemi çözmektir. Ve güvenlikle ilgili yazılımlar güvenlik kusurları ile aslında yeni sorunlar yaratıyor. Öznel değerlendirme ile nesnel gerçeklik arasındaki fark yıkıcı olabilir: İnsanlar yazılımın güvenli olduğuna inanır. Ama bu doğru değil. Ne yazık ki, teknik hatalar veya performans sorunlarından farklı olarak güvenlik açıkları belirgin değildir ve bu nedenle hasar tamamen gizlice meydana gelebilir. Yapay zekanın bu tür riskleri çözmesi ve aynı nitelikleri sunan çözümler tasarlaması (örneğin güvenlik açısından) pek mümkün değil. Ah!

Kodu okumak: üretmekten daha önemli


Bir sonraki sorun: Genellikle kod üretmekle ilgili değil, onu değiştirmekle ilgilidir. Bu aynı zamanda geliştiricilerin, önemli değişiklikler yapmak için mevcut kodu okuması ve anlaması gerektiği anlamına da gelir. Elbette kod başlangıçta bir kez yazılır, ancak değiştirilir ve bu nedenle daha sık okunur. Dolayısıyla en büyük optimizasyon potansiyeli tek seferlik üretimde değil, çok daha sık gerçekleşen okuma, anlama ve düzenlemede yatmaktadır. Ancak yapay zeka da bu alanda yardımcı olabilir: Aslında ChatGPT’den kodu açıklamasını isteyebilirsiniz. Bunlar daha çok küçük kod parçacıklarıyla ilgilidir. Ancak potansiyel kesinlikle büyüktür: Özellikle eski kodlar için, bir sistem için özel olarak eğitilmiş bir yapay zeka, sistemin anlaşılmasını geliştirmek ve dolayısıyla değişiklikleri basitleştirmek için ilginç bir araç olabilir.

tl; Dr.


Yazılım geliştirmenin sorunu kod üretmek değil, neyin uygulanacağını anlamaktır. Yapay zekanın üretkenlik faydaları bu sorunu çözmüyor. Yapay zeka, yazılım geliştirmeyi önemli ölçüde değiştirecek ancak temel sorunu çözmeyecek.


(kendim)



Haberin Sonu
 
Üst