سلام و عرض ادب به تمامی دوستان
آیا زبان php آینده ای دارد ؟
خب مستقیم میخوام برم سراغ اصل مطلب به دلیل اینکه خیلی از دوستان چه در این انجمن و چه در سایر گفتگوهای دیگر این سوال را بسیار تکرار میکنند ، واقعیت چیست ؟
این سوالی که بنده مطرح کردم در واقع بهتر است به صورت روبرو تغییر پیدا کن " آیا زبانهای برنامه نویسی آینده ای دارند ؟ " .
با توجه به تجربه ای که بنده دارم اساسا دنیای برنامه نویسی چالش برانگیز بوده و هست و چرخه همچنان ادامه دارد . مثالهای عینی از دنیای برنامه نویسی خواهم زد تا این حقیقت برای شما آشکار شود و شاید برای همیشه این ذهنیت از ذهن شما پاک شود .
توسعه دهندگی برای سیستم عامل اندروید :
ابتدای برنامه نویسی برای سیستم عامل اندروید با زبان native آن یعنی java شروع شد و سپس سایر فریمورکهای دیگر شروع به ظهور در این شاخه از توسعه دهندگی کردند مانند bas4 ، react native , flutter و حتی برنامه نویسی برای آن توسط یکی از فریمورک های CPP امکان پذیر بود و کلی فریورکهای دیگر اما چرا این زبانهای و فریمورکها در اوایل آمدن اندروید محبوب شده بودند و به تدریج کنار گذاشته شدند ؟
جواب این سوال کاملا مشخص است به دلیل اینکه تمامی موارد ذکر شده ( فریمورکها ) ، تماما ابزار هستند و برای برهه ای از زمان نوشته شده تا کار راه انداز باشند . بنابراین شما به عنوان یک برنامه نویس باید این چالش را بپذیرید که با توجه به نوع پروژه و استراتژیک کسب و کار خود یک ابزار را انتخاب کرده و با استفاده از آن شروع به توسعه دهندگی کنید اما این آخر راه است ؟ خیر قطعا و صد در صد ( for sure ) این آخر راه نیست بلکه شما تازه قدم صفرم را برداشته اید . به چه دلیل ؟ به دلیل اینکه به هر دلیلی اگر هر یک از فریمور کهای مذکور را به نادرستی انتخاب کنید در طولانی مدت باعث ضرر رساندن به کسب و کار خواهید شد مثال : فرض کنید بنابه به استراتژیک شرکت به شما گفته میشود که صرفا یک prototype اولیه از یک محصول را راه اندازی کنید حال با تغییر اولویتها پروژه ی جاری شرکت به اولویت دوم تبدیل شده و شما باید به عنوان یک توسعه دهنده وقت خود را برروی اولویت اول شرکت که پروژه نرم افزاری دیگر میباشد قرار دهید ، بعد از مدتها ( چند ماهه ) به پروژه ی قبلی یعنی prototype برگشته ولی تازه متوجه خواهید شد که چه اشتباه بزرگی کرده اید به دلیل آنکه حال باید این پروژه را گسترش دهید ولی با کمبود مستندات و عدم پاسخگویی با نیازهای بزرگتر و پیچیدهتر پروژه از طرف آن فریمورک روبرو میشوید .
بنابراین باید مستندات لازم برای یک زبان برنامه نویسی را در نظر بگیرید که در ادامه راه دچار مشکل نشوید در غیر اینصورت باعث ضربه خوردن به اعتبار شغلی و از همه مهمتر آینده شغلی چند نفر دیگر خواهید شد و استرسهای ناشی از آن باعث از بین رفتن روح و جسم شما خواهد شد .
اما چرا آن همه framework برای android وجود دارد ؟ به دلیل آنکه در ابتدا راه هر یک از فریمورکهای نامبرده و حتی نامبرده نشده توسط افراد متخصص و حرفه ای بنا به نیاز شرکت ثالث ایجاد شده و بعدها تصمیم به release آن به صورت public بر روی سرویس اشتراک سورسی نظیر github گرفته اند و حال شما دسترسی به استفاده از آن دارید و از طرف دیگر همان فریمورک release شده توسط سایر افراد متخصص توسعه پیدا کرده و به اصطلاح برای خود نام در کرده است یا نامی شده است . بنابراین اینگونه است که یک framework مطرح میشود . در ادامه به صورت تخصصی ابزار هایی را برای شما مطرح میکنم که این مثال برای شما بیشتر آشکار شود .
آیا در استفاده از سرویسها یا frameworkها شما درگیر سیاست کاری شرکتها میشوید ؟
جواب بله است . کامل برای شما این بحث را باز میکنم .
لازم به ذکر است شما به عنوان یک برنامه نویس وظیفه دارید ذهن تحلیل گرانه ای داشته باشید و ساده انگارانه به قضایا نگاه نکنید چون با bold شدن یک قضیه سیاستهای کاری در جهت پیشرفت یا براندازی یک پروژه از طرف شرکتهای مطرح جهانی ایجاد میشود و شما را ناخواسته همراه با خود میکند که دست به تغییرات اساسی گرفته و آینده ی پروژه را تغییر دهید . به مثال زیر با دقت توجه کنید :
در ابتدای توسعه دهندگی سیستم عامل اندروید خبری از دیگر فریمورکهای مطرح برنامه نویسی نظیر react native و flutter نبود و تنها با استفاده از java این امر صورت میپذیرفت اما به مرور زمان با پررنگ شدن نقش سیستم عامل اندروید بر روی گوشیهای هوشمند و رقیب سیستم عامل ios ، تصمیم بر آن شد تا زبانی دیگر با نام Kotlin را روانه حرفه ی توسعه دهندگی کنند اما روند پیشرفت این پروژه با کندی پیش میرفت و بنیاد javaScripte تصمیم به پررنگ کردن نقش خود برای ورود به بازار اندروید را گرفت با ارائه و bold کردن framework ای با نام react native به دلیل آنکه با این کار عملا زبان js تبدیل به یک زبان cross platform میشد و همچنین حداقل نیازهای لازم را برای ورود به دنیای اندروید را نیز داشت چون سایر فریمورکهای قدرتمندی نظیر nodjs را نیز داشت و این مورد کمک شایانی به این کار میکرد . اما شرکت Google در این باب احساس خطر کرد و فریمورک flutter را bold کرد که هم جلوی پیشرفت REACT NATIVE را گرفته باشد و زبان برنامه نویسی kotlian عملکرد یا به اصطلاح prformance لازمه را پیدا کند . بنابراین با توضیحات گفته شده سیاست کاری Google برای شما نمایان شد .
اما چرا google زبان برنامه نویسی kotlin را جایگزین java کرد ؟ به دلیل شکایتهای مطرح شده از طرف oracle و اینکه google در استفاده از java حق امتیاز oracle را پرداخت نکرده و لایسنس آن را زیرپا گذاشته در نتیجه با بالا کردن دعواها میان google و oracle نتیجه بر آن شد که google زبان اندرویدی جدیدی با performance بالاتری با نام kotlin را ایجاد کند تا از این کشمکش رهایی یابد .
- با این وجود آیا میتوان به بقای زبان php امیدوارد بود ؟
جواب این سوال را هیچ متخصصی نمیتوان به صورت قطعی ارائه دهد به دلیل اینکه شرط ادامه بقا به فاکتورهای زیادی نظیر : پایداری و ... بستگی دارد و همچنین با توجه به سرعت پیشرفت دیگر زبانهای برنامه نویسی اساسا جواب دادن به سوال مشکل خواهد بود .
- آیا زبان php کارایی لازم را خواهد داشت ؟
در دنیای برنامه نویسی زبان خوب یا بد نداریم بلکه برنامه نویس خوب یا بد داریم . یک برنامه نویس با تجربه با هوش خود میتواند با توجه به نیازهای پروژه نیاز سنجی کرده و بهترین گزینه را برای پیشبرد پروژه اتخاذ کند اما این تنها جواب نخواهد بود ، به دلیل آنکه از زبان هایی نظیر php که پدر خوانده ی این راه شده اند به جهت ایجاد زبان بهینهتر و سطح بالاتر با performance و کارایی بالایی استفاده میکنند .
- شاید خیلی از دوستان زبان php را به واسطه wordpress شناخته اند ، اما آیا wordpress میتواند به بقای php کمک کند ؟
اساسا سیستم مدیریت محتوای wordpress برای ارائه سرویس وبلاگ دهی ایجاد شده بود که تدریجا توسعه پیدا کرد و pluginهای فروشگاه سازی نظیر wecompress نیز به آنها اضافه شد ه و همچنین pluginهای متفاوت دیگری نیز برای آن وجود دارد که توسط برنامه نویسان سایر کشورها توسعه داده شده است و در واقع plugin نویسی به یکی از راههای کسب درامد برای wordpress تبدیل شد .
با توجه به توضیحات ارائه شده در اول مقاله و جدال میان قولهای نرم افزاری نظیر google و oracle بر سر زبان برنامه نویسی java به این نتیجه رسیده باشید که به احتمال خیلی بالا زبانهای برنامه نویسی دیگری نظیر ruby , phyton , lua و ... به جدال با wordpress خواهند رفت و هم اکنون که این مقاله برای شما نوشته شده است این اتفاق افتاده است . همچنین اگر پیگیر اخبار wordpress بوده باشید متوجه آن خواهید شد که محبوبیت wordpress در حال کاهش است به دلیل به وجود آمدن سرویسهای فروشگاه ساز آنلاینی که به صورت خیلی جدی مورد استفاده قرار گرفته اند و هر روزه شاید پیشرفت آنها هستیم .
- شاید از خود بپرسید به این وجود آیا نیازی به استفاده از سرویسهای مدیریت محتوایی نظیر wordpress وجود دارد ؟
دلیل استفاده از cms با توجه به توضیحات ابتدایی مقاله نیاز سنجی براساس نوع پروژه میباشد، در واقع برای راه اندازی طرح اولیه و نیز آنالیز کردن آن به جهت به صرفه بودن برای کسب درآمد شما باید از سرویسهای آماده ای نظیر wordpress استفاده کنید و بعد از مشخص شدن احتمال موفقیت در پروژه میتوانید آن را به صورت شخصی سازی شده مجددا براساس نیازهای خود توسعه دهید .
- یک بحث دیگری که مطرح میشود ااستفاده از سرویس Q&A یا forum میباشد ؟
cms هایی نظیر wordpress با استفاده از plugin هایی این قابلیت را در اختیار شما قرار میدهند اما چرا شاهد آن هستیم که بعضی از برنامه نویسان اقدام به طراحی سرویس پرسش و پاسخ خود میکنند؟ یک از دلایل میتواند تولید سورس کدهای طولانی و اضافی برای سرویس مذکور باشد در واقع این مشکل به دلیل چند لایه ای بودن ارتباط با cms مذکور است که این ویژگی باعث زیر سوال بردن ویژگی real time میشود که با پررنگتر شدن تقش NodJS و socket io این مشکل در حد نیاز رفع شده است .
- در این مرحله میخواهیم دو نمونه از سرویسهای پرسش و پاسخ مطرح جهان را به تفصیل مورد بررسی قرار دهیم :
reddit :
در واقع از آن به social news یا media aggregation یاد میکنند که به منظور اجتماع محتواهای مختلف از سطح اینترنت عمل میکند . که ابتداٌ بر پایه ی زبان برنامه نویسی Lisp نوشته شده بود که بعدها با زبان برنامه نویسی python پیاده سازی مجدد شد که در حال حاضر به صورت open source نیز قابل دریافت است .
در حال حاضر از نظر Hosting and servers رو سرویس Amazon سوار است و نیز از پایگاه داده PostgreSQL به عنوان datasotre اصلی خود استفاده میکند و به تدریج در حال کوچ کردن به سرویس Apache Cassandra میباشد ( cassandra نوعی پایگاه داده NoSQL میباشد که برای مدیریت دادههای حجیم استفاده می شود ) و برای پردازشهای آفلاین خود از RabbitMQ استفاده میکند که در واقع یک نوع AMQP است یعنی برای پردازش آنلاین از حالت پردازش صف بندی پیامها به صورت پیشرفته استفاده میشود و همچنین اپلیکیشن موبایل خود را در سال 2016 بر پایه reacte وارد اپ استورها معروف کرد .
Discourse :
به عنوان یک سرویس پرسش و پاسخ open source ارائه شده است ، البته اینکه گفته میشود این سرویس به صورت open source ارائه شده است تنها بخشی از سروس کدهای آن این ویژگی را دارند و قابلیت custome کردن را دارا میباشند بسته به زبان مقصد آن کشور . همچنین برای توسعه سرویس خود از زبان Ruby و framework مطرح خود یعنی Ruby on Rials و Ember.js که یکی از فریمورکهای js است استفاده نموده لازم به ذکر است app موبایل خود را برای دو سیستم عامل ios و android بر پایه react native توسعه داده است . از پایه داده PostgreSQL استفاده کرده و همچنین این سرویس اصطلاحا Docker-based طراحی شده است .
لازم به ذکر است هر یک از سرویسهای Q&A مطرح شده در طول زمان دچار تغییراتی شده اند به طور مثال برای reddit در مقطعی از زمان به دلیل نیاز سنجی نادرست ابزارها توسعه دهندگی خود را متوقف و سپس با رفع و نیاز سنجی مجدد اقدام به توسعه زیرساختهای نرم افزاری خود نمود .
حال نظر شما چیست ؟ آیا میتوان به آینده php اطمینان داشت ؟
فقط یاد آورم میشوم که هر زبانی را باید با توجه به گستردگی پروژه انتخاب کرد .
این مقاله توسط آقای حسن سهرابیان تدوین شده است که بخشی از آن برای استفاده شما دوستان قرار گرفته است ، انتشار آن بدون اجازه ایشان کاری غیر قانونی و از لحاظ اصول شرعی کاری کاملا نادرست میباشد .