“Satır içi” anlamak için tarihi ve 20 (ve 30) yıl önce yaşamın nasıl olduğunu anlamanız gerekir .
Belleği az olan bilgisayarlara kod yazıyorduk, bu yüzden bir derleyicinin bir seferde bir program oluşturan tüm kodu işlemesi mümkün değildi. Derleyici de çok yavaştı, bu yüzden değişmemiş kodu yeniden derlemek zorunda kalmadınız - tüm projeleri yeniden derlemek için 24 saatten fazla (bir üst arabadan daha pahalı bir bilgisayarda) alarak birkaç proje için normaldi üzerinde çalıştı.
Bu nedenle, her kod dosyası ayrı olarak bir nesne dosyalarına derlendi. Her nesne dosyası, içerdiği tüm işlevin listesiyle birlikte işlevin “adresi” ile başladı. Bir nesne dosyası ayrıca çağrının konumu ile birlikte diğer nesne dosyalarında çağırdığı tüm işlevlerin bir listesine sahipti.
Bir bağlayıcı öncelikle nesne dosyalarını okumak ve onlar içinde bulundukları dosya ve orada adresiyle birlikte, ihraç tüm fonksiyonların bir listesini oluşturmak istiyorum. Daha sonra, tüm “harici” işlev çağrılarını işlevin adresiyle güncellerken tüm nesne dosyalarını yeniden program dosyasına gönderir.
Bağlayıcı, derleyici tarafından üretilen makine kodunu harici işlev çağrılarına yapılan referansları düzeltmekten başka bir şekilde değiştirmedi veya optimize etmedi. Bağlayıcı işletim sisteminin bir parçasıydı ve çoğu derleyiciden önce geliyor. İnsanlar yeni bir derleyici yazdıklarında, geçerli bağlayıcılarla çalışmak ve geçerli nesne dosyalarına bağlanmak için ona ihtiyaç duyuyorlardı, aksi takdirde sistem çağrıları yapılamadı.
Derleyici, kodun yalnızca dahil edilen tüm başlık dosyalarıyla birlikte derlediği “.c” veya “.cpp” dosyasında görüldü. Bu nedenle, diğer “.c” veya “.cpp” dosyalarındaki koda dayalı bir optimizasyon yapamadı.
“Satır içi” anahtar sözcüğü, bir işlev (yöntem) gövdesinin bir başlık dosyasında tanımlanmasına izin verdi, böylece derleyicinin onu çağıran kodu derlerken işlevin kodunu kullanmasına izin verdi. Örneğin, anter .cpp dosyasında tanımlı bir koleksiyon sınıfınız olduğunu, bu sınıfın bir kod satırı içeren bir "isEmpty" yöntemine sahip olacağını, bir işleve çağrı yapmak yerine, sonuçta ortaya çıkan programda büyük bir hızlanma olacağını varsayalım , işlev çağrısı bu tek satırla değiştirildi.
"Satıriçi" anahtar kelimesi, o zaman çok sayıda programcının nesnenin özel alanlarına erişmesine gerek olmadan, işlev çağrılarının maliyetinden kaçınırken verilerin kapsüllenmesine izin vermenin "ucuz ve kolay" bir yolu olarak görülüyordu. (Çok daha kötü bir yolun “satır içi” kodunun, o zamanlar yaygın olanları kodladığı makrolar.)
Bu günlerde “bağlayıcılar” çok sayıda kod optimizasyonu yapıyor ve bazı ekip tarafından derleyici olarak yazılma eğiliminde. Derleyici genellikle kodun doğru olup olmadığını kontrol eder ve kodunu "sıkıştırarak" makine kodu oluşturma görevinin çoğunu bağlayıcıya bırakır.