Yazılım Mühendisliğine Giriş 3. Hafta 2016 GÜZ 1 Bit ile Bayt arasındaki farklar? Bir sadece '1' veya '0‘ değerini alabilen tek sayısal değer olarak dijital bilginin sayısal birimini belirler. Bayt ise bitlerin herhangi bir dizilişidir ve 8 bitin karşılığıdır A byte is a sequence of bits; eight bits equal one byte. Bitler birleşerek donanımın etkinliğini arttırmak üzere baytlar şeklinde gruplanır. Böylece bellek, disk ve ağ donanımları da etkin olarak tanımlanmış olacaktır. Örneğin İnternet protokolünde (IP) genel olarak 32 bit (ya da 4 bayt kullanılır) Bitler ağ adresini belirler; böylece ağ üzerinde paylaşım mümkün olabilir. Baytlar bitlerle gruplara ayrılır. Örneğin IP adresi 192.168.0.1 aşağıdaki gibi bit ve gruplanmış bayt sıralanışları ile dizilir. 11000000 10101000 00000000 00000001 2 Programlama Dillerinin Tarihçesi 3 İlk Düzey Programlama Dilleri Makine Kodları Her bilgisayar aslında sadece makine kodundaki bildirimleri anlar ve bunlar da ikili sayı sisteminde yazılırlar. Örneğin 11011101 1011011 01001100 1011100 11011100 1011011 Hesaplamanın ilk günlerinde bilgisayar komutları bit gösterimini betimleyen on –off şeklindeki bir dizi elektrik devresi komutlarından oluşmakta idi. Daha sonraları, bu bildirimler ondalık gösterim ile delinmiş kartlara yazılmaya başladı. Bu delinmiş kartlar da ikili koda dönüştürülerek bilgisayarın anlayabileceği bir yapıda ifade edilmekte idi. 4 İlk Düzey Programlama Dilleri Makine Kodları Makine kodları oldukça karmaşık bir yapıya sahiptir. Bu tür programları yazmak ve çalıştırmak için programcı eğitim için çok uzun zaman harcamak zorundadır. Çünkü dilin komutları makinenin iç yapısına, diğer bir ifade ile makinenin kullandığı işlemciye bağlıdır. bağlıdır. Makine kodunda yazılan programların farklı bilgisayarlara taşınabilmesi mümkün değildir. 5 Bilgisayarı kim keşfetmiştir? Bu sorunun cevabı hiç kolay değildir. Aslında gerçek cevap bilgisayarların tarihçesine pek çok kişi katkıda bulunmuştur. Bilgisayar makine sisteminin karmaşık bir parçasıdır. Bilgisayarların her biri bağımsız bir buluş olan pek çok parçadan meydana geldiği söylenebilir. 6 msoffice10 Birinci Kuşak Bilgisayarlar 1940-1956 Vakum Tüpler İlk bilgisayarlar oda büyüklüğünde olup vakum tüpler devre elemanları olarak kullanılıyordu. Bellek olarak ta manyetik dönen silindirler bulunuyordu. İşletilmeleri çok pahalı olup fazla miktarda elektrik harcanmaktaydı. Çok fazla ısındıkları için de düzgün çalışmayabiliyorlardı. İlk kuşak bilgisayarlar işlemlerini makine dilinde gerçekleştiriyorlardı. Bir zaman diliminde sadece tek bir problem çözebiliyorlardı. Girişler delgi kartları ve kağıt şeritlerle, çıktılar ise 7 basılı sonuçlar olarak görüntülenmekteydi. Slayt 7 msoffice10 ; 22.9.2008 Makineye Yönelik Düşük Düzeyli Programlama Dilleri Bilgisayarların ilk kuşakları için makine ile iletişimin tek yolu belirli bir makine dilinin kullanılması idi. Makine dilleri sadece bir bilgisayar için tasarlanıyordu Makine dilleri farklı bir bilgisayarın merkezi işleme biriminde çalışacak şekil kolaylıkla dönüştürülemiyordu. Bilgisayarın iç çalışma yapısının bilinmesi gerektiği için bu dilleri öğrenmek oldukça zordu. Her bir makine dilinde komutlar 16, 32 ya da 64 bit uzunluğundaki sıfır ve birlerden oluşmaktadır. O dönem için olağan olan makine dili problemler genişledikçe günümüzün yüksek düzeyli dillerini doğurmuştur. 8 Üç farklı kağıt şerit 9 ENIAC 1946 -1955 ENIAC (Electronic Numerical Integrator And Computer) 2. Dünya savaşına kullanılıyordu. Askeriyede topçuluk için ateşleme tablolarına gereksinimleri vardı. Böylece belli koşullarda belirlenmiş hedefi ateşlemek üzere hangi silahın kullanılacağına kolaylıkla karar verilebiliyordu. ENIAC makinesine ait vakum tüpler 10 ENIAC 1946 -1955 ENIAC‘ ın diğer uygulama alanları: hava tahminlerinin yapılması, atom-enerjisi ile ilgili hesaplamalar, kozmik ışın incelemeleri, termik ateşleme tertibatları, rasgele sayı oluşturulması, rüzgartünellerinin tasarımı ve diğer pek çok bilimsel kullanımlar Bugünün standartları ile karşılaştırıldığında ENIAC devasa bir canavardı. 19,000 vakum tübün eşzamanlı olarak çalışmak üzere tasarlanması gerekiyordu. 19,000 vakum tüp ise sayıları ancak 2 saat tutabilme gücüne sahipti . 11 Modern Hesaplamanın Doğuşu: Elektronik Devrim ENIAC modern hesaplamanın hemen hemen tüm temel donanım kavramlarına sahiptir. Donanımın içindeki depolama komutlarını bulundurmaz.. Aynı bellek biriminde data olarak programı depolayabilme özelliği Advanced Studies (IAS) Institute’de başlatılmıştır. Bilgisayar ise bundan birkaç yıl sonra Princeton Üniversitesinde inşa edilmiştir. Amerikan paten ofisi ENIAC’ı ilk bilgisayar olarak tanımaktadır. 12 ENIAC’dan önce Hesaplama yapılabiliyor muydu? Bilgisayarlar sadece matematiksel tabloları oluşturan cihazlar özelliğine sahiplerdi. ENIAC ise gerçek hesaplamalar yapmak üzere programlanmış ilk bilgisayardı . Problemler analitik olarak çözümlenmekteydi. Fonksiyonlarla işlemlerin yapılması ile çözümlere ulaşılıyordu. Her bir değişkenin değeri önceden hesaplanmış tablolardan alınmaktaydı. 13 Colossus Bilgisayar Colossus makineleri tarafından 2. Dünya savaşı sırasında Alman mesajlarını okumak üzere İngiliz kod kırıcılarının kullandıkları elektronik hesaplama aygıtlarıydı. Kısaca yüksek düzeyli Alman haberleşmelerinin kripto işlemleri için kullanılıyordu. Mesajlar Lorenz SZ 40/42 şifre makinesi ile çözümlenmekteydi. Bu makine Colossus işlemlerinin bir parçasını oluşturuyordu ve önceden tasarlanmış mekanik Lorenz makinesinin elektronik bir benzeri idi. Mesajın çözümü için metin beşli olarak gruplanmış bitlerden oluşan bir dizi ile birleştiriliyordu. Lorenz makinesi Almanlar tarafından yüksek-düzeyli teleyazıcı haberleşmeleri 14 şifrelemede kullanılmaktaydı. Colossus Bilgisayar Dünyanın ilk programlanabilir, dijital, elektronik hesaplama aygıtında hesaplamalar vakum tüpler yardımı ile yapılmaktaydı. İngilizlerin Colossus kod kırma makinesi 15 Alan Turing Kullandığımız Hesaplama kavramını 1936 yılında makalesinde ifade eden İngiliz matematikçidir. Turing, ENIAC projesinin bir üyesiydi ve İngiliz Colossus makinesinin geliştirilmesine katkıda bulunmuştur. Başarılı olan Colossus projesi savaş sırasında oldukça katkı sağladı. Colossus makinesi dünyanın ilk programlanabilen makinesiydi. Günümüzde bilgisayarın tasarımı ile ilgili olarak Turing‘in tanımlamaları kullanılmaktadır. Alan Turing hatıra anıtı Londra Sackville Parkı 16 Enigma Makinesi Enigma Makinesi elektro-mekanik makineler sınıflandıran aygıtlar ailesindendir ve gizli mesajların şifrelenmesi ve şifre kırılmasında kullanılmaktaydı. İlk Alman Arthur Scherbius tarafından 1.Dünya savaşının sonunda geliştirilmiştir.. Bu makine 2. Dünya savaşında İngiliz kod kırıcılar tarafından Enigma kullanılarak şifrelenen çok fazla sayıda mesajı kırabilecek düzeyde yeniden tasarlanmış ve ünlenmiştir. 17 John von Neumann 1945 yılında Electronic Discrete Variable Automatic Computer isimli dergide yayınlanan makalesinde depolanmış program kavramından bahsetmiştir. EDVAC ilk Amerikan bilgisayarlarından biridir. Colossus ve ENIAC gibi program kontrollü bilgisayarlardan sonra , 1940’ lı yıllardaki depolanmış- program içeren bilgisayar düşüncesi çok büyük bir gelişme idi. Bellek (memory) cıvalı geciktirme hatlarının kullanımı ile sağlanıyordu. Cıvalı tüpün kullanılmasının nedeni elektronik akımın 0 ve 1 ‘leri iki durumlu bir durum aygıtı olarak depolayarak ileri -geri geçişleri (akımları) gerçekleşebilecekti. EDVAC onlu sistemi değil de ikili sayı sistemini kullanması nedeni ile belleğin on/off devre yapısı aritmetik birimlerin oluşturulmasını kolaylaştırabilmekteydi. 18 John von Neumann 1945 yılında von Neumann’ın önerisi oldukça kökten bir fikirdi von Neumann yapısındaki bilgisayarların temel özelliği program ve datanın birlikte depolanmasıydı . Bunun için: Hard disk denilen daha yavaş erişebilecek bir depolama ortamının oluşturulması gerekiyordu. RAM adı verilen geçici bir depolama ortamında bilgi iletişimin daha hızlı olmasını sağlayacaktı CPU (central processing unit ) merkezi işleme birimi tarafından programın çalıştırılması ve işlemler gerçekleştirilecekti. Günümüzün modern bilgisayarları da aynı yapıda geliştirilmekte; data ve program komutları için aynı bellek kullanmaktadır. Kısaca: Depolanmış bir program (stored-program ) bilgisayarda program komutlarını ve okuma/yazma datasını rasgele erişimli belleğinde (Random Access memeory- RAM) tutar.19 von Neumann Architecture Bellek (memory) data ve program komutlarını (instructions) içerir ve istenilen sırada okunmasını (read) ve yazılmasını (write) gerçekleştirir. Hesaplama birimi (Calculating Unit) hem aritmetik hem de mantıksal (logical) işlemleri yapar. Kontrol birimi (Control Unit) bellekten alınan bir komutu yorumlar ve önceki işlemlerin sonuçlarına göre alternatiflerden birini seçerek işlemlere devam edilmesini sağlar. 20 von Neumann Architecture 21 İkinci Kuşak - 1956-1963: Transistor Transistor 1947 yılında keşfedilmiştir. 50 li yılların sonuna kadar bilgisayarlarda yaygın kullanımı görülmez. Vakum tüplere göre çok daha avantajlıdır. Bilgisayarların küçülmesini , hızlanmasını, ucuzlamasını, enerji tasarrufunu ve çok daha fazla güvenilirliği sağlamıştır. Transistorun fazla miktarda ısı yayması bilgisayarın zarar görmesine neden olabilmekteydi. Transistor vakum tüplerden sonra radikal bir gelişmedir. 22 İkinci Kuşak- 1956-1963: Transistor Giriş/çıkış işlemleri için delgi kartlarını kullanılıyordu. Belirsiz (ambiguous) ikili makine dillerinden sembolik veya assembly dillerine geçiş sağlanmıştır. Böylece programcıların komutlarını sözcüklerle ifade etmeleri mümkün olmuştur. Yüksek düzeyi programlama dillerinin geliştirilmesi de bu dönemdedir. COBOL ve FORTRAN programlama dillerini ilk versiyonları Bu diller manyetik silindirlerden manyetik çekirdek (core) depolamaya geçen program komutlarını bellekte saklıyordu Bu tür bilgisayarlar ilk olarak atom enerjisi endüstrisi için geliştirilmiştir. 23 İkinci Düzey Programlama Dilleri : Düşük Düzeyli Diller Bu diller makine kodundan geliştirilmiştir. Makineye bağlı dillerdir. Her bir assemly dili konutu tek bir makinenin komutlarını betimler. Komutlar 3 dijitli kısaltmalarla yazılmıştır. LDA 5000 ADA 6000 STA* 5000 24