View Full Version : سوال: Groovy یا Scala ؟
dasssnj
جمعه 23 آبان 1393, 06:38 صبح
سلام.
می خوام بین دو زبان Groovy و Scala یکی را انتخاب کنم ولی خیلی گیج شدم . با توجه به معیار های زیر و نظر شخصی شما ، کدام یک بهتره :
1- شبیه تر بودن Syntax به Syntax جاوا
2- سرعت اجرای بالاتر
3- قابلیت های بیشتر
4- آسان تر بودن و سرعت کد نویسی بیشتر
5- یادگیری راحت تر و مراجع و منابع بیشتر
6- و ....
کد های هر دو را وقتی دیکامپایل می کنم میبینم برای یه حلقه ی ساده چندین خط کد و کلاس نوشته شده . این حجم کد روی سرعت برنامه تاثیر نداره ؟
ahmad.mo74
جمعه 23 آبان 1393, 08:36 صبح
سلام، این (http://stackoverflow.com/questions/711913/what-are-the-key-differences-between-scala-and-groovy) و این (http://stackoverflow.com/questions/1314732/scala-vs-groovy-vs-clojure) رو ببین.
dasssnj
جمعه 23 آبان 1393, 09:56 صبح
سلام، این (http://stackoverflow.com/questions/711913/what-are-the-key-differences-between-scala-and-groovy) و این (http://stackoverflow.com/questions/1314732/scala-vs-groovy-vs-clojure) رو ببین.
ممنون . اما خودم قبل از تاپیک باز کردن سرچ کرده بودم و دیده بودمشون . مشکل اینجاست که انگلیسی هستن و زیاد بودن نوشته ها آدمو خسته می کنه ،همه معیار هام را توضیح نداده بود و آخرش هم نفهمیدم کدوم به دردم می خوره .
تا اینجایی که خودم پیش رفت انگار Groovy بیشتر به دردم می خوره ، اما همچنان از بقیه دوستان می خوام نظرشونو بگن و با توجه به معیار ها مقایسه انجام بدن.
محمد فدوی
شنبه 24 آبان 1393, 12:00 عصر
سلام.
هردوتای اینا برروی JVM اجرا میشن و از نظر سینتکس هم شباهتهایی دارن.
جفتشون فریمورکهای نسبتا موازی ای هم دارن.
بهرحال سلیقهی خودت مطرحه این وسط. ولی من Scala رو ترجیح میدم.
اولا به دلیل اینکه سینتکس Scala رو بیشتر میپسندم، ثانیا به دلیل فریمورک Play که خیلی دوستش دارم.
mazdadoost
شنبه 24 آبان 1393, 23:31 عصر
سلام
1-groovy به جاوا نزدیکتره
2-ب نظر میرسه scala سریعتره
3-قابلیت های بیشتر در هر دو هست و اصولا هر دو جاوا به صورت (امکانات فردا در امروز ) هستند.منتها groovy شبیهتره به جاوا و به نظرم ساده تر و خوانا تر.و scala بیشتر به یک دنیای جدیدتر شبیه و مزه برنامه نویسی تابعی رو هم میده!4و5 groovy رو میشه سریعتر-راحتر و با منحنی اموزشی کم شیب تری یاد گرفت.در مورد منابع هر دو عالی هستند.بار به نظرم انجمن groovy از نظر فعالیت و خوش خلقی به scala میچربه.
چند نکته دیگر
ببینید کلا اگر واقعا درگیر برنامه نویسی شده باشید متوجه میشید که یکی از چالش های پیش روی شما نه ضعف در معلومات -عدم دقت-بی تجربگی (همه اینها صد البته درست ) بلکه باگ های موجود در پلت فرم شماست(شامل محی توسعه-سیستم عامل-کامپایلر-تست-دیباگ....) محیط هایی مانند scala یا groovy د البته با امکانات اغواگری که دارند متاسفانه خودشون داستان جدیدی در این میان درست میکنندداستان وقتی که شما مبخواهید از فریم ورک های تحت اینها استفاده کنید باز هم پیچیده تر میشه!
بار هم مشکل دیگه اینه که این فناوری ها با توجه به اهدافشون که بروز بودن و داشتن N امکاناته شما و احتمالا تیم توسعه شما رو وارد یک ماراتن می کنند.چون همونطور که میدونید در سطح هماهنگی واقعا کارها در یک چنین ماراتنی سخت میشه.و عملا به جای اینکه شعار محبوب این قبیل فناوری ا رو محقق کنید یعنی less is more . برعکسش حقق میشه.و شما درگیر پیاده سازی میشید تا تحلیل و توسعه.مه چیز هایی که گفتم البته می تونه در بعضی سناریو ها صادق نباشه اما بع عنوان نکات راهنما بد نیست مد نظر داشته باشید.
dasssnj
یک شنبه 25 آبان 1393, 15:48 عصر
یه برنامه HelloWorld ساده ی groovy حجمش شده 9 مگ ! این که خیلی ضد حاله... :گریه:
در مورد اون سوالی که آخر پستم پرسیده بودم هم بگید نظرتونو لطفا. ♥♥♥:قلب:
cups_of_java
یک شنبه 25 آبان 1393, 19:06 عصر
1- شبیه تر بودن Syntax به Syntax جاوا
گرووی شبیه تره
2- سرعت اجرای بالاتر
اگه سرعت اجرای اون دو تا کم تر نباشه بیشتر نیست. هر جفت اینا به کد جاوا ترجمه میشن... ضمنن رو این معیار خیلی حساس نباش
3- قابلیت های بیشتر
اسکالا کلن توی همه زبان های برنامه نویسی موجود بیشترین امکانات رو داره
4- آسان تر بودن و سرعت کد نویسی بیشتر
گرووی خیلی از اسکالا آسون تره... سرعت کد نویسیت از جاوا بیشتره اما اگه اسکالا رو خوب بلد باشه کسی سرعت کد نویسی تو اسکالا از هر جفت اونا بیشتره
5- یادگیری راحت تر و مراجع و منابع بیشتر
گرویی خیلی راحت تره.. منابع جفتشون زیاده اما من منابع اسکالا رو بیشتر احساس میکنم
کد های هر دو را وقتی دیکامپایل می کنم میبینم برای یه حلقه ی ساده چندین خط کد و کلاس نوشته شده . این حجم کد روی سرعت برنامه تاثیر نداره ؟
نه نداره. روی کیفیت تاثیر داره
نظر خود من اینکه گرووی رو یاد بگیر چون زود تر میتونی به نتیجه برسی باهاش... کمی پیشرفت میکنی اون وقت زمانش میرسه که کم کم اسکالا رو هم شروع کنی. اسکالا ممکنه یکم حوصلت رو سر ببره چون اول راه نمی تونی باهاش ارتباط بگیری...
persianshadow
سه شنبه 27 آبان 1393, 13:24 عصر
بی شک scala. دلایل مختلفی هم داره. شرکت و افرادی که پشت این زبان هستن خوش فکر هستن. توییتر از scala بهره میبره :).
dasssnj
سه شنبه 27 آبان 1393, 14:59 عصر
نه نداره. روی کیفیت تاثیر داره
یعنی چی ؟
چه تاثیری میذاره ؟
mazdadoost
سه شنبه 27 آبان 1393, 16:10 عصر
groovy کنده!یطورایی یواش یواش تند میشه!
اسکالا اولش تنده تند تر میشه تا خیلی تند!
من زیاد با اسکالا تجربه ای ندارم.
نه نداره. روی کیفیت تاثیر داره
یعنی روی حجم روی سرعت تاثیری نداره/کلا گرووی قسمت عمده کد هایی رو که شما خلاصه میکنید(مثل متد های دینامیک-Expando ها ....) رو در کد نهایی پیاده سازی میکنه از طریق بایت کد اینجکشن که کدتون پفکی میشه.:بوس:
cups_of_java
سه شنبه 27 آبان 1393, 19:35 عصر
یعنی چی ؟
چه تاثیری میذاره ؟
کد هایی که مثلن اسکالا برای شما درست میکنه اون کد هایی هست که باید با جاوا خودتون می نوشتید مثلن برای کنترل NULLها - کار با لیست ها - برخی جاها کنترل نوع و .... خلاصه این کد ها هست که باعث میشه کد اسکالای خود برنامه نویس کوتاه و مفید باشه. (این حرف نا دقیقه اما درسته)
خلاصه این کد ها باعث میشه خروجی شما با کیفیت تر باشه. تاثیر این ها توی زمان اجرا انقدر کم هستش که نامحسوسه و عملن بی تاثیر.
البته زمان کامپایل اسکالا به دلیل تولید و بررسی همین کد ها به طور محسوسی از جاوا بیشتره اما خب این خیلی موضوع مهمی نیست توی توسعه نرم افزار
dasssnj
چهارشنبه 28 آبان 1393, 12:06 عصر
اسکالا کلن توی همه زبان های برنامه نویسی موجود بیشترین امکانات رو داره
میشه نتیجه گرفت جاوا هم این قابلیت ها را داره ؟
در کل برداشتن یه سری متد ها و چیز هایی را که خودشون پیاده کرده بودن به صورت syntax جدا گانه در آوردن . همون ها را میشه خودمون یه بار پیاده کنیم و توی برنامه هامون ازش استفاده کنیم ... (البته به صورت کلاس و تابع . نه سینتکس)
vahid-p
چهارشنبه 28 آبان 1393, 15:00 عصر
میشه نتیجه گرفت جاوا هم این قابلیت ها را داره ؟
در کل برداشتن یه سری متد ها و چیز هایی را که خودشون پیاده کرده بودن به صورت syntax جدا گانه در آوردن . همون ها را میشه خودمون یه بار پیاده کنیم و توی برنامه هامون ازش استفاده کنیم ... (البته به صورت کلاس و تابع . نه سینتکس)
خب اینجوری باشه که خلاصه همه برنامه ها یه چیزه اونم زبان ماشین. چه زبان Functional باشه چه Imperative تفاوتشون در کدهای ماشین خروجیشون هست. وگرنه میشه با اسمبلی نوشت!
به نظرم بله درسته به دلیل وابستگی زیادشون به جاوا شاید زیاد جالب نبود بیان و سینتکس رو زیاد تغییر بدن و کاش یه ذره فقط تفاوتشون در بخش های Functional ای بود که اضافه میشه. ولی به هر حال اینم مثل یک فریم ورک برای خودش زبانی داره که بعدا تبدیل میکنه به کد مقصد. یعنی کار ما رو راحت میکنن. هدفشون همینه دیگه.
این تاپیک مفید و جالبیه و پیگیرم، امیدوارم به نتیجه روشنی برسه، ما هم بتونیم برای ادامه یکی رو ادامه بدیم. فقط سوال اساسی اینه که آیا این زبان ها کاربرد ویژه ای هم دارن یا عام منظوره هستن؟ ( یعنی مثلا کتابخونه های گسترده ای در زمینه خاص داشته باشن که کار رو از بقیه زبانها تو اون زمینه ساده تر کرده باشه )
dasssnj
چهارشنبه 28 آبان 1393, 15:38 عصر
من Groovy را به دلیل اختیاری بودن پرانتز ها در بعضی جا ها دوست دارم.
همیشه توی جاوا وقتی می خواستم متدی را صدا بزنم از گذاشتن پرانتز ها خوشم نمی اومد .
اسکالا این قابلیت را داره ؟ فکر نمی کنم .....:متفکر:
cups_of_java
چهارشنبه 28 آبان 1393, 18:20 عصر
میشه نتیجه گرفت جاوا هم این قابلیت ها را داره ؟
در کل برداشتن یه سری متد ها و چیز هایی را که خودشون پیاده کرده بودن به صورت syntax جدا گانه در آوردن . همون ها را میشه خودمون یه بار پیاده کنیم و توی برنامه هامون ازش استفاده کنیم ... (البته به صورت کلاس و تابع . نه سینتکس)
یک سری قابلیت ها هست که مال خود اسکالا هستش و جاوا ندارتشون... مثل Pattern Matching یا Higher Order Functions یا Monadها یا Immutability و .... و این ها انقدر ظریف و حساس هستن که خود شما طبیعتن بهتر از اون چیزی که تو اسکالا هست نمیتونید پیادش کنید.
و اینم در نظر بگیرید که مهم پشتیبانی ساختار و پایه ای از یک سری امکانات هست که کار شما رو در مواقع حساس درست راه می اندازه نه صرفن قابل انجام بودن یک کار با افزودن لایبرری های مربوطش...
cups_of_java
چهارشنبه 28 آبان 1393, 18:24 عصر
این تاپیک مفید و جالبیه و پیگیرم، امیدوارم به نتیجه روشنی برسه، ما هم بتونیم برای ادامه یکی رو ادامه بدیم. فقط سوال اساسی اینه که آیا این زبان ها کاربرد ویژه ای هم دارن یا عام منظوره هستن؟ ( یعنی مثلا کتابخونه های گسترده ای در زمینه خاص داشته باشن که کار رو از بقیه زبانها تو اون زمینه ساده تر کرده باشه )
این زبان ها عام منظوره هستن و اگه شما دستت بهشون عادت کنه و بتونی باهاشون احساس راحتی کنی به مرور زمان... به طوری که کد نوشتن توشون برات سخت نباشه دیگه سمت جاوا نمیری.
هرچند که این زبان ها توی بعضی موضوع ها و موارد به طور ویژه تو چشم هستن و انقدر بدرد میخورن که آدم حس میکنه تو اون مورد الزامی ان ;)
اینم اسلایدی هست که امروز ارایه کردم (متاسفانه فایل صوتی از جلسه رکورد نشد) که در مورد اسکالا و زبان های فانکشنال و مدل های همروندی و آکا هستش و چون بی ربط به این تاپیک بود گفنم براتون شیر کنم. (البته زبانش انگلیسی هست) (http://www.slideshare.net/BehradZari/reactive-software-systems)
vahid-p
چهارشنبه 28 آبان 1393, 21:57 عصر
به طوری که کد نوشتن توشون برات سخت نباشه دیگه سمت جاوا نمیری.
فرض کنید بخوایم یه برنامه تحت وب بنویسیم، از اونجایی که ممکنه اسکالا این امکان رو نداشته باشه، آیا به دلیل امکان استفاده کتابخونه های جاوا در این زبان، ممکنه بتونیم مثلا صفحات JSP و JSF و... رو با همین زبان بنویسیم؟ ( البته امکان منظورم به سهولت جاوا است، نه فقط شدنی بودنش )
بعضی موضوع ها و موارد به طور ویژه تو چشم هستن
ممکنه بعضی از این زمینه ها رو مثال بزنید؟
چون تازه با زبان های Functional مثل ML نسخه OCaml آشنا شدم، به نظرم جالب میان. ولی خب کاربردش کمتره اینا. یکی باشه که علاوه بر جاوا امکانات بیشتری داشته باشه خب چه بهتر!
cups_of_java
جمعه 30 آبان 1393, 00:25 صبح
فرض کنید بخوایم یه برنامه تحت وب بنویسیم، از اونجایی که ممکنه اسکالا این امکان رو نداشته باشه
از قضا اسکالا این یکی رو خیلی خوب داره و اتفاقن خیلی فریم ورک های جالبی مخصوصه این کار اومده مثل Play و یا Spray
ممکنه بتونیم مثلا صفحات JSP و JSF و... رو با همین زبان بنویسیم؟ ( البته امکان منظورم به سهولت جاوا است، نه فقط شدنی بودنش )
شما JSP و JSF رو که نمیتونی با اسکالا بنویسی.
ممکنه بعضی از این زمینه ها رو مثال بزنید؟
مثلن برای نوشتن برنامه های وبی که بتونه تعداد زیادی کاربر همزمان رو جواب بده...
برای نوشتن سرور هایی که امکان کلاسترینگ و مقیاس پذیریه بالایی داشته باشن...
برای نوشتن سرور هایی با همروندی بالا زمانی که از مدل های MultiThreaded نخوای استفاده کنی...
و ....
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.