در ادامه معرفی زبان های برنامه نویسی در این مطلب زبان برنامه نویسی Scala چیست؟ معرفی،ویژگی ها و کاربرد Scala رو به اشتراک گذاشته ایم.Scala(اسکالا) یک زبان برنامه نویسی عمومی است. این برنامه از رویکرد برنامه نویسی شی گرا، کاربردی و ضروری پشتیبانی می کند. این نوع زبان استاتیک قوی است. در Scala، همه چیز یک آبجکت است خواه یک تابع یا یک عدد باشد و در آن مفهوم داده اولیه وجود ندارد.در ادامه توضیحات با ما همراه باشید…
زبان برنامه نویسی Scala
زبان برنامه نویسی Scala توسط Martin Odersky طراحی شده است. این برنامه به طور رسمی برای اوایل سال ۲۰۰۴ برای پلتفرم جاوامنتشر شد و در ژوئن ۲۰۰۴ برای سیستم Net Framework منتشر شد. بعدا، Scala پشتیبانی از .net را در سال ۲۰۱۲ کاهش داد. اسکالا از جاوا، Haskell، لیسپ، Pizza و غیره تاثیر می پذیرد و بر روی F#، Fantom، Red و غیره تاثیر می گذارد. با Scala می توانید هر نوع برنامه ای مانند برنامه های کاربردی وب، برنامه های کاربردی سازمانی، برنامه های موبایل، نرم افزار مبتنی بر دسکتاپ و غیره ایجاد کنید.
scala زبانی object-functional است که هم از object-oriented پشتیبانی می کند و هم از functional programming .به چنین زبان هایی multi-paradigm گفته می شود (زبان هایی که چندین روش برنامه نویسی را پشتیبانی می کنند مانند سی شارپ). از زبان برنامه نویسی Scala به عنوان یک زبان اسکریپتی نیز می توان استفاده کرد. و یک زبان همه منظوره است.بسیاری از ویژگی های اسکالا به دلیل انتقادهایی که به جاوا می شد به آن اضافه شدند.این زبان اولین بار توسط Martin Odersky در سال ۲۰۰۱ طراحی شد و در سال ۲۰۰۳ انتشار یافت.واژه scala از دو کلمه Scalable و Language گرفته شده است.اسکالا از زبان های برنامه نوسی مختلفی تاثیر گرفته است و کدهای کوتاهی در مقایسه با بسیاری از زبان های برنامه نویسی موجود دارد.اسکالا بر روی NET. نیز اجرا می شود.
پیش از هر چیز، باید گفت که اسکالا جزو زبانهای برنامهنویسی دشوار برای یادگیری است اما اگر کسی بتواند سختی یادگیری این زبان را بر خود هموار کند، مسلماً ارزشش را خواهد داشت. در این پست قصد داریم دست به مقایسهٔ زبانهای برنامه نویسی Scala و Java بزنیم به طوری که خواهیم دید با استفاده از اسکالا با تعداد خطوط کد کمتری میتوان به همان نتیجهای که برنامهنویسان جاوا در چندین خط کد میرسند، برسیم (اسکالا زبانی شییٔگرا و فانکشنال است که در سال ۲۰۰۳ به دنیا عرضه شد و میتوان گفت که روز به روز بر میزان محبوبیت این زبان افزوده میگردد و توسط شرکتهای بیشتری مورد استفاده قرار میگیرد.)
دلایل محبوبت زبان برنامه نویسی اسکالا
به طور خلاصه، میتوان گفت که هدف از ایجاد اسکالا طراحی یک جاوای بهینهتر بوده و جالب است بدانید که این زبان در JVM (ماشین مجازی جاوا) اجرا میشود. به غیر از Scala زبانهای دیگری همچون Kotlin و Ceylon نیز بودهاند که سعی کردهاند یک جاوای بهتر باشند اما این در حالی است که در این زبانها سعی شده سینتکس تا حد ممکن نزدیک به زبان جاوا باقی بماند و صرفاً منحنی یادگیری این زبانها نسبت به زبان جاوا کمی بهتر شود اما اسکالا با این ذهنیت طراحی شد که محدودیتهای زبان جاوا رفع گردیده و توسعهدهندگان بتوانند با شکستن ساختارها و پارادایمهای به کار گرفته شده در زبان جاوا، کدهای کمتر اما در عین حال بهینهتری بنویسند و شاید یکی از دلایل سختی یادگیری این زبان هم همین مسألهٔ ساختارشکنی بوده باشد.
کاربرد زبان برنامه نویسی Scala
- برنامه های کاربردی وب
- نرم افزارها و کتابخانه ها
- جریان داده با Akka
- پردازش موازی دسته ای
- همزمان سازی وایجاد برنامه های توزیع شده
- تجزیه و تحلیل داده ها با Spark
- تفسیر AWS lambda
- اسکریپت ad hoc در REPL
با Scala، شما می توانید هر نوع نرم افزاری، مبتنی بر وب، مبتنی بر تلفن همراه و یا برنامه مبتنی بر دسکتاپ را در زمان کم و کد گذاری و ایجاد کنید.
ویژگی های زبان برنامه نویسی Scala
ورود و پیشرفت زبان اسکالا در صنعت نرمافزار فقط به دلیل موجز بودن، راحتی برنامهنویس و انعطاف آن نیست. طبق قانون مور تعداد ترانزیستورهای یک پردازنده، هر دو سال، دو برابر میشوند. به عبارت دیگر ابعاد ترانزیستورها در حال نصف شدن است و این روند در سال ۲۰۲۰ متوقف خواهد شد. هماکنون نیز کند شدن این روند قابل مشاهده است و به جای اینکه سرعت پردازندهها زیاد شود، تعداد هستههای آنها بیشتر میشود. شاهد این امر تلفنهای هوشمند و تبلتها هستند؛ آنها از پردازندههای چند هستهای بهره میبرند ولی بازهٔ سرعت پردازندهها چند سالی است که تغییر شگرفی نکردهاست. به همین دلیل برنامههایی با قابلیت اجرای همروند (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 تا حد ممکن نزدیک به زبان جاوا باقی بماند و صرفاً منحنی یادگیری این زبانها نسبت به زبان جاوا کمی بهتر شود.
مقایسه سورسکد زبان برنامه نویسی Scala با جاوا
با زبان جاوا میتوان هرگونه اپلیکیشنی نوشت اما در عین حال تعداد خطوط کدی که در زبان جاوا برای یک برنامهٔ خاص استفاده میشود قابلمقایسه با تعداد خطوط کد در زبان اسکالا نیست! اسکالا کامپایلری بسیار هوشمند دارا است و از همین روی دولوپر نیازی ندارد تا خیلی از بدیهیات را برای کامپایلر شرح دهد و این وظیفهٔ خود کامپایلر است که حدس بزند چه چیزی مد نظر دولوپر بوده است. برای روشنتر شدن این مسئله، برنامهٔ Hello World را در زبان جاوا مد نظر قرار میدهیم:
public class HelloJava { public static void main(String[] args) { System.out.println("Hello World!"); } }حال همین برنامه را در زبان Scala مینویسیم
object HelloScala { def main(args: Array[String]): Unit = { println("Hello World!") } }
میبینیم تفاوت چندانی مابین دو زبان وجود ندارد اما ساختار اسکالا تا حدودی سادهتر به نظر میرسد. به عنوان مثالی دیگر، میتوان طرز ساخت یک آرایهای از استرینگها را در دو زبان مقایسه کرد به طوری که در جاوا داریم
List list = new ArrayList(); list.add("1"); list.add("2"); list.add("3");همین آرایه را در اسکالا به صورت زیر خواهیم نوشت
val list = List("1", "2", "3")
آنچه مسلم است اینکه در زبان جاوا ترفندهایی به منظور کوتاه کردن سورسکد وجود دارد اما این ترفندها جزو کاربردهای استاندارد این زبان نیستند. حال فرض کنیم لیستی از استرینگهایی داریم که قصد داریم آنها را در زبان جاوا به اعداد صحیح تبدیل کنیم:
List ints = new ArrayList(); for (String s : list) { ints.add(Integer.parseInt(s)); }اما در اسکالا خواهیم داشت:
val ints = list.map(s => s.toInt)
اکنون زمان آن فرا رسیده که پا را کمی فراتر گذاشته و مقایسهای مابین طراحی کلاس و ساخت آبجکت در زبانهای برنامهنویسی جاوا و اسکالا داشته باشیم. در زبان جاوا نحوهٔ ساخت کلاس به صورت زیر است
public class User { private String name; private List orders; public User() { orders = new ArrayList(); } public String getName() { return name; } public void setName(String name) { this.name = name; } public List getOrders() { return orders; } public void setOrders(List orders) { this.orders = orders; } } public class Order { private int id; private List products; public Order() { products = new ArrayList(); } public int getId() { return id; } public void setId(int id) { this.id = id; } public List getProducts() { return products; } public void setProducts(List products) { this.products = products; } } public class Product { private int id; private String category; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getCategory() { return category; } public void setCategory(String category) { this.category = category; } }
میبینیم که تعداد خطوط نسبتاً قابلتوجهی وجود دارد اما نسخهٔ اسکالای این قطعه کد به صورت زیر خواهد بود که به مراتب خلاصهتر است:
class User { var name: String = _ var orders: List[Order] = Nil } class Order { var id: Int = _ var products: List[Product] = Nil } class Product { var id: Int = _ var category: String = _ }جالب است بدانید که در Scala میتوان از چیزی تحت عنوان Case Class نیز استفاده کرده و کد فوق را به مراتب بهینهتر به صورت زیر نوشت:
case class User(name: String, orders: List[Order]) case class Order(id: Int, products: List[Product]) case class Product(id: Int, category: String)
شاید برایتان جذاب باشد : دوره آموزش برنامه نویسی جاوا به زبان فارسی
هدف از این مقاله به هیچ وجه زیر سؤال بردن مزیتهای زبانی همچون جاوا نیست بلکه صرفاً هدف این بود تا به معرفی زبان اسکالا و برخی از بارزترین مزیتهایش اشارهای کرده باشیم. جاوا اکوسیستم بسیار قدرتمندی در دنیای توسعهٔ نرمافزار دارد و مسلماً یادگیری این زبان نویدبخش آیندهٔ شغلی خوبی خواهد بود.
منبع
مشاهده جلسات قبل معرفی زبان های برنامه نویسی
- زبان برنامه نویسی سی و سی پلاس پلاس
- معرفی زبان برنامه نویسی پایتون
- Ruby چیست؟ بررسی زبان برنامه نویسی روبی
- زبان برنامه نویسی PHP چیست؟
- زبان برنامه نویسی Lua چیست؟
- کاتلین (Kotlin) چیست؟ توضیح زبان برنامه نویسی کاتلین
- Ada چیست؟ معرفی زبان برنامه نویسی Ada
- زبان برنامه نویسی COBOL چیست؟ شرح کامل COBOL
- معرفی زبان برنامه نویسی Cython
- زبان برنامه نویسی Elixir چیست؟ معرفی کامل Elixir (الیکسیر)
- کاملترین معرفی زبان برنامه نویسی Groovy
- زبان برنامه نویسی Rust چیست؟ کاملترین معرفی زبان برنامه نویسی Rust
The post زبان برنامه نویسی Scala چیست؟ معرفی،ویژگی ها و کاربرد Scala appeared first on آموزش برنامه نویسی.