برنامه‌نویسی

از ویکی‌پدیا، دانشنامهٔ آزاد
(تغییرمسیر از برنامه‌نویسی رایانه)
پرش به: ناوبری، جستجو

برنامه‌نویسی رایانه در فرهنگ واژه غیر متخصّصین ممکن است به تمام پروژه ساخت نرم‌افزار یا برنامهٔ رایانه‌ای گفته شود. با این همه برنامه‌نویسی تنها بخشی از فرایند توسعهٔ نرم‌افزار یا برنامه رایانه‌ای است. اهمیت، توجه و منابع اختصاص داده شده به برنامه‌نویسی، بسته به ویژگی‌های مشخص شده محصول و خواست افراد درگیر در پروژه و کاربران و در نهایت شیوهٔ انتخاب شده مهندسی نرم‌افزار متغیر است.

برنامه‌نویسی رایانه (که اغلب به طور کوتاه برنامه‌نویسی نامیده می‌شود) فرایند سوق دادن ساختار اصلی یک مسئله محاسباتی به برنامه‌ای قابل اجرا است. این کار مستلزم فعالیت‌هایی همچون تحلیل و درک مسئله است و عموماً حل چنین مسایلی منجر می‌شود به ایجاد یک الگوریتم، بازبینی نیازمندی‌های الگوریتم که شامل صحت و میزان منابع مصرفی است، پیاده‌سازی (که معمولاً به عنوان کدینگ از آن یاد می‌شود) این الگوریتم در یک زبان برنامه‌نویسی مقصد، تست کردن، اشکال زدایی، نگه داری کد منبع، پیاده‌سازی سیستم ساخت(build system) و مدیریت مصنوعات مشتق شده مانند کد ترجمه شده به زبان ماشین برنامه‌های کامپیوتری. الگوریتم اغلب تنها به شکل قابل تجزیه و تحلیل برای انسان و قابل استدلال با منطق نمایش داده می‌شود. کد منبع به یک یا چند زبان برنامه‌نویسی (مانند JavaScript ،Smalltalk ،Python ،Java ، CSS ، HTML ،#C# ،C++ ،C، و غیره) نوشته شده است.

تاریخچه[ویرایش]

موضوع دستگاه‌هایی که به دنباله‌ای از دستورالعمل‌های از قبل تعریف شده عمل می‌کند برمی‌گردد به Greek Mythology.

برنامه‌نویسی مدرن[ویرایش]

نیازهای کیفیتی[ویرایش]

هر روشی که برای برنامه نویسی به کار برود ، برنامه نهایی باید دارای تعدادی مشخصات پایه باشد. مشخصات زیر تعدادی از مهمترین آنها هستند.

  • قابلیت اطمینان : این که چقدر نتایج یک برنامه درست باشند ، به صحت طراحی الگوریتم و به حداقل رساندن اشتباهات برنامه نویسی مربوط می شود. اشتباهات برنامه نویسی شامل اشکالاتی مثل اشکال در مدیریت منابع ( مثل سرریز شدن بافر یا وضعیت رقابتی ) و اشکالات منطقی ( مثل تقسیم بر صفر یا خطاهای off-by-one ) .
  • پایایی : این که یک برنامه چگونه اشکالاتی ( نه باگ ها ) را که ممکن است پیش بیایند ، پیش بینی کرده است . این شامل حالتهایی مانند دریافت اطلاعات نادرست ، نامناسب یا غلط می شود ؛ همچنین کمبود منابعی مانند حافظه ، سرویسهای سیستم عامل یا اتصال به شبکه و سایر اشکالات مانند خطای کاربر یا اشکالات قطع برق نیز در این دسته قرار می گیرند.
  • کاربرد پذیری : ارگونومی یک برنامه : آسانی استفاده از برنامه برای شخصی که می خواهد از آن برای کار در نظر گرفته شده استفاده کند یا گاهی برای کارهای پیش بینی نشده آن را به کار برد. این مورد می تواند به تنهایی و علی‌رغم تمام موارد دیگر باعث موفقیت یا شکست شود. طیف وسیعی از عناصر متنی ، تصویری و گاهی سخت افزاری وجود دارند که می توانند باعث ارتقای وضوح ، درک ، پیوستگی ، کامل بودن واسط کاربری برنامه شوند.
  • قابلیت انتقال : طیف سخت افزارها و سیستم عاملهایی که کد منبع برنامه را بتوان روی آنها با مترجم یا مفسر اجرا کرد . این قابلیت بستگی به تفاوت در تسهیلاتی دارد که سیستمهای مختلف از نظر منابع سخت افزاری و سیستم عاملها برای برنامه نویسی ارائه می کنند. همچنین رفتار پیش بینی شده سخت افزارها و سیستم های عامل ، و در دسترس بودن مترجم ها ( و منابع کتابخانه ای ) اختصاصی در آن سیستمها برای کد منبع موجود نیز مهم است.
  • نگهداشت پذیری : این که سازندگان و ارتقا دهندگان فعلی برنامه یا افراد دیگری در آینده بتوانند به راحتی ارتقاها یا تغییراتی در برنامه انجام دهند تا خطاها و حفره های امنیتی را رفع کنند یا بتوانند آن را برای محیط جدیدی تطبیق دهند. در این مورد تلاش مناسب اولیه [۱] در ایجاد برنامه است که نقش عمده ای بازی می کند . این خاصیت ممکن است تاثیر خیلی زیادی روی کاربر نهایی برنامه نداشته باشد ولی در بلند مدت برای سرنوشت یک برنامه خیلی مهم است.
  • کارآیی / عملکرد :اندازه گیری منابع سیستمی مورد نیاز برای یک برنامه ( زمان پردازنده ، فضای حافظه ، وسایل کند مثل دیسکها ، پهنای باند شبکه و موارد دیگری مثل تعامل با کاربر ) : هر چقدر کمتر ، بهتر . این خاصیت همچنین شامل مدیریت صحیح منابع مانند پاک کردن فایلهای موقت و از بین بردن نشتی های حافظه نیز می شود.

خوانایی کد منبع[ویرایش]

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

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

پیروی از یک سبک برنامه نویسی منسجم معمولاً به خوانایی کمک می کند ؛ اگر چه خوانایی چیزی بیش از فقط سبک برنامه نویسی است. عوامل زیادی که معمولاً دخالتی در توانایی رایانه برای ترجمه مناسب و اجرای بهتر برنامه ندارند ، به خوانایی کمک می کنند . بعضی از این عوامل اینها هستند :

  • بلوک بندی متفاوت ( فاصله سفید )
  • یادآورها
  • تکه تکه کردن نوشته های طولانی
  • قواعد نامگذاری برای اشیا ( مثل متغیر ها ، کلاسها ، روالها و غیره )

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

زبانهای برنامه نویسی دیداری متعددی با این منظور توسعه داده شده اند تا بتوانند از روشهای غیر سنتی برای ارائه کد و تصویر استفاده کنند. محیطهای یکپارچه توسعه نرم‌افزار (IDE ها) می خواهند تا تمام این گونه کمکها را به شکل یک پارچه ارائه کنند. تکنیکهایی برای بازسازی کد می تواند خوانایی را افزایش دهد.

پیچیدگی الگوریتمی[ویرایش]

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

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

روشها[ویرایش]

قدم اول در فرایند توسعه بیشتر نرم‌افزارها به شکل معمول شامل بررسی نیازمندی ها ، سپس آزمایش برای تشخیص الگوی متغیر ها ، اجرا و سپس حذف خرابی ها ( اشکال زدایی ) است. راههای مختلفی برای رسیدن به هر کدام از این وظایف وجود دارند . یک راه پرطرفدار برای تحلیل نیازمندی ها تحلیل مورد کاربردی است. بسیاری از برنامه نویسان از شکل توسعه چابک نرم‌افزاری استفاده می کنند ؛ در این روش مراحل مختلف توسعه نرم‌افزار به شکل چرخه های کوتاه با هم ترکیب می شوند به طوری که هر کدام از این چرخه ها فقط چند هفته طول بکشند . این درمقابل روش معمول است که ممکن است چند سال زمان ببرد. روشهای خیلی زیادی برای روند توسعه برنامه ها وجود دارند.

محبوب‌ترین زبان[ویرایش]

تعیین اینکه محبوب‌ترین زبان برنامه‌نویسی مدرن کدام است کار بسیار مشکلی است. بعضی از زبان‌ها در کاربردهای خاصی محبوب است و بعضی دیگر مرتباً در نوشتن کاربردهای گوناگون استفاده می‌شود. روش‌های اندازه‌گیری محبوبیت زبان شامل موارد زیر می‌باشد: شمردن تعداد آگهی‌های اشتغال و توجه به یک زبان، تعداد کتاب‌های آموزشی فروخته شده در مورد یک زبان، تخمین تعداد خطوط کد نوشته شده در یک زبان

اشکال زدایی[ویرایش]

اشکال زدایی وظیفه بسیار مهمی در فرایند توسعه نرم‌افزار می‌باشد، زیرا یک برنامه غلط می‌تواند پیامدهای مهمی برای کاربر خود داشته باشد. بعضی از زبان‌ها بیشتر در معرض برخی اشتباهات می‌باشند، به خاطر خصوصیاتشان نیاز به بررسی بیشتر کامپایلر نسبت به زبان‌های دیگر ندارند.

کاربرد زبان برنامه‌نویسی[ویرایش]

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

نمونه یک برنامه[ویرایش]

یک برنامهٔ ساده در زبان برنامه‌نویسیBasic که از ساده‌ترین زبان‌های برنامه‌نویسی است می‌تواند به شکل زیر باشد:

 REM MY FIRST TRY TO COMMAND THIS MACHINE TO DO WHAT I LIKE
 PRINT "HELLO NEW WORLD!"
 END

سطر نخست که با واژه کلیدی "REM" آغاز شده و از سوی برنامهٔ واسط درنظر گرفته نمی‌شود و تنها برای نگاه داشتن یک توضیح یا مانند آن برای خود برنامه‌نویس است. سطر دوم با واژه کلیدی "PRINT" به دستگاه فرمان می‌دهد تا نوشته "HELLO NEW WORLD!" ("سلام دنیای نو!") را روی نمایشگر بنویسد (چاپ کند). سطر آخر پایان فرامین و برنامه را به ماشین اطلاع می‌دهد.

پس از نوشتن یک برنامه مانند بالا، برنامهٔ مترجم (در اینجا Basic) دستورها را تبدیل به فرامینی می‌کند که لایه زیرین، که ممکن است همان سخت‌افزار باشد، می‌تواند آنها را اجرا کند.

برای راحت تر شدن کدنویسی(برنامه نویسی) از نرم‌افزارهای مختلفی وابسته به زبان ان استفاده می کنند به عنوان مثال برای کدنویسی به زبان c# از نرم‌افزار visual studio, sql server... استفاده می شود.

پارادایم‌ها[ویرایش]

مقاله اصلی: پارادایم برنامه‌نویسی

زبان‌های برنامه‌نویسی گوناگون براساس قابلیت‌های درنظر گرفته شده از شیوهٔ خط‌های مختلف استفاده می‌کنند. موارد ریزتری مانند چگونگی برخورد با نیازهای پشت پردهٔ ماشین مانند مدیریت حافظه و مدیریت زباله نیز در زبان‌های مختلف متفاوت است. علاوه بر این‌ها، مفاهیمی متفاوت از (اجرای) یک برنامه تصور شده‌اند که پارادایم یا الگو نام دارند.

زبانهای برنامه نویسی[ویرایش]

مقاله اصلی : زبان برنامه نویسی

زبانهای متعدد برنامه نویسی وجود دارند که هر کدام از آنها سبکهای خاصی را پشتیبانی می کنند . انتخاب زبان برنامه نویسی مورد نظر بر اساس ملاحظات متعددی صورت می گیرد : مانند سیاست شرکت ، مناسب بودن برای وظیفه در نظر گرفته شده ، موجود بودن بسته های برنامه از پیش اماده شده یا نظرات شخصی . به شکل ایده‌آل مناسب ترین زبان برنامه نویسی برای کاربرد مورد نظر که در دسترس باشد ، انتخاب می شود . موضوعاتی که باعث می شوند از این وضعیت ایده‌آل فاصله گرفته شوند شامل موضوعاتی مانند یافتن تعداد کافی برنامه نویسان ماهر که بتوانند تیم کاری تشکیل دهند ، در دسترس بودن کمپایر های مناسب برای زبان مورد نظر ، کارآیی برنامه های نوشته شده با زبان مورد نظر ، است .

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

آلن داونی در کتاب " چگونه به شکل یک استاد رایانه فکر کنیم " می نویسد :

جزئیات در زبانهای برنامه نویسی مختلف متفاوت به نظر می رسند ولی تعدادی از ساختارهای اساسی در همه زبانهای برنامه نویسی یکسان هستند :

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

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

برنامه نویس ها[ویرایش]

مقاله اصلی : برنامه نویس

همچنین ببینید : توسعه دهنده نرم‌افزار ، مهندس نرم‌افزار

برنامه نویسان رایانه کسانی هستند که نرم‌افزار های رایانه را می نویسند . معمولاً شغل آنها شامل موارد زیر است :

منابع[ویرایش]

  1. "Programming 101: Tips to become a good programmer - Wisdom Geek". Wisdom Geek (in en-US). 2016-05-19. Retrieved 2016-05-23. 
  2. James L. Elshoff, Michael Marcotty, Improving computer program readability to aid modification, Communications of the ACM, v.25 n.8, p.512-521, Aug 1982.
  • Programming: Principles and Practice Using C++ by Bjarne Stroustrup, Publisher: Addison-Wesley Professional, 2008
  • Faster Smarter Beginning Programming by Jim Buyens, Publisher: Microsoft Press, 2002
  • Java How to Program, by Harvey M. Deitel and Paul J. Deitel, Publisher: Prentice Hall, 2007
  • Programming ASP.NET 3.5 by Jesse Liberty, Dan Maharry, and Dan Hurwitz, Publisher: O'Reilly Media, Inc. , ۲۰۰۹

جستارهای وابسته[ویرایش]

پیوند به بیرون[ویرایش]