JavaScript Nasıl bir Dil?

Merhaba. Bu içerikte JavaScript hakkında ile ilgili merak edilen bazı sorulara açıklık getirmeye çalışacağım.



JavaScript bir “scripting” dili midir?


Bu konuda bir fikrimiz olması için önce Script(betik) diller nedir bilmemiz lazım. Script diller bir bütün olarak veya parça parça yorumlanan diller demektir. Yani alternatifi olan compiling(derlenen) dillere nazaran satır satır bir çalışma ortamı tarafından ele alınır ve sonunda da hazırlandığı çalışma ortamı içinde çalıştırılır. Diğer tarafta bulunan derleyici dillerde ise genelde bir derleyici tarafından kod bir bütün olarak derlenir ve başka bir kod formatına çevrilir.


Script Dilinin Faydaları veya Zararları


Bir Script dilinin iyi mi kötü mü olduğu aslında yapmak istediğiniz kodun ve programın hangi amaçla çalışacağına bağlı. Derlenen(compile) edilen dillerde derleyiciler hem geliştirme sonrasında hem de çalışma zamanında anlık olarak kodunuzu optimize eder ve makine dili dediğimiz 0-1 tabanına entegre eder ya da ona çok yakın bir hale getirir. Bu da kodunuzun birçok platformda yazılan kodlarla birlikte uyumlu halde birçok platform üzerinde çalışmasını sağlar. Bu derleme işleminin dezavantajı ise derlemeinin bütün bir kod bütününe ihtiyaç duymasıdır. Derleme işlemi sırasında kod bağlı olduğu tüm parçalarla birlikte ele alınır ve bir bütün olarak derlenir. Script dilinde ise süreç tam tersi şekilde işler diyebiliriz. Script dilinde kodunuz parça parça, kodun bütününden bağımsız olarak çalıştırılabiliniyor. Bu nedenle Script dilleri üzerinde yapılan herhangi bir değişiklikte kodun tüm parçalarını interpreter(yorumlayıcı) tarafından ele almadan yalnızca değişen-işlem gören kısımların çalışma zamanında yorumlama sağlanır. Bu sayede script dilleri ile çalışmak süreci daha hızlı ve esnek bir hale sokar.


JavaScript Programlama dili mi?


JavaScript bir programlama dilidir. Ancak C, C++ gibi dillere oranla daha yüksek seviye bir dildir. Daha doğrusu yapılan birçok işlem diğer dillere oranla daha basitleştirilmiş ve dolayısıyla dilin çalışma ortamı tarafından otomatik olarak yapılmaktadır. Bu nedenden dolayı bu dili geliştiren kişi, örneğin hafıza yönetimi gibi birçok detay ile uğraşmamakta, bu işlem dil tarafından gerçekleştirilmektedir. Elbette dezavantaj olarak da her şeyi kodunuzu çalıştıran yorumlayıcının insiyatifine ve çalışma ortamının size verdiği sınırlar çerçevesinde geliştirme yapmanız gerekir.


Yüksek Seviye – Düşük Seviye Dil Nedir?


Bildiğiniz gibi bilgisayar 0 ve 1 leri okuyan makinelerdir. Buna Binary sayı sistemiyle birlikte ikili sayı sistemi de denmektedir. Yani aslında bilgisayarda yaptığımız her işlem, her uygulama, her yazı, makinenin dilinde ve hafızasında “0-1” olarak yer bulur. Üzerinde çalıştığımız her programlama dilinin her ne kadar fonksiyonları, metodları birbirinden farklı görünse de en sonunda hepsi derleyici tarafından bilgisayarın “0 ve 1” diline dönmektedir. Bu 0 ve 1 verileri bilgisayar donanımları içinde hareket eder. Elbette programcılar genelde bu seviyede programlar yazmıyor. Araya birçok farklı kod parçaları ve uygulamaları girerek bizim kodumuzun(C, C#, Java vb) makinanın anlayabileceği bu son seviye yani 0 ve 1 seviyesine çevirir. İşte bir dil ne kadar makina seviyesine yani donanıma yakın ise o kadar low-level(düşük seviye) ama insanın anlayabileceği seviyeye yakın ve makina dili ile arasına birçok derleyici, yorumlayıcı, çalışma ortamı giriyor ise o kadar high level(yüksek seviye) dildir.


Yüksek Seviye – Düşük Seviye Dil


Yüksek seviye diller daha hızlı geliştirme, daha pratik ürünler çıkarma konusunda iyiyken düşük seviye diller(bilgisayar diline yakın olanlar) bilgisayara daha fazla hükmetmek ve çalışma ortamınızı çok daha fazla yaymak için iyidir. Örnek vermek gerekirse yeni telefonunuzda bir uygulama yükleyip kullanırken, uygulamanın sadece basit özellikleriyle ve giriş yapıp arkadaşlarınızla konuşma özelliğiyle ilgileniyorsanız daha hızlı bir sonuç alırsınız ve basit bir işlem yapmış olursunuz. Ancak uygulamanın tüm detaylarına inip her şeyiyle alakadar olmayı ve “gelişmiş” ayarlarını kontrol etmeyi tercih ederseniz o zaman sizin için düşük seviye bir dil gerekir. Yani aslında üzerinde çalışacağınız dilin kompax hali ve karar mekanizması temelde bu olay üzerine karar verilir.


JavaScript denilen dilin işlevi ne?


JavaScript uzun yıllar boyunca PHP ile hazırlanan Web Siteleri için “kayan yazı oluşturma” dili olarak adlandırıldı. Ancak bu dilin artık yapabildiği tek şey bu değil. bu dil ile “Asenkron non blocking” kod yazma, veri şifreleme, yapay zekadan tutun da cep telefonları için geliştirmeye kadar çok geniş bir yelpazede çalışmaya başlandı ve JavaScript her geçen gün çok daha farklı alanlara yayılıyor. Node.JS gibi ekstraları sayesinde hem Server hem de Client tarafında JavaScript bilen geliştiriciler işlerini ilerletebiliyorlar.


Düşük Seviyede Çalışan Programcılar, JavaScript’i neden küçümsüyor?


Bunun en büyük nedeni insanların sadece bir dil üzerine uzmanlaştığı yanılgısından geçiyor. JavaScript giriş seviyesinde gayet kolay başlanabilecek bir dil. Ama JavaScript bilen herkes aynı zamanda sadece JavaScript biliyor diye bir kural yok elbette. Yani aslında dil fanatikliği bilgi eksikliğinden kaynaklanan bir durumdur. JavaScript ile uygulama geliştirebilen birisi C++ ile kodlama yapabilir, Android için Java kodlarıyla geliştirme yapabilir, makina öğrenmesi için Pyhton kodluyor olabilir. Web ve Web servisleri için en uygun dil olduğu için de javascript tercih ediliyor olabilir. Yani sadece bir dil ile geliştirme yapan ve o dilde uzman olan insanların başka bir dil bilmiyor yanılgısından kurtulmamız gerek.


JavaScript hayatımızda nerelerde kullanılır?


İşin içinde web olan her yerde JavaScript karşımıza çıkıyor. Neredeyse günümüzdeki tüm web siteleri javascript ile çalışır ya da en kötü ihtimalle içinde birkaç JavaScript kodu bulunur. Birçok serverda aktif olarak JavaScript çalışıyor. Cep telefonlarımızdan açtığımız “Web App” denilen uygulamalarda JavaScript çalışıyor. Slack gibi bazı popüler masaüstü programları da yine JavaScript ile çalışmaktadır.
JavaScript hangi alan için uygun değil?
Örneğin bir robot yapacaksanız ve bu konuda donanımla ilgili. Entegre devrelerde bir kod çalışmalı ve o kodun JavaScript ile hazırlanması uygun değildir. Çalışmasına çalışır ama C, C++, Java gibi diller varken JavaScript genelde tercih edilmez ve bu iş için eksik kalır.


JavaScript hızlı bir dil midir?


Hızlı dil yoktur. Bir dilin hızı o dili yorumlayan, derleyen ve çalıştıran ortama göre değişkenlik gösterir. En önemlisi ise uygulamamızın / kodumuzun ne yapmaya çalıştığına bağlı olarak değişir. Ancak JavaScript genel olarak fonksiyonları ile Web ortamları için en hızlı uygulamalar geliştirebileceğiniz dil olarak kabul görür ve Web üzerindeki işlemlerinizin de son kullanıcı bazında çok hızlı ilerlemesini sağlar. Bu nedenle Javascript mevcut ürünler arasında en iyi tercihtir.


JavaScript geliştiriciler programlama konusunda geri mi kalıyorlar?


Aslında bu konu sadece JavaScript değil tüm yüksek seviye dillerin ortak problemidir. Örneğin Pyhton geliştiriciler için de aynı şey söylenebilir. İşin temeline inilmeden geliştirme yapılabiliyor olması kolaylık sağlarken aynı zamanda tembelliği de beraberinde getirebilir. Örneğin Javascript veya Python gibi yüksek seviye dillerde bir veri setinin sıralanması için “sort” fonksiyonu çağrıldığında kimse o fonksiyonun arkasında hangi sıralama algoritmasının çalıştığını, ne miktarda hafıza kullanıldığını, gönderilen veri setine uygun olup olmadığını merak etmez veya kurcalama gereği duymaz. Fonksiyonu çağırırsın ve geriye sıralanmış veriyi alırsın. Her şeyi arka planda o dilin arkasında ne çalışıyorsa o otomatik olarak yapar. Bu da tembelliğin ve o dille çalışanların arasında yarı cahil geliştirici miktarının olmasının en büyük nedenidir. Yani aslında JavaScript ile geliştirme yapıyorken de dilin her fonksiyonu irdelemeniz ve kendinizi diğer alanlarda da geliştirmeniz sizi bu konuda eksik bırakmayabilir.
Web Geliştirmek için Javascript öğrenmek şart mı?
Günümüzde evet. Web sitesi temelde üç teknolojiye dayanır. HTML, CSS ve Javascript. Bunlar olmadan web sitesi geliştirilemez. Alternatif yolları belki var ama elbette bu kadar popüler ve üst seviye değil.


Neden Server tarafında Javascript ve node.js kullanılır?


Bunun birçok nedeni olmakla beraber en büyük nedeni eğer full stack yani hem front end hem de back end geliştirme yapmak istiyorsanız iki ayrı dil öğrenmek zorunda kalırsınız. Ancak Javascript öğrenimi ile hem front-end hem de back-end anlamda çalışabilirsiniz. Bu sayede Java, php, c#, ruby, go gibi çok farklı diller öğrenmek ve ekstra zaman harcamak yerine işinizi JavaScript ile görebilirsiniz.
JavaScript basit bir dil mi?
Javascript öğrenmesi basit ancak uzmanlaşması zor bir dildir. Giriş seviyesi konularını öğrenmek aynı pythonda olduğu gibi çok kolay ve karmaşadan, kompleks yapıdan uzak sayılır. Ancak farklı programlama yaklaşımları ve asenkron paralel iş parçacıkları ile beraber zorlaşan ve derinleşen bir yapısı var.


Javascript tarafından desteklenen programlama yaklaşımları


Javascript ile object oriented programlama da, fonksiyonel programlama da geliştirmek mümkün. İkisi için de yeterince esnek bir dildir. Hangi iş için hangi yaklaşım uygun ise onu kullanmanız için önünüzde hiçbir engel yok Javascript ile.
Ecmascript(es6) cmascript(es7) terimleri nedir?
Bu terimler JavaScript standartları diyebiliriz. Javascript geçmişten bugüne kadar çok fazla gelişti ve bu gelişim günün şartlarına göre bu standartlara göre belirlendi. O nedenle bu gelişim sürecini bilmek, dile her bir standart neden eklendi, neler çıkartıldı gibi soruları ve süreçleri takip etmek çok önemli. Bu sayede hem dile tam hakim olursunuz, yapabileceklerinizi, neleri yaparken zorlanacağınızı daha iyi tartabilirsiniz.

React, Angular, Vue, Jquery gibi şeyler nedir?


Bunlar JavaScript’in Framework kütüphaneleridir. Kütüphaneler bildiğiniz gibi her dil için özel olarak bulunur. Java, C# gibi diller başta olmak üzere tüm programlama dillerinin Frameworkleri vardır ve bu sayede hangi özellikleri alabilecekleri, özelliklerin, fonksiyonların nasıl kullanılacağının standartları belirlenir.
Bu frameworklerden Jquery biraz ayrışıyor ve 10 yıldan fazladır Javascript dili geliştirilirken en popüler kütüphane Jquery oldu. Bu dille web geliştirme yaparken birçok detaylı işi kolaylaştırmış oluyorsunuz. Diğer tarafta react(Facebook’un arkasında olduğu kütüphane), angular(arkasında Google’ın olduğu kütüphane) ve Vue gibi kütüphane ve frameworkler daha güncel, web geliştirmeyi kolaylaştıran teknolojiler.


JavaScript’de başka kütüphaneler var mı?


JavaScript’in en popüler ve kullanılan frameworkleri bunnlar. Ancak milyonlarca JavaScript kütüphanesi var ve her gün yenileri de ekleniyor. Tüm bu kütüphane ve frameworklerin tutulduğu toplu alana NPM yani Node Package Manager denir.


JavaScript öğrenmek için hangi programları kurmam gerekir?


İlk aşamada hiçbir şey kurmak gerekmez. Bilgisayarda Firefox, Safari, Chrome, Opera gibi browserlar var ise o browserda “developer console” nasıl açılır gibi küçük bir araştırma yapıp orada ilk javascript kodunuzu yazabilirsiniz. Bu browserların hepsi javascript çalıştıran programlardır. Hepsinde bulunan “Developer Console” kısımları ise JAvaScript kodlarınızı çalıştırabileceğiniz kod editörleridir.
Browser dışında JavaScript yazmak
Elbette JavaScript yalnızca browserda yazılmıyor. Birçok kod editor ve ide, JavaScript çalıştırmaya uygundur. Vscode, Sublime Text Editor, Atom, notepad++ ve intellij idea, JavaScript yazmak için ideal yöntemlerdir.


Peki yazdığım kodu nasıl çalıştıracağım?


JavaScript çalışmak için bir browser ya da node.js çalışma ortamına ihtiyaç duyar. Bilgisayarınızdaki bu browserlardan birisinde kodlarınızı test edebilirsiniz.


Javascript’de ilk hangi konuyu öğrenmeliyim?


İlk olarak var, let, const gibi konular, sonrasında array, object, fonksiyon, methodlar gibi konular. Ardından if, if-else methodları, switch case gibi konular, bunları takiben ise for, while, do-while konuları öğrenilebilinir.
Ki zaten fark ettiyseniz benzer konular tüm programlama dillerinde aynı. Temelde tüm programlama dilleri aynı yöntemlerle sadece farklılaştırılmış isimlerle çalışır. Hangi dili öğrenirseniz öğrenin(Java, C#) büyük ihtimalle çoğunda Array listler, fonksiyonlar, objectler, methodlar, if-else methodları karşınıza çıkacaktır ve programlama temelini anlamanızı sağlayacaktır.
Daha zor konular yok mu?
Elbette var. Object Orianted Programlama, inheritance, encapsulation gibi konuları da var. Fonksiyonel programlama “higher order functions” gibi konuları da mevcut. Closure, monads da bunlara örnek gösterilebilir. Yine de başlangıç için biliyor olsanız dahi temel aşamalara göz atmak daha sağlıklı olur.
Özellikle JavaScript öğrenirken yorumlayıcı ve event loopların nasıl çalıştığını iyi anlamanız gerekir. Her şey bu temel üzerine kuruludur.

Bu dili öğrenmesi ne kadar sürer?


Bu soru kişiden kişiye göre değişir. Hiç programlama bilmeyen birisi JavaScript temelini bir ayda öğrenebilir. Java veya Csharp bilen birisi is temelini 1 günde öğrenebilir. Ama temelini öğrenmek elbette bu dille ortaya bir şeyler koyabilmenize olanak sağlamaz.
JavaScript ile uzmanlaşmak ne kadar zaman alır?
Uzmanlaşmak demek bir ömür sürecek bir süreçtir. Her dil hiçbir zaman durduğu gibi yerinde sabit durmuyor. Hele de JavaScript ortamlarda en hızlı gelişme gösteren dil sayılır. Şartlar her zaman piyasanın ve teknolojinin ihtiyaçlarına göre güncelleniyor ve bu güncelleme genelde bir kişinin uzmanlaşma hızından daha çabuk ilerliyor. Örneğin 3 yıl önce Javascript konusunda uzmanım diyen birisi bu üç yıl boyunca hiçbir konuyu takip etmemiş olsaydı bugün her şeye yeniden başlaması gerekirdi. Çünkü 3 sene önce Javascript bugünkü temelleriyle aynı olsa da çok büyük değişiklikler içeriyor.


JavaScript’de uzman olduğumu nasıl anlarım?


Aslında bu zor bir soru. Uzman olmak için birçok ihtiyaca göre kod yazıp çözüm üretebiliyorsan ve sıfırdan üretimler gerçekleştiriyosan o zaman kendinize JavaScript geliştirmede uzmanım diyebilirsiniz. Gün gelir veri şifreleme, gün gelir web arayüz tasarımı olarak değişir. Yine de hangi dilde olursa olsun dile hakimim ve uzmanım demek çok iddialı bir tanım olur ki yıllardır dünyanın en iyi developerları dahi kendini kolay kolay uzman olarak tanımlamaz.

Yazının orjinali Emrah Dayıoğlu’na aittir.

http://www.emrahdayioglu.com

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir