Wren সম্পর্কে

Wren-কে যা অনন্য করে তোলে, তা জানুন


Wren একটি ছোট, দ্রুত, ক্লাস-ভিত্তিক কনকারেন্ট স্ক্রিপ্টিং ভাষা। Lua-আকারের একটি প্যাকেজে Smalltalk-এর কথা ভাবুন, সঙ্গে একটু Erlang, আর সবটাই চেনা, আধুনিক সিনট্যাক্সে মোড়া।

  • ছোট। VM-টি লেখা হয়েছে ৪,০০০-এরও কম সেমিকোলনে, আর সেই C পড়ার উপযোগী ও স্নেহভরে কমেন্ট করা।

  • দ্রুত। একটি স্মার্ট, সিঙ্গেল-পাস কম্পাইলার কমপ্যাক্ট ও দক্ষ বাইটকোড তৈরি করে।

  • ক্লাস-ভিত্তিক। ক্লাস ও অবজেক্টই এখানে প্রধান বিষয়।

  • কনকারেন্ট। হালকা ওজনের ফাইবার ভাষার মধ্যেই বিল্ট-ইন।

  • স্ক্রিপ্টিং। এমবেড করা যায়, কোনো ডিপেন্ডেন্সি নেই, ছোট একটি স্ট্যান্ডার্ড লাইব্রেরি, আর ব্যবহার করা সহজ একটি C API.

VM

Wren-এর হৃদয় হলো VM। Wren ভার্চুয়াল মেশিন ভাষার মূল অংশ, যা সব Wren সোর্স কোড রান করে। এটি তো কেবল একটি লাইব্রেরি, স্বতন্ত্র কোনো অ্যাপ্লিকেশন নয়। এটিকে বড় একটি হোস্ট অ্যাপ্লিকেশনের ভেতরে এমবেড করার জন্যই ডিজাইন করা হয়েছে।

Wren-কে এমবেড করা আছে এমন কিছু প্রজেক্ট পাবেন:

  • TIC-80 - ছোট ছোট গেম বানানো, খেলা ও শেয়ার করার জন্য একটি ফ্যান্টাসি কম্পিউটার (PICO8-এর মতো)।
  • DOME - গেম বানানোর জন্য একটি ক্রস-প্ল্যাটফর্ম ফ্রেমওয়ার্ক।
  • luxe - গেম বানানোর জন্য একটি ক্রস-প্ল্যাটফর্ম, দ্রুত-ডেভেলপমেন্ট গেম ইঞ্জিন।
  • Wren Console - মূলত Wren দিয়েই লেখা একটি Wren REPL ও CLI।

আপনি চাইলে নিজের প্রজেক্টেও Wren এমবেড করতে পারেন। Exercism-এর কাজে আমরা হোস্ট অ্যাপ্লিকেশন হিসেবে Wren Console ব্যবহার করব, যাতে টার্মিনাল থেকে আমাদের Wren স্ক্রিপ্ট রান ও টেস্ট করা যায়।

কেন Wren?

Wren মূলত তৈরি করেছিলেন Bob Nystrom, যিনি Crafting Interpreters-এর লেখক হিসেবে পরিচিত। তিনি এক-দুইটি নয়, বেশ কয়েকটি ভাষা তৈরি করেছেন, তবে Wren তৈরির পেছনের নির্দিষ্ট কারণটি তিনি নিজেই ব্যাখ্যা করেছেন:

অ্যাপ্লিকেশনে এমবেড করার জন্য কয়েকটি স্ক্রিপ্টিং ভাষা আছে। মূলটি হলো Lua। আগে ছিল TCL। এছাড়া Guile আছে, JavaScript-এর ব্যবহারও বাড়ছে, আর কিছু অ্যাপ্লিকেশন Python এমবেড করে। আমি আগে গেম ডেভেলপার ছিলাম, তাই "স্ক্রিপ্টিং" বলতে আমার মনে সাধারণত "গেম স্ক্রিপ্টিং"-ই আসে।

Lua ভালো: ছোট, সহজ আর দ্রুত। কিন্তু (এটাকে সমালোচনা বলছি না) C++ বা Java-র মতো ভাষায় অভ্যস্ত কেউ Lua-কে অদ্ভুতও লাগবে। এর সিনট্যাক্স আলাদা। সিম্যানটিক্স, বিশেষ করে অবজেক্ট মডেল, অভাবনীয়। ১ থেকে শুরু হওয়া ইনডেক্সিং-এ যে কেউ অভ্যস্ত হয়ে যেতে পারে, কিন্তু মেটাটেবিলের মতো জিনিস দেখিয়ে দেয় যে অবজেক্টগুলো আসলে পরে জোড়া দিয়ে Lua-র ওপর বসানো হয়েছিল।

আমার মনে হয় Lua-র মতো সহজ, কিন্তু যাঁর OOP-র পটভূমি আছে তাঁর কাছে স্বাভাবিক লেগে যায়, এমন একটি ভাষার জন্য জায়গা আছে। Wren হলো সেটারই আমার একটি প্রচেষ্টা।

চেষ্টা করে দেখুন

আপনি ওয়েব ব্রাউজারের ভেতরেই দ্রুত একবার চেষ্টা করে দেখতে পারেন (কিছু ইনস্টল না করেই)। আর যদি ঝকঝকে UI-এর মোড়কে Wren নিয়ে পরীক্ষা-নিরীক্ষা করতে চান, তাহলে Wren Playground দেখতে পারেন।