اسکالا

اسکالا یک زبان برنامه‌نویسی شیءگرا و تابعی است. نام اسکالا آمیزه‌ای است از "scalable" و "language" به معنی زبان مقایس‌پذیر، از اهداف اصلی ایجاد زبان اسکالا، ارائه زبانی است برای تولید نرم‌افزار مقیاس‌پذیر به روشی چابک و سریع، و به دور از مشکلات مرسوم. اسکالا تلفیق زبان‌های شی‌گرا همچون روبی و جاوا با زبان‌های تابعی همچون Haskell و Erlang است. از دیدگاه چابکی و کارایی، عده‌ای اسکالا را جمع دو دنیای زبان‌های پویا (Dynamic-Type) و ایستا (Static-Type) می‌دانند. یکی از دلایل دیگری که باعث مقبولیت و همچنین کارایی بالای این زبان می‌شود، دستور زبان (Syntax) منعطف آن است. اسکالا توسط پروفسور مارتین اودرسکی که خالق Genericهای جاوا و از برترین توسعه دهندگان کامپایلر javac می‌باشد، در سال ۲۰۰۳ طراحی و به مرور توسط ایشان و جامعه اسکالا بهبود و توسعه داده شده‌است.
جیمز استراچن سازنده زبان برنامه‌نویسی Groovy در توصیفی اسکالا را ادامه‌دهنده احتمالی جاوا دانسته است.
ویژگی‌ها
ورود و پیشرفت زبان اسکالا در صنعت نرم‌افزار فقط به دلیل موجز بودن، راحتی برنامه‌نویس و انعطاف آن نیست. طبق قانون مور تعداد ترانزیستورهای یک پردازنده، هر دو سال، دو برابر می‌شوند. به عبارت دیگر ابعاد ترانزیستورها در حال نصف شدن است و این روند در سال ۲۰۲۰ متوقف خواهد شد. هم اکنون نیز کند شدن این روند قابل مشاهده است و به جای اینکه سرعت پردازنده‌ها زیاد شود، تعداد هسته‌های آن‌ها بیشتر می‌شود. شاهد این امر تلفن‌های هوشمند و تبلت‌ها هستند؛ آن‌ها از پردازنده‌های چند هسته‌ای بهره می‌برند ولی بازه سرعت پردازنده‌ها چند سالی است که تغییر شگرفی نکرده است. به همین دلیل برنامه‌هایی با قابلیت اجرای همروند (Concurrent) و توزیع شده (Distributed) بیش از پیش مورد توجه قرار گرفتند. با افزایش کاربران و تقاضا و نزدیک شدن به اتمام قانون مور، روز به روز تقاضا برای تولید چنین نرم‌افزارهایی افزایش می‌یابد. زبان اسکالا دارای ویژگی‌هایی است که مختص چنین تقاضاهایی طراحی شده‌است. از آن جمله می‌توان به Functional Programming، Pattern Matching، Immutables اشاره کرد. علاوه بر این، اسکالا حاصل جمع ویژگی‌های بسیاری از زبان‌های موجود در بازار است. در حال حاضر زبان اسکالا دارای خصایص زیر می‌باشد:
رایگان و متن باز
استاتیک و چک زمان کامپایل (Type-safe)
شی گرا (Object Oriented)
تابعی (Functional)
موجز و منعطف
دارای طیف وسیعی از کتابخانه‌ها
بالغ و دارای ابزارهای توسعه گوناگون
هیچ‌یک از زبان‌های Ruby، Java، Go، C, JavaScript و اکو سیستم‌های آن‌ها، دارای همه ویژگی‌های بالا نیستند.
اسکالا پدری به نام Haskell دارد. همچنین تشابهات زیادی با Erlang و #F دارا می‌باشد.
سی شارپ و پایتون نیز دارای قابلیت‌هایی کم و بیش نزدیک به اسکالا می‌باشند ولی شرایط اجرای متفاوتی دارند.
طی سال‌های اخیر توجه شرکت‌ها و موسسات بیشتری به سمت اسکالا جذب شده‌است. بلوغ اسکالا باعث شده تا نه تنها شرکت‌های پیشرو در صنعت IT (همچون Twitter، LinkedIn و …) بلکه شرکت‌های ریز و درشت بسیاری که تنها مصرف کنندگان محصولات فناوری هستند نیز به استفاده از این زبان و بستر منحصر به فرد آن رو بیاورند. ابزارهای Build و Test، کتابخانه و چارچوب‌های منحصر به فردی همچون Scalaz، Play، Akka و … در کنار دسترسی به طیف گسترده کتابخانه‌های جاوا، اسکالا را به یکی از بهترین گزینه‌ها برای تولید انواع محصولات نرم‌افزاری تبدیل کرده. هم اینک اسکالا در بسیاری از شرکت‌ها/موسسات به‌طور گسترده‌ای استفاده می‌شود؛ WalMart (شعبه کانادایی)، خبرگزاری Guardian، سایت خبری سرگرمی HuffingPost، سایت Coursera ،WhitePages و … از نام آشناترین موسساتی هستند که می‌توان نام برد. برخی از شرکت‌ها/موسسات نام برده تمام یا بخشی از نرم‌افزارهای موجود خود را که با PHP، Ruby ، … و حتی Java بود، با نمونه بازنویسی شده با اسکلا جایگزین کردند.
سرعت و کارایی
به لطف JVM، برنامه‌های نوشته شده با اسکالا از کارایی بسیار بالایی برخودارند، بالاخص هنگامی که JVM به واسطه قابلیت JIT به حداکثر توان محاسباتی سیستم دست پیدا می‌کند . شرکت WhitePages با بازنویسی بخشی از سرویس‌های Backend خود با اسکالا (که پیشتر، با Ruby و Perl نوشته شده بودند) توانست بیش از ۹۰٪ در هزینه‌های سخت افزای خود صرفه جویی کند. سرعت اجرای یک زبان برنامه‌نویسی هرچند مهم است، اما مهم‌تر از آن قابلیت‌های زبان در همروندی (Concurrency) و توزیع شدگی (Distribution) است. اسکالا به لطف ابزارها و چارچوب‌هایی همچون Akka، این کار را نه تنها راحت بلکه بسیار جذاب‌تر نیز کرده‌است.
ابزارهای توسعه
شرکت Typesafe بزرگترین حامی و پشتبیان زبان و پلتفرم اسکالا است که تاکنون موفقیت‌ها و جذب سرمایه خوبی داشته‌است. فعالیت اصلی این شرکت در ارائه خدمات تجاری آموزشی و مشاوره‌ای در زمینه ساخت نرم‌افزارهای نوین با قدرت پاسخگویی به تعداد کاربران بالاست که در اصطلاح به این نوع نرم‌افزارها، نرم‌افزارهای Reactive می‌گویند. Typesafe به صورت رسمی به توسعه کامپایلر اصلی اسکالا و ابزارهای مرتبط همچون چارچوب تولید نرم‌افزارهای توزیع شده Akka، چارچوب Play، محیط توسعه (IDE) و … می‌پردازد. به این مجموعه ابزارها، چارچوب/بستر Typesafe می‌گویند.
اسکالا پایه‌ای‌ترین عضو چارچوب/بستر Typesafe است. از اهداف این چارچوب همراه شدن با تغییراتی است که روند توسعه نرم‌افزار را متحول می‌کنند. حقیقت این است که نیازها و شرایط تولید نرم‌افزارها تغییر کرده‌اند. امروزه چابکی (Agility) و کارایی بالا (Productivity) در فرایند تولید نرم‌افزار یک نیاز واقعی است. اما در کنار آن، محصول تولید شده باید مقیاس‌پذیر (Scalable) و پاسخگو (Responsive) نیز باشد. چارچوب/بستر Typesafe سعی در تولید و پشتیبانی ابزارهایی دارد که با معماری Reactive مطابق بوده و همچنین تاثیر مثبتی در کارایی و چابکی فرایند توسعه داشته باشند.
جامعه باز و آزاد اسکالا
شرکت Typesafe به علت اهداف بلند مدتی که دارد مقداری از ارائه نوآوری و تغییرات در اسکالا کاسته و در عوض بر روی استحکام و پایداری آن تمرکز کرده، مطمئنا برخی از اعضای جامعه اسکالا با این استراتژی موافق نبوده و علاقه‌مند به ادامه روند نوآوری در اکو سیستم و زبان اسکالا هستند. از آنجایی که این زبان متن باز است این افراد دست به ایجاد یک انشعاب به نام Typelevel زدن تا نسخه‌ای از اسکالا با قابلیت‌های جدید و مدرن به همراه اکو سیستمی که با این نو آوری‌ها همسان باشد را تولید و نگهداری کنند.
نکته مهم اینکه مارتین اودرسکی (رئیس هیات مدیره Typesafe) از این حرکت به شدت استقبال و حمایت کرد و اعلام کرد نوآوری‌هایی که در Typelevel پیاده‌سازی شود و قابل قبول جامعه باشد در نسخه اصلی Typesafe نیز ادغام خواهد شد و این باعث بهبود کل اکو سیستم خواهد بود.
نمونه "Hello world
در اینجا یک Hello World به زبان اسکالا قرار داده‌شده‌است:
object HelloWorld extends App {
println("Hello, world!")
در مقایسه با جاوا در این برنامه ساده، نیازی به تعریف کلاس نداشتیم و چیزی نیز به‌عنوان static معرفی نشده‌است؛ در اصل با به‌بکاربردن کلمه کلیدی object در اینجا ما یک Singleton ایجاد کرده‌ایم.