2 puan yazan GN⁺ 2024-12-17 | 1 yorum | WhatsApp'ta paylaş
  • 1843'te Ada Lovelace, henüz tamamlanmamış Analytical Engine için Bernoulli sayıları hesaplama prosedürünü yayımladı ve bu yüzden “ilk bilgisayar programı” tartışmasının merkezine yerleşti
  • Yayımlanan tablo, Bernoulli dizisinin tamamını ele alma yöntemindeki bir adımı gösteriyor; Lovelace'ın B7 dediği değer, modern gösterimde sekizinci Bernoulli sayısına karşılık geliyor
  • Note G'deki program, 25 işlem, iç içe döngüler ve değişken değerlerini izleme gösterimi içererek Menabrea'nın 11 işlemli, döngüsüz örneğinden çok daha gelişmişti
  • C'ye çeviri sürecinde, özgün tablodaki dördüncü işlem olan v5 / v4 ifadesinin aslında v4 / v5 olması gerektiği ortaya çıktı; bu muhtemelen bir dizgi hatasıydı, ancak hesaplama tarihinin en eski bug'ı olarak görülebilir
  • Lovelace'ın ayırt edici yönü, “ilk programcı” unvanından çok, kart hazırlamayı yalnızca cebirsel ifadelerin çevirisi değil, iyi ya da kötü yapılabilecek bir programlama işi olarak anlamış olmasıydı

1843'te yazılmış ama çalıştırılamamış program

  • Microsoft'un kuruluş hikâyesinden farklı olarak, Ada Lovelace'ın programı gerçek bir makinede çalıştırılma şansı bulamadı
    • Paul Allen ve Bill Gates, ortada Altair yokken Intel 8080 belirtimine dayalı bir emülatörde BASIC yorumlayıcısını test etmiş ve onu gerçek Altair'de de çalıştırmıştı
    • Lovelace da yalnızca açıklaması bulunan bir bilgisayar için program yazdı, ancak Analytical Engine inşa edilmediği için onu çalıştıramadı
  • Lovelace'ın programı sıkça dünyanın ilk bilgisayar programı olarak anılır, ancak bu konumu hâlâ tartışmalıdır
    • Lovelace'ın katkısının kapsamı ve değeri etrafındaki tartışma, Walter Isaacson'ın bunu “minor academic specialty” diye adlandırmasına yetecek kadar sürdü
    • Burada asıl önemli soru, kişi değerlendirmesinden çok, 1843'te yazılan programın çalışacak şekilde nasıl tasarlandığıdır
  • Program, basit bir formül listesinin ötesine geçiyordu
    • Tekrarlanabilir işlem grupları kurarak loop'a karşılık gelen bir yapı kullanıyordu
    • Değişken durumlarındaki değişimi izlemek için bir gösterim sunuyordu
    • Bugünkü yazılım geliştirme deneyimine benzeyen yönleri vardı

Bernoulli sayıları ve kuvvet toplamı problemi

  • Lovelace'ın programı Bernoulli sayılarını hesaplamak üzere tasarlanmıştı
  • Bernoulli sayılarının arka planında, kuvvet toplamlarını hesaplamaya dair eski bir matematik problemi vardır
    • Pisagorcular, 1 + 2 + 3 + ... + n toplamını doğrudan toplamak yerine hesaplama yöntemini aradı ve iki üçgeni bir dikdörtgen oluşturacak şekilde eşleştirerek n(n+1)/2 formülünü elde etti
    • Arşimet, 1² + 2² + 3² + ... + n² biçimindeki toplamlarla ilgilendi ve geometrik olarak yorumlanabilen bir çözüm bıraktı
    • Aryabhata, 499 yılında küpler toplamı formülünü de içeren Aryabhatiya'yı yayımladı
  • Daha genel problem, 1^k + 2^k + ... + n^k biçimindeki toplamların nasıl bulunacağıydı
    • Johann Faulhaber, 1631'de 17. kuvvete kadar formülleri hesaplayıp yayımladı, ancak genel çözümü vermedi
    • Blaise Pascal, 1665'te genel bir yöntem geliştirdi, fakat bunun için önce daha düşük tüm kuvvet toplamlarının nasıl hesaplandığını bilmek gerekiyordu
  • Jakob Bernoulli daha kullanışlı bir genel çözüm bıraktı
    • Pascal üçgenini kullanarak polinom katsayılarındaki deseni kavradı
    • Katsayıların bir kısmı Pascal üçgeninden, kalanı ise katsayı toplamının her zaman 1 olması özelliğinden çıkarıldı
    • Bu ikinci katsayı çarpanı, Bernoulli sayıları olarak bilinen diziye dönüştü
  • Bernoulli'nin keşfi, keyfi bir kuvvet toplamını hesaplamayı bir anda kolay bir probleme dönüştürmedi
    • k'inci kuvvet toplamını hesaplamak için k'inciye kadarki Bernoulli sayılarını bilmek gerekiyordu
    • Her Bernoulli sayısı, önceki Bernoulli sayılarına dayanarak hesaplanıyordu
    • Yine de her kuvvet toplamı formülünü tek tek türetmektense uzun bir Bernoulli dizisini hesaplamak çok daha kolaydı

Babbage'ın iki hesap makinesi

  • Charles Babbage iki tür mekanik hesap makinesi tasarladı
    • İlki Difference Engine idi
    • İkincisi ise bugün mekanik bilgisayar olarak bilinen Analytical Engine idi
  • Difference Engine bir bilgisayar değil, yalnızca toplama ve çıkarma yapan bir makineydi
    • Babbage, o dönemde logaritma tablolarında çok hata olmasından rahatsızdı ve bu tabloları mekanik olarak üretmek istiyordu
    • Gaspard de Prony'nin bölünmüş farklar yöntemi, logaritma tablosu oluşturma sürecini yalnızca toplama ve çıkarma gerektiren küçük adımlara ayırıyordu
    • Polinomlar, logaritma ve trigonometrik fonksiyonların yaklaşımında kullanılabiliyordu
  • Difference Engine, fark tablosunun her sütununu fiziksel bir dişli sütununa karşılık getiriyordu
    • Her dişli, ondalık sistemde bir basamağa karşılık geliyordu ve bir sütunun tamamı tek bir ondalık sayıyı temsil ediyordu
    • 8 sütuna sahipti ve bu sayede 7. dereceye kadar polinomların tablosunu oluşturabiliyordu
    • İnsan, başlangıç değerlerini ayarladıktan sonra kolu çeviriyor ve sabit farkların bir sonraki sütuna aktarılmasını sağlıyordu
  • Babbage, Difference Engine'in bir bölümünü yapıp gösterdi ama makinenin tamamını bitiremedi
    • Gerekli sayıdaki dişliyi yeterli hassasiyetle üretebilecek bir imalatçı bulamadı
    • Çalışan bir Difference Engine ancak hassas işlemenin mümkün hâle geldiği 1990'larda yapılabildi
  • Analytical Engine ise çok daha güçlü ve esnek bir makine olarak tasarlandı
    • Difference Engine'deki gibi dişli sütunları kullanacaktı, ancak yüzlerce hatta daha fazla sütuna sahip olması planlanıyordu
    • Jacquard Loom gibi delikli kartlarla programlanabilecekti
    • Yalnızca toplama-çıkarma değil, çarpma ve bölme de yapabilecekti
    • “mill” denilen bölüm işleme uygun biçimde yeniden düzenlenecek, saklama sütunlarından işlenen sayıları okuyup sonucu başka sütunlara yazacaktı

Menabrea makalesi ve Lovelace'ın notları

  • Babbage, Torino'da İtalyan mühendis ve daha sonra başbakan olacak Luigi Menabrea ile tanıştı; Menabrea 1842'de Analytical Engine'in potansiyelini açıklayan Fransızca bir makale yayımladı
  • Lovelace, Menabrea'nın makalesini 1843'te İngilizceye çevirdi
    • Lovelace, Babbage ile ilk kez 1833'te, 17 yaşındayken tanışmış ve onun Difference Engine'inden etkilenmişti
    • Küçük yaşlardan itibaren yoğun matematik eğitimi aldı; evlenip üç çocuk sahibi olduktan sonra da Augustus de Morgan'dan matematik öğrenmeye devam etti
  • Menabrea'nın makalesi, Difference Engine'in çalışma biçimini ve Analytical Engine'in üstünlüğünü kısaca ele alıyordu
    • Analytical Engine, iki 20 basamaklı sayının çarpımını 3 dakika içinde bulabilen bir makine olarak tanıtılıyordu
    • Doğrusal denklem sistemleri ile iki binomun çarpım açılımını örnek veriyor ve “diagrams of development” kullanıyordu
    • Bu tablolar da Lovelace'ın programıyla aynı anlamda programdı, ancak dallanma ya da döngü içermeyen basit örneklerdi
  • Lovelace'ın çevirisine, özgün metinden daha uzun notlar eklendi ve asıl katkı burada ortaya çıktı
    • Note A, Analytical Engine'in herhangi bir matematiksel işlemi yapabilen bir makine olma ihtimalini uzun uzun ele alıyordu
    • Yalnızca sayılar üzerinde değil, temel karşılıklı ilişkileri işlemlerin soyut bilimiyle ifade edilebilen şeyler üzerinde de çalışabileceğini öne sürüyordu
    • Örneğin bir gün müzik besteleyebileceğini bile söylüyordu
  • Note G iki nedenle ünlüdür
    • Lovelace'ın, Analytical Engine için “düşünüyor” denemeyeceği yönündeki argümanı daha sonra Alan Turing tarafından “Lady Lovelace's Objection” olarak adlandırıldı
    • Aynı zamanda makinenin çok karmaşık problemleri ele alabileceğini göstermek için Bernoulli sayılarını hesaplayan bir program da içeriyordu

Note G programının gerçek yapısı

  • Lovelace'ın tam tablosu, genişletilmiş bir “diagram of development” biçimindedir; özgün görsel burada görülebilir
  • Program, yaygın matematiksel sembollerle belirtilmiş bir işlem listesine daha yakındır
    • Babbage ya da Lovelace'ın, Analytical Engine için bir opcode kümesi oluşturma aşamasına kadar ilerlemediği anlaşılıyor
  • Lovelace, Bernoulli dizisinin tamamını belli bir sınıra kadar hesaplama yöntemini anlattı, ancak tabloda verilen program bunun yalnızca bir adımını örnekliyordu
    • Hesaplanan değer, Lovelace'ın B7 dediği şeydi
    • Modern matematik gösteriminde bu, sekizinci Bernoulli sayısıdır
    • Denklem B7 = -1(A0 + B1A1 + B3A3 + B5A5) biçimindedir
  • Bu denklemdeki her terim, belirli bir kuvvet toplamı polinomunun katsayısını temsil eder
    • Söz konusu kuvvet 8'dir ve sekizinci Bernoulli sayısı ilk kez pozitif tam sayıların 8. kuvvetleri toplamı formülünde ortaya çıkar
    • B1 ile B7, Lovelace'ın indekslemesine göre farklı Bernoulli sayılarıdır
    • A0 ile A5, Bernoulli'nin Pascal üçgeniyle hesaplayabildiği katsayı çarpanlarıdır
    • Lovelace'ın programı n = 4 kullanır
  • C çevirisi bir gist olarak sunulmuştur
    • Önce A0 ve B1A1 hesaplanır
    • Ardından iki kez çalışan bir döngüye girilerek B3A3 ve B5A5 hesaplanır
    • Her çarpım hesaplandıktan sonra önceki çarpımlarla toplanır ve sonunda toplam elde edilir

Döngüler, değişken durumu ve eski bir bug

  • C çevirisi, Lovelace programının ne kadar ileri görüşlü olduğunu iyi gösterir
    • Özgün programda tam anlamıyla bir while döngüsü yoktu, ancak Lovelace işlem grupları oluşturup notlarla bunların ne zaman tekrarlanacağını belirtiyordu
    • C çevirisinde iki while döngüsü vardır ve biri diğerinin içine gömülüdür
    • Hem özgün metindeki hem de C çevirisindeki v10, her tekrar adımında azalan bir sayaç değişkeni gibi davranır
  • Lovelace'ın tablosu, Menabrea'nın tablolarına kıyasla durum değişimlerini izlemeyi daha kolaylaştırır
    • “Indication of change in the value on any Variable” adlı bir sütun vardır
    • Her değişkene üst simge indeks eklenerek program çalışırken o değişkenin tuttuğu ardışık değerler gösterilir
    • Üst simge 2, program başladıktan sonra o değişkene atanan ikinci değeri ifade eder
  • C'ye aktarılıp çalıştırıldığında başta yanlış sonuç çıktı ve neden çeviri kodu değil, özgün tablonun kendisiydi
    • Lovelace'ın “diagram of development” tablosunda dördüncü işlem v5 / v4 olarak yazılmıştır
    • Doğru sıra v4 / v5 olmalıdır
    • Bu, Lovelace'ın yazdığı programdaki bir hata değil, büyük olasılıkla bir dizgi hatasıydı
  • Jim Randall da Lovelace programını Python'a çevirdi ve aynı bölme bug'ına ek olarak iki başka soruna daha dikkat çekti
  • Özgün programdaki küçük bug, Lovelace'ın yalnızca bir gösterim değil, gerçek bir programa çok yakın bir şey yazmaya çalıştığı yorumuyla da örtüşür

“İlk programcı” unvanının sınırları

  • Lovelace'ın “ilk program”ı yazdığını ya da yayımladığını söylemek bütünüyle doğru değildir
    • Menabrea, Lovelace'ın çevirisinden bir yıl önce “diagrams of development” yayımlamıştı
    • Babbage da yayımlanmamış 20'den fazla program yazmıştı
    • Neye program deneceğine bağlı olarak burada tartışma payı vardır
  • Lovelace'ın yayımladığı program, ondan önce yayımlananlardan çok daha ilerideydi
    • Menabrea'nın verdiği en uzun program 11 işlemdi
    • Menabrea'nın örneklerinde döngü ya da dallanma yoktu
    • Lovelace'ın programı 25 işlem ve iç içe döngüler, dolayısıyla bir dallanma yapısı içeriyordu
  • Menabrea, makine tamamlandığında zorluğun kart hazırlamaya indirgeneceğini ve kartların yalnızca cebirsel ifadelerin çevirisi olduğu için basit bir gösterimle bu işin uygulayıcılara kolayca bırakılabileceğini düşünüyordu
  • Babbage ve Menabrea, Analytical Engine'i esas olarak ilgilendikleri matematiksel hesaplama problemlerine uygulamaya odaklandı
  • Lovelace ise Analytical Engine'in, Babbage ya da Menabrea'nın hayal ettiğinden çok daha fazlasını yapabileceğini düşündü ve “kart hazırlama”nın basit bir yan iş değil, iyi ya da kötü yapılabilecek bir programlama görevi olduğunu kavradı

1 yorum

 
GN⁺ 2024-12-17
Hacker News yorumları
  • Önemsiz olmayan bir programın gerçek işareti, ilk denemede çalışmamasıdır
    Babbage’ın basit bir makine yapmak için gereken hassas seri üretim teknolojisi henüz olmadığı için hayal kırıklığına uğradıktan sonra, bir basamak daha karmaşık yeni bir sistem tasarlayıp daha gelişmiş imalat kapasitesi aramak için İtalya’ya kadar gitmesi şaşırtıcı

    • Böyle bir çalışanım olmuştu
      Bir şey yapmaya çalışıp tıkanınca önce kendi aracını yapardı; bir keresinde de çok küçük punto boyutlarında yerleşik yazı tipini beğenmediği için kendi yazı tipini bizzat yapmıştı
      Tanıdığım en iyi mühendisti, ama tavşan deliğine düşmemesi için sürekli göz kulak olmak gerekiyordu
    • Babbage/Lovelace tarihine +1, ama iki olgu ayrı ayrı doğru olsa bile Babbage’ın hassas işleme eksikliği yüzünden daha karmaşık bir sistemi ve İtalya yolculuğunu “en iyi yol” olarak seçtiğini söylemek zor
      Tim Robinson da “1920’lerin Meccano’su 100 yıl önce var olsaydı Babbage tamamen başarılı olurdu” demişti; bence o, gerçekçi olarak mümkün olanın ötesindeki fikirleri yüzünden donanımın ortasına atılmış bir yazılım insanına daha yakındı
      İş ve proje planlama sezgisinin zayıf olup kapsamı küçültememesi ya da 10 basamaklı hassasiyetten vazgeçememesinin yanı sıra, sürekli daha iyi fikirler bulup onların peşinden giderek tavşan deliğine düşüyordu; genç yaşta yalnızca Difference Engine önerisiyle çeşitli ödüller aldığı için, onlarca yıl sonra bile vazgeçmesi zor olmuş olmalı
      Ayrıca hükümetle iç içe geçmesi trajedinin büyük eksenlerinden biri. Aristokratlar hükümeti ve siyaseti küçümseyip güvenmezdi, alt sınıflar da hükümetten pek fayda görmedikleri için güvenmezdi; ama Babbage, vatansever bir hükümet anlayışına sahip olmaya tam uygun bir orta sınıf mensubu olduğundan, icadını “ülkeye” adadığını ve hükümetin bunu ödüllendirmesi gerektiğini düşünmüş gibi görünüyor
      Difference Engine’i tamamlayamadı, ama daha iyi olan Analytical Engine’i ek finansmanla gerçekleştirebileceğini söyleyerek hükümete sordu; hükümet de 20 yıl boyunca kararsız kaldı. Hükümet icadı geri vereceğini söylediğinde bile reddetti
      Birçok ödülün etkisiyle, kendisini “zeki insan” olarak tanımlayan kimliğine de takılıp kalmış gibi; Faraday ile birlikte ödül değerlendirmesi yapma teklifini, tek jüri üyesi kendisi olmalı diyerek reddettiğine dair bir anekdot var. Bu tavrın da onu pratik uygulamadan çok temelsiz dâhi tipi fikirlere sürüklemiş olma ihtimali yüksek
      Sydney Padua’nın The Thrilling Adventures of Lovelace and Babbage kitabı çok iyi araştırılmış görünüyor; ana metnini çok okuyamadım ama ekleri ayrıntılı okudum ve tavsiye edebilirim
    • “Önemsiz olmayan bir program ilk denemede çalışmaz” sözü doğru değil
  • Gerçekten harika bir yazı. Girişte Lovelace’ın hesaplamaları tekrarlanabilir gruplar hâlinde nasıl düzenleyeceğini derinlemesine düşünerek döngüyü icat etmesi ve değişkenler değiştiğinde durumu izlemenin önemli olduğunu fark edip bu değişimi gösterecek bir notasyon oluşturması etkileyici
    Bir programcı olarak Lovelace’ın yaptığı işin bugünkü yazılım yazma deneyimine ne kadar benzediği şaşırtıcı; Bernoulli sayılarını hesaplamak için tasarladığı açıklama da onun ne yaptığını anlamaya yetecek kadar ayrıntılı
    Bugün yaşıyor olsaydı koridorun sonunda Rust ile bir sorunla boğuşuyor olurdu diye düşünüyorum; statik tipli dilleri de güçlü biçimde tercih ederdi gibi geliyor

    • Ada’nın programlama tekniği açısından ne kadar takdir edilmesi gerekirse gereksin, her zaman en çok öne çıkan şey hesaplamanın büyük resmini görebilme yeteneği
      Analytical Engine’in yalnızca sayılara değil, soyut işlem biliminin ilişkileriyle ifade edilebilen başka nesnelere de uygulanabileceğini; örneğin armoni ve beste yapmanın temel ilişkileri bu şekilde ifade edilirse, her karmaşıklıkta ve uzunlukta incelikli müzik üretebileceğini görmesi asıl nokta
      Gerçek programlanabilir bilgisayarların ortaya çıkmasından bir yüzyıl önce, 1842’de, mekanik bir bilgisayar prototipinin açıklamasından yola çıkarak bunu düşünmüş olması olağanüstü bir hack
    • Değişkenler değiştiğinde durumu izlemek için kullandığı notasyonun statik tek atama biçimine çok benzemesi özellikle dikkatimi çekti
      https://en.wikipedia.org/wiki/Static_single-assignment_form#Benefits
      Bugün bile son teknolojiye yakın bir teknik; o ise bunu 180 yıl önce zaten kullanıyormuş
  • Paul Allen ve Bill Gates’in Altair için BASIC yorumlayıcısını, gerçek bir Altair olmadan, Harvard bilgisayarında yalnızca Intel 8080 spesifikasyonlarına bakarak yaptıkları bir emülatörle test etmeleri ve gerçek Altair’in başında ilk çalıştırdıklarında düzgün çalışması ilginç
    O hâlde burada asıl gizli kahramanlar, yalnızca spesifikasyonlara bakılarak yapılmış bir emülatörde çalışan yazılımın gerçek donanımda da sorunsuz çalışacağı kadar doğru bir teknik şartname hazırlayan Intel mühendisleri değil mi diye düşünüyorum

    • 1976’da ilk ticari programlama işim olarak Fortran ile yazılmış bir 8008 emülatörünü, Data General minibilgisayarında 8080 emülatörü gibi çalışacak şekilde değiştirdim
      Plotter için 8080 firmware’i yazan başka bir programcının kodu debug edebilmesini sağlamak içindi; o emülatörün kaynağının Intel’in INTERP/8 8008 adlı şeyinden geldiğini hatırlıyorum. İnternetteki yazılara bakılırsa Allen ve Gates de onu kullanmış gibi
  • En harika kısmın, çevirisine eklediği “notes” içindeki gerçek çalışma olduğunu düşünüyorum
    Referans: https://upload.wikimedia.org/wikipedia/commons/c/cf/Diagram_for_the_computation_of_Bernoulli_numbers.jpg
    Ve https://en.wikipedia.org/wiki/Note_G
    Yazı, onun çalışmasını Python’a aktaran şu kaynağa da atıf yapıyor: https://enigmaticcode.wordpress.com/tag/bernoulli-numbers/

    • Yazının yarısı Note A ve Note G hakkında
  • Lovelace’ın programının C’ye aktarılmış hâlinin, işe yaramaz isimli değişkenlerle dolu olması dışında o kadar da yabancı görünmediği kısmı okuyunca, yazarın belli ki iş arkadaşlarımla hiç tanışmadığını düşündüm

    • Lisedeki programlama dersinde proje ortağımın değişken adlarını aklına gelen en bayağı ve müstehcen kelimelerle verdiği zamanı hatırladım
      Özellikle tutucu biri değildim ama elbette “butts” değişkeninin ne için olduğunu her seferinde hatırlayamıyor, kendi kodu yüzünden neden sürekli kafasının karıştığını da bir türlü anlayamıyordu
    • Ya da programlama yapan matematikçilerle, fizikçilerle ve mühendislerle hiç çalışmamış gibi. O cümleyi görür görmez “tipik quant” diye düşündüm
      Kimya mühendisi olan babam programlamayı FORTRAN ile öğrenmişti; o dönemde değişken adlarının 1 harf ve en fazla 2 rakam olması gerekiyordu. Daha sonra Basic öğrendi ama kodu zihinsel olarak hâlâ FORTRAN’dı, o yüzden bu alışkanlık devam ediyordu
      Başta sadece babamın böyle olduğunu sanıyordum; çok daha sonra Wall St’de çalışırken Numerical Recipes kodunu kopyalayıp kullanan quant’larla çalışınca C’de de tam olarak aynı manzarayı gördüm
  • Menabrea’nın Analytical Engine’i esas olarak “uzun ve kuru hesaplamaları” otomatikleştirip seçkin bilim insanlarının zihinsel kapasitesini daha üst düzey düşünmeye ayırmasını sağlayan bir araç olarak görmesine bakınca, otomasyon söyleminin ne kadar uzun ömürlü olduğu ilginç
    Bugün LLM’ler hakkında da aynen aynı şeyler söyleniyor

    • Bir araç olarak bilgisayarı tüketim cihazından ayıran temel noktanın, sonuçta “uzun ve kuru hesaplamaların” otomasyonu olduğunu düşünüyorum
  • Babbage’ın komut kümesi için bir sanal makine yapıp Ada’nın programını çalıştıran biri var mı merak ediyorum

  • Bu yazı yayımlandığı dönemde de tartışılmıştı
    What Did Ada Lovelace’s Program Actually Do? - https://news.ycombinator.com/item?id=17797003 - Ağustos 2018, 52 yorum

  • Biraz konu dışı ama o dönemde insanların ona ne dediğini merak ettim
    Adı Augusta Ada King’di ve Lovelace kontesiydi; o zamanlar unvanı kısaltıp soyadı gibi kullanmak yaygın mıydı, yoksa bu daha yakın zamanda mı böyle anılmaya başlandı merak ediyorum

    • Unvan sahibi Lovelace Kontu için genelde yalnızca yer adıyla anılma biçimi vardır
      William King-Noel Earl of Lovelace olduktan sonra “Lovelace” diye anılırdı; o ise sosyal çevrelerde muhtemelen “Lady Lovelace”, resmî bağlamlarda ise “Countess of Lovelace” diye anılıyordu
  • Güzel yazı. Ada’nın hangi anlamda yenilikçi olduğu ve neden takdiri hak ettiği konusunda şimdiye kadar okuduğum en net açıklamaydı