Doğru sen haklısın C bir makine programlama dili değil..
C üzerine 1000 lerce kitap yazan, bu kitapların genelleme olarak başında diğer diller ile C nin karşılaştırmasını yapan ve bu karşılaştırmalarda C nin bir makine programlama dili olduğunu söyleyen sayın yazarlar ve yazarlarımızın olduğu gibi bende haksızım..
ve bu arada ben tartışmıyorum.
Programcılık Hakkında bir makale
20
●2.686
- 26-12-2007, 02:36:00lanetli adlı üyeden alıntı: mesajı görüntüleSöyledigim şeylerin kaynaklarını verdim. (ya da başka birileri ekledi)lanetli adlı üyeden alıntı: mesajı görüntüle
Kaynakları bekliyorum gerçekten.
Yazdıgın neredeyse hiçbir şey dogru degilken c,assembly,makine dili vs ile ilgili yaptıgın degerlendirmeler ve kaynaklar ortada iken hala niye iddia ediyorsun anlamıyorum. Gerekli açıklamaları sebepleri yazdım. Ben dedim oldu diye bir şey de demedim. Kaynakları da gösterdim. Kendi gösterdigin kaynak bile senin dediklerini dogrulamıyordu. Her yazdıgında biraz hayal ürünü var.
Kavramları dogru kullanmanı da öneririm.Makine dili ile makine programlama dili aynı anlamı vermez. Her neyse sen bildigin yoldan devam et. Ben de bildigim yoldan devam edecegim. Bu konuda da daha fazla post atmayacagım.
Not: Daha önceki postlarımda makine yerine makina kullanmışım. Bu bir imla hatasıdır. Edit etmeye üşendim bunun için not düşüyorum. - 26-12-2007, 11:51:33Bu kaynaklardan birkaç tanesini örnek gösterbilirmisiniz ?lanetli adlı üyeden alıntı: mesajı görüntüle
Üst tarafta da çokca yazıldığı gibi C bir makina dili değildir hatta hiç bir dil makina dili değildir. Makina dili dediğimiz sadece 0 ve 1 lerdir. Assembly ise, bu bit dizisinin bire bir karşılıklarının olduğu bir dildir. Yani sürekli rakamlarla kodlamak yerine bunu daha okunulabilir hale getirilmişidir. Diğer programlama dillerinin sınıflandırılmasına girmeyeceğim.
Küçük bir örnek olarak LC3 dediğimiz bilgisayarın atası sayılabilecek 16 bitlik 8 registera sahip basit işlemleri yapaiblen bir devrenin assembly ve bit code karşılıklarını verirsek makine dili ve assembly arasındaki ilişkiyi daha kolay gösterebiliriz.
LC3 Assembly sinde
ADD R0,R1,R2
işlem satırı uygulandığında R2 isimli registerdaki ve R1 isimli registerdaki veri birbiri ile toplanır ve yeniden R0 isimli registera kaydedilir.
Bu işlem makina dilinde şu koda karşılık gelmektedir (tam olarak karşiliklarini hatırlamıyorum ama sistematik olarak doğu)
0001 000 001 0 00 010
(ADD) (R0) (R1) (R2)
Yani assembly ile makine dili birebir karşılıklıdır.
Diğer dillere gelince, herhangi bir dilde yazdığımız kod derleyici tarafından assemly'e çevrilir. Ancak, her derleyici farklı çevrimler yapabilir. Bu yüzden aynı kod parçasini 2 farklı derleyicide derlediğinizde performans farkı ortaya çıkabilir. - 29-12-2007, 00:34:26Eposta Aktivasyonu GerekmekteNeredeyse kendi bildiğimden tereddüt edecektim ya. Arkadaş bir de kendi söylediğine kaynak falan verince iyiden iyiye "şimdiye kadar yanlış mı öğrettiler bize?" diye düşünmeye başlıyodum. Neyse konu o değil. .Net dilleri ve Java için birşeyler ekleyeyim dedim sadece maksat anlatılanlar eksik kalmasın. Şu ana kadar eklemelerde bulunanlara teşekkürler.
.Net compilerları ve Java Compiler ları yazılan kodları Assembly veya makine diline kadar yorumlamazlar. Genel olarak Intermediate Language (.Netteki adı Microsoft Intermediate Language MSIL. Java daki adını bilmiyom) denilen bir seviyede bırakırlar. Bunun farklı nedenleri var.
Microsoft bunu farklı dillerde yazılmış kodları birbiri içinde kullanabilmek için kullanıyor. Mesela C# ile yazılmış bir classı VB içerisine referansını aldıktan sonra sanki VB de yazılmış gibi kullanabiliyorsunuz.
Java ise yazılan tek bir kodu farklı platformlarda çalıştırabilmek için kullanıyor. Windows ortamında yazılmış bir java kodu bu yapı sayesinde linux veya solaris bir ortamda da çalışabiliyor.
Bunun tabii bazı sonuçları da var. Bu dillerde yazılmış programların çalışabilmesi için yine kodların yarım bırakılan yorumlanma işlemlerinin bitirilmesi yani makine diline kadar yorumlanması gerekiyor. Dolayısıyla herhangi bir .Net dilinde yazılmış bir programınızın çalışabilmesi için sisteminizde .Net Frameworkün kurulu olması gerekiyor. Aynı şekilde Java ile yazılmış bir programın çalışması için de Sistemde Java Runtime Environment kurulu olması gerekiyor.
Forumlarda konuları ayrı ayrı takip edememe gibi bi hastalığa müptelayım. Yanlışım varsa zahmet edip PM atıp beni düzeltecek arkadaşa şimdiden teşekkürler. - 29-12-2007, 01:55:38Java ile ilgili hatalı bilgi vermiş oldum ama sonuçta yine dedigim gibi dilin çalışabilmesi için makine diline kadar indirilmesi gerekiyor. Khanja'nın söylediklerine katılıyorum.
Birkaç dil ile bir programı yazmakta mümkün. Mesela C, Pascal ve Assembly dillerini birbiri içinde kullanarak yazdıgım programlar oldu. Bunları yaparken khanja'nın söyledigi gibi gerekli referansları vermek gerekiyor. Ama bunu sadece microsoft yapmıyor bunun için söylemek istedim aslında.
Gerçekten bu işten anlayan insanlarla tartışmak ve doğru bilgiye ulaşmak keyif verici oluyor. - 29-12-2007, 02:47:03Üyeliği durdurulduŞuan okulda C görüyorum oldukça güçlü bir programlama dili ama bir o kadarda karışık.Microsoft office nin C ile yazıldığı söyleniliyor hatta windows işletim sisteminin içinde bile kullanılmış.Ama ben visual basic öğrenmek istiyorum
seneyede o inş
.
Makale içinde teşekkürler üstat - 29-12-2007, 20:59:35Arkadaşında eklediği gibi bazı dillerde olay farklı olabiliyor. Ben yukarıda yazdığım yazıda dillerin sınıflandırmasına girmediğim için bu olaya değinmedim. Yazımın içeriğinde genel olarak compile edilen bütün dillerin makine diline çevrildiğini söylemiştim, arkadaşın da belirttiği gibi bazı diller makine diline çevrilmiyor ancak zaten bu diller compile edilmiyor yourmlanıyor. Yani aslında javanınki bir compiler değil interpretter. Bu yüzden yaptığım genellemenin içinde tutmadım bunları.khanja adlı üyeden alıntı: mesajı görüntüle
- 31-12-2007, 17:43:17Üyeliği durdurulduvisual basic kalmadı artık onun yerine c# yada vb.net öğrenR@p£dooR adlı üyeden alıntı: mesajı görüntüle
- 02-01-2008, 10:31:51Verdiğin bilgilerin çoğu yanlış ve baştan savma.lanetli adlı üyeden alıntı: mesajı görüntüle
C makine dili değildir.C Yüksek Seviye bir dildir.
Bahsettiğiniz compile(derleme) sonrası makine diline dönüştürülme olayı her dilde olur.C/C++ türevi diller kodlanma aşamasında en basit ifade ile insan diline yakınlığından dolayı Yüksek Seviye diller kategorisine girer.
Ayrıca şu 0,1 olayının yanındaki pointer kavramını da hiç anlamış değilim
Sonuçta pointer da bellekdeki veri türlerinin adreslerini tutan bir "variable" diyebiliriz basit olarak.Pointerın binary ifadeyle nasıl bağdaştırdınız anlamak mümkün değil
seneyede o inş
.