پاورپوینت کامل و جامع با عنوان برنامه نویسی همروند در 158 اسلاید
برنامهنویسی رایانه در فرهنگ واژه غیر متخصّصین ممکن است به تمام پروژه ساخت نرمافزار یا برنامهٔ رایانهای گفته شود. با این همه برنامهنویسی تنها بخشی از فرایند توسعهٔ نرمافزار یا برنامه رایانهای است. اهمیت، توجه و منابع اختصاص داده شده به برنامهنویسی، بسته به ویژگیهای مشخص شده محصول و خواست افراد درگیر در پروژه و کاربران و در نهایت شیوهٔ انتخاب شدهمهندسی نرمافزار متغیر است.
برنامهنویسی رایانه (که اغلب به طور کوتاه برنامهنویسی نامیده میشود) فرایند سوق دادن ساختار اصلی یک مسئله محاسباتی به برنامهای قابل اجرا است. این کار مستلزم فعالیتهایی همچون تحلیل و درک مسئله است و عموماً حل چنین مسایلی منجر میشود به ایجاد یک الگوریتم، بازبینی نیازمندیهای الگوریتم که شامل صحت و میزان منابع مصرفی است، پیادهسازی (که معمولاً به عنوان کدینگ از آن یاد میشود) این الگوریتم در یک زبان برنامهنویسی مقصد، تست کردن، اشکال زدایی، نگه داری کد منبع، پیادهسازی سیستم ساخت(build system) و مدیریت مصنوعات مشتق شده مانند کد ترجمه شده به زبان ماشین برنامههای کامپیوتری. الگوریتم اغلب تنها به شکل قابل تجزیه و تحلیل برای انسان و قابل استدلال با منطق نمایش داده میشود. کد منبع به یک یا چند زبان برنامهنویسی، مانند جاوااسکریپت، اسمالتاک، پایتون، جاوا، سی شارپ، سی پلاسپلاس و سی نوشته شده است.
زبانهای متعدد برنامهنویسی وجود دارند که هر کدام از آنها سبکهای خاصی را پشتیبانی میکنند . انتخاب زبان برنامهنویسی مورد نظر بر اساس ملاحظات متعددی صورت میگیرد: مانند سیاست شرکت، مناسب بودن برای وظیفه در نظر گرفته شده، موجود بودن بستههای برنامه از پیش آماده شده یا نظرات شخصی. به شکل ایدهآل مناسبترین زبان برنامهنویسی برای کاربرد مورد نظر که در دسترس باشد ، انتخاب میشود. موضوعاتی که باعث میشوند از این وضعیت ایدهآل فاصله گرفته شوند شامل موضوعاتی مانند یافتن تعداد کافی برنامه نویسان ماهر که بتوانند تیم کاری تشکیل دهند، در دسترس بودن کامپایلرهای مناسب برای زبان مورد نظر، کارایی برنامههای نوشته شده با زبان مورد نظر، است.
زبانهای برنامهنویسی در طیفی بین زبانهای "سطح پائین " تا "زبانهای سطح بالاً قرار میگیرند. زبانهای سطح پائین معمولاً به زبان ماشین نزدیکتر هستند و سریعتر اجرا میشوند، در مقابل زبانهای سطح بالا خلاصه تر و برای کاربرد آسان تر هستند ولی با سرعت کمتری اجرا میشوند. کد نویسی با زبانهای سطح بالا معمولاً آسان تر از کد نویسی با زبانهای سطح پائین هستند.
آلن داونی در کتاب " چگونه به شکل یک استاد رایانه فکر کنیم " مینویسد:
جزئیات در زبانهای برنامهنویسی مختلف متفاوت به نظر میرسند ولی تعدادی از ساختارهای اساسی در همه زبانهای برنامهنویسی یکسان هستند:
- ورودی: دادهها را از صفحه کلید، یک فایل یا وسایل دیگر فراهم میکند.
- خروجی: اطلاعات را روی صفحه تصویر نشان میدهد، به یک فایل میفرستد یا به دستگاههای دیگری انتقال میدهد.
- محاسبات: اعمال محاسباتی اساسی مثل جمع و ضرب را انجام میدهد.
- حالتهای شرطی: شرطهای مشخصی را کنترل میکند و بر اساس آن رشته مناسبی از عبارات را اجرا میکند.
- حلقه: بعضی اعمال را به شکل تکراری انجام میدهد، معمولاً با استفاده از تعدادی از متغیرها این کار انجام میشود.
بسیاری از زبانهای برنامهنویسی مکانیسمهایی را برای استفاده از کتابخانههای مشترک فراهم میکنند. توابعی در این کتابخانهها بر اساس الگوهای مناسب اجرایی ایجاد میشوند (مانند روشهای انتقال آرگومانها) و سپس میتوان از این توابع در زبانهای متعدد برنامهنویسی استفاده کرد.
همروندی در علوم رایانه در سامانههایی پیش میآید که در آنها چند پردازش محاسباتی همزمان اجرا میشوند و با یکدیگر اندرکنش دارند (ناحیه بحرانی دارند). مطالعه همروندی محدوده وسیعی از سامانهها را دربرمیگیرد، از سامانههای رایانش موازی سخت-درگیر و بسیار همزمان گرفته تا سامانههای توزیعشده ناهمزمان سست-درگیر.
فهرست مطالب:
مقدمه
اهمیت موضوع و انگیزه ها
مشکلات
تعریف
افق های محاسبات همروند
مؤلفه های یک برنامه همروند
موازی سازی کارها
ارتباط ما بین پروسس ها: سبک گوناگون برنامه نویسی
همگام سازی پروسس ها
روند طراحی، پیاده سازی و اجرای یک برنامه همروند
معیارهای تعیین کارایی در محاسبات همروند
زمان اجرای الگوریتم
تسریع
قانون آمدهال
راندمان
مقیاس پذیری
مدل های معماری
طبقه بندی ماشین ها
مدل SISD
مدل SIMD
مدل SPMD
مدل MIMD
معماری حافظه اشتراکی مبتنی بر شبکه ارتباطی
معماری مبتنی بر حافظه فقط کش
معماری مبتنی بر حافظه توزیع شده
معماری مبتنی بر حافظه اشتراکی توزیع شده
انواع کامپیوتر های موازی
نامزدهای شبکه های مقیاس پذیر
نمونه هایی از شبکه های ارتباطی
شبکه ارتباطی غیر مستقیم
شبکه های ارتباطی مستقیم
الگوریتم های مسیر یابی
مسیریابی قطعی
مسیریابی تصادفی
مسیریابی تطبیقی
دسترسی انحصاری مقیاس پذیر به داده ها
راه حل های قطعی
راه حل های تصادفی
استفاده عملی از توابع هش
دسترسی همزمان مقیاس پذیر ها به داده ها
راه حل های عملی
شبکه های ترکیب کننده سخت افزاری
ترکیب کننده های نرم افزاری همزمان
مدل محاسباتی
نیاز به یک مدل موازی همه منظوره
مدل پل
تعریف مدل محاسباتی موازی
ملزومات یک مدل محاسباتی موازی
ماشین موازی هدف
استفاده از یک مدل محاسباتی
مدل PRAM
یک الگوریتم ساده PRAM
مدل BSP
پیچیدگی زمانی یک ابر گام
مدل logP
مدل WPRAM
مفهوم همسانی ضعیف
مدل همگام سازی مانعی دسته جمعی
همگام سازی دو به دو
مدل هزینه WPRAM
راه حل کلی انحصار متقابل
مشکلات
تعامل ما بین پروسس ها
رفع مشکلات
مکانیزم انحصار متقابل
ملزومات انحصار متقابل
انحصار متقابل _ روش های نرم افزاری
و...