برنامه نویسی -
28 شهریور 1401
زبان برنامه نویسی Scala توسط Martin Odersky طراحی شده است. این برنامه به طور رسمی برای اوایل سال 2004 برای پلتفرم جاوامنتشر شد و در ژوئن 2004 برای سیستم Net Framework منتشر شد. بعدا، Scala پشتیبانی از .net را در سال 2012 کاهش داد. اسکالا از جاوا، Haskell، لیسپ، Pizza و غیره تاثیر می پذیرد و بر روی F#، Fantom، Red و غیره تاثیر می گذارد. با Scala می توانید هر نوع برنامه ای مانند برنامه های کاربردی وب، برنامه های کاربردی سازمانی، برنامه های موبایل، نرم افزار مبتنی بر دسکتاپ و غیره ایجاد کنید.
scala زبانی object-functional است که هم از object-oriented پشتیبانی می کند و هم از functional programming .به چنین زبان هایی multi-paradigm گفته می شود (زبان هایی که چندین روش برنامه نویسی را پشتیبانی می کنند مانند سی شارپ). از زبان برنامه نویسی Scala به عنوان یک زبان اسکریپتی نیز می توان استفاده کرد. و یک زبان همه منظوره است.بسیاری از ویژگی های اسکالا به دلیل انتقادهایی که به جاوا می شد به آن اضافه شدند.این زبان اولین بار توسط Martin Odersky در سال 2001 طراحی شد و در سال 2003 انتشار یافت.واژه scala از دو کلمه Scalable و Language گرفته شده است.اسکالا از زبان های برنامه نوسی مختلفی تاثیر گرفته است و کدهای کوتاهی در مقایسه با بسیاری از زبان های برنامه نویسی موجود دارد.اسکالا بر روی NET. نیز اجرا می شود.
ویژگیها
ورود و پیشرفت زبان اسکالا در صنعت نرمافزار فقط به دلیل موجز بودن، راحتی برنامهنویس و انعطاف آن نیست. طبق قانون مور تعداد ترانزیستورهای یک پردازنده، هر دو سال، دو برابر میشوند. به عبارت دیگر ابعاد ترانزیستورها در حال نصف شدن است و این روند در سال ۲۰۲۰ متوقف خواهد شد. هماکنون نیز کند شدن این روند قابل مشاهده است و به جای اینکه سرعت پردازندهها زیاد شود، تعداد هستههای آنها بیشتر میشود. شاهد این امر تلفنهای هوشمند و تبلتها هستند؛ آنها از پردازندههای چند هستهای بهره میبرند ولی بازهٔ سرعت پردازندهها چند سالی است که تغییر شگرفی نکردهاست. به همین دلیل برنامههایی با قابلیت اجرای همروند (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 بود، با نمونهٔ بازنویسی شده با اسکلا جایگزین کردند.
یکی از قابلیتهای اسکالا این است که میتواند بهطور جداگانه بر روی هر دایرکتوری دلخواه نصب شود و حتی نسخههای مختلف آن نیز میتواند در دایرکتوریهای مختلف نصب شود و در واقع نصب آن به صورت System-wide نیست.
اسکالا جزو زبانهای برنامهنویسی دشوار برای یادگیری است و هدف از ایجاد اسکالا طراحی یک جاوای بهینهتر بودهاست و در این زبانها سعی شده Syntax تا حد ممکن نزدیک به زبان جاوا باقی بماند و صرفاً منحنی یادگیری این زبانها نسبت به زبان جاوا کمی بهتر شود.
کاربردهای اسکالا
با اسکالا می توانید هر نوع برنامه ای مانند برنامه های کاربردی وب، برنامه های کاربردی سازمانی، برنامه های موبایل، نرم افزار مبتنی بر دسکتاپ و غیره ایجاد کنید. برخی از کاربردهای اسکالا عبارتند از :
برنامه های کاربردی وب
نرم افزارها و کتابخانه ها
جریان داده با Akka
پردازش موازی دسته ای
همزمان سازی وایجاد برنامه های توزیع شده
تجزیه و تحلیل داده ها با Spark
تفسیر AWS lambda
اسکریپت ad hoc در REPL
با Scala، شما می توانید هر نوع نرم افزاری، مبتنی بر وب، مبتنی بر تلفن همراه و یا برنامه مبتنی بر دسکتاپ را در زمان کم و کد گذاری و ایجاد کنید.