مهندسی کامپیوتر- مقایسه ابزار ها GO,Rust,Java

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

قبل از خواندن این مطلب بد نیست یکبار این مطلب را هم بخوانید

https://coderlife.ir/%D9%85%D9%87%D9%86%D8%AF%D8%B3-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D8%A8%D8%A7-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3-%D9%81%D8%B1%D9%82-%D8%AF%D8%A7%D8%B1%D8%AF-wbdzimxgkn12

اما موضوع چیست؟

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

  • تبادل اطلاعات بر روی سوکت
  • پشتیبانی از موبایل و ویندوز
زبان های برنامه نویسی ابزار کار یک مهندس کامپیوتر هستند مثل خیلی از ابزارهای دیگر
یک مهندس خوب باید ابزار خوبی هم برای کارش انتخاب کند

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

  • مجموعه ای بی نظیر از کتابخانه ها را دارد
  • به دلیل بزرگی جامعه اش احتمالا یکی سوالات من را جواب داده است
  • درگیر پیچیدگی های زبان برنامه نویسی نخواهم شد

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

  • Java
  • Golang
  • ++C
  • Rust

ابتدای کار ++C به دلایل زیر کنار گذاشتیم

  • با دیدن چند بچمارک به این نتیجه رسیده بودیم که Rust ابزار بهتری هست
  • در مقایسه با Rust برنامه نویسی ست تری دارد
  • علاقه مند به یادگیری Rust بودیم

پس فقط سه ابزار ماند

  • Rust

شبیه ++C و سازه دست موزیلا، با هدف پروفورمنس و فرار از باگ هایی مثل Null Pointer و یک زبان شی گرا

  • Java/Kotlin

که احتمالا نیازی به معرفی ندارد ( کاتلین در عملکرد با جاوا تفاوتی ندارد)

  • Golang

که هدفش سادگی، پرتابل بودن است اما شی گرا نیست ( البته برای ما هم مهم نیست)

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

https://medium.com/@dexterdarwich/comparison-between-java-go-and-rust-fdb21bd5fb7c

خلاصه این مقاله در یک پست دیگر می نویسم و قاعدتا اگر براتون جزییات مهم هست باید به خود مقاله رجوع کنید