Son iki yıldır oldukça hız kazanan büyük dil modelleri konusundaki gelişmeler kod üretimi konusunda sektörü korkutacak derecede ilerleme sağladı. Makine dillerine yapılan çeviri işi, makinelerce çok daha hızlı yapılıyor.

Yazılımın geleceği ne olacak?

Tolga Mırmırık - @mirmirik

Bilgisayar yazılımı, insan ihtiyaçlarının ve taleplerinin bir makineye, makinenin anlayabileceği dilde aktarılması işi olarak özetlenebilir. Bu bakımdan da yazılımcıların işi bir nevi çevirmenlik olarak görülebilir. Makine dilleri tarihçesi biz insanların dilleri kadar eskiye dayalı olmasa da oldukça geniş bir konudur ve birçok dilin geliştirilmesi, evrim geçirmesi ve zamanla yerini bulmasıyla bilinir. Diller tarihçesi genel olarak beş ana dönemde incelenmektedir. 

1. Makineler Arası Dönem (1830'lar - 1940'lar): 

1830'lar: Matematikçi, filozof ve mühendis olan Charles Babbage'in tasarladığı ancak tamamlanmayan Analitik Makine için ilk "programlama" fikirleri ortaya çıktı. 

1930'lar: Alan Turing'in tezinde kullanılan Turing makinesi, modern bilgisayar bilimine temel teşkil eden ilk soyut bilgisayar modelini tanıttı. 

2. Makine Dilleri (1940'lar - 1950'ler): 

1940'lar: İlk bilgisayar programları, makine dilinde yazılmıştı. ENIAC ve UNIVAC gibi erken bilgisayarlar için özel olarak tasarlanmış komutlar kullanılıyordu. 

3. Montaj Dilleri (1950'ler - 1960'lar): 

Assembly (Montaj) dilleri, makine dilinin insanlar tarafından daha anlaşılabilir bir biçimde yazılmasını sağladı. Bu diller, belirli işlemciler için optimize edilmiş komut setlerini içeriyordu. 

4. Yüksek Seviyeli Diller (1950'ler - Günümüz): 

1950'ler: Fortran, bilgisayar programlaması için yüksek seviyeli bir dil olarak ortaya çıktı. İlk derlenen (compiled) dil olma özelliğini taşıdı. 

1950'ler - 1960'lar: COBOL (iş yönetimi), ALGOL (algoritmik dil), ve LISP gibi diller geliştirildi. 

5. 1970'ler ve Sonrası: 

1970'ler: C dili, Unix işletim sistemi ile kullanılmak üzere geliştirildi. 

1980'ler: C++ ve Objective-C gibi diller ortaya çıktı. 

1990'lar: Java, Python, ve PHP gibi diller popülerlik kazandı. 

2000'ler: Ruby, C#, ve Swift gibi dillerin gelişimiyle çeşitlilik arttı. 

İlk bilgisayar programı genellikle Ada Lovelace'in, Charles Babbage'in Analitik Makinesi için geliştirdiği bir algoritma olarak kabul edilir. Ancak, bu algoritma hiçbir zaman uygulanmamıştır ve bu yüzden gerçek bir bilgisayar üzerinde çalışan ilk programı yazan kişi Konrad Zuse olarak kabul edilir. Zuse, Z3 adlı bilgisayarında 1941 yılında bir programı başarıyla çalıştırmıştır. 

Bu dilleri kullanma becerimiz ve gelişen teknolojik imkanlar sayesinde biz yazılımcılar günlük hayatımızı derinden etkileyen birçok ilki gerçekleştirebildik. İnsan evrim tarihi göz önüne alındığında neredeyse saniye sayılabilecek bir zaman diliminde çok hızlı bir dijital dönüşüm yaşadık. İlk yazının Sümerler tarafından kil tabletlere M.Ö. 3500’lü yıllarda kazınması ile matbaanın bulunması (1440’lar) arasında geçen ~5000 yıllık zaman ile ilk yazılımın ortaya çıkıp da bugünkü duruma gelme süremiz (~80 yıl) kıyaslandığında bu durum çok daha net ortaya çıkmakta. 

YZ endişesi 

Çoğu sektörde mevcut olan “YZ işimizi elimizden alacak mı” sorusu son zamanlarda yazılım sektörü için de endişe konusu olmaya başladı. Normal bir yazılım projesi akışı “Düşünce/fikir -> Analiz -> Kod üretimi -> Kod kontrol -> Test -> Bitiş” şeklinde ilerlemekte. Son iki yıldır oldukça hız kazanan “büyük dil modelleri (Large language models)” konusundaki gelişmeler kod üretimi konusunda sektörü korkutacak derecede ilerleme sağladı. İnsanların kendi doğal dilleri ile makine dilleri arasında yaptığı çeviri işi, makineler tarafından çok daha hızlı bir şekilde yapılmakta artık. Henüz emekleme döneminde olduğu kabul görse de tahminim gelecek on beş yıl içinde yazılım geliştirme projelerinin kod üretimi adımı daha çok makinelerin kontrolünde olacak. Biz insanlar daha çok fikir ve kod kontrol adımlarında etkili olacağız. Harvard Üniversitesi’nin ünlü CS50 Tech (Computer Science 50) serisinde “büyük dil modelleri ve programlamanın bitişi” başlıklı bir konuşma yapan Dr. Matt Welsh’e göre bundan sonra insanların yapacağı programlama işi sadece büyük dil modellerini tasarlamak olacak. 

İnanıyorum ki yazılımcılar olarak kendi mesleğimizi bitirecek olsak da sektördeki kod üretme işinin önümüzdeki zamanlarda makinelere teslim edilmesi yeni iş alanları yaratacak ve multidisipliner alanlarda çalışanları da ödüllendirecek. Geleceğin yazılım geliştiricileri, sadece kod yazmakla kalmayacak; aynı zamanda veri bilimi, istatistik, matematik ve yapay zekâ konularında da bilgi sahibi olmak zorunda kalacaklar. Sektöre girmek üzere olan genç arkadaşların bu konularda kendilerini şimdi geliştirmeleri faydalı olacaktır. İyi haftalar. 

Kaynaklar: 

- Tucker, A. (2004). A brief history of programming languages. ACM SIGPLAN Notices, 39(4), 32-43. (https://dl.acm.org/doi/10.1145/1013208.1013209

- Campbell-Kelly, M., & Aspray, W. (1996). Computer: A History of the Information Machine. Basic Books. 

- Davenport, T. H., & Ronanki, R. (2018). Artificial Intelligence for the Real World. Harvard Business Review. (https://hbr.org/2018/01/artificial-intelligence-for-the-real-world

- Manyika, J., Chui, M., & Brown, B. (2017). AI, automation, and the future of work. McKinsey Global Institute. (https://www.mckinsey.com/featured-insights/future-of-work/jobs-lost-jobs-gained-what-the-future-of-work-will-mean-for-jobs-skills-and-wages