Forum: D Programlama Dili RSS
D Runtime nedir?
zafer #1
Üye Tem 2009 tarihinden beri · 700 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: D Runtime nedir?
Merhaba,
D runtime nedir? Ne amaçla kullanılır? Nasıl çalışır ve oluşturduğumuz D programlarının neresinde yer alır?
https://github.com/zafer06 - depo
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4515 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Her dilde bir runtime var. Kodları programın çalışması sırasında destekleyen kodlara deniyor.

D'dekiler şunlar:

  • Program çalıştırılırken verilen parametre değerlerini (arguments) bir araya getirmek

  • Programın kullanacağı ve dil kavramlarıyla ilgili ortamı hazırlamak. Örneğin, çöp toplayıcıyı ilklemek

  • Programın main ile başlayan noktasını parametre değerleri ile çağırmak

  • Dil kurallarını desteklemek. Örneğin, bir diziye ~= işleci uygulandığında dizinin ilklenmiş olup olmadığına bakmak, sonra sonunda yer olup olmadığına bakmak, yokta çöp toplayıcıdan yeni yer ayırmak, elemanları oraya taşımak, vs. (Eşleme tabloları (AA), Unicode desteği, vs.)

  • Programın nasıl sonlandığına göre çıktıya Assert bilgisi veya Exception bilgisi yazmak, çalıştıran ortama olası dönüş değerini döndürmek

Onları kafadan yazdım. Referans olarak, tam proje şurada:

  https://github.com/dlang/druntime

Ali
zafer #3
Üye Tem 2009 tarihinden beri · 700 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Peki, DRuntime bizim D ile oluşturduğumuz çalıştırılabilir dosyaların içine mi yerleşiyor? Runtime kodlarını derleyici otomatik olarak mı ekliyor?
https://github.com/zafer06 - depo
acehreli (Moderatör) #4
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4515 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Evet ve evet. :)

Bu da gömülü sistemlerde D kullanmak isteyen kişiler için program boyutu açısından sorun oluşturuyor. Druntime'ı programdan çıkartmak için farklı yöntemler deneyenler var:

  • Druntime işlevlerini bağlayıcı yoluyla çıkartıyorlar

  • Standart olarak gelen druntime işlevleri yerine aynı isimdeki kendi boş işlevlerini yazıyorlar

Sonuçta kısıtlı da olsa D kullanabiliyorlar. Ben bundan fazla ayrıntısını bilmiyorum ama kısa süre önce Reddit'te bir tanesinin blogu çıkmıştı:

  https://www.reddit.com/r/programming/comments/5ug222/bios_…

EK: Aslında o blogun bir önceki yazısı konuyla daha ilgili. Druntime'ın programdan çıkartılmasını anlatıyor:

  https://theartofmachinery.com/2016/12/18/d_without_runtime…

Ali
Avatar
Salih Dinçer #5
Üye Ock 2012 tarihinden beri · 1908 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Merhaba Ali hocam,

Verdiğin cevaplar gerçekten de bir hoca edasıyla şekillenip bizlere ulaşıyor. Sakın "aman estağfirullah canım" deme burada mütevaziliğe gerek yok, süpersin hocam :)

Dolaylı da olsa bu konuyu şu güncel "Web sayfasından uygulama çalıştırmak" başlığı ile ilgili olduğu için araya iliştirmek istiyorum. D'yi ben de çok sevenler arasındayım ve şu an benim için hobi olsa da bundan para kazanmak isterdim ya da boş iş imkanları açarak kazandırtmak...

Ama şu run-time, bizi kısıtlı sunucu imkanlarıyla zorlayabilir. Yani D'de küçük bir uygulama yazsak bile hafızada bunun çalışır ve etkin şekilde kalabilmesi için fazlan sistem kaynağı demek oluyor. Bir sitenin ziyaretçisi arttıkça bu anlık her kullanıcı için dehşet miktarda hafıza demek.

Belki çözüm PHP ve Perl gibi script dillerinde olduğu gibi çıktı üreten birden fazla JSON veya DUB dosya olması ve bunları yorumlayan tek executable dosya çalışması. Ne dersiniz?

Sevgiler, saygılar...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
acehreli (Moderatör) #6
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4515 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Ama D programı sunucu olarak çalıştığında her kullanıcı için ayrı başlatılmıyor. Her kullanıcı açık porttan giriyor, her kullanıcıya haberleşmeye devam edilecek ayrı bir port veriliyor ve tek sunucu hepsini idare ediyor.

Söylediğin CGI yöntemi için geçerli ama o durumda bile işletim sistemi kullanılan bellek sayfalarını paylaştırıyor. Örneğin, 100 D programı çalışıyor diye druntime bellekte 100 farklı yere kopyalanmıyor. Sözde 100 farklı druntime oluyor çünkü her program kendi druntime'ına sahip olduğunu sanıyor ama aslında yer kaplama açısından tek yer harcanıyor. Bunu söylerken druntime'ın kodlarından bahsediyorum çünkü her programın çöp toplayıcısı kendine ait bellek sayfaları kullanıyor. Ama dediğim gibi, bu CGI yönteminde geçerli. Tek sunucu olduğunda değil.

Öte yandan haklı da olabilirsin. Ben de kendi deneyimim üzerine konuşmuyorum. Başkalarının yaptıklarına bakıyorum.

Ali
Avatar
Salih Dinçer #7
Üye Ock 2012 tarihinden beri · 1908 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Bir VPS'e SSH ile bağlanıp web sunucusunu kapamadan başka porttan deneme yapılabilir sanırım. Sonra diğer sunucu kapanıp yükü D programına vermemiz durumunda bu web sitesini taşır mı denemek lazım.
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-10-23, 15:29:45 (UTC -07:00)