اسکالا
| طراحیشده توسط | مارتین اودرسکی |
|---|---|
| توسعهدهنده | آزمایشگاه متدهای برنامهنویسی مؤسسه پلیتکنیک فدرال لوزان |
| سکو | ماشین مجازی جاوا، LLVM |
| وبگاه | www.scala-lang.org |
اسکالا (به انگلیسی: Scala) یک زبان برنامهنویسی شیءگرا و تابعی است. نام اسکالا آمیزهای است از "scalable" و "language" به معنی زبان مقایسپذیر، از اهداف اصلی ایجاد زبان اسکالا، ارائه زبانی است برای تولید نرمافزار مقیاسپذیر به روشی چابک و سریع، و به دور از مشکلات مرسوم. اسکالا تلفیق زبانهای شیگرا همچون روبی و جاوا با زبانهای تابعی همچون Haskell و Erlang است. از دیدگاه چابکی و کارایی، عدهای اسکالا را جمع دو دنیای زبانهای پویا (Dynamic-Type) و ایستا (Static-Type) میدانند. یکی از دلایل دیگری که باعث مقبولیت و همچنین کارایی بالای این زبان میشود، دستور زبان (Syntax) منعطف آن است. اسکالا توسط پروفسور مارتین اودرسکی که خالق Genericهای جاوا و از برترین توسعه دهندگان کامپایلر javac میباشد، در سال ۲۰۰۳ طراحی و به مرور توسط ایشان و جامعه اسکالا بهبود و توسعه داده شده است.[۱]
جیمز استراچن (به انگلیسی: James Strachan) سازندهٔ زبان برنامهنویسی 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 ایجاد کردهایم.
منابع[ویرایش]
- ↑ ۱٫۰ ۱٫۱ مجلهٔ «سلام دنیا» شمارهٔ دو. November 2014.
- ↑ ویکیپدیای فارسی
|
|
||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
| این یک مقالهٔ خرد پیرامون برنامهنویسی رایانه است. با گسترش آن به ویکیپدیا کمک کنید. |
- اسکالا
- پلتفرم جاوا
- خانواده زبان برنامهنویسی جاوا
- زبانهای اسکریپتنویسی
- زبانهای برنامهنویسی ایستا
- زبانهای برنامهنویسی تطبیق الگو
- زبانهای برنامهنویسی داتنت
- زبانهای برنامهنویسی ساختهشده در ۲۰۰۳ (میلادی)
- زبانهای برنامهنویسی ساختهشده در دهه ۲۰۰۰ (میلادی)
- زبانهای برنامهنویسی شیءگرا
- زبانهای برنامهنویسی ماشین مجازی جاوا
- زبانهای برنامهنویسی همروند
- زبانهای تابعی
- معرفیشدههای ۲۰۰۳ (میلادی)
- نرمافزارهای آزاد برنامهنویسیشده با اسکالا
- نرمافزارهایی که از پروانه بیاسدی استفاده میکنند