Katmanya · Bestiyer

Boncuk Örümceği

string

Yuvarlak gövdeli, sekiz kısa bacaklı, iri gözlü bir örümcek. Ağından aşağı sarkar ve elinde üzerine harf boncukları dizilmiş bir ip tutar.

İki anlatım

Başlangıç

Bilgisayar bir kelimeyi saklarken harfleri bir ipe boncuk gibi dizer. Bu işi Boncuk Örümceği yapar.

İpi bir kez düğümledi mi, o ip artık hiç değişmez. “kedi”yi “Kedi” yapmak istersen örümcek eski ipi bozmaz, yeni bir ip örer. Eski ip, kimse ona bakmayana kadar yerinde durur.

İleri

Boncuk Örümceği bir string’dir: sırayla dizilmiş karakterlerden oluşan, değiştirilemeyen bir metin değeri.

Ne yapar

  • Harfleri, rakamları, boşlukları ve emojileri sırayla bir ipe dizer.
  • İpin uzunluğunu söyler (length), istenen sıradaki boncuğu gösterir (s[0]).
  • Büyütme, kesme, değiştirme, birleştirme gibi her işte yeni bir ip örer (toUpperCase, slice, replace, +).

Ne yapamaz

  • Dizdiği ipteki bir boncuğu değiştiremez, ekleyemez, çıkaramaz.
  • Boncukları sayı gibi toplayamaz: "2" + "2" dört değil, "22" olur.

Kod karşılığı

let ad = "kedi";
ad[0] = "K";            // ad hâlâ "kedi" (strict mode'da TypeError)
const yeni = ad.toUpperCase(); // → "KEDİ" değil, "KEDI"
ad.toLocaleUpperCase("tr");    // → "KEDİ"
"😀".length;            // → 2

İleri kurallar

  • String metotları her zaman yeni bir string döner; çağrıldığı string’i değiştirmez.
  • ad = ad + "!" ipi değiştirmez: değişken yeni bir ipi göstermeye başlar. Değiştirilemezlik değerle ilgilidir, const ise değişkenin başka bir değere geçmesini engeller. İkisi ayrı kurallardır.
  • toUpperCase() dilden bağımsızdır: "i" büyüyünce "I" olur. Türkçe için toLocaleUpperCase("tr") gerekir. toLowerCase() de dilden bağımsızdır: "İ" noktalı bir "i" artı ayrı bir nokta olur, bu yüzden "KEDİ".toLowerCase().length 5 verir. Türkçe için toLocaleLowerCase("tr").
  • length karakter değil, UTF-16 kod birimi sayar. Tek parçalı emojilerin çoğu 2 birimdir; aile ya da bayrak gibi birleşik emojiler daha fazla: "👨‍👩‍👧".length 8 verir.

Nerede kırılır

  • “Harf” boncuğu. Bir boncuk bir harf gibi anlatılır ama gerçekte bir UTF-16 kod birimidir. Tek parçalı emojilerin çoğu iki boncuk tutar; aile ya da bayrak gibi birleşik emojiler daha fazla. Gülen yüz boncuğu ipte iki yer kaplar.
  • Eski ip nereye gider? Anlatım eski ipin yerinde durduğunu söyler. Gerçekte onu hiçbir değişken göstermiyorsa motor belleği sonra geri alabilir. Bunu ne zaman yaptığı bizim kontrolümüzde değildir.
  • Her işlem gerçekten yeni bir kopya mı? Motorlar string’leri içeride farklı biçimlerde tutabilir; her işlemin gerçekten baştan bir kopya ürettiğini iddia etmiyoruz. Kural davranışla ilgilidir: dışarıdan bakan eski ipi hiç değişmiş görmez.
Model sayfası: üç poz, üç ifade.
İlk göründüğü masal İki ev bir avlu

Nerede yaşar

Yolculuğu Liman ile evler arasında: sayfalar denizden metin olarak gelir, evde odalara dönüşür.

JavaScript’te değer olarak Motor Dairesi’nin Öbek’inde durur; Öbek’in gövdesi derinde Bellek Ovası’ndaki işaretlerdir. Arşiv Mağaraları’na dosya olarak yazılırken boncuklar baytlara çevrilir.

Akrabaları

  • Sıfır Treni: İkisi de 0’dan numaralanır. Tren vagonunu değiştirebilir, örümcek boncuğunu değiştiremez.
  • Evet-Hayır Arısı: Boş ip ("") kapıda hayır sayılır.
  • Çevirgen Solucan: String metotları ipi alıp yeni ip çıkaran solucanlardır.