4 yorum

Merhaba, ben Levent KARAGÖL. Çocukluk yıllarımda ZX Spectrum üzerindeki Basic çalışmalarımı saymazsak, yazılım kariyerime 1998'de Visual Basic ile başladım. O zamandan bu yana yurt içi ve yurt dışı pek çok yazılım projesinde görev aldım. Halen Türkiye'nin önde gelen yazılım firmalarının birinde çözüm mimarı olarak görev yapıyorum. Bunca yıllık yazılım kariyerimden sonra geçmişe dönüp baktığımda beni en çok üzen şey, şu anda hayranı olduğum programlama dilini geçmişte çok hakir görmüş olmamdır. JavaScript'ten bahsediyorum.

JavaScript, pek çok kişinin gözünden bakıldığında, ufak tefek işleri yerine getirmek, bazen de web sayfalarında göze hoş gözüken birkaç dinamik efekti gerçekleştirmek için kullanılan basit bir Script dilidir. Oysa işin aslı bunun çok çok ötesinde. JavaScript, hem istemci (Client), hem de sunucu (Server) tarafında uygulama geliştirmek için kullanılabilen, diğer pek çok modern programlama dilindeki yetenekleri (hatta zaman zaman daha da fazlasını) barındıran, genişlemeye açık bir programlama dilidir.

Öyle bir programlama dili düşünün ki;
  • Bu dil ile yazılan programlar, ekstra bir efora gerek duymaksızın (Windows, Mac OS, Linux, Android, IOS gibi) her platformda çalışsın.
  • Sadece bu dili kullanarak web sitesi de yapalım, kurumsal boyutta büyük uygulamaları da yazalım, cep telefonu uygulaması da yazalım, hatta hayalimizdeki 3D oyunları da yazalım.
  • Programı yazarken de istediğimiz platformu kullanabilelim. Hatta programı yazmak için bir IDE'ye (özel bir geliştirme ortamına) ihtiyacımız da olmasın. Not defterini açalım, yazalım.
  • Yazdığımız kodu derlemeye gerek kalmasın, not defterinde yazdığımız gibi koyalım, çalışsın.
  • Programın çalışması için kurulum yapılacak makinede de (Java VM veya .Net Framework gibi) ekstradan kurulu olması gereken bir ortama ihtiyaç duyulmasın.
  • Tüm bunların yanında, derlenmeden çalışmasına rağmen, yüksek performansta iş çıkartsın.
  • Bir de, çok geniş bir kitle tarafından kullanılıyor olsun ki, başımız sıkıştığında internette her türlü bilgiye kolayca ulaşabilelim.

Tüm bunları karşılayabilen kaç dil sayabilirsiniz ki? Elbette filmin başında kızımız bu kadar güzel değildi. 2008'de Google'ın çıkarttığı V8 motoru ardından 2009'da JavaScript ile sunucu tarafında da yüksek performanslı uygulama geliştirmeye imkan sağlayan Node.JS ve bu metni yazarken henüz beta aşamasında olmasına karşın göz kamaştıran WebGL teknolojisi ile JavaScript, artık bir programcının hayal gücünü zorlar hale geldi.

Geçmişte bu güzelliği hakir gördüğüm için kafamı pek çok kez duvarlara vurdum. Bu bloğu da kendimi, ona ve onu sevenlere bir nebze olsun affettirmek için açtım. Ancak lütfen yanlış anlaşılmasın. Bu, "Web siteleri için modern JavaScript örnekleri" tadında bir blog değildir. Burada JavaScript'e hak ettiği değeri vermek için, onu tam bir programla dili olarak kullanacağız ve kendi çapımızda sınırlarını zorlamaya çalışacağız. Sloganımız, "JavaScript tek başına programlama dili olarak yeter" olacak. Bunu yaparken de, insanların farklı seviyelerde bilgi sahibi olduğunu ve Türk insanının kolay sıkıldığını da unutmayacağız.

Bloğu temelde dokuz kategoride tasarladım. Bunlar;
  1. Temel JS : JavaScript'in J'sini veya programlamanın P'sini bilmeyen azimli ve hevesli kardeşlerime yöneliktir. Diğer kategorideki makaleleri anlayabilmek için gerekli olan bu kategoride sadece JavaScript değil, sırası geldikçe zaruret ölçüsünde HTML ve CSS'in yanı sıra JQuery gibi bazı kütüphanelere de değineceğim.
  2. OO JS : Object Oriented JavaScript ile programlama yapabilmek için gerekli olan temel bilgileri adım adım anlatacağım.
  3. Design Patterns : JavaScript ile Design Pattern'lerin kullanım şekillerine ilişkin bilgileri  adım adım işleyeceğim.
  4. Can.JS : JavaScript ile SPA(Sinle Page Application) türünde, modern programlama dilleri ile yazılmış kompleks uygulamaları aratmayan projeleri geliştirmek için kullanılabilecek altyapılardan biri olan Can.JS'i adım adım anlatacağım.
  5. Three.JS : Herkesin bilgisayarında kurulu olan web tarayıcıları üzerinde çalışan ve modern 3D oyunları aratmayan projeleri WebGL ile geliştirmek için kullanılabilecek altyapılardan biri olan Three.JS'i adım adım anlatacağım.
  6. Node.JS : JavaScript ile yüksek performanslı sunucu taraflı projeleri geliştirmek için kullanılabilecek altyapılardan biri olan Node.JS'i kurulumundan itibaren adım adım anlatacağım.
  7. Require.JS : JavaScript ile yazdığımız kod bloklarının birbirleri ile olan bağımlılıklarını yönetmek ve çıktıyı optimize etmek için kullanılabilecek altyapılardan biri olan Require.JS'i adım adım anlatacağım.
  8. Jasmine : JavaScript ile yazdığımız istemci ve sunucu taraflı kodları test etmek için kullanılabilecek altyapılardan biri olan Jasmine'i ve BDD tarzında uygulama geliştirmeyi adım adım anlatacağım.
  9. Projeler : Bu kategoride, bloğun geri kalanında anlatılanlar kullanılarak sıfırdan adım adım geliştirilen açık kaynak kodlu projeler bulunacak. Projelerin tamamı eğitim amaçlı olup, MIT lisansına sahiptir. Özetle buradaki kodları ve bilgi birikimini istediğiniz gibi kullanabilirsiniz.

Günümüzde oynadığımız en gösterişli 3D oyunları ve büyük/dağıtık kurumsal uygulamaları tek başına yazabilecek kadar yetenekli ama basit bir web sayfasında bir metin kutusunu boş bıraktığımız için bizi uyaracak kadar da alçak gönüllü bu muhteşem dili Türk programcılarına sevdirebilirsem, kendimi amacıma ulaşmış sayacağım.