Arcade Türü Oyun Programlamayı ve Bilgisayar Bilimleri Öğrenin

Arcade Türü Oyun Programlamayı
ve Bilgisayar Bilimleri Öğrenin

Chapter 2: Bilgisayar Dili Nedir?

Video: Bilgisayar Dili Nedir?

Bilgisayar dilleri ne yapar? Neden bilgisayarlarda onlar var? Neden çok fazla sayıda ve farklı programlama dili vardır?

Nasıl araba sürebilmek için motorun nasıl çalıştığını anlamak gerekli değilse, basit programlama işleri için de bu soruların cevaplarını anlamak gerekli değildir. Ancak, ileri seviyeye doğru yol alındığında, bir bilgisayarın nasıl çalıştığını anlamak önemlidir. Bu bölüm, başlayabilmek için kısa bir açıklama içerir.

2.1 Programlamanın kısa tarihi

Bilgisayarlar elektroniktir, ayrıca dijitaldirler. Bir bilgisayar için her şey, bir kablo boyunca gerilim(voltaj) olmasından veya olmamasından ibaretttir. Voltaj olmaması bilgisayar için sıfır demektir, herhangi bir voltaj değeri olması ise bir anlamına gelir. Aslında, bilgisayarlar sıfır ve birlerin yanyana gelmesinden daha fazlasını hesaplayamazlar.

In the early days, switches were used to load ones or zeros into computer memory. The figure below, courtesy of Wikimedia Commons, shows an Altair 8800. The front panel switches were used to load in the program. The lights showed the output. There was no monitor. İlk zamanlarda, bilgisayarlara bir ve sıfırları yükleyebilmek için anahtarlar kullanılıyordu. Alttaki şekil, Wikimedia Commons'un izniyle, Altair 8800'ı göstermektedir.

fig.altair
Figure 2.1: Altair 8800

Düğmelerin her açılı/kapatılması bir sayıyla temsil edilir. Her sayı bilgisayara işlenmesi için bir veri veya talimat içerir. Sadece sıfır ve birlerden oluşan bu sistemler ikilik sayı sistemi olarak adlandırılır. Bu tür bilgisayar dili 1GL ya da birinci nesil programlama dili olarak adlandırılır.

İkilik sistemde sayılar genellikle dörtlü gruplarla temsil edilir. Örneğin:

1010 0010 0011

Onaltılık(hegzadesimal) kodların kullanılmaya başlanması, programların anahtarlarla girilmesinde bir gelişme olmuştu. Onluk sayılar birçok insanın kullandığı 0-9 rakamlarını içerir. Onaltılık sayılar 0-9 sayılarını ve dört anahtarı veya 0-15 arası numaraları temsil etmek için A-F'yi içerir.
İkilikOnlukOnaltılık
000
111
1022
1133
10044
10155
11066
11177
100088
100199
101010A
101111B
110012C
110113D
111014E
111115F
1 00001610
1 00011711

Video: Onluk, ikilik ve onaltılık sayı sistemlerini anlamak

Program girişini kolaylaştırma amacıyla, sonraki bilgisayarlarda programların assembly dili ile girilmesine izin verildi. Her komut bir hatırlatıcı kısaltma olarak kullanıldı ve derleyici adı verilen program hatırlatıcıları komut adı verilen sayılara dönüştürdü. Bu dil türüne 2GL veya ikinci nesil dil adı verildi. (Ç.N GL=Generation Language)

Altta yer alan örnek bir assembly dili programıdır, Wikimedia Commons'un izniyle.

fig.assembly
Figure 2.2: Assembly dil örneği

Bu bir gelişme olduğu halde, programlamak hala pek de kolay değildi. Bir sonraki nesilde yer alan diller yüksek-seviye kısaltmalara izin verdi. İlk üçüncü nesil dillerde (COBOL, FORTRAN ve LISP) programlamak ve programı anlamak çok daha kolaydı.

İkinci ve üçüncü nesil diller, derleyici adı verilen programları kullandı. Derleyici, kullanıcı tarafından yazılan programı (kaynak kodu adı verildi) alıp makine koduna dönüştürür. Programcı bunun ardından makine kodunu çalıştırır. Orijinal kaynak kodu çalışmaz.

Programdaki kaynak kodu farklı parçalardan oluşuyorsa, bağ düzenleyici adı verilen program tarafından tek bir programa bağlanabilir. Bağ düzenleyici derleyici tarafından üretilen makine kodu üzerinde çalışır ve son bir program üretir. Bu son program kullanıcının çalıştırdığı programdır ve orijinal koda gerek duyulmaz. (Ç.N derleyici: compiler, bağ düzenleyici: linker)

fig.compiler_and_linker
Figure 2.3: Derleyiciler ve Bağ düzenleyiciler

Makine diline derlemenin bir kötü yanı bu programların sadece özel makine türlerinde çalışmasıdır. Windows bilgisayarlar için derlenen programlar Apple Macintosh bilgisayarlarda ya da Linux bilgisayarlarda çalışmaz.

Yeni programcılar için bütün derleme ve bağlama aşamaları karışık olabileceğinden, bazı diller onun yerine kodu yorumlayıcıları kullanarak çalıştırırlar. Bu programlar kaynak koduna bakar ve bu esnada onu makine kodu komutlarına yorumlarlar. Bu ayrıca aynı programın Windows, Mac ve Linux bilgisyarlarda çalışmasını sağlar. Her platform için yorumlayıcılar mevcuttur.

Yorumlayıcı kullanmanın dezavantajı ise kodun makinenin ana dili yerine bir yorumlayıcı üzerinde çalışmasının daha yavaş olmasıdır.

fig.interpreter
Figure 2.4: Yorumlayıcı

Python yorumlanan dillere bir örnektir. Python'da geliştirme yapmak C'den daha kolaydır, fakat Python daha yavaş çalışır ve programın çalışabilmesi için Python yorumlayıcısının bulunması şarttır.

Java gibi diller asıl makine yerine Java Virtual Machine (JVM) üzerinde çalışan bir makine diline derlenen bir sistem kullanırlar. Bir başka popüler dil olan C#, bir Common Language Infrastructure (CLI) dilidir ve sanal makine üzerinde Virtual Execution System (VES) üzerinde çalışır. Bunlar hakkında tam bir tartışma bu kitabın konusunun ötesindedir. Ancak bunlar hakkında okumaya devam etmekte kendinizi özgür hissedin.

Bugün birçok farklı programlama dili bulunmaktadır. Bilgisayarlar çok fazla değişik türde işler yaptıkları için farklı diller farklı işlerde özelleşebilmeleri için geliştirilmiştir. C gibi diller işletim sistemleri ve küçük gömülü bilgisayarlar için iyidir. PHP gibi diğer diller internet siteleri oluşturmak için özelleştirilmişlerdir. Python genel amaçlı olan ve kullanılması-kolay olması için özelleştirilen bir dildir.

Tiobe firması farklı programlama dillerinin popülerliklerini kendi indexlerinde her ay güncelleyerek takip ediyor. Buraya bakmak iyi bir fikir olacaktır, ayrıca DICE gibi iş ilan sitelerine bakarak işverenlerin güncel olarak hangi dili bilen eleman aradıklarına ulaşabilirsiniz.

Neyse ki neredeyse bütün diller aynı elementleri paylaşırlar, yani herhangi bir programlama dili bir kere öğrenildiğinde, aynı teoriler diğer dillere de uygulanacaktır.

Bilgisayarın eğlenceli bir tarihi için, alttaki videoları izlemenizi ve takip etmenizi öneriyorum:

Bu videolar Netflix, Amazon ve diğer yaygın kaynaklarda bulunabilir. Bunlar bütün ailenizin eğlenebileceği kadar eğlencelidir. Ben ayrıca eğer okumayı videodan daha çok tercih ediyorsanız Accidental Empires kitabını öneriyorum.

2.2 Tekrar

Çoktan seçmeli tekrar quizi için buraya tıklayın..

  1. İkilik sistemde bir sayı örneği verin. ("1" gibi bir sayı ikilik, onluk ve onaltılık olabilirken, farklı tabanlardaki sayılar arasında yer alan farkları daha iyi örnekleyen örnekler bulmaya çalışın.)
  2. Onluk sistemde bir sayı örneği verin.
  3. Onaltılık sistemde bir sayı örneği verin.
  4. 1, 10, 100, 1000 ve 10000 sayılarını ikilik sistemden onluk sisteme çevirin.
  5. Derleyici nedir?
  6. Kaynak kodu nedir?
  7. Makine dili nedir?
  8. Birinci nesil dil nedir?
  9. İkinci nesil dil nedir?
  10. Üçüncü nesil dil nedir?
  11. Yorumlayıcı nedir?


You are not logged in. Log in here and track your progress.