Bir müddət əvvəl bəzi problemlər yaşadığım üçün proqramlaşdırma sahəsinə Python proqramlaşdırma dili ilə davam etmək qərarına gəldim. Bu yazı hər hansısa Python vs PHP tərzində bir məzmun deyil. Bu barədə internetdə kifayət qədər məlumat tapa bilərsiniz. Mən qısaca subyektiv səbəblərimdən bəhs edəcəyəm.
İşlə əlaqədar Berlinə köçdükdən sonra burada anti-fraud (fırıldaqçılıq) ilə əlaqədar layihə üçün bir şirkətdə işə başladım. Əsas layihə yəni fraud layihəsi tam başlayana qədər digər layihələrə dəstək verirdim. Digər layihələrdə ümumilikdə PHP istifadə edilir. Proqramlaşdırmaya PHP ilə başladığım və mənə həqiqətən çox rahat olduğu üçün bu dilə xüsusi rəğbətim var. Bu hələdə belədir, ancaq artıq Python-a keçmək vaxtı gəldiyini hiss edirəm. Bu mərhələdə normal olaraq “Niyə?” sualı çıxır ortaya.
Niyə PHP-dən uzaqlaşıram?
Hal-hazırda komandamız eyni vaxtda bir neçə fərqli layihəyə dəstək verir. Hər layihə özünəməxsus arxitektura ilə yazılıb, baxmayaraqki ümumilikdə komplekslilik və həcm etibari ilə hər biri aşağı-yuxarı bərabərdir. Bundan başqa hər yeni layihəyə başlamamışdan əvvəl komanda da “necə yazaq?“, “arxitektura necə olsun?” tipli suallar çıxır. Hər kəs fərqli düşündüyü üçün normal olaraq hər beyindən bir səs gəlir və nəticədə qarışıq bəzən isə heç bir “Design Pattern“-ə uyğun olmayan layihələr ortaya çıxır. Etiraf etməliyəmki bəzən bir sonrakı mərhələ development-i asanlaşdıran variantlar çıxır, amma bu standartları çeynəmək olar mənasına gəlməməlidir (ən azından mən belə düşünürəm).
Ümumilikdə layihələrdə DDD (Domain Driven Design) tətbiq etməyə çalışırıq. Bu yanaşma özündə konkret arxitektura ehtiva etmədiyi üçün, bir çox hallarda fərqli nəticələr ortaya çıxır. PHP proqramlaşdırma dilinin ən böyük mənfi cəhətlərindən biri qəbul olunmuş konkret standartları olmadığı üçün çox fərqli arxitekturalar görmək mümkündür. Bəzilərinin “orada dayan bir dəqiqə, bəs PSR standartlarını unutdun” dediyini hiss edirəm. Xeyr unutmadım, bəli PSR standartları var, amma tətbiq olunurmu və ya olunursa hər kəs eyni qaydadamı tətbiq edir orası biraz məchuldur. Bura onlarla digər səbəblər də daxildir, hansıki konkret texniki analizlərə gedir və yazını çox uzatmaq istəmədiyim üçün o mövzuya toxunmayacam. Vaxt tapıb bu barədə ayrıca bir məqalə yazmağı düşünürəm.
PHP 7-ci versiyadan etibarən çox böyük dəyişikliklər etdi və bu bildiyimiz “PHP performans olaraq zəifdir” arqumentinin üstündən xətt çəkdi. Buna baxmayaraq hələ də digər dillərlə müqayisədə geri qalır. Təbiiki siz xüsusi vasitələr istifadə edərək bunu aşa bilərsiniz, misal üçün Phalcon framework istifadə edərək digər dillərdən qat-qat üstün performans əldə edə bilərsiniz və ya Zephir proqramlaşdırma dili istifadə edərək özünüz PHP üçün xüsusi əlavələr yazmaqla kifayət qədər yaxşı performans əldə edə bilərsiniz. Bu üstünlüklərə baxmayaraq PHP-in “kobud” bir dil olduğunu dana bilmərəm.
Bəs niyə Python?
Qısaca hər dəfə proqramı yazmağa başlayanda necə yazaq və s. tipli sualların ortaya çıxması və proqram yazılmağa başlayanda fərqli ideyaların (söhbət arxitektura üçün ideyalardan gedir) tətbiqi, layihəni yazmaqdan daha çox anlamağa və necə qurulmasının planlaşdırılmasına gedir. Python isə ümumilikdə konkret qəbul olunmuş standartları özündə ehtiva etdiyi üçün velosipedi yenidən yaratmağa səbəbiyyət vermir. Proqramçıya sadəcə biznes modelə uyğun olan proqramı yazmaq qalır.
Ekstra olaraq mənim Maşın Öyrənməsi ilə əlaqədar işlər görəcəyim üçün Python daha çox işəyararlığı da buna səbəblərdən biri oldu. Çünki bu sahə ilə əlaqədar PHP-in mövcud olan sadəcə bir kitabxanası var və bu sahənin kiçik bir hissəsini əhatə edir.
Son olaraq …
… demək istəyirəm ki, bu yazı “PHP-ni atın keçin Python-a” mesajını verir kimi çıxsada, məqsəd heçdə o deyil. PHP-in digər dillərdən öz sərbəstliyi ilə üstünlük təşkil etdiyi sahələr var, hansıki orada zaman faktoru önəmlidir, o sahələrdə tətbiq edilməlidir fikrindəyəm. PHP hər zamankı kimi ürəkdir (❤) və bu dilə dəstək üçün vaxt olduqca açıq qaynaq kodlu kitabxanalar yazacağam bu dildə, amma məcbur olmadığım müddətcə biznes layihələrdə istifadə etməməyə çalışacağam.