الگو ریتم ها در برنامه نویسی.
‏صنعت کامپیوتر به این معروف است که با سرعتی باور نکردنی در حال تغییر است. بیشتر متخصصان این رشته در تمام دوران فعالیت خود، دائما در حال آموزش و یاد گیری هستند تا اطلاعات خود را به روز نگه دارند. اما بعضی از قسمتهای کامپیوتر، از زمانی که به وجود آمده اند تا کنون تغییری نکرده اند و احتمالا در طول عمر ما هم تغییری نخواهند کرد. فرآیند و ترتیب موجود در توسعه نرم افزار نمونه ای از جنبه های تکنولوژی کامپیوتر است که ماهیت اصلی آن از ابتدا تاکنون دچار تغییر نشده است. ‏برای کار کردن یک نرم افزار، یک سری داده نیاز است که روی آنها پردازش انجام شود. نرم افزار این داده ها را دریافت میکند و به فرمی دیگر تبدیل می کند و ارائه می دهد. برای مثال، یک برنامه بانک اطلاعاتی، اطلاعات مشتریان شما را که به صورت صفر و یک نوشته شده است دریافت می کند و آنها را برای شما در مانیتور نمایش می دهد. یا سرویس تلفن شما، مدت زمان تماسهای شما را ذخیره کرده و صورت حساب ها را بر اساس این اطلاعات تولید می کند. ‏اما اساس فعالیت همه این نرم افزارها، الگوریتم آنها است. قبل از اینکه شما بتوانید برنامه ای بنویسید تا مسئله ای را حل کند، ابتدا باید آن را به چند مسئله کوچکتر تقسیم کنید، و چگونگی حل این مسایل را قدم به قدم توضیح دهید. الگوریتم برنامه ها کاملا ‏مستقل از زبان برنامه نویس است که برای نوشتن برنامه از آن استفاده ‏میکنید. بنابراین شما میتو انید الگوریتم یک برنامه را به هر نحوی که به شما کمک میکند تا مسئله را درک کنید بازگو کنید. مثلا میتو انید آن را به زبانی که با آن صحبت میکنید برای خودتان توضیح بدهید و یا آن را به وسیله شکلها و نمودارها رسم کنید. ‏فرض کنید شما برای یک شرکت خدمات تلفنی کار میکنید و میخو اهید صورت حساب مشترکین را بر اساس تماسها یی که گرفته اند مشنص کنید. الگوریتمی که برای حل مسئله بالا میتو انید به کار ببرید، میتواند مشابه الگوریتم زیر باشد:

۱) در ابتدای هر ما ه ‏شما باید صورت حساب هر یک از مشترکین خوذ را محاسبه کنید.
۲ ‏) برای هر مشترک، شما لیست تماسها یی که آن مشترک در ما ه ‏قبل گرفته است را دارید.
۳ ‏) شما مدت هر تماس و ساعتی که آن تماس گرفته شد ه ‏بود را مید انید و بر اساس این اطلاعات میتو انید هزینه هر تماس را ‏مشنص کنید.
۴ ‏) برای هر مشترک، صورت حساب او برابر است با مجموع هزینه تمام تماسها یی که داشته است.
۵ ‏) مالیات هر صورت حساب را محاسبه می کنید.
۶( بعد از این که صورت حساب نهایی محاسبه شد، باید آن را چاپ کنید.
‏این شش مرحله، الگوریتم قسمتی از نرم افزاری است که هزینه ماهیانه مشترکین یک مرکز خدمات تلفنی را محاسبه میکند. تفاوتی ندارد شما این نرم افزار را با چه زبان برنامه نویس می نویسید، C++,C#،ویژوال بیسیک، # J ‏. جاوا و یا هر زبان دیگری، الگوریتم کلی برنامه تغییری نمیکند. (البته این هفت مرحله هم خیلی کلی هستند و باید قبل از این که به وسیله یک زبان برنامه نویس نوشته شوند به مرا حل کوچکتری شکسته شوند و جزئیات بیشتری از آن شرح داده شود) ‏حالا برای افرادی که تاز ه‏ وارد برنامه نویسی شد ه ‏اند، یک خبر خوب و یک خبر بد دارم. خبر خوب این است که معمولا ایجاد یک الگوریتم بسیار ساده ‏است. مثلا در الگوریتم قبلی، فکر نکنم قسمتی به نظر شما گنگ باشد و واضح به نظر نرسد. معمولا الگوریتم ها از یک سری استدلال هایی پیروی میکنند که از نظر مردم عادی درست است. البته ممکن است که شما با الگوریتم هایی برخورد کنید که دارای فرمو لهای پیچید ه ‏ریاضی و یا فرمو لهای دیگر علوم باشند و تصور کنید که این فرمول ها با استدلال های شما درست به نظر نمی رسند، اما خوب این فرمول ها هم از نظر افراد دیگری که آنها را میدانند درست به نظر میرسد. اما خبر بد این است که معمولا تبدیل یک الگوریتم به کد برنامه کار مشکلی است. بنابراین به عنوان یک برنامه نویس این که بدانید چگونه یک الگوریتم را توسط یک زبان برنامه نویس پیاد ه ‏کنید مهم است. ‏همه برنامه فویسان حرفه ای بر این اصل عقید ه ‏دارند که تقدم یک زبان برنامه نویسی بر زبان برنامه نویسی دیگر، کاملا بی ربط است. زبانهای برنامه نویسی متفاوت میتوانند کارهای مختلفی را راحت تر و سریعتر انجام دهند. مثلا ++ c ‏به برنامه نویسان قدرت زیادی در کنترل نحو ه ‏اجرای برنامه میدهد و همچنین برنامه های آن نیز از سرعت اجرای بالایی برخوردار هستند، اما بدی آن این است که برنامه نویسی به این زبان بسیار مشکل است و یادگیری آن برای مبتدیان معمولا بسیار سخت است. در مقابل برنامه نویسی و یادگیری زبان ویژوال بیسیک بسیار راحت تر است، اما برنامه نویس در این زبان کنترل کافی بر روی برنامه ندارد (زبان # C ‏همانطور که ادعا شد ه ‏است، زبانی است که از سادگی زبانی مانند ویژوال بیسیک و قدرت زبانی مانند ++ c ‏برخوردار است). چیزی که شما باید به عنوان یک برنامه نویس یاد بگیرید این است که بتو انید برای حل یک مسئله، زبانهای برنامه نویسی مختلف را بررس کنید. البته زمانی که شروع می کنید که اولین زبان برنامه نویسی را یاد بگیرید، در آن پیشرفت کندی خو اهید داشت، اما معمولا زبانهای برنامه نویسی در نحو ه ‏اجرا و پیاد ه ‏کردن الگوریتم ها تفاوتی ندارند. بنابراین زمانی که یک زبان برنامه نویس را یاد گر فتید، می تو انید از تجربه خود در الگوریتم ها و یا حتی کد زبان قبلی در زبان جدید نیز استفاده کرده ‏و چندین زبان دیگر را نیز به سرعت یاد بگیرید.