Imba: زبانی سبک و سریع برای پروژه‌های تحت وب

Imba: زبانی سبک و سریع برای پروژه‌های تحت وب

Imba یک زبان برنامه‌نویسی برای پروژه‌های تحت وب است که در نهایت به کدهای خوانای جاوااسکریپت کامپایل می‌شود. به گفتهٔ سایت رسمی این زبان، یک اپلیکیشن نوشته شده با زبان ایمبا چیزی در حدود ۲۰ برابر سریع‌تر از اپلیکیشنی است که با ریئکت نوشته شده باشد! هدف اصلی از اجرای این پروژه این بود تا بتوان کدهای زبان روبی را داخل مرورگر اجرا کرد تا اینکه در نهایت در سال 2012 با الهام گرفتن از CoffeeScript، این زبان با سینتکس و قابلیت‌های مخصوص به خود خلق شد.

CofeeScript چیست؟
پیش از توضیح بیشتر در مورد این زبان، بهتر است آشنایی مختصری با CofeeScript داشته باشیم. کافی‌اسکرپیت یک زبان سبک است که کدهای نوشته شده با این زبان در نهایت به سورس‌کد جاوااسکرپیت کامپایل می‌شوند و هدف از طراحی کافی‌اسکرپیت این بوده تا قابلیت‌های منحصر به فرد جاوااسکرپیت را در ساده‌ترین حالت ممکن در اختیار دولوپرها قرار دهند. به عنوان یک نمونه سورس‌کد نوشته شده در کافی‌اسکرپیت داریم:

# Assignment:
number   = 42
opposite = true

# Conditions:
number = -42 if opposite

# Functions:
square = (x) -> x * x

# Arrays:
list = [1, 2, 3, 4, 5]

# Objects:
math =
  root:   Math.sqrt
  square: square
  cube:   (x) -> x * square x

# Splats:
race = (winner, runners...) ->
  print winner, runners

# Existence:
alert "I knew it!" if elvis?

# Array comprehensions:
cubes = (math.cube num for num in list)

گفته می‌شود که زبان Imba بهترین قابلیت‌های زبان‌های Ruby ،Python و همچنین لایبرری React را گرفته و یک زبان به مراتب بهتر و سریع‌تر ابداع کرده است. پیش از این گفتیم که کدهای نوشته شده با این زبان به جاوااسکرپیت کامپایل می‌شوند به طوری که کلیهٔ کامنت‌ها، فاصله‌گذاری‌ها، استایل کدنویسی و … پس از فرایند کامپایل حفظ خواهند شد.

علاوه بر این، امکان استفاده از لایبرری‌های جاوااسکرپیت در این زبان و بالعکس نیز وجود دارد. در ادامه، نمونه سورس‌کدی که در ایمبا نوشته شده را مشاهده خواهید کرد:

let dpr = window:devicePixelRatio or 1

tag sketchpad < canvas

	# receive the touch / click
	# create two paths for each touch
	def ontouchstart t
		t.capture
		t.data = [Path2D.new, Path2D.new]

	# triggered when a touch moves
	# loop through the paths and draw them
	def ontouchupdate t
		t.data.forEach do |path,i|
			let x = t.tx + i + i * Math.random * 3
			let y = t.ty + i + i * Math.random * 3
			path.lineTo(x * dpr,y * dpr)
			context('2d').stroke(path)

	def render
		

ویرایشگر کدی هم که برای استفاده از این زبان توصیه می‌شود، Sublime Text است چرا که در حال حاضر پلاگینی برای ساپورت زبان ایمبا در ویرایشگر سابلایم در گیت‌هاب عرضه شده است.



فرنوش فهیم