Python Hakkında Ufak Bir Söyleşi

Python son yıllarda popülerliği gittikçe artan ve artmaya devam eden bir programlama dili. Bu yazımızda bu popülerliğin arkasındaki sebepleri, yadsınamaz büyüklükteki topluluğunu ve tabii ki dilin kendisini inceleyeceğiz.

Geçmiş

Herşey, Guido van Rossum tarafından, aslında bir hobi projesi olarak geliştirilen Python’un 1991 yılında duyurulmasıyla başladı. Tabii çok daha öncesinde, 1980’li yıllara dayanan bir tarihi bulunan Python, 1989 yılında implemente edilmeye başlanmış. 1994 yılının Ocak ayında 1.0 stabil sürümüne ulaşabilmiş, en son stabil sürümü olan 3.6.5’e ise 28 Mart 2018 tarihinde ulaşmıştır.

Bugün

Stack Overflow Blog sayfalarında yayınlanan 6 Eylül 2017 tarihli ‘The Incredible Growth of Python’ adlı yazıda, Dünya Bankası’nın yüksek gelirli olarak belirlediği ülkelerin diğer ülkelere oranla farklı teknolojiler kullandığı ifade ediliyor ve yapılan araştırma sonucu elde edilen verilere göre Python’ın bu ülkelerde en hızlı büyüyen programlama dili olduğu sonucuna varılıyor.

Peki Neden?

Benim nezdimde ilk nedenin yazım kolaylığı ve okunabilirliği olduğunu söyleyebilirim. Bu faktörler , dilin öğrenilmesini de ciddi oranda kolaylaştırıyor. İnternette yapabileceğiniz küçük çaplı bir araştırma ile de büyük bir çoğunluğun bu sebeplerle tercih ettiğini görebiliyorsunuz. Örneğin, diğer popüler programlama dilleri ile karşılaştırdığınızda direkt göze çarpan fark, dilin space-sensitive yani boşluğa duyarlı bir dil olması oluyor. Dilin dizayn felsefesine göre okunabilirliği arttırması amaçlı alınmış bir karar aslında bu. Bizzat Guido van Rossum’un The History of Python‘da yayınladığı ‘Python’s Design Philosopy’ yazısında bahsettiği gibi, direkt olarak kendisinin belirtmediği dizayn ilkelerinin, dilin gelişiminde büyük katkısı olan Tim Peters tarafından yazıya dökülmeye çalışılması ile ortaya çıkan Zen of Python maddelerinden bir tanesi de ‘Readability counts’ yani ‘Okunabilirlik önemlidir’ maddesidir. Tabii dilin bu kadar popüler olmasını sağlayan tek şey ‘yazım kolaylığı’ ya da ‘okunabililiği’ değil.

Yapay Zeka Çağı

Başka bir neden ise son yıllarda popüler olan fakat geçmişi aslında o kadar da yakın tarih olmayan, AI, Deep Learning, Neural Network gibi konulara çok kolay bir şekilde girebilmenizi sağlayacak bir çok paketin, örnek kodların ve topluluk desteğinin bulunması. Aslında anlayabileceğiniz üzere bu konular çokta “basit” değil. Sadece teknik yetkinlik yetersiz kalıyor çünkü bu teknik yetkinlikleri edinebilmek için zaten öncelikle kendinizi biyolojik ve felsefik olarak yeterli bilgiye sahip olacak şekilde geliştirmeniz gerekiyor. Çünkü temelinde yapmaya çalıştığınız şey bir bilgisayarın insan gibi düşünmesini sağlamak. Topluluk buradaki bariyeri, yukarıda bahsettiğim etmenler ile biraz daha aşağı çekmeye çalışarak daha çok insana ulaşabilmesini sağlıyorlar ve topluluğun günden güne büyüme hızının artması da bir şeyleri doğru yaptıklarının bir göstergesi olsa gerek.

Web Geliştirme

Tabii başka bir etmen de Web uygulamaları geliştirebilmeniz. ‘Web Uygulamaları Geliştirebileceğiniz Diller ve Platformlar’ yazısında da incelediğimiz, Django, Flask ve Pyramid gibi paketleri kullanarak hızlı bir şekilde web uygulamaları çıkartabiliyorsunuz. Burada da topluluk desteğinin oldukça yüksek olduğunu belirtmekte fayda var.

Gelecek

Bugün başlığı altındaki Stack Overflow yazısı, Python’ın geleceği hakkındaki görüşlerini de belirtiyor ve tahminlerde bulunuyor. Bugüne kadar aldıkları trafik verisi ile 2018 yılı dahil olmak üzere önündeki iki yılı tahminlemeye çalışan Stack Overflow, Python’ın 2020’ye kadar Java ile arasındaki farkı oldukça açacağını söylüyor. Ayrıca Java trafiklerinin, eğitim sistemlerinde oldukça ağırlıklı kullanılan bir dil olduğundan sonbahar ve ilkbahar dönemlerinde trafiğin arttığını ve yaza doğru azaldığı da belirlenmiş ve öngörüde bu bulgular da düşünülerek tahminleme yapılırken ‘Seasonal and Trend composition using Loess’ (STL) modeli kullanılmış.

Ayrıca, büyüme oranlarına göre de diller karşılaştırıldığında, Swift ve R’a göre çok daha hızlı şekilde büyüme kat ettiğini görüyoruz.

Sonuç

Python, öğrenme zorluğu düşük, geniş bir uygulama yelpazesine sahip ve topluluk tarafından oldukça destek gören, programlamaya yeni başlıyorsanız ya da başlamayı düşünüyorsanız eğer kesinlikle önerebileceğim bir dil.

Bir sonraki yazıda görüşmek üzere.

Web Uygulamaları Geliştirebileceğiniz Diller ve Platformlar

Bu yazımızda sizlerle birlikte web uygulamaları geliştirebileceğiniz bir kaç dili, onların platformlarını ve bu platformlarda kullanabileceğiniz bir kaç örnek kütüphaneyi inceleyeceğiz.

1. .NET Dilleri (Visual Basic, C#, F#)

Visual Basic, Microsoft tarafından 1991 yılında duyurulan ve Basic dilini temel alarak geliştirilen, nesne yönelimli (OOP), olay odaklı (event-driven) bir dil.

C# ise yine Microsoft tarafından 2000 yıllarında duyurulan, çoklu yönelimli (multi-paradigm) bir programlama dilidir. Nesne yönelimli, fonksiyonel ve generic programlama yaklaşımlarına sahiptir.

F#, artık tahmin edebileceğiniz gibi Microsoft tarafından 2005 yılında 1.0 versiyonuna ulaşmış, çok yönelimli, özellikle fonksiyonel programlama yapabileceğiniz bir dil. Aynı zamanda Javascript ve GPU odaklı kod oluşturma gibi yetenekleri de var.

.NET dillerini kullanarak web uygulamaları geliştirebileceğiniz bir kaç platform mevcut. ASP.NET ailesinin yanı sıra, aynı zamanda Owin (Open Web Interface for .NET) ve Nancy gibi protokole daha yakın platformlar da bulunuyor.

1.1 ASP.NET Ailesi

Popüler olanları sayacak olursak Web Forms, MVC ve Web Api platformlarını sayabiliriz. Onun dışında yeni çıkan Web Pages ve Blazor isimli platformlar da mevcut fakat bunları başka yazılarda detaylı bir şekilde inceleyeceğiz.

1.1.1 ASP.NET Web Forms

ASP teknolojisinin .NET platformunda hayat bulduğu ilk hali diyebiliriz. ASP’de olduğu gibi <% ve %> tagleri kullanılarak sunucu taraflı kod yazabilirken, aynı zamanda .NET kütüphanesinin tamamına da erişim sağlayabiliyorsunuz.

1.1.2 ASP.NET MVC

ASP.NET platformu üzerine MVC metodolojisinin kurgulandığı bir platformdur. Aynı zamanda klasik ASP’den beri kullanılan <% ve %> tagleri yerine, kullanımı biraz daha kolay olan Razor yazım şekli ile birlikte gelmiştir.

1.1.3 ASP.NET Web Api

ASP.NET MVC platformu üzerinde yapılan bir kaç değişiklik ile birlikte, RESTful API’ler geliştirilebilen bir platformdur ve son yıllarda istemci taraflı web geliştirmenin de popülerliğinin artması ile birlikte en sık kullanılan yaklaşımdır.

1.2 Owin (Open Web Interface for .NET)

Sunucu ve uygulama arasındaki bağı kopartmaya çalışan Owin, geliştiricilerin daha çok uygulamanın kendisine odaklanmasını sağlamaya çalışmaktadır. Middleware yaklaşımını kullanır ve diğer .NET platformlarına nazaran daha esnek bir API sunar.

1.3 Nancy

Herhangi bir metodolojiyi benimsemeyen Nancy, direkt olarak browser tarafından istenen kaynağa karşılık gelecek şekilde bir yazım şekli sağlar. Böylece fazla kapsamlı olmayan ihtiyaçlara karşılık çok hafif bir platform alternatifi sunar.

 

2. PHP

1995 yılında Rasmus Lerdorf tarafından yaratılan PHP, sunucu taraflı kodlama sağlıyor. WordPress, Joomla! ve Drupal gibi sistemler bu dil kullanılarak geliştirilmiş ve çok yaygın bir kullanıma sahip. Sadece PHP dilinin kendisi kullanılarak da bir web uygulaması geliştirilebilse de farklı yaklaşımları barındıran bir çok platform ortaya çıkmış. İçlerinden Symfony, CodeIgniter, Laravel, CakePHP ve Phalcon platformlarını örnek olarak sayabiliriz.

2.1 Symfony

İçerisinde 50 adet bileşen bulunduran Symfony, bu bileşenler ile birlikte kod tekrarını azaltmayı ve genel ihtiyaçları karşılamayı amaçlıyor. Drupal, phpBB, yine aşağıda inceleyeceğimiz Laravel ve daha bir çok platform tarafından da kullanılmakta.

2.2 CodeIngiter

MVC metodolojisini benimseyen CodeIgniter, MVC’yi benimsemeseniz bile kullanabileceğiniz bir platform çünkü sizi MVC yazmaya zorlamıyor. Küçük ve performanslı web uygulamaları geliştirebilirsiniz. Artı olarak detaylı ve sade bir dökümantasyona da sahip.

2.3 Laravel

Web sanatçılarının PHP kütüphanesi mottosuyla kendini gösteriyor Laravel. İçerisinde Active Record desenini implemente eden Eloquent adında bir ORM’e ve Blade adında bir şablon motoruna sahip. Yaklaşım olarak MVC tercih edilmiş.

2.4 CakePHP

Dökümanın ilerleyen bölümlerinde inceleyeceğimiz Ruby on Rails’in konseptine uygun geliştirilen CakePHP, diğer bir çok platform gibi MVC yaklaşımını benimsiyor. Laravel’de de olduğu gibi içerisinde Active Record desenini implemente eden bir kütüphaneye sahip.

2.5 Phalcon

Büyük bir çoğunluğu C ile yazılan Phalcon, diğer platformlara göre daha performanslı ve daha az kaynak harcadığını savunuyor. Aynı şekilde C ile yazılan bir ORM’e ve MVC yaklaşımına sahip.

 

3. Python

‘Python Hakkında Ufak Bir Söyleşi’ adlı yazımda kendisine detaylı bir şekilde değindim. Okumak isterseniz buradan ulaşabilirsiniz.

Bir çok web platformu mevcut fakat bir kaç örnek olarak Django, Flask ve Pyramid’i sayabiliriz.

3.1 Django

İçerisinde varsayılan olarak şablon motoru, ORM ve kimlik doğrulama gibi özellikler ile geliyor ve Python üzerinde web programlama için kullanılan en popüler platformdur.

3.2 Flask

Aşağıda da inceleyeceğimiz ve bir Ruby platformu olan Sinatra’dan ilham alan Flask, alt tabanında Werkzeug WSGI Toolkit ve Jinja2 şablon motorunu kullanıyor. Çok hafif bir yapıya sahiptir.

3.3 Pyramid

Az uğraş gerektireceğini vaad eden Pyramid, en basitinden en kapsamlısına bütün projelerde kullanılabileceğini söylüyor. İçerisinde dosya bazlı şablon motoru, doğrulama sistemi ve test kütüphaneleri ile birlikte geliyor ve geniş konfigurasyon desteği sağlıyor.

 

4. Ruby

Yukihiro “Matz” Matsumoto tarafından Japonya’da, 1990’lı yılların ortalarında geliştirilmeye başlanmış. Çoklu yönelimli bir dil olan Ruby, nesne yönelimli ve fonksiyonel programlama yaklaşımlarına sahiptir.

Dökümanda önceden de bahsedilen, Ruby için önemli sayılabilecek iki adet platform bulunuyor ; Ruby on Rails ve Sinatra.

4.1 Ruby on Rails

Convention over Configuration yaklaşımını savunan Ruby on Rails, çok hızlı bir şekilde web üzerinde çalışabilen uygulamalar geliştirmenizi sağlıyor. Ruby üzerinde kullanılan açık ara en popüler platform.

4.2 Sinatra

Nancy ve Flask gibi, minimum efor ile web uygulaması yazmanızı sağlayan bir platform. Test kütüphaneleri ve topluluk tarafından geliştirilen eklentiler ile çok daha geniş çaplı uygulamalar da yazılabiliyor.

 

Bu yazıda, .NET dilleri, PHP, Python ve Ruby dilleri için kullanılabilecek platformları inceledik.

Bir sonraki yazıda görüşmek üzere.