14 puan yazan GN⁺ 2025-12-12 | 7 yorum | WhatsApp'ta paylaş
  • Modern yazılım geliştirme kültüründe proje ve kütüphane adları, işleve bağlı olmayan keyfi kelimelerle dolduruluyor
  • Geçmişte grep, awk, sed, FORTRAN, COBOL gibi adlar işlevi ya da amacı doğrudan açıklarken, bugün anlamsız adlandırmalar ortalığı kaplamış durumda
  • Bu eğilim, GitHub ve startup kültürünün yayılmasıyla hızlandı; isimle işlev arasındaki bağ neredeyse tamamen koptu
  • Anlama maliyeti ve bilişsel yük artıyor; geliştiriciler her aracın rolünü kavramak için gereksiz araştırmaları tekrar tekrar yapmak zorunda kalıyor
  • Yazı, açık ve işlev odaklı adlandırma kurallarının yeniden canlandırılmasını istiyor ve teknik araçlarda marka değerinden çok netlik ve profesyonelliğin önce gelmesi gerektiğini vurguluyor

Yazılım adlandırma pratiklerinin değişimi

  • Richard Stallman, 2022 EmacsConf konuşmasında “hatırlaması kolay isimlerin” önemine değinerek, paket adlarının ne yaptığını göstermesi gerektiğini vurguladı
    • Emacs ekosistemi geleneksel olarak dired (directory editor), eshell (Emacs shell) gibi işlev temelli adlandırma pratiklerini sürdürdü
  • Ancak modern geliştiriciler araçlara rastgele isimler, mitolojik varlıklar, kurgusal karakterler gibi adlar verme eğiliminde
    • Bu, başka teknik alanlarda profesyonellik eksikliği sayılabilecek bir davranış

Anlamsız isimlerin sorunu

  • Örnek olarak “Viper”, “Cobra”, “Melody”, “Casbin”, “Asynq” gibi araç adlarından işlev hakkında hiçbir çıkarım yapılamıyor
    • Yazar, bir arkadaşının altyapı açıklamasını anlayabilmek için arama yapmak zorunda kaldığı deneyiminden söz ediyor
  • Mühendisliğin diğer alanlarında isimler yapı ya da işlevi açıklar
    • Örn: Golden Gate Bridge, Hoover Dam, I-beam, butterfly valve gibi adlar biçimi veya rolü açıkça gösterir
  • Kimyadaki IUPAC adlandırma sistemi gibi, adın tam olarak tek bir şeyi işaret etmesi için kurallar bulunur
    • Örn: 2,2,4-trimethylpentane yalnızca tek bir molekülü ifade eder; ona rastgele “Steve” denmez

Geçmişin adlandırma kuralları ve bugünkü kopuş

  • 1980'lerde grep, awk, sed, cat, diff gibi işlev temelli kısaltmalar baskındı
    • FORTRAN, COBOL, BASIC, SQL, Lisp gibi programlama dili adları da amaçlarını yansıtıyordu
  • 2010'lardan sonra anlamsız isimlerin yayılması başladı
    • MongoDB gibi bazı örneklerin işlev veya kökenle belli bir ilişkisi vardı, ancak sonrasında GitHub ve startup kültürü içinde anlamsız adlandırmalar hızla arttı
    • Bunun nedenlerinden biri olarak, Google benzeri marka odaklı başarı örneklerini taklit etme eğilimi gösteriliyor

Bilişsel maliyet ve geliştirme verimliliğinde düşüş

  • libsodium gibi isimlerde işlevi tahmin etmek zor ve geliştirici sürekli bağlam değiştirmek zorunda kalıyor
    • “Neden sodium?” sorusunu çözmeye çalışırken gereksiz zaman harcanıyor
  • Proje bağımlılıkları arttıkça bu bilişsel vergi (cognitive tax) birikiyor
    • Bu da geliştirici üretkenliğinin düşmesine yol açıyor
  • Yazar, “Viper, Cobra, Melody…” gibi cümleleri işlerken anlamsız token'ları çözümlemek için zihinsel kaynakların boşa harcandığını belirtiyor

Yaygın itirazlar ve bunlara verilen yanıtlar

  • “Akılda kalıcı isimler pazarlama için daha iyidir” → Geliştirici araçları tüketici ürünü değildir; işlevin açık olması daha önemlidir
  • “Açıklayıcı isimler sıkıcıdır” → Sıkıcılık, netlik karşılığında kabul edilebilir; cerrahi aletler de sıkıcıdır ama kesindir
  • “Eğlencesine böyle isim veriyoruz” → Bu ‘eğlencenin’ bedelini bütün kullanıcılar öder, sonuçta tüm sektörün zaman kaybına dönüşür
  • “İyi isimlerin hepsi alınmış durumda” → namespace, önek ve birleşik kelimelerle bu sorun çözülebilir; en azından işleve bağlı bir isim seçilmelidir

İleriye dönük yönelim

  • Sorun, kötü niyetten çok kültürel değişimin sonucu olarak açıklanıyor
    • Programlama şirket merkezli yapıdan topluluk merkezli yapıya kayarken sosyal normlar zayıfladı
  • Çözüm ise adlandırma kurallarının kültürel olarak yeniden kurulması
    • Düzenlemeden çok, profesyonelliğin geri kazanılması, eğitim ve toplumsal baskı yoluyla iyileşme gerekiyor
  • Kütüphane isimleri işlevi yansıtmalı; gerekirse birleşik kelimeler ve uzun ifadeler de kabul edilmeli
    • Örn: “http-request-validator”, “zephyr”den çok daha nettir
  • Maskot ile isim birbirinden ayrılmalı
    • Örn: PostgreSQL, Slonik adlı fil maskotunu kullanır ama ismin kendisi işlevsel anlamını korur
  • Eğer konu markalaşmanın önemli olduğu bir tüketici ürünü değilse, öncelik netlik ve profesyonellik olmalı
    • “Sevdiğim anime karakterinin adını versem mi?” demeden önce, “Bir inşaat mühendisi bir köprü sistemine böyle bir ad verir miydi?” diye düşünmek gerekir
  • Sonuç olarak, anlamsız isimlerin kontrolsüz çoğalmasına son verip açık profesyonel dile geri dönmek gerekiyor
    • Netlik sıkıcılık değil, kullanıcının zamanına ve bilişsel kaynaklarına saygıdır

7 yorum

 
roxie 2025-12-15

Örnek yazılmasaydı ikna ediciliği muhtemelen %10 artardı..

 
kandk 2025-12-15

Bir noktaya kadar katılıyorum ama sanki isim bulma stresini yaşamak istemiyorlar gibi.

 
qpolsa95 2025-12-13

Kullanışlı isimlerin hepsini zaten birileri kullanıyor.

 
GN⁺ 2025-12-12
Hacker News görüşleri
  • Yacc’ın GNU sürümüne Bison denir. Pine, “Pine Is Not Elm” kısaltmasıydı; UNIX ise MULTICS’e yapılan bir kelime oyunu olan UNICS’ten türemişti. dd’nin ne anlama geldiğini bilmiyorum, nano pico’nun bir klonudur ve Postfix de ‘post’ ile ‘bug fix’in birleşimidir. C++, C’nin artırılmış sürümüdür; C, B’nin devamıdır, B de BCPL’nin devamıdır. Aslında geliştiriciler ‘isimlendirme felsefesini’ kaybetmedi; baştan beri böyle bir şey yoktu. Buna karşılık Clang, LLDB, jq, fzf, loc gibi modern projelerin iyi isim örnekleri olduğunu düşünüyorum. mise-en-place, mise’in işlevini kusursuz biçimde çağrıştırıyor

    • dd, JCL’deki DD ifadesinden gelir. Aslen IBM ana bilgisayarlarındaki dosya tanımlama yönteminden alınmıştır ve UNIX’teki dd komutu ana bilgisayarlarla dosya alışverişi yapmak için oluşturulmuştur. Bu yüzden UNIX’e pek benzemeyen key=value biçimli bir sözdizimine sahiptir
    • dd’ye geleneksel olarak şakayla karışık “delete disk” ya da “destroy data” denirdi. Çünkü gerçekten de disk bloklarının üstüne yazmak için sık kullanılırdı
    • C++, C’nin son ek artış operatörü anlamına gelir. Yani C ile aynı değeri taşır ama okunduktan sonra artar; bu da oldukça kusursuz bir mecazdır
    • GNU ve Emacs da özyinelemeli kısaltmalardır. Perl, Python, Java, Go, Pascal, Git, Mercurial, CVS gibi isimlerin de anlamları birbirinden çok farklıdır. Sonuçta isim tartışmasının pek anlamı olmayan bir yaygara olduğunu düşünüyorum
    • Back Orifice 2000, yalnızca adına bakınca bile ne yaptığı açıktı ama BitchX için aynı şey söylenemezdi
  • grep, awk, sed, cat, diff gibi UNIX komutlarının isimleri işlevsel ya da sistematikti ama aslında sezgisel olarak tahmin edilebilen belki de yalnızca diff. awk’a iyi bir isim demek abartı olur

    • Bu isimlerin doğal gelmesi sadece aşinalık yanılgısı. Artık sayısız yardımcı araç ve kütüphane var; bu yüzden isimlerin ayırt edici olması şart
    • Libiberty, gördüğüm en komik isimlerden biriydi. -liberty seçeneğiyle bağlanabilsin diye bu isim verilmişti
    • cat, concatenate’in kısaltması değil, catenate kelimesinden gelir. ‘con’ öneki gereksiz olduğu için atılmıştır. Dilbilim açısından da ilginç bir örnek
    • awk, sed ve cat iyi isimler olmaktan çok alışılmış isimler. grep ise daha çok yansıma bir sözcük gibi geliyor; sanki deseni ‘yakalıyor’ hissi veriyor
    • Bu tür kısaltmalar ve kısa adlar, sektörel jargon gibi; bir kez öğrenince doğal gelmeye başlıyor. Eskiden yazma verimliliği önemliydi, bu yüzden cat ile concat arasındaki fark üretkenliği etkileyebiliyordu
  • “Teknoloji alanında böyle isimler kariyer intiharıdır” iddiasına katılmıyorum. ABD Savunma Bakanlığı kod adı listesine bakınca, tam tersine bilerek muğlak bırakılmış isimlerin çok olduğunu görüyorsunuz. Hoover Dam bile başlangıçta Boulder Canyon Project diye anılıyordu ve adı işlevini açıklamıyordu. Requests’tense Reitzlib daha mı iyi bir isim olurdu? Sonuçta isim bağlama göre değişir

    • Kimyada da eğlenceli isimler çoktur. Örneğin SHAKE, RATTLE, CHARMm, Amber gibi algoritma ve paketler var. Sevimli isimler biyolojide daha da yaygındır
    • Meteorolojide de durum farklı değil. STEVE adlı aurora olayı buna iyi bir örnek
    • Askerî kod adları, anlamı gizlemek için kasıtlı olarak rastgele seçilir. Şirket içi projelerde de bazen aynı yaklaşım kullanılır
    • Biyolojide de benzer şekilde Sonic hedgehog protein gibi isimler vardır
    • Astronomi ise özellikle berbat kısaltma isimleriyle ünlüdür. Örnekleri bu bağlantıda görebilirsiniz
  • awk gibi isimler aslında iyi isimler değil. Yalnızca yazarların baş harflerinden oluşuyor ve işlev hakkında hiçbir şey söylemiyor. Günümüzde sekme ile otomatik tamamlama var; bu kadar kısaltmaya gerek de yok

  • Ben bu karşı argüman yazısına katılıyorum. Dışa açık tanımlayıcıların anlamı zamanla değiştiği için, baştan tam açıklayıcı isimler koymak uzun ömürlü olmuyor. Üstelik “X Manager”, “X Service” gibi isimler o kadar fazla ki birbirinden ayırmak zorlaşıyor

    • Ben yaratıcı isimleri seviyorum. Eğer isim bulmak zorsa, bu çoğu zaman kavramın netleşmediğinin işaretidir. İdeal isim, ilk anda tuhaf gelir ama anlamını öğrenince akılda kalır. Spotify’ın A/B test ekibinin kendine “ABBA” demesi bunun en iyi örneklerinden biri
    • Elbette hedefe göre değişir. Ama tek bir işe odaklanmak ve o işi isme yansıtmak da iyi bir ilkedir
  • Bir otomotiv OEM’inde motor kalibrasyon mühendisi olarak çalıştım; bütün değişkenler ve fonksiyonlar kısaltmalardan oluşuyordu. İlk ay zihnen patlayacak gibi olmuştum. Sonunda bir çalışma arkadaşım “bu, yeni bir dil öğrenmek gibi” dedi ve gerçekten de öyleydi. Yani teknik isimlerin çok olması bilişsel yükü azaltmıyor

    • Mobil iletişim alanında da aynı durum var. Bütün kısaltmaları ezberlemeye kalkarsanız bunun sonu yok. Mesela AP, bağlama göre Application Processor da olabilir Access Point de. Yine de MSISDN’den kısa olduğu için kullanmak zorunda kalıyorsunuz
    • Londra taksi yeterlilik sınavı videosuna bakarsanız, öğrenme yorgunluğunun insan beyninin yapısını bile değiştirecek kadar yoğun olabildiği söyleniyor. Karmaşık adlandırma sistemleri doğası gereği bilişsel yük yaratır
  • “İşlevsel isimler pazarlamadan iyidir” iddiasına katılmak zor. İşleve dayalı isimler sonunda bitmek bilmeyen bir kısaltma denizi oluşturuyor. ABDC ile ADBC’yi karıştırdığınız durumlar çıkıyor

    • Ben de böyle bir organizasyonda çalıştım; en sonunda CoreMainHttp ve MainHttpCore gibi isimler ortaya çıkıyor, hatta aynı ada sahip farklı API’ler bile bir arada bulunuyor. “DataOrgUtils” gibi, artık var olmayan organizasyon adları bile kalıyor. Sonuçta sevimli isimler de zamanla aynı yerlere toplanıyor. Phoenix, Keymaster, Simpsons, Star Wars gibi kültürel memler tekrar tekrar kullanılıyor
    • Yazar, araçların rekabet içinde ayakta kaldığını gözden kaçırıyor. Akılda kalan isimler, hayatta kalmaya yardımcı oldu
  • HN’de böyle bir yazının çıkması ilginç. awk gibi isimleri örnek verip de “isimlendirmenin özünü kaybettik” demek çelişkili. Sonuçta bu bana daha çok sevimli isimlere yönelik kişisel bir antipati gibi görünüyor. Bu arada bu yorumu Firefox’ta yazdım — adına bakınca bunun bir web tarayıcısı olduğunu anlayamazsınız

    • awk gibi isimlerin de o dönemde kendince bir anlamı vardı. Modern yazılımlar daha geniş bir kullanıcı kitlesini hedeflediği için, uzmanlık ile eğlence arasında denge kurmak gerekiyor. Sevimli isimlerden nefret etmiyorum ama profesyonel bağlamda biraz daha dikkatli olmak gerektiğini düşünüyorum. (Bu yorumu msmtp ile gönderiyorum — adı gibi işlevini açıklayan bir SMTP istemcisi)
  • “Açıklayıcı isimler sıkıcıdır” iddiasına karşılık, ameliyathanedeki aletler de aslında insan adlarından türemiştir. Adson, Allis, Babcock, Kocher gibi isimler işlevi hiç açıklamaz. Sonuçta alışınca anlam kazanıyorlar. awk pek iyi değil ama diff fena bir örnek değil

    • Vücuduna Kirchner pimi takılmış biriyseniz buna katılırsınız
  • “Bizim alanımız rastgele isimlerden oluşan bir hayvanat bahçesi gibi” iddiasına karşı, ben eğlenceli isimleri seviyorum. Benim Wimsey projem bir veri test kütüphanesi ama adına bakınca bunu anlayamazsınız. Yine de Python, Cron, Zellij gibi sevgi ve mizah taşıyan isimleri seviyorum. Sonuçta teknolojiyi insanlar yapıyor ve içinde biraz keyif olmalı. “brown-dog-2” yerine “cookie” daha insani geliyor

    • Ama “data-testing-library” gibi bir isim, ikincisi ortaya çıktığı anda anlamını yitirir
    • .NET’teki Project.Parser.Pcapng gibi yapısal isimler proje içinde iyi olabilir ama bağımsız bağlamda işe yaramaz
    • Öte yandan bazı insanlar, uzmanlığın kendisinden keyif alır ve sevimli isimleri dikkat dağıtıcı bulur. Zanaatkârlıktan gelen tatminin asıl keyif olduğunu savunan bir bakış açısı da var
 
epdlemflaj 2025-12-13

awk bile işlev temelli bir isim demek için biraz....

 
khris 2025-12-13

emacsin ne anlama geldiğini bilen var mı? Bir anlamı var tabii ama kısaltma adlar ilk bakışta anlaşılmıyor; sonuçta bunlar isim... Bir de artık sadece işleve göre ad vermek için proje sayısı fazla.

 
cgl00 2025-12-13

GitHub'ı suçladığına bakılırsa bu düpedüz RMS usulü bir zorlama karalama gibi duruyor haha