You are here:

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

فرستادن به ایمیل چاپ

Tags: اسکالا | تجربیات | تخصصی

چندی پیش به یک مقاله برخوردم با عنوان اینکه چرا باید زبان اسکالا را یاد بگیریم ؟ مقاله را کامل خواندم و بسیار علاقه مند شدم که این زبان را که یک زبان قدرتمند روی بستر جاوا هست را یاد بگیرم. البته قبل از آن هم در مورد این زبان زیاد شنیده بودم، بخصوص زبانی که اسپارک با آن نوشته شده و در حوزه پردازش کلان داده یکی از گرایشات نوین دنیاست .
در دو سال گذشته بنده از پی اچ پی و سی شارپ و جاوا به سمت پایتون اومدم به خاطر سهولت و راحتی برنامه نویسی و واقعا بعد از شانزده سال برنامه نویسی زبانی برایم مهم و ارزشمند خواهد بود که با توجه به فرصت کوتاهی که معمولاً دارم بتوانم کارم را سریع با آن پیش ببرم . از طرفی بتوانم روی سرورهای لینوکس هم به راحتی آنرا اجرا کنم. انتخاب پایتون در یکی دوسال گذشته به همین دلیل توسط بنده انجام گرفت.
به عنوان شاهدی بر این مدعا و اینکه سهولت و سرعت تولید نرم افزار ، یکی از پارامترهای مهم انتخاب زبان و فریمورک برنامه نویسی خواهد بود، امروز با یکی از دانشجویان سال گذشته دانشگاه که فارغ التحصیل شده بود و الان وارد بازار کار طراحی وب هم شده است صحبت می کردم و خلاصه کلام ایشان هم دقیقا همین بود .
میگفت بعد از پروژه ای که در دانشگاه با بنده روی زبان روبی (Ruby) داشت، الان بیشتر کارهای طراحی وبی که انجام می دهد را با این زبان و فریمورک ریل (Rails)انجام میدهد و پروژه های حرفه ای متوسط را نهایتاً با دو هفته می تواند آماده کند در صورتیکه با asp.net ممکن است این فرآیند یک یا دوماه ماه طول بکشد و این راحتی و سهولت روبی باعث شده که کاملاً سایر زبانها را کنار بگذارد .
اسکالا هم یک زبان ساده و جمع و جور است و به نسبت جاوا، گرامر ساده تر و امکانات بسیار بیشتری را در اختیار شما می گذارد به طوری که اکثر نیازهای یک برنامه نویس را به صورت توابع و امکانات پیش ساخته درون خود گنجانده است . کدهایی که با جاوا حدود ده پانزده خط میشود در این زبان گاهی با دو سه خط قابل پیاده سازیست (مقاله معرفی شده در ابتدای بحث را مطالعه کنید تا مثالها را به وضوع ببینید)
از طرفی کاملا با جاوا تعامل دارد و از تمام کتابخانه ها و برنامه های نوشته شده با جاوا هم می توان در آن استفاده کرد .
از طرفی یک زبان تابعی (Functional) است. امکانی که در سایر زبانهایی که تا الان با آنها کار کرده ام به این قدرت وجود نداشته است .
توضیح اینکه زبان تابعی، زبانی است که در آن با توابع هم مانند متغیرها عمل میشود و شما می توانید همانطور که مثلا ورودی های توابع پا رامترهای عادی هستند ، توابع را هم به عنوان ورودی یک تابع دیگر ارسال کنید یا اینکه یک تابع را مشابه یک متغیر عادی مقدار دهی کنید.
مثلا فرض کنید دو عملیات فیلتر کردن و مرتب سازی را روی لیستی از دانشجویان می خواهید اعمال کنید کافیست تابع فیلتر و مرتب سازی مورد نظر را جداگانه بنویسید و بعد در تابع اصلی که قرار است لیست دانشجویان را به کاربر نمایش دهد این دو تابع را به عنوان ورودی تابع اصلی ارسال کنید .
امکاناتی از این قبیل که باعث شده است این زبان به یک زبان قدرتمند تبدیل شود و امروزه به عنوان یک جایگزین جاوا از آن نام برده میشود و گرایشات جهانی به سمت آن بسیار بالاست .
بخصوص فریمورک Play برای طراحی وب که با این زبان کار می کند، سرعت پاسخگویی بسیار سریعی دارد .
در هر صورت تصیمیم گرفته ام این ترم درس طراحی شی گرا را برای بچه های ناپیوسته کامپیوتر با اسکالا کار کنم و به سایر دوستانی هم که به صورت حرفه ای با دنیای برنامه نویسی کار می کنند هم توصیه اکید می کنم این زبان زیبا و قدرتمند را زودتر فرابگیرند.
پی نوشت :
چند تا مطلب مهم درباره اسکالا یادم رفته بود که تصمیم گرفتم در ادامه همین مقاله آنها را بیان کنم . نکته اول اینکه اسکالا (Scala) برای پردازش های موازی و مقیاس پذیری در حجم بالا طراحی شده است و خود اسکالا هم مخفف Scalable Language یا زبان مقیاس پذیر است که این امر بواسطه تاکید فراوان این زبان به استفاده از متغیرهای پایدار و Immutable است که باعث می شود بتوان بدون ایجاد تداخل و اثرات جانبی به افزایش سطح همروندی برنامه پرداخت .
نکته بعدی استفاده سایتهای مهم دنیا از این زبان در توسعه برنامه ها و قابلیت هایشان است . توئیتر و لینکدین دو تا از معروف ترین این سایتها هستند به طوری در مقالات آموزشی اسکالا هم ذکر شده که توئیتر کار خود را با زبان روبی شروع کرد و بواسطه مشکلاتی که برایش پیش آمد به زبان اسکالا مهاجرت کرد و امروزه هم زبان برنامه نویسی اصلی این شرکت را تشکیل میدهد.
نکته سوم در مورد تجربه کار با این زبان بود که توصیه می کنم از محیط جذاب و حرفه ای IntelliJ و پلاگین اسکالا استفاده کنید که بعد از دانلود و نصب Scala SDK می توانید به آزمایش این زبان بپردازید . یکی از مزایای این زبان مشابه پایتون محیط تعاملی (REPL) آن است که می توانید با اجرا دستور Scala وارد محیط تعاملی آن شوید و بدون ایجاد فایل شروع به کار با آن کنید .
آخرین نکته هم اینکه یکی از مزایای دیگر این زبان وجود کتابخانه و چهارچوب برنامه نویسی توزیع شده Akka در کنار این زبان است که اجازه تولید برنامه هایی را با قابلیت اجرا روی تعداد زیادی کامپیوتر به صورت توزیع شده را به ما می دهد. بخصوص می توان در فریمورک Play درخواستها را به صورت توزیع شده به وب سرور ارسال کرد که مدیریت تعداد بالای درخواستهای همزمان را به صورت خودکار انجام میدهد.
نظرات (10)Add Comment
0
...
نویسنده سعيد, سپتامبر 28, 2014
سينتكس اسكالا خيلي شبيه به LINQ در دات نت بود.
بنائی :
حق با شماست . اما قابلیت های اسکالا صرفا معطوف به این توابع درون ساخته و Lambda Expression نیست و بنده متن این مقاله را مجددا ویرایش کردم و سایر امکانات آنرا هم برشمردم که بتوانید دید مناسبی نسبت به این زبان داشته باشید .
یا حق
0
تشکر
نویسنده افشار محبی, سپتامبر 28, 2014
با سلام. از اشتراک تجارب تشکر می‌کنم. آیا امکان مقایسه بین اسکالا و پایتون/روبی وجود دارد؟ هر کدام چه مزایایی دارند؟
بنائی :
سلام و عرض تشکر از جناب افشار محبی عزیز. متاسفانه هنوز اون تسلط را روی این سه زبان ندارم اما به طور خلاصه پایتون و روبی اشتراکات زیادی دارن اما اسکالا با ماهیت تابعی بودنش کمی متفاوت هست.
برای ترم آینده قصد دارم یک پروژه را با چهار تا زبان روبی، پایتون، پی اچ پی و نود جی اس در طول ترم پیاده سازی کنیم و انشالله دقیق تر نتایج را خدمتتون عرض می کنم
0
...
نویسنده ُسامان, سپتامبر 29, 2014
اما من شنیده بود اسکالا برای کارهای آکادمیک خوبه، مثل هسکل. جدای از سرعت اجرا وضعیت تعداد فریمورک تو اسکالا نسبت به PHP یا جاوا چطوره؟ یا حتی میشه CMS ها رو هم در نظر گرفت.
بنائی :
اسکالا کاملا یک زبان تجاری و برای نیازهای امروز برنامه نویسی طراحی شده و فقط به دلیل گرامر خاصش کمی سرعت یادگیریش ممکنه کمتر باشه اما داره جایگاه خودش را پیدا میکنه.
تنوع فریمورک ها در اسکالا به نسبت زبان قدیمی پی اچ پی نیست اما فریمورک Play به نظر میرسه بتونه نیازهای طراحی وب و تولید حرفه ای برنامه ها را برطرف کنه .
0
...
نویسنده ُسامان, سپتامبر 29, 2014
اسکالا روی JVM اجرا میشه. با وجود پشتیبانی اوراکل از جاوا و همینطور فریمورک های زیاد برای Java EE و ضمنا تغییرات اخیرش در تاکید بر JSF به جای JSP آیا از لحاظ زمان تولید نرم افزار مقرون به صرفه هست که از اسکالا استفاده بشه؟
در مورد جنگو و ریلز چطور؟ حداقل تو جنگو میشه خیلی سریع یه سایت رو بالا آورد.
سوال آخرهم اینکه با وجود CMS هایی که مخصوصا زبان PHP داره از لحاظ تولید و پشتیبانی اسکالا مقرون به صرفه تره یا CMS های موجود؟
بنائی :
من خودم که مدتیه دارم با اسکالا کار می کنم باتوجه به سابقه کار حرفه ای جاوا که حدود یکسال مستمر درتهران داشتم و اخیرا هم چند تا کار با سیمفونی ، جانگوو ترنادو در پایتون درگیر بودم، زبان جذاب و با امکاناتیست و آینده روشنی را براش پیش بینی می کنم . اما با توجه به نوپا بودن اون ، شاید هزینه نگهداری و پشتیبانی اش بیشتر در بیاد اما اگر تیم پایداری در اختیار دارید، می تونه گزینه خوبی باشه .
0
مقایسه با Go & Revel
نویسنده رامین علیرضایی, سپتامبر 30, 2014
با سلام.
اگر در نظر داشتید با توجه به درخواست جناب محبی مطلبی درباره مقایسه بین اسکالا و زبانهای دیگر بنویسید. لطفا زبان Go و فریم ورک Revel را هم در نظر داشته باشید.
بنائی :
ممنون از پیشنهادتون . البته توی زبان Go هیچ آشنایی ای ندارم و باید خودم هم مطالعه کنم .
0
“golang”
نویسنده نجاتی, اكتبر 09, 2014
با سلام و احترام؛
چون صحبت از زبان Go شد، خالی از لطف ندیدم که اشاره ای به مزایای این زبان شود.
آقای Steve Francia
MongoDB Chief Developer
مزایای زبان Go را اینگونه برمیشمرد:

Go execution speed is close to C
Go compile time rivals dynamic interpretation
Feels like a dynamic language in many ways
Very small core language, easy to remember all of it
Single binary installation, no dependencies
Extensive Tooling & StdLib
Concurrency is part of the language
Any function can become a goroutine
Goroutines run concurrently, communicate thorugh channels
Select waits for communication on any of a set of channels

منبع:
http://java.dzone.com/articles/using-mongodb-go-and-mgo-0
0
...
نویسنده امیر کریمی, نوامبر 01, 2014
جای خوشحالی داره که علاقه مندان به اسکالا بیشتر میشن و البته از بین افراد با تجربه هستند.

برای فعالیت بهتر و داشتن کامیونیتی فعالتر میتونید عضو گروه کاربران ایرانی اسکالا بشید. بیشتر از ۵۰ نفر عضو داره (هر چند اکثرا فعال نیستند).

آدرس گروه: https://groups.google.com/forum/#!forum/iran-sug
0
...
نویسنده h, نوامبر 11, 2014
در شمارهٔ دو مجلهٔ "سلام دنیا" اطلاعات و توضیحات خوبی در مورد این زبان داده شده. منم تصمیم دارم این زبان رو یاد بگیرم.
0
استفاده تجاری از اسکالا در ایران
نویسنده نجاتی, فوریه 13, 2015
استخدام متخصص اسکالا
http://www.rastinware.ir/fa
0
...
نویسنده سید ایوب کوکبی, اكتبر 03, 2015
ممنون مطلب خوبی بود.
خیلی خوشحالم از اینکه در جامعه دانشگاهی کشور اساتیدی یافت می‌شوند که کمی فراتر از سطح کتب درسی، تحقیق و پژوهش میکنند، اساتیدی که در قبال دانشجویان به جز فرو کردن مفاهیم کتاب درسی، مسئولیتهای بیشتری احساس میکنند.

نظرتان را بنویسید
کوچکتر | بزرگتر

busy
آخرین بروزرسانی ( دوشنبه ، 7 مهر 1393 ، 18:38 )