folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder Taban Bağımlı Diller [Döküman]



Taban Bağımlı Diller [Döküman]

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Musket
    Musket's avatar
    Üstün Hizmet Madalyası
    Kayıt Tarihi: 09/Haziran/2002
    Erkek

    İnsanların çılgınlar gibi C# ve Java öğrenme çabasını bugünlerde sanıyorumki hepimiz görüyoruz.

     

    Ama insanların FrameWork ya da JVM kavramlarına aşina olmaması, sadece programları 'çalıştırabilmek için' yapılmış başka programlar olduğunu düşünüyorlar.

    Bu gerçekten bir programcı adayı için çok yanlış bir bakış açısı.

    Birşeye hükmetmek için tanımanız gerekiyor...

     

     

    Öncelikle dillerin dağılımına bakalım:

     

    Makine dili (Binary - Hex - Octal) --> Assembly Dilleri(MixAssembly, x64Assembly vs...) --> Yüksek seviyeli diller

     

    Makinalar hepimizin çocukluğundan beri bildiği gibi 1 ve 0 lardan anlarlar, aslında bunlar 2 lik düzende sayılardır.

     

    ----------------------

    Binary - Hex - Octal hakkında biraz bilgi:

    Binary 2 lik sayı tabanını,

    Octal 8 lik sayı tabanını,

    Hex ise 16'lık sayı tabanını belirtir,

    Günümüzde ise 10 luk sayı tabanını kullanıyoruz.

     

    Yani 1001 değeri,

    1*2^3 + 0*2^2 + 0*2^1 + 1*2^0 yani,

    8 + 1 = 9 değerini verir.

    Biraz düşünürseniz mantığı çözmeniz zor olmayacaktır.

    ---------------------- 

     

    Makinaların sadece 1 ve 0 lardan anladığını düşünürsek, yazdığımız kodların bir işlemden geçmesi gerektiğini açıkça görebiliriz.

     

    Assembly gibi zor ve makine diline yakın bir programlama dili bile,

    ----------------------

    section .text
      global _start

    _start:

     mov edx,len
     mov ecx,msg
     mov ebx,1
     mov eax,4
     int 0x80

     mov eax,1
     int 0x80

    section .data

    msg db 'Hello, world!',0xa
    len equ $ - msg

    ---------------------- 

     

    (Yukardaki kodlar ASM de ekrana 'Hello World!' yazdıran kodlardır)

     

    Bir 'Compile' işleminden geçmek zorundadır, ve sonunda bir .EXE ye dönüşebilir.

    ASM yazmak bile günümüzde 'Ölümcül derecede meşakatli bir iş' olarak tanımlanmaktadır.

    0 ve 1 ler kullanarak program yazmak ise imkansızdır,

    Örnek vermemiz gerekirse,

    0 veya 1 bir BIT ifade eder.

    8 Bit 1 Byte eder.

    Burdan ufak bir hesapla:

    1MB tutan bir programda,  

    8 388 608 tane 1 ve/veya 0 bulunmaktadır. 

     

     

    İnsanlar bu ASM denen akılalmaz derecede karışık ve zorlu işlerden kurtulmak için daha 'yüzeysel' diller yaratmışlardır.

    Duyduğunuz tüm diller aslında yüksek seviyeli dillerdir.

    ASP den PHP ye, C++ dan C ye.
    (Tabiiki kendi aralarında seviye farkları vardır)

    Hepsi İngilizce kelimeleri kendine SYNTAX  olarak edinmiştir, ve yapıları İngilizce dilbilgisi kurallarına benzer.

    ----------------------

    Peki SYNTAX ne demek?

     

    Syntax, sözdizim demektir, daha açıklayıcı olması için,

    C# da  WriteLine yazarken,

    Java da Println 

    C de cout

    C++ da printf yazmaktayız, aslında bunların hepsi yazı yazdırmak için kullanılmaktadır,

    Sadece diller arasındaki kelime farkları,

     

    Nasıl Türkçe de onaylama,

    'Evet' ile yapılıp,

    İngilizce de 'Yes' ile yapılıyorsa bu da böyle bir durumdur.

    ---------------------- 

     

    Programları compile ettikten (Yani derledikten sonra) çalıştırılabilir bir dosya elde edilir,

    Genelde .EXE kullanılır ki bu 'Executible' ın kısaltılmış halidir.

     

    Burda ise karşımıza taşınamama sorunu çıkar,

    Yani X marka işlem için derlediğim bir program, Y marka işlemcide çalışmamaktadır.

     

    Neyse ki bu sorun İşletimSistemi tarafından çözülmüştür,

    Programlar önce işletim sistemi (bundan sonra OS olarak geçecektir) çekirdeğine komutları gönderir,

    OS ise işlemciye işlemciye uygun bir dilde komutları iletir.

     

     

    Ama OS ler arasındaki fark yıllarca ciddi bir sorun olmuştur, hala da olmaktadır.

     

    Linux'un çekirdeği ile, macOS çekirdeği, ya da Windows çekirdekleri çok farklıdır.

    Ve programlar bunların hepsine uygun bir komut gönderemezler,

    Derlenen programlar işletim sistemine özeldir.

     

    Programları farklı farklı derlemek çok büyük sorun olmasa bile, zamanla OS çekirdeklerinin sayısı arttıkça programların çok farklı versiyonları çıkmak zorunda kaldı,

    (Bunun için en güzel örnek ADOBE nin ürün download sitesidir)

    Bu da beraberinde farklı sorunlar getirdi.

    Ayrı ayrı derlenen programlarda ufak değişiklikler yapılması gerekiyordu.

    Linux de kullanacabileceğiniz bir fonksiyonu Windows'da kullanamıyordunuz.

     

    Bu sorunu çözmek için genç beyinler bir çözüm üretti.

     

    Program VirtualMachine denen aslında ortalıkta olmayan bir çekirdeğe gönderecekti kodları.

    Bu çekirdek ise, işletim sistemine komutları gönderecekti.

    Ve bu fikri hayata geçirerek şimdiye kadar yapılmış en yaygın programlama dili olan JAVA'yı geliştirdiler.

    Taşınabilirliği yanında başka avantajları da vardı bu sistemin,

    Çekirdek sayısı 2 ye çıktığı için kontrol ve güvenlik sağlamak daha da kolay hale gelmişti.

    Yani JAVA kullanarak donanımlara zarar vermek, virus yazmak imkansız hale gelmişti.(Nerdeyse)

     

    Bu sistemin tek bir dezavantajı bulunuyordu, bu dezavantaj ise program kodlarının 2 çekirdek tarafından işlenmesiydi.

    Bu ciddi bir performans kaybına sebep oluyordu. 

    Program VM'e, VM çekirdeğe gönderiyordu.

    Bunun için ise farklı bir sistem yaratılıp sadece ihtiyaç duyulan kod parçasının işlenmesi sağlandı.

     

     

    Yani çevirme ve compile işlemleri birleştirilerek mükemmel'e çok yakın bir sistem oluşturuldu.

    Dil kısa sürede tüm dünya da yayıldı.

    JDK'nın OpenSource olması da gelişiminde çok önemli bir rol oynadı.

    Kısa sürede SUN Microsystems dünyanın en büyük firmaları arasına girdi. 

     

     

    İşte tam olarak bundan sonra Microsoft konuya el attı.

    SUN yaptıysa Microsoft da yapabilirdi bunu.

    Microsoft benzer şekilde .NET'i yarattı.

    Aslında .NET Framework, JVM nin bir kopyasından başka bir şey değildir.

     

    JAVA'nın bu akılalmaz başarısı birçok dile ilham kaynağı verdi.

    Ruby gibi benzer diller yaratıldı. 

     

    Ancak arkasında SUN gibi 'güçlü' bir şirket değil, Microsoft gibi 'dünyanın en güçlü şirketi' duruyor.

    Bu da .NET'i tercih haline getiriyor.

     

    Microsoft ticari kaygılar sebebi ile sadece kendi işletim sistemi çekirdeği ile iletişim kuruyor,

    Bu ise .NET'i JAVA'nın arkasına iten TEK sebep.

     

    Bu noktadan sonra tercih tamamen size kalıyor.

     

    Dökümanı yazmaktaki amacım olayın teknik detaylarını bilmeden bodoslama kod yazma alışkanlığından kurtulmanıza hizmet etmektir.

    Umarım yardımcı olabilmişimdir. 

     

    Döküman tamamen Musket tarafından TAHRIBAT.COM için yazılmıştır, tüm hakları saklıdır.  

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Nespace
    Nespace's avatar
    Kayıt Tarihi: 12/Haziran/2007
    Erkek

    Teşekkürler, uğraşmış yazmışsın abicim :)

    Aldım mesajı :P Zaten biliyordum yahu.. 


    Soru:Şu şu adam forumda Nazizm/Faşizm/Satanizm/... propagandası yapıyor banlayalım manyakmıdır nedir? Cevap:Aklı başında adamın burda işi ne zaten, bütün forumu mu silek yani?
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    gkhn
    gkhn's avatar
    Kayıt Tarihi: 08/Haziran/2007
    Erkek
    mesaj atayım da yarın unutmayayım:)

    I am free of all prejudice. I hate everyone equally
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Esquire
    Esquire's avatar
    Kayıt Tarihi: 10/Mart/2004
    Erkek
    anlamadığım bir şeyi anlamamı sağlamıştır. ama başka sorular sormama yol açmıştır. bunlardan bir tanesi "nesne tabanlı programlama nedir?" sorusudur. nesne tabanlı olunca .net veya sdk yı kullanmak zorundamıyız? ama python nın böyle bir şeye ihtiyaçı yok neden?

    boş
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    All hail to Tux
    sandman
    sandman's avatar
    Kayıt Tarihi: 01/Eylül/2005
    Erkek

    Esquire bunu yazdı:
    -----------------------------
    anlamadığım bir şeyi anlamamı sağlamıştır. ama başka sorular sormama yol açmıştır. bunlardan bir tanesi "nesne tabanlı programlama nedir?" sorusudur. nesne tabanlı olunca .net veya sdk yı kullanmak zorundamıyız? ama python nın böyle bir şeye ihtiyaçı yok neden?
    -----------------------------

    Nesne tabanlı programlama (OOP) bunlardan bagımsız bir olaydır bu sentaksla ve yapıyla alakalı bir mantık bütünüdür.Bu mantıkta belli özelliklere dayanan nesneler yaratılır ve işlemlerimizi yada geliştirmelerimizi bu nesneler üzerinden devam ederiz.Nesnelerin birbirinin özelliklerini alabilmesi genişletilebilmesi gibi bir çok fonksiyonel kullanımı vardır malesef bu olayı pratikte görmedikce anlayamazsın.Hani .net yada sdk dedigin olay dille plartforma alakalıdır.Pythonda aslında framework'e ihtiyac duyar aslında ve tamamen nesneye dayalıdır.


    Mühendis kahveyi projeye dönüştüren bir insan evladıdır.
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Esquire
    Esquire's avatar
    Kayıt Tarihi: 10/Mart/2004
    Erkek

    sandman bunu yazdı:
    -----------------------------

    Esquire bunu yazdı:
    -----------------------------
    anlamadığım bir şeyi anlamamı sağlamıştır. ama başka sorular sormama yol açmıştır. bunlardan bir tanesi "nesne tabanlı programlama nedir?" sorusudur. nesne tabanlı olunca .net veya sdk yı kullanmak zorundamıyız? ama python nın böyle bir şeye ihtiyaçı yok neden?
    -----------------------------

    Nesne tabanlı programlama (OOP) bunlardan bagımsız bir olaydır bu sentaksla ve yapıyla alakalı bir mantık bütünüdür.Bu mantıkta belli özelliklere dayanan nesneler yaratılır ve işlemlerimizi yada geliştirmelerimizi bu nesneler üzerinden devam ederiz.Nesnelerin birbirinin özelliklerini alabilmesi genişletilebilmesi gibi bir çok fonksiyonel kullanımı vardır malesef bu olayı pratikte görmedikce anlayamazsın.Hani .net yada sdk dedigin olay dille plartforma alakalıdır.Pythonda aslında framework'e ihtiyac duyar aslında ve tamamen nesneye dayalıdır.


    -----------------------------

    şimdi senin dediğin şeyleri daha iyi anlıyorum. o zamanlar hayalini edemiyordum şimdi javada nesnelerle, fonkisyonlarla uğraşmak gerçekten güzel bir şeymiş. :)


    boş
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Milamber
    Milamber's avatar
    Kayıt Tarihi: 27/Mayıs/2009
    Erkek

    şimdi hocam yukarda çok hoş açıklamış ama bende olayı biraz daha açık hale getirebilmek umuduyla el atmak istiyorum yüksek müsadenizle.

     

    örneğin nesne yönelimli bir programlama dilinde bir nesne oluşturalım bu nesnenin adı "kisi" olsun

    daha sonra bu kisi için özellikler (degiskenler) belirtelim

    kisi nesnesinin değişkenleri

    cinsiyet (boolean) eğer 1'se erkek 0'sa bayan;

    boy (herhangi bir rakamsal değer atanıp ona göre yapılandırılabilir ancak uygun türde veri veri tipi seçilmesi yazılımın hızlılığını artırır)

    ten görünüşü= ayarlananan yapıda uygun renk kodu girilebilir

    göz rengi = yine ilgili renk kodu

    vs

    vs 

    vs

    bu şekilde bir nesneye onlarca farklı değişken atanıp daha sonra bu nesne yada değişken üzerinden işlem yapılabilir. Nesne yönelimli programlamanın avantajı budur kısaca... 

    bu arada yanlış birşey söylersem düzeltiniz lütfen ayrıca bu kadar yazdım ama hocam benimde dil gramerleri konusunda sorunum var kafamda çok şeyi tasarlar ama oturup kod yazamam  bu konuda yardıma ve öneriye ihtiyacım var kod yazamadığım için işsizim :'(((((((((((


    Fırtına koparmaktır işim... Uzaklar Yolcusu
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Mx0TBT
    Mx0TBT's avatar
    Kayıt Tarihi: 13/Haziran/2007
    Erkek

    güzel

     


    Aslında hepimiz eksiğiz biraz Leylası olmayan mecnunlarız Ne sıcacık bir ismail abimiz var. Nede kötü zamanda Yanımızda olan İskender babamız Ne mahellemizi mahalle yapan Erdal bakkalımız ne her kapıyı açan yavuz abimiz nede bize doğru yolu gösteren dedemiz.
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Felony
    Felony's avatar
    Kayıt Tarihi: 21/Ocak/2009
    Erkek

    karar verme aşamasında bu dokuman çok işime yaradı

    teşekkürler


    Güçsüz halklar güçlü liderler çıkarır, güçlü halklarınsa lidere ihtiyacı yoktur. "Viva ZAPATA"
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ltcelik
    ltcelik's avatar
    Kayıt Tarihi: 11/Mayıs/2007
    Erkek
    Bu açıklayıc ve yol gösterici bilgileri verdiğiniz için çok teşekkür ederim kardeşim...

    Din Kitaplarını Okuyup Anlayana Ateist, Okuyup Anlamayanlara "dindar" denir... Nikola TESLA.. ben mi? Ne okurum ne anlarım... Kendi kendime de uyuz oluyorum ama olamıyorum.. "Ama efsaneyi çıkarıp atarsan ve yaptıkları eylemlere bakarsan... ..Jedi'ların mirası başarısızlıktır. İkiyüzlülüktür, kibirdir."
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Fikret
    Fikret's avatar
    Kayıt Tarihi: 01/Ekim/2007
    Erkek
    ancak yeni başlayanlar için java, vb.net veya asp.net gibi platformlar aşırı zor gelebilir. yazılıma ilginiz varsa nerden başlayacağınızı bilmiyorsanız öncelikle genel programlama mantığını öğrenin. fonksiyonlar, sınıflar, değişkenler, sabitler vs. akış diyagramları başlangıç için sorguları, döngüleri vs. kavramanızda bayagı bi yardımcı olur :) ögrendikten sonra ihtiyac bile duymazsınız. bunların hepsini dogru şekilde kullanmayı öğrendikten sonra herhangi bir başlangıç dilini öğrenmeye başlayıp sonrasında kendinizi geliştirebilirsiniz. bu arada döküman için teşekkürler hocam :)

    screw you guys! i"m goin" hoooome!
Toplam Hit: 4179 Toplam Mesaj: 14