دلایل محبوبت زبان برنامه نویسی اسکالا
دلایل محبوبت زبان برنامه نویسی اسکالا
زبان برنامه نویسی Scala را میتوان به عنوان یکی از زبانهای متداول و پرکاربرد برنامه نویسی عمومی، معرفی نمود. پشتیبانی کردن از رویکرد برنامه نویسی شیءگرا یکی از وظایف زبان اسکالا است و از طرفی میتوان آن را یک زبان استاتیک قوی دانست. در Scala مفهوم داده اولیه وجود ندارد و همه چیز حتی اگر یک عدد یا یک داده باشد، به صورت آبجکت در نظر گرفته میشود.
زبان برنامه نویسی اسکالا
طراح این زبان برنامه نویسی، Martin Odersky است. به صورت رسمی در اوایل سال ۲۰۰۴ این برنامه برای پلتفرم جاوا منتشر گردید، همچنین در ژوئن همان سال برای سیستم Net Framework انتشار یافت.
پس از گذشت ۸ سال درست در سال ۲۰۱۲ اسکالا پشتیبانی از .net را کاهش داد. اسکالا تاثیر گرفته از زبان برنامه نویسی جاوا، Haskell، لیسپ، Pizza و… است و از طرفی روی F#،Fantom ،Red و… تاثیر میگذارد. برای ایجاد برنامههای کاربردی وب یا سازمانی ، برنامههای موبایل و نرمافزارهای مختلف، میتوان از زبان برنامه نویسی scala بهره گرفت.
زبان اسکالا
scala زبانی object-functional است که از آپشنی به نام object-oriented و functional programming پشتیبانی میکند. با توجه به این ویژگیها میتوان نتیجه گرفت که این زبان از چندین روش برنامه نویسی پشتیبانی میکند.
زبان Scala یک زبان همه منظوره است و میتوان از آن به عنوان یک زبان اسکریپتی هم استفاده کرد. به خاطر انتقادهایی که به زبان برنامه نویسی جاوا میشد ، ویژگیهای زیادی به اسکالا اضافه شدند.
این زبان برای اولین بار در سال ۲۰۰۱ میلادی توسط شخصی به نام Martin Odersky طراحی شد و نهایتا انتشار آن در سال ۲۰۰۳ اتفاق افتاد. Scalable و Language دو کلمهای هستند که واژه Scala از ترکیب آن ها ایجاد شده است. از ویژگیهای زبان برنامه نویسی Scala میتوان به استفاده از کدهای کوتاه در مقایسه با بسیاری از زبانهای برنامه نویسی موجود در بازار اشاره کرد. بر روی NET. نیز میتوان این زبان را اجرا کرد.
یادگیری زبان برنامه نویسی Scala بسیار سخت است اما از آنجایی که با اسکالا میتوان تعداد خطوط کد را کاهش داد، ولی جاوا برای اجرای همان نتیجه نیاز به تعداد خطوط بیشتری برای کدنویسی دارد، میبینیم که یادگیری این زبان به سختیهایش میارزد.
وجود همین ویژگیها سبب محبوبیت روز افزون اسکالا شده است که در نتیجه توسط شرکتهای متعددی استفاده میگردد.
دلایل محبوبت زبان برنامه نویسی Scala
هدف عمده از ایحاد زبان برنامه نویسی Scala بهینهتر کردن طراحی زبان جاوا است. شاید برایتان جالب باشد که بدانید اسکالا در ماشین مجازی جاوا اجرا میگردد. غیر ازاین زبان، زبانهای دیگری هم بودهاند که سعی در داشتن یک جاوای بهتر داشته باشند اما فقط منحنی یادگیری آنها نسبت به جاوا بهتر گردیده است.
ولی اسکالا با این فکر ایجاد شده است که محدودیتهای زبان جاوا را برطرف کند و توسعهدهندگان بتوانند با کدهای کمتر ولی بهینهتری خطوط برنامهشان را بنویسند بنابراین میتوان گفت از دلایل سختی یادگیری Scala مسئله ساختارشکنی آن است.
کاربرد زبان Scala
- اسکریپت ad hoc در REPL
- برنامههای کاربردی وب
- همزمان سازی نرمافزارها
- جریان داده با Akka
- ایجاد برنامههای توزیعشده
- تجزیه دادهها
- کتابخانهها
- تحلیل دادهها با Spark
- تفسیر AWS lambda
- پردازش موازی دستهای
با زبان برنامه نویسی Scala میتوان نرمافزارهای مبتنی بر وب یا مبتنی بر دسکتاپ را در زمانی کم ایجاد کرد.
ویژگی های زبان برنامه نویسی Scala
با خواندن مطالب بالا شاید فکر کنید پیشرفت زبان اسکالا در صنعت نرمافزار، فقط به دلیل راحتی برنامه نویسی به دست آمده ولی این طورنیست. زبان اسکالا دارای ویژگیهای فراوانی است که برای تقاضاهای زیادی طراحی شده است. برای نمونه میتوان به Functional Programming اشاره کرد. علاوه بر این، در Scala ویژگیهای بسیاری از زبانهای موجود در بازار جمع گردیده است.
از خصایص زبان Scala می توان به موارد زیر اشاره کرد:
- منعطف و موجز
- رایگان و به صورت متن باز
- Object Oriented
- دارای طیف گستردهای از کتابخانهها
- استاتیک
- چک در زمان کامپایل
- تابعی
- بالغ
- دارای ابزارهای مختلف توسعه
هیچکدام از زبانهای موجود در بازار دارای همه ویژگیهای گفته شده نیستند، زبانهای برنامه نویسی پایتون و سی شارپ شاید دارای قابلیتهایی نزدیک به اسکالا باشند ولی شرایط اجرایی آنها متفاوت تر از Scala است.
در حال حاضر زبان برنامه نویسی Scala بهطور گسترده در بسیاری از موسسات استفاده میشود. امروزه اکثر شرکتها، نحوه طراحی تمام یا بخشی از نرمافزارهای موجودشان را، با اسکلا جایگزین کردهاند.
نصب شدن بر روی دایرکتورهای دلخواه به طور جداگانه یکی از قابلیت های مهم اسکالا محسوب میشود، همچنین میتوان نسخههای مختلف آن را در دایرکتوریهای مختلف نصب کرد . در اسکالا سعی شده است تا حد ممکن Syntax ها نزدیک به زبان جاوا بمانند و در اصل منحنی یادگیری آن نسبت به جاوا کمی بهتر شده است.
مقایسه سورسکد زبان برنامه نویسی اسکالا با جاوا
با کمک زبان جاوا میتوان هر اپلیکیشنی را نوشت اما تعداد خطوط کد این زبان بسیار زیاد است و اصلاً قابل قیاس با تعداد خطوط موجود در زبان برنامه نویسی Scala نیست. کامپایلر اسکالا بسیار هوشمند است، از این رو وظیفهٔ خود کامپایلر است که متوجه شود چه چیزی مد نظر دولوپر است. برای واضحتر بیان کردن این مسئله، برنامهٔ Hello World در زبان جاوا را مد نظر قرار دادهایم:
public class HelloJava {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
حالا همین برنامه را به صورت زیر با اسکالا مینویسیم:
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));
}
نحوه نوشتن همان لیست با زبان Scala:
val ints = list.map(s => s.toInt)
حال با مقایسه طراحی کلاس و ساخت آبجکت در زبانهای برنامهنویسی Scala و جاوا میتوان بیشتر به بهینهتر بودن اسکالا پی برد.
نحوهٔ ساخت کلاس در زبان جاوا به صورت زیر است:
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)
هدف از این مقاله معرفی زبان برنامه نویسی Scala و آشنایی با مزیتهای آن بود، امیدواریم مطالب مفیدی در اختیارتان قرار گرفته باشد.
به نظرم راه حل نوشته شده برای جاوا طولانی ترین راه حل موجود بوده برای اینکه به صورت اغراق امیزی کد جاوا بزرگ تر نمایش داده بشه مثلا برای تبدیل لیستی از استرینگ ها نیاز نیست که حلقه بنویسیم و در جاوا هم میتونیم از استریم ها استفاده کنیم که کد چیزی شبیه کد اسکالا میشه