Derlenen diller ve yorumlanan diller

Hrkese merhaba, benim 2 tane sorum olacak, bugün aklıma takıldı, teorik bir soru, yorumlanan diller neden az sistem gereksinimi isterken, derlene diller fazla fazla sistem istiyor?

1 Beğeni

Yorumlama derlemeye göre daha az bellek kullanır. Yorumlayıcıda ara nesne kodu oluşturulmaz bu yüzden daha az belleğe ihtiyaç duyar. Ama çalışma sırasında yorumlayıcının tüm alt programları bellekte tutuluyorsa yorumlayıcı bellek israfına neden olabilir.

2 Beğeni

Kimin, hangi olcumune gore ve hangi gereksinimler?

Teorik olarak cevaplarsak: Yorumlanan diller, calismasi gereken programin kodundan daha fazlasini (yorumlayici) hafizada tutmak zorunda oldugu icin daha fazla hafiza istiyor. Yorumlanan diller, calismakta olan programi analiz edip hafiza kullanimini optimize edebildikleri icin daha az hafiza istiyor.

5 Beğeni

benim derdim şu, mesela ben yorumlanan dilleri 4 gb ram takılı olan bilgisayarda rahat rahat çalıştırırken mesela bir c++'ı neden 16 gb’lık ram takılı bilgisayarda çalıştırmak zorundayım. hatta bir python’la yazılmış programı 512 mb’lık ram takılı bilgisayarda çalıtırmıştım.

1 Beğeni

Merhaba, bence burada yorumlanan dilin/derlenen dilin avantajları dezavantajlarından ziyade yazdığınız kodun çalışabilirliği, efektifliği üzerine konuşmak gerekiyor. Bence burada hepimiz XY problemini yaşıyoruz.

Mesela ben de 8gb RAM’de cpp gibi dillerle gayet rahat çalışıyorum. 2gb RAM’de de çalıştım bu dillerle. Pythonla da çalıştım.

Yazılan algoritmaya bağlı olarak işler tersine bile dönebilir.

Bana kalırsa eğer, eğer bir sorunun çözümünü bulmak adına alakalı olduğunu düşündüğünüz başka bir soruyu soruyorsanız, asıl soruyu sormak, hepimiz için vakit enerji tasarrufu sağlar, sorunu daha çabuk çözmüş oluruz.

Ama eğer asıl soru bu ise, bu konu hakkında pek bilgili olduğum söylenemez.

1 Beğeni

Böyle bir zorunluluk yoktur. Yazdığın programa göre bellek ihtiyacı değişebilir. Yorumlayı ve derleyici üzerinden aynı programı çalıştırdıysan ve farklı bellek miktarına ihtiyacı olduğunu saptadıysan nedeni muhtemelen budur.

Tabiki farklı nedeni de olabilir. Her iki dilde de aynı işlevi gören yazdığın programı bizimle paylaşırsan kesin nedenini açıklayabiliriz.

1 Beğeni

Boyle bir zorunluluk yok. 16 GB’lik bilgisayarlarin birkac senedir ortalikta olduklarini ve C++'in 37 yasinda bir dil oldugunu da goz onunde bulundurabiliriz.

16 kb’lik mikroislemcide calisan (micro)python programlari da var :slight_smile:

Buradan programlarin gereksinimleri icin onemli olan faktorun hangi dilde yazildiklarindan ziyade ne yaptiklari, ne kadar hafiza (veya baska kaynak) istedikleri oldugunu cikartabiliriz.

32 terabyte hafiza isteyen C kodu:

malloc(0x200000000000ull); // size_t icin `ull` kullanmak ne kadar dogru bilmiyorum
6 Beğeni

Çok ilginç, kod ne yapıyor ki 32 tb hafıza lazım ?

1 Beğeni

malloc, belirlenen eleman sayısı kadar bellekte yer ayırır. Tip olarak ull vererek 32 terabayt kadar bellek istenmesi sağlanır.

2 Beğeni

Anladım teşekkürler. Yani ull 32 terabayt yer ayırıyor. Peki 0x200000000000 ne oluyor ?

1 Beğeni

0x200000000000 değeri tam sayı olarak 35184372088832 sayısını ifade eder.
35184372088832 / 1024 / 1024 / 1024 / 1024 = 32.0
Yani 35184372088832 bytes → 32 terrabytes

5 Beğeni