cs.mohammadi
3 سال پیش توسط cs.mohammadi مطرح شد
15 پاسخ

php یا asp core یا node

سلام
به عنوان یک برنامه نویسی بک اند بازبان php برای خودم هنوز سواله که کدوم زبان آینده بهتر و بازار کاربهتری داره و بهتره که رو کدوم زبان عمرمون رو سرمایه گذاری کنیم.
میدونیم که php از سرورهای لینوکسی بهره میبره که هزینه نگه داریش کمتره و از طرفی نسخه asp core هم که از طرف مایکروسافت ارائه شده کراس پلتفرم هست و به راحتی روی لینوکس ران میشه
طبق تجربه ای که تو این چندسال به دست اوردم به نظر شخصی من php برای کار های بزرگ با کوئری های بسیار بالا جوابگو نیست و در این مواقع asp core بهتر عمل میکنه البته که این صرفا نظر شخصی بندست با اینکه خودم برنامه نویس php هستم.
در مورد node هم نمیتونم نظر تخصصی بدم چون سررشته ای در این زبان ندارم اما متاسفانه خیلی از سایت هایی که هاست در اختیار مشتریان میزارند از این زبان پشتیبانی نمیکنند و از نظر محتوای فارسی که در مورد این زبان وجود داره هم نسبت به زبان های دیگه واقعا کمه
در مورد امنیت هم با توجه به اینکه php و node مفسری هستند و asp چون تحت c# هست و کامپایلری هستش میشه گفت asp قوی تره
میخواستم نظر شما دوستان رو در این مورد بدونم درواقع بنده میخوام درکنار php زبان دیگری هم یادبگیرم که بین انتخاب asp و node گیر کردم.
خوشحال میشم نظرتون رو ارسال کنید.


ثبت پرسش جدید
Muhammad
تخصص : Back-End Developer
@muhammad 3 سال پیش آپدیت شد
3

سلام. کل مقایسه‌هاتون اشتباهه.


Saman
تخصص : برنامه نویس وب
@samanzdev 3 سال پیش آپدیت شد
0

سلام
اول اینکه بگم واقعا مقایسه کردن زبان یک کار فوق العاده اشتباهیه.
ببینید هر زبان برنامه نویسی یکسری مزایا و معایب داره.
در مورد اینکه php با کوئری زیاد جوابگو نیست، خب چرا دیجی کالا با php پیاده سازی شده؟
در مورد خانواده net. نظری ندارم چون کار نکردم.
در مورد node.js هم باید بگم اگه بر جاوااسکریپت کامل مسلط هستید می تونید برید به سراغ node.js. بیشتر برنامه نویس هایی که در کنار php می خوان یک زبان دیگه رو یاد بگیرن، معمولا میرن به سمت node.js یا Python.
البته چیز هایی که گفتم کاملا نظر شخصی بنده بوده.
موفق باشید
@cs.baymohammadi


IrajJavidan
@IrajJavidan1 3 سال پیش آپدیت شد
-2

در مورد امنیت هم با توجه به اینکه php و node مفسری هستند و asp چون تحت c# هست و کامپایلری هستش میشه گفت asp قوی تره

ببخشین بنده تازه وارد هستم و تخصصی ندارم، کسی میتونه این عبارت رو برای من تفهیم کنه؟


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 3 سال پیش مطرح شد
2

@IrajJavidan1

php یک زبان تفسیری هست

هر وقت که شما قطعه کدی رو اجرا می‌کنید، چه یک کد کوتاه و ساده باشه.. و چه یک وب اپلیکیشن کامل.. این پروسه از طریق interpreter یا مفسر PHP صورت میگیره. که متداول ترین اونها PHP FPM و مفسر CLI هستند.

کار این مفسر ها بسیار ساده ست: کدهای PHP رو میگیرند.. تفسیر میکنند و نتایج رو بر می‌گردونند.

این پروسه به طور معمول برای تمام زبان های تفسیری اتفاق میفته. در بعضی از زبان ها ممکنه که برخی از این مراحل حذف بشه; اما در نهایت ایده و روال کلی کار همینه.

در PHP این پروسه به شکل زیر اتفاق میفته:

  • کد شما خونده میشه و تبدیل میشه به یه سری کلیدواژه ها، که بهشون توکن (Token) میگیم. این فرایند به مفسر اجازه میده تا بدونه، کدوم قطعه کد در کدوم قسمت از برنامه قرار گرفته; که نام این مرحله Lexing یا Tokenizing هست.
  • حالا که توکن‌ها رو داریم، مفسر PHP مجموعه توکن‌ها رو آنالیز میکنه و سعی میکنه اونها رو درک کنه. در نتیجه یک "Abstract Syntax Tree" یا یک AST در پروسه ای به نام Parsing به وجود میاد. این AST مجموعه ای از گِره (Node) هاست که مشخص میکنه چه عملیاتی باید اجرا بشه. برای مثال “echo 1 + 1” رو در نظر بگیرید. این دستور در واقع به این معناست که: “نتیجه ۱ + ۱ رو پرینت کن“... یا واقع بینانه تر: “یک عملیات رو پرینت کن، این عملیات ۱ + ۱ هست“
  • حالا که AST رو داریم، درک عملیات ها و تقدم (precedence) اونها خیلی ساده‌تر میشه.. برای تبدیل این AST به کدی که قابل اجرا باشه، نیاز به یک واسطه یا Intermediate Representation (IR) داریم; که در PHP اون رو به نام Opcode می‌شناسیم... و پروسه تبدیل AST به Opcode رو کامپایل کردن (Compilation) میگیم.
  • حالا که Opcode ها رو داریم، به قسمت جالب کار می‌رسیم: اجرای کد... PHP موتوری به نام Zend VM داره، که لیستی از Opcode ها رو دریافت و اونها رو اجرا میکنه. پس از اجرای تمام Opcode ها، موتور Zend VM به کارش پایان میده و مراحل اجرای برنامه ما به پایان میرسه.

تفسیر


۴ مرحله بالا به طور کلی میشه پروسه تفسیر کدهای PHP

پروسه ای که در زبان هایی که تفسیری نیستند اتفاق نمیافته.. مثلا در C

هر چند استفاده از Just In Time کامپایلر در PHP ۸ تا حدودی میتونه این پروسه تفسیر رو حل کنه. که میتونی دربارش توی مقاله زیر بخونی
https://virgool.io/@ali.bayat/jit-compiler-in-php-8-lejfl4xhsvpg


IrajJavidan
@IrajJavidan1 3 سال پیش مطرح شد
0

@ali.bayat خیلی ممنون
@cs.baymohammadi گفتن که امنیت زبان های مفسری از کامپایلری کمتر هست، دلیلش چیه؟


cs.mohammadi
تخصص : Laravel , PHP
@cs.baymohammadi 3 سال پیش مطرح شد
0

@muhammad
من کاری به مقایسه ندارم برادر
به طور مثال یک فردی میخواد برنامه نویسی وب بک اند رو به صورت حرفه ای کار کنه پیشنهاد شما استفاده از چه زبانیه و چرا؟


cs.mohammadi
تخصص : Laravel , PHP
@cs.baymohammadi 3 سال پیش آپدیت شد
0

@IrajJavidan1
یکی از موارد امنیتی که در پروژه های PHP وجود دارد اینه که فایل های PHP متن باز هستند و در صورتی که کسی به سرور شما دسترسی داشته باشد، می تواند سورس کدهای شما را به راحتی بخواند؛ اما در ویندوز به دلیل اینکه فایل ها قبل از اجرا توسط کامپایلر به فایل های DLL تبدیل می شوند و دارای قابلیت Code-Behind هستند نمی توان از این نقطه ضعف استفاده کرد. البته php با zend سعی کرده این مشکل رو هم بپوشونه اما در اصل مسئله که php یک زبان مفسری هستش تغییری ایجاد نمیکنه.


cs.mohammadi
تخصص : Laravel , PHP
@cs.baymohammadi 3 سال پیش آپدیت شد
0

@samanzdev
ببینید دوست من
من خودم برنامه نویس php هستم و بعد تحقیق وسیعی که در این زمینه داشتم به این نتایج رسیدم.
منظور بنده از اینکه php در پروژه های بزرگ جوابگو نیست ، این نیست که نمیشه با این زبان پروژه رو پیاده کرد بلکه منظورم اینه که سرعت ارسال و دریافت کوئری ها در زبان php نسبت به asp بسیار پایین تره و این مورد در پروژه های بزرگ کاملا مشهوده.
در مورد دیجی کالاهم میشه گفت که تا حدودی سعی کردند این معایب php رو بپوشونند به طور مثال از وب سرور nginx استفاده شده که بار کمتری بر روی سرور ها باشه و همچنین سرعت داده پردازی بالاتر بره.
ولی خب به نظر شخصی بنده اگر دیجی کالا در حال حاضر تغییر فاز بده و کل پروژه رو با asp پیاده بشه سرعتش از الانم بیشتر خواهد شد.
اگر بخواهیم پروژه ای مقایسه کنیم به نظر من سایت ایران خودرو واسه مثال زدن بهتر باشه که این سایت تماما با فریمورک asp.net پیاده شده و از سرعت خوبی هم برخورداره همچنین سایت تازه تاسیس بایا.


cs.mohammadi
تخصص : Laravel , PHP
@cs.baymohammadi 3 سال پیش مطرح شد
-1

@samanzdev
در مورد زبان پایتون هم که فرمودید
میشه گفت به طور تقریبی سرعت سایت های که با زبان پایتون پیاده سازی می شوند نسبت به php دوبرابر ضعیف تر هستند.
ببینید دوستان بنده قصد هیچ توهینی خدایی نکرده به دوستان برنامه نویس در زبان های مختلفی مثل php یا python و node و.. رو ندارم
قصد بنده رسیدن به یک توافق نظر در مورد انتخاب بهترین زبان برای برنامه نویسی سمت سرور هستش. همه ی زبان ها خوبی ها و بدی های خودشون رو دارند اما باید قبول کنیم که در طراحیه سایت حرف اول رو سرعت اون سایت میزنه و بنده هم به دنبال همین هستم که بهترین زبان شناسایی بشه
ممنون میشم اگر همه در این گفت و گو شرکت کنند.


Nima Aram
تخصص : a simple full stack
@aramnima50 3 سال پیش مطرح شد
1

@cs.baymohammadi
سلام دوست عزیز!
به نظر من بهتره برای مقایسه سرعت زبان ها به رفرنس های قوی تری مراجعه کنید نه بر حسب تجربه.
اما نظر شخصی من اینکه این مقایسه سرعت ها زیر process های وحشتناک زیاد رخ داده، نه برای سایت های ما که نهایتا 200 ریکوئست در ثانیه رو handle کرده.
همونطور که خودتون گفتید دیجی کالا با PHP هست، که خوب این نشون میده PHP کند نیست و میتونه تو scale های بزرگتری هم استفاده بشه.
همینطور Pinterest هم بک-اندش پایتونه(Django شخصی سازی شده) اما با میلیون ها کاربر به همه جوابگوئه
asp هم همینطور، در ورژن .NET core 5 قابلیت های نظیر Multithreading داره و سرعتش خیلی بهتر شده و سایت های بزرگی مثل w3schools.com و ورزش3 با این تکنولوژی درست شدند و سرعت قابل قبولی دارند.
node هم همینطوره، روز به روز داره بهتر میشه.
اونچه که شما باید بهش توجه داشته باشید باید ببینید کدوم زبان برای چه نوع پروژه ای مناسبه؛
به عنوان مثال اگه اپلیکیشن ریل-تایم بود، من Node.js بر پایه فریمورک meteor پیشنهاد میکنم.
اگه سایتی که اسکیل بزرگی داره ولی ددلاینتون خیلی نزدیکه من Django Python رو پیشنهاد میکنم.
اگه به دنبال این هستید که از قابلیت های IIS استفاده کنید من .ASP net رو پیشنهاد میکنم.
اگه به دنبال این هستید که از پکیج های مختلف آماده استفاده و پروژه های سخت رو توسعه بدید من PHP رو توصیه میکنم.
نهایتا سرعت یکی از فاکتور هاست اما درکل همه تکنولوژی ها ازز لحاظ سرعت ok هستند و مشکلی ندارند


Mohammad Hasani
تخصص : JS Devloper
@MohammadHasani 3 سال پیش مطرح شد
-2

اولین اشتباهی که شما دارید زبان محورید و فکر میکنید قراره با یک پلتفرم قراره ازدواج کنید.همه ابزارها روزی منسوخ میشن و بهتره بجای اینکه برنامه ریزی کنید برای چندسال آینده مفهوم اصلی برنامه نویسی رو یادبگیرید اونوقت مهم نیست چه ابزاری منسوخ میشه و چه آینده ای داره
مقایسه شما اول از هاستیگ اومد به سمت اینکه امنیت ندارن و اینا.مقایسه جالبی نبود دلیلشو میگم
هدف از ابزاری مثل php این نیستش که شما بیاید اون رو با asp یا node مقایسه کنید.در ابعاد خودش به شدت خوب و پایدار هستش و اینکه من نمیدونم سرعت زبانها رو چه جوری بنچ میزنید و مقاله های بسیار معتبری در این زمینه هستش. نکته بعد در مورد امنیت بود که اکثر مواردی که در زمینه امنیت در سرویس های php ایجاد میشه بخاطر استفاده ناصحیح از این زبان هستش
درمورد سرعتم فقط فاکتور requests per second handle یکی از موارد در بحث مقایسه سرعت هست.و چندین فاکتور دیگه در بحث سرعت پردازش و عملکرهای دیگه هست که باید لحاظ بشه. از طرفی تیم بزرگی مثل دیجیکالا یه چیزی دونسته که این سرویس رو با php هندل میکنه که صد البته ابزارهای دیگه ای هم مثل Go ازش استفاده شده ولی مقایسه سایتی به بزرگی آمازون با سایت ایران خودرو بزرگترین حماقت یه برنامه نویس میتونه باشه.کلن از فاز مقایسه بیا بیرون


علی کریمی فرد
@akftes 1 سال پیش مطرح شد
0

سلام وقتتون بخیر

اگر چه من حرفه ای نیستم ولی امروز که مورخ 1401/10/20 هست و سایت ایران خودرو با درخواست های زیادی که به سمتش میره و نمیتونه درست هندل کنه و کلا رفته توی باقالیا این حرفتون نقض میشه

فکر کنم node_js بخاطر ساختار Event loop که داخل خودش داره بهتر بتونه در scale بالا درخواست های تعداد بالا رو هندل کنه ولی باز خب اگر برنامتون cpu intensive باشه فکر کنم محدودیت دارین توی node_js

موفق باشید


electera
@electera 1 سال پیش مطرح شد
0

@akftes
شما سریعترین خودرو رو داشته باشین و قرار باشه تو یک خیابون کوچیک یا تو ترافیک حرکت کنید، سرعت حرکتتون چه بسا از یک دوچرخه سوار کمتر باشه!

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


ابوالفضل
تخصص : برنامه نويس
@amata 1 سال پیش آپدیت شد
0

بدون شک قدرتمند ترین تکنولوژی حال حاضر asp.net core هست
اینکه خیلی از شرکت های بزرگ سمتش نمیان هم علتش اینه که مایکروسافت اونو توسعه داده و اینکه مثلا گوگل بخواد از دات نت استفاده کنه براش یجورایی افت داره:)
ولی خب از همین الان اینو بدون که رستگاری دنیا و آخریت نزد dotnet Stack است


ابوالفضل
تخصص : برنامه نويس
@amata 1 سال پیش آپدیت شد
0

@IrajJavidan1
ببین php مفسریه
یعنی خط به خط اجرا میشه با هر بار ریکوئست
مثلا وقتی شما به سایت ریکوئست میدی
به طور مثال main.php فراخونی بشه
خط به خط میخونه میاد پایین
و همینطور در صورت دسترسی هکر به پنل هاست یا سرورت کدا رو داره و میتونه مستقیم تغییر ایجاد کنه
ولی دات نت کامپایلریه
یعنی به صورت فایل dll در میاد و دیگه بعد از هک سرور کسی نمیتونه کداتو بخونه یا تغییر بده
از این لحاظ میگن امنیتش قوی تره


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

ورود یا ثبت‌نام