Ada Lovelace’in Analytical Engine üzerine notları tekrarlanabilir bir algoritmayı tanımladı. Erken fikirlerin günümüz program tasarımı ve hesaplamalı düşünmeyle nasıl örtüştüğünü görün.

Muhtemelen başlık hâlini duymuşsunuzdur: Ada Lovelace “ilk algoritmayı” yazdı—Charles Babbage’in Analytical Engine’i için makinenin takip edebileceği talimatlar dizisi. İnsanlar bunu hâlâ alıntılıyor çünkü bugün programlama dediğimiz şeye şaşırtıcı derecede açık bir erken örnek: bir hedefi makinenin izleyebileceği kesin adımlara ayırmak.
Bu makale Engine’in dişlilerini yeniden kurmaya veya her tarihsel iddiayı tartışmaya çalışmıyor. Onun yerine Lovelace’in çalışmasındaki programlama fikirlerine odaklanıyor: bir matematik sorununu nasıl yürütülebilir hale getirirsiniz, veriyi nasıl temsil edersiniz ve bir prosedürü başka birinin (ya da bir şeyin) çalıştırabilmesi için nasıl iletirsiniz.
Lovelace’in ünlü “Notes” bölümü matematik ile yazılım tasarımı arasında bir köprü gibi okunuyor. Makine büyük ölçüde varsayımsal olsa da düşünce, bir bilgisayara bir şeyi güvenilir biçimde yaptırmaya çalışan herkes için tanıdık.
İlerlerken dikkat edeceğimiz noktalar şunlar:
Sonunda amaç basit: Lovelace’in “ilk algoritmasını” bir müze parçası olarak değil, günümüz program tasarımını hâlâ yansıtan erken bir hesaplamalı düşünme şablonu olarak görmek.
Augusta Ada King, Countess of Lovelace—daha çok Ada Lovelace olarak bilinir—şiir ve matematiğin kesiştiği bir ortamda büyüdü. Annesi onu sıkı çalışmaya teşvik etti ve Ada kısa sürede önde gelen bilim insanları ve düşünürlerin küçük bir çevresine dahil oldu. O izole bir dahi değildi; karmaşık teknik fikirleri yapılandırılmış, iletilebilir kavramlara çevirebilen yetenekli bir işbirlikçiydi. Sorduğu sorular makinelerin sadece ne yapabileceğini değil, ne anlama gelebileceğini netleştirmeye yönelikti.
Charles Babbage, Ada ile tanıştığında mekanik hesaplama planlarıyla zaten ünlüydü. Babbage aklında donanımı tasarlayabiliyordu: dişliler, miller ve sayı tekerlekleri bir sistem olarak düzenleniyordu. Ada ise karmaşık teknik fikirleri açıklama konusunda yetenekliydi—onları yapılandırılmış, iletişilebilir kavramlara dönüştürebiliyordu.
İlişkileri, güçlerinin farklı olmasından dolayı işe yaradı. Babbage mühendislik vizyonunu ilerletti; Ada ise özellikle bir makinenin önceden tasarlanan bir işlem dizisini izleyebileceği fikrini öne çıkararak kavramsal vizyonu ilerletti.
Babbage’in Analytical Engine’i sadece daha iyi bir hesap makinesi değildi. Teoride genel amaçlı bir makineydi: değerleri saklayabilen, işlemler yapabilen ve planlanmış bir prosedürü adım adım çalıştırabilen bir yapı. Bugün programlanabilir bilgisayar dediğimiz şeyin erken bir taslağı gibi düşünün—onların yaşamları boyunca tamamlanmamış olsa da.
1840’lar, matematik, sanayi ve otomasyonun kesişmeye başladığı bir dönemdi. İnsanlar güvenilir yöntemlere—tablolar, formüller ve tekrarlanabilir prosedürlere—açtı çünkü hatalar pahalıydı ve bilim hızla ilerliyordu. Bu bağlamda Ada’nın “makineye nasıl talimat verilir” sorusuyla ilgilenmesi bir merak değil, insan aklını tekrar edilebilir, denetlenebilir süreçlere dönüştürme ihtiyacına zamanında bir yanıttı.
Ada Lovelace bir algoritmayı tanımlamadan önce “programlanmaya” değer bir makine olmalıydı. Charles Babbage’in Analytical Engine’i, tek bir formül için değil, birçok farklı işlem dizisini yerine getirebilecek şekilde kurulan genel amaçlı bir hesap makinesi olarak tasarlandı.
Temel fikir basitti: Bir problemi küçük aritmetik adımlara (topla, çıkar, çarp, böl) bölebiliyorsanız, bir makine bu adımları doğru sırayla ve gerektiği kadar güvenilir bir şekilde yapabilmelidir.
Bu, tek seferlik bir hesaplamadan yeniden kullanılabilir bir yönteme sıçramadır.
Babbage iki ana bileşen tarif etti:
Giriş ve çıkış için Engine, delikli kartlar kullanarak talimat ve veri alacak (dokuma tezgâhlarından ilhamla) ve sonuçları insan tarafından kullanılabilir bir biçimde—yazdırılmış veya başka şekilde kaydedilmiş—üretecekti.
Bu fikirleri bugüne eşlediğinizde:\n\n- Mill ≈ CPU: işlemleri yürütür.\n- Store ≈ RAM: üzerinde çalıştığınız verileri tutar.\n- Kartlar ≈ programlar ve veri dosyaları: makineye ne yapacağını ve neyle yapacağını söyler.
Bu yüzden Analytical Engine önemlidir: hâlâ güvendiğimiz ayrımı çizer—adımları yürütmek için donanım ve hangi adımların yürütüleceğini tanımlayan programlar.
Ada Lovelace ve “ilk algoritma” konuşulduğunda genellikle insanlar onun İngilizce çevirisine eklediği “Notes” bölümüne işaret ederler; bu bölüm Luigi Menabrea’nın Charles Babbage’in Analytical Engine’i hakkındaki makalesinin çevirisine eklenmişti.
Menabrea makinenin kavramını tanımladı. Lovelace daha ileri gitti: Engine’i sadece hayranlık duyulacak bir şey değil, talimat verilecek bir şey olarak ele aldı. Bu kayma, Notes’un programlama tarihinde bu kadar önemli olmasının nedenidir. Onlar erken hesaplamalı düşünme gibi okunur: bir hedefi kesin adımlara bölmek, temsilleri seçmek ve bir mekanizmanın bunları nasıl takip edeceğini önceden düşünmek.
Lovelace’in Notes’u bugün program tasarımı diye adlandıracağımız şeyi açıklar. Bellek, mill gibi Engine parçalarını, işlemlerin nasıl sıraya konulup kontrol edilebileceği açısından anlatır. Temel fikir basit ama derindir: eğer Analytical Engine tanımlı semboller üzerinde tanımlı sırayla işlem yapabiliyorsa, “nasıl” makinenin yürütülebileceği bir formda yazılmalıdır.
İşte burada çalışması modern programlamaya benzemeye başlar. Sadece teori değil; yöntemdir.
En önemlisi, Notes bir örnek çalışmayı satır satır makinenin ne yapması gerektiğini gösteren bir adım tablosu olarak sunar: hangi değerlerin hangi konumlarda olduğu, bir sonraki işlemin ne olduğu ve sonuçların nereye konduğu.
Bu tablo biçimi bugün kullandığımız sahtekodun, akış diyagramlarının ve işlem çizelgelerinin atası gibidir: tahmin etmeden izlenebilen, açık ve denetlenebilir bir plan.
Günlük dilde bir algoritma, tekrarlanabilir bir yöntemdir: başlangıç noktasından sonuca güvenilir bir şekilde götüren açık adımlar dizisi. Bir tarife benzer; adımları izlerseniz her seferinde aynı sonucu alırsınız.
Ada Lovelace’in ünlü örnek algoritması Bernoulli sayıları hesaplamayı amaçlıyordu—matematikte birçok yerde görülen bir değer dizisi (örneğin 1 + 2 + … + n gibi toplam formüllerinde ve kalkülüsün bazı bölgelerinde). Teoriyi bilmeniz gerekmez; bunların erken hesaplama makinesi için neden iyi bir “test vakası” olduğunu anlamanız yeterli.
Doğru zorlukta birkaç nedenden dolayı uygundurlar:
Yani makinenin yapılandırılmış bir yöntemi izleyebildiğini kanıtlamak için yeterince karmaşık ama hâlâ adım adım yazılabilir bir örnektir.
Algoritmanın özünde şu yapı vardır:
Böyle görüldüğünde Lovelace yalnızca bir sayının nasıl hesaplandığını göstermemiştir—çok adımlı bir hesabı makinenin tahmin etmeden yürütebilmesi için nasıl organize edeceğini göstermiştir.
Lovelace’in Bernoulli algoritması hakkında konuşulduğunda insanlar genellikle sonucu (“erken bir program”) vurgular; oysa gerçek başarı, adımları güvenilir kılan tasarım işidir. Asıl başarı sadece işlemleri listelemek değil—makinenin doğaçlama yapmadan izlemesini sağlayacak şekilde onları şekillendirmektir.
“Bernoulli sayıları hesapla”yı tek bir görev olarak ele almak yerine, Notes işi tekrar edilebilir ve doğrulanabilir parçalara böler: ara değerleri hesapla, bunları belli bir formülde birleştir, sonuçları kaydet ve sonra bir sonraki vakaya geç.
Bu parçalama önemlidir çünkü her alt görev ayrı ayrı doğrulanabilir. Bir çıktı yanlış görünüyorsa, tüm algoritmayı debug etmek yerine bir parçaya bakarsınız.
Mekanik bir bilgisayar “akılda tutmaz.” İleride ihtiyaç duyulacak her değer bir yere kaydedilmelidir ve Notes bu konuda dikkatlidir. Bazı sayılar geçici çalışma değeridir; bazıları ise daha sonraki adımlar için kalıcı sonuçlardır.
Bu, program durumunu düşünmenin erken bir biçimidir:\n\n- Hangi değerler sonraki aşamada kalmalı?\n- Hangi değerler güvenle üzerine yazılabilir?\n- Hangi değerler dokunulmadan kalmalı çünkü sonraki adımlar onlara bağlı?
İşlemlerin sırası bir güvenlik özelliğidir. Bazı hesaplamalar diğerlerinden önce yapılmalıdır, bu sadece düzen için değil, hazırlıksız bir değerin kullanılmasını veya hâlâ gerekli bir değerin kazara üzerine yazılmasını önlemek içindir.
Modern terimlerle Lovelace, programın izlenecek net bir yol olması için kontrol akışını tasarlıyordu: A’yı yap, sonra B’yi yap, sonra C’yi yap—çünkü B’yi önce yapmak yanlış sonuç üretecektir.
Lovelace’in adım tablosunda gizlenmiş en “modern” fikirlerden biri tekrardır: aynı talimat setini defalarca yapmak, çünkü tekrar etmek sonuca ulaşmanın en hızlı yoludur.
Programda tekrar demek: küçük bir adım tarifini uygula, bitip bitmediğini kontrol et, eğer bitmemişse aynı tarifi tekrar uygula. Önemli olan her seferinde bir şeyin değişmesidir—çoğu zaman bir sayaç, bir tabloda bir pozisyon veya oluşturduğunuz değer—böylece program bitiş çizgisine yaklaşır.
Lovelace’in gösteriminde bu, önceki adımlara yapılandırılmış bir dönüş olarak görülür. Aynı talimatları birçok kez yeniden yazmak yerine bir kalıbı tarif eder ve ne zaman geri döneceğini belirtir. Bugün buna iteration diyoruz.
Kod yazdıysanız bu deseni for döngüsü (“bu N kez tekrarlansın”) veya while döngüsü (“bir koşul doğru olana kadar tekrarla”) olarak görmüşsünüzdür. Onun tablosu da tanıdık döngü bileşenlerini ima eder:\n\n- Bir sayaç (kaçıncı geçişteyiz?)\n- Değişen bir değer (şu ana kadar oluşan kısmi sonuç)\n- Bir bitiş koşulu (sayaç sona ulaştığında dur)
1–5 arasını toplamak istediğinizi düşünün:
total = 0 ile başlai = 1 ile başlai’yi total’a eklei’yi 1 artıri hâlâ 5 veya daha azsa ekle ve artır adımlarını tekrarlaBu, sayaç güncelleyip bir sonucu biriktiren küçük bir döngüdür. Lovelace’in katkısı sadece ne hesapladığını göstermek değildi—tekrar yapının bir makine (ve gelecekteki insanlar) tarafından güvenle yürütülebilecek şekilde yazılabileceğini göstermesiydi.
Bir prosedür kafanızda tamamen mantıklı olabilir, ama makineye ya da başka bir kişiye izlettirmek imkânsız olabilir—değişen niceliklere başvurmanın bir yoluna ihtiyaç vardır. İşte değişkenler ve gösterim burada önem kazanır.
Bir değişkeni masadaki etiketli bir kutu gibi düşünün. Etiket aynı kalır, ama içerik çalışırken değişebilir.
Bir dizi hesaplıyorsanız şunlara sahip olabilirsiniz:
Bu kutular olmasa her şeyi uzun cümlelerle tanımlamak zorunda kalırsınız (“iki adım önce hesapladığın sayıyı al…”), ki bu hızla karmaşıklaşır.
Lovelace’in Notes’unda semboller ve etiketler gösteriş için değil—süreci yürütülebilir kılmak için vardır. Net gösterim şu pratik soruları yanıtlar:\n\n- Hangi değer şu anda güncelleniyor?\n- Hangi değerler sonraki adım için saklanmalı?\n- Hangi değerler geçici ve üzerine yazılabilir?
Uzun prosedürler söz konusu olduğunda bu küçük açıklamalar en yaygın hatayı—benzer görünen niceliklerin karışmasını—önler.
İyi değişken isimlendirme hâlâ hataları azaltmanın en ucuz yollarından biridir. x1, x2, x3 ile current_sum, term_index, next_term’i karşılaştırın: ikinci grup kutuların ne için olduğunu söyler.
Tipler ekstra bir güvenlik katmanı ekler. Bir şeyin tamsayı mı, ondalık mı, liste mi yoksa kayıt mı olduğuna karar vermek doğru tür konteynerini seçmek gibidir—bazı hatalar imkânsız hale gelir veya en azından erken yakalanması kolaylaşır.
Değişkenler ve gösterim “zekice bir fikir”i adımlara dönüştürerek herkesin (makine dahil) doğru şekilde tekrarlayabileceği hale getirir.
Soyutlama, önemli olana odaklanıp gereksiz ayrıntıları bilinçli olarak saklamaktır. Bir listeyi “sırala” demek ile her takas ve karşılaştırmayı tek tek tarif etmek arasındaki farktır. Lovelace’in Notes’u bu eğilimi erken gösterir: yöntemi iletmek, makinenin mekanik detaylarına takılmadan yapılmıştır.
Notes’un çarpıcı yanı, temel fikri makinenin fiziksel eylemlerinden bağımsız tutmasıdır. Analytical Engine’in kendi “naslı” (dişliler, store, mill) vardır, ama Notes “ne” olduğunu—sonuca ulaşmak için gereken işlem sırasını—vurgular.
Bu ayrım günümüzde yazılım tasarımının tohumudur:\n\n- Algoritma niyeti tanımlar (Bernoulli sayıları hesapla).\n- Makine (veya uygulama) yürütme ayrıntılarını yönetir (değerlerin nerede durduğu, işlemlerin nasıl yapıldığı).
Yöntemi makineden bağımsız olarak tanımlayabildiğinizde, hesaplamayı taşınabilir olarak ele alırsınız—farklı donanımlarda veya farklı kişiler tarafından yeniden uygulanabilir.
Notes’taki adım tabloları erken “prosedür”lere benzer: tekrar takip edilebilen tanımlı adımlar. Modern kod bunu fonksiyonlar, modüller ve yeniden kullanılabilir bileşenlerle resmiyet kazandırır.
İyi bir fonksiyon Lovelace’in sunumunun yaptığı şeyi yapar:\n\n- bir işlem için bir isim verir, böylece açıklamayı her yerde tekrarlamak zorunda kalmazsınız,\n- girdileri alır ve çıktıları üretir,\n- iç adımları yalnızca gerçekten gerekirse görünür kılar.
Bu yüzden soyutlama belirsiz olmakla ilgili değildir—kullanışlı olmaktır. Yöntem temiz ifade edildiğinde yeniden kullanım doğal olarak gelir: aynı yöntemi farklı girdilerle çağırabilir, başka yöntemlerle birleştirip daha büyük sistemler kurabilirsiniz.
Ada Lovelace Analytical Engine’in ne yapabileceğini sadece anlatmadı—bir prosedürü başka bir kişi (veya makine) için tartışmasız takip edilebilir kılmanın yollarını gösterdi. Notes’un sessiz gücü budur: açıklamayı işin bir parçası olarak ele almıştır.
Sunumunun modern hissetmesinin bir nedeni yapılandırılmış adım tablolarının kullanılmasıdır. Bir tablo gizli kalabilecek kararları ortaya çıkarır:\n\n- hangi adımın ilk, ikinci, üçüncü olduğu\n- her adımdaki ara değerlerin ne olduğu\n- bir değer güncellenirken mi yoksa sadece referans alındığında mı olduğu\n- tekrarın nerede başlayıp bittiği
Bu, bugünkü iyi program dokümantasyonunun amaçladığı belirsizliği azaltır. Bir paragrafı okuyup anladığınızı düşünebilirsiniz—ta ki onu uygulamaya çalışana kadar. Adım tablosu “yürütme yolunu” görünür kılar.
Lovelace’in Notes’u üç öğeyi bir arada tutmaya çalışır:
Bu bugün komentarlar, docstring’ler ve README’lerle uyumludur. README amaç ve bağlamı açıklar. Satır içi yorumlar karmaşık adımları netleştirir. Docstring’ler girdileri/çıktıları ve sınır durumları tanımlar. Bunlardan herhangi biri eksikse okuyucu tahmin yürütür—ve tahmin hatanın kaynağıdır.
Bir süreci (kod veya değil) belgelerken, sanki başkası siz olmadan yeniden üretecekmiş gibi yazın:\n\n- Girdileri ve çıktıları açıkça ifade edin (“X verildiğinde Y üretin”).\n- Varsayımları listeleyin (birimler, sıra, yuvarlama kuralları).\n- Adımları numaralandırılmış bir sıra veya küçük bir durum tablosu olarak yazın.\n\n- Ara değerleri adlandırın ve isimleri tutarlı kullanın.\n\n- Küçük bir çalışılmış örnek ekleyin ki birisi el ile kontrol edebilsin.
Bu ekstra iş değildir—bir yöntemin yeniden kullanılabilir hale gelmesinin yoludur.
Ada Lovelace genellikle cesur bir etiketle sunulur: “ilk programcı.” Bu kullanışlı bir kısaltma ama daha ilginç gerçeği düzleştirebilir. Tartışma sadece yer sahipliğiyle ilgili değil—"program", "bilgisayar" ve "yazarlık" tanımlarının ne olduğuna ilişkindir.
Eğer “programcı” genel amaçlı bir makine için talimat yazmış kişi anlamına geliyorsa, Lovelace güçlü bir iddiaya sahiptir. Notes’unda Bernoulli sayıları üretmek için adım adım bir yöntem tanımlamıştır—temelde Engine’in takip edebileceği karmaşık bir hesaplama planı.
Ancak tarihçiler etiketin kullanımına itiraz ederler çünkü:\n\n- Analytical Engine tamamlanmadı, dolayısıyla program o dönemde çalıştırılıp doğrulanamadı.\n- Yöntemin bazı bölümleri Charles Babbage ile işbirliğini yansıtıyor olabilir; yazarlık sınırları karmaşıktır.\n- Jacquard tezgâhı gibi önceki otomasyon örnekleri vardı, ama bunlar aynı genel amaçlı bağlamda değil.
Bir hesaplama fikri icat etmek ile çalışan bir bilgisayar inşa etmek farklıdır. Babbage’ın asıl katkısı mimarideydi: bellek (“store”), işlemci (“mill”) ve delikli kartlarla kontrol fikrinde. Lovelace’in katkısıysa yorumlayıcı ve açıklayıcıydı: böyle bir makinenin neyi temsil edebileceğini ve bir prosedürün makine tarafından izlenebilir şekilde nasıl yazılacağını netleştirdi.
Bir program, donanım hiç ortaya çıkmamış olsa da program olmaktan çıkmaz. Modern terimlerle, hâlâ teorik bir platform için yazılım yazmak gibidir—veya çip henüz olmasa da bir algoritmayı tanımlamak gibi.
Bu dönemi konuşmanın saygılı bir yolu roller arasında işbirliği olarak ele almaktır:\n\n- Babbage: makine tasarımı, matematiksel iddia ve uzun vadeli geliştirme.\n- Lovelace: çeviri, genişletme, açıklama ve soyut prosedürleri genel amaçlı makineye bağlama yeteneği.\n- Menabrea (ve diğerleri): Lovelace’in çevirdiği ve detaylandırdığı önceki tanımlamalar.
Kesin söyleyebileceğimiz: Lovelace’in Notes’u, programlamanın ne olduğunu—sadece hesaplama değil, makinenin izleyebileceği dikkatli bir süreç ifadesi—tanımlamaya yardımcı oldu.
Lovelace’in Notes’u önemlidir çünkü bir fikri makine-yürütülebilir bir plana dönüştürürken nasıl düşünülmesi gerektiğini gösterir. Delikli kartlara veya mekanik dişlilere asla dokunmasanız bile temel dersler bugünkü program tasarımına kolayca uygulanabilir: işi açıkça yapılandırın, şeylere isim verin, tekrarı kasıtlı kullanın ve yeniden kullanılabilir parçalar oluşturun.
Yapı zekâdan iyidir. Program, amaçları net olan parçalara bölündüğünde inşa etmek ve sürdürmek daha kolaydır. Lovelace’in yaklaşımı çözümün şeklini detaylara takılmadan önce tasarlamanızı teşvik eder.
Açıklık bir özelliktir. Tabloları ve açıklamaları süs değil—programın bir parçası. Gelecekteki siz (veya ekip arkadaşınız) mantığı hızlıca izleyebildiğinde program daha güvenilir olur.
İterasyon bir araçtır. Tekrar (döngüler) bir yöntemi ölçeklendirmenin yoludur. Anahtar, neyin tekrarlandığını, her sefer neyin değiştiğini ve ne zaman durduğunu tanımlamaktır.
Soyutlama yeniden kullanımı sağlar. Bir adım dizisi bir kere işe yarıyorsa, farklı girdilerle tekrar kullanılabilmelidir. İşte fonksiyonlar, modüller ve kütüphaneler buradan doğar.
Eğer “tanımlayarak inşa et” iş akışını kullandıysanız—gereksinimleri yazıp plan üzerinde yineleyip sonra çalışan yazılıma geçtiyseniz—zaten Lovelace’in Notes ruhunu yeniden canlandırıyorsunuzdur: prosedürü açıkça yazın, durumu net tutun ve varsayımları belgelendirin. Araçlar yeni; disiplin aynı kalır.
Bu yüzden Koder.ai gibi sohbet tabanlı uygulama üretim platformları bu hikâyeye doğal olarak uyar. Koder.ai ile web, backend ve mobil uygulamalar sohbet aracılığıyla oluşturulabilir; ama aynı temel ilkeler geçerlidir: girdiler/çıktıları belirtmek, isimleri tutarlı kullanmak ve adım adım yapı talep etmek (Planning Mode notları kilitlemenize yardımcı olur). Araç yeni, disiplin değil.
Kodu yazmaya başlamadan veya dağınık hissettiğiniz bir şeyi debug etmeden önce hızlıca şu adımları geçin:
Eğer “önce notlar” tarzı program tasarımını güçlendirmek istiyorsanız, şunlar yardımcı olacaktır:
/blog/how-to-write-better-requirements\n- /blog/pseudocode-examplesBir araya geldiklerinde, bu alışkanlıklar programlamayı “çalıştır” olmaktan “anlaşılır kıl”maya dönüştürür—Lovelace’in Notes’unun işaret ettiği aynı kayma.
Ada Lovelace’in “ilk algoritması”, Notes adlı eklerinde gösterdiği, Charles Babbage’in Analytical Engine’i tarafından yürütülmek üzere tasarlanmış adım adım bir prosedürdür. Makine tamamlanmamış olsa da bu çalışma, hesaplamayı saklanan değerler üzerinde planlı bir işlem sırası olarak ele almasıyla modern programlamaya yakın bir yaklaşım sergiler.
Bu yazı, Lovelace’in çalışmasındaki programlama fikirlerini—bir yöntemi nasıl yürütülebilir, denetlenebilir ve anlaşılır hale getireceğinizi—anlatmaya odaklanır. Amacı Engine’in donanımını yeniden inşa etmek veya tüm tarihsel tartışmaları çözmek değildir.
Analytical Engine, şöyle tasarlanmış bir genel amaçlı makine önerisiydi:
Bu mimari önemlidir çünkü yürütme yapan donanım ile hangi adımların yapılacağını belirten programlar arasındaki ayrımı ortaya koyar—bugünkü bilgisayarların dayandığı ayrım.
Bernoulli sayıları, her yeni değerin önceki değerlere bağlı olduğu bir dizi olduğundan iyi bir örnektir. Hesaplama birden çok işlem (toplama, çıkarma, çarpma, bölme) ve ara değerlerin saklanmasını gerektirir; bu yüzden programlanabilir bir makinenin yapılandırılmış işleri takip edebildiğini göstermek için uygundur.
Bir adım tablosu kesinlik dayatır. Şunu belirtmenizi sağlar:
Bu özellikler modern sahtekod (pseudocode) ile benzerlik gösterir ve başkalarının prosedürü tahmin etmeden çalıştırmasını sağlar.
Tekrarlama (iteration) programlamanın erken hâlidir: küçük bir adım dizisini uygularsınız, bitip bitmediğini kontrol edersiniz ve değilse aynı diziyi yeniden çalıştırırsınız. Modern koda bu for veya while döngüleriyle karşılık gelir. Ortak öğeler:
Makine insan gibi bağlamı hatırlayamaz. Değişken benzeri açık etiketler sayesinde:
izleyebilirsiniz. Bu, uzun prosedürlerde en sık görülen hatayı—benzer görünen değerlerin karıştırılmasını—önler.
Soyutlama, yöntemi (algoritmayı) mekanik ayrıntılardan ayırmaktır. Bu, tekrar kullanılabilir bileşenlerin tohumu sayılır:
Modern fonksiyonlar ve modüller sistemleri ölçeklendirilebilir kılar; Lovelace’in adım tabloları bu fikri erken bir şekilde taşır.
Bu etiket tartışmalıdır çünkü:
Güvenli bir çıkarım: Lovelace’in Notes çalışması, programlamanın ne olduğunu—makinenin izleyebileceği net bir prosedür yazmayı—tanımlamaya yardımcı oldu.
Bir fikri makine yürütülebilir bir plana dönüştürürken şu adımları kontrol etmek yararlı olacaktır:
İlgili rehberler için görün: /blog/how-to-write-better-requirements ve /blog/pseudocode-examples.