انتقال فناوری از زبان های قدیمی به GO و Rust

پیشگفتار
اخیراً با اخباری مواجه شده ام مبنی بر اینکه شرکت های بزرگ فناوری پروژه های موجود خود را که در اصل به زبان هایی مانند C، C#، Java و Python نوشته شده بودند، به زبان برنامه نویسی GO منتقل می کنند. من همچنین مقالاتی در مورد برخی از شرکتهای فناوری که پروژههای خود را به زبان Rust منتقل میکنند خواندهام، اگرچه این اتفاق کمتر از GO رخ میدهد.
دلایل انتقال فناوری
چندین عامل کلیدی باعث تغییر به سمت زبان های برنامه نویسی جدید در صنعت فناوری می شوند. این شامل:
-
نگرانیهای مربوط به سرعت و عملکرد: پروژههایی که به زبانهایی مانند Python2، Java، PHP، C# و C نوشته میشوند، اغلب نمیتوانند انتظارات سرعت برنامههای مدرن را برآورده کنند. پروژه های با ساختار خوب می توانند استثنا باشند، اما به طور کلی، عملکرد ضعیف است.
-
مقیاس پذیری: همانطور که پروژه ها با فناوری های در حال توسعه گسترش می یابند، ترجیح فزاینده ای برای زبان هایی وجود دارد که ذاتاً از مقیاس پذیری پشتیبانی می کنند.
-
افزایش هزینه ها: افزایش هزینه های مرتبط با توسعه فناوری های متعدد باعث تغییر به سمت زبان های برنامه نویسی سریع تر مانند GO و Rust می شود که می توانند چندین نیاز را به طور موثر برطرف کنند.
-
کاهش زمان توسعه: ساختارهای Back-end که به هزاران خط کد در زبان هایی مانند Python2 نیاز دارند، می توانند در هنگام استفاده از GO و Rust به میزان قابل توجهی کاهش یابند. این زبانها به ریزساختارهای کوچکتری اجازه میدهند که منجر به زمانهای توسعه سریعتر میشود. ویژگی هایی مانند پشتیبانی از LSP، تصحیح خودکار، سهولت بازنویسی و مستندات ساده این زبان ها را بیش از پیش برجسته می کند.
-
مستندسازی سریع: مستندات پروژه را می توان به سرعت با استفاده از مولدهای سایت استاتیک مانند Hugo و Mdbook ایجاد کرد و به اشتراک گذاری آسان اطلاعات پروژه را تسهیل می کند.
-
سهولت یادگیری: استانداردهای کدنویسی در این زبان ها به منحنی های یادگیری آسان تر برای توسعه دهندگان کمک می کند.
بازنویسی در Rust
من برای اولین بار با مفهوم مهاجرت پروژه های شناخته شده به زبان های GO و Rust در یک انجمن توسعه دهندگان روسی مواجه شدم. هنگام مرور انجمن، از طریق یک شعار و یک پوستر پروژه به این ایده برخورد کردم. این هم تصویری از پروژه:
هدف این پروژه بازنویسی کتابخانه ها و پروژه هایی بود که قبلا به زبان های دیگر با استفاده از Rust توسعه داده شده بودند. برای دستیابی به این هدف، انجمن بحث های فناوری را بین توسعه دهندگان تسهیل کرد.
به طور مشابه، جوامع GitHub برای اجرای همان پروژه برای زبان GO اختصاص داده شده است.
انتقال فناوری در شرکت ها
در طول تحقیقات اینترنتی خود مشاهده کردم که استارت آپ های مختلف و شرکت های فناوری در مقیاس بزرگ در پروژه های جدید خود با زبان های GO و Rust آزمایش می کنند و به تدریج پروژه های موجود خود را به این زبان ها انتقال می دهند. قابل ذکر است، من بسیاری از شرکت ها را یافتم که پروژه های موجود خود را از زبان هایی مانند PHP و جاوا به Rust و GO مهاجرت می کنند.
بهعلاوه، هنگام جستجوی انجمنهای Reddit برای «مهاجرت شرکت به»، چندین پست در زمانهای مختلف درباره این موضوع نوشته شده بود. در زیر، یکی از این پست های ردیت را با شما به اشتراک می گذارم:
مهاجرت شرکت به Go
byu/kekekepepepe ingolang
همچنین می توانید مقالات متعددی در مورد انتقال فناوری در Medium پیدا کنید. در اینجا یک مقاله نمونه است:
سفر ما: حرکت از PHP به GO
علاوه بر این، YCombinator وب سایت دارای مقالاتی در مورد موضوعات مختلف مرتبط است.
زبان های برنامه نویسی: از پایتون تا 500000 خط GO – چگونه یک سازمان یک تغییر بزرگ ایجاد می کند
علاوه بر این، آکادمی خان روند انتقال کامل کد باطن خود را از Python2 به زبان GO جزئیات میدهد.
GO Case Studies
می توانید مقالاتی را در مورد جزئیات فرآیندهای مختلف در وب سایت رسمی زبان برنامه نویسی GO بیابید:
راه حل های GO و مطالعات موردی
علاوه بر اینها، صدها شرکت، اعم از بزرگ و کوچک، هر روز با زبان های GO و Rust در پروژه های مختلف آزمایش می کنند. با این حال، به دلیل محرمانه بودن اطلاعات داخلی شرکت، نمیتوانم جزئیاتی را که شرکتها رسما فاش نکردهاند به اشتراک بگذارم. اگر در پلتفرم های اجتماعی مانند لینکدین، توییتر و ردیت فعال هستید، می توانید این اطلاعات را نیز در آنجا پیدا کنید.
مراحل انتقال پروژه
در طول مراحل انتقال، معمولاً تیم های کمکی ایجاد می شوند تا به موازات تیم های موجود کار کنند. آن را مانند یک سیستم راه آهن در نظر بگیرید: برای تغییر خط ریلی بدون خروج قطار یا توقف خدمات، یک خط دوم در کنار خط اصلی با یک اتصال سوئیچ ثانویه ساخته می شود. پس از تکمیل خط جدید، خط اول دور زده و غیرفعال می شود. بسیاری از شرکتها این روش را مقرونبهصرفهتر میدانند و به آنها اجازه میدهد پروژههای فعلی خود را به آرامی به فناوری جدید انتقال دهند.
روش دیگر انتقال شامل از کار انداختن پروژههایی است که قدیمی هستند یا فاقد ویژگیهای لازم هستند، سپس آنها را به زبانهای GO و Rust بازنویسی میکنیم قبل از اینکه دوباره به بهرهبرداری برسند. این پروژه های بازنویسی شده، به ویژه آنهایی که به تعادل بار و مقیاس پذیری نیاز دارند، در نسخه های GO و Rust خود نگهداری و منتشر می شوند.
کتابخانه ها روز به روز ثروتمندتر می شوند
اگرچه GO و Rust هنوز به اندازه زبان های رایج مانند پایتون و جاوا اسکریپت کتابخانه های اینترنتی گسترده ای ندارند، اما این کتابخانه ها به طور مداوم در حال انتقال و گنجاندن در پروژه ها هستند. برای مثال، اکنون میتوانید نسخههای GO و Rust اسکراپرهای وب یا کتابخانههای یادگیری ماشینی را که در اصل در پایتون نوشته شدهاند، پیدا کنید. این موارد را می توان از وب سایت های زیر دریافت کرد:
مزایا و معایب
سلب مسئولیت: این مقاله در اصل به زبان ترکی برای توسعه دهندگان ترک نوشته شده است. این قسمت شامل بررسی برای توسعه دهندگان ترک است. بنابراین اگر به این بخش علاقه ندارید می توانید آن را پاس کنید.
-
تقویت بسترهای گفتگوی تعاملی: پلتفرم های رسانه های اجتماعی مانند توییتر، توییچ، ردیت، و یوتیوب، و همچنین سرورهای Discord، در بحث های فعال و اشتراک گذاری اطلاعات افزایش یافته اند.
-
سکوهای محلی ترکی ناکافی: ترکیه در حال حاضر فاقد تعداد کافی بسترهای اجتماعی و گفتگو است. در کشورهایی مانند ژاپن، روسیه، آلمان، هند، برزیل، اسپانیا و امارات متحده عربی که به تولید فناوری معروف هستند، وبلاگها و وبسایتهای محلی به زبان محلی از سال 2012 تأسیس شدهاند و اکنون فعال هستند.
-
افزایش پشتیبانی انجمن: در حالی که پشتیبانی انجمن از GO و Rust به اندازه زبان هایی مانند Python، JavaScript و React گسترده نیست، اما به طور پیوسته در حال رشد است. فعالیت های تبلیغاتی و گردهمایی های توسعه دهندگان، به ویژه رویدادهایی مانند GopherCON، به این گسترش کمک می کنند.
-
عدم وجود کتاب الکترونیکی ترکی: با وجود بیش از 50 کتاب منتشر شده به زبان انگلیسی، در حال حاضر هیچ کتاب الکترونیکی یا انتشارات چاپی به زبان ترکی موجود نیست.
نتیجه
در این مقاله، من سعی کردهام یک مرور مختصر ارائه کنم و آگاهی را در مورد انتقال فناوری شامل زبانهای برنامهنویسی GO و Rust ارتقا دهم. توجه به این نکته ضروری است که این دیدگاه ذهنی و قابل بحث است. با پیشرفت فرآیند توسعه با زبان ها و فناوری های متنوع، ممکن است در آینده با زبان های برنامه نویسی دیگری مواجه شویم.
من صمیمانه از وقت و توجه شما در خواندن کامل مقاله من قدردانی می کنم. ما مشتاقانه منتظر حضور شما در مقالات بعدی هستیم.