Dostlar, bugün yaşadığım şey karşısında gözlerime inanamadım. Bir süredir, sistemdeki belirli bir pencereyi izleyip, o pencerenin boyutunu ve konumunu otomatik olarak ayarlayan küçük bir araç yazmam gerekiyordu. İlk düşüncem "Hadi bir Electron uygulaması yapayım, hem cross-platform olur" oldu. Sonra kendime geldim ve "Neden?" diye sordum. Sadece Windows'ta çalışacak bu araç için neden yüzlerce MB'lık bir Node.js ve Chromium çekeyim ki?
Win32'ye Dönüş Kararı
Kafamdaki ses "C++ ve saf Win32 API" diye bağırıyordu. Yıllar sonra yeniden RegisterClassEx, CreateWindow ve sonsuz MSG döngülerinin dünyasına daldım. Kafayı yiyecektim ama bir yandan da inanılmaz keyif alıyordum. Her şey doğrudan, hiçbir aracı olmadan işliyordu. Pencereyi şöyle oluşturdum:
Boyut Karşılaştırması ve Şok
Win32 versiyonunu derledim. Sonuç? Sadece 48 KB! Evet, yanlış duymadınız, kilobayt. Aynı işlevi, arayüzü biraz daha süslü yaparak Electron ile yazdığım versiyon ise, en ufak haliyle, tüm node_modules ve paketlenmiş haliyle 150 MB civarındaydı. Arada neredeyse 3000 kat gibi komik bir fark var! Şaka gibi ama gerçek.
Düşündüklerim ve Son Söz
Bu deneyim bana şunu bir kez daha hatırlattı: Doğru aracı, doğru iş için kullanmak çok önemli. Eğer yapacağınız iş basit, sistem seviyesinde ve tek platforma özgüyse, modern, "şık" çözümlere koşmadan önce eski dostlara bir bakın. Performans ve kaynak verimliliği konusunda hala rakipsizler.
RAM'i, işlemcisi sınırsız olmayan kullanıcılar için 150 MB'lık bir pencere boyutlandırıcı mı, yoksa 48 KB'lık, anında açılan, sade bir araç mı daha değerli? Cevabı siz verin. Siz de benzer "hafiflik şokları" yaşadınız mı? Yoksa "Developer experience" için 150 MB kabul edilebilir bir bedel mi?
Kafamdaki ses "C++ ve saf Win32 API" diye bağırıyordu. Yıllar sonra yeniden RegisterClassEx, CreateWindow ve sonsuz MSG döngülerinin dünyasına daldım. Kafayı yiyecektim ama bir yandan da inanılmaz keyif alıyordum. Her şey doğrudan, hiçbir aracı olmadan işliyordu. Pencereyi şöyle oluşturdum:
C++:
hwnd = CreateWindowW(L"MyUtilityClass", L"Mini İzleyici", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, 300, 200, nullptr, nullptr, hInstance, nullptr);
Win32 versiyonunu derledim. Sonuç? Sadece 48 KB! Evet, yanlış duymadınız, kilobayt. Aynı işlevi, arayüzü biraz daha süslü yaparak Electron ile yazdığım versiyon ise, en ufak haliyle, tüm node_modules ve paketlenmiş haliyle 150 MB civarındaydı. Arada neredeyse 3000 kat gibi komik bir fark var! Şaka gibi ama gerçek.
Bu deneyim bana şunu bir kez daha hatırlattı: Doğru aracı, doğru iş için kullanmak çok önemli. Eğer yapacağınız iş basit, sistem seviyesinde ve tek platforma özgüyse, modern, "şık" çözümlere koşmadan önce eski dostlara bir bakın. Performans ve kaynak verimliliği konusunda hala rakipsizler.
RAM'i, işlemcisi sınırsız olmayan kullanıcılar için 150 MB'lık bir pencere boyutlandırıcı mı, yoksa 48 KB'lık, anında açılan, sade bir araç mı daha değerli? Cevabı siz verin. Siz de benzer "hafiflik şokları" yaşadınız mı? Yoksa "Developer experience" için 150 MB kabul edilebilir bir bedel mi?