Yazılımın tarihi
Depolanan programlı dijital bilgisayarlardan önce > Bilgisayar biliminin kökenleri

Bir kavram olarak hesaplamanın kökeni abaküs, Antikythera mekanizması, usturlaplar, Mekanik Astronomik saatler ve Mekanik Hesap Makineleri gibi cihazlarla çok eskilere dayanmaktadır. Antikythera mekanizması oldukça karmaşık bir antik mekanik Astronomik cihazın örneğidir.
Ancak bu cihazlar tamamen donanımdan oluşuyordu ve herhangi bir yazılıma sahip değillerdi; bilgi işlem güçleri doğrudan kendi özel biçimlerine ve mühendisliklerine bağlıydı.
Yazılım, genel amaçlı bir işlemci kavramının (şu anda Turing makinesi olarak tanımlanan) yanı sıra, programları içeren yeniden kullanılabilir rutinler ve matematiksel işlevlerin ayrı ayrı saklanabileceği, başlatılabileceği ve durdurulabileceği ve yalnızca insanlık tarihinde yakın zamanda ortaya çıktığı bilgisayar belleğini gerektirir.
Bilinen ilk bilgisayar algoritması 19. yüzyılda Ada Lovelace tarafından Analitik Motor için, Luigi Menabrea'nın Bernoulli sayıları üzerine çalışmasını makine eğitimi için tercüme etmek üzere yazılmıştır.   Ancak bu yalnızca teorik olarak kaldı; bu iki matematikçinin yaşamı boyunca mühendisliğin Analitik Motoru oluşturmak için daha düşük düzeyde olması yetersiz kaldı[kaynak belirtilmeli].
İlk modern yazılım teorisi Alan Turing tarafından 1935 tarihli Entscheidungsproblem (karar problemi) uygulamasıyla Hesaplanabilir sayılar adlı makalesinde ortaya atıldı.
Bu, sonuçta hem yazılımı hem de yazılımın yaratılmasını inceleyen bilgisayar bilimi ve yazılım mühendisliği gibi ikiz akademik alanların yaratılmasına yol açtı. Bilgisayar bilimi daha teoriktir (Turing'in makalesi bilgisayar biliminin bir örneğidir), oysa yazılım mühendisliği daha pratik konulara odaklanır.
Ancak 1946'dan önce, şimdi anladığımız şekliyle yazılım – saklanan program dijital bilgisayarların hafızasında saklanan programlar – henüz mevcut değildi. İlk elektronik bilgi işlem cihazları, onları "yeniden programlamak" için yeniden kablolandı. İlk elektronik bilgisayarlardan biri olan ENIAC, büyük ölçüde daha önce insan bilgisayarı olarak çalışan kadınlar tarafından programlandı.   Mühendisler programcılara ENIAC kablolarının planlarını veriyor ve onlardan makineyi nasıl programlayacaklarını bulmalarını bekliyorlardı.  Programcı olarak çalışan kadınlar, gösteriler için bağlantı panellerini birbirine bağlayarak ENIAC'ı ilk halka açık tanıtım için hazırladılar.    Kathleen Booth, 1950 yılında Birkbeck Koleji'nde üzerinde çalıştığı bilgisayarların programlanmasını kolaylaştırmak için Assembly Dilini geliştirdi.
Grace Hopper, Harvard Mark I'in ilk programcılarından biri olarak çalıştı.  Daha sonra bilgisayar için 500 sayfalık bir kılavuz hazırladı.  Hopper, Mark II'de arızaya neden olan bir güve (bug) bulduğunda çoğu zaman yanlışlıkla "hata" (bug) ve "hata ayıklama"(debugging) terimlerini icat ettiğine inanılır;  ancak bu terim aslında güveyi bulduğunda zaten kullanılıyordu.  Hopper ilk derleyiciyi geliştirdi ve fikrini 1950'lerde Mark bilgisayarları üzerinde çalışmaktan UNIVAC üzerinde çalışmaya taşıdı.  Hopper ayrıca UNIVAC'ı programlamak için FLOW-MATIC programlama dilini geliştirdi.  Yine UNIVAC'ta çalışan Frances E. Holberton bir kod geliştirdi , C-10, programcıların klavye girişlerini kullanmasına izin verdi ve 1951'de Sıralama-Birleştirme Oluşturucuyu yarattı.   Adele Mildred Koss ve Hopper da bir rapor oluşturucunun öncüsünü yarattılar.