لینک کوتاه مطلب : https://hsgar.com/?p=5713

خوب و بد

مدتی است که به تکمیل زبان دیگری برای پایتون فکر می‌کنم – عمدتاً برای کنار آمدن با مناطقی که پایتون با آن‌ها دست و پنجه نرم می‌کند، یا استفاده از آن برایم دردسرساز است (که در عرض یک دقیقه به آن می‌پردازم).

من چند سال پیش از C/C++ استفاده کرده بودم، اما نمی خواهم به آنها برگردم. C برای کارهای جاسازی شده عالی است، اما من از آن برای هیچ چیز دیگری استفاده نمی کنم. C++ یک هیولا است، همه چیز از C-با کلاس ها به آخرین نسخه با اشاره گرهای هوشمند جدید فانتزی.

من به Rust نگاه کردم، و در حالی که احساس و استدلال را درک می‌کنم، احساس می‌کردم که دائماً با کامپایلر/بررسی‌کننده قرض/هرچیزی می‌جنگم. فقط میخوام یه کد بنویسم لعنتی 🙂

من سالها نام Go را شنیده بودم، اما هرگز به آن گیر ندادم. در Hacker News/Reddit مطبوعات منفی دائمی دریافت می شود – هر پست برتر عبارت است از: چرا از جیo با دلیل 37 این که ژنریک ندارد (بله، ما امسال ژنریکال دریافت کردیم، می خواهم یک شوخی بی ادبانه در مورد باکره ها و رابطه جنسی کافی نداشته باشم، اما حدس می زنم که من یک خانواده دوست هستم / وبلاگ جدید کارفرما پسند من اکنون ).

چند ماه گذشته، من به آرامی دوباره Go را انتخاب کردم و این بار به آن چسبیدم.

مشکلات با پایتون

من قبلاً در این مورد نوشته ام (و متنفر شدم)، اما اجازه دهید tldr را بگویم:

  • اگر ماشین را کنترل کنید، کد پایتون عالی است. دردناک است اگر بخواهید کد خود را با دیگران به اشتراک بگذارید

همین – شکایت اصلی من. اشتراک‌گذاری کدتان با همکارانتان حتی اگر از یک سیستم عامل استفاده می‌کنند حتی دردناک است، عمدتاً به این دلیل که فایل نیازمندی پایتون وابستگی‌ها را پین نمی‌کند، به این معنی که 2 نفر که از یک فایل نیازمندی‌ها نصب می‌کنند می‌توانند نسخه‌های وابستگی متفاوتی را دریافت کنند (که گفته شد، Poetry). این مشکل را برطرف می‌کند، و یک ابزار عالی است. من دیگر هرگز از envs مجازی ساده استفاده نمی‌کنم).

چند ماه پیش، Go (با استفاده از برنامه عالی) را دوباره کشف کردم سر اول برو کتاب) و لذت Go را دوباره کشف کرد.

برو: خوب

  • کد فقط کار می کند! شما می توانید برای هر پلتفرمی (مانند کامپایل برای ویندوز از یک ماشین لینوکس) کامپایل کنید و بدون درهم ریختن محیط های مجازی یا نصب کتابخانه ها کار کنید.
  • سریع است – بدون شک، عمدتاً به این دلیل که یک زبان کامپایل شده است.
  • برخلاف برنامه‌های وب پایتون، که علاوه بر Nginx به Wsgi (یا چیزی مشابه) نیاز دارند، برنامه‌های Go می‌توانند مستقیماً روی یک سرور بدون نیاز به هیچ چیز اضافی اجرا شوند. من از یک سرور برای https استفاده کردم، اما ابزاری که استفاده کردم (Caddy، یک ابزار عالی) با یک کتابخانه Go همراه است تا بتوانید https را مستقیماً در کد Go خود دریافت کنید!

برو: بد

گاهی اوقات، شما فقط می خواهید یک کد یا یک کتابخانه جدید را امتحان کنید. شما به کامل بودن آن اهمیت نمی دهید.

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

کتابخانه‌های Go به خوبی پایتون نیستند – مطمئناً مستندات آن کم است. برای پایتون، می‌توانید چندین کتابخانه خوب برای هر چیزی که فکرش را بکنید پیدا کنید. با Go، به محض اینکه از خط اصلی خارج شدید بزرگراه کد نویسی سروریافتن کتابخانه ها، اغلب متروکه و معمولاً بدون اسناد خوب، سخت است.

من به خصوص با کتابخانه DynamoDb برای Go مشکل داشتم. بنابراین من یک اسکریپت پایتون برای پرس و جوی Dynamodb نوشتم و آن را از Go فراخوانی کردم. با این حال، این ممکن است به دلیل اسناد ضعیف در سمت آمازون باشد. با این حال، لیب‌های رسمی پایتون برای Dynamo هم چندان داغ نبودند، اما من فایل‌های شخص ثالث عالی را پیدا کردم که کار می‌کردند. و این نکته من است: این برای پایتون راحت تر از Go است.

دعوای جزئی: سیستم Go mod را گیج کننده دیدم، اما این ممکن است بی تجربگی خودم باشد. من از اینکه چگونه مجبور می شوید هر بار یک ماژول ایجاد کنید متنفرم. من فقط می خواهم چیزی را امتحان کنم، چرا مجبورم می کنید یک ماژول o_O ایجاد کنم

راهی برای خاموش کردن وجود دارد اما غیر شهودی است و من فقط آن را تصادفی پیدا کردم.

کلمات پایانی

به طور کلی، من Go را خیلی دوست دارم – این یک همراه عالی برای پایتون است. وقتی باید یک کتابخانه را نصب کنم، کمی میمیرم و از من میخواهد پایتون یا نود را نصب کنم، چون می دانم که با نسخه ها مشکل دارم. Node بدتر است، زیرا متوجه شدم که باید دائماً نسخه‌های Node را تغییر دهم تا libs کار کنند، به نظر می‌رسد همه آنها با نسخه‌های مختلفی ساخته شده‌اند.

در مقایسه با این، برنامه های Go لذت بخش هستند. یک فایل اجرایی، و فقط بدون نیاز به پرش از طریق حلقه ها اجرا می شود.

اگر روزی ابزاری بسازم که برای استفاده از آن به بیش از 2 نفر نیاز دارم، Go را ترجیح می دهم. برو فقط کار میکنه

لینک منبع

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.