برنامه نویسی وجه گرا
برنامه نویسی وجه گرا – ایران ترجمه – Irantarjomeh
مقالات ترجمه شده آماده گروه کامپیوتر
مقالات ترجمه شده آماده کل گروه های دانشگاهی
مقالات
قیمت
قیمت این مقاله: 38000 تومان (ایران ترجمه - Irantarjomeh)
توضیح
بخش زیادی از این مقاله بصورت رایگان ذیلا قابل مطالعه می باشد.
شماره | ۵۵ |
کد مقاله | COM55 |
مترجم | گروه مترجمین ایران ترجمه – irantarjomeh |
نام فارسی | برنامه نویسی وجه گرا |
نام انگلیسی | Aspect Oriented Programming |
تعداد صفحه به فارسی | ۳۵ |
تعداد صفحه به انگلیسی | ۱۴ |
کلمات کلیدی به فارسی | برنامه نویسی وجه گرا |
کلمات کلیدی به انگلیسی | Aspect-Oriented Programming |
مرجع به فارسی | |
مرجع به انگلیسی | |
کشور |
برنامه نویسی وجه گرا
۱- مقدمه
در این مقاله نسبت به بررسی تحقیقات اخیر در خصوص زبان برنامه نویسی اقدام میشود. هدف از این تحقیق بوجود آوردن این امکان میباشد تا برنامهها نسبت به فراهم آوردن کلیه ویژگیها یا وجههای مهم رفتار سیستمی اقدام کنند، که نه تنها شامل قابلیت عملکرد آنها میباشد بلکه مسائلی نظیر استراتژی مدیریت شکست، استراتژی ارتباطات، استراتژی هماهنگی مربوطه، ارجاع حافظه بصورت محلی و غیره نیز مورد بحث قرار میگیرند.
تحقیق جاری ما بر مبنای این عقیده است که زبانهای برنامهنویسی بر مبنای یک مفهوم تجریدی واحد، رویهها، محدودیتها و آن چیزی است که نهایتاً برای بسیاری از سیستمهای پیچیده بعنوان پدیدههای ناکافی مد نظر میباشند. دلیل این امر آن است که ویژگیهای مختلف رفتار سیستمی که میبایست آنها را برنامه نویسی نمود، هرکدام دارای تمایلات طبیعی و فرمهای ذاتی خاص خود میباشند، بنابر این بهنگامی که یک چارچوب تجریدی ممکن است وظیفه گردآوری یک خصیصه یا ویژگی را بخوبی انجام دهد، سیستمهای دیگر ممکن است این عمل را بخوبی سیستم اولی محقق نسازند.
این نتیجهگیری منجر شده است تا نسبت به توسعه مفهومی اقدام کنیم که آن را تحت نام برنامه نویسی وجهگرا (APO) میخوانیم. در این سیستم، ویژگیهای مختلف رفتار سیستمی بصورت بارزترین فرمهای طبیعی آنها تحت برنامه نویسی قرار گرفته و پس از آن این برنامههای مجزا بمنظور تولید یک کد اجرایی به یکدیگر پیوند میخورند. تحقیق ما در این زمینه در مضمون زبانهای چند منظوره یا عام و زبانهای محدود به حوزه خاص انجام میپذیرد. ما بر این عقیدهایم که این تحقیق در هر دو زمینه مشارکت خواهد داشت.
برنامه نویسی وجه گرا
۱-۱٫ برش عرضی
محدودیت اصلی زبان چهارچوب تجریدی آن است که یک تجرید خاص الزماً برای کلیه مسائلی که میبایست در یک سیستم خاص برنامه نویسی شود بکار نمیآید. نمونه کلاسیک این مورد ایده ارتباطات نا متغیر در بین موضوعات میباشد. در زمانی که بسیاری از زبانهای شی گرای استاندارد وظیفه خود در زمینه گردآوری آشکار رفتار موضوعات را انجام میدهند، آنها عملکرد متناسب کمتری را در خصوص گردآوری موارد نامتغیر رفتاری و ساختاری از خود نشان میدهند، نظیر «زمانی که یک شی پیام POP را دریافت داشته، یا یک پیام Refresh را برای شی دیگر ارسال میکند». بسیاری از مکانیزمهای زبان شناسی برای مواجه شدن با موارد مخصوص مرتبط با این مشکل توسعه یافتهاند (یعنی روشهای قبل/بعد)، اما یکی از پیچیدگیهای کد دنیای واقعی همچنان از مواردی نشأت میگیرند که در آن زبان قابلیت فراهم آوردن پشتیبانی کافی برای ویژگی ثانویه، ولی در عین حال مهم، رفتار سیستمی را نخواهد داشت.
…
هدف برنامه نویسی وجهگرا (AOP) بوجود آوردن امکان کار با ویژگیهای قطع متقاطع یک رفتار سیستمی، تا حد امکان بصورت مجزا، میباشد. ما میخواهیم به برنامه نویسان اجازه دهیم تا در ابتدا نسبت به بیان هر یک از ویژگیهای سیستم مد نظر آنها به روشی مجزا و طبیعی اقدام کنند و پس از آن بصورت اتوماتیک تشریحات مجزا را به یک فرم قابل اجرای نهایی با استفاده از ابزاری بنام Aspect Weaver درآورند. نام بافتن به این علت انتخاب گردیده است تا آنکه تفاوت مهم از حالت کامپایل سنتی بازتاب داده شود که بر این اساس معنای بافتن و خروجی آن دارای جامعیت شدیدتری برای برنامههای ورودی در مقایسه با کامپایل سنتی میباشد. این مورد در حقیقت دنبال کننده هدف اصلی AOP برای مجزا سازی مسائل قطع متقاطع سنتی میباشد.
…
برنامه نویسی وجه گرا
۲- نمونه برنامه نویسی وجهگرا
بعنوان اولین نمونه AOP، ما نسبت به ارائه بخش کوچکی از یکی از پروژههایی که در آن کار میکنیم اقدام مینماییم که با استفاده از AOP به معرفی کلاس تشریحی کاربردهای توزیعی اقدام میشود. تجزیه وجهی که بر اساس آن کارهای خود را انجام میدهیم باعث تقسیم سیستمها به چندین ویژگی کلیدی میگردد که شامل: اساس پایه موضوعات یا شیها، استراتژی ارتباطات بهنگام ارسال پیامها در حول مرزهای آدرس خاص و هماهنگی نخکشیهای هر یک از فعالیتهای مربوطه.
بر این اساس ما نسبت به توسعه یک زبان عاملیت پایه (BFL) و زبان تشریح وجه متناسب (ADLs) اقدام نموده تا بدین وسیله بتوانیم نسبت به گردآوری هر یک از ویژگیهای متمایز رفتار سیستمی اقدام کنیم. BFL در حقیقت سبک زبان ساده شده C++/Java میباشد. برنامهها در این زبان تعیین کننده آنچه که هر شی انجام میدهد میباشند که در حقیقت بعنوان یک سبک آشنای زبانهای شی گرای دستوری مد نظر هستند.
…
برنامه نویسی وجه گرا
۳- مثال ثانویه برنامه نویسی وجهگرا
مثال دوم ما در برنامه نویسی وجهگرا از حوزه محاسبه علمی میباشد که در آن ما نسبت به بررسی استفاده از AOP در حل معادلات دیفرانسیل و همچنین معادلات ماتریس خلوت اقدام نمودیم.
نوع تجزیهای که ما برای این مسئله انتخاب کردیم دارای سه ویژگی یا وجه میباشد: (۱) الگوریتم پایه و استفاده از آن جهت حل سیستم (غالباً یک الگوریتم مشتری با تغییر با توجه به فیزیک مشکل موجود)، (۲) حفظ دقت عددی (که نیازمند نظارت بر محاسبه و تغییر ماتریس اولیه در طی حرکت بدون از دست دادن رد ارتباطات اولیه)، (۳) انتخاب ساختارهای داده که دارای تغییرات زمانی- مکانی متناسب بوده و اجازه به مشارکت گذاشتن اطلاعات در امتداد آرایهای از تکرارهای الگوریتم را بدهد.
برنامه نویسی وجه گرا
۴- جداسازی با هماهنگ سازی
این مثالها بمنظور مشخص نمودن یک راهکار آسانتر درباره سیستم AOP-Aspect Weaver و عدم کامپایل مجزا ADPs مختلف و مخاطب قرار دادن هر یک از آنها در طول رویه کاری با استفاده از رابطها میباشد. توجه داشته باشید که هدف AOP بوجود آوردن امکان ویژگیهای قطع متقاطع مختلف رفتار سیستمی میباشد. بر این اساس میتوان گفت که چرا ارتباط بین ADPs ورودی و خروجی این سیستم همانند مورد شکل ۲ مد نظر میباشد.
این امر بدان معنا است که ADLها را میبایست به گونهای طراحی کرد که ADPهای مختلف بصورت کامل تفکیک نگردند،اما بجای آن به گونهای جدا شوند که دارای هماهنگی مقتضی بر روی محاسبات کلی سیستم باشند. این بخش مباحثی را مطرح مینماید که بر گرفته شده از این نیاز میباشد که ما آن را بعنوان مهمترین مسائل فنی پایه در توسعه الگوی AOP میدانیم.
۱-۴٫ گسترش جدایی پایه/متا
یک دیدگاه ساده برای تحصیل جدایی و هماهنگی ریشه در تعمیم یا گسترش ایدههای جدایی پایه/ متا میباشد که در پروتکلها و موارد بازتاب یافته در خصوص موضوعات متا یافت شده است. ایده اصلی در پس پرده جدایی پایه/متا آن است که یک سیستم میتواند دارای دو رابط باشد: یک رابط که قابلیت فراهم آوردن عاملیتهای پایه را دارا میباشد و رابط دیگر که میتوان آن را جهت اعمال پرسوجوها، نظارت یا کنترل و تنظیم عاملیتهای موجود در امتداد رابط اول، به کار گرفت.
۲-۴٫ آنالیز همخوانی
بهنگامی که اصل جدایی پایه/متاب صورت کاملاً قدرتمند ثابت شده است، این سیستم دارای سه ضعف مشخص میباشد که ممکن است آن را بعنوان یک پایه کامل برای AOP ناکافی جلوه دهد: (۱) این سیستم غیر رسمی میباشد، (۲) این سیستم یک وجه یا ویژگی را بصورت اولیه بر روی وجوه دیگر بنیان میدهد و (۳) این سیستم وجوه یا ویژگیهای مربوطه را به یکدیگر مرتبط میسازد، بجای آنکه آنها را به محاسبات کامل ارتباط دهد.
برنامه نویسی وجه گرا
۵- کامپایلرهای غیر هوشمند
یکی از موانع طویل المدت در برابر کارکرد زبانهای برنامه نویسی سطح بالا در حوزههای بحرانی عملکرد مشکل توسعه کامپایلرهایی میباشند که دارای کارآیی لازم هستند. این مشکل بعنوان یک معضل برای زبانهای عمومی و زبانهای سطح بالای خاص مد نظر میباشد.
دیدگاه ما در این خصوص نزدیک به ایده زبانهای خاص میباشد. در هر کجا که ما با مشکل استراتژی اجرایی سخت برای BFL مواجه شدیم، ما سعی میکنیم تا مشکل را تحت کنترل یک ADL خاص قرار دهیم. این راهحل مشابه با ایده زبانهای خاص میباشد.
برنامه نویسی وجه گرا
۶- تحقیق مرتبط
تحقیقات و کارهای زیادی، چه قدیمی و چه جدید بر مبنای بصیرتهایی مشابه با موارد مرتبط با فهم برنامه نویسی وجه گرا انجام شده است. این بدان معنا است که تحقیق جاری باعث تجزیه سیستمها در امتداد خطوطی شده است که احساس میشد که بیشتر بر مبنای وجه خاص میباشند تا مبتنی بر مادولههای مربوطه. این مثالها، مطالعه مسائل منطبق درخصوص ویژگیهایی که برای توسعه نمونههای کلی مورد نیاز میباشند را تسهیل مینماید.
۱-۶٫ اسلوب شناسی
بسیاری از قواعد مرتبط با طراحی برمبنای مقولههای تجزیه مفهومی کاملاً جا افتاده میباشند. بطور مثال، مهندسین مکانیک از مدلهای استاتیک، دینامیک و گرمایی برای یک سیستم بعنوان بخشی از طراحی آن بهره میجویند. مهندسین الکتریسته از دیاگرامهای مختلف در جهت تفکر در خصوص مدارهای خود استفاده میکنند: که شامل دیاگرامهای مدار، دیاگرامهای شکل موج (دیاگرامهای زمانی) و دیاگرامهای فاز میباشد. هریک از این مدلها در جهت ایزوله سازی یا منفک نمودن ویژگیهای خاصی از این مدار راهگشا میباشند. کلیه موارد جزء روالهای تجزیه وجهگرا بشمار میآیند، اما در این موارد ویژگیهای بافت یا پیوند به هم غالباً بصورت دستی اعمال میگردند، با این حال برخی از ادوات CAD برخی از آنها را بصورت اتوماتیک انجام میدهند.
۲-۶٫ ادوات تحلیلی
کار با روالهای تقسیم یا انقطاع برنامه (Slicing) از این نظر مشابه با AOP میباشد که این برنامه نسبت به شناسایی روشی اقدام میکند که در آن یک بخش مشخص متن برنامه ممکن است بصورت حقیقی بعنوان مسائل مختلف پیچیده قطع متقاطع مطرح شود. تقسیم برنامه این امکان را بوجود میآورد تا نسبت به شناسایی برخی از این ویژگیهای مختلف عملکرد برنامه اقدام نماییم. کار با روالهای تقسیم برنامه از دو نظر با AOP مختلف میباشد: (۱) این روال با برنامههایی کار میکند که قطعاً در یک زبان نوشته شده باشند و (۲) این روال از نظر ذاتی تحلیلی میباشد و نه ساختاری. یکی از نتیجههای حاصل شده از این موضوع آن است که ادوات تقسیم برنامه مقسم موجود بر حسب یک زبان شایع و مشترک تعریف میگردد، یعنی باید دسترسی به یک متغیر خاص و فراخوانی یک تابع خاص و مقولههای وابسته حاصل گردد. ما علاقه خود را نسبت به استفاده از تکنیکهای مقسم برنامه بعنوان مبنایی برای آنالیز وجهگرا و ادوات مهندسی مجدد اعلام مینماییم.
۳-۶٫ ادوات مفید
با این وجود، سیستمهای دیگری وجود دارند که شباهت زیادی به مفهوم AOP ما دارند بر این اساس که تجزیه مفهومی معمولاً بصورت ساختاری و مفید بجای تجزیه تحلیلی مطرح میباشد. در اینکار، تجزیه مفهومی نسبی بین کد «پایه»، که همانند یک برنامه نوشیته شده به زبانهای سطح بالای سنتی میباشد و کد«متا»، که بر روی چگونگی اجرایی کد پایه تاثیرگذار میباشد، وجود دارد. در جایی که موضوع کد پایه میبایست درخصوص محدوده خاص برنامه اعمال شود، «همانند پرداخت چک، اسکن نمودن تصاویر مستندات»، موضوع کد متا در حقیقت موارد مفهومی و اجرایی زبانی را تحت پوشش قرار میدهد که کد پایه در آن نوشته شده است.
برنامه نویسی وجه گرا
۷- خلاصه و رهنمودهای آتی
ما عقیده داریم که مفهوم برنامه نویسی وجهگرا میتواند دارای ارزش مهمی برای تحقیقات زبان برنامهنویسی و پروژههای توسعه باشد. با توجه بدین مفهوم میتوان دریافت که چرا برخی از ویژگیهای رفتار سیستمی میبایست همدیگر را بصورت متقاطع قطع نموده و کد اجرایی میتواند بعنوان یک کمک شایان در تلاشهای ما بمنظور توسعه سیستمهای برنامه نویسی چند منظوره و خاص بکار گرفته شود. با استفاده از مفهوم AOP، سیستمهای ما نهایتاً دارای زبانهای مخصوص مختلف میباشند، که هر یک از آنها وجههای متفاوت مورد نظر که میبایست برنامه نویسی شود را تحت پوشش قرار میدهند.
ما یکسری از پیشرفتهای قابل توجه را در امر AOP درخلال چندین سال آینده انتظار داریم. برخی از این موراد که در جامعه POPL بسیار جالب توجه میباشند عبارتند از:
کاربرد تجاری تکنولوژی AOP. پیشرفتهای تجاری استفاده از تکنولوژی AOP چیست؟ آیا این مزیتها را میتوان بصورت مشخص بیان داشت؟
اساس مفهومی برای فهم برش عرضی و بافندگی. چه چیزهایی را میتوان بطور کلی در خصوص آنکه چرا و چگونه وجههای مختلف یک رفتار سیستمی همدیگر را بصورت متقاطع قطع مینمایند، با توجه به کد اجرایی، بیان داشت. چه مواردی را میتوان بطور کلی در خصوص چگونگی کار بافندگان عنوان داشت؟ آیا میتوانید نست به توسعه یک فهم آشکار در خصوص «اشکال طبیعی» مختلفی که مسائل متفاوت را دارا میباشند اقدام نمود؟
توسعه تکنولوژی جعبه ابزار AOP . آیا میتوان نسبت به توسعه اجزا یا مولفههای قابل استفاده مجدد جهت پشتیبانی ساخت ADLها و بافندگان اقدام نمود.