v2.5.2
Giriş yap

merakım var

Anonim
764 defa görüntülendi

web yüzü için php en ideal ve yeterli bir dil değil mi ? neden son yıllar da react kullanılmaya başlandı veya php ne moruk öldü denilmeye başlandı ? google instagram tw gibi platformlar da reactı tercih etti bunun sebebi nedir merak ediyorum düşüncelerinizi paylaşırsanız sevinirimm

ebykdrms
927 gün önce

Öncelikle PHP ve React web yazılımda farklı amaçlar için kullanılıyor. React front-end, PHP back-end için kullanılıyor.
PHP'nin ölmedi. Hatta hastalanmadı bile. Ne bir öksürük, ne bir burun akıntısı... Sapasağlam ve gelişmeye devam ediyor.
PHP yerine diğer back-end teknolojilerinin (C#, NodeJS, Go, Java, Python...) tercih edilmesinin kendince nedenleri var. Bunlar yerine PHP tercih edenlerin de kendince nedenleri var.
Öncelikle, özellikle Türkiye'de PHP çok tercih ediliyor. Çünkü öğrenmesi kolay. Topluluğu çok geniş ve sorunlara çözüm bulmak kolay. Ücretsiz olarak dilediğimizce kullanabiliyoruz. Derlenen değil yorumlanan bir dil olması sayesinde kodu güncellemek kolay. Gelişmiş ve halen gelişen birçok framework'e sahip. Türkiye'de paylaşımlı sunucular en iyi PHP ve MySQL'i destekliyor ve böylece çoğu site en ucuz yol olarak PHP'yi tercih ediyor.

PHP öldü diyenler genellikle NodeJS severler. Neden NodeJS peki?
Öncelikle javascript'in gücü burada devreye giriyor. Eğer PHP biliyorsanız web yazılımla ilgileniyorsunuz demektir. PHP ile sadece web API yazmamışsınızdır ve illaki web sitesi de geliştirmişsinizdir. Web sitesi geliştirdiyseniz ister istemez javascript'i de kullanmak zorunda kalmışsınızdır. Javascript biliyorsanız back-end olarak PHP yerine NodeJS kullanmak da mümkün. Yani sadece tek bir dile hakim olarak hem front-end hem back-end geliştirebiliyorsam bu benim için bir NodeJS tercih nedeni olabilir. Bakış açısı tabi. Mesela ben back-end ve front-end olarak farklı diller kullanmayı daha çok severim. İkisi arasında geliş yaparken mentalite olarak da geliş yapmış olurum.
Ayrıca front-end olarak React, Vue, Svelte vs kullanıyorsam bunlara uygun hazırlanmış back-end teknolojileri mevcut. React ile NextJS kullandığınızda front-end ve back-end uyumunu oldukça artırmış oluyorsunuz. Eğer projenizde React kullanacaksanız ama SEO için endişeleniyorsanız server-side rendering yapmanız gerekir. Bunun için de NextJS en uygun back-end teknolojisidir. PHP ile React'ı server-side render etmek için taklalar atmanız gerekir. Böylece front-end için React'ın tercih edilmesi, yazılımcıları bi'şekilde yine Next'e, yani NodeJS'e yönlendirmiş olur.
NodeJS, PHP gibi sadece web ortamı için kullanılmaz. NodeJS temeline dayanarak mobil uygulama ve masaüstü uygulama da geliştirebilirsiniz. PHP ile masaüstü uygulama yazmak zoraki bir yaklaşım olur. Mobil taraftaysa PHP ile sadece API yazabilirsiniz. Mobil uygulamanın front-end'i için yine başka bir dil bilmeniz gerekir. Yine iş dönüp dolaşıp şuna geliyor: "Tek dille hem web, hem masaüstü, hem mobil uygulama geliştirebileceksem en güzeli sadece o dile yoğunlaşmak!" diye düşünüyor insanlar.
NodeJS'nin çalışma mantığı da birçok yazılımcının hoşuna gider. Mesela bir array'ı başka bir array'a eşitlediğinizde aslında elinizde 2 tane array olmaz. Biri diğerini referans almış olur. Böylece birinde yaptığınız değişiklik diğerinde de aynen yapılmış olur. Bu da sunucunun geçici hafızasında daha az yer tutulması demektir. Kodun derlenerek çalıştırılıyor olması da ayrı bir performans getiriyor. Asenkron çalışmayı kolaylaştırması meselesi de var. Yani NodeJS ile yazdığınız proje büyük ihtimalle PHP'den daha performanslı çalışacaktır.
Bir de PHP bilgisini hızlı iş çıkarmak için kullananların piyasada güven kırması meselesi var. "PHP güvenli değil!" diye yanlış bir inanç var. PHP'nin kolayca öğrenilebilmesi ve PHP ile uygun maliyetlerle basit işlerin kolayca internette yayına alınabilmesi, bazı yazılımcıların hızlı para kazanabilmek için özensiz kod yazmasına zemin hazırlıyor. "Benim lisedeki yeğenim de web sitesi yapıyo" deyip o yeğene verilen işler güvenlik açıklarıyla dolu oluyor çünkü yeğen kendini henüz yeterince geliştirmemiş olmasına rağmen PHP ile kolayca bir web sitesini ayağa kaldırabiliyor ama yeğen henüz güvenlik açıklarının ne olabileceğini bilmiyor. Böylece PHP ile yapılan sitelerin çoğu güvenlik açıklarıyla yayına alınıyor. Bunun sorumlusu olarak da yazılımcılar değil PHP görülüyor. Oysa diğer dillerle uğraşan yazılımcılar o dili öğrenmek için daha fazla emek vermek durumundalar. Örneğin NodeJS ile basit bir projeyi bile yayına almak için birçok terimi öğrenmiş oluyorsunuz. HTTP isteği nerden gelir, yanıt nasıl oluşuyor, proje derlendikten sonra nasıl bir çıktı oluşuyor vs bilmelisiniz. PHP öyle değil. Dosyalarınızı FTP üzerinden sunucuya atarsınız ve çalışır. Bir değişiklik yapmak istediğinizde sunucudan ilgili PHP dosyasını açar, ilgili değişikliği yapar ve kaydedersiniz. Artık güncellemeniz yayındadır. NodeJS içinse güncelleme yaptıktan sonra projenin yeniden derlenmesi ve derlenmiş kodların sunucuya aktarılması, sunucudaki projenin durdurulup yeniden başlatılması falan gibi ek işlere girersiniz. Haliyle bunları yaparken ister istemez kendinizi geliştirirsiniz. Bunları öğrenirken yanında NodeJS'yle ilgili birçok başka detay da öğrenirsiniz. Yani NodeJS, C#, Java vs sizi zorla içine çeker. PHP ise neredeyse işe dün başlayanın bugün web sitesi ayağa kaldırabileceği kadar basitçe kullanılabilir. Yani PHP bile nüfusun çok olması, PHP ile yapılan daha kalitesiz (güvenliğe, performansa dikkat edilmemiş) işlerin de çok olması anlamına geliyor.
Kalitesiz işlerin çoğunu A RH + kan grubuna sahip yazılımcılar kodlamışlardır. Neden? Çünkü çok fazla yazılımcı A RH + kan grubuna sahiptir. Elbette kalitesiz işin sorumlusu kan grubu da değil PHP de değil. Gel gelelim işin tezatlığı da burada. Öldü denen PHP halen piyasayasa hakim ve en çok bilinen dil.

PHP öldü diyenlerin bir kısmı da Python sever. Python gerçenten çok güçlü bir dil. Ama web yazılımcısı için Python mu PHP mi dersen, ben gözüm kapalı PHP seçerim. Python neden seviliyor peki? Çünkü özellikle yapay zeka alanında pek çok hazır paket sunuyor. Çok fazla hazır paket kolayca kullanılabiliyor. İnternetten hazır paketleri ve örneklerini alıp 10 dk harcayarak bilgisayarınızda çalıştırıyorsunuz ve kendinizi "Ben yüz tanıyan görüntü işleme yazılımı geliştirdim!" diye ortalıkta dolanma hakkına sahip görebiliyorsunuz.
Python syntax olarak da size düzgün çalışmayı zorunlu tutuyor. Girintiler çıkıntılar dikkatli kullanılmalı. Python kullanıyorsanız PHP veya javascript gibi başı sonu belli olmayan bir if bloğu kodlayamazsınız. Temiz kod yazmak zorundasınız. Bu zorunlulukla yazılan kodlar, Python'a yeni başlamış "lisedeki yeğen"in bile düzgün görünen yazmasını sağlıyor.
Python pek kullanmadım ama gerçekten hoşuma giden bir dil. Ama büyük veri işleyeceğim bir projede çalışmadığım sürece çok da tercih edeceğim bir dil değil.

C# tarafı benden uzak dursun. Özellikle Visual Studio çok uzaklarda dursun. Hiç keyif almıyorum bu dilden. Özellikle web geliştirmede çok fazla güncelleme geliyor ve gerçekten iyi gelişiyor. En son Core 3 mü vardı, .NET 5 mi vardı ne vardı bilmiyorum o derece uzak kaldım. Ara sıra okuduğum kadarıyla orada heyecan verici güzel gelişmeler oluyor ama ben her yeni versiyonla önceki versiyonun eski kalması meselesini takip etmekten yoruldum ve o dünyadan ayrıldım. Bir telefon alıyorsunuz. Daha 1 yıl geçmeden yeni bir telefon çıkıyor ve sizinki eski teknoloji oluveriyor. Tam onu almak için uğraşıp onu almışken yeni bir telefon geleceğine dair duyuru yapılıyor. Siz yine eski teknolojide kalıyorsunuz. Üzerinde çalıştığınız büyük projeniz var ve bunu CORE 2'den CORE 3'e geçirmek de proje kadar büyük problem. Siz CORE 3'e geçerken NET 5 geliyor. Siz ona geçerken bunun 6'sı çıktı diyor Microsoft. Yok efendim Visual Studio 2017 kullanıyorsunuz ama yeni çıkan teknoloji minimum 2019 kullanmanızı istiyor falan.
Gel gelelim artık C# da Windows bağımlılığından kurtulumuş bir dil. Sadece C# bilerek masaüstü, web ve mobil uygulamalar geliştirmeniz mümkün. Özellikle iyi bir bilgisayarınız varsa ve Visual Studio ortamını da seviyorsanız size açtığı kapı öyle geniş ki... Unity de sanırım şu an C# kullanıyor ki bu da 3d oyunları bile rahatlıkla yapabileceğiniz anlamına geliyor. C# kullandığınızda arkanızda Microsoft desteği var. Yani yarın "ben sıkıldım" deyip C# bilenleri ortada bırakacak bir firma değil. Ama onu sürekli takip etmelisiniz ve eğer ticari gelir elde ediyorsanız ona para da kazandırmalısınız. Ayrıca kod yazarken onun standartlarına uymalısınız. PHP gibi kafanıza göre kod yazamazsınız. Nesne tabanlı programlama yapmalısınız bi'defa... Yani web yazılım geliştirmeyi yeni öğrenmiş bir PHP'cinin kafasına göre sağa sola yazabildiği kodları C#'cı bu kadar özgür yazamaz. Her şey bir kurala bağlıdır ve bu kuralları öğrenirken kendinizi ister istemez geliştirirsiniz. İlk kez web yazılım yapan C#'çının yazdığı kod da ister istemez daha iyi olur. Bu da yine piyasada C# ile geliştirilen projenin daha profesyonel olduğu algısını uyandırır. Oysa bu beceriye PHP de sahiptir ama PHP sizi özgür bırakır. Bu özgürlük de projeye her katılan yazılımcının projeyi kendi yoğurt yeyişine göre bi'şeyler dahil etmesine imkân verdiği için bir çok proje PHP ile karman çorman bir hale gelebilir. Bu yüzden PHP ile büyük proje kodlanacaksa mutlaka tutarlı ve yazılımcıların hakim olduğu bir framework kullanılmalıdır. O zaman da insanlar diyor ki "Zaten PHP ile düzgün bir iş yapacaksam herkesin uyguğu belli standartlara göre kodlama yapıyorum. O zaman neden C# dururken PHP kullanayım?"

Yani aslında her dilin kendince artıları eksileri var. Çoğu da bakış açınıza göre değişen şeyler. Web için en ideal dil PHP'dir demek tamamen sizin bakış açınıza bağlı. Ben PHP seviyorum. Diğer dilleri de kendi avantajlarına göre seviyorum. C#'ı bütün avantajlarına rağmen sevemiyorum ama belki şimdi baksam son halini severim.

Front-end için neden React kullanılıyor? Bir sürü nedeni var. Saf javascript ile front-end'de büyük projeyi yönetmek çok zorlaşıyor. React'ın bileşenler halinde çalışması, DOM üzerinde gerekli olmadığı sürece güncelleme yapmaması, hazır modülleri, derlendikten sonraki çıktısının minimize edilmiş olması vs bir çok neden var.
JQuery çok iyi ve halen çok kullanılıyor ama ne yazık ki yıllardır yenilenmiyor.
Bugün React mı Vue mi derseniz Vue derim.
Vue mi Svelte mi derseniz Svelte derim.
Svelte dururken neden halen React'ta ısrar ediliyor? Çünkü React çok uzun zamandır kullanılarak piyasaya hakim oldu. Eh, arkasında Facebook (artık Meta) var. Populerliğini başarıyla koruyor. Ayrıca yıllar içinde yazılımcılar React'a çok fazla modül yazdılar ve çok fazla hata üzerinde çok fazla çözüm üretildi. Mesela Svelte'de bir sorun yaşadığınızda çözüm bulma ihtimaliniz React'a göre daha zor. Çünkü kimse Svelte'i büyük projelerde kullanmaya çalışmıyor. React piyasada da öyle çok kullanılıyor ki işe yeni başlayacak olan biri iş imkânlarını da göz önüne alınca React'ı seçiyor. Svelte'i mükemmelen öğrenmiş olsanız bile nasıl para kazanacaksınız? Kendi projeniz olsa Svelte ile geliştirebilirsiniz. Ama projeniz büyüdüğünde ve size bir yardımcı gerektiğinde sizin kadar iyi Svelte bilen birini bulabilecek misiniz? Zor... Ama React'ı her düzeyde bilen çok sayıda yazılımcı bulabilirsiniz.
Ayrıca React sadece React değil. Çok benzer yazım kuralları ile React Native de var ki bu da React bilen birinin kolaylıkla (yani native dilleri öğrenmeye nazaran kolaylıkla) hem Android hem IOS için mobil uygulama geliştirmeyi öğrenebileceği anlamına geliyor. React Native de alternatifsiz değil ama o da çok büyük bir topluluğa sahip. Svelte ile Native Script alt yapısıyla mobil uygulama geliştirebilirsiniz ama hem bu konuda eğitim bulmak zor, hem geçmişte karşılaşılmış sorunlar az, bunlara verilen doğru cevaplar daha az...
Oysa ki Svelte ve React'ı karşılaştırsak Svelte hem performans olarak hem kullanım kolaylığı olarak harika. Ama nasıl ki piyasa JQuery'den kolay kolay vazgeçemiyorsa React'tan da kolay kolay vazgeçemez.
Ayrıca Instagram zaten Meta şirketinin olduğu için React kullanmazsa kendi topuğuna sıkar. "Daha siz kendi projenizde bile React kullanmıyorsanız biz niye kullanalım?" der insanlar. Dalga çerlerler. Hor'larlar! Meta'nın React kullanması, React'ın sorunlarını birinci elden görmesi açısından da iyi zaten.

Gelelim "PHP öldü mü? JQuery sağ mı?" meselesine... PHP ölmedi ve bu kadar kolay olduğu sürece ölmesi zor. Bütün dünyada ölse herhalde en son öleceği ülkelerden biri Türkiye olur. Çünkü tam bizim kafamızda bi'dil. Çünkü her işimiz çok acil. Çünkü daha az maliyetle hemen bi'şeyler ortaya çıkmalı. Bi'güncelleme hemen yapılmalı ve yayına geçmeli. Lisedeki yeğenizizin bile az biraz bildiği bir dil olmalı ki çalıştırılacak çok yazılımcı bulunabilsin ve böylece daha ucuza yazılımcı çalıştırılabilsin... Yani bizim bugünkü kafamıza çok yatan bir dil PHP.
JQuery de aynı şekilde. Bugün belki React bilmek daha havalı geliyor ama JQuery öğrenmek PHP öğrenmekten daha da kolay. Front-end'de çok hızlı aksiyon alabileceğimiz bir yapı sunuyor.

Bana sorarsanız PHP candır. JQuery de candır. İkisini de yazmak eğlencelidir.
PHP web için çok uygundur. Diğer dillerin en büyük avantajı kendilerini web'le sınırlandırmamış olmaları. Yoksa web üzerinde diğer dillerle yapıp da PHP ile yapamayacağınız pek bi'şey yok. Ama bazen taklalar atmanız gerekebilir tabi. Mesela socket.io gibi NodeJS üzerinde soket bağlantısı kuran bir yapıyı PHP ile kurmak zahmetli.
JQuery front-end için çok uygundur. Diğerlerinin en büyük avantajı işleri daha organize hale getirebilmiş olmalarıdır. Keşke bir ekibim ve zamanım olsa da JQuery 4'ü yazabilsem...

Ama gelecek için soruyorsanız, büyük projelerin yöneten şirketler mümkün olduğunca diğer yapılara geçmeye çalışıyorlar. Yani büyük proje yöneten bir şirket PHP kullanıyorsa bile imkân bulsa hemen NodeJS veya .NET tarafına geçer. Front-end kısmında da JQuery kullanan bir firma ilk fırsatta React gibi bir yapıya geçmek ister. Çünkü büyük proje artık büyük ihtimalle çok karmaşık bir hale gelmiştir ve yeniden ele alınması gerekiyordur. Hazır yeniden ele alınmışken de en populer dillere geçiş yapılması pek güzel olacaktır.
Hal böyle olunca gelecekte PHP için yazılan kütüphanelerin sayısı azalacak. JQuery için zaten durum böyle. Artık front-end'deki her yeni proje öncelikle React'ı alternatifiyle birlikte çıkarılıyor. Git hesabına girip baktığınızda size kurulumu anlatırken hemen nasıl npm ile install edebileceğiniz yazıyor. JQuery için geçmişte yazılmış kütüphaneler artık pek fazla güncellenmiyor. Çünkü o kütüphaneleri yazacak kadar kendini geliştirmiş yazılımcılar artık daha iyi para kazanabilmek için React gibi yapılara geçmek zorunda kaldılar. Yeni gelen yazılımcılar da çoğunlukla kendilerini React'a girmek zorunda hissediyorlar ve JQuery'i geliştirecek kitle git gide azalııyor. Aynısı PHP için de geçerli tabi.

"Madem öyle neden sen PHP'yi kullanıyorsun?" derseniz şöyle bir cevap verebilirim: Ben profesyonel ortamda şirketimin isteği gereği NodeJS ile çalışıyorum. ExpressJS ile web API geliştiriyorum. React-Native ile mobil uygulama geliştiriyorum. Web front-end'i için halen JQuery kullanıyoruz ama şirkette React'a geçiş için çalışmalar başlattık. Çünkü büyük projelerde çalışıyoruz ve JQuery artık bunu kaldıramıyor. Svelte'i denemek de bu ölçekteki proje için güvenilir değil. En yaygın ve halen populer teknoloji olarak React en iyisi. Ayrıca back-end tarafında da bir katman olarak React ile uyumundan dolayı NextJS kullanmayı planlıyoruz çünkü hem cache'leme mekanizması hem React ile uyumu hem javascript performansı derken oldukça uygun görünüyor.
PHP'yi ve JQuery'i freelance işlerde tercih ediyorum. Çünkü bunlar hakim olduğum teknolojiler ve hızlı iş çıkarabilmemi sağlıyorlar. Sonradan müşterim bir problemle karşılaşırsa girip düzeltmesi çok kolay oluyor. Freelance olarak büyük projelere girişecek zamanım yok. Haliyle PHP ve JQuery benim için çok uygun. Tabi bu PHP ile büyük proje geliştirilemez demek değil. Şu an PHP ile büyük proje yöneten şirketler de biliyorum ve gayet mutlular.

Aslında bir proje büyüdüğünde tek dil yetmemeye başlıyor. Projenizi katmanlara bölmek durumunda kalıyorsunuz ve farklı katmanlarda farklı teknolojiler kullanmanız daha uygun olabiliyor. Aynı projede hem PHP'den, hem NodeJS'ten, hem Python'dan yararlanmanız uygun olabiliyor. Mesela bir yapay zeka işlemini PHP ile yapmaya çalışmaktansa Python'da yapmanız daha uygun olacaktır. Sık güncellenmesi gerekebilecek API'ları PHP ile kodlamak daha uygun olacaktır. Çok fazla istek alacak endpoint'ler için ExpressJS iyi olacaktır. Projenize göre değişiyor yani...
"Bu işlere yeni başlayan biri ne yapmalı?" derseniz, web tabanlı işler yapmayı öncelik edinen biri için öncelikle html-css-javascript mecbur zaten. Sonra internete açılmak için uygun maliyetli, Linux üzerinde çalışan bir shared hosting alıp PHP ile back-end işlemlerine giriş yapılabilir. Aslında önemli olan başlamak. En kısa yol diye bi'şey yok. Güzel ve güvenilir işler ortaya çıkarmak, çalışan bi'şeyler ortaya koymak lazım. Sonra piyasa yazılımcıyı yönlendirecektir. Ama her şeyi denemeye zaman ayırmak lazım. JQuery başlangıç için harikadır ama onun büyüsüne kapılıp React'ı öğrenmekten kaçamazsınız. React bi'yerde mutlaka sizi kendine mecbur bırakır. React'ın ortamına alışıp Svelte'i göz ardı edemezsiniz. Çünkü yarın React da yeni yaklaşımlarla kendini geliştiremezse "hantal teknoloji" olarak anılmaya başlanacak. Svelte çok güzelmiş deyip py-script'e bakmadan geçmemelisiniz. Belki de yarın front-end'de Python veya PHP kullanabilir hale geleceğiz ve bu da bizi bambaşka yapılara dallandıracak kim bilir...

İçimi dökesim varmış... Neyse yeter bu kadar :D