علاقه مند به کامپیوتر و برنامه نویسی و نوشتن و خواندن تجربیات دیگران در حوزه های مختلف به ویيه کامپیوتر هستم.
مهندسی کامپیوتر- مقایسه ابزار ها GO,Rust,Java
یکی از مضوعاتی که همیشه روی آن تاکید دارم این هست که مهندس کامپیوتر با برنامه نویس فرق می کنددر این جا قصد دارم یک مثال عینی از این موضوع با شما دوستان مرور کنم
قبل از خواندن این مطلب بد نیست یکبار این مطلب را هم بخوانید
اما موضوع چیست؟
چندی پیش من برای موضوعی مجبور شدم یک نرم افزاری از ابتدا طراحی کنم.ما دو نیاز اصلی داشتیم
- تبادل اطلاعات بر روی سوکت
- پشتیبانی از موبایل و ویندوز
زبان های برنامه نویسی ابزار کار یک مهندس کامپیوتر هستند مثل خیلی از ابزارهای دیگر
یک مهندس خوب باید ابزار خوبی هم برای کارش انتخاب کند
بعد از بحث و توافق سر نیازمندی ها و ساختار کلی سیستم ابتدا نیاز بود نیازمندی اول حل کنیم و به توافقی سر نحوه اجرای سوکت برسیم برای این کار من زبان برنامه نویسی پایتون انتخاب کردم چرا؟
- مجموعه ای بی نظیر از کتابخانه ها را دارد
- به دلیل بزرگی جامعه اش احتمالا یکی سوالات من را جواب داده است
- درگیر پیچیدگی های زبان برنامه نویسی نخواهم شد
با استفاده از پایتون یک نرم افزار سرور ساده مشابه نیازمندی مان داخل پروژه ساختم همراه با یک کلاینت مشابه نیازمدی مان. بعد شروع به تبادل اطلاعات کردم تا با چالش های Socket programming آشنا بشم بعد از این که به این نتیجه رسیدم که هیچ یک از نیازمندی ها بی پاسخ نمانده است. حالا نیاز است به بحث پیاده سازی اصلی برسیم برای این که چهار ابزار داشتیم
- Java
- Golang
- ++C
- Rust
ابتدای کار ++C به دلایل زیر کنار گذاشتیم
- با دیدن چند بچمارک به این نتیجه رسیده بودیم که Rust ابزار بهتری هست
- در مقایسه با Rust برنامه نویسی ست تری دارد
- علاقه مند به یادگیری Rust بودیم
پس فقط سه ابزار ماند
- Rust
شبیه ++C و سازه دست موزیلا، با هدف پروفورمنس و فرار از باگ هایی مثل Null Pointer و یک زبان شی گرا
- Java/Kotlin
که احتمالا نیازی به معرفی ندارد ( کاتلین در عملکرد با جاوا تفاوتی ندارد)
- Golang
که هدفش سادگی، پرتابل بودن است اما شی گرا نیست ( البته برای ما هم مهم نیست)
به همین دلیل دنبال مقایسه مختلفی گشتم و از قضا به یکباره این مقاله دیدم که دقیقا همین سه تا ابزار با همه مقایسه کرده بود!!
خلاصه این مقاله در یک پست دیگر می نویسم و قاعدتا اگر براتون جزییات مهم هست باید به خود مقاله رجوع کنید
مطلبی دیگر از این انتشارات
وقتی api نداره، api میسازیم! (nodeJS - cheerio)
مطلبی دیگر از این انتشارات
مانیتورینگ در لینوکس
مطلبی دیگر از این انتشارات
مشکلات package*.json