برنامهنویسی رایانه ای و کد نویسی چیست؟
برنامه نویسی رایانه کد
برنامهسازی رایانهای[۱] یا برنامهنویسی رایانهای (به انگلیسی: computer programming) همان فرآیند طراحی و ساخت یک برنامه رایانهای اجراپذیر برای بهدستآوردن یک نتیجه رایانشی خاص، یا انجام یک عمل خاص می باشد. برنامهنویسی شامل عملهایی مثل: تحلیل، ایجاد الگوریتمها، رخنمانگاری دقت الگوریتمها و مصرف منابع و پیادهسازی آن الگوریتمها به یک زبان برنامهنویسی انتخاب شدهاست (که معمولاً به آن کدگذاری (coding) گفته میشود).[۲][۳] کد منبع یک برنامه به یک یا بیشتر زبان نوشته میشود که این زبان برای «برنامهنویس» قابل فهم است (به جای کد ماشین که به صورت مستقیم توسط واحد پردازش مرکزی اجرا میشود). هدف از برنامهنویسی، پیداکردن ترتیبی از دستورالعملها است که انجام یک عمل را در یک رایانه، معمولاً برای حلکردن یک برنامه داده شده، خودکارسازی میکند (که میتواند تا حد یک سیستمعامل پیچیده باشد). بنابراین، یک برنامهنویسی حرفهای نیاز به مهارت در چندین موضوع متفاوت دارد، که شامل دانش دامنه کاربردی، الگوریتمهای خاص
تاریخچه
دستگاههای قابل برنامهریزی قرن هاست که وجود دارند. در اوایل قرن نهم میلادی، یک ترتیب سنج موسیقی قابل برنامهریزی توسط برادران فارسی بانو موسی اختراع شد که یک دستگاه پخش خودکار فلوت را در کتاب دستگاههای مبتکر توصیف کرد. در سال ۱۲۰۶میلادی، مهندس کوردالجزاری یک دستگاه درام قابل برنامهریزی را اختراع کرد که در آن میتوان از اتوماتیک مکانیکی موسیقی برای پخش ریتمهای مختلف و الگوهای طبل، از طریق میخها و کامپها استفاده کرد. در سال ۱۸۰۱، با تغییر دادن برنامه «ژاکارد»، بافندگی ژاکارد میتواند بافتهای کاملاً متفاوتی تولید کند – مجموعه ای از کارتهای کارتن با سوراخهایی که در آنها وجود دارد.
الگوریتمهای رمزگشایی و رمزگذاری و تحلیل رمز کد نیز قرنها وجود داشتهاست. در قرن نهم میلادی، ریاضیدان عرب آل کندی، الگوریتم رمزنگاری را برای رمزگشایی کد رمزگذاری شده، در «دست نوشته در رمزگشایی پیامهای رمزنگاری» شرح داد. او اولین توصیف رمز پزشکی را با استفاده از آنالیز فراوانی، اولین الگوریتم رمزگشایی کد ارائه داد.
اولین برنامه رایانه ای بهطور کلی به سال ۱۸۴۳ مربوط میشود، هنگامی که Ada Lovelace، ریاضیدان، الگوریتمی را برای محاسبه دنباله ای از اعداد Bernoulli منتشر کرد، که قرار است توسط موتور تحلیلی چارلز بابیج انجام شود.
در دهه ۱۸۸۰ هرمان هالریت مفهوم ذخیره دادهها را به صورت قابل خواندن با دستگاه اختراع کرد. بعداً یک کنترل پنل (افزونه) به Tabulator Type 190 خود که به آن اضافه شده بود اجازه داد که برای مشاغل مختلف برنامهریزی شود و تا اواخر دهه ۱۹۴۰ تجهیزات ضبط واحدی مانند IBM 602 و IBM 604 توسط پنلهای کنترل به روش مشابهی برنامهریزی شدند. اولین کامپیوترهای الکترونیکی با این حال، با مفهوم رایانههای برنامه ذخیره شده معرفی شده در سال ۱۹۴۹، هر دو برنامه و دادهها به همان شیوه در حافظه کامپیوتر ذخیره و دستکاری شدند.
کد ماشین زبان برنامههای اولیه بود که در مجموعه دستورالعملهای دستگاه خاص، غالباً به صورت دودویی نوشته شدهاست. به زودی زبانهای مونتاژ ایجاد شد که به برنامهنویس اجازه میدهد تا دستورالعملها را در قالب متن مشخص کند (به عنوان مثال، ADD X، TOTAL)، با اختصار برای هر کد عملیات و نامهای معنی دار برای مشخص کردن آدرسها است. اما از آنجا که یک زبان مونتاژ چیزی بیش از یک نشان دیگر برای یک زبان ماشین نیست، هر دو ماشین با مجموعههای مختلف دستورالعمل نیز دارای زبانهای مونتاژ متفاوت هستند.
زبان های سطح بالا روند تهیه یک برنامه را سادهتر و قابل فهم تر و محدودتر به سختافزار زیرین میکردند. FORTRAN، اولین زبان سطح پرکاربرد برای اجرای عملی، در سال ۱۹۵۷ منتشر شد [۱۰] و بسیاری از زبانهای دیگر به زودی توسعه یافتند – به ویژه، COBOL با هدف پردازش دادههای تجاری و لیپ برای تحقیقات رایانه است.
برنامهها بیشتر با استفاده از کارت های پانچ شده یا نوار کاغذی وارد میشدند. برنامه عصر رایانه را در عصر کارت پانچ ببینید. در اواخر دهه ۱۹۶۰، دستگاههای ذخیرهسازی داده و پایانههای رایانه به اندازه کافی ارزان شدند که میتوان برنامهها را با تایپ کردن مستقیم به رایانهها ایجاد کرد. ویرایشگرهای متن (خود برنامهها) ساخته شدهاند که اجازه میدهد تغییرات و اصلاحات بسیار آسانتر از کارت های سوراخ شده انجام شود.
برنامهنویسی مدرن
هر روشی که برای چگونگی اشکالاتی (نه باگها) را که ممکن است پیش بیایند، پیشبینی کردهاست. این شامل حالتهایی مانند دریافت اطلاعات نادرست، نامناسب یا غلط میشود؛ همچنین کمبود منابعی مانند حافظه، سرویسهای سیستم عامل یا اتصال به شبکه و سایر اشکالات مانند خطای کاربر یا اشکالات قطع برق نیز در این دسته قرار میگیرند.
- کاربرد پذیری ارگونومی یک برنامه: آسانی استفاده از برنامه برای شخصی که میخواهد از آن برای کار در نظر گرفته شده استفاده کند یا گاهی برای کارهای پیشبینی نشده آن را به کار برد. این مورد میتواند به تنهایی و علیرغم تمام موارد دیگر باعث موفقیت یا شکست شود. طیف وسیعی از عناصر متنی، تصویری و گاهی سختافزاری وجود دارند که میتوانند باعث ارتقای وضوح، درک، پیوستگی، کامل بودن واسط کاربری برنامه شوند.
- قابلیت حمل: طیف سختافزارها و سیستم عامل هایی که کد منبع برنامه را بتوان روی آنها با مترجم یا مفسر اجرا کرد. این قابلیت بستگی به تفاوت در تسهیلاتی دارد که سیستمهای مختلف از نظر منابع سختافزاری و سیستم عاملها برای برنامهنویسی ارائه میکنند. همچنین رفتار پیشبینی شده سختافزارها و سیستمهای عامل و در دسترس بودن مترجمها (و منابع کتابخانهای) اختصاصی در آن سیستمها برای کد منبع موجود نیز مهم است.
- نگهداشت پذیری: این که سازندگان و ارتقا دهندگان فعلی برنامه یا افراد دیگری در آن بتوانند به راحتی ارتقاها یا تغییراتی در برنامه انجام دهند تا خطاها و حفرههای امنیتی را رفع کنند یا بتوانند آن را برای محیط جدیدی تطبیق دهند. در این مورد تلاش مناسب اولیه[۴] در ایجاد برنامه است که نقش عمدهای بازی میکند. این خاصیت ممکن است تأثیر خیلی زیادی روی کاربر نهایی برنامه نداشته باشد ولی در بلند مدت برای سرنوشت یک برنامه خیلی مهم است.
- کارایی / عملکرد :اندازهگیری منابع سیستمی مورد نیاز برای یک برنامه (زمان پردازنده، فضای حافظه، وسایل کند مثل دیسکها، پهنای باند شبکه و موارد دیگری مثل تعامل با کاربر): هر چقدر کمتر، بهتر. این خاصیت همچنین شامل مدیریت صحیح منابع مانند پاک کردن فایلهای موقت و از بین بردن نشتیهای حافظه نیز میشود.