Bu dersin amacı Python programlama dilini bilgisayar bilimleri açısından inceleyerek sizlere sunmaktır. Sadece uygulama değil altında yatan teori de nesneye yönelik programlama ve veri yapıları gibi temel bilgisayar bilimi dersleri üzerinden hatırlatmalar yaparak anlatmaya çalışacağım. Bu derste öğreneceğiniz bilgileri diğer programlama dillerinde de kullanabilirsiniz.
Öncelikle görevlerimizi tanımlayalım.
- Benim bu dersteki görevim size Python dilinin olanaklarını, bilgisayar bilimi açısından özelliklerini basit örneklerle anlatmaktır.
- Sizin göreviniz ise Python’u kendi başınıza öğrenmektir.
- Ben bu yazıları okuyup veya videolar izleyip, kod yazmadan bu dili veya herhangi bir programlama dilini öğrenirim demek kanımca hayalciliktir.
1.1.1. Python’u tanıyalım
Python yüksek seviyeli, yorumlanmalı, etkileşimli ve nesne yönelimli bir betik dilidir. Python yüksek derecede okunabilirlik üzerine tasarlanmıştır. Diğer dillerin noktalama işaretlerini kullandığı daha söz dizimsel yapıya sahip dillerden farklı olarak İngilizce anahtar kelimeler kullanır.
- Yorumlamalı: Python çalışma zamanında bir Python yorumlayıcısı tarafından işlenir. Programınızı yürütmeden önce derlemeniz veya C’de olduğu gibi makine koduna (çalışabilir dosya – executable file) çevirmeniz gerekmez. Bu açıdan PERL ve PHP’ye benzerdir.
- Etkileşimli: Python kodunu yazıp direkt sonuç alabilirsiniz.
- Nesne yönelimli: Her ne kadar ilk bakışta prosedür tabanlı bir dil gibi dursa da nesne yönelimli stilini ve programlama tekniğini destekler.
- Python iyi bir başlangıç dilidir – Bilgisayar biliminin merkezi Amerika’da birçok üniversitede başlangıç dillerinden biridir. Başlangıç seviyesinde yazılımcılar için iyi bir dil olduğu söylenebilir. Ancak, dili inceledikçe iç çalışmasını anlamak için başlangıç seviyesinin dışına çıkılır. Bu dille metin işlemlerinden, web uygulamalarına kadar hatta oyun geliştirmeye kadar çok geniş yelpazede farklı uygulamalar geliştirmek mümkündür.
Öğrencilerime her zaman söylediğim gibi bir dile bağlı kalmayın. Python dili gün gelir yerini başka bir dile bırakabilir. Hatta çok daha hızlı bir uygulama yazmak için C diline ihtiyaç duyabilirsiniz. Bu konuda Python öğrenin, Python her şeye yeter gibi konuşmalar duyuyorum. Ben ne yazık ki buna katılmıyorum. C ile başlamanızı öneriyorum ve üstüne Javascript, Java, C# gibi dillere geçmenizi de öneriyorum. Örneğin Node.JS öğrenmek için Javascript dilini bilmelisiniz. Javascript söz dizimi içinde C bilmelisiniz. Python’da güzel bir dil ancak hiç bir zaman tek dile bağımlı olmayın.
1.1.2. Python tarihçesi
Python, seksenli yılların sonlarında ve doksanlı yılların başında Hollanda’daki Matematik ve Bilgisayar Bilimleri Ulusal Araştırma Enstitüsü’nde Guido van Rossum tarafından geliştirilmiştir. Python ABC, Modula-3, C, C++, Algol-68, SmallTalk ve Unix kabuğu gibi birçok farklı dilden esinlenmiştir. Python kaynak kodu artık GNU Genel Kamu Lisansı (GPL) altında kullanılabilir.
1.1.3. Python özellikleri
Şimdi biraz Python dilini övelim.
- Öğrenmesi kolay – Python birkaç anahtar kelime, basit yapı ve açıkça tanımlanmış bir söz dizimine sahiptir. Bu, öğrencinin dili hızlı bir öğrenmesine olanak sağlar.
- Kolay okunan – Python kodu çok rahat bir şekilde okunabilir.
- Bakımı kolay – Kod rahat okunduğu için bakımı ve iyileştirmesi de o kadar kolaydır.
- Geniş bir standart kütüphane – Farklı ve rahat kullanılabilir birçok kütüphaneye sahiptir. Ayrıca, Python’un kütüphanelerin büyük çoğunluğu UNIX, Windows ve Macintosh’ta çalışabilir.
- Etkileşimli Mod – Kod yazarken direkt sonuç alma şansına sahipsiniz. Bu sayede Python, etkileşimli test ve kod snippet’lerinin hata ayıklamasını sağlayan etkileşimli bir mod için destek sunar.
- Taşınabilir – Python, çok çeşitli donanım platformlarında çalışabilir ve tüm platformlarda aynı arabirime sahiptir.
- Uzatılabilir – Python yorumlayıcısına düşük seviyeli modüller ekleyebilirsiniz. Bu modüller, programcıların daha verimli olmaları için araçlarına ekleme veya özelleştirme yapmalarını sağlar.
- Veritabanları – Python, tüm büyük ticari veritabanlarına arayüz sağlar.
- GUI Programlama – Python, Windows MFC, Macintosh ve Unix’in X Pencere sistemi gibi birçok sistem çağrısına, kütüphaneye ve Windows sistemine oluşturulabilen ve taşınabilen GUI uygulamalarını destekler.
- Ölçeklendirilebilir – Python, kabuk betiklemeden daha büyük bir program için daha iyi bir yapı ve destek sağlar.
Aslında sadece bu özelliklerle Python sınırlamak anlamsızdır. Yukarıda belirtilen özelliklerin dışında, Python birçok güzel özelliğe sahiptir. Bazıları:
- Her ne kadar nesne yönelimli bir dil olsa da prosedür tabanlı programlama ve günümüzün popüler programlama tekniği fonksiyonel programlama metotlarını da destekler.
- Her ne kadar bir betik dili olarak kullanılabilse de büyük uygulamalar için ara bir koda derlenebilir. Bu sayede daha hızlı çalışan bir kod elde edilebilir.
- Otomatik çöp toplama (garbage collection) destekler.
- Çok yüksek seviyeli dinamik veri tipleri sağlar ve dinamik tip kontrolünü destekler.
- C, C ++, COM, ActiveX, CORBA ve Java ile kolayca entegre edilebilir.