آشنایی اجمالی با زبان برنامه‌نویسی اسکالا
اسکالا (Scala) یک زبان برنامه‌نویسی کاربردی است که از پارادایم‌های شیءگرایی و تابعی پشتیبانی می‌کند. اسکالا زبانی است که بهترین شکل از گسترش‌پذیری را ارائه می‌کند تا توسعه‌دهندگان بتوانند برای ساخت نرم‌افزار‌های گسترش‌پذیری به شیوه چابک و به دور از مشکلات رایج از آن استفاده کنند.

1606683296_1_0.gif

چرا اسکالا مهم است؟

برای آن‌که به اهمیت زبان اسکالا اشاره کنیم بهتر است توضیح کوتاهی در ارتباط با آپاچی کافکا اشاره کنیم. آپاچی کافکا (Apache Kafka‎) یک سکوی پردازش متن‌باز است که توسط لینکدین توسعه داده شده و به بنیاد نرم‌افزار آپاچی اهدا شده‌ است. هدف این پروژه، فراهم‌سازی سکوی یکپارچه، توان بالا و کم تأخیر برای خوراک‌های لحظه‌ای داده‌ها است. لایه ذخیره‌سازی آن یک «صف انتشار/اشتراک (pub/sub) پیام با گسترش‌پذیری زیاد مهندسی‌شده است. آپاچی کافکا پلت‌فرم متن‌باز پردازش جریانی توسعه یافته است که توسط بنیاد نرم‌افزار آپاچی با استفاده از زبان‌های اسکالا و جاوا نوشته شده است. اترپد (Etherpad‎) که یک برنامه تحت وب و دارای ویرایشگر مشارکتی بلادرنگ است و به نویسندگان اجازه می‌دهد تا متنی را به شکل همزمان ویرایش کندن و از ویرایش سایر ویرایشگران به صورت همزمان باخبر شوند نیز با اسکالا نوشته شده است. دیپ‌لرنینگ۴جی (Deeplearning4j‎) یک کتابخانه برنامه‌نویسی یادگیری عمیق است که برای جاوا و ماشین مجازی جاوا (JVM) و چارچوب رایانشی با حمایت گسترده از الگوریتم‌های یادگیری عمیق است که مستندات بسیاری کاربردی برای آن ارائه شده نیز به زبان‌های جاوا، اسکالا، کودا، سی و سی‌پلاس‌پلاس نوشته شده است. لازم به توضیح است که لیفت که یک چارچوب وب آزاد و متن باز است برای زبان برنامه‌نویسی اسکالا طراحی شده است. لیفت به عنوان یک پروژه متن باز در ۲۶ فوریه ۲۰۰۷ تحت مجوز آپاچی ۲٫۰ راه‌اندازی شد. فوراسکوئر را می‌توان به عنوان یک پلتفرم وب رایج و تجاری که با استفاده از لیفت توسعه یافته شده است، نام برد. دی بی پدیا که یک پروژه با هدف استخراج محتوای ساختاری از اطلاعات ایجاد شده در سایت‌هایی همچون ویکی‌پدیا است با استفاده از زبان اسکالا، جاوا و وی‌اس‌پی نوشته شده است. دی بی پدیا به کاربران اجازه می‌دهد به صورت معنا شناختی روابط و خواص منابع را جست‌وجو کنند.

چابکی در برنامه‌نویسی با اسکالا

به لحاظ چابکی و عملکرد، برخی از کارشناسان معتقد هستند که اسکالا دو رویکرد برنامه‌نویسی پویا (Dynamic-Type) و ایستا (Static-Type) را در قالب یک مجموعه واحد ارائه کرده است. یکی از دلایل مقبولیت و کارایی زیاد این ترکیب نحوی این زبان (Syntax) است که انعطاف‌پذیری زیادی به آن بخشیده است. اسکالا توسط پروفسور مارتین اودرسکی که خالق نوع‌های ژنریک جاوا است در سال ۲۰۰۳ طراحی و به مرور توسط اودرسکی و جامعه اسکالا توسعه داده شد. جیمز استراچن خالق زبان برنامه‌نویسی Groovy بر این باور است که اسکالا مسیری مشابه با زبان جاوا را طی می‌کند.

نگاهی به برخی از ویژگی‌های کاربردی اسکالا

ورود و پیشرفت زبان اسکالا در صنعت نرم‌افزار فقط به دلیل موجز بودن، راحتی برنامه‌نویس و انعطاف آن نیست. طبق قانون مور تعداد ترانزیستورهای یک پردازنده، هر دو سال، دو برابر می‌شوند. به عبارت دیگر ابعاد ترانزیستورها در حال نصف شدن است و این روند در سال ۲۰۲۰ متوقف خواهد شد. هم‌اکنون نیز کند شدن این روند قابل مشاهده است و به جای اینکه سرعت پردازنده‌ها زیاد شود، تعداد هسته‌های آن‌ها بیشتر می‌شود. شاهد این امر تلفن‌های هوشمند و تبلت‌ها هستند؛ آن‌ها از پردازنده‌های چند هسته‌ای بهره می‌برند، اما سرعت پردازنده‌ها چند سالی است که تغییر زیادی نکرده است. به همین دلیل برنامه‌هایی با قابلیت اجرای همروند (Concurrent) و توزیع شده (Distributed) بیش از پیش مورد توجه قرار گرفته‌اند. با افزایش کاربران و تقاضا و نزدیک شدن به اتمام قانون مور، روز به روز تقاضا برای تولید چنین نرم‌افزارهایی افزایش می‌یابد. زبان اسکالا دارای ویژگی‌هایی است که مختص چنین تقاضاهایی طراحی شده‌است. از آن جمله می‌توان به غیر قابل تغییر، تطابق الگوها و برنامه‌نویسی تابعی اشاره کرد. علاوه بر این، اسکالا حاصل جمع ویژگی‌های بسیاری از زبان‌های موجود در بازار است. زبان اسکالا به واسطه ویژگی‌هایی همچون رایگان و متن باز، ایستا و بررسی زمان کامپایل (Type-safe)، شی‌گرایی،  تابعی، انعطاف‌پذیری، پشتیبانی توسط طیف گسترده‌ای از کتابخانه‌ها، تکامل یافته و دارای ابزارهای توسعه گوناگون که حتا برخی از زبان‌های برنامه‌نویسی بزرگ از آن‌ها پشتیبانی نمی‌کنند اشاره کرد. اسکالا تشابهات زیادی با Erlang و #F دارد. سی شارپ و پایتون نیز دارای قابلیت‌هایی کم و بیش نزدیک به اسکالا هستند، اما شرایط اجرای متفاوتی دارند.

طی سال‌های اخیر توجه شرکت‌ها و مؤسسات بیشتری به سمت اسکالا جذب شده‌است. بلوغ اسکالا باعث شده تا نه تنها شرکت‌های پیشرو در صنعت IT (همچون Twitter, LinkedIn و …) بلکه شرکت‌های ریز و درشت بسیاری که تنها مصرف‌کنندگان محصولات فناوری هستند نیز به استفاده از این زبان و بستر منحصر به فرد آن روی بیاورند. ابزارهای Build و Test، کتابخانه و چارچوب‌های منحصر به فردی همچون Scalaz, Play, Akka و … در کنار دسترسی به طیف گستردهٔ کتابخانه‌های جاوا، اسکالا را به یکی از بهترین گزینه‌ها برای تولید انواع محصولات نرم‌افزاری تبدیل کرده. هم اینک اسکالا در بسیاری از شرکت‌ها/مؤسسات به‌طور گسترده‌ای استفاده می‌شود؛ WalMart  خبرگزاری گاردین، سایت خبری سرگرمی HuffingPost، سایت Coursera ,WhitePages و … از نام آشناترین مؤسساتی هستند که می‌توان نام برد. برخی از شرکت‌ها/مؤسسات نام برده تمام یا بخشی از نرم‌افزارهای موجود خود را که با روبی، پی‌اچ‌پی و حتا جاوا بود را با نمونه بازنویسی شده با اسکلا جایگزین کردند.

یکی از قابلیت‌های اسکالا این است که می‌تواند به‌طور جداگانه روی هر دایرکتوری دلخواه نصب شود و حتا نسخه‌های مختلف آن نیز می‌تواند در دایرکتوری‌های مختلف نصب شود و در واقع نصب آن به صورت System-wide نیست. اسکالا جزو زبان‌های برنامه‌نویسی دشوار برای یادگیری است و هدف از ایجاد اسکالا طراحی یک جاوای بهینه‌تر بوده‌است و در این زبان‌ها سعی شده Syntax تا حد ممکن نزدیک به زبان جاوا باقی بماند و صرفاً منحنی یادگیری این زبان‌ها نسبت به زبان جاوا کمی بهتر شود.

سرعت و عملکرد

به لطف ماشین مجازی جاوا (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 زدن تا نسخه‌ای از اسکالا با قابلیت‌های جدید و مدرن به همراه اکو سیستمی که با این نو آوری‌ها همسان باشد را تولید و نگهداری کنند.

در مثال زیر نحوه نوشتن برنامه Hello World به زبان اسکالا را مشاهده می‌کنید.

 object HelloWorld extends App {

   println("Hello, world!")

 }

در مقایسه با جاوا در این برنامه ساده، نیازی به تعریف کلاس نداریم و مفهومی نیز به ‌عنوان static تعریف نشده است؛ در اصل با به‌کار بردن کلمه کلیدی object یک شی کلی تعریف کرده‌ایم.

ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را می‌توانید از کتابخانه‌های عمومی سراسر کشور و نیز از دکه‌های روزنامه‌فروشی تهیه نمائید.

ثبت اشتراک نسخه کاغذی ماهنامه شبکه     
ثبت اشتراک نسخه آنلاین

 

کتاب الکترونیک +Network راهنمای شبکه‌ها

  • برای دانلود تنها کتاب کامل ترجمه فارسی +Network  اینجا  کلیک کنید.

کتاب الکترونیک دوره مقدماتی آموزش پایتون

  • اگر قصد یادگیری برنامه‌نویسی را دارید ولی هیچ پیش‌زمینه‌ای ندارید اینجا کلیک کنید.

ایسوس

نظر شما چیست؟