Scripting (Betik) Dillerinden Programlama Dillerine Geçiş(Php ve Golang)

Burak Hurata
3 min readJul 23, 2020

--

GİRİŞ

Eğer bir yeni başlayansanız aklınızda scripting dillerinin bir programlama dili olup olmadığı konusu takılacaktır öncelikle buna bi açıklık getirelim. Aslında temelde bu bağlamda bahsettiğimiz tüm diller birer programlama dilidir. Golang’e programlama dilidir derken PHP için programlama dili değil diyemeyiz. Ama aralarında temelde bazı farklar onları kategorileştiriyor.

En belirgin fark bir programlama dilinin derlenmesidir. Scripting dilleri ise yorumlanır. Örneğin Golang’e çalıştırma komutunu verdiğimizde bi bütün olarak compiler edilir ve çalışır. Yorumlanabilirliği daha belirgin olarak anlamanız için Javascript’i örnek verirsek kodlar tarayıcı tarafından yorumlanarak çıktı verir. Sctipting ve Programlama dilleri arasındaki farkları detaylı olarak incelemek adına buradaki makaleyi okuyabilirsin. Şimdi size pratikteki deneyimlerimden bahsedeceğim.

Veri Türleri

Aslında PHP yazarkende veri türleri üzerinde bilgi sahibi olabiliyoruz. Ama çoğunlukla bu veri türlerini veritabanı üzerinden yönetiyoruz. Bu durum veri türleri üzerine bilgi sahibi olsanız dahi pratikte kullanılmayan bilgiler çöplüğünde kayboluyor. Golang’de kodlamaya başlar başlamaz veri türleri üzerine okadar çok işlem yaptımki adeta o kaybolan bilgilerimi tazeledi ve beni veri türleri üzerinde daha derin bilgiye sahip olmam için ateşledi diyebilirim. Ateşlemekten öte mecburdum :)

Programlama Dilleri Öğreniyoruz Peki Ya Nasıl Çalışıyorlar?

Evet yine PHP yazmanın bunun için bir engel teşkil etmediğinin farkındayım ama compiler edilen bir dilin verdiği tepkiler direkt olarak bilgisayarın dile verdiği tepkileri sergiliyor. Scripting dillerinde ise çoğunlukla bir yorumlayıcının verdiği tepkileri gözlemliyoruz. Ne demek istediğimi bir örnekle açıklayayım.

Örn:// Multi Threading Programing (Çoklu İş Parçacığı Programlama)

Bundan bir kaç ay önce başlayan bir proje için hayatımda ilk defa multi threadlere ihtiyaç duydum. Golang’e giriş amaçlarımdan biriside buydu bana native(yerleşik) olarak multi thread desteği sunuyordu. Golang’de aslında threadler yerine “Green Thread” denilen Goroutine’ler var threadlerden farklı olarak runtime anında oluşturuluyorlar. Goroutine ve Thread arasındaki farklara başka bir makalede değinilebilir. Şimdilik Goroutine’leri standart bir thread olarak düşünelim çünkü farklarını öğrenene kadar benim için öyleydiler :) Threadlerin yönetimi ve oluşturulması kernel üzerinde gerçekleştiği için projemde kullanılırken oluşturulan threadleri takip edebilmek, işletim sisteminin tepkilerini gözlemlemek istedim dolayısıyla dilin direkt olarak işletim sistemi üzerinde tepkilerini öğrenmek zorunda kaldım.

Bu kısmın özeti: Programlama dileri sizi CPU’dan RAM’e orada işletim sisteminin tepkilerine kadar hakimiyete zorluyor ve bambaşka ufuklar açabiliyor.

Performans

Eğer ciddi anlamda performans gerektiren projelerle çalıştıysanız ve bir programlama dili kullanmadıysanız…. Kullanın. PHP ile de performans gerektiren sistemler geliştirdim. Ve hatta milyonlarca veriyi işlemem gereken sistemler geliştirdim. Aynı şekilde şuan üzerinde çalıştığım projede çok büyük dataların işlenmesi üzerine. Aradaki farkı kısaca şöyle açıklayabilirim

=> PHP ile yüzbinlerce veri işleyebildiğim sürede Golang ile onmilyonlarca veri işledim.
=> PHP için gereken sistem gereksinimlerimin neredeyse yarısıyla bunu başarıyorum.

Programlama dilleri bunu kodları compiler ederken bilgisayar diline çevirmesiyle sağlıyor. Tabii tek etken değil ama scripting dillerine göre bariz performans farkının temelinde bu yatıyor.

Özetle

Eğer bir scripting dilinden geliyorsan, benim gibi yazılım hayatının büyük bir bölümünü PHP, javascript gibi scripting dillerinde geçirdiysen. Mutlaka bir programlama dili öğren. Bambaşka bir perspektif ve bolca bilgi sağlıyor ve direkt olarak Golang, C#, Java gibi diller üzerinde hakimiyet kurabilmiş insanların neden daha bilgili mühendisler olduğunu anlayabiliyorsun.

Yukarıda bahsettim başlıklara “Veri türleri, programlama dillerinin nasıl çalıştığı, performans” evet scripting dilleri üzerinden de hakimiyet kurabiliriz ama edindiğim tecrübe programlama dillerinin bu konuları sadece yazılan kodun verimliliği üzerine işlemediği.

Meramımı açıklayabilmiş olmanın umuduyla….

--

--