CoffeeScript
زبان کوچک CoffeeScript اخیراً بیشتر مطرح شده است. البته این مورد اینقدر بزرگ نبود که به عنوان یک فصل از مقاله js ی که در زنجان ارایه دادم مطرح شود ولی نبودش هم بی انصافی بود
CoffeeScript -> http://jashkenas.github.com/coffee-script/
این زبان در حقیقت در نهایت به javascript تبدیل میشود فقط اتفاقی که میافتد کد کوتاه تری را با این زبان باید بزنید به طور مثال شما دیگر چیزی رو declare نمیکنید یا کلاً از آکولاد استفاده نمیکنید و همه چیز با tab مشخص میشود
# Assignment: number = 42 opposite = true # Conditions: number = -42 if opposite // result in js if (opposite) { number = -42; } # Functions: square = (x) -> x * x // result in js square = function(x) { return 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)
همانطور که در مثالها مشاهده میشود کلاً همه چیز خیلی سادهتر میشود و در نتیجه خیلی راحتتر میتوانید کد و بزنید
در کل مواردی مثل کلاس هم وجود دارد که در نهایت به صورت function تعریف میشود
class Animal constructor: (@name) -> move: (meters) -> alert @name + " moved #{meters}m." class Snake extends Animal move: -> alert "Slithering..." super 5
بزرگترین مشکل CoffeeScript قسمت Debuging است چون کد اصلی به زبان دیگری طراحی شده است و شما مجبورید از کد نتیجه بفهمید کجای کدتان مشکل دارد
البته فایرفاکس قصد داردi در آینده debugger این زبان را هم اضافه کند. الان هم ابزار هایی مثل AceBug هست ولی در کل کار سختیست
پانوشت: ماکروسافت نیز چند وقت پیش زبان مشابهی را منتشر کرد به اسم TypeScript که نیاز همچین چیزهایی را بیشتر نشان می دهد (با تشکر از arashm)
پانوشت ۲: گویا بازار این چیزها خیلی داره داغ میشه LLJS : Low-Level JavaScript -> http://lljs.org/