همه زبان‌های برنامه‌نویسی

شما ممکن است در یک یا دو زبان برنامه‌نویسی ماهر باشید. آیا زبانی وجود دارد که از آن خوشتان نمی‌آید؟ یا فکر ‌می‌کنید به اندازه کافی قدرتمند نیست؟ جاوا یا #C؟ Rust یا ++C؟ اسمبلی یا C؟بیایید با هم نگاهی به تکنولوژی و ابزارهایی بیاندازیم که ما برای ساختن هیولا از آن‌ها استفاده کرده‌ایم. هیولا، فروشگاه آنلاین برای بازی‌های کامپیوتری است. اینجا می‌توانید بیشتر راجع به هیولا بدانید.محیط توسعه ما ویندوز است و نتیجه کارها را روی چند سرور اوبونتو منتشر می‌کنیم. به احتمال زیاد برای ساختن ویندوز از تعداد زیادی کدهای ++C ، C ، اسمبلی، #C ، جاوااسکریپت و ویژال بیسیک استفاده شده است. لینوکس یا حداقل توزیع اوبونتو آن را با ++C ، C ، اسمبلی، پایتون و جاوا نوشته‌اند.برنامه‌های سمت سرور هیولا را با C# .Net Core نوشته‌ایم. حتما به درستی حدس زده‌اید که در سمت front-end ما از HTML ، جاوااسکریپت و CSS بهره برده‌ایم. به خاطر کتابخانه‌های NPM بخش بزرگی از مخزن کدهای ما جاوااسکریپت است. اجازه بدهید این بحث را مطرح نکنیم که آیا اصلا HTML ، جاوااسکریپت و CSS زبان برنامه‌نویسی محسوب می‌شوند یا خیر. بله، می‌دانم آن «L» در انتهای HTML همان کلمه «Language» است.برنامه کلاینت هیولا که وظیفه دانلود و اجرای بازی‌های شما را دارد با Qt و به زبان ++C توسط یکی از برنامه‌نویس‌های خوب شرکت فن‌افزار نوشته شده ‌است.ما از PostgreSQL برای ذخیره اطلاعات استفاده می‌کنیم که با زبان ‌C نوشته شده است. تقریبا همه چیز به طور خیلی سخت‌گیرانه کش می‌شود و داستان‌ها باید برایتان تعریف کنم از پاک کردن و به روز کردن این کش‌ها. Redis بهترین ابزار برای این نوع از ذخیره‌سازی‌ها است که آن هم با زبان ‌‌C نوشته شده است.ابزار NGINX، ابزاری راحت و بسیار سریع است. ما از آن برای reverse proxy و load balancing استفاده می‌کنیم. این ابزار فوق‌العاده با زبان ‌‌C نوشته شده است.جای هیچ بحثی نیست که زندگی ما و مخزن کدهای ما باید بر روی Git باشد. برای ساخت و توسعه Git از زبان‌های C، پِرْل ، Tcl و پایتون استفاده شده است. بله، درست است آن «L» در انتهای Tcl باز همان کلمه «Language» است.برای ارسال پیام بین برنامه‌هایمان از RabbitMQ به عنوان message-broker استفاده می‌کنیم. این ابزار با زبان ‌‌اِرلَنگ نوشته شده است. باید یک مدتی به صورت جدی این زبان فوق العاده را مطالعه کنم و یاد بگیرم.جستجوی متن و ایندکس کردن آن را با Elasticsearch انجام می‌دهیم که با جاوا نوشته شده است.در بخش آماده سازی کدها برای انتشار (deployment) ما Jenkins را داریم. این ابزار هم بسیار عالی است ولی صد حیف که با جاوا نوشته شده است. آنقدر خوب است که باید با زبان ‌C یا چیزی مانند آن نوشته می‌شد. مچ مرا گرفتید؟! هدف من برای نوشتن این مقاله دقیقاً همین موضوع است. زبان برنامه‌نویسی مهم نیست بلکه مهم این است که یک برنامه چقدر خوب نوشته شده باشد و کاربران چقدر راحت می‌توانند از آن استفاده کنند.قسمتی از کدهای style ما به زبان Sass نوشته شده‌اند و به کمک ابزارهای نوشته شده با زبان روبی آن کدها را به CSS کامپایل می‌کنیم. Jenkins علاوه بر کارهای متعددی مانند build و اجرای تست‌ها که انجام می‌دهد، اسکریپت‌های Grunt را که به زبان جاوااسکریپت نوشته شده‌اند را نیز اجرا می‌کند.ابزار معرکه دیگری که از آن استفاده می‌کنم Ansible نام دارد که با پایتون نوشته شده است. خود من هم اینجا و آن جا برای کارهای کوچکی که لازم داریم از پایتون استفاده می‌کنم و از آن خوشم می‌آید.این روزها در حال برانداز کردن داکِر هستم تا از طریق آن بتوانم مراحل آماده سازی و انتشار برنامه‌ها را بهتر کنم. هر چند به علت تحریم‌های خارجی و سانسورهای داخلی قدم زدن در طبقه‌های جهنم بسی راحت‌تر از استفاده از داکر است. داکری که آمده است تا کارها را راحت کند و مورد استقبال بیشتر تیم‌های برنامه‌نویسی هم قرار گرفته است این چنین داستانی دارد برای ما. به هر حال، این ابزار با زبان Go نوشته شده است. بالاخره، یک امتیاز هم برای این زبان.لیست را کوتاه کنیم؛ ادیتور مورد علاقه من Visual Studio است که با زبان‌های #C و ++C توسعه داده شده است.در پرانتز باید اشاره کنم چون برای خودمان بسیار مهم بوده است، تمام ابزارها و برنامه‌های این پروژه خریداری شده است و یا از نگارش‌های رایگان آن‌ها را استفاده کرده‌ایم. البته با شرمساری فراوان به غیر از ویندوز. پرانتز بسته.زبان #C زبان برنامه‌نویسی مورد علاقه من است و هر روز با آن سر و کار دارم. هدف از نگارش این مقاله این است که یادمان باشد زبان برنامه‌نویسی فقط یک ابزار است. وظیفه ما این است که ابزارهای خودمان را خوب مطالعه کنیم و بدون تعصب آگاه باشیم کجا می‌توان از این ابزار استفاده کرد و کجا نه. با هر زبانی می‌توان باگ تولید کرد و کارآیی (performance) برنامه را نابود کرد. از ابزاری استفاده کنیم که در طول زمان مناسبی به توسعه محصول کمک کند و در نهایت کاربران به راحتی بتوانند از آن استفاده کنند.ابزارهای خود را بیشتر مطالعه کنید و کد زدن خوش بگذرد.