چرا باید تمام یا قسمتی از وبسایتمان را با پایتون بنویسیم؟

سلام

در بین مطالب و مقایسه های اینترنتی خیلی دعوا بر سر مقایسه nodeJS و Python نیست

اما بین این دو زبان دکر شده و php به شدت دعوا هست

واقعا چرا یه سایت پر ترافیک را به زبان پایتون می نویسند؟
دنبال جواب هایی مثل سادگی کد و خوانایی کد نیستم…

دلیل اون ها سرعت بالاست!! واقعا سرعت وبسرو های پایتون در درخواست ها بالاست؟

مثلا وبسور جنگو و … میتونه ده ها هزار ریکوئست در ثانیه رو پاسخ بده؟
چرا؟

1 پسندیده

دلیل انتخاب پایتون توسط بعضی از شرکت ها بیشتر بخاطر منایع انسانی، سادگی روند یادگیری، ابزار های شناخته شده، و بازدهی* مناسب هست. (منظور از بازدهی نسبت productivity به جزئیات فنی هست مثل پرفرمنس و طراحی داخلی و غیره)

اما پایتون در مقایسه با زبان هایی مثل Java, Go, Rust, Erlang/Elixir, Scala, Clojure و … سریع نیست و از لحاظ طراحی هم مشکلات زیادی داره ( البته همه زبان ها مشکلات خودشون رو دارند ) اما با همه این ها شرکت ها با توجه به یه سری فاکتور که براشون مهم هست تکنولوژی رو انتخاب می کنن. الان خیلی از شرکت ها بین JS, Python, Ruby یکیش رو انتخاب می کنن برای شورع چون بازدهی مناسبی رو برای کسب و کارشون داره.

یه مثال کوچیک جایی هست که فعلا توش کار می کنم. با پایتون و جنگو شروع کردند و الان تقریبا همه سرویس هامون به Scala و Elixir پورت شدن یه چندتایی هم به NodeJS. از اون همه سرویس پایتونی فقط یکیش باقی مونده. در روز حدود ۸ تا ۹ میلیارد درخواست رو این سیستم هندل می کنه. ( البته به هیچ عنوان پرفکت نیست )

2 پسندیده

اینکه همیشه یه طرف دعوا php هست بیشتر به خاطر اینه که بدون هیچ مشکلی روی هاست اجرا میشه با هزینه‌ی سالانه ی ۵۰هزارتومن. در حالی که بقیه‌ی زبونهایی که میشناسیم نیاز به سرور دارن با هزینه‌ی ماهانه حداقل ۵۰هزارتومن. (برای مردم و مدیران بی‌سواد هیچ‌چیزی مهمتر از قیمت کمتر نیست)
وگرنه هرچقدر با خودم کلنجار برم نمیتونم php رو انتخاب کنم برای یه پروژه. مدت زیادی به اجبار توی یه شرکت با php کد زدم بعد همونو پورت کردیم روی پایتون دنیامون شیرین شد.

درمورد اینکه چرا شرکتها با python شروع میکنن تا حدود زیادی با lxsameer موافقم.
سینتکس ساده (مثل حرف زدن) و لایبرریهای خیلی خیلی خیلی زیاد (تقریبا هر چیزی رو میشه import کرد) و انعطاف پلتفورم (به خوبی Clojure و java نیست) هم باید اضافه کنم.
و از همه مهمتر اینکه «کسانی که از دانشگاه میان بیرون، php یا .net بلد هستن. بقیه‌ی کسایی که خودشون رفتن دنبال یادگیری (و هدفشون نمره گرفتن نبوده) به پیشنهاد اطرافیان با پایتون شروع کردن یا حتی اگه با چیز دیگه ای شروع کرده باشن، یه مقدار دنبال پایتون رفتن و همین یه ذره کافیه برای یادگرفتنش» (من پایتون رو توی ۱۵دقیقه یاد گرفتم :sweat_smile:)
از طرف دیگه، سادگی پایتون (و هر زبون دیگه ای که نیاز به دست به یقه شدن نداره) باعث میشه ذهن آدم بازتر باشه برای معماری بهتر (در حد توان اون زبون) و ویرایش کدها هم خیلی مهمه که باز برمیگرده به خوانایی سینتکس.

درمورد nodeJS هم فکر میکنم به خاطر js بودنش، خیلی از فرانت-اند کارها یا کسانی که یه مقدار با js آشنایی داشتن رفتن سراغش و راحت یاد گرفتن. واسه‌ی همین جامعه‌ی آماریش بیشتره. (با nodeJS کار نکردم واسه همین نمیتونم بیشتر از این نظر بدم)

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

و تجربه‌ی خوبی که خودم با پایتون داشتم این بود که راه انداختن وبسایت تبدیل شد به کار حاشیه‌ای و تمرکزم بیشتر روی هسته‌ی نرم افزاری بود که داشتم مینوشتم. (نکته‌ای که توی php کلا فراموش شد)
درضمن، اصلا django رو پیشنهاد نمیکنم. یه «فریموورک کامل»ـه و این نکته‌ی بدیه.
«فریموورک کامل» یعنی ما باید بریم یاد بگیریم این چطوری کار میکنه و به روش اون فریموورک کارمون رو جلو ببریم.
پیشنهاد جایگزین، Flask هست. یه «میکرو فریموورک»ـه و جلوی دست و پای آدمو نمیگیره. برنامه نویس هر جور که راحته کارش رو انجام میده و هرجا که لازم شد اونو صدا میزنه. هرجا لازم داشت از قابلیتهاش استفاده میکنه و هرجا لازم ندونست، یه لایبرری دیگه که به نظر خودش بهتر هست رو صدا میزنه (مثلا توی کوئریهای دیتابیس یا سیستم render_template)

پ.ن: بنچمارک بهتری هم داره ولی پیشنهاد میکنم از روی بنچمارک قضاوت نکنید. بنچمارک «محیط آزمایشگاهی»ـه با دنیای واقعی فرق داره.

یه جا خوندم:

Pirates use Flask, the Navy uses Django

Php زبان فوق العاده ای هست بجز قسمت syntax و semantic اش

2 پسندیده

و بجز بقیه چیزاش؟ :face_with_thermometer:

5 پسندیده

ممنونم
اما شاید مطلب رو واضح نتونستم برسونم

ما در حال طراحی یک سامانه هستم که پیشبینی 100 هزار ریکوئست در ثانیه ازش داریم (یه چیز تو مایه های همون 9 میلیارد در روز میشه فکر کنم)

خب ما 80% کار رو با Laravel جلو رفتیم…
حال ترس اینو داریم که سرور کم بیاره!!
یعنی اگر با پایتون و یا nodeJS می نوشتم سرور کم نمیورد اما الان که با لارول نوشتم کم میاره؟

این موضوع کم اوردن سرور دو قسمته
1- قسمت IO که openssl و nginx و apache هستند و از طرفی هم کانکشن های دیتابیسمون هست (postgresql)
2- سرعت اجرای خود کد

در مورد شماره 1 : آیا این موارد موجب انتخاب زبان هایی مانند پایتون و nodeJS میشود؟ یا اصلا ربطی ندارد!!!
یعنی اگر من code رو پایتون مینوشتم و nginx رو با gunicorn پروکسی میکردم خیلی بهتر بود که الان باید nginx و با آپاچی و cgiو… وصل کنم!!!
ایا انتخاب این زبان ها، io سرور من را سبک و سنگین میکند؟؟

در مورد شماره 2: قسمت اعظم در مورد شماره 2 کد نویسی سبک برنامه نویس و استفاده از کَش هست، و خیلی زبان مطرح نیست… چه بسا کسی با c بنویسد اما خراب و سنگین

بیشتر در مورد شماره یک میخوام اطلاع کسب کنم

اکثر سایت های پر ترافیک داخلی ما یا پایتون هستن یا نود!! آیا به همین علت هست؟
کافه بازار = پایتون
دیوار = نود جس اس

فاکتورهای مقایسه خیلی زیاده.
تقریبا نمیشه مقایسه کرد مگر تست روی سیستم واقعی. بنچمارک با استفاده از دیتای واقعی روی سرور واقعی. پیشنهاد میکنم یه بخش از سایت که به نظرتون سنگینه رو با python یا nodeJS بازسازی کنید و یه stress test روش انجام بدید.

اینا هیچ ربطی به زبون برنامه نویسی نداره.
openssl که خارج از دسترس ما کار میکنه. قبل از اینکه کانکشن به کدهای ما برسه وب‌سرور این مساله رو هندل میکنه.
nginx vs apache هم مباحث زیادی برای مقایسشون نوشته شده و بازهم به کدهای ما مربوط نمیشه.
کانکشنهای دیتابیس هم باز ربطی به زبون برنامه نویسی نداره. هر زبانی که باشه باز هم کوئری sql استاندارد مینویسه و میفرسته به sql-server و جواب رو میریزه تو متغیر!

به نظرم فقط یه فاکتور هست که باید بررسی بشه. اونهم middleware ها هستن.
یعنی gunicorn یا uwgsi و اینکه هرکدوم از اینها ۲مدل میتونن به وب‌سرور (مثلا nginx) وصل شن.

  • از طریق socket فایلی
  • از طریق socket پورتی

در این باره مطمئن نیستم ولی یه جا خوندم که گفته بود «این مساله بستگی کامل به سرعت هارد vs سرعت کارت شبکه داره و اصولا سرعت هارد بیشتره». نمیدونم واقعیت داره یا نه. یه حسی بهم میگه ربطی نداره. چون واقعا read/write انجام نمیشه و کارت شبکه هم واقعا درگیر نیست، loop back میشه.

بگذریم.
توی تجربه‌ی شخصی، تقریبا همیشه با اینها کار کردم:

  • ssl رایگان که توسط cloudflare ارائه میشه.
  • python3
  • اتصال به دیتابیس از طریق sqlalchemy
  • uwsgi از طریق port
  • nginx با یه کانفیگ کوچیک اضافه که باعث میشه فایلهای استاتیک رو مستقیم هندل کنه و از داخل پروژه‌ی من رد نکنه ریکوئستها رو

ولی پروژه ها بازدید خیلی زیاد یا دیتابیس خیلی بزرگ نداشتن.
علت اصلی استفاده از پایتون هم این بود که:
ساده تر از phpـه
هسته‌ی نرم افزاری نیاز به پردازش تصویر داشت و پایتون لایبرریهای خیلی قوی برای اینکار داشت.
و البته امید به خیلی بزرگ شدن پروژه که مربوط میشه به مدیر عامل شرکت. من همچین امیدی نداشتم. پروژه نیمه بزرگه.

تو زمینه ای که شما نگرانش هستی زبان برانامه نویسی به اندازه طراحی سیستم مهم نیست. شما برای داشتن یه سیستم درست حسابی که بار زیادی رو جواب بده scalable و fault tolerant باشه طراحی سیستم خوبی نیاز داری و بعد به زبان مناسب. شما می تونی با یه زبان به بدیه PHP یه سیستم خوب بسازی (‌اما خوب ممکن بیشتر اذیت بشی و هزینه و زمان بیشتری ازت ببره)

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

1 پسندیده

دقیقا موضوع سوالم همینه، کلیت استفاده از پایتون با تمام مشتقاتش منظورم هست!
زمانی که من از پایتون و مشتقاتش استفاده میکنم امکاناتی در اختیارم میگیره که بار سرور رو کاهش بدم؟

نمی دونم درست میگم یا نه
nginx همه درخواست ها رو میگره اما تضمینی در پاسخ نداره اما آپاچی برعکس هست
پس من سرورم رو این مدلی کانفیگ میکنم که nginx همه در خواست ها رو میگره و proxy میکنه به آپاچی و اونم میده به php
فایل های استاتیک رو خود nginx لود میکنه

حالا شک کردم این وسط اگر قسمتی از سرویس های سایتم با python نوشته شده بود یک سری از درخواست ها رو هم nginx پاس میداد به gunicorn و سر آپاچی خلوت میشد

این شک من درسته؟

دقیقا منم همین رو میگم
اما شکی در من به وجود اومده!
آیا این زبان ها در کنار خودشون امکاناتی دارن که مشکلات سایت های پر ترافیک رو حل کنه؟

(بیشتر مشکلات سایت های پر ترافیک فقط منابع سخت افزاری سرور نیست - ورودی و خروجی سرور و پاس کاری های وب سرور مهمتر هست)

دنبال همیچن جواب هایی هستم!
پایتون (یا وب سرویس هاش):
کش بهتری انجام میدن
تِرِد های بیشتر و worker های بیشتری رو همزمان میتونن مدیریت کنند
سوکت دارن که فلان خاصیت رو میده بهت
اگر از پایتون استفاده کنی gunicorn میاد و فلان قدر بیشتر ریکویست هات رو هندل میکنه و…

؟

این فرض شما کاملا غلط هست. نیازی به دو وب سرور ندارید.

اینطور نیست ابزارهای بسیار بهتر خیلی زیاد هستن.

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

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

باز هم اشاره می کنم که این مسائل برای شروع اصلا مهم نیست و پایتون هم در این زمینه جزء خوب ها نیست کلا. و نباید دلیلتون برای انتخاب پایتون این چیزی باشه.

در نهایت فکر می کنم شما نیاز به درک عمیق تری نسبت به این مسائل داری تا بتونی بهتر تصمیم بگیری. :slight_smile:

تا جایی که من میدونم نه. زبان برنامه نویسی جادو نمیکنه. برنامه نویس باید اینکارو رو انجام بده.

کاملا نفهمیدم چی شد :expressionless:
nginx تضمین در پاسخ نداره؟
بعد شما ریکوئستها رو با Nginx دریافت میکنی بعد میفرستی به Apache بعد php؟ اولا که اصلا میشه؟ دوما از همچین چیزی میشه توقع راندمان داشت؟ کاملا بعید میدونم :expressionless:

تنها راهی معقولی که میشه قسمتی از سایت رو با یه زبان دیگه انجام داد، اینه که ساب دامین باشه. وگرنه وصله پینه کردن این صفحه به صفحه‌ی دیگه ای که با یه زبان دیگه نوشته شده نزدیک به غیر ممکنه و حاضرم شرط ببندم هیچ شرکتی تا حالا اینکارو انجام نداده. (مگر اینکه وبسایت ریکوئستها رو پردازش کنه بعد یه سری نرم افزار رو اجرا کنه مثلا برای کانورت کردن ویدیو. اون نرم افزارها میتونن به یه زبون دیگه باشن)
کاری که میشه انجام داد و معقوله اینه که ساب‌دامین api.website.com با پایتون و فلسک ران بشه که راندمانش توی پردازش json بالاتره. در این صورت هم نمیشه اینو با nginx ران کرد و بقیه ی سایتو با apache چون برای اینکار باید هردوتا نرم افزار به پورت 80 (پورت http) وصل باشن و سیستم عامل اجازه‌ی این کارو نمیده. اگر هم اجازه بده با همدیگه به مشکل میخورن و هیچکدوم درست کار نمیکنن.

خود زبون میتونه سریعتر باشه.
میتونه لایبرریهایی داشته باشه که بهینه تر باشن توی انجام یه سری کارها مثل پردازش json. ولی بازهم میگم. جادو نمیکنن. بزرگترین شبکه‌ی اجتماعی دنیا با همین php ساخته شده که ما میدونیم قدرت خاصی توی هیچ کاری نداره.

نه. چیزی نداره که من ازش باخبر باشم.

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

چیزی نیست که ازش باخبر باشم.
کاری که این middlewareها انجام میدن دقیقا و فقط اینه:

  • بین وب‌سرور و نرم افزار میشینن و دیتاها رو از این میگیرن میدن به اونیکی (+ یه ذره پردازش که تو گزینه‌های بعدی میگم)
  • نرم افزار شما رو اجرا میکنن. همونطور که شما توی ترمینال مینویسی python app.py و اجرا میشه. خروجیهایی که شما توی ترمینال میبینی رو توی لاگ‌فایل ذخیره میکنن (اگه کانفیگ شده باشه که اینکارو بکنن)
  • به علاوه‌ی گزینه ی بالایی میتونن چندتا process ران کنن که تعداد این بستگی به هسته‌های cpu داره و خودمون کانفیگ میکنیم.
  • از طرف دیگه هم از طریق یه socket وصل میشن به nginx و منتظر میشینن تا ریکوئست بیاد.
    کار دیگه ای انجام نمیدن.
1 پسندیده

منظورم Reverse Proxy هست
Configure Nginx as a Reverse Proxy for Apache

یعنی من اصلا نباید نگران باشم که چرا سمت لاراول رفتم؟!
همه شک های من اینجا شروع شد…
https://www.quora.com/Is-Laravel-fast-enough-for-sites-like-Quora

برنامه نویسی اگر در اتباط با دیتا بیس و کش و… مناسب عمل کرده باشد، باقی کار به سرور و کانفیگ اون بر میگرده و جای نگرانی نیست…
نتیجه گیری درسته؟ :
در واقع کلا برای کاهش بار سرور نیاز به تغییر زبان برنامه نویسی نیست! اگر هنر داشته باشی همون رو بهینه میکنی، اگر نداشته باشی با زبون دیگه هم همین گندکاری رو انجام میدی!!

1 پسندیده

بله متوجه شدم. اما اصلا نیازی به این کار نیست و دارید منابع رو بهدر می دید.

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

تا حدودی درست و هم غلطه. زبان و فن آوری مهم هست اما دلیل انتخاب مهم تر. حرف من اینه که شما مثلا واسه سرعت می خواین پایتون رو انتخاب کنین در صورتی که پایتون سرعتش جز امکانات خوبش نیست. ملاک هاتون رو باید مشخص کنین. مشخص کنین که تا چه حد می خواد زمان و انرژی بذاریید و کاربردتون چی هست و بر اساس اونها انتخاب کنین.

3 پسندیده

scalability و performance بیشتر مسأله architecture تا زبان اما اگه با داده دقیق متوجه شدی مشکل اصلی php هستش رفتن روی python به شما پرفورمنس چشمگیری نمیده و شاید حتی بدتر باشه زبون هایی که compile میشن به مراتب performance بیشتری داران و اگه حتما باید با یک زبون دیگه بنویسی از زبون هایی که compile میشن استفاده کن

1 پسندیده

شاید بتونم بعنوان کسی ک چندین ساله با پایتون وب دولوپ میکنم پاسخ هایی در حد سوادم بهتون بدم …

اول اینکه دوستان نکات خیلی خوبی فرمودن …یه جمع بندی ای بکنیم

اولا صرف استفاده از یه تکنولوژی یا زبان به شما برتری نمیده

ثانیا ساختن سیستم های بزرگ … با صرفا تکیه بر ۱ چیز… یه ذهنیت اشتباهیه … کسی تنهایی فیس بوک نساخته … با ۱ زبان … و ۱ فریم ورک … تا اونهمه ریکوئست هندل کنه … .

اما راجبه پایتون و مقایسه با سایرین …

همونطور ک دوستان فرمودن پایتون تو مبحث مالتی تردینگ ضعیف هست … اما تا وقتی ک i/o bound جلو بیاد … و اینجا پایتون کارشو به خوبی انجام میده … و وب سرور های پایتونی هم روی i/o bound هستن … دوم … asyncio هست … ک بصورت رسمی به پایتون اضافه شد … ک non blocking i/o هست … و از libuv سیستم استفاده میکنه(همون داستان نود جی اس و اسینک نویسی)…

پایتون از رقبا چیزی کم نداره ک زیادم داره : ) …

راجبه uWSGI و gunicorn باید بگم ک … اینها بصورت داخلی کش هم دارن … بعد از اولین ریکوئست … بایت کد جنریت میکنن و هروقت بتونن از روش میخونن … (pyc) …

ببینید سرعت یه مسئله نسبی هست … اینهمه بنچمارک گرفته شده و … و… و… . همشون برا کلیک خور بودن درست شدن!!(چرا گولنگ سریع تر از پایتون است! چرا پایتون سریع تر از php است! …چرا ما از x سویچ کردیم به y!!) … این بنچمارک هارو عمدتا با یه رسپانس hello world میگیرن … درحالی ک با یه اپ بزرگ … نتایج متفاوت خواهد بود( یکی از دوستان گولنگ کار ما گفت . .یه سوکت سرور با گولنگ نوشتیم … توی 100ریکوئست … پرفورمنس افتضاح شد … همونو با یه سوکت سرور پایتون نوشتیم … و الان داره 1kریکوئست رو برامون هندل میکنه) …

مهم ترین نکاتی ک به ذهنم میرسه :

قبل از اینکه زبان برنامه نویسیت(کند ترین و داغون ترین زبان رو در نظر بگیر!) bottleneckبشه … i/o دیتابیس برات مشکلساز میشه(با عقل جور در میاد وقتی هر واکشی من از db حدود 200ms طول میکشه … زبانی استفاده کنم ک 2ms رسپانس میده ؟ بعد مقایسش بکنم با زبانی ک تو 10ms رسپانس میده :smiley: خنده داره) … و قبل از i/o دیتابیس… i/oدیسک … و حجم ذخیره سازیتون گریبان گیر میشه …

نکته بعدی قابلیت اطمینان هست… شما از یه چیز کند یا متوسط استفاده کن … ولی چیزی باشه ک سابقه خوبی داشته باشه … کامیونیتی بزرگ … ابزار ها و trackerهای خوب … تا در صورت مشکل … بشه راحت عیب یابی و رفعش کرد … و در این مورد جاوا و پایتون همیشه تو صدر جدول خواهند موند

کش ها خیلی مهمن … ما با کش … براحتی چندین برابر چیزی ک هندل میکردیم … الان داریم ریکوئست هندل میکنیم … …

و در آخر… پایتون جزو بهترین هاست :relaxed::+1: و بخصوص ک میکروفریم ورک های high performance و async براش نوشته شدن عمدتا با C و اسینک ها هم روی asyncio / uvloop …

3 پسندیده

راجبه c10k , c100k , c10M هم … باید بگم ک … فریم ورکای پایتون هم اینا رو پاس کردن … تورنادو پاسش کرده … جنگو براحتی 10k رو هندل میکنه … و فریم ورکایی مثل falcon دارن 500k هندل میکنن … البته اسیکل اپ مهمه و میزان منابع …

پایتون جزو زبون هایی هست ک بهش هرچقد منابع بدید … میره جلو … و جایی استاپ نمیکنه … بخاطر عدم ظرفیت . .یا طراحی بد داخلیش!! یه سیر خطی طی میکنه میزان ریکوئست ها و پرفورمنسش … نه یه سیر لگاریتمی و رادیکالی مثل php : )

3 پسندیده

یه نکته پایانی هم عرض کنم

عمیق شدن تو تکنولوژی بیشتر از پرش از این شاخه به اون شاخه به شما توانایی میده . و باعث میشه ک شاهکار بسازید و جایی ک خیلیا مینالن و فرار رو بر قرار ترجیح میدن: D یا سویچ میکنن . .شما باعث شگفتی بشید …

چند نفر از phpکارا رو میشناسید ک راجبه HHVM بدونن ؟؟؟‌

چند نفر از پایتون کارا رو میشناسید ک راجبه Cython و CFFI بدونن ؟؟

چند نفر گولنگ کار ک cgo بلدن ؟؟؟

چند نفر هستن ک راجبه معماری و دیزاین پترن و سولوشن های large scale بدونن …

2 پسندیده

این مواردی که فرمودین رو اکثر زبان ها ساپورت می کنن. و IO bound بودن لزوما برتری نیست فقط یه نوع کارکرد هست که معایب و مزایای خودش رو داره و کاربرد خودش رو.

در کل این موضوع رو باید قبول کرد که همه بنچمارک ها قابل اعتماد نیستن ولی خوب از لحاظ تئوری کد native یه پلتفرم به مراتب سریع تر از کدی هست که تفصیر می شه و مقایسه Go و پایتون اساسا از لحاظ سرعت و پرفرمنس کار بیهوده ای هست و مثل مقایسه سیب و پرتقال می مونه. این که مثلا شما وب سرور پابتونی بسازید و از وب سرور Go سریعتر باشه و یا throughput بیشتری رو هندل کنه هم مثل همین داستان هست. عموما وب سرور ها خیلی کد Native دارن و تکنیک های مختلفی رو برای بهبود کارایی استفاده می کنن. از طرفی به نویسنده کد و روش هایی هم که استفاده کرده بستگی داره.

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

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

5 پسندیده

من با همه حرفاتون موافقم . و حرف هامون در یک راستا بودن … هدف از اون اپ وب سوکت و golang هم این بود ک . لزوما یک چیز تو همه زمینه ها بهترین نیست(چیزی ک خیلی بد رایج شده و فک میکنن چون گولنگ پرفورمنس و کانکارنسی خوبی داره پس لزوما بهترین هست … درحالی ک خیلی پست ها به poor design بودن golang اشاره میکنن) … (صرف مثال بود … و تو همه زبان ها و حیطه ها همچین تفاوت هایی به چشم میخورن)

:+1::+1::+1::+1: عالی

کالت رو متوجه نشدم :sweat_smile: ولی اگر منظورتون همه گیر شدن و خز شدن باشه … همه تکنولوژیا ک محبوب بشن به این سمت خواهند رفت … و صد البته اینجا مهارت و عمیق شدن هست ک تفاوت یک با تجربه با یک نوب یا تازه کار رو برای شرکتا نمایان میکنه و باعث میشه تاپ ها همیشه تاپ باشن …

نه منظورم این نبود. منظورم این بود که پایتون هم مثل جاوا جامعه کاربریش دارن تک بعدی میشن یعنی فقط پایتون رو می بینن که خوب این مخرب می تونه باشه :smile:

2 پسندیده