Yazılım Mühendisliğine Giriş 4. Hafta

advertisement
Yazılım Mühendisliğine
Giriş
4. Hafta
2016 GÜZ
1
İkinci Kuşak Bilgisayarlar 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.
2
İkinci Kuşak Bilgisayarlar: 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.
3
İ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
4
Düşük Düzeyli Dil: Assembly Dili
Önceki slayttaki kod satırları iki tamsayının toplamını
gerçekleştirmekte ve sonucu ilk sayının bellek
yerleşiminde (adresinde) depolamaktadır.
Yazılan kod sayıların büyüklüğünü göz önüne
almamaktadır. Yani toplama sonunda elde bitinin
(carry bit) olup olmadığı kontrol edilmemektedir.
Bu durumda bile assemly dilinde bir program yazmak
oldukça karmaşık bir işlemdir ve taşınabilir (portable)
bir dil özelliğini taşımamaktadır.
Bu dilin yine de avantajı vardır. Çünkü load
accumulator (toplayıcıya yükle) sözcüğünün
kısaltılmışı olan LDA ikili dijitlerden oluşan bir dizgiyi
hatırlamaktan daha kolaydır.
5
Assembly Kodu
MOV AX, 47104
//47104 sayısı AX konumuna kopyalanır
MOV DS, AX
//AX sayısı DS konumuna kopyalanır.
MOV [3998], 36
//36 sayısı 3998 bellek yerleşimine konulur.
INT 32
INT 32 ile işletim sistemine dönülerek programdan çıkılır
Bu programlama yapısında da kod satırlarının anlaşılması
oldukça karmaşıktır.
6
Üçüncü Düzey Diller:
Yüksek Düzeyli Diller -I
Yüksek düzeyli dillerin öğrenilmesi nispeten daha
kolaydır.
Bu dillerin komutları konuşma diline yakınlığı
nedeni ile daha kolay hatırlanabilir.
Programcının bilgisayarın iç yapısının nasıl çalıştığı
ile ilgili olarak ayrıntıları bilmesine gerek yoktur.
Yüksek düzeyli bir dildeki her bir komut çok fazla
sayıda makine koduna karşılık gelir.
Bu nedenle de yüksek düzeyli diller düşük-düzeyli
dillerden daha öz bilgi içerir.
7
Yüksek Düzeyli Diller -II
Her yüksek-düzeyli komut bilgisayar tarafından
çalıştırılmadan önce, ya derleyici ya da
yorumlayıcı tarafından makine koduna
dönüştürülür.
Yüksek düzeyli diller taşınabilirlik (portable)
özelliğine sahiptir.
Herhani bir yüksek düzeyli dilde yazılmış olan
programların bu dile özel bir derleyicisi
(compiler) ya da yorumlayıcısı (interpreter)
vardır.
8
3. Düzey Programlama Dilleri
1960 -1980
İlk işlemci (processor) tek parça
silikon bir levhadan oluşmaktaydı.
ALGOL 58, 60 ve 68, COBOL,
Fortran IV, ADA ve C 3. kuşak
programlama dillerine ilk
örneklerdir.
9
Derleyici Nedir? Yorumlayıcı Nedir?
Bir bilgisayarın sadece makine kodunda çalışabileceği
kesindir.
Her farklı işlemcinin (processor)* çalıştığı farklı bir
makine kodu vardır
Bunun anlamı kullanıcının yazdığı bir program makinekoduna dönüştüğünde çalışacağıdır.
Yazılmış bir programı makine koduna dönüştürmenin
iki yolu vardır:
Derleyici ya da yorumlayıcı ile gerçekleşebilir.
*İşlemci (Processor) bilgisayarın bir parçası olarak CPU merkezi işleme birimini oluşturur ve
komutları yorumlar.
10
Soru
İşlemci (Processor) sözcüğü ile CPU terimi
eşanlamlı mıdır?
C. Evet. 1960 ‘lı yıllardan beri kullanılmaktadır.
Her işlemcinin kendine ait bir makine dili vardır.
11
Derleme İşlemi
Okunabilir kaynak kodun yazıldığı
programlama dilinden makinenin okuyabildiği
koda dönüştürülmesidir.
Bu işlemi CPU gerçekleştirir.
Execution olarak adlandırılır.
Bu metod derleme olarak adlandırılır.
C++, C, COBOL, FORTRAN ve Pascal programlama
dillerinde kullanılır.
12
Derlenebilen Diller
Derlenebilen diller bir derleyici dili tarafından
bir kere makine koduna dönüştürülür.
Çalıştırılabilen (executable) kod derleme işlemi
sonunda elde edilir ve makinenin doğal dilinde
(native language) pek çok defa çalıştırılabilir
(run) .
13
Yorumlama Prosesi
(Interpretation Process)
Yorumlama programın her satırının makine
tarafından çalıştırıldığında (run) makine diline
dönüştürülmesidir.
Bir deyim le birden fazla defa programın içerisinde
geçiyorsa, yorumlama işleminde makinenin her
seferine bu deyimi makine diline dönüştürmesi
gerekecektir
14
Yorumlama (Interpretation)
Prosesi
Yorumlama (interpreting ) olarak adlandırılan
bu işlem Basic, Perl, PHP, Ruby, Python, vb.
dillerde gerçekleştirilir.
Bir program yorumlanabilir bir dille yazılmış
ise, bu programın çalıştırılması için
yorumlayıcının da yüklenmesi gerekir.
15
Yorumlama (Interpretation) Prosesi
Yorumlanabilir dile ait program bir metin
editörü ve benzeri bir ortamda yazılır ve daha
sonra yorumlayıcı programın çalışmasını
gerçekleştirir..
Yorumlayıcı her seferde tek bir satır alır ve her
bir saturu çalıştırmadan (running) önce
dönüştürür.
Önce ilk kod satırını alır ve makine diline
dönüştürerek çalıştırır. Daha sonra ikinci satırı
alır ve aynı işlemleri yapar. ……
Temel Farklılık
Yorumlayıcı makine diline dönüştürülmüş satırlar
için bellekte hiç yer kaplamaz.
Program satırlarının bir döngü içerisinde
çalıştırılması durumunda bu satırları çalıştırabilmek
için her tekrarda yeniden makine diline
dönüştürmek gerekecektir.
17
Orta Düzey (Middle Level) Dil: C
C programlama dili çoğunlukla orta düzey bir
dil olarak adlandırılır.
Bu sınıflandırma C dilinin daha az güçlü,
kullanılması daha zor olduğu ve BASIC veya
PASCAL gibi yüksek düzeyli dillerden daha az
kullanıldığı anlamına kesinlikle gelmez.
C dili assembly dilinin hantal bir özelliğini
içermesine rağmen, bazen ifadesi zor
problemlere de çözüm sağlayabilmektedir.
18
C Dili ve İşaretçiler
C programlama dili programların bellek
adresinde yüksek düzeyli dillerden daha düşük
düzeyde yazılabilmesini sağlar.
Kısaca
İşaretçi (Pointer) kullanımı ile bellekte
adresleme yapılabilir.
Bu özellik te C programlama dilini orta-düzey
dil olarak sınıflandırır.
19
Download