Sayfa:  1  2  3 ... 299  300  301  sonraki 

Mesajlarını aradığınız kullanıcı: acehreli (4511)

konu: C++ binary dosya yaratma yazma ve okuma  ; forum:: Diğer Konular
acehreli (Moderatör) #1
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4511 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
cos00kun:
kodlamada bazı kavramlara uzak olsamda

align(1)'ler, üyelerin (ve struct nesnelerinin) 1 bayta hizalanacaklarını belirliyor. Bu arada, kodu hiç denemedim; içinde her tür hata olabilir. :)

D konuşacağız ancak kafanızı çok ağırtırım haberiniz olsun

Burada amaç zaten D konuşmak. :)

Ali
konu: Bir proje geliştirilirken algoritma geliştirme aşaması  ; forum:: Diğer Konular
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4511 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 12946
İbrahim:
ben çok basit şekilde düşündüm

Doğru yapmışsın çünkü doğru çalışan program için en önemli özelliklerden birisi basitliktir.

benim yazdığım kod o kişilerinkinin yanında acemice duruyor gibi geliyor

Öyle de olabilir sana da öyle geliyor olabilir. İkisi de deneyimle ilgili. ;)

bir asal sayı bulan algoritma yapmaya çalıştığımda

Gerçek hayatta çoğu durumda bunların hiçbirisini sen yazmıyorsun çünkü genellikle çok etkin olarak yazılmış algoritmalar var.

siz o örnek için "std::string ile oynuyorlar" diyerek algoritmaları garip bulmuşsunuz

Soruyu görmeyince öyle gelmişti. Böyle bir konu gerçek programda gerekse zaten mevcut bir Saat türü vardır ve ortalıkta string'ler değil, Saat nesneleri dolaşır. Olasılıkla o türün dizgiden okuma ve dizgiye yazma işlevleri vardır. O yüzden benim kafam o tarafa kaymış.

Ali
konu: C++ binary dosya yaratma yazma ve okuma  ; forum:: Diğer Konular
acehreli (Moderatör) #3
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4511 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 12948
wetransfer'e üye olmak istemediğimden Excel dosyasını göremedim ama sanırım daha önce baktığımız .ct dosyası sayfası yeterli olmalı. Tembellik ettim ve VuEntity yapısını tamamlamadım ama gerisi senin için kolay olmalı: 4 bayt için int veya uint, 2 bayt için short veya ushort, 1 bayt için byte veya ubyte, vs.
import std.stdio;
import std.string;
import std.exception;
 
// Bkz: https://pmc.editing.wiki/doku.php?id=falcon4:file_formats:ct_file
 
align(1)
struct VuEntity {
align(1):
    ushort id;
    ushort collisionType;
    float collisionRadius;
    byte[8] classInfo;
    // vs....
    // Bütün türleri yazmak istemediğimden bu türün büyüklüğünü
    // belgede belirtilen 60'a tamamlıyorum
    byte[44] doldurma;
}
 
// Denetleyelim
static assert (VuEntity.sizeof == 60);
 
align(1)
struct Falcon4Entity {
align(1):
    VuEntity vuClassData;
    short[7] visType;
    short vehicleDataIndex;
    byte dataType;
    uint dataPtr;
}
 
// Denetleyelim
static assert ((Falcon4Entity[2]).sizeof == 81 * 2);
 
Falcon4Entity[] oku(string dosyaİsmi) {
    auto dosya = File(dosyaİsmi, "rb");
 
    short adet;
    auto okunanAdet = dosya.rawRead((&adet)[0..1]);
    enforce(okunanAdet.length == 1, "HATA: Adet değerini okuyamadım");
 
    writefln("%s adet nesne okuyorum", adet);
 
    auto entries = new Falcon4Entity[](adet);
    auto okunanEntries = dosya.rawRead(entries);
    enforce(okunanEntries.length == adet,
            format("HATA: %s yerine yalnızca %s nesne okudum", adet, okunanEntries.length));
    return entries;
}
 
int main(string[] args) {
    if (args.length != 2) {
        stderr.writefln("Kullanım: %s <dosya ismi>", args[0]);
        return 1;
    }
 
    Falcon4Entity[] entries = oku(args[1]);
 
    writefln("Elimde %s adet nesne var: %s", entries.length, entries);
 
    return 0;
}
Ancak, daha önce de konuştuğumuz endianness konusu hâlâ geçerli. Bu tür bir okuma ancak okuyan bilgisayar dosyayla uyuştuğunda doğrudur.

Ali
konu: Bir proje geliştirilirken algoritma geliştirme aşaması  ; forum:: Diğer Konular
acehreli (Moderatör) #4
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4511 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 12943
İbrahim:
Bir iş yerinde proje için istenilen algoritma ne kadar sürede hazırlanmalı?

Senin de söylediğin gibi, bazen baştan belli olamaz.

Yani projede sizden bir bölümün algoritmasının hazırlanması ve kodlanması istenildiğinde o algoritmayı ne kadar sürede tamamlamanız gerekiyor?

Deneyimlere bağlı olarak kaba fikir edinilebilir ama en iyisi işe başlayıp görmek. :)

mesela girilen 12li AM/PM saat formatını 24lü saat formatına dönüştürme gibi) için bile uzun uzun, belki de saatlerce düşündüğünüz oluyor mu?

Oluyor ama ben baştan düşünme konusunda çok iyi değilim. Çok şeyi ancak kodlamaya ve diğer programlarla etkileşmeye başladıkça görüyorum. Sanırım aslında çoğu programcı da öyle.

Verdiğin saat örneği fazla küçük ama genelde bir requirements document (beklentiler belgesi; ne başarılması gerekiyor) yazıyoruz. Ondan sonra genellikle onu çözecek olan kişi (örneğin ben) bir design document yazıyor. Bu belgede "şu program diğerine A yanında şimdi bir de B de vermeli", "diğer programa şöyle bir struct ve şöyle bir komut eklemeliyiz" gibi bilgiler oluyor.

Ondan sonra Jira (bir kaç hafta önce Trello bile kullandık) gibi bir programla (siteyle) o tasarımın alt adımlarını listeliyoruz: "Falanca program B bilgisini edinmeli ve A'nın yanına onu da eklemeli", "filanca program B'yi taramalı", "yine filance program B'deki bilgiye göre şu dosyaya yazmalı" gibi asıl programlama adımlarını oluşturuyoruz.

Sonra önümüzdeki haftaya (veya iki haftaya) o adımlardan hangilerini sığdırabileceğimizi düşünüyorsak onları "bu haftaki işler" (örneğin, Sprint 42) bölümüne alıp kodlamaya başlıyoruz. (Jira gibi programlar bu işlemleri kolaylaştırıyorlar.)

İşin kötüsü (aslında normali), kodlama aşamasında tasarımdaki eksiklikleri farkediyoruz: "B'yi edinemiyorum çünkü o diğer programın henüz C'den haberi yok" gibi sorunları çözmek için tasarım ve biraz kodlama değişiyor.

2 - 2,5 saat düşündüm, nasıl yapayım diye. Aslında çok kolay ama aşırı gereksiz kod olmasın diye kısa yolları da düşündüm. Merak ettiğim iş yerlerinde daha zor algoritmalar istenecektir, bunları ne kadar sürede ve ne kadar efor sarfederek geliştiriyorsunuz?

Bu deneyimle de çok ilgili, değil mi? Evet, kafamda bir çok yöntem düşündüğüm oluyor ama bunların çoğunu önceki deneyimlere göre eliyorum.

İş yeri bu algoritma için size süre tanıyor mu?

O cümlene biraz yorum yapmak istiyorum çünkü Türkiye'de daha fazla olduğunu düşündüğüm sağlıksız bir ilişkiyi akla getiriyor. Aslında iş yeri diye bir üst varlık olmamalı. Hatta, iş yeri bile senin için. Var olan şey, bir grup insanın bir sorunu çözme durumunda bulunmaları. Saat düzeninin değiştirilmesi gerekiyor, toplantıda, yemekte, veya çayımızı koyarken bu konuyu konuşuyoruz ve çözüm daha önce kimin yazdığı kodla ilgiliyse o kişiye "İbrahim, abicim o yazdığın koddaki saatlerin 24 saat formatında olması gerekiyormuş" deniyor. Benim etkin olduğunu düşündüğüm ilişki bu. Yoksa bir iş veren robot gibi "bip, bu algoritma 1 saat yazılır, bip" demiyor. :)

Diyelim ki algoritmayı geliştiremedik, sonucu ne olur? İş yeri zarara girer mi?

Çare tükenmez ama geliştirememe olayı belirli bir kişi yüzündense ve tabii daha önce de benzer şeyler yaşanmışsa, o kişinin işine son verilir ve kendisi daha mutlu olacağı başka bir yere gider. İş yeri de zarar girer ama o kadar önemli değil.

Mesela şu 2 koddan hangisi neye göre daha iyidir?:

Normalde aklımıza bin bir kıstas getirerek kodladığımızdan her satırın üzerinden geçemem ama bana ikisi de çok garip geldi çünkü std:string'lerle oynuyorlar. Ben olsam giriş string'ini Saat diye bir struct oluşturmak için kullanır ve o nesneyi 24 saat düzeninde yazdırırdım.

Belki de öyle yapmalarının önemli bir nedeni vardır. O zaman koda bir açıklama satırı eklemeleri iyi olurmuş. Ama doğrusu, ikisi de bana rahatsız edici geldi. :)

Ali
konu: C++ değişken tür ve uzunlukları hakkında  ; forum:: Diğer Konular
acehreli (Moderatör) #5
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4511 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 12940
cos00kun:
D dili [...] hala çok yavaş gelişiyor bildiğim kadarıyla

Yeni kuralların eklenmesi yavaş oluyor. (Alıma gele yeni bir örnek, static foreach.) Ama başka konularda gelişim devam ediyor: standart kütüphane, hata giderme, vs.

hala directX D diline tam olarak entegre olabilmiş değil

O konuda bilgim yok ama örneğin şu proje Mayıs'ta güncellenmiş:

  https://code.dlang.org/packages/directx-d

Ama "olabilmiş" deyince öyle bir amacı varmış da ulaşamıyormuş gibi anlaşılıyor. DirectX bildiğim kadarıyla yalnızca Microsoft ortamı için. Öyle özel bir kütüphaneyi D standart olarak önemsemeyecektir ama üçüncü şahıslar (örneğin, sen ;) ) gerek duyuldukça geliştireceklerdir.

birde benim için Arayüz kısmı

gtkd'den başka web arayüzü olarak da vibe.d gibi kütüphaneler kullanılabilir. Doğrusu, bu tür ihtiyaçların standart kütüphane tarafından giderilmemiş olması güçlük oluşturuyor ama ne yapalım...

D dili son günlerde nerelerde geziyor biraz bahsetseniz çok mutlu olacağım

Fazla değişiklik yok. Çok kullanışlı bir dil olmaya ve kullananlara üstünlük sağlamaya devam ediyor. Bütünüyle D kullanan firmalar yanında bazı işlerini D'de yapanlar da var:

  https://dlang.org/orgs-using-d.html

D'yi bırakan firma duymadım. Örneğin, geçen ayki D meetup'ımızda bizi konuk eden AdRoll yıllardır data scienc konusunda D'den yararlanıyor; kendilerine sorduğumnda D'yi çok severek kullandıklarını söylediler. İşin ilginci, AdRoll'dan ayrılan Benoit Netflix'e geçmiş ve orada da D kullandırmaya başlamış. Geçenlerde de Netflix'in D kullanımı ile ilgili bir blogları yayınlanmıştı.

D dilini kullanmanız sebebiyle geçen süreçte D dili hakkında olumlu ve olumsuz düşüncelerinizi paylaşırsanız buda çok sevindirici olacaktır

Şu andaki işimde günlük olarak Go kullanıyorum ama D kodumuza da biraz karıştığım oluyor. D her düzeyde harika: üst düzeyde kolaylık, gerektiğinde alt düzeyde sihirbazlık, vs. Go ise bir iki hafta küfür ede ede kodladıktan sonra beklentilerini azaltmayı öğrenerek mutlu olduğun bir dil. Yukarıda da değindiğim kütüphane konusunda Go'nun durumu çok daha iyi. Örneğin, herkes net/html pakedini kabul etmiş, gin-gonic gibi bir sürü başka paket onun üzerine kurulmuş, vs. Kısa bir aramadan sonra hangi pakedin herkes tarafından yeğlendiğini anlayıp kullanmaya başlıyorsun.

Ali
konu: C++ değişken tür ve uzunlukları hakkında  ; forum:: Diğer Konular
acehreli (Moderatör) #6
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4511 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 12938
cos00kun:
umarım D sitesinde fazlaca C++ konuşarak bilgi dağınıklığı yaratmıyorumdur..

Hayır ama bazılarımız D'yi daha rahat bulduğumuzdan C++ ile zorlandığına üzülüyoruz. ;)

hitpoints    Signed 32-bit integer    4 olan kısımda 4 bytlık işaretli integer işaret ediliyor bu durumda ben direk int türünü kullansrak dosyadan okuma yapsam bu bir sorun teşkil edecekmidir ?

Pratikte bir şey olmaz ama teoride çok yanlış olur çünkü C ve C++ dilleri int'in kaç bitlik olduğunu belirlemez.

Ali
konu: C++ değişken tür ve uzunlukları hakkında  ; forum:: Diğer Konular
acehreli (Moderatör) #7
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4511 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 12936
C++11'den beri standart olarak uint16_t ve arkadaşları da var:

   http://en.cppreference.com/w/cpp/types/integer

Ali
konu: C++ binary dosya yaratma yazma ve okuma  ; forum:: Diğer Konular
acehreli (Moderatör) #8
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4511 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 12929
Birinci sorunun hemen hemen her zaman için tek yanıtı var:

  • Veriyi temsil eden bir kullanıcı türü olsun

  • Dosyadaki bilgiyi okuyan ve bu türden nesnelere dönüştüren bir işlev olsun (Tabii, bir de yazdıran işlev olduğunu varsayıyoruz)

  • O işlevi 120 kere çağıralım ve oluşan elemanları teker teker ekrana yazdıralım (veya bir diziye ekleyelim, veya başka biçimde kullanalım, vs.)

Ek olarak, günümüzde dosyalara artık binary olarak yazmıyoruz çünkü bunun yarar sağladığı durumlarla karşılaşmıyoruz: Dosya işlemleri çok yavaş olduğundan binary okumayla düz metin okuma arasındaki zaman farkı önemli olmuyor ve bilgisayarlar çok hızlı olduklarından okunan verinin düz metinden yapı nesnesine dönüştürülmesi işlemi fazla zaman almıyor. Öyle olmasa bile, bu konudaki yavaşlıklar çoğu uygulamada önemli olmuyor. Ama tabii binary'den gerçekten yararlanan programlar da var.

Binary'nin gerçekten gerektiğini varsaydığımızda bir kaç tane önemli nokta var:

  • Dosyayı yazdığın ve okuduğun ortamlarda veriler aynı büyüklükte mi? Örneğin, int 2, 4, 8, veya başka sayıda bayt mı?

  • Yazan tarafla okuyan taraf doldurma (padding) baytları konusunda aynı fikirdeler mi? Örneğin, gösterdiğin yapıda char[5] geçiyor. Veri hızlı işlensin diye hizalama (alignment) uygulanmışsa sonraki dört int'ten önce ne kadar doldurma baytı kullanılmış?

  • İki taraf bayt sıraları (endianness) konusunda aynı fikirdeler mi? Örneğin, dosyadaki int'i gösteren 0x01, 0x02, 0x03, ve 0x04 baytları hangi değeri ifade ediyor? Yaygın olan 16,909,060 ve 67,305,985 değerlerinden hangisi? Yoksa bambaşka bir bayt sıralamasından mı bahsediyoruz?

  • Dinamik veri türleri nasıl yazılmışlar? Örneğin, veride string geçiyor. C++ ve D gibi dillerden bildiğimiz gibi, bu türler elemanlarını bir göstergenin gösterdiği yerde tutarlar. (Veya hatta small string optimization uygulamış olabilirler ve kısa dizgilerde gösterge yoktur.) O göstergenin gösterdiği ve olasılıkla bilinmeyen sayıda olan elemanlar bellekten okunup dosyanın neresine yazılmışlar? (Bu soruyu cevapladığımızda artık benim anladığım binary olmaktan çıkıyor ve jpg filan gibi aslında binary olan ama belirli bir düzene uyan dosya haline geliyor.)

Sonuncusuna gerek olmadığını kabul ettiğimizde diğer sorulardan kurtulmanın en kolayı, programı aynı derleyiciyle derleyip aynı (veya aynı çeşit) bilgisayarda çalıştırmaktır.

Ali
konu: Dosya işlemleri hakkında bir soru  ; forum:: Diğer Konular
acehreli (Moderatör) #9
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4511 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 12930
Evet ama araya eklemenin mümkün olmadığı bir metin düzenleyici olabilir mi? (fseek, belirli bir noktaya gider ve oradaki bilginin üstüne yazar; araya ekleyemez.)

Bu sorunu çözmek için kendi veri yapılarını tasarlamak zorundasın: bütün kullanıcılar aynı dosyada çalıştıkları izlenimini edinecekler ama arkada bir sunucu onların hareketlerinin etkilerini bellekte yaratacak, dosyayı belirli aralıklarla kaydedecek ama kullanıcılar hiçbir an asıl dosyanın üstünde çalışmayacaklar, vs.

Ali
konu: C++ binary dosya yaratma yazma ve okuma  ; forum:: Diğer Konular
acehreli (Moderatör) #10
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4511 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 12924
cos00kun:
yukardaki sıralı dosyalarda olduğu gibi kolayca veri yazma yada okumalar yapılmıyorda

Anlaşmaya bağlı bir konu... Asıl anlamının çıktıya bilgi göndermeyle en ufak bir ilgisi olmayan << işlecinin bu amaç için yüklenmiş olması, "bu değişkeni dizgiye dönüştür" anlamını taşır. O yüzden, örneğin dizi gibi bir değişkenin elemanlarının köşeli parantezler içinde yazılmasına kimse karşı çıkmaz. Programcı nasıl uygun görmüşse öyle kodlamıştır...

Binary'de ise böyle dönüşümlerle işimiz yok. :) (Örneğin, binary olmadığında '\n' karakteri de platforma uygun olarak dönüştürelibilir.)

dosyam.read(reinterpret_cast <char*>(tampon), max * sizeof(int));

Anlaşılan, tampon'un türü int*. max da 42 ise, dosyadan 42 adet int okunacak. (32 bitlik ortamda 42*4.) Tahminen, read'in ilk parametresinin türü de char*. O yüzden, derleyici o parametre yerine int* gönderilmesine izin vermiyor. Buradaki reinterpret_cast derleyiciye "sevgili derleyici, tampon'un int* olduğunu ve genelde char*'a uyumlu olmadığını biliyorum; ama sen bana güven ve tampon'u bir char* gibi kullanmama izin ver" demek anlamına geliyor.

reinterpret_cast'in güvensiz olmasının nedeni, derleyicinin bu konudan elini çekmesi ve programcıya güvenmesidir. Eğer dosyadaki baytlar aslında int değilseler, program yanlış veriyi int olarak kullanacak demektir. Güvensiz olan bu: derleyicinin olayı programcıya bırakmış olması...

read gibi işlevlerin char* kullanmalarının nedeni, alt düzey işlevler olmaları. Binary dosya düzeyinde bayt'tan başka bir şey bilmiyoruz. Öte yandan, XML, JSON ve başka düzenlerde olsa, verinin tam türünü de dosyada tutmuş olabiliriz ve tam türüne uygun olarak okuyabiliriz.

Ali
konu: Dosya işlemleri hakkında bir soru  ; forum:: Diğer Konular
acehreli (Moderatör) #11
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4511 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 12920
İşletim sisteminin sunduğu dosya kavramından bahsettiğimizi varsayarak...

İki kullanıcıyla hayır çünkü yanılmıyorsam belirli bir anda tek kullanıcı yazma hakkıyla açabilir.

Tek kullanıcıyla hem evet hem hayır: Evet çünkü fseek() gibi işlevlerle istenen noktaya gidip oradaki baytların üzerine yazılabilir. Hayır çünkü metin dosyasının belirli yerine ekleme veya çıkartma mümkün değil, ancak oradaki baytların üzerine yazılabilir.

Ama Google Docs vs. gibi araçlarla mümkün olduğunu biliyoruz. Bu konu Reddit'te de bir kaç gün önce gündemdeydi:

  https://www.reddit.com/r/programming/comments/74vs5u/a_sim…

Tesadüf, dün bir tane de D forumunda çıktı:

  https://forum.dlang.org/post/03dbfb6660ef4ed5a90c5af0674ab…

Ali
konu: DMD Nedir?  ; forum:: Diğer Konular
acehreli (Moderatör) #12
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4511 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 12917
Aslında yorumlayıcı kavramını karıştırmaya gerek olduğunu düşünmüyorum. D derlemeli bir dildir ve dmd bir D derleyicisidir.

Yorumlayıcı ve derleyiciyi birlikte düşündüğümde şöyle açıklayabilirim: Her ikisi de kaynak kodu okuyan, amacını anlayan, ve o amaca ulaşan işlemleri işleten programdır.

Ali
konu: DMD Nedir?  ; forum:: Diğer Konular
acehreli (Moderatör) #13
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4511 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 12912
Abdullah:
Yani her yorumlayıcı/derleyici önce yorumlayıp sonra derliyor, ama bunu yaptıkları zaman farklı.

Aslında yorumlama ve derleme kavramları yine de farklı: Yorumlayıcı a+b gibi bir kod gördüğünde

  • Metinde "a" diye bir şey geçti. Acaba böyle bir değişken biliyor muyum?

  • Eğer varsa, (örneğin bir eşleme tablosunda) bakayım değeri neymiş. (Örneğin, bundan Değer türünde gibi bir değişken üretiyor)

  • (Aynısını b için yapıyor)

  • Şimdi "+" adlı bir işlev biliyor muyum?

  • Varsa, iki Değer değişkenini ona gönderiyor.

  • Toplama işlemi Değer'lerin türlerine teker teker bakarak int olduklarını görünce örneğin "42" ve "10" gibi dizgiyi int'e dönüştürüyor ve iki int toplama işlemini çağırıyor

Derleyicinin oluşturduğu kodun kafasında çalışma zamanında en ufak bir soru yok. Hatta "a" ve "b" gibi değişken bile yok. Derlenmiş olan kod şunun gibi bir şey söylüyor:

  • TOPLA(yığıtın_başı - 8, yığıtın_başı - 4)

(TOPLA, CPU'nun bir komutu olsun, yığıtın_başı da yığıtın başını gösteren yazmaç (register).) Yani, derleyici programcının "a" ve "b" dediği değişkenleri örneğin "yığıtın şurasındaki 4 bayt" ve "yığıtın orasındaki 4 bayt" diye kurguluyor.

Dolayısıyla, yorumlayıcı ve derleyicinin işledikleri zamanların farklı olması dışında uyguladıkları işlemler de oldukça farklı.

(Not: Yorumlayıcı daha akıllı davranıp benim gösterdiğim soruların bazılarını sonradan sormaya gerek olmasın diye bir şekilde saklayabilir. Buna çalışma zamanında kendisi karar verebileceği gibi, Python vs.'den bildiğimiz gibi önceden yapabilir.)

Ali
konu: GitHub Varolan Respository (Depo) İçine Başka Proje Atmak  ; forum:: Diğer Konular
acehreli (Moderatör) #14
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4511 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 12913
Sanırım git submodule komutu kullanılacak.

Yoksa, A projesinin belirli bir andaki halini kopyalayıp alt klasörler olarak ekleyebilirsin ama tabii sonradan A'ya yapılan geliştirmelerden haberin olmaz.

Ali
konu: DMD Nedir?  ; forum:: Diğer Konular
acehreli (Moderatör) #15
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4511 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 12910
Açıklama doğru ama daha önce makine dili ve derleme kavramları anlatılmadıysa bu cümleler yeterli olmaz. Okumuş olduğunu biliyorum ama ben derleme kavramını şöyle anlatmıştım:

  http://ddili.org/ders/d/derleyici.html

Yabancı üniversitedeki bir hoca derlemeli ve yorumlamalı dil karşılaştırmamda eksiklikler ve yanlışlıklar göstermişti ve sonunda yukarıdaki haline getirmiştik. :)

Ali
Özel Karakterler:
Sayfa:  1  2  3 ... 299  300  301  sonraki 
Özel sorgulamalar

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-21, 03:22:19 (UTC -07:00)