19 puan yazan GN⁺ 2025-07-10 | 1 yorum | WhatsApp'ta paylaş
  • Programlamada bir fonksiyonu "çağırmak" ifadesinin kökeni, kütüphanede bir kitabı "istemek" ya da "çağırtmak" kavramına benzer
  • İlk dönem bilgi işlemde, alt yordamların kütüphaneden çağrılması, devreye alınması yaklaşımı baskındı
  • Fortran II, CALL komutunu tanıtarak "bir fonksiyonu çağırmak" ifadesini hızla yaygınlaştırdı
  • Ardından Algol ve JOVIAL gibi diller de bunu benimsedi ve "call" adını kullanmaya başladı
  • "call"ın anlamı zamanla çalışma zamanında denetimin devrinden önce, sırasında ve sonrasında olacak şekilde genişleyip yerleşti

Programcılar neden bir fonksiyonu "çağırmaktan" söz eder?

  • StackExchange'te "bir fonksiyonu çağırmak" ifadesinin kökeni hakkında bir soru sorulmuştu
  • Çeşitli benzetmeler var, ancak gerçekte kökeni "call" sözcüğünün summon, yani bir şeyi huzura çağırmak ya da getirtmek anlamına dayanıyor
    • Kütüphanede kitabı "istemek" gibi, alt yordamı "isteyip" kullanma fikrinden başladı
    • "call number" kütüphanede kitabın yerini gösteren işarettir

Kütüphane terminolojisinde "call"ın tarihi

  • OED'ye göre Melvil Dewey, 1876'da kütüphanecilik terimi olarak "call number" ifadesini ilk kez kullandı
    • "call number", kitabın yeri ya da isteme talebi için kullanılan bir gösterimdir
  • 1888 tarihli Library Journal'da da "call blank", "call slip", "call number" gibi terimler günlük kullanımdaydı
  • Joudrey & Taylor'ın açıklamasına göre "call number", kapalı raflardan materyal isteme eyleminden türemiş bir addır
    • Cutter number gibi sistemler sınıflandırma için kullanıma girdi

Bilgisayar biliminde "call" kullanımının ilk dönemi

  • John W. Mauchly'nin 1947 tarihli makalesinde, alt yordam kütüphanesinden alt yordamın "called in" edilerek kullanıldığı bir örnek görülür
    • Bağlam, kayıtlı bir numara üzerinden hızlıca başvurup kullanmaktır
  • MANIAC II assembly rutinlerinde (1956) de her alt yordam için bir "call number" verilmesi ve gerektiğinde bununla çağrılması fikri uygulanmıştı
    • Gerçek assembly dilinde buna "transfer control" deniyordu
  • Bu dönemde vurgu, çalışma zamanındaki "çağrı"dan çok, derleme ya da bağlama aşamasında kod parçalarını içeri alma fikrindeydi

Programlama dillerinde CALL komutunun ortaya çıkışı

  • Fortran II (1958), CALL ve RETURN komutlarını tanıttı
    • Alt yordama yürütme denetimini "çağırarak" devretme eylemini ifade ediyordu
    • CALL komutu, gerçekten de "çağırma" denilen sözdizimsel eylemi gösteriyordu
  • Zamanla çalışma zamanında "denetimi devretme" ile bağlama/assembly aşamasındaki "çağırma" eylemi giderek belirsiz biçimde iç içe geçmeye başladı

1960'larda "call"ın anlamının genişlemesi ve yerleşmesi

  • Sarbacher'in (1959) sözlüğü, "call in" ifadesini ana rutinden alt yordama denetim aktarımı olarak tanımlar
    • Ayrıca "call number" ve "call word" ile tanımlayıcı ve çağrı kodunu da açıklar
  • JOVIAL'de (1960) "procedure call", "calls" gibi kullanımlar resmî olarak adlaştırıldı
    • Sonrasında çağrı noktası, argüman, parametre gibi çok katmanlı anlamlarla birlikte kullanılmaya başlandı
  • Algol (1959~1960) da "procedure call", "called procedure", "during the call" gibi ifadelerle çağrının farklı anlarını anlattı
    • Peter Naur'un Algol 60 raporunda da "call for" ile "during the call" arasında zamansal anlam ayrımı görülür
  • Burroughs Algebraic Compiler'da (1961) fiil olarak "to call" açık biçimde ilk kez ortaya çıktı
  • Corbató ve diğerlerinden (1963) sonra günümüzdeki "bir alt yordamı çağırmak" kullanımı yaygınlaştı

Sonuç

  • Fortran II'nin CALL X komutu, fonksiyon/alt yordam çağrısı için "call" ifadesinin yerleşmesini sağladı
    • Öncesindeki kütüphane kökenli kavramdan, yani bir şeyi numarasına göre isteme fikrinden esinlense de, programlama dillerinde yeni bir anlam genişlemesi yaşandı
  • Sonrasında Algol, JOVIAL ve diğerleri, "call", "call site" gibi terimleri benimsedi
  • Yaklaşık 1961'den itibaren "X'i çağırmak" ifadesi resmî program dokümantasyonunda ve topluluklarda yerleşmeye başladı
  • Günümüzde fonksiyon çağrısı, denetimi geçici olarak devretme, sonucu alma ve geri dönme sürecinin tamamını anlatır; bunun standart terimi de "call" olmuştur

1 yorum

 
GN⁺ 2025-07-10
Hacker News görüşleri
  • Grace Hopper, call sözcüğünün asıl anlamının (fiziksel kütüphanelerde materyalleri düzenlemek için kullanılan call number kavramından türediğini) compiler teriminin doğuşunu da etkilediğini açıklıyor. Her alt yordam için bir call word atanıyordu ve bu, kütüphaneden materyalleri çıkarıp birleştirerek program oluşturma fikrinden geliyordu
    • Ben bu terimleri bizzat kullanıyorum
    • Ancak şimdi taşlar yerine oturdu. Dewey Onlu Sınıflandırma sistemindeki tanımlayıcı sayılara call number deniyordu
  • Kütüphanecilik ve Bilgi Bilimi'nin modern bilişime hayal ettiğimizden çok daha fazla katkı yaptığını düşünüyorum. Örneğin veritabanı indekslerini anlatırken sık sık kart kataloğu imgesini kullanıyorum. Yazar adına, Dewey onlu sistemine ya da konuya göre arama yapılabilen ahşap çekmeceleri görünce herkes hemen anlıyor. Kütüphane kataloğu kavramına bakın
    • Ben, yerel kütüphanede ahşap çekmeceleri ve kâğıt sözlükleri kullanmış bir nesildenim. 25 yıl önce hash map ya da IDictionary ile ilk karşılaştığımda bu imge sayesinde hemen kavradım. Ama bugünlerde bu mecaz artık pek yardımcı olmuyor. Kart kataloğunun ya da sözlüğün nasıl bir şey olduğunu bizzat açıklamak zorunda kaldığım çok oldu ve gençler de "Ha, yani analog bir hash map" diyor
    • Birkaç ay öncesine kadar terminalin standart genişliğinin neden 80 karakter olduğunu merak ediyordum. Bunun eski PC ekran boyutundan geldiğini sanıyordum. Meğer sebep delikli kartların 80 karakterlik olmasıymış ve delikli kartların kökeni de sonuçta indeks kartlarına dayanıyormuş. Kütüphaneciliğe bir kez daha saygı duydum. Bu, otomobil genişliğinin iki atın kalçası kadar olmasından türediği türden bir bilişim tarihi hikâyesi gibi
    • 1-2 yıl önce kütüphanenin bir köşesinde duran tozlu ahşap çekmeceleri veritabanına benzeterek anlatmıştım. Bağlam ve ön bilgi gerçekten çok önemli
    • Ben hep kitabın sonundaki indeksin, bilişimdeki index teriminin çıkış noktası olduğunu düşünürdüm. Bunu hiç index cards ile ilişkilendirmemiştim
    • Bugünün genç kuşağı kart kataloğunu hiç görmemiş olabilir. Ben de sabit diskin 0 ve 1'lerden oluşan bir liste olduğunu ve bir şeyi bulmak için yapıya ihtiyaç duyulduğunu anlatarak benzetme kurmalarını sağlıyorum
  • Ben Finlandiyalıyım. Fince'de "fonksiyon çağrısı" için kullanılan sözcük kutsua; bunu İngilizceye geri çevirirseniz invite ya da summon olur. Yani "annenin çocuğu bahçeden çağırması" anlamındaki çağırma hissini taşır; Joe'nun arkadaşını telefonla araması ya da "bu renge ne denir?" anlamındaki call ile aynı değil. Sadece paylaşmak istedim
    • Almanca'da aufrufen kullanılıyor; parçalara ayırarak çevirirseniz aşağı yukarı "çağırıp getirmek" gibi. Okulda öğrenci adları okunurken olduğu gibi doğrudan nesneyle kullanıldığında, birini adıyla ya da numarasıyla çağırmak anlamına geliyor. Telefon etmek içinse anrufen kullanılıyor
    • summon, bazen koda okült bir korku çağrıştırıyormuş gibi geliyor ve bazen de son derece uygun. invite de şeytanı ya da vampiri içeri davet etmek gibi gelebiliyor
    • Norveç'te funksjonskall deniyor; kelimesi kelimesine çevirince function call. Yani yalnızca bir şeyi çağırmak anlamındaki call
    • Rusça da benzer; geri çevirince "telefonla çağırmak", "huzura çağırmak", "davet etmek" gibi anlamlar çıkıyor
    • Doğrudan konuyla ilgili değil ama Helsinki'deyseniz yerel Hacker News buluşmasına katılmanız güzel olabilir
  • Wilkes, Wheeler, Gill (1951) adlı kitapta call in ifadesi alt yordam çalıştırmak için kullanılıyor. 31. sayfada "Bir alt yordam doğru şekilde çağrılmazsa makine durur" ve "Herhangi bir program içinde alt yordamlar serbestçe çağrılabilir" deniyor. 1950 tarihli erken dönem EDSAC raporlarında da "call in auxiliary sub-routine" notunu bu sunumda görebilirsiniz
  • Bazen call yerine invoke ya da execute da kullanılıyor ama bunlar daha uzun ve daha genel terimler. Yine de call sözcüğünün yanlış kullanıldığı durumları ("calling a command", "calling a button") ana dili İngilizce olmayan bilgisayar bilimi öğrencilerinde sık duyuyorum ve bu biraz rahatsız edici
    • invoke, Latince invocō, invocāre (çağırmak, huzura çağırmak) kökünden geliyor; yani bu yanlış değil, sadece daha resmî bir ifade
    • En sık duyduğum — ya da en sinir bozucu bulduğum — yanlış örneklerden biri bunun return ile kullanılması. "Şimdi return anahtar sözcüğünü çağırınca fonksiyon biter" gibi ifadeler duydum
    • C#, delegate'ler ya da reflection gibi yerlerde sık sık Invoke kullanırken, debugger'da Call Stack diyor
    • Benim deneyimimde, programlamayı yeni öğrenen anadili İngilizce olanlar da benzer kullanımlar yapıyor. Komut olmayan şeyleri de command diye açıklıyorlar
    • Acemilerin bazen bunun tam tersine, statement'ları ya da bir fonksiyon tanımının tamamını command diye adlandırdığı da oluyor
  • Bu bilimsel bir teori değil, sadece bir gözlem. Yeni terimler, bir tür temas noktası olduğunda daha kolay yayılıyor. Genelde kısa oluyorlar ve anlamı ya da imgeyi kolay çağrıştırıp hatırlattıkları için hızla yayılıyorlar. Bazen açıklama gerekiyor ama çoğu zaman insanlar bağlamdan öğrenip yaymaya devam ediyor. salty gibi sözcüklerde olduğu gibi, call için de durum bu. Kısa ve sık kullanılıyor; ayrıca call up / call in / summon / invoke (biraz büyü yapma hissi de veriyor) gibi çağrışımları oturuyor. O dönemde telefon da yeni ve şaşırtıcı bir teknolojiydi; bu yüzden başka birini telefonla arama imgesi, alt yordam çağırma fikriyle kolayca örtüşmüş olabilir. jump gibi terimler zaten başka anlamlarda kullanılıyordu, dolayısıyla callın yaygınlaşabildiğini düşünüyorum
    • Benim için salty, tears ile pek ilgili değil. Benim dil alışkanlığımda birinin salty olması üzgün olması değil, sinirli ya da rahatsız olması demek. Yani tuz gibi keskin ve sert bir şey imgesinden geliyor. Demek ki yorumlar farklı olsa da metafor işe yarıyor; callın da böyle yayılmış olabileceğini gösteriyor
  • "... karmaşık şeyler bir kütüphanede, yani daha önce çözülmüş değerli problemlerin saklandığı bir manyetik bant setinde bulunmalıdır" cümlesindeki library sözcüğünün, gerçekten etiketli materyal raflarından geldiğini hiç düşünmemiştim
  • Bir fonksiyonun ille de call gibi bir anahtar sözcüğe ihtiyaç duyması gerekmediğini düşünürdüm. Fonksiyonlar genelde bir değer döndürür, bu yüzden bir atama ifadesi içinde kullanılabilirler. call gerektiren şey alt yordamdı; pratikte bu, isim verilmiş bir adres ya da etiketti. Aslında bu adrese doğrudan GOTO ile gidip geri dönmek de mümkün. CALL anahtar sözcüğü, yürütme akışını daha açık hale getiriyor. Sanki patron Sam'e hesabı yaptırıyor, sonra Bill'e TPS raporunu yazdırıyor gibi iş akışı ilerliyor. Sonunda her şey fonksiyona dönüştü ve alt yordamlar spaghetti diye anılmaya başladı. Ama routine (program) ve subroutine terimlerinin neden var olduğunu merak ediyorum
    • routine sözcüğünün kökeni için, 1947 tarihli Goldstine ve von Neumann belgesinde açıkça şöyle deniyor: "Bir problemin kodlanmış komut dizisine routine diyoruz" (bakınız)
  • Müzikte de "call and response" diye bir ifade var. Bunun return value kavramıyla da bağlantılı olduğunu düşünüyorum
  • Algol 60 da sadece fonksiyonlar için değil, parametreler için de call terimini kullanıyordu. Örneğin call by value, call by name gibi; 4.7.5.3 bölümünde "call by value durumunda" şeklinde geçiyor. Bugün genelde procedure/function/subroutine call edilir, argument/parameter ise pass edilir diyoruz; bu yüzden pass by value/reference/name daha açık. Ama call by value gibi eski terimler hâlâ bazı bağlamlarda yaşıyor. Argument ya da parameter'ı call etme fikri kayboldu ama bu tür miras terimler kaldı