DIDI8
12-02-2009, 16:38
زبان برنامه نويسي
اين هفته به معرفي زباني ميپردازيم كه براي بسياري از برنامهنويسان ناآشناست. اين زبان كه Groovy نام دارد، نخست سال 2003 معرفي شد. گرووي، يك زبان شييگرا است كه براي پلتفرم جاوا نوشته شده و از آن بهعنوان جايگزيني براي زبان برنامهنويسي جاوا استفاده ميشود. گرووي زباني ديناميك و پويا است و ويژگيهايي مشابه پايتون، روبي، پرل و Smalltalk دارد. از اين زبان همچنين ميتوان به عنوان يك زبان اسكريپت نويسي براي پلتفرم جاوا استفاده كرد.
دستور زبان گرووي مشابه جاوا است و كدها درون كروشه قرار ميگيرند. اين كدها به صورت بايتكد كامپايل ميشوند و سپس توسط ماشين مجازي جاوا اجرا ميشوند. كدهاي گرووي ميتوانند به سادگي با ديگر كدهاي جاوا و همچنين با كتابخانههاي جاوا كار كنند. از ديگر ويژگيهاي كامپايلر گرووي اين است كه ميتواند بايتكدهاي استاندارد جاوا توليد كند. به اين ترتيب كدهاي گرووي را ميتوان در هر پروژه جاوا مورد استفاده قرار داد. بيشتر كدهاي جاوا در كامپايلر گرووي شناخته ميشوند. به اين ترتيب انتقال كد بين دو زبان بسيار ساده است.
ويژگيها
گرووي داراي ويژگيهايي است كه در جاواي استاندارد يافت نميشود. از جمله اين ويژگيها ميتوان به نوع داده هاي ديناميك و تغيير كاربري اپراتورها اشاره كرد. دستور زبان گرووي در مقايسه با جاوا فشردهتر و كوچكتر است. از ويژگيهاي بارز و قابل توجه گرووي پشتيباني آن از زبانهاي مختلف Markup مانند XML و HTML است. اين قابليت امكان تعريف و كار با انواع مختلفي از دادههاي ناهمگون را با دستور زبان دقيق و روش برنامهسازي هم شكل فراهم ميكند. كد گرووي باز است و تقريبا تمام IDE هاي كد جاوا از كد گرووي نيز پشتيباني ميكنند و اين امر برنامهنويسي با گرووي را آسان ميكند.
تاريخچه
جيمز استراكان در آگوست سال 2003 براي اولين بار در وبلاگ خود در مورد توسعه زبان جديدي به نام گرووي نوشت. پس از آنكه فرآيند استانداردسازي پايان يافت، ژانويه سال 2007 نسخه استاندارد گرووي با عنوان 1.0 Groovy منتشر شد. به فاصله زماني اندكي پس از نسخه 1.0، نسخه 1.1 در ماه دسامبر 2007 منتشر شد. اين نسخه بلافاصله به نام 1.5 Groovy نامگذاري شد تا تغييرات مهم و بزرگ ايجاد شده را به وسيله اين تغيير نام منعكس كند.
اهداف
هدف از طراحي زبان گرووي استانداردسازي يك زبان برنامهنويسي براي پلتفرم جاوا بود. زباني كه بتواند پا به پاي جاوا حركت كند. در حقيقت گرووي زباني سريع و پويا مانند پايتون، پرل و روبي است. تفاوت گرووي با اين زبانها اين است كه گرووي براي پلتفرم جاوا طراحي شده است و قابليت برهمكنش با برنامههاي جاواي كنوني را دارد.
گرووي جايگزيني براي جاوا نيست، بلكه مكمل آن است. هدف اصلي از ايجاد اين مكمل، برطرف كردن اشكالات و پر كردن خلاهايي است كه اكنون برنامه نويسان و توسعهدهندگان حرفهاي كد آنها را حس ميكنند و خواهان روشي براي برطرف شدن آنها هستند، در حاليكه در پلتفرم كنوني جاوا اين مسايل ناديده گرفته شدهاند.
جاوا يا گرووي؟
تاكنون، زبان برنامهنويسي جاوا جايگاه خود را به عنوان زبان برنامهنويسي استاندارد پلتفرم جاوا، بدست آورده است. اين زبان به مدت تقريبا نه سال، نيازهاي برنامهنويسان را به بهترين شكل ممكن برطرف كرده است، اما جاوا نميتواند و نبايد تمام نيازهاي همه گروههاي برنامهنويسان را كه پروژهها و اهداف متفاوتي را دنبال ميكنند برآورده سازد. چرا كه زباني با اين مشخصات بخش بزرگي از قابليتهاي خود را به نفع پاسخگويي به همه كاربران از دست ميدهد و تضعيف ميشود. زبان جاوا مانند زبانهاي C++ و C#، به شدت ساخت يافته است. اين نوع زبانها كه گاه زبانهاي قراردادي ناميده ميشوند، براي حل بسياري از مسايل مناسب هستند اما پاسخگوي همه مشكلات نيستند. زبانهاي قراردادي بسيار نكتهسنج و خردهگير هستند به اين معني كه كوچكترين اشكال در نوشتن برنامه، كامپايل كردن كد را ناممكن ميسازد. اگرچه اين دقت بيش از حد، نتيجه اجراي كد را قابل پيشبيني ميسازد، اما از سوي ديگر از سرعت كار برنامهنويس ميكاهد.
در موارد متعددي لزوم وجود جايگزيني براي زبانهاي برنامهنويسي قراردادي احساس ميشود. يك جايگزين مناسب، استفاده از زبانهاي سريع مانند پايتون، روبي و پرل است. اين زبانهاي سريع، اغلب زبانهاي اسكريپتنويسي ناميده ميشوند اما اين عبارت، اين زبانها را به درستي توصيف نميكند. در دنياي فناوري اطلاعات، بسياري از افراد زبانهاي اسكريپت نويسي را به عنوان زبانهايي ميشناسند كه پيچيدگيهاي فني را قرباني سهولت كار با زبان ميكنند. اين تعريف اگرچه در مورد برخي از زبانهاي اسكريپتنويسي صحيح است، اما شامل پايتون، روبي و پرل نميشود. اينها، زبانهاي پويا و قدرتمندي هستند كه با استفاده از حجم كمتري از كد و دستور زبان، تعداد بيشتري از وظايف را انجام ميدهند. اكنون زمان آن رسيده است كه پلتفرم جاوا يك زبان سريع را براي پيشبرد اهداف خود به كار گيرد. گرووي اكنون زمينه لازم براي اين كار را دارد. گرووي نشاندهنده يك دوران جديد براي پلتفرم جاوا است. دوراني كه در آن جامعه برنامه نويسان جاوا از گوناگوني و تنوع ايجاد شده بهره فراواني خواهند برد و قادر به استفاده از تمام پتانسيلهاي پلتفرم جاوا هستند. تشخيص هوشمندانه اين مساله كه جاوا چيزي بيش از يك زبان برنامهنويسي است و درك اين نكته كه پلتفرم جاوا قدرت كافي براي اينكه چند زبان همزمان روي آن كار كنند و به حيات خود ادامه دهند را دارد از عوامل مهم در موفقيت طرح ايجاد زبان گرووي هستند.
زبان جاوا با ايجاد بايتكد، راهي ساده و آسان براي ارتباط با زبان واقعي پلتفرم جاوا پديد آورده است. گرچه بايتكدها كار برنامهنويس را آسان ميكنند، اما در مواردي يك زبان برنامهنويسي سريع، مولدتر است و در مقايسه با بايتكد از قدرت بيان بالاتري برخوردار است.
اما چرا گرووي؟ چرا Jython و JRuby براي دستيابي به اين هدف مورد استفاده قرار نگرفتند؟ امروزه زبانهاي متعددي براي اجرا روي ماشين مجازي جاوا طراحي شدهاند. گرووي به اين دليل بهترين انتخاب است كه از پايه و اساس براي پلتفرم جاوا طراحي شده است. از سوي ديگر، دستور زبان آن براي توسعهدهندگان برنامههاي جاوا آشنا است. گرووي برخي از بهترين ويژگيهاي پايتون، روبي و اسمالتاك را پيادهسازي ميكند. جايتون و جيروبي نمونههاي بسيار درخشاني از پشتيباني پلتفرم جاوا از ديگر زبانهاي برنامهنويسي موجود هستند. با اين وجود جايتون و جيروبي تنها درگاه (Port)هايي هستند كه ارتباط جاوا را با زبانهاي ديگر ممكن ميسازند. دستور زبان اين درگاهها براي طراحان جاوا ايجاد نشده است و حتي مجموعه كتابخانههاي استفاده شده براي پيادهسازي آنها با آنچه كه براي برنامهنويسي جاوا استفاده ميشود متفاوت است. در مقابل گرووي براي توسعهدهندگان جاوا طراحي شده است و پايه و اساس آن بر مبناي APIهاي استاندارد پلتفرم جاوا استوار است.
در بيشتر موارد گرووي به عنوان جايگزيني براي جاوا مد نظر قرار نميگيرد. بلكه به عنوان بخشي از جاوا مورد توجه است. بسياري از كاربران گرووي تمام برنامه خود را با استفاده از اين زبان پيادهسازي ميكنند. زمان توسعه كد كوتاهتر و كد حاصل به مراتب فشردهتر، خلاصهتر است. بنابراين درك كد نوشته توسط اين زبان بسيار ساده است. در اكثر موارد كارآيي كد نوشته شده رضايت بخش است، به ويژه اگر در نوشتن آن از كتابخانههاي جاوا استفاده شده باشد. در مواردي كه كارآيي كد پايينتر از حد مطلوب باشد، يافتن نقاط مشكلساز در كد بسيار ساده است. پس از يافتن اين بخشها ميتوان كد آنها را به كد جاوا تبديل كرد. به عنوان مثال اگر در يكي از اشياي گرووي متدي داشته باشيم كه اجراي آن نيازمند زمان زيادي باشد، اين كلاس را با يك كلاس جاوا جايگزين ميكنيم و متد مورد نظر را با جاوا پيادهسازي ميكنيم. اين خواص پويا و ديناميك در زبان گرووي قدرت مانور بسيار زيادي به برنامهنويس ميدهد.
بسياري از برنامهنويساني كه كار با هر دو زبان را تجربه كردهاند، نه تنها سرعت كدنويسي با گرووي را بيشتر از سرعت كدنويسي با جاوا ميدانند بلكه حتي ادعا ميكنند كه نوشتن كد با گرووي و سپس تبديل آن به كد جاوا سريعتر از نوشتن كد جاوا از ابتدا است. با اين همه بايد در نظر داشت كه گرووي يك دكمه نقرهاي رنگ جادويي نيست و مانند هر زبان ديگري محدوديتهاي خاص خود را دارد. برنامهنويسان گرووي را به خاطر طبيعت پوياي آن دوست دارند. مهمترين عامل جذابيت گرووي براي برنامهنويسان امكان انتقال و سادگي جابجايي بين گرووي و جاوا در مواقع لزوم است. وجود مجموعه بزرگي از كتابخانههاي جاوا از عواملي است كه بر جاذبه گرووي ميافزايد. در هفته آينده گرووي را با برخي از زبانهاي مشابه مقايسه خواهيم كرد.
منبع:جام جم
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اين هفته به معرفي زباني ميپردازيم كه براي بسياري از برنامهنويسان ناآشناست. اين زبان كه Groovy نام دارد، نخست سال 2003 معرفي شد. گرووي، يك زبان شييگرا است كه براي پلتفرم جاوا نوشته شده و از آن بهعنوان جايگزيني براي زبان برنامهنويسي جاوا استفاده ميشود. گرووي زباني ديناميك و پويا است و ويژگيهايي مشابه پايتون، روبي، پرل و Smalltalk دارد. از اين زبان همچنين ميتوان به عنوان يك زبان اسكريپت نويسي براي پلتفرم جاوا استفاده كرد.
دستور زبان گرووي مشابه جاوا است و كدها درون كروشه قرار ميگيرند. اين كدها به صورت بايتكد كامپايل ميشوند و سپس توسط ماشين مجازي جاوا اجرا ميشوند. كدهاي گرووي ميتوانند به سادگي با ديگر كدهاي جاوا و همچنين با كتابخانههاي جاوا كار كنند. از ديگر ويژگيهاي كامپايلر گرووي اين است كه ميتواند بايتكدهاي استاندارد جاوا توليد كند. به اين ترتيب كدهاي گرووي را ميتوان در هر پروژه جاوا مورد استفاده قرار داد. بيشتر كدهاي جاوا در كامپايلر گرووي شناخته ميشوند. به اين ترتيب انتقال كد بين دو زبان بسيار ساده است.
ويژگيها
گرووي داراي ويژگيهايي است كه در جاواي استاندارد يافت نميشود. از جمله اين ويژگيها ميتوان به نوع داده هاي ديناميك و تغيير كاربري اپراتورها اشاره كرد. دستور زبان گرووي در مقايسه با جاوا فشردهتر و كوچكتر است. از ويژگيهاي بارز و قابل توجه گرووي پشتيباني آن از زبانهاي مختلف Markup مانند XML و HTML است. اين قابليت امكان تعريف و كار با انواع مختلفي از دادههاي ناهمگون را با دستور زبان دقيق و روش برنامهسازي هم شكل فراهم ميكند. كد گرووي باز است و تقريبا تمام IDE هاي كد جاوا از كد گرووي نيز پشتيباني ميكنند و اين امر برنامهنويسي با گرووي را آسان ميكند.
تاريخچه
جيمز استراكان در آگوست سال 2003 براي اولين بار در وبلاگ خود در مورد توسعه زبان جديدي به نام گرووي نوشت. پس از آنكه فرآيند استانداردسازي پايان يافت، ژانويه سال 2007 نسخه استاندارد گرووي با عنوان 1.0 Groovy منتشر شد. به فاصله زماني اندكي پس از نسخه 1.0، نسخه 1.1 در ماه دسامبر 2007 منتشر شد. اين نسخه بلافاصله به نام 1.5 Groovy نامگذاري شد تا تغييرات مهم و بزرگ ايجاد شده را به وسيله اين تغيير نام منعكس كند.
اهداف
هدف از طراحي زبان گرووي استانداردسازي يك زبان برنامهنويسي براي پلتفرم جاوا بود. زباني كه بتواند پا به پاي جاوا حركت كند. در حقيقت گرووي زباني سريع و پويا مانند پايتون، پرل و روبي است. تفاوت گرووي با اين زبانها اين است كه گرووي براي پلتفرم جاوا طراحي شده است و قابليت برهمكنش با برنامههاي جاواي كنوني را دارد.
گرووي جايگزيني براي جاوا نيست، بلكه مكمل آن است. هدف اصلي از ايجاد اين مكمل، برطرف كردن اشكالات و پر كردن خلاهايي است كه اكنون برنامه نويسان و توسعهدهندگان حرفهاي كد آنها را حس ميكنند و خواهان روشي براي برطرف شدن آنها هستند، در حاليكه در پلتفرم كنوني جاوا اين مسايل ناديده گرفته شدهاند.
جاوا يا گرووي؟
تاكنون، زبان برنامهنويسي جاوا جايگاه خود را به عنوان زبان برنامهنويسي استاندارد پلتفرم جاوا، بدست آورده است. اين زبان به مدت تقريبا نه سال، نيازهاي برنامهنويسان را به بهترين شكل ممكن برطرف كرده است، اما جاوا نميتواند و نبايد تمام نيازهاي همه گروههاي برنامهنويسان را كه پروژهها و اهداف متفاوتي را دنبال ميكنند برآورده سازد. چرا كه زباني با اين مشخصات بخش بزرگي از قابليتهاي خود را به نفع پاسخگويي به همه كاربران از دست ميدهد و تضعيف ميشود. زبان جاوا مانند زبانهاي C++ و C#، به شدت ساخت يافته است. اين نوع زبانها كه گاه زبانهاي قراردادي ناميده ميشوند، براي حل بسياري از مسايل مناسب هستند اما پاسخگوي همه مشكلات نيستند. زبانهاي قراردادي بسيار نكتهسنج و خردهگير هستند به اين معني كه كوچكترين اشكال در نوشتن برنامه، كامپايل كردن كد را ناممكن ميسازد. اگرچه اين دقت بيش از حد، نتيجه اجراي كد را قابل پيشبيني ميسازد، اما از سوي ديگر از سرعت كار برنامهنويس ميكاهد.
در موارد متعددي لزوم وجود جايگزيني براي زبانهاي برنامهنويسي قراردادي احساس ميشود. يك جايگزين مناسب، استفاده از زبانهاي سريع مانند پايتون، روبي و پرل است. اين زبانهاي سريع، اغلب زبانهاي اسكريپتنويسي ناميده ميشوند اما اين عبارت، اين زبانها را به درستي توصيف نميكند. در دنياي فناوري اطلاعات، بسياري از افراد زبانهاي اسكريپت نويسي را به عنوان زبانهايي ميشناسند كه پيچيدگيهاي فني را قرباني سهولت كار با زبان ميكنند. اين تعريف اگرچه در مورد برخي از زبانهاي اسكريپتنويسي صحيح است، اما شامل پايتون، روبي و پرل نميشود. اينها، زبانهاي پويا و قدرتمندي هستند كه با استفاده از حجم كمتري از كد و دستور زبان، تعداد بيشتري از وظايف را انجام ميدهند. اكنون زمان آن رسيده است كه پلتفرم جاوا يك زبان سريع را براي پيشبرد اهداف خود به كار گيرد. گرووي اكنون زمينه لازم براي اين كار را دارد. گرووي نشاندهنده يك دوران جديد براي پلتفرم جاوا است. دوراني كه در آن جامعه برنامه نويسان جاوا از گوناگوني و تنوع ايجاد شده بهره فراواني خواهند برد و قادر به استفاده از تمام پتانسيلهاي پلتفرم جاوا هستند. تشخيص هوشمندانه اين مساله كه جاوا چيزي بيش از يك زبان برنامهنويسي است و درك اين نكته كه پلتفرم جاوا قدرت كافي براي اينكه چند زبان همزمان روي آن كار كنند و به حيات خود ادامه دهند را دارد از عوامل مهم در موفقيت طرح ايجاد زبان گرووي هستند.
زبان جاوا با ايجاد بايتكد، راهي ساده و آسان براي ارتباط با زبان واقعي پلتفرم جاوا پديد آورده است. گرچه بايتكدها كار برنامهنويس را آسان ميكنند، اما در مواردي يك زبان برنامهنويسي سريع، مولدتر است و در مقايسه با بايتكد از قدرت بيان بالاتري برخوردار است.
اما چرا گرووي؟ چرا Jython و JRuby براي دستيابي به اين هدف مورد استفاده قرار نگرفتند؟ امروزه زبانهاي متعددي براي اجرا روي ماشين مجازي جاوا طراحي شدهاند. گرووي به اين دليل بهترين انتخاب است كه از پايه و اساس براي پلتفرم جاوا طراحي شده است. از سوي ديگر، دستور زبان آن براي توسعهدهندگان برنامههاي جاوا آشنا است. گرووي برخي از بهترين ويژگيهاي پايتون، روبي و اسمالتاك را پيادهسازي ميكند. جايتون و جيروبي نمونههاي بسيار درخشاني از پشتيباني پلتفرم جاوا از ديگر زبانهاي برنامهنويسي موجود هستند. با اين وجود جايتون و جيروبي تنها درگاه (Port)هايي هستند كه ارتباط جاوا را با زبانهاي ديگر ممكن ميسازند. دستور زبان اين درگاهها براي طراحان جاوا ايجاد نشده است و حتي مجموعه كتابخانههاي استفاده شده براي پيادهسازي آنها با آنچه كه براي برنامهنويسي جاوا استفاده ميشود متفاوت است. در مقابل گرووي براي توسعهدهندگان جاوا طراحي شده است و پايه و اساس آن بر مبناي APIهاي استاندارد پلتفرم جاوا استوار است.
در بيشتر موارد گرووي به عنوان جايگزيني براي جاوا مد نظر قرار نميگيرد. بلكه به عنوان بخشي از جاوا مورد توجه است. بسياري از كاربران گرووي تمام برنامه خود را با استفاده از اين زبان پيادهسازي ميكنند. زمان توسعه كد كوتاهتر و كد حاصل به مراتب فشردهتر، خلاصهتر است. بنابراين درك كد نوشته توسط اين زبان بسيار ساده است. در اكثر موارد كارآيي كد نوشته شده رضايت بخش است، به ويژه اگر در نوشتن آن از كتابخانههاي جاوا استفاده شده باشد. در مواردي كه كارآيي كد پايينتر از حد مطلوب باشد، يافتن نقاط مشكلساز در كد بسيار ساده است. پس از يافتن اين بخشها ميتوان كد آنها را به كد جاوا تبديل كرد. به عنوان مثال اگر در يكي از اشياي گرووي متدي داشته باشيم كه اجراي آن نيازمند زمان زيادي باشد، اين كلاس را با يك كلاس جاوا جايگزين ميكنيم و متد مورد نظر را با جاوا پيادهسازي ميكنيم. اين خواص پويا و ديناميك در زبان گرووي قدرت مانور بسيار زيادي به برنامهنويس ميدهد.
بسياري از برنامهنويساني كه كار با هر دو زبان را تجربه كردهاند، نه تنها سرعت كدنويسي با گرووي را بيشتر از سرعت كدنويسي با جاوا ميدانند بلكه حتي ادعا ميكنند كه نوشتن كد با گرووي و سپس تبديل آن به كد جاوا سريعتر از نوشتن كد جاوا از ابتدا است. با اين همه بايد در نظر داشت كه گرووي يك دكمه نقرهاي رنگ جادويي نيست و مانند هر زبان ديگري محدوديتهاي خاص خود را دارد. برنامهنويسان گرووي را به خاطر طبيعت پوياي آن دوست دارند. مهمترين عامل جذابيت گرووي براي برنامهنويسان امكان انتقال و سادگي جابجايي بين گرووي و جاوا در مواقع لزوم است. وجود مجموعه بزرگي از كتابخانههاي جاوا از عواملي است كه بر جاذبه گرووي ميافزايد. در هفته آينده گرووي را با برخي از زبانهاي مشابه مقايسه خواهيم كرد.
منبع:جام جم
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید