Python Diliyle Programlamaya Aşina Olanlar İçin C Diline Dair Bilinmesi Gerekenler

Bence değil, hedeflediğime ulaşıp ulaşmadığım konusunda başka değerlendirmeler de vardır sanırım. Ayrıca alıntıladığınız kısmı inceliyorum ama “çok mu iddialı” bir üslupla konuşmuşum diye soruyorum. Çok mu iddialı gerçekten? Meşhur farklılıkları biraz olsun tanıtabilmiş miyim, bu iki dili birlikte nasıl kullanabiliriz gösterebilmiş miyim? Var mı başka bu konuda yorum yapmak isteyen arkadaş? :slight_smile:

Bilmem, acelem yok.

Performans için olabilir.

Ben Ubuntu’da da benzer bir şekilde dinamik bağlantı kullanıyorum, orada .dll yok ama .so var. Aynı işlevi görüyorlar. Yani sadece Windows kullanıcısına yönelik bir Windows yöntemi değil bu. Hatta istersen Linux’te dinamik bağlantı oluştururken uzantılı bir şekilde oluştur. Uzantısı da DLL olsun, yine çalıştırırsın.

Konu Windows da değil ki, Linux olsun. Linux’te ayrı Windows’ta ayrı şekilde çalıştırmamız gereken bir örnek değil abi. Windows kullanıcısı da, Linux kullanıcısı da benzer bir yolla burada anlattığım programı derler. Atla deve değil…

Python’da yazdığımız bir kodun C dilindeki eşleniğini yazıp sonra da bunu dinamik bağlantı kitaplığı yoluyla Python’da kullandık. Programı çalıştıran kodlar, hem Python, hem de C’den geldiği için, hem Python dili kodları hem de C dili kodları aynı projede kullanılmış olurlar.

Bilgilenmek için?

Bir dilde anlattığımız bir hikayeyi, diğer dilde de aynı anlama gelecek şekilde anlatmak istediğimizde nelere ihtiyaç duyuyoruz. Hikayeyi nasıl kuruyoruz, bunları öğrenmek için.

Sonuçta her ikisi de bir dil. Her iki dilde de belirli anlamlara gelen cümleler, cümlecikler var. Bir dilden diğer dile çeviri yaparken, bazen karşılaştırma da yapıyoruz.

:slight_smile:

Burada karşılaştırılan şey, algoritmaların dilin özelliklerinden ötürü nasıl değiştiği.

Abi dikkatini çekeyim,

Mesela ne diyorum:

Python’da dizi[::-1] gibi dizi dilimleme işlemleri yapabiliriz ama C’de bunu yapamayız diyorum. Bu dilimleme özelliği yerine, benzer bir işlemi C’de nasıl yapabiliriz tam da bunu anlatmaya çalışıyorum.

Diyorum ki, Python’da yield var, hangi amaçla kullanıldığını da biliyorsunuz. Sonra diyorum ki, C’de bu özellik de yok. Ama sorun mu, değil? Biz yield’ın yokluğunu aratmayacağız… Sadece programlama yaklaşımımızı değiştireceğiz. Benim burada yapmaya çalıştığım şey buydu. Sonra da C’de yazdığımız uygulamayı, ctypes bağlantısı ile Python’da kullanmaya başladık.

Python’da yazdığım combinations fonksiyonunda herhangi bir kütüphane kullanmadım ki. Nasıl okuyorsun yazıyı anlayamadım. Herhangi bir kütüphane kullanılmamış bir çalışma için şöyle yazıyorsun:

python fonksiyonlarında yerleşik yada harici kütüphanelerini kullanırken, C’de benzer işler için kütüphaneleri include etmek yerine kodunu yazarak karşılaştırayım?

Hani abi yerleşik kütüphane?

def combinations(arr, r):
    if not r:
        yield ()
        return
    for i in range(len(arr)):
        for comb in combinations(arr[i + 1:], r - 1):
            yield arr[i], *comb


print(*combinations(arr, 2))

Abi, sen bir baştan mı okusan ne yapsan. Gözünden kaçmış belli ki. Herhangi bir kütüphane kullanmadık…

Kütüphane karşılaştırmadık burada. Farklı bir algoritmayla itertools.combinations’ın yaptığı işin benzerini yapan bir Python fonksiyonu yazdık. Ve bunda da herhangi bir kütüphane kullanmadık. Sonra da dedik ki biz bu algoritmayı C’de de uygulamak istesek, ne tür değişiklikler yapmamız gerekir.

4 Beğeni