Çarşamba, Ağustos 31, 2005

Programcılık Nereye Gidiyor ?

Bazen düşünüyorum programcılık nereye gidiyor diye....


Linux-programlama listesinde bir süredir devam eden bir tartışma var. Bir arkadaşımız genetik ile ilgili bir proje için 2 bitlik bir veri tipni nasıl oluşturacağını ve bu işin kazançlı olup oladığını soruyordu. Tüm tartışmaya linux-programlama listesinden erişebilirsiniz. Ancak benim aklıma takılan serdar hocanın yazdığı bir iletiydi


Alıntı:
Selamlar...


İki bitlik değişken olur. Ama bu yanındaki diğer bitlerde doluysa bir anlam ifade eder. Bkz: struct, ":" vs.


10^7 ne eder 10 milyon mu? 2 bit olsa her değer ne olur ? 20 Milyon bit. Ne eder, kabaca 2.5 MB filan. Her biri 8 bit olsa, 10 MB eder.


Genel olarak çoğu mimaride "int" 32 bit uzunlukta. Bu da bir int içine 16 tane 2 bit saklayabileceğiniz anlamına gelir. Fakat bu bitleri buradan çıkarmak ve yerleştirmek için çok çok daha fazla zaman harcarsınız. Kabaca, bu bitleri karşılaştırmak 5 saat çevrimi sürse, bitleri çıkarmak 30 saat çevrimi, koymak 30 saat çevrimi filan eder. Toplam 65 saat çevrimi. Bu da 10 kat daha yavaş çalışacaksınız demek olur.


2 yerine 8 bit kullanmakta benzer bir yavaşlığa sebep olur. Genel kural olarak en hızlı işlenen değişkenler "int" olanlardır.


Görüldüğü üzere sorun optimizasyon sorunu. Seçim yapmanız lazım: "Optimize for size" yada "Optimize for speed" arasında. 256 MB RAM olan bir sisteme dudak büküldüğünü düşünürsek, bir kaç MB için bir sürü takla atmaya ihtiyaç olmaz sanıyorum. O kodu yazarken kullanacağınız elektrik/su parasına sisteme biraz daha RAM
alabilirsiniz nerdeyse.


Saygı ve sevgiler..



Yıl içinde java ile ilgili bir sunumda java için yaklaşık şöyle birşey deniyordu


Alıntı:
JIT


Java ilk çıktığında bytecode işletme hızı çok iyi değildi. yerine göre sistemin öz yazılımlarından 5-10 kat yavaş çalışıyordu. Bu nedenle bazı yazılım geliştirme şirketleri JIT yanı "Just-in-time compile", "anında derleme" araçları üretmeye başladılar. Yapılan şey byte kodu sanal makinenin kurulu olduğu gerçek sistemin diline anında derleme yaparak dönüştürmesiydi. Bu sayede performansta ciddi artışlar sağlandı. Ama 2000 yılından sonra HotSpot teknolojisinin gelişmesi ile JIT'in işlevi VM'içinde yer almaya başlamış, işlemci hızı ve bellek miktarının dramatik biçimde artması ile dış JIT yazılımları popülerliğini kaybetmiştir. Bugün halen bir kaç ürün pazarda bulunsa da genellikle bu yöndeki ihtiyaç yok olmuş gibi gözükmektedir.


Kaynak vikipedi



Yani sonuç olarak gelişen teknolojinin işçilerinin yerini alan robotları üretmesi gibi gelişen teknoloji ve görsel programlama araçları da biz programcıların (en azından kod optimizasyonu vs gibi konulara değer ve önem verenlerin) yerinimi alacak.


Şimdilik Büyük ölçekli projelerde kod optimizasyonu önemli olsada sıradan günlük kullanım için olan ve pc ler için yazılan programlarda önemini kaybetmekte gibi geliyor bana.


Teknolojinin bu hızda gelişimyle yakın gelecekte sunucular üzerinde yazılacak uygulamalar içinde önemini kaybedecek ve bizde hala burda lisp şöyle hızlı Ruby de şöyle kolay kod yazılıyor üstelik java dan da % bilmem kaç hızlı oluyor diye konuştuğumuzla kalacağız.


Bu gün sürekle bırak programcılığının yaygınlaşmasıyla yazdığı programın kodunun tamamını görmeyen (zaten görsede anlamayan) programcı sayısı o kadar fazla ki.


Üstelik bu adamlar bayağı ticari işlerde yapıyorlar. Mesela benim yarı-zamanlı çalıştığım kuruma gelip bizim sektör için son derece komik br fiyata komple çözüm öneren ve bayağı ciddi referanslar veren bir yazılım firması ile ilgili şefe sorduğum soru halen aklımdadır.


Ben : "Ne ile yazmışlar programı ? (Bahsettiğimiz program 300+ bilgisayar ve 100 bin doların üzerinde sunucularla çalışan bir kuruma kurulacak) "


Şef: "Visual Basic"


Ben : ..... ?!&%

3 yorum:

Murat ÇELIKER dedi ki...

Selamlar,

Sayfanıza bugün rastgeldim ve bu makale oldukça ilgimi çekti. Şu anda kendimde bir programcı olarak bir soru sormak istiyorum: büyük bir projenin illaki c , c++ , java gibi büyük diller ile mi yapılması lazım? Visual basic ya da daha başka bir dil, büyük bazlı projelerde kullanılaz mı? Bence pek ala kullanılabilir, önemli olan dil değil dilin yeterliliğidir. Bu tasarının altından kalkabilmişler ise (ki tasarıyı sizin sözünüzden dolayı büyük algıladım ve ki bu yazılım kullanıldığına göre kalkabilmişlerdir) ne ala.

Not: Visual basic kullanmıyorum.

Saygılar;
Murat ÇELİKER < murat.celiker @ gmail . com >

Serbülent dedi ki...

Tabi ki yalnızca c, java olacak diye bir zorunluluk yok. Alternatif olarak Ruby, Lisp, Python gibi dillerde kullanılabilir. Ancak VB gibi diller kişi ve kurumları "Yazdım işte çalışıyor" zihniyetine mahkum eder. Büyük çaplı bir projede programı tasarlayıp yazmak yalnızca başlangıçtır. Daha sonradan o programın desteğini vermek asıl önemli olan. Çünkü büyük çaplı kurumların hatalar için vakit kaybetmeye tahammülü yoktur. Böyle bir durumda kurum olarak VB ye güvenilemeyeceğini düşündüğüm gibi bir programcı olarak da o bakım maliyetinin altına girmeye cesaret edemezdim ben. Ama buna cesaret edenleri de tebrik etmek lazım aslında...

Barış Kişisi dedi ki...

Merhaba

Ne yazık ki ticari uygulamalarda teknik detaylar "ucuz eleman" için gözardı ediliyor.

Yeni açılacak bir şirkette ortakların teknik açıdan bir geçmişi yoksa piyasada hangi dili bilen eleman fazla(burda fazla kelimesini ucuz çalışacak diye anlayabilirsiniz) ise o dili seçiyorlar.