C -Python dili ile ilgili soru

Okuduğum üzere C yorulmlamalı bir dil olan B nin derlenme özelliği getirilmiş hali o zaman pythona da derlenme özelliği getirilse C gibi olmazmı

1 Beğeni

Merhaba kaynağı verebilir misiniz ?

Goggle a b dili nedir yazdigimda bu cikiyor

Bilgi doğru.

AT&T Bell laboratuvarlarında, Ken Thompson ve Dennis Ritchie tarafından UNIX İşletim Sistemi’ ni geliştirebilmek amacıyla B dilinden türetilmiş yapısal bir programlama dilidir


Olamaz. Python dinamik tipli, yorumlanan bir dil. Elbette Python programları derlenmiş hale getirilebilir, bunu zaten yapıyoruz (Pyinstaller). Ama bu derlenme Python dilini C diline çevirmek gibi bir şey olmuyor, sadece gerekli kodları ve Python yorumlayıcısının gerekli kısımlarını bir tek uygulamaya topluyor (https://pythonhosted.org/PyInstaller/operating-mode.html)
Mesela Python ile C kodlarını daha rahat bir şekilde birlikte kullanmak için Cython var, onda da zaten C kısmı için statik tipli değişkenler kullanıyoruz. Yine Python dilini başka şekillere çevirmeyi amaçlayan bir sürü proje var ama sonuçta Python, C olamaz.

2 Beğeni

Yani… anlamadım

Teşekkürler @EkremDincel

Dinamik ile static dillerin farkı nedir ve bu sordugum seye hangi farkları engel oluyor
Asıl aormak istediğim yorumlamalı diller ile isletim sistemi yazılmaz diyorlarya neden madem C ,B den turemis ve B de yorumlamali bir dil

Olay B’nin ilk başta yorumlamalı olması değil. B dili geliştirilerek ve derlenme özelliği eklenerek C dili yapılmış, C dili de direkt olarak assembly’e çevrilebiliyor. Önemli olan da bu zaten, assembly’e birebir çevrilebilecek diller gerçek anlamıyla derlenmiş oluyor. Bunun yapılabilmesi için donanımı daha çok dikkate almak gerekiyor ve çoğu bilginin derlenme aşamasında belirli olması gerekiyor (değişkenlerin türleri gibi).

1 Beğeni

Anladım o zaman bu konuyu her actiklarinda
Neden diye sorduklarinda çünkü yorumlamalı bir dil diye cevap vermeleri yanliş degilmi anladigim kadarıyla

1 Beğeni

Elbette tek sebebi bu değil ama bence önemli bir etken. C dili ile Python dili arasında bir sürü fark var, kullanım amaçları da farklı. Bir hatam veya eksiğim varsa @aib düzeltir diye düşünüyorum.

1 Beğeni

Geldim :slight_smile:

Bu yanlis; sadece Turkce Wikipedia’da olan bir sacmalik. Ingilizce Wikipedia sayfasina veya Dennis Ritchie’nin Bell Labs’deki web sitesine baktim ve herhangi bir interpreter’a referans goremedim. “Compiler” lafi surekli geciyor.

Benzetmeyi hangi yonden yaptin? “C gibi” dedigin ne?

Burada “dinamik”, dinamik/statik ikileminden bahsetmek icin kullanilmamis. (“Statik dil” ifadesini hic duymadim, kullanmakta israr eden olursa tanimlamasini rica edecegim.)

Python’da reflection var; yani calisan program bir takim fonksiyonlar cagirarak “bu satir kod hangi class’in icinde” veya “su anda lokal scope’ta tanimli kac tane degisken var” gibi sorular sorabiliyor. Bu sorulara “gercek” cevaplar verebilmek icin calisan bir VM olmasi lazim. VM uzerinde calisan diller tanim geregi yorumlanan diller; istediginizi istediginize derleyin, sonuc degismez.

Ha, bazi kodlari calistirabilmek icin VM’in varligi taklit edilebilir:

def foo():
    x = 42
    print(len(locals())

Buradaki local sayisi belli; len cagrisi 1 sabitiyle degistirilebilir. Ama bu aklima gelen en basit ornek. Modul/import sisteminde ne yapilabilir siz dusunun.

Ikinci bir opsiyon ise dilden VM’in varligini ima eden/mecbur kilan fonksiyonaliteyi cikartmak. O zaman derlenebilen yeni bir dil icat etmis oluruz. Ama bunu niye yapiyoruz? Rust ogrenip kullanmak daha kolay degil mi?

1 Beğeni

Bir dahakine statik/dinamik tipli dil demeye dikkate ederim :slightly_smiling_face:

Evet bende göremedim, ilginç. Niye böyle bir bilgi bulunuyor acaba. B dili derlenen bir dil mi?

Yok, “dinamik dil” dogru ifadeydi; statik/dinamik typing o kadar guclu bir etken degil.

(C++ mesela dinamik tip sistemine sahip derlenen bir dil.)

Evet.

Bu arada derlenen dillerin cogu yorumlanabilir, dilin derlenen/yorumlanan bir dil oldugundan ziyade derleyicisi veya yorumlayicisi olup olmadigini konusmak lazim.

2 Beğeni

Anladım, terimleri biraz yanlış biliyormuşum. Sağ olun.