برنامه نویسی

برنامه نویسی چیست ؟

برنامه نویسی چیست ؟

این روز ها افراد تعاریف مختلفی از برنامه نویسی ارائه می کنند که به نوعی همگی تا حدودی صحت دارند و از طرفی شاید هیچ کدام از این تعاریف کامل و جامع نباشند.

در اصل افراد دیدگاه شخصی خویش را از این مهارت بیان می کنند و هر یک با توجه به روش بهره برداری شخصی و منحصر بفرد خود تعریفی از این هنر خواهد داشت.

به عقیده من برنامه نویسی به معنی بهر برداری از سخت افزار برای انجام محاسبات و عملیات است.منظور از سخت افزار لزوما سیستم های کامپیوتری نیست ، بلکه به هر نوع ابزار الکترونیکی اصطلاحا سخت افزار گفته می شود.از مرتبط ترین ابزار ها با علوم کامپیوتر مانند چاپگر و اسکنر و … گرفته تا بی ربط ترین آنها مانند لوازم خانگی و …همه و همه در تعریف من از سخت افزار صدق می کنند.برای اثبات این ادعا به عبارت “برنامه های طبخ مایکروفر” یا “برنامه های شستشوی ماشین لباسشوئی” دقت بفرمائید ! بله ، چنان که مشاهده می کنید گویی این روز ها برنامه نویسی در لوازم خانگی نیز نفوذ کرده !

با توجه به تعریف ارائه شده ، برنامه نویس کسی است که با ارسال درخواست ها به سخت افزار در قالب دستور و به شیوه ای فرمایشی آنها را وادار به انجام عملیات و محاسبات مطلوب خویش می کند.خالی از لطف نیست اگر برنامه نویسی را از این دید به نوعی فرمانروائی تصور کنیم که حیطه رعایای او را تنوع وسیعی از سخت افزار ها تشکیل می دهند !

از دیدگاه دیگر می توان برنامه نویسی را تبدیل توانایی های بالقوه سخت افزار به خدمات بالفعل در نظر گرفت.مفهومی شبیه خلقت که یک سخت افزار بی جان را وادار به جنب و جوش کرده و با ایجاد یک برنامه کاربردی جهت رسیدن به کمال آن را به ابزاری مثمر ثمر تبدیل می کند.

“برترین برنامه نویس هستی پروردگار یکتاست”

امروزه برنامه نویسی در عرصه های مختلف جوامع بشری نفوذ کرده و جایگاه مهمی به خود اختصاص داده است.برای درک این مطلب بهتر است ابتدا اهداف و دستاورد های عمده ی برنامه نویسی را مرور کنیم.

شاید بتوان به صورت کلی سه هدف اصلی برای عمده ی برنامه متصور شد که عبارتند از :

  • علمی

دستاورد این نوع از برنامه ها ، دقت ، سرعت و سهولت می باشد.به عنوان مثال ماشین حساب ویندوز را در نظر بگیرید ، همه ما جمع و ضرب و تفریق و تقسیم می دانیم اما به راستی چرا از برنامه ماشین حساب استفاده می کنیم ؟!

بله کاملا درست است ، برای اینکه سریعتر ، دقیق تر و ساده تر محاسبه کنیم.به این نکته توجه داشته باشیم که شاید شرایط در کیفیت محاسبات انسانی تاثیر گذار باشد مثلا اشتباهات فردی در محاسبات در شرایط نا مساعد فکری احتمال وقوع بالایی دارند و بسیار بدیهی است اگر فردی که به واسطه ی گرفتاری شخصی دغدغه ی ذهنی دارد حاصل یک محاسبه را نادرست تشخیص دهد در صورتی که نرم افزار ها از این گونه اشتباهات مبری هستند.

البته باید به این نکته هم توجه داشت که گاهی محاسبات به حدی پیچیده هستند که عملا در زمان معقول از عهده فرد خارج خواهند بود مانند محاسبات پرتابه ها ، ژنتیک ، هواشناسی ، آمار و بعضا محاسبات عددی در ریاضیات.

از طرفی در پاره ای از موارد نفس محاسبات چندان پیچیده نیست اما وسعت نمونه آماری منجر به دشواری دستیابی به نتیجه با محاسبات فردی می شود.حال آنکه سیستم های سخت افزاری به راحتی تعداد زیادی از محاسبات را در کسری از ثانیه انجام می دهند.

  • سیستمی

دستاورد برنامه های سیستمی مدیریت ،کنترل و بهره وری ابزار است.به عنوان مثال می توان به انواع برنامه های درایور اشاره کرد که امکان بهره برداری مناسب از انواع قطعات را برای سیستم های کامپیوتری فراهم می کنند.

به عنوان نمونه ای دیگر می توان به انواع برنامه های رباتیک اشاره کرد که با کنترل سخت افزار ربات ، امکان کنترل و مدیریت آن را ایجاد می کنند.

  • تجاری

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

اتوماسیون به معنی ایجاد نرم افزار برای سیستم غیر نرم افزاری موجود می باشد.در این تعریف باید به عبارت “موجود” توجه کرد.به این معنی که در برنامه نویسی تجاری خلاقیت و نو آوری مطرح نیست بلکه صرفا شبیه سازی وجود دارد.یک سیستم عملیاتی در حال فعالیت است و مخاطبین خاص خود را دارد و تنها قرار است از حالت غیر نرم افزاری به حالت نرم افزاری تبدیل شود.

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

پس در برنامه نویسی تجاری قصد داریم با شناخت همه جانبه یک سیستم غیر نرم افزاری و با امکان سنجی مبنی بر قابلیت تولید و داشتن ارزش افزوده در صورت نرم افزاری شدن ، برنامه ای برای شبیه سازی آن سیستم در نرم افزار ایجاد کنیم.

در این فرآیند توانایی شناخت دقیق سیستم و تحلیل نیازمندی ها و عملیات آن و مدل سازی و تبدیل آنها به الگوریتم از اهمیت بسیاری برخوردار است.