Hamid Bluri
Hamid Bluri
خواندن ۳ دقیقه·۴ سال پیش

چرا Nim رو دوست دارم؟ - قسمت 1

این مقاله صرفا حاوی تجربه و نظر شخصی اینجانب هست و ممکنه دلیل هایی که من اوردم برای شما برنامه نویس عزیز دلایل قانع کننده ای نباشه - بهرحال از خوندنش لذت ببرید ?

هی حمید، اصن چی شد که رفتی سراغش Nim؟

راستش چند ماه پیش پیگیر Deno ( ی جایگزین جدید برای Nodejs ) شده بودم.

نصبش کردم و سعی کردم باهاش یکی دوتا پروژه کوچیک بزنم.

لوگوی Deno
لوگوی Deno


خب اون پروژه کوچیک قرار بود ی سرور بازی باشه که با websocket بین client هاش ارتباط برقرار کنه.

خداروشکر لازم نبود کتابخونه خاصی توی Deno نصب کنم و خود کتابخونه های اصلیش (std) چنین نیازی رو برآورده میکردن

این مثال توی خود مستندات Deno بود
این مثال توی خود مستندات Deno بود


* خیلی شبیه زبان های 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


چیزی که اول ذهنمو به خودش مشغول کرد، سادگی نوشتاری Nim بود

ی مثال از syntax این زبون که از خود سایتش برداشتم
ی مثال از syntax این زبون که از خود سایتش برداشتم


توضیحات این زبون توی صفحه گیتهابش هم خیلی توجهمو جلب کرد:

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 بزن ?

برنامه نویسیزبان برنامه نویسیnim
life is what you choose it to be ...
شاید از این پست‌ها خوشتان بیاید