Nim: یک زبان برنامه‌نویسی که بهترین‌های Python ،Go و Rust را یک‌جا جمع کرده است!

Nim: یک زبان برنامه‌نویسی که بهترین‌های Python ،Go و Rust را یک‌جا جمع کرده است!

هرچه جلوتر می‌رویم، زبان‌های برنامه‌نویسی جدیدتری خلق می‌شوند که گاهاً غیرطبیعی هم به نظر می‌رسند؛ اما آیا تا به حال فکر کرده‌اید که چه انگیزه‌ای پشت ‌آن‌ها است و چه چیزی باعث خلق زبان‌های برنامه‌نویسی جدید می‌شود؟ طبیعتاً علاوه‌ بر قابلیت زبان‌های دیگر، این زبا‌ن‌ها ویژگی‌های جدیدی هم معرفی می‌کنند و همین دلیل باعث می‌شود هر کدام از این زبان‌ها نیازهای مختلفی را برطرف کنند. به طور مثال، توسعه‌دهندگان زبان Nim ادعا می‌کنند بهترین‌های زبان‌هایی همچون پایتون، راست و گو را یک‌جا جمع نموده‌اند! 

زبان‌های برنامه‌نویسی جدیدتر مثل سوئیفت و گو با کار کردن بر روی نقاط ضعف زبان‌های قدیمی‌تر و رفع آن‌ها موفق به جذب توسعه‌دهندگان زیادی شده‌‌اند؛ اما در این مقاله قصد داریم یک زبان برنامه‌نویسی که نام عجیبی هم دارد را به شما معرفی کنیم که این زبان جدید Nimrod (نمرود) نام دارد!

Nim نسبتاً نوظهور، از سال ۲۰۰۸ تا به امروز پیوسته در حال توسعه بوده است و شاید بهتر باشد بدانید که جدیدترین نسخهٔ این زبان ۰.۱۷.۲ است. اگر کمی در زمینهٔ برنامه‌نویسی با زبان Python اطلاعات داشته باشید، احتمالاً سینتکس زبان برنامه‌نویسی نمرود شما را به یاد پایتون خواهد انداخت؛ علت آن‌ هم این است که زبان Nim هم مانند پایتون از سیستم کدنویسی بلاک‌بندی شده استفاده می‌کند (استفاده از تَب به جای پرانتز) و این در حالی است که اشتراکات دیگری هم در سینتکس‌ این دو زبان می‌توانید پیدا کنید. به عنوان نمونه سورس‌کد زبان برنامه‌نویسی نمرود داریم:

# compute average line length
var
  sum = 0
  count = 0

for line in stdin.lines:
  sum += line.len
  count += 1

echo("Average line length: ",
  if count > 0: sum / count else: 0)

این زبان دقیقاً همانند زبان‌های Go و Rust، از Strong Types (حساس به نوع متغیر) استفاده می‌کند. نیم یک زبان برنامه‌نویسی شیئ‌گرا است و ساختار این زبان طوری است که وراثت از درجهٔ اهمیت بالایی در آن برخوردار است. 

Nim که با نام رسمی Nimrod (نمرود) شناخته شده است، خودش را به عنوان یک زبان برنامه‌نویسی دستوری و اصطلاحاً Statically Typed معرفی کرده است که قابلیت‌های این زبان نهایت قدرت را به برنامه‌نویس می‌دهند! اما این جمله به چه معنا است؟

در واقع، زبان برنامه‌نویسی Nim تمرکز خود را بر روی مکانیسم‌های مختلفی گذاشته است که بیشتر به کامپایل کردن کدها مربوط می‌شود؛ یک مدل از بازیافت حافظه (نوعی مدیریت حافظهٔ خودکار) و سامانهٔ Soft Real-Time که بر روی Thread Local Heaps پشتیبانی می‌شود. همچنین Nim تمرکز خود را بر روی TLH و پیغام‌هایی که بین رشته‌ها عبور می‌کنند گذاشته است به طوری که هر کدام از آن‌ها دارای یک بازیافت حافظه اختصاصی هستند. 

اگر بنچمارک برای‌تان خیلی مهم است، باید بدانید که نمرود قابل مقایسه با زبان سی است! کامپایلر این زبان به‌ طور خودکار کدهای زبان سی را تولید می‌کند. زبان نیم با کمک کامپایلرهای مختلف سمت سرور، می‌تواند جاوااسکریپت، آبجکتیو‌سی و سی‌پلاس‌پلاس را هم به عنوان ورودی دریافت کند. لایبرری و کامپایلر Nim دارای لایسنس MIT است. این زبان همچنین امکان استفاده از هر لایسنسی را برای برنامه‌ٔهایی که با استفاده از Nim می‌نویسید را به شما می‌دهد.