این مقاله صرفا حاوی تجربه و نظر شخصی اینجانب هست و ممکنه دلیل هایی که من اوردم برای شما برنامه نویس عزیز دلایل قانع کننده ای نباشه - بهرحال از خوندنش لذت ببرید ?
راستش چند ماه پیش پیگیر Deno ( ی جایگزین جدید برای Nodejs ) شده بودم.
نصبش کردم و سعی کردم باهاش یکی دوتا پروژه کوچیک بزنم.
خب اون پروژه کوچیک قرار بود ی سرور بازی باشه که با websocket بین client هاش ارتباط برقرار کنه.
خداروشکر لازم نبود کتابخونه خاصی توی Deno نصب کنم و خود کتابخونه های اصلیش (std) چنین نیازی رو برآورده میکردن
* خیلی شبیه زبان های Static type شده ؟ ها؟
( پیشنهاد میکنم این مقاله رو هم بخونید: دروغ های عجیب، زبان های static تایپ و dynamic تایپ )
خیل خب بریم سراغ خود پروژه - راستش خود پروژه قرار بود کوچیک باشه ولی خب منم یکم کنجکاویم گل کرد و یکم در مورد این چیزا ??? اطلاعات کسب کردم.
( فرق بین thread, async (event driven), subprocess چیه؟ )
خب nodejs و deno دیفالت async هستن و این چیز خوبیه - ولی خب بعضی موقع های میخوایم thread هم داشته باشیم. راستش اینکار توی nodejs کار آسونی* نیست و توی Deno به نظر میرسه فعلا چنین قابلیتی در دسترس نیست*.
ا performace تا حالا خیلی واسم اهمیت نداشته ولی بدم نمیاد سرعت برنامه ام هم چند برابر بشه
با Golang خیلی حال نمیکنم - احساس راحتی توش نداشتم * - واقعا سیستم هندل ارورش اصلا جالب نیست - البته موقعی هم که قصد یادگیریش رو داشتم درکم نسبت به الان کمتر بود ( و خب منم ولش کردم )
به لطف یادگیری cpp توی دانشگاه، فکر میکردم نوشتن برنامه توی زبون های static تایپ همه باید انقد دقیق و با سینتکس نه چندان قشنگ C باشه ( پروژه ترم اولمون سخت نبود ولی واقعا تجربه بدی بود- از دیباگ کردنش تا segmantal fault های cpp)
البته که Rust هم به گوشم خورده بود ولی سینتکس که چنگی به دل نمیزد و مدل مدیریت دیتا اش هم اصلا راحت بود ( برحسب تجربه چندتا از برنامه نویساش - البته خودشون میگفتن از cpp خیلی بهتره ولی خب... )
بعضی جاها توی اینترنت Rust رو با Nim مقایسه کردن و منم کنجکاو شدن ببینم Nim دقیقا چیه
چیزی که اول ذهنمو به خودش مشغول کرد، سادگی نوشتاری Nim بود
توضیحات این زبون توی صفحه گیتهابش هم خیلی توجهمو جلب کرد:
Nim is a statically typed compiled systems programming language. It combines successful concepts from mature languages like Python, Ada and Modula. Its design focuses on efficiency, expressiveness, and elegance (in that order of priority).
ا Nim یک زبان برنامه نویسی استاتیک و کامپایلی هست - این زبون مفاهیم موفق از زبون های بالغی مثل Python , Ada, Modula رو باهم ترکیب کرده - تمرکز طراحی این زبون روی بهینگی، گویایی و ظرافت هست ( ترتیب اولیت ها به همین ترتیبی هست که نوشته شده )
جالبه! چطور میشه ی زبون هم سینتکسش راحت و بدور از این همه boilerplate ( ی اصطلاحه به معنی کدی هست که باید نوشته بشه ولی واقعا از منطقی لازم نیست ) و هم سریع باشه؟؟ مگه میشه؟ مگه داریم؟!؟
( ا Nim برای پایتون کاران : ی مقایسه کوچیک روی سنتکس و مفاهیم داره )
ی چند ماهی گذشت و دیدم ازش خیلی خوش خوشم اومده - ی جورایی همونی بود که میخواستم
( توی مقاله بعدی بیشتر در مورد Nim و به طور کلی از تجربه چند ماهه خودم در مورد خوبی ها و بدی هاش میگم - منتظر باشید)
هی، همینجوری ول نکن برو - تا مقاله بعدی ی سر به nim-lang.org بزن ?