"piyasada bana asm ile yazılmış kaç tane full program var gösterebilir misin? insanlar neden asm yi tercih etmiyor. Elbette bazı alanlarda asm kullanırsın.atıyorum işletim sistemi yüklü olan bir parititonu nasıl formatlarsın, burada asm devreye girer ve yapacağını yaparsın .Ama asm ile bir muhasebe programı yapamazsın. O kadar esnek bir değil" Assembly bilen birisi sektör programlarıyla , muhasebe paketleriyle zaten ilgilenmez arkadasım, ancak windows apileri ya da ilgili kütüphaneler eklendikten sonra assmebly ile de rahatlıkla yapılabilir, yapılmamasının sebebi yapılmasının çok zor olması değil gereksiz olmasıdır... Esneklik meselesine gelince, bunun anlamını birkere daha araştır, esneklik programcıya verdiği özgürlüktür, assembly en esnek dildir, C de öyledir. ------- "api yazmaktan kastım sıfırdan yazmak değildir elbette, oraya o kadar apiyi eklemek.. bir messagebox için api yi kullanmak (daha doğrusu elle yazmak) diğer dillerde bazı şeyler standartlaşmıştır. Onlar için bazı fonkisyonlar için illa sınıf tanımı,api tanımı v.s. yapman gerek yok.işte bu yüksel seviyenin avantajıdır." Evet visualbasic de bazı apiler kullanım kolaylığı olsun diye dile standart kod olarak eklenmiştir, MessageBoxA apisi bunlardan biridir, ancak bunlarla tek başına ciddi bir program yazılamaz, visual basicle o söylediğin ciddi programları yazmak içinde tıpkı assemly deki gibi tanımlama yapmak zorundasın, en basit apiyi ele alacak olursak, VB de, ****** Public Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long /* en başta bir kere*/ MessageBoxA 0,string,string,0 ****** ////////////////////////// Assembly de, include \masm32\include\user32.inc /* en basta bir kere*/ includelib \masm32\lib\user32.lib /* en basta bir kere*/ invoke MessageBoxA 0,string,string,0 ****** yani api kullandıktan sonra en yüksek seviye dil ile en aşağ seviye dil arasında bile pek kod farkı olmuyor..
Tekrar söylemem gerekirse dil olarak asm ile vb nin zorluk farkı tartışılmaz ama asm bilen bir insan elinde kütüphaneler, (lib) ve baslık dosyaları(inc) olduktan sonra aynı programın alasını yazar... "Haa diyorsan asm ile vb arasında kod uzunluğu arasında fark yok diyorsan. Bir program yazalım orta derecede uzunlukta. socket kullanan bir mesajlaşma programı yada veritabanına kayıt işlemlri yapan, resimli listesi olan v.s. bakalım kim daha çabuk yapabiliyor :)" Buna cevap verdim, kullandığın kütüphaneleri aynen alırsam yazdığım kod seninkinden çok fazla olmaz ama derlendikten sonra daha hızlı çalışır ve boyutu daha küçük olur. Tabi ben C ile bile windows programları yazmaya karşıyım, bir çok programcı da benimle hemfikirdir, assembly bilipte muhasebe programı yazan adam bulamazsın.. "bir test de yapabiliriz. basit bir exe yazın, kodlarına bakın.sonra bir disammbler programıyla yada hiew tarzı bir programla asm kodlarına bakın.Bakın bakalım kaç satır var meydanda :) " Bir C programını dev c++ da derlediğimde 8 kb, aynısını visual c++ da derlediğimde 210 kb oluyor, yani programın uzunluğu derleyiciye bağlıdır,yani bir visual basic programının disassembly edilmiş hali bin satır kod diye , programın aynısı assembly de bin satır kod ile mi yazılacak demektir..? Edit: sayfanın ak musum kusura bakmayın istemeden oldu :) |