Yazılımcılık elden gidiyor mu?

Yazılımcılık elden gidiyor mu.
Yazılımcılık elden gidiyor mu.

Günümüzde iş dünyası, büyük teknoloji firmalarının hâkimiyeti altında giderek daha fazla dijitalleşiyor. Şirketlerin başarısı, artık sadece ürün veya hizmet kalitesine değil; aynı zamanda teknolojiyle entegrasyon yeteneklerine de bağlı. Dünyanın en büyük 10 şirketinin yedisinin teknoloji firmalarından oluştuğu bir gerçek. Bu devler arasında beşi, neredeyse tamamen yazılım odaklı iş yaparken; üçü için de rekabetçi üstünlüklerini sağlamada yazılım kritik bir rol oynuyor. Bu durum yazılım sektörünün sadece büyüklüğünü değil, aynı zamanda sağladığı yüksek katma değer, ihracat potansiyeli ve istihdam olanakları göz önüne alındığında, stratejik bir öneme sahip olduğunu gösteriyor.

  • “Her şirket, artık bir yazılım şirketi oldu.”
  • Satya Nadella, Microsoft CEO


2019 yılında 565 milyar dolarlık büyüklüğe ulaşan yazılım sektörünün gelecek beş yılda yüzde 5 oranında büyümesi bekleniyordu. Sanayi devrimlerinin ardı ardına geldiği bir dönemde, dijital teknolojilerin hızla büyümesi ve her sektörde büyük ölçekli dönüşümlere neden olması şaşırtıcı değil. Bulut bilişim, nesnelerin interneti, yapay zekâ, blok zinciri ve robot teknolojileri gibi dijital teknolojiler, tüm sektörlerde büyük değişimlere yol açıyor.

Bu devrimlerin üzerine inşa edilen ve her iki sektöre de dokunabilen yapay zekâ teknolojileri, belki de metaforik bir düzeyde bilgi teknolojilerini takip ederek, Dördüncü Sanayi Devrimi’ni oluşturabilir. Bu çerçevede yazılım ve yapay zekâ, sadece “salt-yazılım” şirketlerini değil, etkileşimde olduğu tüm çalışma alanlarını etkiliyor. Yazılım uygulamalarının kurumlara entegre olması sayesinde teknoloji şirketleri ile geleneksel şirketler arasındaki ayrım teknoloji şirketleri lehine ortadan kalkıyor. Bu nedenle ürün ve hizmetlerin rekabetçi üstünlüklerinin büyük kısmı yazılım tabanlı. Yapay zekâ teknolojilerinin yazılım üretebilmesiyle birlikte bu üstünlük “yazılım yapabilen insan” iş gücünden çıkartılarak, teknoloji okur-yazarlığı olan herkesi muhatap alan bir seviyeye ulaşmış oluyor.

Hayatımıza GPT teknolojileri ile dâhil olan prompt-engineering (komut mühendisliği) kavramı, esasında bir mühendislik dalını ifade etmemektedir. Ancak mühendislik olarak nitelendirilen birçok işi “komut düzeyine” indirgemiştir. Bir başka deyişle talebini doğru biçimde ifade edebilen her kullanıcının kod ile münasebetini fazlasıyla kolaylaştırmıştır. Bu durum hem mühendislik kavramının yeniden sorgulanmasına hem de hâlihazırda “yazılım” üzerine bir gelecek inşa etmek isteyenlerin kafasında soru işaretlerine neden olmuştur. Nitekim günümüzde birçok yapay zekâ modeli profesyonel düzeyde kodlama yapabilmekte, var olan kodlardaki hataları düzeltebilmekte yahut sistemlerin daha optimize çalışabilmesi için öneriler sunabilmektedir. Biz de bu yazımızda, yazılım işini tabiri caizse “ele ayağa düşüren” ya da bu potansiyelde olan bazı yapay zekâ araçlarını inceleyeceğiz.

Mobil uygulama ile amaç yazılım ve kodlama üzerine özelleşmiş soruları yanıtlamak, yeni bir dil öğrenmek isteyenlere yol gösterici olmak ve bu alanda her daim el altında bulunan bir asistan oluşturmaktır.
Mobil uygulama ile amaç yazılım ve kodlama üzerine özelleşmiş soruları yanıtlamak, yeni bir dil öğrenmek isteyenlere yol gösterici olmak ve bu alanda her daim el altında bulunan bir asistan oluşturmaktır.

Yapay zekâ destekli yazılım araçlarından bahsettiğimizde ise akla ilk olarak hiç şüphesiz OpenAI, GitHub ve Microsoft iş birliğiyle geliştirilen GitHub Copilot gelmektedir. GitHub Copilot, temelde OpenAI'nin GPT-3 dil modelini kullanarak çalışır. GPT-3, “Generative Pre-trained Transformer 3” kısaltmasıdır ve büyük bir dil modelini ifade eder. Bu dil modeli, geniş bir metin havuzunda önceden eğitilmiş ve genel dil anlama yeteneklerini kazanmıştır. GPT-3, metin girdileri alır ve benzersiz, tutarlı ve anlamlı metinleri üretebilen bir dil modeli olarak bilinir.

GitHub Copilot, GPT-3'ü temel alarak, kullanıcının girdilerine dayanarak kod önerileri üretir. Kullanıcı, bir fonksiyonun amacını veya bir değişkenin kullanımını belirten kısa açıklamalar veya ifadeler yazdığında, Copilot bu girdilere dayanarak uygun kod örnekleri üretir. Önerilen kodlar, yazılım projelerinde kullanılabilecek yapılar, algoritmalar ve desenler içerebilir. Bu önerilerin oluşturulmasında GPT-3, geniş bir kod veri kümesinde eğitilmiş ve bu nedenle çeşitli programlama dilleri ve kütüphaneleri anlayabilme yeteneğine sahiptir. Hemen hemen her dilde destek sunabilmesine rağmen, yaygınlık kazanmış yazılım dillerinde (C, Python, Java vb.) daha yüksek performans göstermektedir. Model, yazılım geliştirme konusunda geniş bir bilgi tabanına sahip olduğundan, kullanıcıların girdilerine uygun ve etkili kod önerileri üretebilir.

Tüm bu geliştirmelerin üzerine GitHub, Copilot uygulamasının mobil sürümünü de piyasaya sürmeyi hedeflemektedir. Mobil uygulama ile amaç yazılım ve kodlama üzerine özelleşmiş soruları yanıtlamak, yeni bir dil öğrenmek isteyenlere yol gösterici olmak ve bu alanda her daim el altında bulunan bir asistan oluşturmaktır.

Yine Microsoft tarafından geliştirilen bir başka kodlama asistanı da IntelliSense’in devamı olarak geliştirilen IntelliCode uygulamasıdır. Her iki uygulamadan da kısaca bahsetmek gerekirse; IntelliSense, yazılım geliştiricilerin kod yazma sürecini hızlandıran ve daha az hata yapmalarına yardımcı olan bir özelliktir. Genellikle entegre geliştirme ortamlarında (IDE) kullanılan bu özellik, geliştiricilere kod yazarken otomatik tamamlama önerileri sunar. Bir fonksiyonu veya değişkeni yazarken, IntelliSense, mevcut kapsamda bulunan öğeleri ve bunlarla ilgili belgeleri göstererek geliştiricilere rehberlik eder. Bu sayede yazılım geliştiricileri hızla doğru kod parçalarını seçebilir ve hataları en aza indirebilir.

IntelliCode ise daha ileri bir seviyede bir yapay zekâ özelliğidir. Geliştiricilerin yazılım geliştirme sürecinde daha fazla akıl ve öneri sunmak için öğrenen bir modeli kullanır. Bu model, yazılım geliştiricilerinin kodlama alışkanlıklarını ve tercihlerini anlayarak, gelecekteki kod yazımında daha iyi önerilerde bulunabilir. Visual Studio IDE içinde kullanılan IntelliCode, kullanıcının yazdığı kodu analiz eder ve benzer durumlarda diğer geliştiricilerin tercih ettiği kalıpları öğrenir. Böylece geliştiricilere sadece hızlı kod tamamlama önerileri sunmakla kalmaz, aynı zamanda daha kişiselleştirilmiş ve etkili bir yazılım deneyimi sunar.

Bu devasa pastadan pay alabilmek ve bir anlamda bu sisteme dâhil olabilmek için hemen hemen her sektörde farklı adımlar atılmaktadır.
Bu devasa pastadan pay alabilmek ve bir anlamda bu sisteme dâhil olabilmek için hemen hemen her sektörde farklı adımlar atılmaktadır.

İngiltere tabanlı bulut bilişim ve siber güvenlik şirketi olan Snyk tarafından geliştirilen bir diğer model ise DeepCode modelidir. DeepCode, yazılım geliştirme sürecini optimize etmeyi amaçlayan yapay zekâ tabanlı bir hizmettir. Geliştiricilere yazdıkları kodun hatalarını belirleme ve genel kod kalitesini artırma konusunda yardımcı olur. Derin öğrenme algoritmalarını kullanarak milyonlarca kod örneğini analiz eder ve geliştiricilere potansiyel hataları, güvenlik zafiyetlerini ve kalite sorunlarını belirten öneriler sunar. Bu, yazılım projelerinin daha güvenli, düzenli ve performanslı olmasına olanak tanır. Benzer şekilde OpenAI tarafından geliştirilen TabNine eklentisi ve Codex dil modeli de kodlama sürecini iyileştirmek ve desteklemek için geliştirilen araçlardır.

Sonuç olarak yazılım sektörünün büyüklüğü ve yazılımcı olmanın popülerliği, günümüz teknoloji dünyasının su götürmez bir gerçeğidir. Bu devasa pastadan pay alabilmek ve bir anlamda bu sisteme dâhil olabilmek için hemen hemen her sektörde farklı adımlar atılmaktadır. Bu durum insanları yazılım sektörüne yöneltmiş ve bu konu üzerine uzmanlaşmaya itmiştir. GPT’nin ortaya çıkışı ile beraber bir nevi “yazılımcılara rakip” çıkmış ve kodlama yapabilen yapay zekâ modelleri tanıtılmıştır. GitHub Copilot, IntelliCode, DeepCode, TabNine, Codex ve benzeri kodlama asistanlarıyla beraber insan-yapay zekâ iş birliği, bir kez daha kendini göstermiştir. Bilgisayarların ana dillerini insanlardan daha iyi bir şekilde konuşacağı aşikârdır. O nedenle yazılım öğrenme süreçlerinde amaç belirli kodları bir araya getirmekten öte algoritmaları, tabiri caizse “kara-kutu”nun içinde dönenleri kavramaya çalışmak olursa en verimli ve anlamlı yol seçilmiş olacaktır.