GOGOGOLLC
Blog'a dön
Long arcMay 19, 20268 min read

On üç dil, tek kariyer.

Yirmi dört yıl boyunca on üç programlama dilinde gerçek projeler yayımladım — C, C++, C#, Python, Java, JavaScript, SQL, PHP, Swift, Kotlin, VB.NET, Assembly, MATLAB. Çoğunu hâlâ kullanıyorum. Her birinin bana ne öğrettiği ve neden modası geçenleri bırakmadığım burada.

Atakan Özalan

Atakan Özalan

Kurucu ortak & mühendislik lideri, GOGOGO LLC

On üç dil, tek kariyer.

İnsanlara on üç dilde üretim işi yayımladığımı söylediğimde tepki ya "neden" ya da "bu sayılmaz, çoğunun bir önemi yok artık". İki tepki de yanlış. Diller hâlâ önemli — her gün Assembly yazdığım için değil, her birinin bana öğrettiği şey bugün GOGOGO LLC'nin çoklu-ajan runtime'ını nasıl yazdığımda görünüyor diye.

İşte dürüst liste, yanlarındaki yıllar ve her birinin düşünce biçimimde kalıcı kıldığı tek şey.

On üçü, kabaca kronolojik sırayla

C — ilkokul, hayranlık

C, oyuncak değil araç gibi hissettiren ilk dildi. Bellek düzeni, pointer aritmetiği, stack ile heap arasındaki fark. Çoklu-ajan kodunu hâlâ C-şekilli ömür ve sahiplik sezgileriyle yazıyorum. Bir Python script'i closure'dan dolayı bellek sızıntısı yapıyorsa bir dakika içinde fark ediyorum, çünkü C bana hissetmeyi öğretti.

C++ — lise, genişleme

C++ bana kompozisyonu öğretti. Template'ler, polimorfizm, RAII. Aynı zamanda tüm araç çantamı kullanmamayı öğretti. Gurur duyduğum çoğu C++ daha basit C gibi görünüyor, sadece kendini gerçekten kanıtlayan birkaç noktada birkaç soyutlama var. O alışkanlık göç etti — runtime'ımız genelleme yapmama kararlarıyla dolu.

C# — Türk üniversite laboratuvarı, Windows dönemi

C# benim Windows dönemimdi. WinForms, ASP.NET, Visual Studio debugger'ı. İyi araçların mühendislik kültürünü nasıl değiştirdiğini öğrendim. Statik-analiz ipuçları, tıkla-tanıma-git, yapılandırılmış istisnalar — hepsi daha az kaygılı kod anlamına geliyor. Bir iş akışında sürtünme olduğunda takımı araçlara yatırım yapmaya itiyorum, o içgüdü C#'tan geldi.

Python — üni sonra sonsuza kadar

Bugün en çok kullandığım dil Python. Çoklu-ajan runtime, retrieval pipeline'ları, değerlendirme harness'ları, veri ETL, salı günleri yazdığım ve çarşamba günü atılan scriptler. Python'un en büyük hediyesi runtime'da tip-kontrolü zor olanın şeklini öğretmesiydi — bu yüzden runtime'ın kritik yollarını zorunlu olmamasına rağmen şimdi katı tip kontratları ve pydantic şemalarıyla yazıyorum.

Java — üni, sunucu tarafı disiplin

Java bana enterprise'ın ne demek olduğunu öğretti. Detaylı arayüzler, dependency injection container'ları, büyük bir takımın kendi anlaşmalarını dilin kendisine nasıl kodladığı. Java'yı sevmiyorum ama elli kişilik bir takım için yaptığına saygı duyuyorum. GoPeople backend arayüz kararlarımızın bir kısmı Java şeklinde: net sınırlar, sürpriz yok.

JavaScript / TypeScript — 2010'lar sonu, full-stack

JavaScript bana kusurlu araçlarla yaşamayı ve yine de yayımlamayı öğretti. TypeScript onu kurtardı. gogogollc.com ve ürün UI'larının çoğu artık TS. En büyük TS hediyesi: koddan kaymayan dokümantasyon olarak tipler. Bunu çoklu-ajan yüzeyi boyunca agresif kullanıyoruz — ajan kontratları, tool şemaları, mesaj payload'ları — uçtan uca tipli.

SQL — o günden bu yana her yıl

SQL insanların övündüğü bir dil değil. Şirketi üstüne kurduğum dil bu. Her ürünün analitik katmanı on beş saniyede okuyabileceğim bir SQL sorgusu. SQL bana veri modeli üründür, çoğu zaman uygulama katmanının olmadığı bir şekilde, öğretti. GOGOGO'da tek bir yalnızca-ORM soyutlamamız yok; ham SQL hâlâ önemli noktalarda mimari boyunca akıyor.

PHP — Turkcell BiP dönemi, 2015

PHP messenger-bot dönemiydi — BiP Messenger, Facebook Messenger, Telegram için AIML chatbot akışları. Hızlı yayımladım, çirkin yayımladım, botlar yıllarca çalıştı. PHP bana deployment sürtünmesini ciddiye almayı öğretti. Yayımlamak için iki kere yapmak zorunda kaldığım her şeyi otomatikleştiriyorum.

Swift — 2019, Google Glass 2 üstünde AR pazaryeri

Swift mobil bölümümdü — Google Glass 2'de yayımlanan AR pazaryeri, sonra iOS uygulamaları. Swift'in hediyesi fikirli dil tasarımıydı — Optional tipi, varsayılan value ve reference semantiği, derleyicinin neyin mümkün olduğunu söylemesine izin verme disiplini. Bunu bugün runtime'da ajan durumunu nasıl tasarladığımıza ödünç aldık.

Kotlin — Android dönemi

Kotlin Android'in Java'dan kaçış valfıydı. Smart cast'ler, null-güvenliği, extension fonksiyonları. Kotlin bana durağan bir dilin dikkatli bir yeniden tasarımla kurtarılabileceğini öğretti — ki 2025'te ilk 2024 runtime'ımızı yeniden yazarken içeride yaptığımız tam olarak buydu. Aynı fikir: işe yarayanı koru, yaramayanı düzelt, çağıranları kırma.

VB.NET — 2010'ların başı freelance dönemi

Evet, VB.NET. 2010'ların başında freelance yaptığım bazı küçük işletme müşterileri Windows + Office + Access stack'leriyle çalışıyordu; VB.NET'te gerçek iş yayımladım. Ders zordu: müşterileri yaşadıkları yerde, stack'lerinin konuştuğu dilde karşıla. Bugün enterprise AI satışlarının çoğu aynı derse iniyor. Güzel stack mesele değil; müşterinin var olan dünyası mesele.

Assembly — üni, aralıklı

Assembly sadece üniydi. Gönüllü olarak bir daha x86 yazmam. Ama zihinsel model — register'lar, talimat döngüleri, yüksek seviyeli bir soyutlamanın altında gerçekten ne olduğu — kalıcı. Bugün Goddo için bir GPU inference maliyet grafiğine baktığımda Assembly döngüleri civarında bir şeyle düşünüyorum.

MATLAB — mühendislik okulu, optimizasyon

MATLAB optimizasyon / sinyal işleme / kontrol teorisi aşamasıydı. Göz alıcı değil; yıllardır açmadım. Ama MATLAB, gerçek veri üzerinde sayısal döngüleri ilk yazdığım ve onları matematik olarak düşündüğüm yer. O alışkanlık, bir transformer attention diyagramını sarsılmadan okuyabilmemin tek nedeni.

Bunun runtime için anlamı

GOGOGO çoklu-ajan runtime'ı — dört ürünümüzün hepsinin üstünde koştuğu şey — tasarım felsefesinin içine bu dillerin her birinden parçalar pişirilmiş. C-şekilli ömür sezgileri ajan durumunu yönetip temiz şekilde sonlandırışımızda. C++'ın "fazla genelleme yapma" disiplini ajan soyutlamalarını üçüncü kullanım durumu ortaya çıkana kadar inşa etmeye direnişimizde. C#'ın araç disiplini trace görselleştirme ve replay UI'sına ne kadar agresif yatırım yaptığımızda. Python'un runtime introspection'ı her ajan adımının yansıtılabilir, izlenebilir, tekrarlanabilir olmasında. Java'nın sınır disiplini ürün yüzeyleri runtime'la konuşurken — tipli kontratlar, açık devirler. TypeScript'in uçtan uca tipleri aynı ajan kontratlarının runtime'dan API'ye frontend'e tiplendirilmesinde. SQL'in veri düşüncesi ajan-olay log'unu sorgulanabilir bir zaman çizelgesi olarak modellememizde.

Modası geçenleri neden bırakmıyorum

2026'da çoğu mühendis üç-beş dilde yayımlıyor. Şu anki tatlı nokta Python + TypeScript + SQL + belki Go veya Rust. Anlıyorum. Kendi işimin çoğunu da orada yapıyorum. Ama eski dilleri okuyabildiğim şeyler listesinden bırakmak hata olurdu — çünkü müşteri sitelerinde entegre olduğumuz eski sistemler hâlâ onlarda çalışıyor.

Geçen yıl ERP'si hâlâ VB.NET olan bir müşteriyi onboard ettik. Entegrasyon bana bir pazar günü aldı çünkü kodlarını çeviri olmadan okuyabildim. O dili bıraksaydım anlaşma kontraktör beklerken ölürdü.

Programlama dilleri moda değil. Her biri yazılıma bakmanın görmezden gelinemeyecek kalıcı bir biçimi. On üçünü kafanda tutmanın maliyeti yılda birkaç saatlik tazeleme okuması. Birini kaybetmenin maliyeti bir müşteri anlaşması.

Daha genç bir mühendise söyleyeceklerim

Olmasını umduğun değil, önündeki işe uyan dilleri seç. Her birinde gerçek bir şey yayımla. Sonra yazmayı bıraktıktan sonra okumaya devam et. İnşa ettiğin kalıcı sezgiler kütüphanesi seni kırklı yaşlarında değerli yapan şey, ilk derleyiciyi hangi dilde yazdığın değil.

Bu listeyle tartışmak istersen bulmak kolay. atakanozalan.com ya da takma adı tercih edersen ezagor.

Bunu işin için ister misin?

Önce hangi iş akışını kuracağını anlat. Sana 4 fazlı bir plan ve uygun ajanlarla geri döneriz.