compiler etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
compiler etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

20 Eylül 2008 Cumartesi

JavaFX teknolojisi nedir?!

JavaFX teknolojisi Sun microsystems firmasının RIA (Rich Internet Applications - Zengin Internet Uyugulamaları -) alanında yaptığı bir teknoloji atılımıdır (yatırımı). Teknoloji terimini kullandım çünkü her ne kadar JavaFX bir script dili gibi gözükse de bundan çok ileri bir şeydir. JavaFX script dilinin yanında bu dil kullanılarak yaratılmış bileşenler ve yine bu bileşenleri desteklemek adına işletim sistemine özgü kütüphaneler içerir. JavaFX mobil cihazlar, sınırlı bağlantı içeren mobil cihazlar ve popüler işletim sistemlerinde desteklenmek üzere geliştirilmektedir. JavaFX'in script dili henüz tam oturmuş değil önceki yazımdaki siteden changelogları takip ederseniz yada en güncel kaynak dosyaları incelerseniz v4 de olduğunu görürsünüz. Ancak SDK Preview den anlaşıldığı kadarıyla kolay ve etkin bir dil olacak. JavaFX Java ile aynı yoldan giderek bağzı teknikleri anahtar kelimelerle dil düzeyinde desteklemiş. JavaFX de animasyon için "tween" anahtar kelimesi kullanılması buna güzel bir örnek. JavaFX'in ilginç bir yanı da java sınıflarını direkt kullanabilmesi. Yani script dostanızda import java.io.*; yada import javax.swing.JFrame; kullanarak o sınıfı bir değişkene atayabilir ve sonra özelliklerine ve metotlarına ulaşabilirsiniz. Bu durumda JavaFX Java teknolojilerinin hepsini barındırıyor. Ancak bu tarz da ( Java sınıflarını import ederek) yazılan bir uygulama pek de JavaFX script kullanarak yazılmış olmuyor. Durumu script lehine çevirmek için ( uygulama yazma kolaylığı adına ) Java sınıflarını sarmalıyor ve JavaFX bileşenlerini oluşturuyor. Peki hedef ne?
  1. Multimedia desteği vermek
  2. Hem interaktif hem de şık kullanıcı arayüzleri oluşturmak
  3. JavaFX'in java plug-in'e adapte edilerek internet tabanlı kullanıma açmak
  4. Kolay kullanım
  5. Çok platformluluk
  6. Network tabanlı uygulama
  7. Hızlı ve etkin programlama
  8. Geliştirme ortamı desteği
1. Multimedia desteği JavaFX tarafından desteklenmesindeki en önemli sebep artan internet hızı ve depolama kapasitesi nedeni ile artık uygulamaların video ortamlarını desteklemesi gerekliliği. Bu durum video yayınlama sitelerin artışı ve buna ulaşan programlara olan rağbetle kendini belli ediyor. Javada zaten multimedia desteği yok muydu dersek Java Media Framework (JMF) vardı. Ama popüler codecleri desteklemiyordu. JMF 'de üçüncü parti codec desteği ancak java sınıfları ile yazılmış olmalıydı ( Zahmetli ve güncellik zor sağlanıyor). JMF encoderlerı iyi desteklemiyordu. Çok platformlu değildi. Sadece JavaSE destekli ortamlarda çalışıyordu. Java Media Components (JMC): Platforma bağlı multimedia bileşenlerini (DirectShow, Gstreamer) kullanan doğal kütüphane (jmc.dll, jmc.so gibi) ile java sınıfları arasında iletişim kurularak codec desteğinin büyük bir kısmı platformdan sağlandı (codec desteğinin JavaFX den soyutlanması). Kullanıcının istediği codec'i yüklemesi ve gerekli güncelliği sağlaması kendi elinde oldu ( Lisans Problemleri kullanıcının problemleri haline geldi). Encoding (kodlama) decoding (kodu açma) işlemi çok kolay yapılabilir olacak. Codec' in yerel sistemden sağlanıyor olması durumunda eğer codec destekliyorsa SSE, MMX , çok çekirdekli işlemciden yararlanma , deinterlace v.s. gibi teknolojilerden yararlanmak mümkün . Codecler sisteme kurulu olmasa bile Sun microsystem'in JavaFX'in ileri ki sürümleri için söz verdiği HD ortamları destekleyen hızlı, On2's TrueMotion codeclerinin rahatlıkla kullanımı mümkün olacak 2. JavaFX' de görsel olan herşey bir düğümdür (Node) ve stage denen sahnelerde sunulurlar. Sahne desteği Sun microsystems'in yürüttüğü scenegraph projesiyle destekleniyor. Bu projede herşey birbiri ile ilişkilli birer düğüm zinciri tıpkı html ağacı gibi. Scenegraph görsel efektleride destekliyor. Görsel efektler Decora projesi ile destekli. Decora platforma yönelik donanım hızlandırması için doğal kütüphanelerin yazıldığı proje. Decora efektleri uygularken eğer destekleniyorsa windows ortamalarında hem DirectX9 hemde OpenGL destekli. Linux, Solaris ve MacOSX de ise OpenGL destekli. Bunun yanından sisteme göre SSE veya software (yani işlemci) desteği de var. Efektlerin donanım hızlandırması duruma göre DirectX shader language yada Opengl shader language diline çevrilen ancak henüz ayrıntıları belli olmayan java shader language ( jsl ) dili kullanılarak sağlanıyor. Böylece işlemci zamanı boşa harcanmamış oluyor. Eğer ilgili dosyaları bulamazsa (Decora-D3D.dll, v.s gibi) işlemci devreye giriyor. Hangi sistemin kullanıldığı sorgulanabiliyor. JavaFX de Swing bileşenleri scenegraph tarafından desteklenen çizimler, yine ilerde kavuşacağımız ileri düzey bileşenler (akordiyon menü, görünüşleri değiştirilebilir bileşenler -skinable- v.s) ve JMC tarafından gösterilen media Stage eklenebilir tarzda yazılıyor. Bu durumda stage eklenecek her türlü görsel bileşene ayrı ayrı olmak üzere efekt uygulanabiliniyor. Bu da oldukça şık arayüz tasarımlarının önünü açıyor. Efektler birbiri ardına uygulanabiliniyor. SVG desteği JavaFX SDK Preview de var. 3. JavaFX teknolojisinin son zamanlardaki kaynak kodundaki yapılan değişikliklere baktığımız zaman yansıtma (reflection) uygulandığını ve bunun java plug-in desteği ile alaklı olduğunu ifade eden açıklamalar görüyorum. Böylelikle JavaFX java plug-in le etkileşime girecek. Dolasıyla bu durum tarayıcı ortamı ile iletişim ve applet teknolojisinin canlanması anlamına gelebilir. Ancak bu etkileşimin mimarisi zaman içinde belli olacak. 4. JavaFX javafxc, javafx, javafxdoc adlı çalıştırılabilir dosyalarla geliyor. javafxc bir derleyici. javafx gerekli kütüphane dosyaları ve jar dosyalarının yolunu çalışma yoluna ekleyerek scripti çalıştırıyor. javafxdoc ise isterseniz kaynak dosyalarda kullanılan özel etiketlerle belgeler üretiyor. Ancak javafxdoc bu işi javadocdan çok daha iyi yapıyor. javafxdoc'un ürettiği belgeler html ve xml belgesi olabiliyor. Üretilen belgeler görsel olarak zengin ve interaktif. 5. Yine JavaFX teknolojisinin geliştirme deposunu incelediğimiz zaman Windows, Linux, MacOSX ve Solaris platformlarının desteklenmesi konusunda çalışmalar sürmekte. Fakat JavaFX çok platformluk konusunda javanın girdiği her yere girmeye çalışıyor. Bu bağlamda cep telefonları, cep bilgisayarları, dijital televizyon kutuları (Dijitürk gibi), gelişmiş multimedia ürünleri (Blue-Ray) gibi sınırlı bağlantılı cihazlarla bağlantılı cihazlar dahil pek çok ortamda var olma yolunda ilerleyecek. 6. Tabi ki yine her şey network ve buna JMC dahil. JMC akış (streaming) teknolojisini destekleyecek. RIA için gereken destek verilecek. Hali hazırda JavaFX SDK Preview sürümünde resimlerin direkt networkden indirilmesi mümkün. 7. JavaFX Javanın izinden giderek satırlarca kod yazarak elde ettiğiniz bazı teknikleri anahtar kelimeler ile sağlamış bulunuyor. Örneğin bir bileşenin ekranda artan ve azalan şekilde parlaması için ilk önce ilgili efekti uyguluyorsunuz. Sonra uyguladığınız efektin etki derecesini arttırıp azaltarak animasyonu elde ediyorsunuz. Normal de sadece bu işlem satırlarca kod yazmayı gerektirir. Birde değer tipi çok çeşitli olsun dersen ( Tamsayı -Integer-, Noktalı sayı -Float-) kod satırı sayısı iyce büyür. JavaFX de "tween, bind" anahtar kelimeleri ile "=>" operatörü yeterli desteği sağlıyor. Dizilere alternatif olarak sequence değişkenleri var. Sequence değişkenlerine özel operatörler ve anahtar kelimeler dizi oluşturma eleman ekleme çıkartma işini kolaylaştırıyor. JavaFX script ilk önceleri interpreter olarak tasarlanmıştı. Ancak performans endişeleri python gibi script dillerinde olduğu gibi JavaFX script dosyalarını yorumlayıp derleyerek java sınıfı karşılıklarına çeviriyor. 8.JavaFX geliştirme ortamı olarak Netbeans üzerinde JavaFX plug-in kullanıyor. JavaFX SDK Preview ile beraber çıkmış olan bu plug-in henüz basit bir destekden ibaret. Basit destek dediysek tabi ki debug, profiler paletden sürükle bırak kode klipleri ve parser desteği var. Fakat parser, otamatik tamamlama, otomatik import hanüz iyi çalışmıyor. Büyük ihtimalle bu konuda da kapalı kapılar ardında çalışmalar sürüyor. Ancak Sun microsystems Swing tabanlı uygulama inşahasında kullanılanan matise benzer bir ortam sağlıyacak ve bu ortam flash programına pek benzemeyecek.Çünkü Sun microsystemse göre bu web programcılığı tarzında bir destekden ibaret. Diğer yandan sanatsal destek JavaFX SDK Preview Project Nile adı altında grafik programları ile (Adobe Photoshop ve Illustrator) görsel öğelerin JavaFX de kullanılması için SVG formatında plug-in düzeyinde destek veriyor. Bu destek linux tabanlı ortamlar için varda denemez yok da denemez. Çünkü linux ortamındaki grafik programları SVG yi zaten destekliyor. Project Nile dosyalarının exe olduğuna bakmayın jar dosyalarıda çalışıyor. Bu durum linux ortamında da geçerli. Inkspace ile yarattığınız çizimleri düz SVG dosyası olarak kayıt edin ama türkçe karakter kullanmayın. SVG converter ile çizimlerinizi fx dosyalarına çevirebilirsiniz. Peki tüm bunlarla neler yapılabilir: Henüz dosya sistemine erişim script düzeyinde yok ama yine de scriptin sınıflara erişimi ile desteği kendiniz oluşturabilirsiniz. Bu durumda az sayıda kod yazarak mp3 çalar video oynatıcı yazabilirsiniz. JMC bileşeni bir node sınıfını genişletir. Bu durumda oynatdığınız filme tek satır kod ile efekt (siyah beyaz) ekleyebilirsiniz. Efektleri arka arkaya sıralayarak daha fazla efektle daha ilginç şeyler yapabilirsiniz. Skin özelliği eklenince oynatıcınıza istediğiniz skinleri üretebileceksiniz. Kendi bileşenlerinizi yaratabilirsiniz. Node sistemi nedir ve bizim için önemi ne olabilir: Node (düğüm) sistemi tek bir sahne (stage) üzerine pek çok birleşen eklemek üzerine geliştirilmiştir. Kendi özel düğümlerinizi yaratabilirsiniz. Örneğin bir basit bir araba çizmek için CustomNode sınıfını kullanarak siyah bir daire ve içine daha küçük beyaz bir daire çizerek bir teker oluşturursunuz. Artık her sınıf örneğinizde bir tekerleğiniz var. İki tekeri oluşturup bunu Grup sınıfı ile tek bir node haline getirebilirsiniz. Geometrik öğelerin kesişimlerini alabilir, birbirinden çıkarabilir, ekleyebilirsiniz. Bir görselin (swing, Media viewer, SVG, resim, kare, daire, v.s) node olarak sarmalanması demek tüm nodların sahip olduğu özelliklere sahip olması demektir. Bu özellikler
  1. Mouse ve klavye olaylarını alabilmek yada almamayı tercih etmek
  2. Efektlerin uygulanabilmesi
  3. Öteleme (translate)
  4. Bükme (shear)
  5. Çevirme (Rotate) ve belirli bir noktadan çevirme
  6. Transformasyon (öteleme, bükme ve çevirme işlemlerinin bir arada uygulanması)
  7. Saydamlık(Opacity)
  8. Daha hızlı çizim için ön bellekleme (cache)
  9. Ebeveyn tespiti
  10. Düğüme kimlik (id) ataması
  11. Görünülük (Visibility)
  12. Diğer düğümlerin önüne alma gerisine atma
  13. Kırma (Clip) ve kırpma yumuşatma
Önbellekleme çizimi geçici bir dizinde resim olarak saklamaya dayanır eğer çizimde değişiklik olursa ön bellek güncellenir. Sık değişmeyen öğelerde performans sağlar. Kimlik (id) özelliği ilgili node (düğüme) hızlı ve emin ulaşım sağlar. İlginç olan photoshop ve illustrator eklentileri katman isimlerini düğüm isimlerine atayarak her katmandaki SVG çiziminin ayrı tutulmasını ve ulaşımını kolaylaştırır. JavaFX'in geliştirildiği depodan indirdiğimiz kaynaklara ve changeloglara (yapılan değişiklikler günlüğü) bakacak olursak bütün her şeyin düğüm uzayına geçirilmek için çalışıldığına dair notlara rastlıyoruz. Eğer bu yapılırsa windows xp de olduğu gibi kapatma durumunda ekranın kararması gibi bizde program penceresinin kararmasını sağlayabiliriz. Artık günümüz kullanıcıları kullandığı programların zaten görsel yönden zengin olması taraftarılar. Bu durumdan dolayıdır ki RIA terimi ortaya çıkmıştır. Aslında JavaFX script olmadan da şu anda efektleri, stageleri, nodeları, grupları, geometrik çizimleri kullanabilirsiniz. Çünkü tüm bunlar açık kaynak kodlu olarak geliştirilen scenegraph ve decora projelerinden sağlanıyor. Örneğin decora kullanarak resim dosyalarınıza JavaFX olamada da efekt uygulayabilirsiniz. Efektler dedik ama hangi efektler kullanıma hazır olarak geliyor.
  1. Karıştırma (Blend) : İki resmi karıştıma moduna göre (BlendMode) bir birleriyle karıştırır. Photoshop, Gimp gibi fotoğraf editörleri ile benzer şekilde çalışır.
  2. Bloom : Bu efekt resmin beyaz öğlerinin parlamasını sağlar.
  3. Renk ayarlama (Color Adjust) : Parlaklık, doygunluk, renk değerlerini ayarlama imkanı sağlar
  4. Displacement map : Bu efekt aslında oldukça güçlü bir efekt. Yerdeğiştirme efekti ediğimiz bu efekt FloatMap denen bir haritaya ihtiyaç duyuyor. FloatMap adından da anlaşılacağı gibi noktalı rakamlardan (Float) oluşan bir dizi. FloatMap içerisindeki sayılar resim üzerindeki ilgili piksellerin yer değiştirmesini etkiler. FloatMap için bir genişlik ve yükseklik bilgisi verilmesi gerekir. Genellikle harita büyüklüğü resim büyüklüğüyle aynıdır. Bu da bu efekti oldukça güçlü yapar.
  5. Gölge ekle (Drop Shadow) : Gölge ekle efekti için gölgenin uzaklığını, rengini, gölgenin bulanıklığını ayarlamanıza izin verir.
  6. Flood (türkçesini bende bilmiyorum) : Bu efekt sadece bir dikdörtgen çizer ve içini istediğiniz bir renk yada gradient ile doldurur.
  7. Gaussian bulanıklığı (Gaussian Blur) : Gaussian tekniği ile bulanıklaştırma sağlayan bir efekt
  8. Parlatma (Glow) : Uygulandığı öğede parlak alanlar yaratır. Bloom dan pek farkını göremedim.
  9. İç Gölge (InnerShadow) : Gölgeyi kenarlardan uzağa değilde kenarlardan içeri doğru yerleştirir.
  10. Maskeyi Ters Çevir (InvertMask) : Eğer resiminizin bir alfa kanalı varsa bunu tersine çevirir. Bu durumda resmin saydam kısımları opak opak kısımları saydam hale gelecektir.
  11. Işıklandırma (Lighting) : İşte bir gelişmiş efekt daha. Bu efektle özellikle grafik ve yazılara ışıklandırma ile birlikte 3D efekt etkisi yaratabilirsiniz.
  12. Hareket bulanıklığı (MotionBlur) : Adı üzerinde hareket eden cisimlerin içerisinden bakarken gördüğümüz bulanıklaşması ile aynı etkiye neden olur.
  13. Perspektif Değişimleri (PerspectiveTransform) : Evet bir sağlam efekte bu efekt. Bu efekte en iyi örnek vistada programlar arasında geçiş yapmak için kullanılan efektdir. Bu resimlere özel olarak perspektif vermek için dört köşesinin koordinatalarını ayarlamanıza izin verir. Bu durumda sol köşeler normal konumlarındayken sağ köşeler ortaya doğru ve birbirlerine yakın konumlandırılınca resim yan duruyormuş gibi görünür bu da 3D efekti yaratır. Ama siz böyle yapmak zorunda değilsiniz. Eğer isterseniz köşeleri ters çevirerek resmi ters-yüz de edebilirsiniz.
  14. Yansıma (Reflection) : Bu efekt resmin altında yansıma oluşturur. Yansımanın resmin alt kenarına uzaklığını, alt ve üst kenarının saydamlığını ve saydamlaşmanın başlangıç hattını belirleyebilirsiniz.
  15. Eski fotoğraf tonu (SepiaTone) : Adı üzerinde resmin eski fotoğraflarda olduğu gibi kahverengimsi bir görünüm kazanmasına neden olur.
Şimdilik bu kadar ama aklıma geldikçe bir şeyler eklemeyi düşünüyorum. Hatta zamanım oldukça kod örnekleride yayınlayacağım.

5 Haziran 2008 Perşembe

Programlama dili nedir ki(ne)?!

Önceki yazımı yayınladıktan birkaç saniye sonra hemen başlayayım dedim programlama ile ilgili yazmaya. İlk önce program yazmayı merakeden yada bilgisayarı bir deney aracı bir uğraş haline getiren pek çok insanın hemen aklına gelen şu basit soruyu cevaplamaya çalışmak istiyorum:Programlama dili nedir (aslında ilk soru "Bu programlar-oyunlar- nasıl yapılıyor ki yahu" dur.) neden vardır? Aslında programlama dili sihirli bişey değildir. Hatta hepsi aynı şeydir (Durun yahu hemen itiraz etmeyin tamam sizde birşeyler biliyorsunuz).Yani hepsi bilgisayara birşeyler yaptırtır. Yaptırtır yaptırmasına da ama nasıl yaptırtır ki(ne)? Şimdi ilk önce ayrıntıya girmeden şu an ekranına baktığımız şeyi işletim sistemiyle, işlemcisiyle, ekran kartıyla, hafızasıyla, disk sürücüsü ile bi bütün olarak yani bilgisayar olarak ele alalım.Bu kabullenme ile program yazan insan bu bilgisayara bir şeyler yaptırtacak ama onla nasıl iletişim kuracak. Yani derdini nasıl anlatacak? Anlatmak için kullandığı şey ne olacak? Eğer o bir insan olsaydı konuşarak anlaşırdık ama o bir insan değil! Hadi insan diyelim ama türk değil o zaman onla aynı dili konuşmanız gerekir yada bir tercuman tutarsınız o anlatır derdinizi.İşte o tercumana programcı bir şeyler söyler "iki düğme oluştur düğmenin birinde TAMAM yazsın diğerinde İPTAL yazsın TAMAMI tıklayınca AYARLARI kaydet İPTALİ tıklayınca bir şey yapmadan çık v.s." tercumanda bilgisayara şöyle söyler: "101011110101010111110101010101010001010101011111010 1010101010100011111101010101010101111010101011110101 1010101010101000101010101111101001011110101010111110 0101111010101011111010101010101000101010101111101011 010101010100010101010111110100101111010101011111010" . Şimdi siz olsanız tercumanı aradan kaldırmak istermisiniz? Şahsen ben hiç istemem. Peki neden sadece bir tek programlama dili yok? Aslında ilk başlarda varmış ve adıda assemblymiş(Bir varmış bir yokmuş gibi oldu!).Fakat hiç düşündünüzmü dünya üzerindeki konuşulan her dilin kendine göre avantaj ve dezavantajları var. Doğal olarak insanlar kendi dili dışında dil öğrenme ihtiyacı duydukları zaman bu dez/avantajları göz önünde bulundurur.Örneğin fransızca öğrenmeyi denemeye kalksak ne olur. Bildiğim kadarıyla fransızlar her nesneye hatta hayvana dişi-erkek kavramıyla yaklaşıyorlar(Kedi dişi masa nonoş v.s. :)) ). Bu da fransızca öğrenmek işi bayağı karmaşık olacak demek. Öteki taraftan dünyanın en nazik dili olarak geçiyor ve etkili bir romantizim yaratıyor.Bu bağlamda assemblyde fransızca gibi. Yukardaki örnek de olduğu gibi assembly 1 ve 0 larla konuşmaktan bir adım uzak sadece. Ama öteki yandan yazdığınız programın performansı için oldukça iyi bir dil. Şu bilgiyi hemen vermek istiyorum.Makina diline (yani bizim için bilgisayar dili) yakın olan dillere düşük seviye diller (low-level language) insan konuşmasına benzeyen yani "eğer şu yoksa bunu al o da yoksa geri dön şunu yap" şeklindeki dillere yüksek seviye (high-level language) denir. Derleyici -Compiler-?! (Af buyur o ne yav annem gibi bişey mi ortalığı toplayan falan :))) Eh madem biz bu bilgisayarla aynı dilde hiç konuşmadık bu adama nasıl söz geçiriyoruz? Şöyle ki hemen her programlama dilinde komutlar (bilgisayara emir vermek için kullandığımız dilin sözcükleri anlamında kullanıyorum) düz yazı ile yazılır (içinde yazı karakteri, büyüklüğü, rengi gibi bilgiler taşımayan sadece "abvds" gibi harfler bulunan dosyaya düz yazı dosyası denir.) ve bu yazı dosyası derleyiciye verilir. Derleyici dosyayı okur ve bilgisayarın anlayacağı dile çevirir. Böylece programımız üretilmiş olur. Bu bağlamda derleyici bizim tercümanımızdır. Komut kelimesi yanlış anlaşılmasın. Komut çoğu zaman bilgisayardaki tıklayacağınız bir düğmesi olmayan klavye ile yazarak isteğimizi belirttiğimiz programlardır." del foto.jpg " komutu foto.jpg'yi siler ve del bir programdır fare ile tıklayacağınız bir öğesi bulunmaz.Komut satırından emirlerimizi bilgisayara iletiriz. Sonuç: Yazımın sonunda size şunları anlatmaya çalıştım:
  1. Programlama dili nedir neden gereklidir? -Bilgisayara derdini anlatan programcı dilidir.
  2. Programlama dili ile bilgisayara derdimizi anlatan kimdir. -Derleyici yada yorumlayıcı(yorumlayıcı için daha erken ama anlatacam onu da elbet).
  3. Madem ben bilgisayarıma doğrudan bişey anlatamıyorum o zaman uygun bir dil ile mi anlatacağım derdimi? -Evet aynen öyle
  4. E o zaman ben gidip bir programlama dili mi öğreneyim? Evet bu da doğru ama...
  5. Bu kadar mı şimdi! -Hayır devamı gelecek tabi :))
  6. Programcı büyüklerimize saygı onlardan da bize sevgi arz ediyoruz.(Yav adam bizden büyük yada küçük ama o yazıyor e biz kullanıyoruz. Mesela Pardus'u yazıyor. Firefox'u çeviriyor zembereği yazıyor. E biz de yeni yeni programlama ile ilgili birşeyler öğreniyoruz o zaman kavga etmek, kırılmak, kırıcı eleştiri yapmak karşılıklı olarak yok! <:))
Şunları ise henüz anlatmadım:
  1. Programlama dili öğrenmek kolaydır denir. -"İyi de ben geri zekalımıyım değişken, fonksiyon, nesne, örnek nedir hiç bişey anlamamıştım". Aslında geri zekalı değilsin sadece sen araştırmaya kalktığın zaman televizyon programlarında ki Prof.Dr. XXXX gibi "Efendim karsinomların iki çeşiti vardır malign ve selim malign olanların hemidesmazomları........." şeklinde konuşan yazarlarla karşılaşıyorsun o kadar. Ben de senin mahallenin çocuğu olduğum için sana sahip çıkmaya çalışıyorum.(Bu arada o insanları yadırgamayın tüm dünyaları bu olmuş olabilir ve sanki sizde onlardan ve o dünyadanmış gibi zanedebilirler ama siz de onlar sayesinde msn, internet, google gibi şeyleri kullanıyorsunuz ve hala onlar bunu size aşılamaya çalışıyorlar. Sonuçta aziz insanlar onlar)
  2. Programlama dilleri dışında daha kolay olan programlama dilcikleri var.(javascript,php v.s)
  3. Düşük seviye programlama ile yüksek seviye programlam nedir niye var? -Niye Arapça, Türkçe, İngilizce, Ugandaca var?
  4. Benim aklıma gelmeyen ama sizin aklınızda olan pek çok şey var! - E yaz bana o zaman abi biliyosan söyle şu ne diye. Ben de biliyorsam söyleyeyim sölemezsem de Bill GATES gibi olayım (Büyük yemin ettim bak).
Sürçü lisan ettiysek affola :))))