Sample Sidebar Module

This is a sample module published to the sidebar_top position, using the -sidebar module class suffix. There is also a sidebar_bottom position below the menu.

Sample Sidebar Module

This is a sample module published to the sidebar_bottom position, using the -sidebar module class suffix. There is also a sidebar_top position below the search.
برنامه نویسی
programming
رایانه و گوشی هوشمند ابزاری برای حل مشکلات بوسیله اطلاعات است.

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

تمرین: یک دستورالعمل تهیه کنید تا به کسی بگویید که چگونه یک ساندویچ کره بادام زمینی درست کنید. مراحل را یکی پس از دیگری بیان کنید و دقت کنید که آنها را به ترتیب درست بیان کنید.

آسان بود؟ آیا شما تمام مراحل را به خاطر دارید؟ شاید شما فراموش کرده اید به من بگویید که از چاقو برای پخش کره بادام زمینی استفاده کنید. حالا من کره بادام زمینی را به دستان خود مالیده ام. شما یک مرحله را فراموش کردید و انجام دهنده به نتیجه درست نرسیده است! البته، شما می گویید، یک شخص آنقدر نادان نیست. اما یک کامپیوتر کاملاً گنگ است. کامپیوتر فقط کاری را که شما به آن می گویید انجام می دهد. این ممکن است باعث شود که برنامه نویسی در ابتدا ناامید کننده باشد، اما از سوی دیگر یک نقطه قوت است: اگر همه کارها را به درستی انجام دهید، می دانید دقیقاً رایانه چه کاری قرار است انجام دهد، زیرا شما آن را بیان کرده اید.
البته ، رایانه ها دستور العمل های نوشته شده روی کاغذ را درک نمی کنند. رایانه ها ماشین هستند و در ابتدایی ترین سطح، آنها مجموعه ای از سوئیچ های صفر و یک هستند - جایی که 1 نمایانگر "روشن" است و 0 نشان دهنده "خاموش". هر کاری که یک کامپیوتر انجام می دهد در ابتدایی ترین سیستم های شماره گذاری باینری اجرا می شود. اگر واقعاً می خواهید به یک رایانه بگویید چه کاری بطور مستقیم انجام شود ، باید با آن بصورت باینری صحبت کنید، به ترتیب های کدگذاری شده از 1 و 0 که به آن می گویند کدام دستورالعمل را اجرا کنید. اما این کار عملاً غیرممکن است. در عمل، ما برای انجام این کار از یک زبان برنامه نویسی استفاده می کنیم.

البته با استفاده از الگوریتم و فلوچارت مسئله ساده تر میشود:

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


همانطور که از نام آن پیداست ، یک زبان برنامه نویسی ، زبانی است که برای بیان برنامه ها ایجاد شده است. همه رایانه ها یک زبان برنامه نویسی بومی دارند که درک می کنند ، که معمولاً به عنوان کد ماشین از آنها یاد می شود. با این حال ، کد ماشین برای ما یک زبان دشوار است: از بین تعدادی از مشکلات ، به طور معمول در سیستم شماره دودویی بیان می شود ، و منحصر به فرد برای یک معماری خاص کامپیوتر است (بنابراین دو کامپیوتر مختلف می توانند به طور بالقوه از دو نسخه مختلف استفاده کنند. کد دستگاه) سایر زبان های برنامه نویسی مانند Assembly ، BASIC ، Java و C ++ برای ایجاد یک رابط بهتر بین ما ، به عنوان برنامه نویسان و رایانه ، با اجازه دادن به برنامه ها به زبانی بیان می شوند که درک آن برای ما راحت تر است و به طور بالقوه مشترک است. تعدادی از معماری های رایانه ای ، اما هنوز هم می توان آنها را به کد ماشین ترجمه کرد. برای اینکه این اتفاق بیفتد ، یک کامپیوتر قبل از اجرای آن باید برنامه هایی را که به یکی از این زبان ها نوشته شده است کامپایل یا ترجمه کند.

تألیف در مقابل تفسیر

قبل از استفاده ، یک برنامه کامپایل شده باید به کد دستگاه تغییر یابد. باینری بطور دائم ذخیره می شود. به عنوان یک قیاس ، به رمانی فکر کنید که به یک زبان نوشته شده و سپس به دیگری ترجمه شده است. به عنوان مثال ، رمان های هری پاتر به انگلیسی انگلیسی نوشته شده و متعاقباً به 67 زبان دیگر از جمله هندی ، لتونی و لاتین ترجمه شدند. در یک روش مشابه ، یک برنامه کامپیوتری را می توان (یا "ترجمه") به کد دستگاه وارد کرد ، و ممکن است به صورت بالقوه در معماری های مختلف (یا "گویش ها") از کد دستگاه برای متناسب با رایانه های مختلف وارد شود. هر ترجمه یک نسخه منحصر به فرد از برنامه خواهد بود ، به همان روشی که هر کتاب ترجمه شده نسخه ای بی نظیر از رمان اصلی است. برای قیاس بیشتر ، اگر من به اندازه کافی خوش شانس بودم که اولین رمان هری پاتر را نوشتم ، ممکن است به این دلیل باشد که من زبانی را که در آن ترجمه شده است نفهمیدم. بنابراین می توانم نسخه رمان لاتویایی را به من ارائه دهم ، و می توانم منطقاً تصور کنم که داستان مشابه انگلیسی انگلیسی را روایت می کند ، اما من نمی توانم آن را بخوانم. به همین معنا ، نسخه برنامه من که به کد ماشین سازی وارد شده است ممکن است خواندن برای من غیرممکن باشد: گفته می شود "قابل خواندن با ماشین" است ، به این معنی که کامپیوتر می تواند آن را درک کند ، اما به راحتی از آن دور نیست. قابل خواندن برای انسان

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

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

ویژگی های هر دو روش بعداً با جزئیات بیشتر مورد بحث قرار می گیرد.

سطح زبانهای برنامه نویسی

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

در اینجا نحوه اضافه کردن دو عدد در مجموعه MIPS آورده شده است:
LUI  R1, #1
LUI  R2, #2
DADD R3, R1, R2​

این فقط محاسبه 1 + 2 = 3 را انجام داد. دو خط اول عدد "1" و "2" را در حافظه کامپیوتر بارگذاری می کنند ، و دستورالعمل سوم به رایانه می گوید که مقادیر را در کنار هم جمع کرده و نتیجه را ذخیره کند.
همانطور که از مثال می بینید ، زبان اسمبلی با زبان های طبیعی کاملاً متفاوت است. زبانهای سطح بالاتر هر دو به زبانهای طبیعی نزدیک تر می شوند و روشهای کارآمدتری برای بیان دستورالعمل ها ارائه می دهند - بنابراین اجرای یک ویژگی خاص برای یک برنامه به زبان اسمبلی نیاز به کد بیشتری نسبت به اجرای همان ویژگی در یک زبان سطح بالاتر مانند C یا ++C. زبان اسمبلی در مقابل انعطاف پذیری و عملکرد نهایی، پیچیدگی و زمان توسعه بیشتری برای برنامه نویس دارد.

تکلیف خواندن: زبان اسمبلی (مقاله ویکی پدیا)

زبان های سطح بالا بیشتر شبیه به زبان طبیعی هستند و عملکردهای ریاضی به آن وارد شده اند. این زبان ها قبل از اینکه رایانه آنها را درک کند ، نیاز به ترجمه بیشتری دارند ، اما نوشتن آنها بسیار ساده تر است. برای مثال:
x= 1 + 2;

تفاوت بین زبانهای مختلف برنامه نویسی می تواند بسیار گسترده باشد. به طور سنتی ، اولین برنامه ای که یک برنامه نویس با زبان جدید می نویسد Hello World — یک برنامه ساده است که عبارت "سلام جهان!" را صادر می کند. (یا تغییر آن) برای کاربر. همانطور که از مثال های زیر مشخص خواهد شد ، حتی این کار به ظاهر ساده بسته به نوع استفاده از زبان ، می تواند به طرق مختلف بیان شود. مثلا:

در زبان برنامه نویسی C:
#include <stdio.h>
int main() {
  printf("Hello World!\n");
  return 0;
}​

در زبان بیسیک:
10 PRINT "Hello world!"
20 END​

در جاوا:
public class HelloWorld
{
  public static void main(string[] args)
  {
    System.out.println("Hello world!");
  }
} ​

در پاسکال:
program HelloWorld;

begin
  writeln('Hello World');
end.​

در پرل:
#!/usr/bin/perl
print "Hello World!\n";​

در پایتون:
print("Hello World!")​


از میان این نمونه ها ، C به عنوان "پایین ترین سطح" در نظر گرفته شده است، به این معنی که نزدیکترین کد به ماشین دستگاه است. سایر زبانها زبانهای سطح بالاتری به حساب می آیند و بنابراین (به طور کلی) به زبانهای طبیعی نزدیک هستند. برخی از پیچیدگی هایی که مشاهده می کنید، به ویژه در مورد جاوا، از نحوه ساخت برنامه ها ناشی می شود: مثلا جاوا یک زبان شی گرا است و این چیزی است که ما بعدا باید به آن بپردازیم.

تکالیف خواندن
زبانهای برنامه نویسی سطح بالا (مقاله ویکی پدیا)


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

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

منبع:Introduction to Programming/About Programming

برنامه نویسی اندروید پرواز پاراگلایدر کوهنوردی

فرم ورود

فرم ثبت نام