مهاجرت از پی اچ پی به پایتون

مهاجرت از پی اچ پی به پایتون
آفلاین
user-avatar
عرفان حشمتی
19 دی 1399, خواندن در 7 دقیقه

من یک دهه است که توسعه دهنده و طرفدار پی اچ پی هستم. پی اچ پی دیدگاه من را در مورد اینکه یک زبان برنامه نویسی چگونه باید باشد شکل داد. اکنون من به اردوی پایتون می‌پیوندم و دلایل خود را در زیر ذکر کرده‌ام.

کد مختصر

چند بار باید چشمان خود را بمالید و به مانیتور نزدیکتر شوید تا براکت‌های انتهایی عبارات را مطابقت دهید؟

من هر روز هنگام کد نویسی با پی اچ پی این کار را انجام می‌دادم. همچنین قبل از ورود IDE های مناسب به بازار، من به معنای واقعی کلمه یک خط کش روی صفحه مانیتور قرار می‌دادم تا براکت‌ها را به صورت عمودی ردیف کنم!

در اینجا مثالی از دستورات در پی اچ پی آورده شده است:

function hello($arg)   {
 if ($arg) {
   if ($arg === 'hello')  {
        print('world')
    } else {
        print('!')
    }
   }
 }

در زیر همین کد در پایتون را می‌بینید:

def hello(arg):
    if arg:
        if arg == 'hello':
            print('world')
        else:
            print('!')

درست است، پایتون از تورفتگی برای گروه بندی عبارات استفاده می‌کند. تورفتگی صحیح در کل کد اعمال می‌شود. ممکن است برای قطعه کد مسئله بزرگی نباشد. اما با کد بزرگتر، از مرتب بودن و خوانایی این امر قدردانی خواهید کرد.

تصور کنید که در حال بررسی Pull Request از همکار خود هستید، کد با پرانتزهایی با قالب مناسب، تورفتگی و فاصله قبل یا بعد از پرانتز پر شده است، مسلما به سختی می‌توانید براکت‌ها را ببندید و کد را بخوانید.

شما آرزو می‌کنید که همه توسعه دهندگان مجبور به استفاده از ابزار lint با همان استاندارد کد نویسی شوند، اما در واقعیت اینگونه نیست.

یک کد شسته رفته و مختصر به ما کمک می‌کند تا بر روی منطق کد تمرکز کنیم نه قالب بندی و براکت گذاری.

دستکاری آسان لیستها

در دنیای پایتون ، پردازش ساختار داده‌ها (مانند لیست و ...) بسیار ساده است. پردازش ساختار داده برای هر توسعه دهنده یک روال روزمره است، اگر بتوان آن را راحت‌تر انجام داد، در وقت صرفه جویی می‌شود.

در زیر قطعه کد اعداد زوج را در یک لیست پیدا می‌کند.

پایتون :

def find_even (numbers):
    return [num for num in numbers if (num % 2) == 0]

پی اچ پی :

function find_even ($numbers) {    
    $results = [];
    foreach ($numbers as $num) {
        if (($num % 2) === 0) {
            $results[] = $num;
        }
    }
    return $results
}

دستکاری اساسی آرایه‌ها در پایتون :

a = [1, 2, 3]
b = [4, 5, 6]
# Merge 2 arrays.
c = a + b
# New array sliced from 3rd and 4th elements.
d = c[2:4]
# Reverse whole array. [start:stop:step]
e = d[::-1]

همان کد در پی اچ پی :

$a = [1, 2, 3];
$b = [4, 5, 6];
# Merge 2 arrays.
$c = array_merge($a, $b)
# New array sliced from 3rd and 4th elements.
$d = array_slice($c, 2, 2);
# Reverse array.
$e = array_reverse($d);

سینتکس موجود در پایتون بسیار شسته و رفته و قدرتمند است (بدون نیاز به توابع خارجی). در ابتدا ممکن است کمی گیج کننده به نظر برسد (همانطور که برای من بود)، اما به زودی متوجه خواهید شد که نوشتن این نوع سینتکس برای کارهای کوچک مانند این آسان و باعث صرفه جویی در زمان می‌شود.

آنچه باعث قدرتمندتر شدن پردازش داده‌های پایتون می‌شود، پکیج‌هایی مانند Numpy است.

import numpy as np
# Make up an array with evenly spaced values stop to 6.
a = np.arange(6)
print(a)
# Output
[0,1,2,3,4,5]
b = a.reshape(3, 2)
print(b)
# Output
[[0,1],[2,3],[4,5]]
# repeat number 1 5 times
np.repeat(1,5)
# Output
[1, 1, 1, 1, 1]

علوم داده

پایتون به لطف ابزاری که ارائه می‌دهد، جامعه‌ای که پشت آن است و همچنین سهولت استفاده و سینتکس ساده که سازگاری آن را برای افرادی که سابقه مهندسی ندارند آسان می‌کند، محبوب‌ترین زبان برنامه نویسی در دنیای علوم داده است.

وقتی در حال یادگیری آنلاین علم داده بودم، در معرض ابزارها  و پکیج‌های پایتون مانندJupyter Notebook ،Scikit-learn ،Pandas ، Numpy و Spark قرار گرفتم. در نتیجه من باید پایتون را یاد می‌گرفتم. پلتفرم‌هایی مانند Kraggle و medium در یادگیری علم داده بسیار به من کمک کردند.

به سادگی چنین چیزی در دنیای پی اچ پی وجود ندارد.

اگرچه پی اچ پی برای توسعه وب مناسب است، اما اگر به سمت تجزیه و تحلیل داده‌ها بروید، باید زبان دیگری بیاموزید.

مناسب برای کارهای کوچک

می‌دانید که پی اچ پی و معماری MVC در فریمورک لاراول شرکای عالی برای ساخت یک وب سایت سنتی هستند.

معماری نرم‌افزار امروزه در حال تغییر به سمت الگوی چابک (agile) و میکرو سرویس است. شما ملزم به کد نویسی میکروسرویس سبک وزن، PoC سریع، سرویس MVP، عملکرد پرسرعت Lambda و غیره هستید که در کلاد (فضای ابری) مستقر شده و به صورت API در دسترس قرار گرفته است.

اگر قصد استفاده از پی اچ پی را دارید، باید با یک سرویس کامل EC2 یا همان میزبان کامل، با تصاویر Docker و فریمورک‌های تعبیه شده در آن سر و کله بزنید که بسیار دشوار است.

از طرف دیگر، پایتون یا جاوااسکریپت به صورت بومی توسط AWS Lambda پشتیبانی می‌شود که برای کارهای کوچک بسیار عالی است. شما ترجیح می‌دهید همه کدهایتان به یک زبان نوشته شده باشند، بنابراین پایتون در فضای ابری با متدولوژی agile عمل می‌کند؛ یعنی باعث می‌شود نرم‌افزار تولید شده با نیازهای مشتری مطابقت داشته باشد.

همه این دلایل باعث می‌شود که پایتون و فریمورک‌های سبک آن به عنوان گزینه مناسبی برای میکروسرویس (خدمات کوچک) مطرح باشند.

عملکرد و کارایی

آخرین نسخه پی اچ پی با در نظر گرفتن اینکه هر دو زبان برنامه نویسی تفسیر شده باشند، از لحاظ سرعت اجرا کمی سریع‌تر از پایتون است.

من قبلا با افزایش عملکرد پی اچ پی طی چند سال گذشته بسیار هیجان زده می‌شدم، خصوصا از PHP 5 به PHP 7 (حدود 30٪ سریعتر). اما در دنیای رایانش ابری امروز، دیگر نگران کننده نیست.

بزرگترین تنگنای عملکردی برنامه شما می‌تواند ناشی از معماری برنامه، زیرساخت‌های ابری، شبکه، کمبود حافظه پنهان یا شاید حتی یک بلوک از کد شما باشد.

این روزها به سختی می‌شنوم که کسی از سرعت اجرای زبان برنامه نویسی شکایت کند. به احتمال زیاد سایر عوامل باعث ایجاد مشکل در عملکرد می‌شوند تا خود زبان.

آیا یک برنامه وب توسعه یافته توسط جاوا در مقابل پی اچ پی یا پایتون سریع‌تر است؟ من فکر نمی‌کنم این یک مقایسه منصفانه باشد، زیرا عوامل مهمتری وجود دارد و آنها از بسیاری جهات متفاوت هستند.

درک من این است که پایتون به اندازه کافی سریع است و برای برنامه وب امروز بهینه شده است.

بازار کار

اکنون طرز فکر در بازار کار این است که پی اچ پی برای ایجاد وب سایت سنتی مناسب است و کمی قدیمی است. بنابراین دامنه پرداخت معمولا از زبان مرسوم مانند پایتون کمتر است.

درست است که یک توسعه دهنده خوب می‌تواند به هر زبانی تسلط داشته باشد. با این وجود غیر قابل انکار است که پایتون در بازار امروز یک زبان پرطرفدار است، زیرا این مهارت مهمی برای زمینه‌های پر رونق مانند رایانش ابری، هوش مصنوعی، علوم داده، ارزهای دیجیتال و موارد دیگر است.

همچنین شما می‌خواهید آینده خود را در حرفه خود اثبات کنید. بنابراین باید شروع به یادگیری پایتون کنید.

یادگیری آسان

با سال‌ها تجربه کد نویسی در پی اچ پی و جاوااسکریپت، طولی نمی‌کشد که با اطمینان کد پایتون بنویسم و سعی می‌کنم آن را به سبک Pythonic انجام دهم.

مفهوم سختی مانند دکوراتور (decorator) شبیه به ترکیب فانکشنال در JS است. شما همیشه می‌توانید شباهت‌هایی با مجموعه توانایی خود پیدا کنید. اگرچه ممکن است مدتی طول بکشد تا فریمورک، کتابخانه‌ها و ابزارهای پایتون را یاد بگیرید، اما خود زبان برای یادگیری بسیار شیرین و لذت بخش است.

جمع بندی

مقالات زیادی وجود دارد که در آن مقایسه PHP با Python از نظر ویژگی‌های فنی انجام شده است و بیشتر آنها متمرکز بر فناوری هستند. پس ازاینکه برای فعالیت شغلی خودم از پی اچ پی به پایتون مهاجرت کردم، نظرات خود را به عنوان یک توسعه دهنده نرم‌افزار در این مقاله ارائه داده‌ام.

من واقعا تحت تأثیر نظم و چابکی پایتون قرار گرفتم و از امکانات آن در هوش مصنوعی و علوم داده بسیار هیجان زده شدم.

در آخر این نکته را در نظر داشته باشید که هم یادگیری آن آسان است و هم در بازار کار رونق زیادی دارد.

منبع

چه امتیازی به این مقاله می دید؟
خیلی بد
بد
متوسط
خوب
عالی

دیدگاه‌ها و پرسش‌ها

برای ارسال دیدگاه لازم است، ابتدا وارد سایت شوید.

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

آفلاین
user-avatar
عرفان حشمتی @heshmati74
مهندس معماری سیستم های کامپیوتری، برنامه نویس و طراح وب سایت
دنبال کردن

گفتگو‌ برنامه نویسان

بخشی برای حل مشکلات برنامه‌نویسی و مباحث پیرامون آن وارد شو