
Episode Microsoft Founding adalah salah satu yang paling terkenal dalam sejarah komputer. Pada tahun 1975, Paul Allen terbang ke Albuquerque untuk menunjukkan penerjemah BASIC yang ia dan Bill Gates tulis untuk komputer mikro Altair. Karena mereka tidak memiliki komputer Altair yang berfungsi, mereka menguji juru bahasa mereka menggunakan emulator yang ditulis oleh mereka yang dijalankan pada sistem komputer Harvard. Emulator hanya didasarkan pada spesifikasi yang dipublikasikan dari prosesor Intel 8080. Ketika Allen akhirnya meluncurkan interpreter pada komputer Altair asli - di depan orang yang mereka harapkan akan membeli perangkat lunak mereka - ia bahkan tidak tahu apakah program itu akan bekerja. Dia mendapatkannya. Bulan berikutnya, Allen dan Gates secara resmi mendirikan perusahaan baru.
Lebih dari seratus tahun sebelum penerjemah BASIC Allen dan Gates, Ada Lovelace menulis dan menerbitkan program komputer. Dia juga menulis sebuah program untuk komputer, yang dia tahu hanya dari deskripsi. Tetapi programnya, tidak seperti penerjemah BASIC, tidak pernah dieksekusi karena komputer yang ditulis tidak pernah dibuat.
Lovelace sering disebut program komputer pertama di dunia. Tetapi tidak semua orang setuju bahwa itu harus disebut itu. Warisan Lovelace ternyata menjadi salah satu topik terpanas dalam sejarah komputer. Walter Isaacson menulis bahwa perdebatan tentang tingkat dan manfaat kontribusinya adalah "sedikit kepentingan akademis." Tidak dapat dihindari, perselisihan dipicu oleh kenyataan bahwa Lovelace adalah seorang wanita. Sejarawan telah mengutip semua jenis bukti untuk membuktikan bahwa penghargaan yang diberikan kepadanya konsisten dengan kasus ini, atau, sebaliknya, tidak layak. Tetapi mereka menghabiskan lebih sedikit waktu untuk menjelaskan rincian teknis dari karyanya yang diterbitkan, yang memalukan, karena itu adalah detail teknis yang mewakili bagian paling menarik dari cerita ini. Siapa yang tidak tertarik untuk mengetahui bagaimana program yang ditulis pada tahun 1843 seharusnya bekerja?
Jujur, program Lovelace sulit untuk dijelaskan kepada penduduk kota. Tetapi kerumitan programnya yang membuatnya begitu luar biasa. Dia layak disebut programmer pertama, atau tidak, programnya direkam dengan akurasi yang melampaui semua yang sebelumnya. Dia dengan hati-hati memikirkan operasi apa yang dapat digabungkan ke dalam kelompok yang dapat diulang - sehingga menciptakan siklus. Dia menyadari betapa pentingnya untuk melacak keadaan variabel yang berubah, dan menghasilkan catatan yang mencerminkan perubahan ini. Saya, sebagai seorang programmer, kagum pada seberapa banyak karya Lovelace menyerupai pengalaman menulis perangkat lunak saat ini.
Jadi mari kita lihat lebih dekat program Lovelace. Dia mendesainnya untuk menghitung
angka Bernoulli . Untuk memahami apa itu, Anda perlu kembali beberapa milenium ke masa lalu, ke awal salah satu masalah tertua dalam matematika.
Jumlah Derajat
Bangsa Pythagoras tinggal di pantai Laut Mediterania dan menyembah banyak. Salah satu hobi mereka adalah membuat segitiga kerikil.

Satu batu, diikuti oleh deretan dua batu, bersama-sama membentuk segitiga tiga batu. Tambahkan baris lain dari tiga batu untuk membuat segitiga dari enam batu. Prosedur ini dapat dilanjutkan, setiap kali menambahkan satu baris dengan jumlah batu bertambah satu. Segitiga enam baris berisi 21 batu. Dan berapa banyak batu yang ada di segitiga 423 baris?
Pythagoras sedang mencari cara untuk menghitung jumlah baris berikutnya tanpa menjumlahkan:
1 + 2 + 3 + β― + n
Pada akhirnya, mereka menyadari bahwa jika Anda menempatkan dua segitiga dengan ukuran yang sama di samping satu sama lain sehingga mereka membentuk persegi panjang, Anda dapat menemukan area persegi panjang dan membaginya menjadi dua untuk mendapatkan jumlah batu di masing-masing segitiga:
1 + 2 + 3 + β― + n = n (n + 1) / 2
Archimedes mempelajari masalah serupa. Dia tertarik dengan urutan berikut:
1
2 +2
2 +3
2 + β― + n
2Dapat dibayangkan sebagai kolom kotak yang semakin besar (terdiri dari kubus kecil), berdiri di atas satu sama lain dalam bentuk piramida. Archimedes ingin tahu apakah ada cara mudah untuk mengatakan berapa banyak kubus yang diperlukan untuk membuat piramida dengan, katakanlah, 423 level. Dia menulis solusi untuk masalah ini, yang juga memungkinkan interpretasi geometris.
Tiga piramida dapat dibuat bersama sehingga mereka membentuk prisma persegi panjang, di salah satu ujungnya ada langkan kecil setinggi satu kubus. Langkan ini adalah segitiga yang mematuhi aturan yang sama dengan segitiga batu Pythagoras. Oleh karena itu, volume seluruh gambar diberikan oleh persamaan berikut:
3 (1
2 +2
2 +3
2 + β― + n
2 ) = (n + 1) n
2 + (1 + 2 + 3 + β― + n)
Mengganti persamaan Pythagoras untuk jumlah n bilangan bulat pertama, dan setelah melakukan beberapa operasi aljabar, kita memperoleh:
1
2 +2
2 +3
2 + β― + n
2 = n (n + 1) (2n + 1) / 6
Pada 499, matematikawan dan astronom India
Ariabhata menerbitkan karyanya, yang dikenal sebagai Ariabhatia, yang memberikan rumus untuk menghitung jumlah kubus:
1
3 +2
3 +3
3 + β― + n
3 = (1 + 2 + 3 + β― + n)
2Formula untuk jumlah bilangan bulat n positif pertama hingga tingkat keempat diterbitkan hanya 500 tahun kemudian.
Pada saat ini, Anda mungkin memiliki pertanyaan - apakah ada metode universal untuk menghitung jumlah bilangan bulat pertama yang dinaikkan menjadi kekuatan k? Matematikawan juga tertarik dengan ini. Johan Faulhaber, seorang matematikawan Jerman, sedikit maju dalam numerologi, mampu memperoleh rumus untuk jumlah bilangan bulat hingga tingkat 17, menerbitkannya pada 1631. Tetapi butuh waktu bertahun-tahun, dan dia tidak memberikan solusi umum.
Blaise Pascal akhirnya muncul dengan metode umum pada tahun 1665, yang, bagaimanapun, bergantung pada penghitungan jumlah bilangan bulat yang dinaikkan ke derajat sebelumnya. Misalnya, untuk menghitung jumlah bilangan bulat positif n pertama yang dinaikkan ke tingkat ke-6, Anda harus terlebih dahulu mempelajari cara menghitung jumlah bilangan bulat n pertama yang dinaikkan ke tingkat ke 5
Solusi umum yang lebih praktis diberikan dalam makalah yang diterbitkan secara anumerta oleh matematikawan Swiss
Jacob Bernoulli , yang meninggal pada 1705. Bernoulli memulai dengan membuat rumus untuk menghitung jumlah bilangan bulat positif pertama yang dinaikkan dalam derajat pertama, kedua, ketiga dan keempat. Dia menulisnya dalam bentuk polinomial:
1 + 2 + 3 + β― + n = 1 / 2n
2 + 1 / 2n
1
2 +2
2 +3
2 + β― + n
2 = 1 / 3n
3 + 1 / 2n
2 + 1 / 6n
1
3 +2
3 +3
3 + β― + n
3 = 1 / 4n
4 + 1 / 2n
3 + 1 / 4n
2Menggunakan
segitiga Pascal , Bernoulli menyadari bahwa polinomial ini mengikuti pola yang dapat diprediksi. Faktanya, Bernoulli membagi koefisien dari masing-masing istilah menjadi dua faktor, satu di antaranya ia dapat tentukan dengan menggunakan segitiga Pascal, dan yang lainnya berasal dari properti yang menarik dengan mana semua koefisien dalam polinomial berjumlah satu. Tidak sulit untuk memahami eksponen mana yang harus diletakkan untuk setiap anggota, karena mereka juga mengikuti pola yang dapat diprediksi. Faktor-faktor dari masing-masing koefisien, yang harus dihitung sesuai dengan aturan "jumlahnya sama dengan satu," membentuk urutan yang kemudian dikenal sebagai angka Bernoulli.
Penemuan Bernoulli tidak berarti bahwa jumlah bilangan bulat positif pertama yang dinaikkan menjadi kekuatan apa pun sekarang dapat dihitung secara sepele. Untuk menghitung jumlah bilangan bulat positif pertama yang dinaikkan menjadi k, maka perlu untuk mengetahui semua angka Bernoulli hingga kth. Dan setiap nomor Bernoulli dapat dihitung hanya dengan mengetahui semua yang sebelumnya. Tetapi menghitung urutan panjang angka Bernoulli jauh lebih mudah daripada menghitung setiap jumlah angka yang dinaikkan menjadi kekuatan, jadi penemuan Bernoulli adalah terobosan besar untuk matematika.
Babbage
Charles Babbage lahir pada 1791, hampir seratus tahun setelah kematian Bernoulli. Saya selalu punya ide tentang dia yang dia kembangkan, tetapi tidak membangun, komputer mekanik. Tetapi saya tidak pernah benar-benar mengerti bagaimana seharusnya komputer ini bekerja. Ternyata, ide-ide dasarnya cukup mudah dimengerti. Program Lovelace seharusnya bekerja pada salah satu mesin Babbage, jadi kita perlu mengambil penyimpangan kecil lain dan berbicara tentang cara kerja mesin ini.
Babbage datang dengan dua komputer mekanik yang terpisah. Yang pertama disebut
mesin perbedaan . Sebelum penemuan kalkulator saku, orang mengandalkan
logaritma untuk menghitung produk dalam jumlah besar. Tabel logaritmik besar pada dasarnya tidak begitu sulit untuk dikompilasi, tetapi jumlah perhitungan yang diperlukan untuk mengkompilasi mereka mengarah pada fakta bahwa pada saat Babbage mereka sering mengandung kesalahan. Terganggu oleh ini, Babbage memutuskan untuk membuat mesin yang mampu secara otomatis membuat tabel logaritma tanpa membuat kesalahan.
Perbedaan mesin itu bukan komputer, karena hanya bisa menambah dan mengurangi. Dia menggunakan metode yang ditemukan oleh ahli matematika Prancis
Gaspard de Prony , yang memecah proses membangun tabel menjadi langkah-langkah kecil. Langkah-langkah ini hanya membutuhkan penambahan dan pengurangan, yang berarti bahwa sepasukan kecil orang tanpa keterampilan matematika dapat digunakan untuk membangun tabel. Metode de Proni, yang dikenal sebagai metode
perbedaan terbagi , dapat digunakan untuk menyusun tabel untuk setiap polinomial. Dan polinomial sudah dapat digunakan untuk perkiraan perhitungan fungsi logaritmik dan trigonometri.
Untuk membayangkan bagaimana proses ini bekerja, pertimbangkan fungsi polinomial sederhana berikut:
y = x
2 +1
Metode perbedaan split menemukan perbedaan antara nilai y berturut-turut untuk nilai x yang berbeda. Lalu ada perbedaan antara perbedaan-perbedaan ini, dan kemudian, mungkin, perbedaan antara perbedaan terakhir, sampai perbedaan konstan muncul. Perbedaan ini kemudian dapat digunakan untuk mendapatkan nilai polinomial berikutnya melalui penambahan.
Karena polinomial yang ditunjukkan hanya memiliki derajat kedua, kita dapat menemukan perbedaan konstan setelah hanya dua kolom perbedaan:
x | y | Diff 1 | Diff 2 |
---|
1 | 2 | | |
2 | 5 | 3 | |
3 | 10 | 5 | 2 |
4 | 17 | 7 | 2 |
5 | ? | ? | 2 |
... | ... | ... | ... |
Sekarang, mengetahui bahwa perbedaan konstan adalah 2, kita dapat menemukan nilai y ketika x adalah 5, menggunakan satu tambahan. Menambahkan 2 dan 7, nilai terakhir di kolom Diff 1, kita dapatkan 9. Menambahkan 9 dan 17, nilai terakhir di kolom y, kita mendapatkan 26 - jawaban kita.
Mesin perbedaan Babbage untuk setiap kolom perbedaan tabel memiliki kolom fisiknya sendiri dengan persneling. Setiap gigi mewakili posisi desimal, dan seluruh kolom mewakili angka desimal. Mesin perbedaan memiliki delapan kolom dengan roda gigi, sehingga bisa mengkompilasi tabel polinomial hingga tingkat ketujuh. Kolom awalnya diatur ke nilai yang bertepatan dengan baris awal tabel perbedaan, dihitung terlebih dahulu. Operator kemudian harus memutar poros engkol, yang menyebabkan perbedaan konstan untuk bergerak di sekitar mesin ketika nilai yang disimpan di setiap kolom ditambahkan ke berikut ini.
Babbage berhasil membangun sebagian kecil mesin perbedaan dan menggunakannya untuk menunjukkan idenya di pesta-pesta. Tetapi bahkan setelah menghabiskan begitu banyak uang sehingga mereka cukup untuk membangun dua kapal perang besar, dia tidak bisa menyelesaikan mobilnya. Pada awal abad ke-18, Babbage tidak menemukan siapa pun yang dapat menghasilkan jumlah peralatan yang tepat untuknya dengan akurasi yang tepat. Versi kerja dari mesin perbedaan hanya dibangun pada 1990-an, setelah munculnya mesin presisi tinggi.
Akibatnya, Babbage kehilangan minat pada mesin perbedaan, menyadari bahwa Anda dapat membuat mesin yang jauh lebih kuat dan fleksibel. "
Mesin analitik "
-nya saat ini dikenal sebagai komputer mekanik Babbage. Mesin analitis didasarkan pada kolom roda gigi yang sama dengan perbedaannya, tetapi jika yang terakhir hanya memiliki delapan kolom, maka yang analitis harus memiliki beberapa ratus. Mesin analitik dapat diprogram dengan kartu punch, seperti
alat tenun jacquard , dan dapat membagi dan mengalikan, tidak hanya menambah dan mengurangi. Untuk melakukan salah satu dari operasi ini, bagian dari mesin yang disebut "pabrik" akan membangun kembali sendiri dalam konfigurasi yang diinginkan, membaca operan dari kolom lain yang digunakan untuk menyimpan data, dan kemudian menulis hasilnya ke kolom lain.
Babbage menyebutnya sebagai mesin analitik karena cukup kuat untuk melakukan sesuatu yang menyerupai matanalisis. Mesin perbedaan dapat menghasilkan tabel polinomial, tetapi mesin analitik dapat menghitung, misalnya, koefisien multiplikasi polinomial dari ekspresi lain. Itu adalah mesin yang luar biasa, tetapi pemerintah Inggris membuat keputusan yang bijaksana untuk menolak permintaan pembiayaannya. Jadi Babbage pergi ke luar negeri, ke Italia, untuk mencoba mencari dukungan di sana.
Catatan Penerjemah
Di Turin, Babbage bertemu seorang insinyur Italia dan Perdana Menteri masa depan Luigi Federico Menabrea. Dia membujuk Menabrea untuk menulis tinjauan tentang kemampuan mesin analitik. Pada tahun 1842, Menabrea menerbitkan sebuah karya tentang hal ini dalam bahasa Prancis. Tahun berikutnya, Lovelace menerbitkan terjemahan karya Menabrea ke dalam bahasa Inggris.
Lovelace, yang saat itu dikenal sebagai Ada Byron, bertemu Babbage di sebuah pesta pada tahun 1833, ketika dia berusia 17 dan dia berusia 41 tahun. Lovelace dikejutkan oleh mesin perbedaan Babbage. Tapi dia bisa mengetahui cara kerjanya, karena di masa kecil dia aktif mengajar matematika. Ibunya, Anabella Milbank, memutuskan bahwa dasar matematika yang kuat dari pendidikan putrinya akan mencegahnya dari alam liar dan romantis yang dimiliki oleh ayahnya,
Lord Byron , seorang penyair terkenal. Setelah bertemu pada 1833, Lovelace dan Babbage tetap berada di lingkaran sosial umum dan sering berkorespondensi.
Ada Byron menikah dengan William King pada tahun 1835. Raja kemudian menjadi Earl of Lovelace, dimana Ada menjadi Countess of Lovelace. Dan bahkan setelah melahirkan tiga anak, ia terus belajar matematika, mengambil sebagai guru Augustus de Morgan, yang menemukan
hukum Morgan . Lovelace segera mengenali potensi mesin analitis, dan siap untuk bekerja dengannya untuk memajukan ide ini. Temannya mengundangnya untuk menerjemahkan karya Menabrea untuk audiensi bahasa Inggris.
Makalah ini berisi deskripsi singkat tentang operasi mesin perbedaan, dan kemudian ditunjukkan sejauh mana mesin analitis akan melampaui itu. Mesin analitis seharusnya sangat kuat sehingga bisa "membentuk hasil dari mengalikan dua angka, yang masing-masing terdiri dari dua puluh karakter, hanya dalam tiga menit." Menabrea memberikan contoh lain tentang kemungkinan sebuah mesin, menunjukkan bagaimana ia akan menyelesaikan sistem persamaan linear sederhana dan menguraikan hasil dari mengalikan dua binomial. Dalam kedua kasus, Menabrea mempresentasikan apa yang disebut Lovelace sebagai "bagan pengembangan" yang menggambarkan urutan operasi yang diperlukan untuk menghitung jawaban yang benar. Ini adalah program, dalam arti yang sama bahwa program Lovelace adalah sebuah program, dan mereka diterbitkan setahun sebelum kerjanya. Tetapi, seperti yang akan kita lihat, program Menabrea hanyalah contoh dari kemungkinan itu. Semuanya sepele dalam arti bahwa mereka tidak memerlukan percabangan atau siklus.
Lovelace menambahkan beberapa catatan pada terjemahannya tentang karya Menabrea, dan totalnya ternyata lebih panjang dari karya aslinya. Di sanalah dia membuat kontribusi utamanya untuk komputasi. Dalam catatan A, yang dibuat Lovelace untuk deskripsi awal mesin analitis, dia menjelaskan secara rinci, dan kadang-kadang secara liris, bahwa mesin ini akan dapat melakukan operasi matematika sewenang-wenang. Dia meramalkan bahwa mesin seperti ini tidak akan terbatas pada bekerja dengan angka, dan akan dapat memproses objek apa pun "yang interaksi mendasar bersama dapat diekspresikan oleh ilmu abstrak operasi, dan yang dapat disesuaikan dengan catatan operasional dan mekanisme mesin." Dia menambahkan bahwa suatu hari mesin seperti itu akan dapat, misalnya, untuk menulis musik. Prediksi seperti itu jauh lebih luar biasa karena Menabrea sendiri menganggap mesin ini hanya sebagai alat untuk mengotomatisasi "perhitungan panjang dan membosankan" yang akan membebaskan kemampuan intelektual para ilmuwan brilian untuk penelitian yang lebih maju. Pandangan ke depan Lovelace yang ajaib, seperti ditunjukkan dalam catatan A, adalah salah satu alasan utama kita menghargainya hari ini.
Catatan terkenal lainnya adalah catatan G. Lovelace, dimulai dengan menyatakan bahwa, terlepas dari kemampuannya yang mengesankan, mesin analitis tidak dapat βdipikirkanβ. Catatan kaki inilah yang kemudian Alan Turing sebut sebagai "keberatan Ada Lovelace." Namun, Lovelace melanjutkan, mobil ini mampu melakukan hal-hal menakjubkan. Untuk menunjukkan kemampuan menangani masalah yang lebih kompleks, Lovelace menawarkan programnya untuk menghitung angka Bernoulli.
Teks lengkapnya, dalam bentuk "bagan pengembangan" yang diperluas, format yang dideskripsikan Lovelace pada Catatan D, dapat
dilihat di sini . Ini pada dasarnya adalah daftar operasi yang ditunjukkan oleh simbol matematika. Sepertinya Babbage atau Lovelace tidak mengembangkan kode-kode operasi untuk mesin analitik.
Meskipun Lovelace menggambarkan metode untuk menghitung urutan lengkap angka Bernoulli hingga batas tertentu, programnya hanya menunjukkan satu langkah dalam proses ini. Dia menghitung angka yang dia beri nama B7, yang dikenal oleh ahli matematika modern sebagai bilangan Bernoulli kedelapan. Oleh karena itu, programnya memecahkan persamaan berikut:
B7 = β1 (A 0 + B 1 A 1 + B 3 A 3 + B 5 A 5 )Di sini, setiap istilah mewakili suatu koefisien dalam rumus polinomial untuk jumlah bilangan bulat yang dinaikkan ke tingkat tertentu. Di sini kita berbicara tentang kekuatan kedelapan, karena angka Bernoulli kedelapan pertama kali muncul dalam rumus untuk jumlah bilangan bulat positif dinaikkan ke kekuatan kedelapan. Angka B dan A mewakili dua jenis faktor yang ditemukan oleh Bernoulli. Angka-angka B1 hingga B7 adalah berbagai nomor Bernoulli yang diberi nomor sesuai dengan Lovelace. Angka-angka A0 sampai A5 adalah pengganda dari koefisien yang dapat dihitung Bernoulli menggunakan segitiga Pascal. Nilai-nilai A0, A1 dan A3 ditunjukkan di bawah ini. Di sini n menunjukkan indeks dari angka Bernoulli dalam urutan angka Bernoulli yang aneh dimulai dengan yang pertama. Dalam program Lovelace, n = 4.A 0 = β1 / 2β
(2n - 1) / (2n + 1)A 1= 2n / 2A 3 = 2n (2n - 1) (2n - 2) / (2β
3β
4)A 5 = 2n (2n - 1) (2n - 2) (2n - 3) (2n - 3) (2n - 4) / (2β
3β
4β
5β
6)Saya menerjemahkan program Lovelace ke dalam C , jadi mungkin akan lebih mudah dibaca. Pertama, programnya menghitung A 0 dan hasil perkalian B 1 A 1 . Kemudian mulailah siklus, diulangi dua kali, untuk menghitung B 3 A 3 dan B 5 A 5 , karena mereka dibaca dengan cara yang sama. Setelah menghitung setiap perkalian, hasilnya ditambahkan ke yang sebelumnya, sehingga pada akhir program jumlah penuh diperoleh.Jelas, menerjemahkan ke C tidak bisa menjadi reproduksi yang tepat dari program Lovelace. Ini mendeklarasikan variabel pada stack, dan variabel Lovelace lebih mirip register. Tetapi dia membuat lebih jelas bagian paling profetik dari program Lovelace. Program C memiliki dua loop sementara, satu di dalam yang lain. Program Lovelace tidak memiliki loop sementara, tetapi mengelompokkan operasi, dan dijelaskan dalam catatan mengapa mereka harus diulang. Variabel v10 dari program asli dan diterjemahkan ke dalam C berfungsi sebagai penghitung, menurun dengan setiap lintasan siklus - desain yang serupa akrab bagi setiap programmer. Secara umum, selain banyaknya variabel dengan nama yang tidak jelas, program C tidak terlihat asing.Perlu juga dicatat bahwa menerjemahkan program Lovelace ke C tidak terlalu sulit, berkat satu detail dalam diagramnya. Tidak seperti tabel Menabrea, mejanya memiliki kolom "tanda perubahan dalam nilai variabel", yang membuatnya lebih mudah untuk melacak perubahan dalam status. Dia menambahkan superscript ke setiap variabel untuk menunjukkan nilai berturut-turut yang tersimpan di dalamnya. Indeks 2, misalnya, berarti bahwa nilai yang digunakan adalah nilai kedua yang diberikan ke variabel dari awal program.Programmer pertama?
Setelah saya menerjemahkan program Lovelace ke dalam C, saya bisa menjalankannya di komputer. Untuk kekecewaan saya, hasilnya salah. Setelah mencari kesalahan, saya akhirnya menyadari bahwa masalahnya bukan pada kode saya - bug itu terkandung dalam program aslinya!Dalam "bagan pengembangan," tulis Lovelace di operasi keempat v5 / v4. Tetapi v4 / v5 akan benar. Kesalahan ini dapat muncul saat mencetak, tetapi tidak di Lovelace. Dengan satu atau lain cara, ini adalah bug komputer tertua. Saya terkejut bahwa saya menghabiskan sekitar sepuluh menit mencari bug pertama dalam sejarah.Jim Randall, blogger lain yang menerjemahkan program Lovelace ke PythonTercatat juga bug divisi ini dan dua masalah lainnya. Apa kesalahan kecil dalam program Ada Lovelace yang dipublikasikan yang memberitahu kami? Mungkin saja dia mencoba menulis bukan hanya demonstrasi, tetapi juga program nyata. Lagi pula, Anda tidak dapat menulis sesuatu selain program mainan, menghindari kesalahan?Satu artikel Wikipedia mengatakan Lovelace adalah yang pertama menerbitkan "program yang rumit." Mungkin inilah tepatnya bagaimana layaknya merasakan pencapaiannya. Menabrea, dalam karyanya, menerbitkan "grafik perkembangan" setahun sebelum penerbitan terjemahan Lovelace. Babbage juga menulis lebih dari dua puluh program yang tidak pernah dipublikasikan. Oleh karena itu, tidak sepenuhnya benar untuk menulis bahwa Lovelace menulis atau menerbitkan program pertama, meskipun orang selalu dapat berdebat tentang apa yang merupakan program. Dan tetap saja, program Lovelace jauh di depan semua yang diterbitkan sebelumnya. Dalam program terpanjang, Menabrea memiliki 11 operasi dan tidak ada loop dan cabang. Program Lovelace memiliki 25 operasi dan loop bersarang (dan, karenanya, bercabang). Menabrea di akhir karyanya menulis sebagai berikut:Setelah konstruksi mesin, kesulitan akan muncul untuk membuat kartu; tetapi karena ini hanyalah terjemahan dari formula aljabar, melalui beberapa notasi sederhana akan sangat mudah untuk mendelegasikan eksekusi mereka kepada beberapa pekerja.Baik Babbage maupun Menabrea tidak tertarik secara khusus dalam menerapkan mesin analitik untuk masalah yang melampaui masalah matematika yang menginspirasi Babbage untuk membuat komputer. Lovelace menyadari bahwa mesin analitik itu mampu lebih dari yang dibayangkan Babbage dan Menabrea. Lovelace juga menyadari bahwa "membuat kartu" bukanlah pekerjaan mekanis, dan ini bisa dilakukan dengan buruk atau baik. Sulit untuk mengevaluasi ini tanpa memahami programnya dari Catatan G, dan tidak melihat seberapa besar perhatiannya dalam mengembangkannya. Tetapi, setelah melakukan ini, Anda dapat setuju bahwa Lovelace, bahkan tanpa menjadi programmer pertama, adalah programmer pertama yang pantas mendapatkan nama ini.