/i/Yazılım

Umuyoruz ki geleceğin yazılımcıları bu altinciden çıkacak!
    başlık yok! burası bom boş!
  1. 1.
    +24 -4
    Başlık için:
    (bkz: java şişirilmiş bir balondur)

    Java ve C#'a saçma demene hiç girmiyorum, umarım şakadır bu söylediğin. Windows'un boyutu ile alakalı söylediklerine gelirsek yuh amk yuh.

    x86 assembly, C, C++ biliyorum ve kendi işletim sistemimi geliştiriyorum baştan belirteyim. Hani kafadan uydurmuyorum bu söylediklerimi. Bu kadar büyük bir fark olamaz, mümkün değil.

    Öncelikle Windows büyük oranda assembly, C ve C++ ile yazılmış bir işletim sistemi. Windows'un boyutunun hatırı sayılır bir kısmının kaynak dosyalarına ait olduğunu da belirteyim şimdiden (fotoğraflar, sesler, simgeler, yazı tipleri, diller vs.)

    Dahası Windows monolitik bir çekirdek modeline sahip değil hibrit çekirdek modeline sahip, yani çekirdek, sürücüler servisler vs. çekirdeğin içinde değil, kısmen ayrı halde.

    Yani Windows 1 milyar satır koda sahip tek bir parçadan oluşmuyor, muhtemelen 5000-10000 satırlık çok daha küçük parçalardan oluşuyor.

    Java ve C# gibi dillerin aksine C ve C++ bytecode interpreted dil değil, yani yazılan kodlar doğrudan makine diline dönüştürülüyor.

    C Calling Convention'a bakacak olursak her bir fonksiyon çağırısı için pek de büyük bir overhead yok.

    https://hastebin.com/upizomewep.cpp 'deki

    fonksiyon derleyici tarafından basitçe şu hale getiriliyor:
    https://hastebin.com/xugosatuci.pl

    Bunu bir yerden çağırmak istediğinde de şu oluyor:
    https://hastebin.com/ogirukudat.pl

    Stack frame kurulumu ve temizlenmesi hariç neredeyse hiç overhead yok. Fonksiyon büyüdükçe bu kısmen artsa bile fark asla bahsettiğin kadar büyük olamaz. Windows'un kodlarının %95'ine çöp demek, çekirdeğe ait ek modüller ve sürücülerle birlikte tüm kullanıcı deneyimini (GUI, efektler, simgeler, sesler vs.) ve user-space programları, kütüphaneleri çöpe atmak demektir.

    Windows çekirdeğinin (fazlasıyla) ufaltılmış başlatılabilir versiyonu bile (boot.img'den bahsediyorum) 200-300 MiB iken Windows'un 50 MiB olmasını beklemek yanlış olur.

    işletim sistemime gelecek olursak boyutu 40-50 MiB civarında, tam da Windows %100 assembly ile yazılırsa olmasını beklediğin boyut yani. Peki benim işletim sistemimin nesi var biliyor musun? Neredeyse hiçbir şeyi.

    Çekirdeğim 32 bitlik flat-memory-model higher half ve hibrit bir çekirdek. Sıfırdan büyük oranda assembly ve biraz da C ile yazıyorum. Bootloader yazmakla uğraşmadım şimdilik GRUB yetiyor.

    Çekirdeğim basit bir bellek yöneticisine, preemptive çoklu görev desteğine, APIC'den IRQ desteğine (PIC'ten APIC'e geçmek tam bir işkenceydi ama değdi), ACPI desteğine ve basit bir AML interpreter'ına, PCI aygıt desteğine, V8086 görev desteğine ve kesme tablosu 74h üzerinden sistem çağrı arayüzüne sahip.

    Çekirdekten ayrı olarak çalışan yazdığım modüller ise şimdilik basit bir ext2 ve fat32 sürücüsü, oldukça yavaş bir IDE HDD/ODD sürücüsü, AC97 ses sürücüsü, seri port sürücüsü ve V8086 görevleri kullanarak çalışan bir VESA grafik sürücüsü. Donanım hızlandırma sürücüsü falan yok bu arada SSE olmasa ekran yenileme 10 fps hızında ancak olur.

    Üstelik daha işletim sistemime ne bir CLI ne de bir GUI yazabildim, sistemimi seri porttan debug ediyorum.

    User-space olarak da Newlib'i port ettim. Newlib'i port etmeyi başarınca işlerim çok hızlandı. Newlib'den sonra Binutils'i ve GCC'yi kütüphane olarak da libjpeg'i, libpng'yi, freeType'ı ve cairo'yu port ettim. Bash veya Dash'i de port edip güzel bir CLI'ye sahip olma gibi bir planım da var.

    50 MiB'lık çoğunlukla assembly ile yazdığım, gereğinden fazla kod kullanmaya çalıştığım işletim sistemim bu. Üstelik üstte bahsettiğim user-space programları ve kütüphaneleri işletim sistemimin boyutuna dahil etmiyorum, onlar 400 MiB civarında tutuyor.

    Eğer işletim sistemime ciddi ve güzel bir GUI eklemeye kalkarsam boyutu rahat 80 MiB'a çıkar. işletim sistemimi tek başıma 2-3 ayda ancak bu hale getirebildim, yani basit bir iş değil bu.

    Kısacası Microsoft tüm sistemi assembly ile yazıp zaman kaybetmeyecektir. Ha yazarsa ne mi olur, boyutu 3 GiB'tan biraz da zorlamayla 2 GiB'a çekilebilir, daha fazlası olmaz.

    Hesabını baştan yap panpa.
    Tümünü Göster
    ···
  2. 2.
    +7
    Aç kapa düzelir
    ···
  3. 3.
    +1
    Linux varken neyin kafası bu?Linux C ile yazılmış bir işletim sistemi ve gayet hızlı stabil. Eğer terminal kullanmayı biliyorsan 2gb ram ile seni yıllar boyu zütürebilir. Windows gibi sistemin size dayattığı sistemleri geçin artık para tuzağı.
    ···
    1. 1.
      +1
      Katılıyorum panpa. 3 yıldır Linux kullanıyorum kafam rahat. Windows'tan daha fazla özgürlüğe sahip olmak, yazılımları kafama göre özelleştirip tekrar derleyebilmek çok güzel.
      ···
  4. 4.
    +1
    jre olmadan bir gib yapamazsın özet için teşekkürü sonra alırım delühanlu
    ···
    1. 1.
      0
      nick entry ahahaha
      ···
      1. 1.
        0
        linux çekirdeğini özelleştiriyosun galba? 0dan derken
        ···
      2. 2.
        0
        yok panpa sıfırdan kendi çekirdeğimi yazıyorum
        ···
  5. 5.
    0
    Ustam öncelikle diline/eline sağlık çok güzel anlatmışsın. işin teorisini araştırıp öğrenen veya sağdan soldan duyan arkadaş olayı kavramadan gelişi güzel konu açıp, bilinçsizce eleştirmiş. işin teorisi kadar pratiğini yapmış biri olarak kişisel deneyimini ve tecrübeni bize paylaşmışsın, sağolasın.
    ···
  6. 6.
    0
    java adamdır laf edeni giberim
    https://www.motorcular.co...0-350_1946_2145696376.jpg şu resme bir bakın amk
    ···
  7. 7.
    0
    Tamda ona itafen yazacaktım sen yazmışsın adam Java C# kullanmayı bilmiyor heralde sistem kaynakları kullanılamıyor diyor düzgün bir Java kodu ile sistemi sömürürsün bile aynı şekilde C#, (!) başka hangi kodlama dilinde acaba bu kadar kaliteli arayüz kodlanabiliyor acaba birde yazmış çocuklar daha kolay kod yazabilsin diye diyor adam kaliteli C# kodu görmemiş övünmüyorum ama sayfalarca yazdığım kodlar var bir çaylağın yazabilmesini bırak anlayamaz bile. C# ve Java kadar güçlü diller çok bulunmuyor. Java kadar esnek platform desteği olan, C# kadar güzel arayüz tasarlanabilen bir dil tanımıyorum.
    ···
  8. 8.
    0
    yaw hacı adam javaya laf etmiş doğru demiş sen toz ve gaz bulutundan giriş laf salatası yapmışsın. Ulan Javanın bellek yönetiminin gibikliği yüzünden Scalada uğraştığımız saçmalığın haddi hesabı yok be. Hadoop ona keza. Lan şansımıza Go lang çıktı şimdi millet ona dönmeye başladı yavaş yavaş kurtulacaz bu java illetinden. Tiksindirdi beni yazılımdan bu java saçmalığı ya.
    ···
  9. 9.
    0
    bunu insan okuyacak amk
    ···
  10. 10.
    0
    Biri gelince seninki kendiliğinden kapanacak mı onu söyle panpa sen
    ···
  11. 11.
    0
    Ama kardeşim bunu java dönemiyle ne alakası var?
    ···
  12. 12.
    0
    biz bu sene gördük söylediklerini ve büyük oranda haklısın. özetle c/ c++ / assembly çok hızlı çalışan makine diline çok yakın güzel dillerdir.
    üzgünüm hepsini okuyamadım bi ara bakıcam söz.
    ···
  13. 13.
    0
    onu diyen senin taşşağını yesin
    ···
  14. 14.
    0
    Hocam ben bilmiyorum bunları yaparcacikfalan ne yav
    ···
  15. 15.
    0
    okumadan sugu attim
    ···
  16. 16.
    +1 -1
    ÇOK YALNIZIM ULAN ACAYIP BIR SEKILDE YALNIZIM LÜTFEN YARDiM EDIN (bkz: çok yalnızım çok sanki)
    ···
  17. 17.
    0
    Belli ki dolmuşsun reis bi sigara yak sen bu sinir kolay geçmez
    ···
  18. 18.
    0
    kendi işletim sistemi geliştiriyordan sonrasını okumadım...
    explorer.exe 35k falan windows 10da
    ···
  19. 19.
    -1
    bu adam ne diyosa doğrudur
    ···