آموزش اسکالا (Scala)

اسکالا(scala)

در این صفحه می خوانید :

معرفی اسکالا

اسکالا یک زبان برنامه نویسی است که توسط آقای مارتین اودرسکی و تیم تحقیقاتی وی در سال 2003 اختراع شده است. اسکالا یک زبان برنامه نویسی مبتنی بر کامپایلر و multi-paradigm است که کم حجم، سریع و کارآمد است. مهمترین مزیت اسکالا JVM (ماشین مجازی جاوا) است. کد اسکالا ابتدا توسط یک کامپایلر اسکالا تهیه و  byte code آن تولید می شود، سپس برای تولید خروجی به ماشین مجازی جاوا منتقل می شود.
اسکالا برنامه نویسی شی گرا و تابعی را با یک زبان مختصر و سطح بالا ترکیب می کند. انواع ایستا اسکالا به جلوگیری از بروز اشکالات در برنامه های پیچیده کمک می کند و زمان اجرای JVM و جاوااسکریپت به شما امکان می دهد سیستم های با کارایی بالا و دسترسی آسان به بخش عظیم کتابخانه ها بسازید.
همچنین اسکالا یک زبان برنامه نویسی با هدف کلی است که از برنامه نویسی کاربردی و یک سیستم نوع ایستای قوی پشتیبانی می کند. بسیاری از تصمیمات طراحی اسکالا برای پرداختن به انتقادات از جاوا، به صورت مختصر طراحی شده اند.
نام اسکالا آمیزه‌ای از scalable و language به معنی زبان مقیاس‌پذیر است. از اهداف اصلی ایجاد زبان اسکالا، ارائه زبانی برای تولید نرم‌افزار مقیاس‌پذیر به روشی چابک و سریع، و به دور از مشکلات مرسوم است. اسکالا تلفیق زبان‌های شی‌گرا همچون روبی و جاوا با زبان‌های تابعی همچون Haskell و Erlang  است.
 Scala قابلیت همکاری زبان با جاوا را فراهم می کند، به گونه ای که ممکن است کتابخانه هایی که به هر زبان نوشته شده اند به طور مستقیم به کد اسکالا یا جاوا مراجعه کنند.
شرکت Typesafe بزرگترین حامی و پشتیبان زبان و پلتفرم اسکالا است که تاکنون موفقیت‌ها و جذب سرمایه خوبی داشته‌است. فعالیت اصلی این شرکت در ارائه خدمات تجاری آموزشی و مشاوره‌ای در زمینه ساخت نرم‌افزارهای نوین با قدرت پاسخگویی به تعداد کاربران بالاست که در اصطلاح به این نوع نرم‌افزارها، نرم‌افزارهای Reactive می‌گویند. Typesafe به صورت رسمی به توسعهٔ کامپایلر اصلی اسکالا و ابزارهای مرتبط همچون چارچوب تولید نرم‌افزارهای توزیع شده Akka، چارچوب Play، محیط توسعه (IDE) و … می‌پردازد. به این مجموعه ابزارها، چارچوب یا بستر Typesafe می‌گویند.
اسکالا پایه‌ای‌ترین عضو چارچوب Typesafe است. از اهداف این چارچوب همراه شدن با تغییراتی است که روند توسعه نرم‌افزار را متحول می‌کنند. حقیقت این است که نیازها و شرایط تولید نرم‌افزارها تغییر کرده‌اند. امروزه چابکی (Agility) و کارایی بالا (Productivity) در فرایند تولید نرم‌افزار یک نیاز واقعی است. اما در کنار آن، محصول تولید شده باید مقیاس‌پذیر (Scalable) و پاسخگو (Responsive) نیز باشد. چارچوبTypesafe سعی در تولید و پشتیبانی ابزارهایی دارد که با معماری Reactive مطابق بوده و همچنین تأثیر مثبتی در کارایی و چابکی فرایند توسعه داشته باشند.

تاریخچه اسکالا

اسکالا یک زبان برنامه نویسی است که توسط آقای Martin Odersky و تیم تحقیقاتی وی در سال 2003 اختراع شده است. این زبان به طور رسمی برای اوایل سال 2004 برای پلتفرم جاوا منتشر شد و در ژوئن 2004 برای سیستم Net Framework منتشر شد. بعدا، Scala پشتیبانی از دات نت را در سال 2012 کاهش داد. اسکالا از جاوا، Haskell، لیسپ، Pizza و غیره تاثیر می پذیرد و بر روی F#، Fantom، Red و غیره تاثیر می گذارد.

چرا اسکالا

  • اسکالا قادر است با داده هایی که به صورت توزیع شده ذخیره می شوند، کار کند. به کلیه منابع موجود دسترسی پیدا می کند و از پردازش داده های موازی پشتیبانی می کند.
  • اسکالا از داده های تغییر ناپذیر و توابع مرتبه بالاتر پشتیبانی می کند.
  • اسکالا یک نسخه به روز شده از جاوا است که برای از بین بردن کد غیر ضروری طراحی شده است. این برنامه از چندین کتابخانه و API پشتیبانی می کند که به برنامه نویس اجازه می دهد تا به زمان کمتری برسد.
  • اسکالا از چندین نوع سازه یا Constructs پشتیبانی می کند که برنامه نویس را قادر می سازد با سهولت با انواع container کار کند.

ویژگی های اسکالا

  • زبان برنامه نویسی شی گرا : اسکالا هم یک زبان برنامه نویسی کاربردی و هم یک زبان برنامه نویسی شی گرا است. هر متغیر و مقداری که در اسکالا استفاده می شود بطور پیش فرض به عنوان یک شی ذخیره می شود.
  • برنامه نویسی توسعه پذیر : اسکالا می تواند از سازه های چند زبان پشتیبانی کند بدون نیاز به برنامه های افزودنی DSL ، کتابخانه ها و API ها.
  • زبان برنامه نویسی  Statically Typed :اسکالا در کل دامنه خود Datatype را به متغیر متصل می کند.
  • زبان برنامه نویسی Functional :اسکالا یک نحو سبک برای تعریف توابع فراهم می کند، از توابع مرتبه بالاتر پشتیبانی می کند، این امر به توابع تو در تو لانه می دهد.
  • قابلیت همکاری: اسکالا با استفاده از کامپایلر اسکالا کد را کامپایل می کند و آن را به Java Byte Code تبدیل می کند و سپس آن را در JVM اجرا می کند.

کاربردهای اسکالا

با اسکالا می توانید هر نوع برنامه ای مانند برنامه های کاربردی وب، برنامه های کاربردی سازمانی، برنامه های موبایل، نرم افزار مبتنی بر دسکتاپ و غیره ایجاد کنید. برخی از کاربردهای اسکالا عبارتند از :

  • برنامه های کاربردی وب
  • نرم افزارها و کتابخانه ها
  • جریان داده با Akka
  • پردازش موازی دسته ای
  • همزمان سازی وایجاد برنامه های توزیع شده
  • تجزیه و تحلیل داده ها با Spark
  • تفسیر AWS lambda
  • اسکریپت ad hoc در REPL

با  Scala، شما می توانید هر نوع نرم افزاری، مبتنی بر وب، مبتنی بر تلفن همراه و یا برنامه مبتنی بر دسکتاپ را در زمان کم و کد گذاری و ایجاد کنید.

فریمورک های اسکالا

  • Akka :ابزاری برای اجرای برنامه های بسیار همزمان، توزیع شده و تحمل خطا در JVM است. آکا در اسکالا نوشته شده است و اتصالات زبانی هم برای اسکالا و هم برای جاوا فراهم شده است.
  • Spark :برای رسیدگی و پردازش داده های بزرگ طراحی شده است و فقط از اسکالا اسکالا پشتیبانی می کند.
  • Play : برای ایجاد برنامه های وب طراحی شده است و در این فرآیند از اسکالا استفاده می کند تا بهترین عملکرد را در کلاس داشته باشد.
  • Scalding : یک زبان خاص دامنه (DSL) به زبان برنامه نویسی اسکالا است که ادغام Cascading را در بر می گیرد. این یک الگوی برنامه نویسی کاربردی است که در اسکالا استفاده می شود که بسیار نزدیکتر از جاوا به مدل اصلی برای توابع MapReduce است.
  •  Neo4j : یک چارچوب java spring است که توسط اسکالا با قابلیت های خاص دامنه، قابلیت های تحلیلی، الگوریتم های نمودار و موارد دیگر پشتیبانی می شود.

متغیرها در اسکالا

متغیرها را می توان به عنوان مکان حافظه رزرو شده برای ذخیره مقادیر تعریف کرد. به همین ترتیب، ما در زبان برنامه نویسی اسکالا نیز متغیرهایی داریم. متغیرهای موجود در اسکالا به دو نوع تقسیم می شوند.

  • متغیرهای قابل تغییر Mutable Variables :این متغیرها به ما این امکان را می دهند که بعد از اعلام یک متغیر مقدار را تغییر دهیم. متغیرهای متغیر با استفاده از کلید واژه var تعریف می شوند. حرف اول از نوع داده باید با حروف بزرگ باشد زیرا در نوع داده Scala به عنوان یک شیء رفتار می شود. در این حالت، متغیر رشته جدید را پذیرفته و نمایش می دهد.
var b = "Edureka"
b = "Brain4ce Organisation"

  • متغیر غیرقابل تغییر Immutable Variable :این متغیرها به شما اجازه نمی دهند بعد از اعلام یک متغیر مقدار را تغییر دهید. متغیرهای تغییر ناپذیر با استفاده از کلید واژه val تعریف می شوند. حرف اول از نوع داده باید با حروف بزرگ باشد زیرا در اسکالا با نوع داده مانند اشیاء رفتار می شود.
val a = "hello world"
a = "how are you"

این کد خطایی ایجاد می کند و مقدار جدید توسط متغیر a پذیرفته نمی شود.

آیا این نوشته را دوست داشتید؟
pluralsight-scala-build-tool-getting-started

آشنایی با ابزار Scala Build Tool: شروع کار


این دوره، با مبانی کار با پوسته sbt شروع می شود؛ و تنظیمات، تسک ها، اسکوپ ها، تعریف Build، بیلدهای چند-ماژول، پلاگین ها، و کار با کتابخانه های شخص ثال...

1400/02/03 420 بازدید
pluralsight-unit-testing-in-scala

آموزش تست واحد با Scala


در این دوره، یاد خواهید گرفت که چگونه یک پروژه Scala را با استفاده از ScalaTest تست کنید. ابتدا، با استفاده از Assertions و Matchers، کدپایه خود را تس...

1399/08/30 630 بازدید
pluralsight-scala-fundamentals-the-type-system

اصول Scala: سیستم نوع


شما در این دوره، می آموزید که از سیستم نوع گسترده Scala برای نوشتن کدهای بی خطر، آسان برای فهمیدن، انتزاعی و مختصر استفاده کنید. ابتدا روش های نوشتن س...

1399/07/09 775 بازدید زیرنویس دارد
pluralsight-scala-fundamentals

آموزش اساسی Scala


Scala یک انتخاب عالی برای یادگیری و تمرین هر دو سبک برنامه نویسی شیء گرا و تابعی است زیرا ترکیب خوبی از هر دو نوع برنامه نویسی را ارائه می دهد. در این...

1399/01/24 1473 بازدید
packtpub-hands-on-machine-learning-with-scala-and-spark

آموزش یادگیری ماشینی با Scala و Spark


در این دوره با چالش هایی که در هنگام پیاده سازی کانال های ارتباطی یادگیری ماشینی روبه رو می شوید و مدل ها و رویکردهای مختلف برای حل مشکلات مختلف آشنا ...

1398/05/30 2352 بازدید
packtpub-professional-scala

آموزش حرفه ای اسکالا (Professional Scala)


دوره آموزش حرفه ای اسکالا چگونگی ساخت و مشارکت در برنامه های اسکالا و شناخت الگوها و تکنیک های مورد استفاده با زبان را به شما می آموزد. شما با نحوه نو...

1398/04/09 4736 بازدید
packtpub-sorting-and-searching-algorithms-in-scala-integrated-course

آموزش الگوریتم های مرتب سازی و جستجو در اسکالا


در این دوره با مفاهیم و ابزار موجود در زبان اسکالا، با استفاده از برخی از الگوریتم های مرتب سازی و جستجو، پیاده سازی ساختارهای داده جستجو به شیوه ای ک...

1397/06/03 2970 بازدید
lynda-learning-jvm-languages-jvm-java-scala

آموزش زبان های JVM - جاوا، اسکالا و JVM


ماشین مجازی جاوا (JVM) بایت کد جاوا را تفسیر کرده و آن را به عمل تبدیل می کند و برنامه های جاوا را در هر کامپیوتر اجرا می کند.  برنامه های JVM را می ت...

1397/05/18 1938 بازدید زیرنویس دارد
teamtreehouse-introduction-to-scala-course

آشنایی با زبان اسکالا


Scala یک زبان برنامه نویسی تابعی است که در بالای ماشین مجازی جاوا اجرا می شود و می تواند از هر کلاس جاوا استفاده کند. Scala به خوبی برای برنامه نویسی ...

1397/05/06 1368 بازدید
pluralsight-developing-spark-applications-using-scala-cloudera

آموزش توسعه اپلیکیشن های Spark با Scala و Cloudera


در هسته کار با مجموعه داده های بزرگ، دانش کامل از پلتفرم های کلان داده  مانند Apache Spark و Hadoop وجود دارد. در این دوره با جزئیات فنی نحوه کار Spar...

1397/03/25 2477 بازدید
pluralsight-scala-the-big-picture

آموزش برنامه نویسی تابعی با اسکالا


برنامه نویسی تابعی نیاز به یادگیری پارادایم های برنامه نویسی جدید دارد، و Scala یک زبان عالی است که برای انجام این کار مناسب می باشد. در این دوره با ز...

1397/03/21 2038 بازدید
packtpub-apache-spark-with-scala-learn-spark-from-a-big-data-guru-video

آموزش Apache Spark با Scala - یادگیری Spark از Big Data Guru


این دوره مبانی Apache Spark با Scala را پوشش می دهد و تمام نکات مورد نیاز برای یادگیری ایجاد و توسعه اپلیکیشن Spark با  اسکالا را آموزش می دهد. در این...

1397/02/24 2616 بازدید
learning-scala-in-one

آموزش کامل Scala در یک ویدئو


زبان Scala یک زبان برنامه نویسی عمومی است. این برنامه از رویکرد برنامه نویسی شی گرا، کاربردی و ضروری پشتیبانی می کند. این نوع زبان استاتیک قوی است. در...

1397/02/06 2073 بازدید
1396/12/02 3517 بازدید
lynda-learning-scala-web-development

آموزش توسعه وب اسکالا


اسکالا (Scala) یک زبان برنامه‌نویسی شیءگرا و تابعی است که کاربردهای زیادی در طراحی وب دارد. ویژگی های زبان اسکالا: - رایگان و متن باز - استاتیک و چک ز...

1396/11/24 1948 بازدید
1396/10/28 1770 بازدید زیرنویس دارد