زبانهای تحلیل و مدیریت داده

چرا باید اسکالا یاد بگیریم ؟

۰

میانگین امتیاز

شما هم امتیاز بدهید!

امتیاز کاربران: ۴٫۳۶ ( ۴ رای)

چندی پیش به یک مقاله برخوردم با عنوان اینکه چرا باید زبان اسکالا را یاد بگیریم ؟ مقاله را کامل خواندم و بسیار علاقه مند شدم که این زبان را که یک زبان قدرتمند روی بستر جاوا هست را یاد بگیرم. البته قبل از آن هم در مورد این زبان زیاد شنیده بودم، بخصوص زبانی که اسپارک با آن نوشته شده و در حوزه پردازش کلان داده یکی از گرایشات نوین دنیاست .

در دو سال گذشته بنده از پی اچ پی و سی شارپ و جاوا به سمت پایتون اومدم به خاطر سهولت و راحتی برنامه نویسی و واقعا بعد از شانزده سال برنامه نویسی زبانی برایم مهم و ارزشمند خواهد بود که با توجه به فرصت کوتاهی که معمولاً دارم بتوانم کارم را سریع با آن پیش ببرم . از طرفی بتوانم روی سرورهای لینوکس هم به راحتی آنرا اجرا کنم. انتخاب پایتون در یکی دوسال گذشته به همین دلیل توسط بنده انجام گرفت.
به عنوان شاهدی بر این مدعا و اینکه سهولت و سرعت تولید نرم افزار ، یکی از پارامترهای مهم انتخاب زبان و فریمورک برنامه نویسی خواهد بود، امروز با یکی از دانشجویان سال گذشته دانشگاه که فارغ التحصیل شده بود و الان وارد بازار کار طراحی وب هم شده است صحبت می کردم و خلاصه کلام ایشان هم دقیقا همین بود .
میگفت بعد از پروژه ای که در دانشگاه با بنده روی زبان روبی (Ruby) داشت، الان بیشتر کارهای طراحی وبی که انجام می دهد را با این زبان و فریمورک ریل (Rails)انجام میدهد و پروژه های حرفه ای متوسط را نهایتاً با دو هفته می تواند آماده کند در صورتیکه با asp.net ممکن است این فرآیند یک یا دوماه ماه طول بکشد و این راحتی و سهولت روبی باعث شده که کاملاً سایر زبانها را کنار بگذارد .
اسکالا هم یک زبان ساده و جمع و جور است و به نسبت جاوا، گرامر ساده تر و امکانات بسیار بیشتری را در اختیار شما می گذارد به طوری که اکثر نیازهای یک برنامه نویس را به صورت توابع و امکانات پیش ساخته درون خود گنجانده است . کدهایی که با جاوا حدود ده پانزده خط میشود در این زبان گاهی با دو سه خط قابل پیاده سازیست (مقاله معرفی شده در ابتدای بحث را مطالعه کنید تا مثالها را به وضوع ببینید)
از طرفی کاملا با جاوا تعامل دارد و از تمام کتابخانه ها و برنامه های نوشته شده با جاوا هم می توان در آن استفاده کرد .
از طرفی یک زبان تابعی (Functional) است. امکانی که در سایر زبانهایی که تا الان با آنها کار کرده ام به این قدرت وجود نداشته است .
توضیح اینکه زبان تابعی، زبانی است که در آن با توابع هم مانند متغیرها عمل میشود و شما می توانید همانطور که مثلا ورودی های توابع پا رامترهای عادی هستند ، توابع را هم به عنوان ورودی یک تابع دیگر ارسال کنید یا اینکه یک تابع را مشابه یک متغیر عادی مقدار دهی کنید.
مثلا فرض کنید دو عملیات فیلتر کردن و مرتب سازی را روی لیستی از دانشجویان می خواهید اعمال کنید کافیست تابع فیلتر و مرتب سازی مورد نظر را جداگانه بنویسید و بعد در تابع اصلی که قرار است لیست دانشجویان را به کاربر نمایش دهد این دو تابع را به عنوان ورودی تابع اصلی ارسال کنید .
امکاناتی از این قبیل که باعث شده است این زبان به یک زبان قدرتمند تبدیل شود و امروزه به عنوان یک جایگزین جاوا از آن نام برده میشود و گرایشات جهانی به سمت آن بسیار بالاست .
بخصوص فریمورک Play برای طراحی وب که با این زبان کار می کند، سرعت پاسخگویی بسیار سریعی دارد .
در هر صورت تصیمیم گرفته ام این ترم درس طراحی شی گرا را برای بچه های ناپیوسته کامپیوتر با اسکالا کار کنم و به سایر دوستانی هم که به صورت حرفه ای با دنیای برنامه نویسی کار می کنند هم توصیه اکید می کنم این زبان زیبا و قدرتمند را زودتر فرابگیرند.
برای آشنایی اولیه با اسکالا می توانید از آموزش اسکالا – بخش اول   و آموزش اسکالا – بخش دوم هم استفاده کنید.

پی نوشت :

چند تا مطلب مهم درباره اسکالا یادم رفته بود که تصمیم گرفتم در ادامه همین مقاله آنها را بیان کنم . نکته اول اینکه اسکالا (Scala) برای پردازش های موازی و مقیاس پذیری در حجم بالا طراحی شده است و خود اسکالا هم مخفف Scalable Language یا زبان مقیاس پذیر است که این امر بواسطه تاکید فراوان این زبان به استفاده از متغیرهای پایدار و Immutable است که باعث می شود بتوان بدون ایجاد تداخل و اثرات جانبی به افزایش سطح همروندی برنامه پرداخت .
نکته بعدی استفاده سایتهای مهم دنیا از این زبان در توسعه برنامه ها و قابلیت هایشان است . توئیتر و لینکدین دو تا از معروف ترین این سایتها هستند به طوری در مقالات آموزشی اسکالا هم ذکر شده که توئیتر کار خود را با زبان روبی شروع کرد و بواسطه مشکلاتی که برایش پیش آمد به زبان اسکالا مهاجرت کرد و امروزه هم زبان برنامه نویسی اصلی این شرکت را تشکیل میدهد.
نکته سوم در مورد تجربه کار با این زبان بود که توصیه می کنم از محیط جذاب و حرفه ای IntelliJ و پلاگین اسکالا استفاده کنید که بعد از دانلود و نصب Scala SDK می توانید به آزمایش این زبان بپردازید . یکی از مزایای این زبان مشابه پایتون محیط تعاملی (REPL) آن است که می توانید با اجرا دستور Scala وارد محیط تعاملی آن شوید و بدون ایجاد فایل شروع به کار با آن کنید . (برای یادگیری اسکالا و محیط اینتلی جی می توانید از این آموزش سایت یودمی هم استفاده کنید)
آخرین نکته هم اینکه یکی از مزایای دیگر این زبان وجود کتابخانه و چهارچوب برنامه نویسی توزیع شده Akka در کنار این زبان است که اجازه تولید برنامه هایی را با قابلیت اجرا روی تعداد زیادی کامپیوتر به صورت توزیع شده را به ما می دهد. بخصوص می توان در فریمورک Play درخواستها را به صورت توزیع شده به وب سرور ارسال کرد که مدیریت تعداد بالای درخواستهای همزمان را به صورت خودکار انجام میدهد.
اگر هنوز اسکالا را شروع نکرده‌اید، دست نگه‌ دارید! شاید بهتر باشد با کاتلین شروع کنید. این مقاله را از دست ندهید.

مجتبی بنائی

دانشجوی دکترای نرم‌افزار دانشگاه تهران (yun.ir/smbanaie)، مدرس دانشگاه و فعال در حوزه توسعه نرم‌افزار و مهندسی داده که تمرکز کاری خود را در چند سال اخیر بر روی مطالعه و تحقیق در حوزه کلان‌داده و زیرساخت‌های پردازش داده و تولید محتوای تخصصی و کاربردی به زبان فارسی و انتشار آنها در سایت مهندسی داده گذاشته است. مدیریت پروژه‌های نرم‌افزاری و طراحی سامانه‌های مقیاس‌پذیر اطلاعاتی از دیگر فعالیتهای صورت گرفته ایشان در چند سال گذشته است.

۷ دیدگاه

  1. سلام و خسته نباشید.

    بنده بعد از خواندن این مطلب علاقه مند شدم زبان های پایتون و اسکالا را یادبگیرم

    می خواستم از شما که تجربه ی این زبان ها را دارید چند سوال بپرسم

    اول این که قدرت این زبان ها در چه حدی است؟آیا برنامه های عظیم هم مثل زبان های دلفی و سی شارپ می توان با این زبان ها نوشت؟

    اینکه گفتید این زبان ها باعث می شوند سرعت تولید یک برنامه بالا برود از چه نظر هست؟

    الان برای زبان سی شارپ هزاران فضای نام و کلاس آماده وجود دارد , برای هر کاری که یک برنامه نویس فکرش را بکند الان کلاس آماده وجود دارد فقط کافیست بداند چه می خواهد؛آیا برای این زبان ها هم کلاس های از پیش تعریف شده وجود دارد یا مثل زمان های قدیم باید تمام کلاس های مورد نیازمان را تعریف کنیم ؟

    آیا قدرت هر مانوری را این زبان ها دارند ؟ مثلا کار های سیستمی انجام بدهند و با لایه های سیستم عامل در ارتباط باشند یا تنها در تولید برنامه های معمول توانا هستند؟

     

    با تشکر فراوان لطفا مثل مطالب خوبتون با صبر و حوصله جواب سوالات من را بدهید

     

    1. سلام
      برای شروع از پایتون آغاز کنید و درادامه هنگامی که کارایی پایتون شما را در کاربردهای حرفه ای ، دچار اشکال کرد با اسکالا کار کنید ‌.
      اسکالا بسی حرفه ای تر بوده، کدهای بهینه تری تولید میکند

  2. سلام، بنده در بین انتخاب node js, scala مونده ام. از نود واقعا خوش ام میاد، اما یکی از دوست ها ام گفت اون چون یک زبان برنامه نویسی نیست و یک تکنولوژی هست عمر اش زیاد نخواهد بود و اسکالا بهتره . بنده الان با لاراول کار می کنم ، ولی دوس دارم زبان بهتر و حرفه ای تری رو یاد بگیرم.

    بنده ترم سوم ام، از بین زبان های فانکشنال ای مثل rust , scala,  Haskell , Erlang,  Golang کدام رو انتخابات کنم برای آینده ام بهتره ؟

     

    1. سلام.
      هدفتون از یادگیری زبان جدید چیه ؟ می خواین سمت سرور کار کنید یا باهاش برنامه های تجاری بنویسید یا اپ موبایل تولید کنید ؟
      به جای اسکالا الان بنده زبان کاتلین را توصیه می کنم بخصوص برای برنامه نویسی های چند پلتفرمی (موبایل، سرور، زبان ماشین) و در حال آماده کردن مطلبی برای آن در سایت هستم. برای سمت سرور، نود بسیار عالی می کند و بعید می دانم به این زودیها، با افت محبوبیت مواجه شود.
      اگر سمت علم داده قراره حرکت کنید، حتما پایتون را برای شروع انتخاب کنید.
      موفق باشید.

  3. سلام من قصد نوشتن برنامه ای مثل دولینگو رو دارم .

    میخواستم پیشنهاد شما استفاده از چه زبان برنامه نویسی ای در سمت سرور و کلاینت است ؟

    1. سلام. تخصص اصلی بنده در زمینه دیتابیس‌ها و معماری های داده است و راجع به زبان برنامه نویسی مناسب برای کار شما چندان اطلاعی ندارم. اما مدتیست که بچه های واحد آی تی دانشگاه، ترکیب انگولار و نود جی اس را استفاده می کنند و هم سرعت بسیار مناسبی را شاهد هستند و هم کدها منظم و یکپارچه شده است.
      امیدوارم هر چه سریعتر، زبان مناسب را برای کار خود بیابید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

جای خالی در معادله زیر را با کی برد انگلیسی وارد کنید : * Time limit is exhausted. Please reload CAPTCHA.

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

دکمه بازگشت به بالا