Python Dilini Kullanan Geliştiricilerin İşini Fazlasıyla Kolaylaştıran Yöntem

Python dilini kullanan yazılım geliştiricilere çok büyük faydalar sağlayan "generators" komutlarının ne işe yaradığını ve nasıl kullanılabileceğini anlatıyoruz.

Bir uygulamanın kodlanma işlemi, fazlasıyla sıkıntılı bir süreçtir. Yazılımcılar, binlerce satır kodlama yaparken bu kodların düzgün olarak çalışabilmesi için yoğun bir çaba sarf ederler. Aksi takdirde yazılan kodlar çalışmayacaktır ve bu da yazılımcılar için ciddi bir sorun teşkil ediyor.

Geliştiriciler, bir uygulamayı hazır hale getirebilmek için, uygulamanın kullanılacağı platform kapsamında çeşitli yazılım dilleri kullanabiliyorlar. "C", "Java", "Swift" ve "Python" gibi programlama dillerini bu bağlamda örnek olarak gösterebiliriz. Bu haberimizin konusu ise Python programa dilinde kullanılan, İngilizce olarak "Generators", Türkçe karşılığı ise "Üreteç" olarak geçen komutlardan bahsedeceğiz. "Üreteçler nedir?" ve "Neden Kullanılmalı?" sorularının yanıtlarını, bu haberimizde görebileceğiz.

Üreteçler, Python yazılım dilinde kullanılan etkili yöntemlerden bir tanesidir. Profesyonel geliştiriciler, bu komutları kullanarak hem daha iyi bir kod düzenine sahip oluyorlar hem de bu komutlar sayesinde uygulamalar daha rahat bir şekilde çalışabiliyor.

Yazılım geliştiriciler, bir kodlama sırasında sıralı verilerden sık sık faydalanıyorlar. Bu sayede veriler rahat bir şekilde kullanılıyor, kimi zaman da veritabanlarında depolanıyor. Ancak bu durumun bir dezavantajı bulunuyor. Sıralı verilerde bulunan öğelerin sayısı ön görülemez. Kimi zaman makul sayılarda öğeler bulunurken kimi zamansa çok sayıda öğe olabilir ve bu da uygulamanın çalışma performansını etkiler. Şimdi, sıralı verilerden ve listelerden oluşan bir kod örneğini inceleyelim.

def scale_to_log10(till_number):  
log10_number_seq = []  
for num in range(1, till_number):  
log10_number_seq.append(math.log10(num))  
return log10_number_seq

Bu kod, bakıldığı zaman fazlasıyla kısa gibi görünebilir. Ancak kodların arasında bulunan "range" komutu, yazılımcıya sürekli bir döngü oluşturacaktır. Bu döngü, sonsuz bir bellek alanında sorunsuz çalışabilir ancak bu döngünün boyutu artmaya başladığı zaman işler tamamen karışacaktır. Örnek vermek gerekirse bu döngü 4 GB'lik bir boyuta sahip olabilir. Ancak ayrılan bellek 2 GB olursa sistem çökecek ve işlem yarıda kalacaktır. İşte tam da bu noktada generators komutlarından faydalanılıyor. Geliştiriciler, generators komutlarını kullanarak sadece ihtiyaç olduğu zaman bu döngünün içerisine giriyorlar ve bu da RAM ve işlemci kullanımını doğrudan etkiliyor. Bu yöntem sayesinde uygulamalar, daha rahat bir şekilde çalışıyorlar ve herhangi bir çökme durumu yaşanmıyor.

Şimdi de geliştiricilerin, bu komutları nasıl kullandıklarına bakalım;

def scale_to_log10(till_number):  
for num in xrange(till_number):  
yield math.log10(num)

Bu kod, temelde yukarıda bulunan kodlarla aynı işlevi görüyor. Sadece bu kodun öğeleri işleme biçimi biraz daha farklı. İkinci koddaki ufak farklar, kod kesitinin sadece o an işlenen öğeyi belleğe aktarılmasını sağlıyor. Bu da hem gereksiz boyutları ortadan kaldırıyor hem de işlemci ve RAM kullanımının optimizasyonunu sağlıyor.