اسکلت (برنامه نویسی کامپیوتری) کیست؟ توضیح بده.
برنامه نویسی اسکلت سبکی از برنامه نویسی کامپیوتری است که بر اساس ساختارهای ساده برنامه سطح بالا و به اصطلاح کد ساختگی است. اسکلت های برنامه شبیه کدهای کاذب هستند، اما امکان تجزیه ، کامپایل و آزمایش کد را فراهم می کنند. کد ساختگی در اسکلت برنامه برای شبیه سازی پردازش و جلوگیری از پیام های خطای کامپایل درج می شود. ممکن است شامل اعلان‌های توابع خالی یا توابعی باشد که فقط برای یک مورد آزمایشی ساده که در آن پاسخ مورد انتظار کد مشخص است، نتیجه صحیح را برمی‌گرداند.برنامه نویسی اسکلت یک رویکرد طراحی از بالا به پایین را تسهیل می کند، که در آن یک سیستم نیمه کاربردی با ساختارهای کامل سطح بالا طراحی و کدگذاری می شود و این سیستم سپس به تدریج گسترش می یابد تا نیازهای پروژه را برآورده کند. گاهی اوقات از اسکلت های برنامه برای توصیف های سطح بالا از الگوریتم ها استفاده می شود. یک اسکلت برنامه همچنین ممکن است به عنوان الگویی که نحو و ساختارهایی را که معمولاً در کلاس وسیعی از مسائل مورد استفاده قرار می‌گیرند را منعکس می‌کند، استفاده شود.برنامه های اسکلت در الگوی طراحی روش الگو که در برنامه نویسی شی گرا استفاده می شود، استفاده می شود. در برنامه نویسی شی گرا ، کد ساختگی مربوط به یک متد انتزاعی ، یک روش خرد یا یک شی ساختگی است . در نام‌گذاری فراخوانی روش راه دور جاوا (Java RMI)، یک خرد در سمت کلاینت با یک اسکلت در سمت سرور ارتباط برقرار می‌کند. یک کلاس اسکلت یک طرح کلی از یک کلاس است که در مهندسی نرم افزار استفاده می شود. این شامل توصیفی از نقش های کلاس است و اهداف متغیرها و متدها را توصیف می کند، اما آنها را پیاده سازی نمی کند. کلاس بعداً از اسکلت پیاده سازی می شود. اسکلت همچنین می تواند به عنوان یک رابط یا یک کلاس انتزاعی شناخته شود، با زبان هایی که از یک پارادایم چند شکلی پیروی می کنند.پس زمینه.نرم افزار مدرن اغلب به دلایل زیادی پیچیده است. این می تواند به این معنی باشد که فقط یک برنامه نویس نمی تواند آن را توسعه دهد، یا اینکه ماژول ها یا قطعات دیگر باید جداگانه وارد شوند. این برنامه‌ها همچنین می‌توانند به خودی خود بسیار پیچیده باشند، برخی با روش‌های متعددی که به یک متغیر واحد دسترسی دارند یا حتی پیکسل‌هایی را برای نمایشگر تولید می‌کنند. کد اسکلت برای کمک به برنامه نویسان برای توسعه کد خود با کمترین خطا در طول زمان کامپایل استفاده می شود.کد اسکلت معمولاً در برنامه نویسی موازی یافت می شود، اما در موقعیت های دیگر مانند مستندسازی در زبان های برنامه نویسی نیز استفاده می شود. این به ساده سازی عملکرد اصلی یک روش بالقوه گیج کننده کمک می کند. همچنین می‌توان از آن برای اجازه دادن به عملکرد کوچک در یک برنامه بزرگ‌تر استفاده کرد تا به طور موقت بدون عملکرد کامل کار کند. این روش برنامه‌نویسی ساده‌تر از نوشتن یک تابع کامل است، زیرا این توابع اسکلت نیازی به عملکردهای اصلی ندارند و در عوض می‌توانند برای استفاده در طول توسعه کدگذاری شوند. آنها معمولاً شامل کدهای نحوی صحیح برای معرفی روش و همچنین نظراتی برای نشان دادن عملکرد برنامه هستند. این همیشه برای فراخوانی یک قطعه کد اسکلت متن ضروری نیست.ارتباط با شبه کد.کد شبه معمولاً هنگام توسعه ساختار یک نرم افزار جدید یافت می شود. این یک تصویر انگلیسی ساده از یک عملکرد خاص در یک سیستم بزرگتر است، یا حتی می تواند نمایشی از یک برنامه کامل باشد. شبه کد شبیه به برنامه نویسی اسکلت است، با این حال از این واقعیت منحرف می شود که شبه کد در درجه اول یک روش غیررسمی برنامه نویسی است. کد ساختگی نیز بسیار شبیه به این است، جایی که کد صرفاً به عنوان یک مکان نگهدار یا برای نشان دادن وجود مورد نظر یک متد در یک کلاس یا رابط استفاده می شود.برنامه نویسان رایانه به شدت به شبه کد وابسته هستند، به طوری که تأثیر قابل اندازه گیری بر روان آنها دارد. یک برنامه نویس معمولی آنقدر مشروط به نوشتن کد ساده شده به شیوه ای است، چه با نوشتن کد شبه یا کد اسکلت، یا حتی فقط با کشیدن یک نمودار، که این امر تأثیر قابل اندازه گیری بر میزان خوبی می تواند اجرای نهایی خود را بنویسد. این در تعدادی از برنامه‌ها، با برنامه‌نویسان مختلف که به زبان‌های مختلف کار می‌کنند و پارادایم‌های برنامه‌نویسی متنوع یافت شده است.این روش طراحی برنامه نیز اغلب بر روی قلم و کاغذ انجام می‌شود و متن را از چیزی که قرار است پیاده‌سازی شود بیشتر می‌کند. برنامه نویسی Skeleton این را تقلید می کند، اما در روشی که معمولاً در یک محیط توسعه یکپارچه یا ویرایشگرهای متن نوشته می شود متفاوت است. این به توسعه بیشتر برنامه پس از مرحله طراحی اولیه کمک می کند. برنامه‌های Skeleton همچنین به عملکردهای ساده در صورت اجرا اجازه می‌دهند.پیاده سازی.برنامه نویسی اسکلت را می توان در طیف وسیعی از برنامه های برنامه نویسی مختلف پیاده سازی کرد.مستندات زبان برنامه نویسی.اکثر زبان‌های برنامه‌نویسی، اگر نگوییم همه، دارای کد اسکلتی هستند که برای کمک به تعریف همه توابع و روش‌های داخلی استفاده می‌شود. این یک وسیله ساده برای برنامه نویسان جدیدتر برای درک نحو و اجرای مورد نظر روش های نوشته شده فراهم می کند.جاوا ، یک زبان شی گرا ، به شدت بر روی یک صفحه اسناد ساختاریافته با روش های کاملاً مجزا برای هر قسمت شی از بسته های جاوا تمرکز می کند. زبان های شی گرا به جای یک رویکرد ساده از بالا به پایین که در زبان های دیگر یافت می شود، بر ساختار مبتنی بر سلسله مراتب برای پیاده سازی های خود تمرکز می کنند. "اشیاء" داده ها و متغیرها را در آنها ذخیره می کند، و اجازه می دهد تا یک برنامه معمولا کارآمدتر نوشته شود. این اشیاء دارای توابع جداگانه ای هستند که می توانند به متغیرهای داخلی دسترسی داشته باشند که به عنوان متدها شناخته می شوند.هر روش در قالب یکسان تعریف شده است، با نام روش و همچنین نحو مورد استفاده در یک محیط توسعه یکپارچه به وضوح در بالای یک بلوک قابل مشاهده است. با تمرکز جاوا بر دامنه ، انواع داده ها و وراثت ، این نحو برای برنامه نویسان جدید، اگر نه همه، بسیار مفید است. این با توضیح عمیق در مورد عملکرد روش، با خطاهای زیر دنبال می شود.پایتون رویکردی مشابه برای مستندسازی روش‌های داخلی خود دارد، با این حال از عدم تثبیت زبان بر دامنه و انواع داده تقلید می‌کند. این مستندات سینتکس هر متد را به همراه توضیح کوتاه و مثالی از استفاده معمولی متد یا تابع دارد. کد اسکلت ارائه شده در مثال به برنامه نویسان درک خوبی از عملکرد در یک نگاه سریع می دهد.تعریف کلاس.کلاس هایی که توسط توسعه دهندگان شخص ثالث نوشته شده اند، عمدتاً به عنوان بخشی از کتابخانه ها، برنامه نویسی خود را در قالب کد اسکلت به نمایش می گذارند. این کمک می کند تا به افرادی که در کتابخانه جدید هستند از نحوه عملکرد توابع و روش ها اطلاع داده شود. P5. Js از این قالب در صفحه مستندات خود برای توضیح کاربرد مورد نظر برخی از توابع گنجانده شده استفاده می کند. این با مستندات زبان برنامه نویسی متفاوت است، با این حال، از کد اسکلت برای نمایش پارامترها به جای همه استفاده های ممکن از روش استفاده می کند.رابط‌های زبان طبیعی (NLI) معمولاً در موقعیت‌هایی یافت می‌شوند که برنامه‌نویسان سعی می‌کنند یک ورودی دریافت کنند، که معمولاً به صورت محاوره‌ای نامیده می‌شود (بدون استفاده از اصطلاحات خاص زبان برنامه‌نویسی) و از آن برای ایجاد یک برنامه یا یک روش استفاده می‌کنند. پیاده سازی این از مجموعه کوچکی از کدهای اسکلت استفاده می کند تا تابع در حال اجرا در پس زمینه را نشان دهد. سایر اشکال NLI از اشکال مختلف ورودی استفاده می‌کنند، از سایر کاربرانی که به زبان‌های مختلف صحبت می‌کنند تا ورودی مبتنی بر اشاره برای ایجاد یک نتیجه بسیار مشابه. از آنجایی که زبان های برنامه نویسی عمدتاً به زبان انگلیسی توسعه یافته و نوشته می شوند، افرادی که به زبان های دیگر صحبت می کنند، توسعه نرم افزار جدید را دشوار می دانند. NLI در برخی از مطالعات برای کمک به افراد در این شرایط استفاده شده است. این مطالعه کلاس‌هایی را نشان داد که با استفاده از NLI به زبان جاوا نوشته شده‌اند. این امر نیاز به یادگیری قواعد نحوی را از بین برد، اما به این معنی بود که کلاس با استفاده از یک مجموعه اولیه از کدهای اسکلت نوشته شده بود.تعاریف مبتنی بر چند شکلی.چندشکلی یک ایدئولوژی است که با پارادایم برنامه‌نویسی شی گرا دنبال می‌شود، که در آن روش‌ها می‌توانند سرپوش گذاشته یا بیش از حد بارگذاری شوند (روش‌هایی با همان نام در کلاس فرزند که بر روش نوشته شده در کلاس والد اولویت دارند). تعریف متدها بر اساس چارچوب اسکلتی است که توسط نحو زبان تعریف شده است. بسیار شبیه به پیاده سازی کلاس، کد اسکلت می تواند برای تعریف متدهایی که بخشی از یک رابط هستند استفاده شود. یک رابط اساساً طرحی از یک کلاس است که به زبان های شی گرا سخت (مانند جاوا ) اجازه می دهد تا از کلاس های بسته های مختلف بدون نیاز به درک کامل توابع داخلی استفاده کنند. اینترفیس ها به سادگی متدهایی را که باید در کلاس وجود داشته باشند تعریف می کنند و به دیگران اجازه می دهند از متدها استفاده کنند یا کلاس را برای نیازهای شخصی خود پیاده سازی کنند.public skeletonExample();یک کلاس انتزاعی تقریباً مشابه پیاده سازی کلاس است، اما بسته به زبان، حداقل یک متد به عنوان انتزاعی تعریف می شود. این بدان معناست که هر فرزند این کلاس (هر کلاسی که گسترش یا پیاده سازی می کند) باید متدی برای این کار تعریف شده باشد. کلاس‌های انتزاعی سبک تعریف بسیار مشابهی با رابط‌ها دارند، با این حال از کلمه کلیدی «abstract» معمولاً برای شناسایی این واقعیت استفاده می‌شود که باید در کلاس‌های فرزند پیاده‌سازی شود.public abstract skeletonExample();این مثال ها از نحو جاوا استفاده می کنند.برنامه نویسی موازی.برنامه نویسی موازی عملیات چند تابع به طور همزمان است که بیشترین استفاده را برای افزایش کارایی دارد. اینها معمولاً سخت ترین انواع برنامه ها برای توسعه هستند، به دلیل پیچیدگی و ارتباط آنها با سخت افزار مورد نظر نیز. بسیاری از توسعه دهندگان تلاش کرده اند تا برنامه هایی با این عملکرد اصلی بنویسند، با این حال نتایج متفاوتی با این کار مواجه شده است.چارچوب های اسکلت الگوریتمی در برنامه نویسی موازی برای توصیف انتزاعی روش های مورد بحث برای توسعه بعدی استفاده می شود. فریمورک ها به یک نوع محدود نمی شوند و هر کدام از این انواع اهداف متفاوتی برای افزایش کارایی برنامه توسعه دهنده دارند. اینها را می توان به سه نوع اصلی دسته بندی کرد: داده موازی ، وظیفه موازی و وضوح. داده موازی.این الگوریتم‌های اسکلت برای توسعه برنامه‌هایی استفاده می‌شوند که روی نرم‌افزارهای مبتنی بر داده‌های بزرگ کار می‌کنند و معمولاً ارتباطات بین داده‌ها را برای استفاده بعدی شناسایی می‌کنند. الگوریتم‌های موازی داده شامل «نقشه‌ها»، «چنگال» و «کاهش» یا «اسکن» هستند.وظیفه موازی.این عملیات، همانطور که از نامشان پیداست، بر روی وظایف کار می کنند. هر نوع الگوریتم تحت این به دلیل تغییر در رفتار بین کارها متفاوت است. الگوریتم‌های موازی کار شامل «squentials»، «farms»، «pipes»، «if»، «for» و «while» هستند.اسکلت های رزولوشن.این اسکلت ها با اسکلت های معمولی که در بالا یافت می شوند بسیار متفاوت هستند. الگوریتم های 'Resolution' از ترکیبی از روش ها برای حل یک مشکل مشخص استفاده می کنند. مسئله داده شده الگوریتم می تواند "خانواده ای از مسائل" باشد. دو نوع اصلی از این اسکلت ها وجود دارد، «تقسیم کن و غلبه کن» یا «برند و محدود کن».