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

در دهه ۱۹۶۰ اولین پوستههای فرمان ساخته شدند. کاربران این پوستهها گاه مجبور بودند برای انجام امور خود، سلسلهای از دستورهای تکراری یا مشابه را در پوسته وارد کنند. کم کم به پوستهها قابلیتهایی اضافه شد که کاربر با آن میتوانست الگوی دستورهای خود را به پوسته اعلام کند و پوسته به طور خودکار دستورها را انجام میداد. این پیشرفتها منجر به ساخت اولین اسکریپتهای پوستهای شد.
در واقع اسکریپتهای اولیه برنامههای کوچکی بودند که به وسیله آنها میشد برخی وظایف تکراری و پراستفاده یا یک وظیفه طولانی را به طور خودکار انجام داد. زبانهای اسکریپتنویسی امروزه پیشرفتهای زیادی کردهاند. آنها در زمینههایی چون کنترل وظایف و پوسته، واسطهای گرافیکی کاربر، واژهپردازی، خدمتگزاران وب و خدمتگیرندههای وب استفاده میشوند.
پردازه اجازه کنترل برخی از کاربردهای نرمافزار را به برنامهنویس میدهد اما تعدادی از فرمانها و امکانات زبانهای بزرگ در این زبانها حذف شدهاند. مثلاً امکان نوشتن فایل یا پاک کردن فایلها برروی سیستم کاربر مانند زبانهای برنامهنویسی وجود ندارد. مثالهایی از این دسته عبارت است از : جاوا اسکریپت، پرل و پایتون.
اکشناسکریپت
اکشناسکریپت ActionScript زبان برنامه نویسی برای فلشپلیر میباشد که تعامل با کاربر، پردازش و نگهداری اطلاعات و غیره را در زمان اجرا به عهده دارد .AS بر پایه ECMAScript است که معمولاً به صورت بایت کد توسط compiler درون فایل ذخیره گردیده و درrun-time توسط ActionScript Virtual Machine ترجمه و اجرا میشود. AS مدل پیشرفته و قوی را از یک زبان برنامه نویس ارایه میکند که برای بسیاری از توسعه دهندگان وب و برنامه نویسان با اندکی دانش ازobject-oriented programming آشنا و راحت خواهد بود .
برنامهنویسی سمت سرور
برنامهنویسی سمت سرور روشی است که برای طراحی وب که شامل اسکریپتهای نهان درون یک کد اچتیامال میباشد استفاده میشود که نتیجه درخواست یک کاربر به سرور یک وب سایت میباشد که با کدنویسیهای سمت سرور قبل از پاسخ دادن سرور به کاربر انجام میگردد. اسکریپتها میتواند درون هر کدام از زبانهای اسکریپتی موجود تحت سرور نوشته شود. برنامهنویسی سمت سرور با نوع برنامهنویسی سمت کاربر تفاوت دارد که انواع نهان آن همچون جاوااسکریپت در مرورگر وب در سمت کاربر اجرا میشود. کدنویسی سمت سرور معمولا برای ایجاد یک واسط کاربری و محدود کردن دسترسی کاربران به پایگاههای داده یا منابع اطلاعاتی میباشد. این اسکریپتها ممکن است مشخصات کاربر را برای استفاده در سفارشی کردن پاسخ براساس مشخصات کاربر، نیازمندیهای کاربر و حقوق دسترسی کاربران، گرد آوری کنند. همچنین کدنویسی سمت سرور باعث میشود که مالک وب سایت بتواند دسترسی کاربران به کد منبع و اسکریپتهای سمت سرور را کاهش دهد که این خود ممکن است اختصاصی و یا ارزشی باشد. مشکل کد نویسی سمت سرور این است که کامپیوتر سرور وب سایت باید بیشتر منابع مجاسباتی را پیش از ارسال صفحه به کاربر برای نمایش در مرورگر وب ارائه کند. وقتی که سرور معمولا از یک راه برای مثال پروتکل FTP،HTTP داده ارائه می کد، کاربران ممکن است حق انتخاب از میان تعدادی از برنامههای سمت کاربر دارند (بسیاری از مرورگرهای وب میتوانند از هر دو پروتکل گفته شده استفاده کنند). در موارد برنامههای کاربردی خاص تر، ممکن است برنامه نویسان خودشان اقدام به نوشتن پروتکل برای سرور، کاربر و انتقال اطلاعات نمایند، که میتواند فقط میتواند توسط یکدیگر استفاده شود. برنامههایی که بر روی کامپیوتر کاربر به صورت محلی بدون ارسال یا دریافت اطلاعات از طریق شبکه میباشد سرویس گیرندههای را در نظر نمیگیرند، و به همین دلیل اعمال آن برنامههای تاثیری بر روی اعمال کامپیوترهای سرویس گیرنده ندارند.
تاریخچه
برای اولین بار در دسامبر ۱۹۹۴، Netscape یک پیاده سازی از JavaScript را به وسیله Netscape Enterprise Server برای کد نویسی سمت سرور ارائه نمود.(مدت کمی پس از ارائه شدن JavaScript برای مرورگرها بود) کدنویسی سمت سرور بعدها در اوایل ۱۹۹۵ به وسیله Fred DuFresne در طراحی (Boston MA television station (WCVB استفادهشد. و این تکنولوژی با شماره ۵۸۳۵۷۱۲ در آمریکا ثبت شد. و این حق انحصاری در سال ۱۹۹۸ منتقل شد و در حال حاضر متعلق به (Open Invention Network (OIN است. در سال ۲۰۱۰ OIN، آقای Fred DuFresne را به خاطر اعمالش در اسکریپت نویسی سمت سرور "Distinguished Invertor" نامید.
توضیح
در روزهای اول وب، کدنویسی سمت سرور به طور انحصاری توسط ترکیبی از برنامههای C و یا اسکریپتهای Perl و با پوستهای از اسکریپتهای (Common Gateway Interface(CGI انجام میشد. آن اسکریپتها توسط سیستم عامل اجرا میشدند. و نتایج آن توسط وب سرور بازتاب داده میشدند. بسیاری وب سرورهای جدید میتوانند به طور مستقیم یک خط از زبان اسکریپتی همچون ASP و PHP را به وسیله خود وب سرور و یا ماژولهای اضافه (همچون mod_perl یا mod_php)که برای وب سرورها بودند اجرا نمایند. برای مثال WebDNA شامل یک پایگاه داده نهان درون خودش است. همچنین روشی از کدنویسی(i.e، CGI یا اجرای مستقیم) میتواند برای سخت سایتهای پیچیده با چندین صفحه استفاده شود، ولی معمولا اجرای مستقیم سربار کمتری دارد که ناشی از عدم تماس با مفسرهای خارجی میباشد. وب سایتهای پویا گاهی اوقات از برنامههای سروری کاربردی تحت وب خاصی استفاده میکنند، برای مثال کتابخانه "Python "Base HTTP Server، همچنین بعضی افراد این را کد نویسی سمت سرور نمی دانند. استفاده از روش کدنویسی تحت وب پویا در هنگام طراحی، همچون ASP کلاسیک یا PHP، توسعه دهندگان باید درک عمیقی از منطق، موقت و جدایی فیزیکی بین سرویس گیرنده و سرور داشته یاشند. برای اعمال کاربران برای به راه انداختن کدهای سمت سرور، حالتی را داریم که توسعه دهندهای با ASP کلاسیک کار میکند باید به صراحت باعث شود که مرورگر کاربر یک بازخورد درخواست به وب سرور بفرستد. ایجاد این چنین فعل و انفعالاتی به آسانی باعث صرف وقت زیادی در طراحی و به وجود آورنده مقدار زیادی کد ناخوانا میشود. JSP یک زبان اسکریپتی سمت سرور میباشد.
زبانهای اسکریپتنویسی سمت سرور
ایاسپی (*.asp)
اکتیوویافپی (*.avfp)
ایاسپیداتنت (*.aspx)
سی توسط سیجیآی (*.c. *،csp)
زبان نشانهگذاری کلدفیوژن (*.cfm)
جاوا توسط جیاسپی (*.jsp)
جاوااسکریپت با استفاده از جاوااسکریپت سمت سرور (*.ssjs. *،js)
لوآ (*.lp. *،op)
پرل سیجیآی (*.cgi. *،ipl. *،pl)
پیاچپی (*.php) - اسکریپتنویسی کدباز
پایتون، برای مثال توسط جنگو (*.py)
روبی، برای مثال توسط روبی آن ریلز (*.rb. *،rbw)
اسامایکس (*.smx)
لاسو (*.lasso)
تیسیال (*.tcl)
وبدیانای (*.dna. *،tpl)
تایپاسکریپت
تایپاسکریپت زبان برنامهنویسیای است که توسط مایکروسافت توسعهداده میشود. تایپاسکریپت پیشرفتدادهشدهٔ جاوااسکریپت است و بررسی نوع قوی و شئگرایی واقعی را ذاتاً به آن زبان میافزاید. آندرس هجلزبرگ پدر سیشارپ در توسعهٔ تایپاسکریپت فعالیت داشتهاست.
جاوااسکریپت
جاوااسکریپت (به انگلیسی: JavaScript) زبان برنامه نویسی اسکریپت مبتی بر اشیاء است که توسط NetScape تولید شدهاست. این زبان، یک زبان شیگر است که بر اساس استاندارد ECMA-262 Edition 3 نوشته شدهاست.
علیرغم اشتباه عمومی، زبان جاوا اسکریت با زبان جاوا ارتباطی ندارد، اگر چه ساختار این زبان به سی پلاس پلاس(++C) و جاوا شباهت دارد؛ که این امر برای یادگیری آسان در نظر گرفته شدهاست. از همینرو دستورهای متداول مانند if, for, try..catch ,"while" و... در این زبان هم یافت میگردند.
این زبان میتواند هم به صورت ساخت یافته و هم به صورت شی گرا مورد استفاده قرار گیرد. در این زبان اشیاء با اضافه شدن متدها و خصوصیات پویا به اشیاء خالی ساخته میشوند، بر خلاف جاوا. بعد از ساخته شدن یک شی به روش فوق، این شی میتواند به عنوان نمونهای برای ساخته شدن اشیاء مشابه مورد استفاده قرار گیرد.
به علت این قابلیت زبان جاوااسکریپت برای ساختن نمونه از سیستم مناسب میباشد.
کاربرد گسترده این زبان در سایتها و صفحات اینترنی میباشد و به کمک این زبان میتوان به اشیاء داخل صفحات HTML دسترسی پیدا کرد و آنها را تغییر داد. به همین علت برای پویا نمایی در سمت کاربر، از این زبان استفاده میشود.
تاریخچه
اسکریپت را در ابتدا شخصی به نام برندان ایچ در شرکت نتاسکیپ با نام Mocha طراحی نمود. این نام بعداً به LiveScript و نهایتاً به جاوا اسکریپت تغییر یافت. این تغییر نام تقریباً با افزوده شدن پشتیبانی از جاوا در مرورگر وب Netscape Navigator همزمانی دارد. اولین نسخهٔ جاوا اسکریپت در نسخه 2.0B3 این مرورگر در دسامبر ۱۹۹۵ معرفی و عرضه شد. این نام گذاری منجر به سردرگمیهای زیادی شده و این ابهام را ایجاد میکند که جاوا اسکریپت با جاوا مرتبط است در حالی که این طور نیست. عدهٔ زیادی این کار را یک ترفند تجاری برای به دست آوردن بخشی از بازار جاوا که در آن موقع زبان جدید مطرح برای برنامه نویسی تحت وب بود میدانند..
به دلیل موفقیت عمدهٔ جاوا اسکریپت در نقش زبان نویسهای سمت کارخواه (client side scripting language) برای صفحات وب، مایکروسافت یک نسخه سازگار از این زبان را ایجاد کرد و به علت مشکلات حقوقی آن را Jscript نامید. این زبان در نسخه ۳٫۰ از مرورگر اینترنت اکسپلورر و در آگوست ۱۹۹۶ داده شد. تفاوتهای این دو زبان به حدی جزیی است که اغلب Jscript و جاوا اسکریپت به جای هم به کار میروند. هرچند که مایکروسافت در اینجا چند ده دلیل برای تفاوت Jscript با استاندارد ECMA مطرح میکند.
نتاسکیپ جاوا اسکریپت را به سازمان Ecma International برای استاندارد سازی ارسال کردهاست و نتیجه نسخهٔ استاندارد شدهای به نام ECMA Script است.
جاوا اسکریپت به یکی از زبانهای برنامه نویسی پر طرفدار در وب تبدیل شدهاست. هر چند ابتدا بسیاری از برنامه نویسان حرفهای زبان را کم ارزش تلقی میکردند چون مخاطبین آن نویسندگان صفحات وب و آماتورهای این چنینی بودند. ظهور ایجکس بار دیگر جاوا اسکریپت را در معرض توجه قرار داد و برنامه نویسان حرفهای بیشتری را به خود جذب نمود. نتیجه ازدیاد فریمورک و کتابخانههای جامعی در این زمینه، بهبود شیوههای رایج برنامه نویسی در جاوا اسکریپت و افزایش کاربرد جاوا اسکریپت خارج از وب است.
امکانات زبانی
امکانات زیر (در صورت قید نشدن) همگی مطابق استاندارد ECMA Script میباشند.
زبان امری و ساخت یافته
جاوا اسکریپت از تمامی نحو ساختاری زبان C پشتیبانی میکند. مانند گزاره (if و switch و حلقههای while و...) یک مورد استثنا تعیین حوزهٔ متغیرهاست: تعریف حوزه در حد block در جاوا اسکریپت وجود ندارد. هر چند جاوا اسکریپت ۱٫۷ با کلمهٔ کلیدی let این نوع حوزه دهی را امکان پذیر میسازد. مانند c در جاوا اسکریپت بین عبارت و گزاره تفاوت وجود دارد.
پویایی
؛ تایپ دهی پویا: مانند اکثر زبانهای نویسهای تایپ به مقدارها منسوب میگردد و نه به متغیرها. برای مثال متغیر x ممکن است به یک عدد وابسته سازی شود، و بعداً به یک رشته. جاوا اسکریپت برای تعیین تایپ شی راههای مختلفی از جمله تایپ دهی اردکی (duck typing) را دارد.
؛ تایپ دهی ضعیف: زبان جاوا اسکریپت از نظر تایپ دهی ضعیف به شمار میآید و در آن نتیجهٔ عملیاتی مانند ۵ + “۳۷”، عبارت “۵۳۷” خواهد بود. (عدد را با رشته جمع کردهاست)
؛ اشیا به دید آرایههای انتسابی: جاوا اسکیرپت تقریباً تماماً بر اساس اشیا است. اشیا، آرایههای انتسابی به همراه یک «ساختار شماتیک» هستند. نام ویژگی اشیا، کلیدهای آرایه انتسابی هستند و درواقع obj.x = ۱۰ با obj[“x”] = ۱۰ هم ارز هستند و شیوه نگارش با نقطه صرفاً یک سهولت نحوی است. ویژگیها و مقدارهایشان در زمان اجرا قابلیت تغییر اضافه و حذف دارند. همچنین میتوان روی ویژگیهای یک شی با ساختار for … in پیمایش کرد.
؛ ارزیابی در زمان اجرا: جاوااسکریپا یک تابع eval دارد که قادر است گزارههای تولید شده در یک رشته در زمان اجرا را، اجرا کند.
تابعی بودن
؛ تابعی بودن: توابع موجوداتی «درجه اول» محسوب میشوند، یعنی خود یک شی هستند. بنابراین میتوانند ویژگی داشته باشند، در آرگومانهای تابعها داده شوند و مانند هر شی دیگری با آنها رفتار شود
؛ توابع داخلی و بستارها: توابع داخلی (توابع تعریف شده داخل یک تابع دیگر) هر بار که تابع بیرونی فرا خوانده شود، ایجاد میشوند و متغیرهای توابع بیرونی تا زمانی که تابع داخلی وجود داشته باشد، وجود خواهند داشت، حتی پس از اتمام آن فراخوانی از تابع بیرونی. (مثال: اگر تابع داخلی به عنوان مقدار برگشتی تابع باشد، هنوز به متغیرهای تابع بیرونی دسترسی دارد) – این مکانیزم بستار گرفتن در جاوا اسکریپت است.
ساختار شماتیک» محوری
؛ ساختار شماتیک: جاوا اسکریپت به جای ردهها برای تعریف ویژگیهای اشیا، که شامل متدها و وراثت است از «ساختار شماتیک» استفاده میکند (پیشنمونه). امکان شبیه سازی بسیاری از امکانات رده-محور با ساختارهای شماتیک جاوا اسکریپت امکان پذیر است.
توابع در نقش سازندهٔ اشیا
برای توابع علاوه بر نقش عادی، به عنوان سازنده ی اشیا هم عمل میکنند. آوردن یک new قبل فراخوانی تابع، آن را با کلمهٔ کلیدی this وابسته سازی شده به شی جدید اجرا میکند. ویژگی prototype از تابع مورد نظر، ساختار شماتیک شی جدید را مشخص میکند.
؛ توابع در نقش متد: بر خلاف بیشتر زبانهای شی گرا تفاوتی میان تعریف تابع و متد وجود ندارد. بلکه تفاوت در زمان فراخوانی تابع است، زمانی که یک تابع به عنوان متد یک شی فراخوانده میشود کلمهٔ کلیدی this محلی آن تابع به شی مورد نظر وابسته سازی میشود.
امکانات دیگر
جاوا اسکریپت برای تامین اشیا و متدها که با آنها تعامل کند به یک محیط اجرایی (مانند مرورگر وب) نیاز دارد تا بتواند به این ترتیب با دنیای خارج ارتباط برقرار کند. همچنین برای دسترسی به سایر نویسهها (include) هم به این محیط نیازمند است (مانند تگ <script>در HTML). (البته این یک ویژگی زبانی نیست اما در عمل اغلب این طور پیاده سازی شدهاست)
؛ تعداد متغیر پارامتر (variadic): تعداد نامعینی پارامتر را میتوان به یک تابع ارسال نمود. تابع میتواند هم از طریق پارامترهای رسمی و هم از طریق شی محلی arguments به آنها دسترسی داشته باشد.
Literalهای آرایه و شی
مانند بسیاری از زبانهای نویسهای آرایهها و اشیا (که در زبانهای دیگر همان آرایههای انتسابی هستند) را میتوان با یک نحو موجز ایجاد و توصیف نمود. در واقع این شیوهٔ نگارش پایهٔ قالب دادهای جیسون هم هست.
عبارات منظم
جاوا اسکریپت به شیوهای مشابه زبان پرل از عبارات منظم پشتیبانی میکند که نحوی قدرتمند و موجز را به شکلی فراتر از توابع پیش ساخته برای کار با رشتهها، فراهم میکند.
نظام تایپ دهی
انواع زیر جزو انواع دادههای قابل دسترس در زبان جاوا اسکریپت است. در استاندارد ECMA انواع دیگری هم تعریف شده که صرفاً داخلی است و برای پیاده سازی است.
تعریف نشده: این تایپ فقط یک مقدار با نام undefined دارد و متعلق به تمام متغییرهای مقدار دهی نشدهاست
نوع تهی: نوع تهی هم فقط یک مقدار دارد با نام null
نوع دودویی: نمایندهٔ یک مقدار منطقی است و دو مقدار true و false را میپذیرد.
نوع رشته: در بر گیرندهٔ تمام رشتههای متناهی از ۰ یا بیشتر عنصر ۱۶ بیتی بدون علامت است. این عناصر با اندیسهای نامنفی قابل دسترسی هستند. طول رشته تعداد عناصر داخل آن و طول رشتهٔ تهی برابر ۰ است.
زمانی که رشته حاوی متن واقعی باشد هر عنصر به عنوان یک واحد UTF-16 در نظر گرفته میشود (مستقل از این که شیوهٔ واقعی نگه داری رشته چه باشد). تمام عملیات بر روی رشتهها آنها را به عنوان اعداد صحیح بدون علامت در نظر میگیرند و تضمین کنندهٔ تولید رشته به حالت normalize شده نیست و تضمینهای خاص زمانی هم ندارد. علت این تصمیم گیری سادگی در پیاده سازی ذکر شدهاست.
نوع عدد: نوع عدد در جاوا اسکریپت مطابق با استادارد IEEE برای اعداد شناور دودویی است (با اندکی تفاوت).
نوع شی: شی در جاوا اسکریپت یک مجموعه بدون ترتیب از ویژگیها است. هر ویژگی میتواند داخلی، فقط-خواندنی، غیر قابل حذف، و غیر قابل پیمایش باشد (یا ترکیبی از اینها یا هیچ کدام)
تبدیلات خودکار
این زبان دارای تبدیلات خود کار بین این انواع دادهای است.
زمانی که بخواهد یک if را ارزیابی کند یا از عملگرهای منطقی ! و && و || استفاده شود، تبدیل به نوع دودویی را انجام میدهد. مقادیر ۰ و ۰- و NaN به false و سایر مقادیر عددی به true نگاشت میگردد. همچنین رشتهٔ تهی false و سایر رشتهها true در نظر گرفته میشود. انواع شی و تابع true و undefined و null هم false در نظر گرفته میشود.
زمانی که یکی از عملوندهای عملگر + رشته باشد، تبدیل به رشته صورت میگیرد، مانند ۵ + “۳۷” که میشود “۵۳۷”
عملگرهای دیگری عددی (جز جمع) منجر به تبدیل به عدد میگردد مانند ۳ – “۵۷” که مقدار عددی ۳۴- را به دست میدهد.
ویامالاسکریپت
زبان وی-ام-ال اسکریپت یک گویش یا مشتق از زبان جاوا اسکریپت میباشد که برای صفحات وی-ام-ال استفاده میشود که قسمتی از پروتکل برنامههای بیسیم و رادیویی میباشد.
وی-ام-ال اسکریپت یک سند مشتری محور میباشد و خیلی به جاوا اسکریپت شباهت دارد.دقیقا شبیه جاوا اسکریپت، وی-ام-ال اسکریپت برای وظایفی همچون صحت ورودیها، ساختن پیغامهای خطا و جعبههای محاورهای دیگر استفاده میشود.
وی-ام-ال اسکریپت مبتنی بر ای-سی-ام-ای اسکریپت(سند انجمن سازنده کامپیوترهای اروپا) میباشد که نسخه استاندارد شده جاوا اسکریپت میباشد. بنابراین نحو وی-ام-ال اسکریپت بسیار شبیه جاوا اسکریپت میباشد.
عمده تفاوت بین جاوا اسکریپت و وی-ام-ال اسکریپت این است که کد جاوا اسکریپت میتواند در صفحات اچ-تی-ام-ال مورد استفاده قرار گیرد.از آن جایی که همیشه درون یک فایل جدا از صفحات وی-ام-ال قرار دارد. آدرسها برای برگرداندن کد واقعی وی-ام-ال به سند وی-ام-ال.
ویبیاسکریپت
VBscript یک زبان رایانهای فعال است که توسط شرکت مایکروسافت توسعه یافتهاست. ترکیبات این زبان از تغییرات محدودی از زبان برنامه نویسی ویژوال بیسیک برگرفته شدهاست.
VBscript به صورت معمولی بر روی همه ویندوزهای انتشار یافته توسط مایکروسافت از ویندوز ۹۸ تا حالا نصب شدهاست. براساس تنظیمات و اهداف وسایلی که اجرا شده بر روی ویندوز CE ممکن است این برنامه شامل ویندوز CE نشود و سود این برنامه برای مدیران ویندوز برای جستجو کردن یک ابزار اتوماتیک است که از دسته زبانهای برنامه سازی توسعه یافته اولیه اواخر سال ۱۹۷۰ قوی تر و پربازده تر باشد.
VBscript باید با یک فضای استاندارد میزژیهایی شبیه کنترل سندهای مایکروسافت.
تاریخچه
VBscript به عنوان قسمتی از تکنولوژیهای نمایش ویندوز به کار گرفته شد. چیزی که هدفش در ابتدا برای توسعه وب در سال ۱۹۹۶ ارسال و منتشر شد، در طول یک دوره دو ساله VBscript و JVscript از ورژن ۱٫۰ به ورژن ۲٫۰ ارتقاء پیدا کردند و بعد از آن زمان مدیران سیستمها به این فکر افتادند که از این زبان استفاده کنند. در ورژن ۵٫۰ دستورالعملهای VBscript با ویژگیهایی نظیر توضیحات منظم، کلاسها، حالتها (مقدار/ اجرا/ اجرای عمومی) تابع برای سنجش، اجرای دستورهایی که توسط یک ویرایش گر دیگر ساخته شدهاست، یک اشاره گر دستور العملها مثل Getref()، پخش شده کمکهای کامپیوتر، رشد پیدا کردهاند.
در ورژن ۵٫۵ (Submatches)ها برای کلاس کلاس توضیحات منظم در VBscript اضافه شدهاست، که در نهایت به VBscript اجازه میدهد که تألیفاتی را سند کند که گروههای توضیحاتی را در درون خود تسخیر کند. این پیشرفت قبلاً فقط در JVscript از خانواده محصولات مایکروسافت ممکن بود. از سال ۲۰۰۸ تا حالا هیچ دستورالعمل جدیدی به نام VBscript اضافه نشدهاست. بطوری که توسط ویندوز powershell جایگزین شدهاست.
به علاوه کمکها در ادامه با مقدار کد نوشته شده در برنامه وظایف خود را ادامه میدهند به خاطر اینکه آنها به عنوان یک ابزاری مؤثر برای بعضی وظایف باقی میمانند.
ماشین زبان به طور مستمر توسط تیم مهندسی نگهداری مایکروسافت نگهداری شدهاست. چیزی که برای رفع خطاها و خدمات امنیتی قابل دسترسی است.
وقتی استفادهها در اینترنت اکسپلورر مایکروسافت به کار گرفته شده VBscript در دستورالعملها به JVscript شبیه میشود به عنوان یک زبان برای نوشتن دستورالعملهایی که برای صفحات HTML شامل شدهاند و متقابلاً با مدل شیءگرایی اسناد صفحات DOM که به تنهایی برای انجام وظایفی در HTML ممکن نیست. نمونههای دیگر از مرورگرها firebox و opera هستند که برای پشتیبانی VBscript ساخته نشدهاند. این به این معناست که ارتقاء دهندههای مرورگرها برای ارتقاء مرورگرها از زبان JVscript استفاده میکنند. در کنار کاربران وب، VBscript همچنین برای پردازش سرور صفحات وب استفاده میشود که این مسئله برای صفحات فعال سرور مایکروسافت ASP بسیار قابل توجهاست. ماشین ASP و کتابخانه تایت و vbscript.dll,asp.dll برای اجرای اسناد VBscript که جا شده در یک صفحه ASP مشمول تبدیل کنندههای ٪> و <٪ است. این یک مثال است از یک صفحه ASP با VBscript که فرمت یک زمان ۲۴ ساعته را نشان میدهد. همچنین VBscript میتواند برای تولید کاربردهایی که مستقیماً بر روی ویندوزهای کامپیوترهای شخصی مایکروسافت اجرا میشوند مورد استفاده قرار گیرد.
سادهترین مثال از آن یک سند است که استفاده فضای میزان ویندوز را میسازد. یک مثال از سند برای بالا آمدن به تنهایی فایل از راه گسترش فایل VBS است.
این سند میتواند در دو راه مطلوب شده باشند:
wscript. exe استفاده شده برای نمایش خروجی و ورودی را حول یک GUI دریافت کند. مثل بستههای دیالوگی و ورودی
cscript. exe استفاده در محیط ویرایش دستورات VBscript.
فایلهای vbs میتوانند دو نوع فایل ویرایشی را شامل شده باشند:
فایلهای wsf: فایلهایی که بعد از XML معمول شد.
فایلهای hta: فایلهایی که بعد از HTML معمول شد.
فایلهای wsf میتوانند فایلهای vbs چندگانه را شامل شوند. در نتیجه فایلهای wsf معناهایی برای استفاده مجدد از کدها را مهیا میکنند:
میتوانیم یک کتابخانهای از کلاسها یا تابعهایی در یک یا چند فایل vbs بنویسیم و آن فایلها را در یک یا چند فایل wsf برای استفاده و استفاده مجدد آن تابعها در یک راه مدل شده شامل کنیم. مورد استفاده دیگر HTML در کاربردهای HTML و HTA است. در یک HTA، HTML برای ملاقات کاربران مورد استفاده قرار گرفتهاست و یک زبان ویرایش مثل HTML برای منطق برنامه مورد استفاده قرار گرفتهاست.
HTAS در درون mshta.exe اجرا میشود. چیزی که یک فضای مورد اعتماد تولید شده توسط اینترنت اکسپلورر است. محدودیتها برای اجرای کاربردها در وب یا محدوده اینترنت مثل دسترسی به فایلهای محلی یا راههای شبکهای به کار برده شدهاست. همچنین HTAS در این محیط قابل اعتماد اجرا میشود. راهنمای فعال تحقیق میتواند موضوعی برای محدوده منطقی اینترنت اکسپلورر و پیامهای خطای مربوطه باشد.
VBscript و JVscript میتوانند در یک فایل wsc برای تولید یک مؤلفه ویرایش ویندوز مورد استفاده قرار گیرد. یک کلاس ویرایش فعال که میتواند توسط کاربردهای کامپیوتری قابل اجرای دیگر طلب شده باشد. در آخر VBscript به عنوان یک زبان ویرایشی وارداتی برای بعضی کاربردهای جاداده شده تطابق داده شدهاست. مثل ملاقاتهای اپراتوری تولیدی و ملاقاتهای ماشینی بشر.
توابع و دستورالعملها
VBscript توابعی کتابخانهای و روتین را محیا کردهاست مثل تاریخ/ زمان، عملیات رشتهای، ریاضی، تقابل کاربران، خطایابی و توضیحات منظم.
به علاوه تابعها میتوانند به استفاده از فناوریهای فعال اضافه شده باشند. مدیریت سیستمی فایل، تغییر و تبدیل فایل، و عملکردهای متن در حال جریان میتوانند به سرانجام برسند با کتابخانه زمان اجرای ویرایش scrrun.dll. فایل باینری و حافظهٔ ۰ و ۱ توسط کلاس ADODB.Stream محیا شدهاست. فایلی که هم میتواند به عنوان سازنده رشته مورد استفاده قرار گیرد و هم میتواند به عنوان تبدیل کننده یک آرایهای از بایتها به یک رشته و بالعکس مورد استفاده قرار گیرد. دسترسی به پایگاه اطلاعات مقدور است در اطراف شیءهای دادهای فعال ADO و پایگاه سوخت IIS با مجوزهای معتبر و کافی توسط تابع Getobject() میتواند دستکاری شود. به علاوه، فایلهای XML و طرحها میتوانند توسط کتابخانه XML مایکروسافت دستکاری شده باشند. (msxml۳.dll ، msxml۶.dll) چیزی که میتواند از طریق XMLHTTP و شیءهای سرور XMLHTTP برای بازیابی شاخههای وب جهانی مورد استفاده قرار گیرد.
برنامهنویسی ادیبانه
برنامهنویسی ادیبانه (به انگلیسی Literate Programming) چگونگی نگارش یک برنامه رایانهای است، بطوریکه صورت و شمایل آن برنامه به شکل اسناد و متونی باشد که برای خواندن غیررسمی و غیرفنی توسط انسان (مانند خواندن متون ادبی)، مناسب باشد. این مفهوم برای اولین بار توسط دونالد کنوت، دانشمند علوم رایانه و استاد افتخاری دانشگاه استانفورد (دانشگاه)، در سال ۱۹۸۱ (میلادی) میلادی مطرح شدهاست.
در این روش متن برنامه (کد مبدا) و توضیحات به همراه هم در یک فایل مبدا ذخیره میشوند. متن اصلی برنامه و توضیحات را میتوان بطور کامل بهوسیلهٔ برنامههای کاربردی خاص، استخراج کرد.
برنامهنویسی اعلانی
برنامهنویسی اعلانی، در علوم رایانه یکی از شیوههای برنامهنویسی است که در آن منطق محاسبات بدون شرح چگونگی انجام آنها بیان میشود. برنامههای اعلانی تلاش میکنند تا با توصیف عملیات مورد نیاز برنامهها بجای توضیح چگونگی انجام عملیات، تاثیرات جانبی (side effects) درون برنامهها را کاهش و یا به کل ازمیان بردارند که از لحاظ اولویتهای عملیاتی در تناقض کامل با شیوه برنامهنویسی دستوری میباشند. زبانهای دستوری زبانهایی هستند که عملیات تحلیلی را برحسب عباراتی که در وضعیت برنامهها تغییراتی ایجاد میکنند، شرح میدهند حال آنکه زبانهای اعلانی برنامه هارابه عنوان اصول منطق محاسباتی و محاسبات را کسورات و اجزای کوچک درون فضای آن منطق میبینند.از آنجا که این زبان میتواند تا حد چشمگیری نوشتن برنامههای موازی برای رایانش موازی را آسان و ساده کند توانسته توجه زیادی را به خود معطوف سازد.
زبانهای معمول اعلانی شامل برنامهنویسی تابعی، عبارت باقاعده، برنامهنویسی منطقی میشوند.
تعریف
زبان ها و یا برنامههای اعلانی معمولاً به روشهای گوناگونی معرفی میشوند:۲
هر سبک برنامه ریزی، که دستوری نباشد.
هر برنامهای که توضیح دهد چه عملیاتی مورد نیاز است و نه اینکه به توصیف چگونگی انجام آن عملیات بپردازد.
هر نوع برنامهای که عاری از هر گونه تآثیرات جانبی (side effects) باشد.
هر زبانی که در مطابقت کامل و واضح با منطق ریاضیات باشد.
خلاصه
زبان اعلانی را میتوان به منزله چتری فرض کرد که شامل چند نمونه ساختار برنامه نویسی معروف میباشد:۳
برنامههای کاربردی(functional programming)
ابن نوع برنامهها، برنامههایی هستند که با محاسبات و تحلیلات به مانند ارزیابی توابع ریاضیاتی رفتار میکنند و از دادههای توضیحی(state)و بی ثبات(mutable) دوری میکنند. و بر خلاف برنامههای دستوری که به تغییرات وضعیت درون برنامهها تاکید دارند به کاربرد توابع تآکید میکنند.از جملهٔ این قبیل برنامهها میتوان به lips،APL اشاره کرد که بعدها نمونههای پیشرفته آن مانند Schemایجاد شد.
برنامههای منطق(logic programming)
این نوع زبان خود به سه دسته برنامههای قیدی(constraint programming)، برنامههای تحلیل داده(data flow programs)و برنامههای (domain specific) تقسیم میشود. برنامه ریزی منطق به عنوان یک سطح وسیع استفاده از منطق ریاضیات میباشد که در زمینههای تحلیل و محاسبات کامپیوتری، اثبات تئوریهای علمی، ایجاد مدل و حل مسائل، از این نوع ساختار برنامه ریزی استفاده میشود.زبانهایی چون svg،html،xsltاز نمونه زبانهای منطق به شمار میآیند.
برنامهنویسی بر پایه پیشنمونه
برنامهنویسی بر پایه پیشنمونه (به انگلیسی: Prototype-based programming) شیوهای از برنامهنویسی شئگرا است که کلاس در آن موجود نیست و رفتار استفادهٔ مجدد (که به وراثت در زبانهای بر پایهٔ کلاس شناخته میشود) توسط فرایندی از شبیهسازی اشیاء موجود انجام میپذیرد. این مدل همچنین به بدون کلاس، پیشنمونهگرا یا برنامهنویسی بر پایهٔ نمونه نیز شناخته میشود. دلگیشن (به انگلیسی: Delegation) قابلیت زبانی است که برنامهنویسی بر پایهٔ پیشنمونه را پیشتیبانی میکند.
برنامهنویسی پودمانی
برنامهنویسی پودمانی یا برنامهنویسی پیمانهای (به انگلیسی: Modular programming)، یک روش طراحی نرمافزار است برای افزایش وسعت نرمافزاری که از قسمتهای مجزایی به نام پودمان تشکیل شدهاست.
یک ماژول، تکه برنامه ای است که با یک استاندارد و قالب مشخص طراحی شده و انجام یکسری از فعالیتها را بر عهده دارد. در عوض مدیریت امکانات مورد نیاز ماژول و همچنین مدیریت بر روی خود ماژول توسط سایت انجام خواهد شد. مثلاً شما با افزودن ماژول خرید و فروش online، تمامی قابلیتهای یک سایت فروشگاهی را به سایت موجود خود خواهید افزود. در عوض ماژول جدید به دلیل ارث بردن و استفاده از قابلیتهای پایه ای سایت، چنان بر روی سایت شما عمل می نماید که گویی از ابتدا درون سایت بوده و بخشی جدا از برنامه نیست.
برنامهنویسی تابعی
برنامهنویسی تابعی (به انگلیسی: Functional programming) نوعی پارادایم برنامهنویسی است که در آن «محاسبات» به صورت ارزشیابی توابع ریاضی در نظر گرفته میشوند.
برنامهنویسی جنبهگرا
برنامهنویسی جنبهگرا روشی برای برنامهنویسی است که پس از برنامه و برای رفع مشکلات آن به وجود آمد. هدف از برنامه نویسی جنبهگرا، مستقل کردن وظایف (در قالب ماژولها) است به طوری که کمترین تداخل را در یکدیگر داشته باشند تا نهایتاً بتوان از آنها برای برنامههای دیگر است. برای مثال وظیفهٔ اهراز هویت در یک برنامه را میتوان به عنوان یک جنبه در نظر گرفت و ماژول جداگانهای برای آن ساخت تا از این پس در تمام پروژههای مشابه بتوان از آن استفاده کرد. بیشتر زبانهای برنامهنویسی، از برنامهنویسی جنبهگرا پشتیبانی خوبی به عمل میآورند. میتوان از آن جمله به جاوا و روش AspectJ اشاره کرد. برنامهنویسی جنبهگرا، ارتباط تنگاتنگ و نزدیکی با دارد ولی دو مفهوم متفاوت هستند.
برنامهنویسی دستوری
برنامهنویسی دستوری (به انگلیسی: Imperative programming) در علوم رایانه یکی از شیوههای برنامهنویسی است که در آن مراحل اجرای یک برنامه کامپیوتری قدم به قدم توسط برنامه نویس بیان میشود. این بر خلاف زبانهای اعلانی است که در آنها تنها نتیجه انجام دستورات بیان میشود. به بیان دیگر در زبانهای دستوری چگونگی اجرای برنامه بیان میشود اما در زبانهای اعلانی چیستی نتیجه بیان میشود.
به عنوان مثال اگر قصد باز کردن دری را داشته باشیم و با زبان اعلانی این را بخواهیم بیان کنیم خواهیم گفت در را باز کن اما اگر با زبان دستوری بیان کنیم خواهیم گفت بلند شو، به طرف در نردیک شو، دستگیره را بگیر و در را به طرف بیرون هل بده.
برنامهنویسی رویدادمحور
برنامهنویسی رویداد گرا یک الگوی برنامهنویسی است که در آن، روند اجرای برنامه توسط رویدادها - برای مثال، خروجی یک سنسور یا دستورهای کاربر (کلیک های موس، دکمه های کیبورد) و یا پیام های دریافتی از سایر برنامه ها یا رشته ها - تعیین می گردد.
برنامه نویسی رویداد گرا را می توان به عنوان یک تکنیک معماری نرمافزار تعریف کرد که در آن نرمافزار یک حلقه اصلی دارد که به روشنی به دو بخش زیر تقسیم می شود:
نخست، انتخاب رویداد (یا شناسایی رویداد)
و دوم، اداره کردن رویداد ها
برنامه های رویداد گرا را می توان در هر زبانی نوشت، اگرچه این کار در زبان هایی که سطح بالایی از انتزاع را فراهم می کنند، آسان تر است.
برنامهنویسی رویهای
برنامهنویسی پروسهای یک پارادایم برنامهنویسی بر پایه مفهوم فراخوانی پروسهها است. پروسه که همچنین به نامهای روال، زیرروال (سابروتین)، تابع، روش شناخته میشود، دربردارنده یک سری گامهای محاسباتی است که باید توسط رایانه اجرا شوند.
هر پروسه میتواند در هر نقطهای در طول اجرای برنامه فراخوانده شود شامل فراخوانی پروسه توسط خودش (برنامهنویسی بازگشتی) یا پروسههای دیگر.
برنامهنویسی ساختیافته
برنامهنویسی ساختیافته یک پارادایم برنامه نویسی است که در آن برنامهنویسی قدمها و روالهایی را که لازم است تا برنامه به جواب برسد، مشخص میکند. در این روش از برنامهنویسی، انجام یک روال به روالهای کوچک تر تقسیم میشود و به این ترتیب یک برنامه با شکسته شدن و به ریز برنامههای کوچک تر تقسیم شدن سعی میکند تا عملکرد مد نظر را پیادهسازی کند.
رویه ها (به انگلیسی: routines)، زیر رویه ها(به انگلیسی: subroutines)، ساختار بلوک (به انگلیسی: block structures) و حلقه های for , while در کنار سادگی آزمودن کدها و صرف نظر کردن از Goto که برنامه را به یک کلاف سردرگم (به اصطلاح برنامه نویسی: spaghetti code) تبدیل می کرد، موجب شدند تا دنبال کردن برنامه و نگه داری از آن تا حد زیادی بهبود یابد.
این پارادایم در دهه ی 1960 توسط بوهن (به انگلیسی: Böhm) و جاکوپینی (به انگلیسی: Jacopini) پدید آمد و در سال 1968 پدیده ی معروفی به نام Goto از سوی ادسخر دیکسترا زیان آور تشخیص داده شد و این پدیده ی تازه به صورت تئوری در قالب برنامه نویسی ساخت یافته ارایه شد و پس از آن توسط زبان الگول(به انگلیسی: ALGOL) به کمک ساختارهای کنترلی پشتیبانی گردید.
مثال
به عنوان مثال برای نوشتن برنامهای که قراراست اطلاعات نمرات یک محصل را بگیرد و کارنامهٔ آن را چاپ کند، زیر روالهای زیر لازم است:
زیر روالی ای برای خواندن اطلاعات ورودی
زیر روالی ای برای جمعآوری اطلاعات ورودی و محاسبهٔ معدل
زیر روالی برای چاپ اطلاعات به صورت یک جدول
زیر روالی برای اتصال به چاپگر و چاپ گزارش
هر زیر روال آنقدر کوچک میشود که برنامهنویس بتواند راحت تر کار کردن آن را درک کند ( هر زیر روال معمولاً ۳۰ خط برنامهنویسی است). به این ترتیب برنامهنویس با نوشتن هر زیر روال بخشی از برنامه را تولید میکند و برنامهنویسان مختلف میتوانند بر روی زیر روالهای مختلف کار کنند تا در نهایت به اضافه نمودن آنها به یکدیگر برنامهٔ نهایی ساخته شود.
در زبانهای ساختار یافته توابع کتابخانهای فراوانی وجود دارند که سعی میکنند به برنامهنویس در برخی از روالها کمک کنند. مثلاً برای چاپ در مثال فوق، توابع کتابخانهای برای سهولت انجام کار در این زیر روال، در زبان پاسکال، وجود دارد.
برخی از زبانهای ساخت یافته:
پاسکال
سی
بیسیک
برنامهنویسی شیءگرا
برنامهنویسی شیءگرا (به انگلیسی Object-Oriented Programming مخفف OOP) یک شیوه برنامه نویسی است که ساختار یا بلوک اصلی اجزای آن، شی ها می باشند. در واقع در این شیوه برنامه نویسی، برنامه به شیء گرایش پیدا می کند. به این معنا که داده ها و توابعی که قرار است بر روی این داده ها عمل کنند، تا حد امکان در قالبی به نام شی در کنار یکدیگر قرار گرفته، جمع بندی شده و یک واحد(شی) را تشکیل داده و نسبت به محیط بیرونِ خود، کپسوله می شوند و از این طریق، توابع بیگانه ی خارج از آن شی، دیگر امکان ایجاد تغییر در داده های درون آن شی را ندارند. به طور مثال حساب بانکی شما که شامل مشخصات فردی شما و میزان سپرده ی شما در بانک است، تشکیل یک شی را می دهند و به دلیل دارا بودن ویژگی کپسوله، امکان دستکاری در میزان سپرده یا مشخصات شما، توسط دیگران وجود ندارد. از دیگر ویژگی های برنامه نویسی شی گرا، پیچیدگی کم، هزینه کم، امکان گسترش سریع برنامه با خطای کمتر نسبت به سایر پارادیام های برنامه نویسی است.
فلسفه یی که منجر به شکل گیری ی زبان های شی گرا شد، عبارت بود از این واقعیت که نحوه ی عملکرد مغز و شیوه ی دریافت اطلاعات از محیط پیرامون و پردازش آن اطلاعات(اندیشیدن)، شیوه یی شی گراست، از همین روی می بایستی زبانی تعریف می شد که همین شیوه را مبنای کار خود قرار داده و بازتولید می کرد. و دقیقاً به همان شکل که اشیا در جهان خارج، دارای هویت و کارکرد مشخص و یگانه برای خود هستند و در عین حال با دیگر اشیا در ارتباطی تنگاتنگ و مستقیم اند، در زبان های برنامه نویسی نیز می بایستی این اصول کلی برقرار می شد. تا به این شکل، برنامه نویس بتواند با بهره گیری از زبانی که به روش اندیشیدنش، نزدیکی بیشتری دارد، شی های مختلفی را تعریف نموده، این شی ها را در ارتباط با یکدیگر قرار داده و از شی های پویای تولید شده برای حل مساله ی پیش روی استفاده نماید. امروزه اکثر زبانهای دستوری برنامه نویسی از فنون شیءگرایی پشتیبانی میکنند. زبانهایی مانند جاوا، سی++، سی شارپ، دلفی از جمله زبانهای شیءگرا هستند. حتی بسیاری از زبانهای روال گونه که ساختار برنامهها در آنها بلوکهایی با نام پروسیجر است امروزه از فنون شیءگرایی نیز پشتبانی میکنند. زبانهای سی++ و پیاچپی از این جمله هستند. هر شیء یک سری خصوصیت و قابلیت دارد، که اصطلاحاً Properties و Operation خوانده میشوند. در این روش از برنامه نویسی دید برنامه نویس به سیستم دید شخصی است که سعی مینماید به پیدا کردن اشیاء مختلف در سیستم و برقراری ارتباط بین آنها سیستم را تولید نماید. مفهوم مدیریت دیداری
مفاهیم عمده
کلاس
کلاس نوع خاصی از آرایه است که امکان ذخیره و جمع بندی تعداد زیادی المان را (که شامل داده ها و توابع هستند) برای یک شی جدید فراهم آورده و تحت یک نام مشترک ذخیره می کند. اما بر خلاف آرایه که تنها قادر به ذخیره ی داده هایی هم جنس است، کلاس می تواند داده هایی از جنس های مختلف را ذخیره نماید. به طور مثال در نظر بگیرید که می خواهیم تاریخ 13 نوامبر 2006 را که تشکیل شده از روز، ماه و سال است مورد استفاده قرار دهیم
حال در نظر بگیرید که نه فقط یک تاریخ، بلکه n تاریخ متفاوت مورد نیاز است. این بدان معنی ست که می بایستی به تعداد n بار، سه متغیر بالا، جداگانه تعریف شوند و تعریفِ تک تک و پیاپی متغیرها، نه فقط از لحاظ زمانی بسیار وقت گیر می نماید، بلکه از لحاظ میزان کد مورد نیاز نیز بسیار غیر عملی ست، چرا که هر بار می بایستی نام جدیدی برای متغیرها در نظر گرفته شود (دو متغیر متفاوت نمیتوانند هم نام باشند). در اینجاست که کلاس ها به خوبی وارد عمل می شوند. با استفاده از کلاس ها می توان متغیرهای متعدد (در مثال بالا: int day ;String month, ;int year) را زیر عنوان یک جنسیت مشترک جدید (به طور مثال هر سه را در یک کلاس با نام Date)، تعریف و جمع بندی نمود. و بعد از آن، بدون نیاز به تعریف مجدد روز، ماه و سال،از کلاس Date به میزان مورد نیاز استفاده کرد:
class Date{
int day;
String month;
int year;
}
وراثت
وراثت یا ارث بری (Inheritance) از مفاهیم اساسی برنامه نویسی شیءگراست. هر شیء یک نمونه از یک کلاس است و هر کلاس میتواند از کلاس یا کلاسهای دیگری مشتق شده باشد (خواص متدها یا رویدادهای کلاسهای دیگر را به ارث ببرد). در یک مثال ساده میتوان اتومبیلی را در نظر گرفت که برای جلوگیری از بازنویسی خواص عمومی اتومبیل شامل: چهار چرخ، متدهای حرکت چرخ، متد چرخاندن فرمان، فرمان، بدنه، در و غیره، میتوان یک کلاس پایه از اتومبیل ایجاد کرد سپس مثلاً برای اتومبیل زانتیا مدل C۵ یک کلاس جدید ایجاد کرده که خواص، متدها و رویدادهای عمومی اتومبیل را داشته باشد و فقط برای خواص، متدها و رویدادهای جدید این اتومبیل کد نوشته شود. این ویژگی باعث صرفهجویی در نوشتن کد و تا حدودی تضمین صحت کد موجود میشود. به عنوان مثال اگر کلاس پایه مشکلی داشته باشد فقط کافی است کلاس پایه تغییر داده شود و در تمامی کلاسهایی که از این کلاس پایه ویژگیای ا به ارث بردهاند این تغییر اعمال خواهد شد.
مخفیسازی
کپسوله سازی، مخفیسازی (Encapsulation)، یا لفافهبندی، به این مفهوم اشاره دارد که باید بعضی خصوصیات یا رفتارهای شیء را از دید دیگران پنهان کرد. فرض کنید شما به عنوان یک راننده میخواهید اتومبیل شخصی تان را روشن کنید و به محل کارتان عزیمت کنید سوییچ را بر میدارید، استارت میزنید و با فشار آوردن به پدالهای گاز و ترمز و چرخش فرمان و ... به محل کارتان خواهید رسید. در طول این مسیر در اتومبیل شما به عنوان یک شیء اعمال مختلفی در حال انجام بود. مثلاً لنت ترمز به دیسک چرخ برخورد میکرد و باعث کم شدن سرعت میشد یا شمعها شروع به جرقه زدن در زمانی بخصوصی میکردند. حال فرض کنید که عمل مخفی سازی وجود نداشت و شما مجبور بودید که جرقه زدن شمعها را کنترل میکردید و به سیستم سوخت رسانی در موقع لزوم دستور میدادید که سوخت را بداخل سیلندرها ارسال کند و... یا هیچگاه به مقصد نمیرسیدید! یا سالم نمیرسیدید!
عمل مخفی سازی باعث میشود که اشیاء بدون آنکه از چگونگی کارکرد یکدیگر اطلاع داشته باشند با هم کار کنند.
چندشکلی
چند ریختی(Polymorphism) چند ریختی، کمیتی است که به یک رابط امکان میدهد تا از عملیات یکسانی در قالب یک کلاس عمومی استفاده کند.عمل خاص کلاس را ذات حقیقی شیء تعیین میکند.مثال سادهای از چند ریختی، فرمان اتومبیل است. عمل فرمان اتومبیل برای تمام اتومبیلها بدون توجه به ساز و کاری که دارند، یکسان است. فرمان برای اتومبیل که به طور مکانیکی کار میکند یا با نیروی برق یا هر چیز دیگری، عمل یکسانی را انجام میدهد. بنابراین، پس از اینکه شما عملکرد فرمان را یاد گرفتید، می توانید فرمان هر اتومبیلی را کنترل کنید. همین هدف در برنامه نویسی نیز اعمال میشود. به طور کلی، مفهوم چند ریختی، اغلب با عبارت ((یک رابط، چندین روش))بیان میشود. این بدین معنی است که امکان طراحی رابط عمومی برای گروهی از عملیات مرتبط وجود دارد. چند ریختی یا چندشکلی (Polymorphism) به این معنا است که اشیاء میتوانند در موقعیتهای مختلف، رفتارهای متفاوتی بروز دهند. مثلاً یک تابع در صورتی که بر روی نمونهای از کلاس آ فراخوانی شود، رفتار ب را بروز دهد در حالی که اگر بر روی کلاس ج (که فرزند کلاس آ است) فراخوانی شود، رفتاری متفاوت انجام دهد.
انتزاع / تجرید
به این معنا است که بخشی از یک موجودیّت یک مفهوم را که میان همهٔ وارثان مشترک است، پیش تعریف کنیم. این توانایی منجر به داشتن نگاه مشابه به موجودیّتهای مشابه میگردد.
یک مثال کاربردی
در اطراف ما اشیاء زیادی وجود دارد و میتوان تمام مفاهیم موجود در طبیعت را با اشیاء تقلیل داد. مثلاً یک ماشین باربری. این ماشین یک سری خصوصیات دارد: چهار چرخ، یک پدال ترمز، یک پدال گاز، یک فرمان و یک محل بزرگ برای قرار دادن اشیاء در آن و.... این ماشین در صورتی که ما پدال گاز آن را فشار دهیم، حرکت میکند. در صورتی که فرمان آن را بچرخانیم تغییر مسیر میدهد. پس این شیء علاوه بر یک سری خصوصیات، یک سری رفتار مشخص هم به ما نشان میدهد. ولی فقط این یک ماشین نیست که این کار را انجام میدهد. تمامی ماشینها این کارها را انجام میدهند. پس میتوانیم این ماشین را 'تعریف' کنیم و بگوییم:
ماشین باربری وسیلهای است که چهار چرخ، یک گاز، یک ترمز، یک فرمان و یک محل برای حمل بار دارد و اگر پدال گاز آن فشار داده شود حرکت میکند. این تعریف این ماشین است ولی خود آن نیست. هر زمانی چنین ماشینی بخواهیم به کارخانه تولید آن میرویم و از فروشندگان میخواهیم تا با توجه به این تعریف یک ماشین به ما بدهند.
مفاهیم فوق در زبانهای برنامه نویسی شیءگرا گنجانده شدهاند. در این زبانها، اشیاء زیادی از پیش وجود دارند که برنامهنویسان میتوانند از آنها استفاده کنند.
ارتباط اشیاء
مجدداً به مثال ماشین باربری بر میگردیم و این بار، یک ماشین سواری را تعریف میکنیم. ماشین سواری شیئی است که چهار چرخ، یک ترمز، یک پدال گاز و یک صندوق عقب دارد. این تعریف به تعریف ماشین باربری بسیار شبیهاست. به عبارت دیگر ما به یک تعریف جدید میرسیم: خودرو. خودرو وسیلهای است که چهار چرخ، یک ترمز، یک پدال گاز دارد. پس از این به بعد تعریف ماشین باربری و ماشین سواری خیلی سادهتر میشود.
ماشین باربری، خودرویی است که محلی برای قرار دادن بار داشته باشد و ماشین سواری خودروییاست که صندوق عقب داشته باشد.
اگر کسی به درب کارخانه مراجعه کند و بگوید که 'خودرو' میخواهد، چیزی دریافت نمیکند. خودرو یک تعریف انتزاعی است، برای تعریف خودرو شیء وجود ندارد پس مشتری تنها میتواتند ماشین باربری یا ماشین سواری بخواهد.
کارواش را در نظر میگیریم. این کارواش خودرو را تمیز میکند و دیگر به طور جزئی عنوان نمیکند که کدام نوع خودرو را تمیز میکند. به عبارت دیگر نوع خودرو برای کارواش مهم نیست.
وقتی شخصی قصد اجاره خودرویی دارد، و میخواهد جنسی را حمل کند در هنگام تماس با متصدی کرایه ماشین میگوید: «اگر خودرو شمااز نوع باربری است، برای من ارسال کنید»، ولی اگر قصد جابجا شدن را دارد میگوید: «برای من یک ماشین سواری بفرستید.»
در زبانهای برنامه نویسی شیءگرا نیز اشیاء مختلفی وجود دارند که تعریف آنها تکمیل کننده یکدیگر است، به عبارت دیگر اشیا از یکدیگر ارث بری میکنند. برخی از تعاریف کاملاً عام است و نمیتوان از آنها نمونه شیئی ساخت و تنها تعریف هستند. به این تعاریف Interface گفته میشود.
زبان پردازهنویسی یا زبان اسکریپتنویسی، به نوعی از زبانهای برنامهنویسی گفته میشود که برای نوشتن پردازهها استفاده میشود.
پردازهها یا اسکریپتها برنامههای کوچکی هستند که بهوسیله آنها میتوان برخی وظایف تکراری و پراستفاده یا یک وظیفه طولانی را به طور خودکار انجام داد. معمولاً اینگونه وظایف به واژهپردازی در متنها مربوط میشوند.

در دهه ۱۹۶۰ اولین پوستههای فرمان ساخته شدند. کاربران این پوستهها گاه مجبور بودند برای انجام امور خود، سلسلهای از دستورهای تکراری یا مشابه را در پوسته وارد کنند. کم کم به پوستهها قابلیتهایی اضافه شد که کاربر با آن میتوانست الگوی دستورهای خود را به پوسته اعلام کند و پوسته به طور خودکار دستورها را انجام میداد. این پیشرفتها منجر به ساخت اولین اسکریپتهای پوستهای شد.
در واقع اسکریپتهای اولیه برنامههای کوچکی بودند که به وسیله آنها میشد برخی وظایف تکراری و پراستفاده یا یک وظیفه طولانی را به طور خودکار انجام داد. زبانهای اسکریپتنویسی امروزه پیشرفتهای زیادی کردهاند. آنها در زمینههایی چون کنترل وظایف و پوسته، واسطهای گرافیکی کاربر، واژهپردازی، خدمتگزاران وب و خدمتگیرندههای وب استفاده میشوند.
پردازه اجازه کنترل برخی از کاربردهای نرمافزار را به برنامهنویس میدهد اما تعدادی از فرمانها و امکانات زبانهای بزرگ در این زبانها حذف شدهاند. مثلاً امکان نوشتن فایل یا پاک کردن فایلها برروی سیستم کاربر مانند زبانهای برنامهنویسی وجود ندارد. مثالهایی از این دسته عبارت است از : جاوا اسکریپت، پرل و پایتون.
اکشناسکریپت
اکشناسکریپت ActionScript زبان برنامه نویسی برای فلشپلیر میباشد که تعامل با کاربر، پردازش و نگهداری اطلاعات و غیره را در زمان اجرا به عهده دارد .AS بر پایه ECMAScript است که معمولاً به صورت بایت کد توسط compiler درون فایل ذخیره گردیده و درrun-time توسط ActionScript Virtual Machine ترجمه و اجرا میشود. AS مدل پیشرفته و قوی را از یک زبان برنامه نویس ارایه میکند که برای بسیاری از توسعه دهندگان وب و برنامه نویسان با اندکی دانش ازobject-oriented programming آشنا و راحت خواهد بود .
برنامهنویسی سمت سرور
برنامهنویسی سمت سرور روشی است که برای طراحی وب که شامل اسکریپتهای نهان درون یک کد اچتیامال میباشد استفاده میشود که نتیجه درخواست یک کاربر به سرور یک وب سایت میباشد که با کدنویسیهای سمت سرور قبل از پاسخ دادن سرور به کاربر انجام میگردد. اسکریپتها میتواند درون هر کدام از زبانهای اسکریپتی موجود تحت سرور نوشته شود. برنامهنویسی سمت سرور با نوع برنامهنویسی سمت کاربر تفاوت دارد که انواع نهان آن همچون جاوااسکریپت در مرورگر وب در سمت کاربر اجرا میشود. کدنویسی سمت سرور معمولا برای ایجاد یک واسط کاربری و محدود کردن دسترسی کاربران به پایگاههای داده یا منابع اطلاعاتی میباشد. این اسکریپتها ممکن است مشخصات کاربر را برای استفاده در سفارشی کردن پاسخ براساس مشخصات کاربر، نیازمندیهای کاربر و حقوق دسترسی کاربران، گرد آوری کنند. همچنین کدنویسی سمت سرور باعث میشود که مالک وب سایت بتواند دسترسی کاربران به کد منبع و اسکریپتهای سمت سرور را کاهش دهد که این خود ممکن است اختصاصی و یا ارزشی باشد. مشکل کد نویسی سمت سرور این است که کامپیوتر سرور وب سایت باید بیشتر منابع مجاسباتی را پیش از ارسال صفحه به کاربر برای نمایش در مرورگر وب ارائه کند. وقتی که سرور معمولا از یک راه برای مثال پروتکل FTP،HTTP داده ارائه می کد، کاربران ممکن است حق انتخاب از میان تعدادی از برنامههای سمت کاربر دارند (بسیاری از مرورگرهای وب میتوانند از هر دو پروتکل گفته شده استفاده کنند). در موارد برنامههای کاربردی خاص تر، ممکن است برنامه نویسان خودشان اقدام به نوشتن پروتکل برای سرور، کاربر و انتقال اطلاعات نمایند، که میتواند فقط میتواند توسط یکدیگر استفاده شود. برنامههایی که بر روی کامپیوتر کاربر به صورت محلی بدون ارسال یا دریافت اطلاعات از طریق شبکه میباشد سرویس گیرندههای را در نظر نمیگیرند، و به همین دلیل اعمال آن برنامههای تاثیری بر روی اعمال کامپیوترهای سرویس گیرنده ندارند.
تاریخچه
برای اولین بار در دسامبر ۱۹۹۴، Netscape یک پیاده سازی از JavaScript را به وسیله Netscape Enterprise Server برای کد نویسی سمت سرور ارائه نمود.(مدت کمی پس از ارائه شدن JavaScript برای مرورگرها بود) کدنویسی سمت سرور بعدها در اوایل ۱۹۹۵ به وسیله Fred DuFresne در طراحی (Boston MA television station (WCVB استفادهشد. و این تکنولوژی با شماره ۵۸۳۵۷۱۲ در آمریکا ثبت شد. و این حق انحصاری در سال ۱۹۹۸ منتقل شد و در حال حاضر متعلق به (Open Invention Network (OIN است. در سال ۲۰۱۰ OIN، آقای Fred DuFresne را به خاطر اعمالش در اسکریپت نویسی سمت سرور "Distinguished Invertor" نامید.
توضیح
در روزهای اول وب، کدنویسی سمت سرور به طور انحصاری توسط ترکیبی از برنامههای C و یا اسکریپتهای Perl و با پوستهای از اسکریپتهای (Common Gateway Interface(CGI انجام میشد. آن اسکریپتها توسط سیستم عامل اجرا میشدند. و نتایج آن توسط وب سرور بازتاب داده میشدند. بسیاری وب سرورهای جدید میتوانند به طور مستقیم یک خط از زبان اسکریپتی همچون ASP و PHP را به وسیله خود وب سرور و یا ماژولهای اضافه (همچون mod_perl یا mod_php)که برای وب سرورها بودند اجرا نمایند. برای مثال WebDNA شامل یک پایگاه داده نهان درون خودش است. همچنین روشی از کدنویسی(i.e، CGI یا اجرای مستقیم) میتواند برای سخت سایتهای پیچیده با چندین صفحه استفاده شود، ولی معمولا اجرای مستقیم سربار کمتری دارد که ناشی از عدم تماس با مفسرهای خارجی میباشد. وب سایتهای پویا گاهی اوقات از برنامههای سروری کاربردی تحت وب خاصی استفاده میکنند، برای مثال کتابخانه "Python "Base HTTP Server، همچنین بعضی افراد این را کد نویسی سمت سرور نمی دانند. استفاده از روش کدنویسی تحت وب پویا در هنگام طراحی، همچون ASP کلاسیک یا PHP، توسعه دهندگان باید درک عمیقی از منطق، موقت و جدایی فیزیکی بین سرویس گیرنده و سرور داشته یاشند. برای اعمال کاربران برای به راه انداختن کدهای سمت سرور، حالتی را داریم که توسعه دهندهای با ASP کلاسیک کار میکند باید به صراحت باعث شود که مرورگر کاربر یک بازخورد درخواست به وب سرور بفرستد. ایجاد این چنین فعل و انفعالاتی به آسانی باعث صرف وقت زیادی در طراحی و به وجود آورنده مقدار زیادی کد ناخوانا میشود. JSP یک زبان اسکریپتی سمت سرور میباشد.
زبانهای اسکریپتنویسی سمت سرور
ایاسپی (*.asp)
اکتیوویافپی (*.avfp)
ایاسپیداتنت (*.aspx)
سی توسط سیجیآی (*.c. *،csp)
زبان نشانهگذاری کلدفیوژن (*.cfm)
جاوا توسط جیاسپی (*.jsp)
جاوااسکریپت با استفاده از جاوااسکریپت سمت سرور (*.ssjs. *،js)
لوآ (*.lp. *،op)
پرل سیجیآی (*.cgi. *،ipl. *،pl)
پیاچپی (*.php) - اسکریپتنویسی کدباز
پایتون، برای مثال توسط جنگو (*.py)
روبی، برای مثال توسط روبی آن ریلز (*.rb. *،rbw)
اسامایکس (*.smx)
لاسو (*.lasso)
تیسیال (*.tcl)
وبدیانای (*.dna. *،tpl)
تایپاسکریپت
تایپاسکریپت زبان برنامهنویسیای است که توسط مایکروسافت توسعهداده میشود. تایپاسکریپت پیشرفتدادهشدهٔ جاوااسکریپت است و بررسی نوع قوی و شئگرایی واقعی را ذاتاً به آن زبان میافزاید. آندرس هجلزبرگ پدر سیشارپ در توسعهٔ تایپاسکریپت فعالیت داشتهاست.
جاوااسکریپت
جاوااسکریپت (به انگلیسی: JavaScript) زبان برنامه نویسی اسکریپت مبتی بر اشیاء است که توسط NetScape تولید شدهاست. این زبان، یک زبان شیگر است که بر اساس استاندارد ECMA-262 Edition 3 نوشته شدهاست.
علیرغم اشتباه عمومی، زبان جاوا اسکریت با زبان جاوا ارتباطی ندارد، اگر چه ساختار این زبان به سی پلاس پلاس(++C) و جاوا شباهت دارد؛ که این امر برای یادگیری آسان در نظر گرفته شدهاست. از همینرو دستورهای متداول مانند if, for, try..catch ,"while" و... در این زبان هم یافت میگردند.
این زبان میتواند هم به صورت ساخت یافته و هم به صورت شی گرا مورد استفاده قرار گیرد. در این زبان اشیاء با اضافه شدن متدها و خصوصیات پویا به اشیاء خالی ساخته میشوند، بر خلاف جاوا. بعد از ساخته شدن یک شی به روش فوق، این شی میتواند به عنوان نمونهای برای ساخته شدن اشیاء مشابه مورد استفاده قرار گیرد.
به علت این قابلیت زبان جاوااسکریپت برای ساختن نمونه از سیستم مناسب میباشد.
کاربرد گسترده این زبان در سایتها و صفحات اینترنی میباشد و به کمک این زبان میتوان به اشیاء داخل صفحات HTML دسترسی پیدا کرد و آنها را تغییر داد. به همین علت برای پویا نمایی در سمت کاربر، از این زبان استفاده میشود.
تاریخچه
اسکریپت را در ابتدا شخصی به نام برندان ایچ در شرکت نتاسکیپ با نام Mocha طراحی نمود. این نام بعداً به LiveScript و نهایتاً به جاوا اسکریپت تغییر یافت. این تغییر نام تقریباً با افزوده شدن پشتیبانی از جاوا در مرورگر وب Netscape Navigator همزمانی دارد. اولین نسخهٔ جاوا اسکریپت در نسخه 2.0B3 این مرورگر در دسامبر ۱۹۹۵ معرفی و عرضه شد. این نام گذاری منجر به سردرگمیهای زیادی شده و این ابهام را ایجاد میکند که جاوا اسکریپت با جاوا مرتبط است در حالی که این طور نیست. عدهٔ زیادی این کار را یک ترفند تجاری برای به دست آوردن بخشی از بازار جاوا که در آن موقع زبان جدید مطرح برای برنامه نویسی تحت وب بود میدانند..
به دلیل موفقیت عمدهٔ جاوا اسکریپت در نقش زبان نویسهای سمت کارخواه (client side scripting language) برای صفحات وب، مایکروسافت یک نسخه سازگار از این زبان را ایجاد کرد و به علت مشکلات حقوقی آن را Jscript نامید. این زبان در نسخه ۳٫۰ از مرورگر اینترنت اکسپلورر و در آگوست ۱۹۹۶ داده شد. تفاوتهای این دو زبان به حدی جزیی است که اغلب Jscript و جاوا اسکریپت به جای هم به کار میروند. هرچند که مایکروسافت در اینجا چند ده دلیل برای تفاوت Jscript با استاندارد ECMA مطرح میکند.
نتاسکیپ جاوا اسکریپت را به سازمان Ecma International برای استاندارد سازی ارسال کردهاست و نتیجه نسخهٔ استاندارد شدهای به نام ECMA Script است.
جاوا اسکریپت به یکی از زبانهای برنامه نویسی پر طرفدار در وب تبدیل شدهاست. هر چند ابتدا بسیاری از برنامه نویسان حرفهای زبان را کم ارزش تلقی میکردند چون مخاطبین آن نویسندگان صفحات وب و آماتورهای این چنینی بودند. ظهور ایجکس بار دیگر جاوا اسکریپت را در معرض توجه قرار داد و برنامه نویسان حرفهای بیشتری را به خود جذب نمود. نتیجه ازدیاد فریمورک و کتابخانههای جامعی در این زمینه، بهبود شیوههای رایج برنامه نویسی در جاوا اسکریپت و افزایش کاربرد جاوا اسکریپت خارج از وب است.
امکانات زبانی
امکانات زیر (در صورت قید نشدن) همگی مطابق استاندارد ECMA Script میباشند.
زبان امری و ساخت یافته
جاوا اسکریپت از تمامی نحو ساختاری زبان C پشتیبانی میکند. مانند گزاره (if و switch و حلقههای while و...) یک مورد استثنا تعیین حوزهٔ متغیرهاست: تعریف حوزه در حد block در جاوا اسکریپت وجود ندارد. هر چند جاوا اسکریپت ۱٫۷ با کلمهٔ کلیدی let این نوع حوزه دهی را امکان پذیر میسازد. مانند c در جاوا اسکریپت بین عبارت و گزاره تفاوت وجود دارد.
پویایی
؛ تایپ دهی پویا: مانند اکثر زبانهای نویسهای تایپ به مقدارها منسوب میگردد و نه به متغیرها. برای مثال متغیر x ممکن است به یک عدد وابسته سازی شود، و بعداً به یک رشته. جاوا اسکریپت برای تعیین تایپ شی راههای مختلفی از جمله تایپ دهی اردکی (duck typing) را دارد.
؛ تایپ دهی ضعیف: زبان جاوا اسکریپت از نظر تایپ دهی ضعیف به شمار میآید و در آن نتیجهٔ عملیاتی مانند ۵ + “۳۷”، عبارت “۵۳۷” خواهد بود. (عدد را با رشته جمع کردهاست)
؛ اشیا به دید آرایههای انتسابی: جاوا اسکیرپت تقریباً تماماً بر اساس اشیا است. اشیا، آرایههای انتسابی به همراه یک «ساختار شماتیک» هستند. نام ویژگی اشیا، کلیدهای آرایه انتسابی هستند و درواقع obj.x = ۱۰ با obj[“x”] = ۱۰ هم ارز هستند و شیوه نگارش با نقطه صرفاً یک سهولت نحوی است. ویژگیها و مقدارهایشان در زمان اجرا قابلیت تغییر اضافه و حذف دارند. همچنین میتوان روی ویژگیهای یک شی با ساختار for … in پیمایش کرد.
؛ ارزیابی در زمان اجرا: جاوااسکریپا یک تابع eval دارد که قادر است گزارههای تولید شده در یک رشته در زمان اجرا را، اجرا کند.
تابعی بودن
؛ تابعی بودن: توابع موجوداتی «درجه اول» محسوب میشوند، یعنی خود یک شی هستند. بنابراین میتوانند ویژگی داشته باشند، در آرگومانهای تابعها داده شوند و مانند هر شی دیگری با آنها رفتار شود
؛ توابع داخلی و بستارها: توابع داخلی (توابع تعریف شده داخل یک تابع دیگر) هر بار که تابع بیرونی فرا خوانده شود، ایجاد میشوند و متغیرهای توابع بیرونی تا زمانی که تابع داخلی وجود داشته باشد، وجود خواهند داشت، حتی پس از اتمام آن فراخوانی از تابع بیرونی. (مثال: اگر تابع داخلی به عنوان مقدار برگشتی تابع باشد، هنوز به متغیرهای تابع بیرونی دسترسی دارد) – این مکانیزم بستار گرفتن در جاوا اسکریپت است.
ساختار شماتیک» محوری
؛ ساختار شماتیک: جاوا اسکریپت به جای ردهها برای تعریف ویژگیهای اشیا، که شامل متدها و وراثت است از «ساختار شماتیک» استفاده میکند (پیشنمونه). امکان شبیه سازی بسیاری از امکانات رده-محور با ساختارهای شماتیک جاوا اسکریپت امکان پذیر است.
توابع در نقش سازندهٔ اشیا
برای توابع علاوه بر نقش عادی، به عنوان سازنده ی اشیا هم عمل میکنند. آوردن یک new قبل فراخوانی تابع، آن را با کلمهٔ کلیدی this وابسته سازی شده به شی جدید اجرا میکند. ویژگی prototype از تابع مورد نظر، ساختار شماتیک شی جدید را مشخص میکند.
؛ توابع در نقش متد: بر خلاف بیشتر زبانهای شی گرا تفاوتی میان تعریف تابع و متد وجود ندارد. بلکه تفاوت در زمان فراخوانی تابع است، زمانی که یک تابع به عنوان متد یک شی فراخوانده میشود کلمهٔ کلیدی this محلی آن تابع به شی مورد نظر وابسته سازی میشود.
امکانات دیگر
جاوا اسکریپت برای تامین اشیا و متدها که با آنها تعامل کند به یک محیط اجرایی (مانند مرورگر وب) نیاز دارد تا بتواند به این ترتیب با دنیای خارج ارتباط برقرار کند. همچنین برای دسترسی به سایر نویسهها (include) هم به این محیط نیازمند است (مانند تگ <script>در HTML). (البته این یک ویژگی زبانی نیست اما در عمل اغلب این طور پیاده سازی شدهاست)
؛ تعداد متغیر پارامتر (variadic): تعداد نامعینی پارامتر را میتوان به یک تابع ارسال نمود. تابع میتواند هم از طریق پارامترهای رسمی و هم از طریق شی محلی arguments به آنها دسترسی داشته باشد.
Literalهای آرایه و شی
مانند بسیاری از زبانهای نویسهای آرایهها و اشیا (که در زبانهای دیگر همان آرایههای انتسابی هستند) را میتوان با یک نحو موجز ایجاد و توصیف نمود. در واقع این شیوهٔ نگارش پایهٔ قالب دادهای جیسون هم هست.
عبارات منظم
جاوا اسکریپت به شیوهای مشابه زبان پرل از عبارات منظم پشتیبانی میکند که نحوی قدرتمند و موجز را به شکلی فراتر از توابع پیش ساخته برای کار با رشتهها، فراهم میکند.
نظام تایپ دهی
انواع زیر جزو انواع دادههای قابل دسترس در زبان جاوا اسکریپت است. در استاندارد ECMA انواع دیگری هم تعریف شده که صرفاً داخلی است و برای پیاده سازی است.
تعریف نشده: این تایپ فقط یک مقدار با نام undefined دارد و متعلق به تمام متغییرهای مقدار دهی نشدهاست
نوع تهی: نوع تهی هم فقط یک مقدار دارد با نام null
نوع دودویی: نمایندهٔ یک مقدار منطقی است و دو مقدار true و false را میپذیرد.
نوع رشته: در بر گیرندهٔ تمام رشتههای متناهی از ۰ یا بیشتر عنصر ۱۶ بیتی بدون علامت است. این عناصر با اندیسهای نامنفی قابل دسترسی هستند. طول رشته تعداد عناصر داخل آن و طول رشتهٔ تهی برابر ۰ است.
زمانی که رشته حاوی متن واقعی باشد هر عنصر به عنوان یک واحد UTF-16 در نظر گرفته میشود (مستقل از این که شیوهٔ واقعی نگه داری رشته چه باشد). تمام عملیات بر روی رشتهها آنها را به عنوان اعداد صحیح بدون علامت در نظر میگیرند و تضمین کنندهٔ تولید رشته به حالت normalize شده نیست و تضمینهای خاص زمانی هم ندارد. علت این تصمیم گیری سادگی در پیاده سازی ذکر شدهاست.
نوع عدد: نوع عدد در جاوا اسکریپت مطابق با استادارد IEEE برای اعداد شناور دودویی است (با اندکی تفاوت).
نوع شی: شی در جاوا اسکریپت یک مجموعه بدون ترتیب از ویژگیها است. هر ویژگی میتواند داخلی، فقط-خواندنی، غیر قابل حذف، و غیر قابل پیمایش باشد (یا ترکیبی از اینها یا هیچ کدام)
تبدیلات خودکار
این زبان دارای تبدیلات خود کار بین این انواع دادهای است.
زمانی که بخواهد یک if را ارزیابی کند یا از عملگرهای منطقی ! و && و || استفاده شود، تبدیل به نوع دودویی را انجام میدهد. مقادیر ۰ و ۰- و NaN به false و سایر مقادیر عددی به true نگاشت میگردد. همچنین رشتهٔ تهی false و سایر رشتهها true در نظر گرفته میشود. انواع شی و تابع true و undefined و null هم false در نظر گرفته میشود.
زمانی که یکی از عملوندهای عملگر + رشته باشد، تبدیل به رشته صورت میگیرد، مانند ۵ + “۳۷” که میشود “۵۳۷”
عملگرهای دیگری عددی (جز جمع) منجر به تبدیل به عدد میگردد مانند ۳ – “۵۷” که مقدار عددی ۳۴- را به دست میدهد.
ویامالاسکریپت
زبان وی-ام-ال اسکریپت یک گویش یا مشتق از زبان جاوا اسکریپت میباشد که برای صفحات وی-ام-ال استفاده میشود که قسمتی از پروتکل برنامههای بیسیم و رادیویی میباشد.
وی-ام-ال اسکریپت یک سند مشتری محور میباشد و خیلی به جاوا اسکریپت شباهت دارد.دقیقا شبیه جاوا اسکریپت، وی-ام-ال اسکریپت برای وظایفی همچون صحت ورودیها، ساختن پیغامهای خطا و جعبههای محاورهای دیگر استفاده میشود.
وی-ام-ال اسکریپت مبتنی بر ای-سی-ام-ای اسکریپت(سند انجمن سازنده کامپیوترهای اروپا) میباشد که نسخه استاندارد شده جاوا اسکریپت میباشد. بنابراین نحو وی-ام-ال اسکریپت بسیار شبیه جاوا اسکریپت میباشد.
عمده تفاوت بین جاوا اسکریپت و وی-ام-ال اسکریپت این است که کد جاوا اسکریپت میتواند در صفحات اچ-تی-ام-ال مورد استفاده قرار گیرد.از آن جایی که همیشه درون یک فایل جدا از صفحات وی-ام-ال قرار دارد. آدرسها برای برگرداندن کد واقعی وی-ام-ال به سند وی-ام-ال.
ویبیاسکریپت
VBscript یک زبان رایانهای فعال است که توسط شرکت مایکروسافت توسعه یافتهاست. ترکیبات این زبان از تغییرات محدودی از زبان برنامه نویسی ویژوال بیسیک برگرفته شدهاست.
VBscript به صورت معمولی بر روی همه ویندوزهای انتشار یافته توسط مایکروسافت از ویندوز ۹۸ تا حالا نصب شدهاست. براساس تنظیمات و اهداف وسایلی که اجرا شده بر روی ویندوز CE ممکن است این برنامه شامل ویندوز CE نشود و سود این برنامه برای مدیران ویندوز برای جستجو کردن یک ابزار اتوماتیک است که از دسته زبانهای برنامه سازی توسعه یافته اولیه اواخر سال ۱۹۷۰ قوی تر و پربازده تر باشد.
VBscript باید با یک فضای استاندارد میزژیهایی شبیه کنترل سندهای مایکروسافت.
تاریخچه
VBscript به عنوان قسمتی از تکنولوژیهای نمایش ویندوز به کار گرفته شد. چیزی که هدفش در ابتدا برای توسعه وب در سال ۱۹۹۶ ارسال و منتشر شد، در طول یک دوره دو ساله VBscript و JVscript از ورژن ۱٫۰ به ورژن ۲٫۰ ارتقاء پیدا کردند و بعد از آن زمان مدیران سیستمها به این فکر افتادند که از این زبان استفاده کنند. در ورژن ۵٫۰ دستورالعملهای VBscript با ویژگیهایی نظیر توضیحات منظم، کلاسها، حالتها (مقدار/ اجرا/ اجرای عمومی) تابع برای سنجش، اجرای دستورهایی که توسط یک ویرایش گر دیگر ساخته شدهاست، یک اشاره گر دستور العملها مثل Getref()، پخش شده کمکهای کامپیوتر، رشد پیدا کردهاند.
در ورژن ۵٫۵ (Submatches)ها برای کلاس کلاس توضیحات منظم در VBscript اضافه شدهاست، که در نهایت به VBscript اجازه میدهد که تألیفاتی را سند کند که گروههای توضیحاتی را در درون خود تسخیر کند. این پیشرفت قبلاً فقط در JVscript از خانواده محصولات مایکروسافت ممکن بود. از سال ۲۰۰۸ تا حالا هیچ دستورالعمل جدیدی به نام VBscript اضافه نشدهاست. بطوری که توسط ویندوز powershell جایگزین شدهاست.
به علاوه کمکها در ادامه با مقدار کد نوشته شده در برنامه وظایف خود را ادامه میدهند به خاطر اینکه آنها به عنوان یک ابزاری مؤثر برای بعضی وظایف باقی میمانند.
ماشین زبان به طور مستمر توسط تیم مهندسی نگهداری مایکروسافت نگهداری شدهاست. چیزی که برای رفع خطاها و خدمات امنیتی قابل دسترسی است.
وقتی استفادهها در اینترنت اکسپلورر مایکروسافت به کار گرفته شده VBscript در دستورالعملها به JVscript شبیه میشود به عنوان یک زبان برای نوشتن دستورالعملهایی که برای صفحات HTML شامل شدهاند و متقابلاً با مدل شیءگرایی اسناد صفحات DOM که به تنهایی برای انجام وظایفی در HTML ممکن نیست. نمونههای دیگر از مرورگرها firebox و opera هستند که برای پشتیبانی VBscript ساخته نشدهاند. این به این معناست که ارتقاء دهندههای مرورگرها برای ارتقاء مرورگرها از زبان JVscript استفاده میکنند. در کنار کاربران وب، VBscript همچنین برای پردازش سرور صفحات وب استفاده میشود که این مسئله برای صفحات فعال سرور مایکروسافت ASP بسیار قابل توجهاست. ماشین ASP و کتابخانه تایت و vbscript.dll,asp.dll برای اجرای اسناد VBscript که جا شده در یک صفحه ASP مشمول تبدیل کنندههای ٪> و <٪ است. این یک مثال است از یک صفحه ASP با VBscript که فرمت یک زمان ۲۴ ساعته را نشان میدهد. همچنین VBscript میتواند برای تولید کاربردهایی که مستقیماً بر روی ویندوزهای کامپیوترهای شخصی مایکروسافت اجرا میشوند مورد استفاده قرار گیرد.
سادهترین مثال از آن یک سند است که استفاده فضای میزان ویندوز را میسازد. یک مثال از سند برای بالا آمدن به تنهایی فایل از راه گسترش فایل VBS است.
این سند میتواند در دو راه مطلوب شده باشند:
wscript. exe استفاده شده برای نمایش خروجی و ورودی را حول یک GUI دریافت کند. مثل بستههای دیالوگی و ورودی
cscript. exe استفاده در محیط ویرایش دستورات VBscript.
فایلهای vbs میتوانند دو نوع فایل ویرایشی را شامل شده باشند:
فایلهای wsf: فایلهایی که بعد از XML معمول شد.
فایلهای hta: فایلهایی که بعد از HTML معمول شد.
فایلهای wsf میتوانند فایلهای vbs چندگانه را شامل شوند. در نتیجه فایلهای wsf معناهایی برای استفاده مجدد از کدها را مهیا میکنند:
میتوانیم یک کتابخانهای از کلاسها یا تابعهایی در یک یا چند فایل vbs بنویسیم و آن فایلها را در یک یا چند فایل wsf برای استفاده و استفاده مجدد آن تابعها در یک راه مدل شده شامل کنیم. مورد استفاده دیگر HTML در کاربردهای HTML و HTA است. در یک HTA، HTML برای ملاقات کاربران مورد استفاده قرار گرفتهاست و یک زبان ویرایش مثل HTML برای منطق برنامه مورد استفاده قرار گرفتهاست.
HTAS در درون mshta.exe اجرا میشود. چیزی که یک فضای مورد اعتماد تولید شده توسط اینترنت اکسپلورر است. محدودیتها برای اجرای کاربردها در وب یا محدوده اینترنت مثل دسترسی به فایلهای محلی یا راههای شبکهای به کار برده شدهاست. همچنین HTAS در این محیط قابل اعتماد اجرا میشود. راهنمای فعال تحقیق میتواند موضوعی برای محدوده منطقی اینترنت اکسپلورر و پیامهای خطای مربوطه باشد.
VBscript و JVscript میتوانند در یک فایل wsc برای تولید یک مؤلفه ویرایش ویندوز مورد استفاده قرار گیرد. یک کلاس ویرایش فعال که میتواند توسط کاربردهای کامپیوتری قابل اجرای دیگر طلب شده باشد. در آخر VBscript به عنوان یک زبان ویرایشی وارداتی برای بعضی کاربردهای جاداده شده تطابق داده شدهاست. مثل ملاقاتهای اپراتوری تولیدی و ملاقاتهای ماشینی بشر.
توابع و دستورالعملها
VBscript توابعی کتابخانهای و روتین را محیا کردهاست مثل تاریخ/ زمان، عملیات رشتهای، ریاضی، تقابل کاربران، خطایابی و توضیحات منظم.
به علاوه تابعها میتوانند به استفاده از فناوریهای فعال اضافه شده باشند. مدیریت سیستمی فایل، تغییر و تبدیل فایل، و عملکردهای متن در حال جریان میتوانند به سرانجام برسند با کتابخانه زمان اجرای ویرایش scrrun.dll. فایل باینری و حافظهٔ ۰ و ۱ توسط کلاس ADODB.Stream محیا شدهاست. فایلی که هم میتواند به عنوان سازنده رشته مورد استفاده قرار گیرد و هم میتواند به عنوان تبدیل کننده یک آرایهای از بایتها به یک رشته و بالعکس مورد استفاده قرار گیرد. دسترسی به پایگاه اطلاعات مقدور است در اطراف شیءهای دادهای فعال ADO و پایگاه سوخت IIS با مجوزهای معتبر و کافی توسط تابع Getobject() میتواند دستکاری شود. به علاوه، فایلهای XML و طرحها میتوانند توسط کتابخانه XML مایکروسافت دستکاری شده باشند. (msxml۳.dll ، msxml۶.dll) چیزی که میتواند از طریق XMLHTTP و شیءهای سرور XMLHTTP برای بازیابی شاخههای وب جهانی مورد استفاده قرار گیرد.
برنامهنویسی ادیبانه
برنامهنویسی ادیبانه (به انگلیسی Literate Programming) چگونگی نگارش یک برنامه رایانهای است، بطوریکه صورت و شمایل آن برنامه به شکل اسناد و متونی باشد که برای خواندن غیررسمی و غیرفنی توسط انسان (مانند خواندن متون ادبی)، مناسب باشد. این مفهوم برای اولین بار توسط دونالد کنوت، دانشمند علوم رایانه و استاد افتخاری دانشگاه استانفورد (دانشگاه)، در سال ۱۹۸۱ (میلادی) میلادی مطرح شدهاست.
در این روش متن برنامه (کد مبدا) و توضیحات به همراه هم در یک فایل مبدا ذخیره میشوند. متن اصلی برنامه و توضیحات را میتوان بطور کامل بهوسیلهٔ برنامههای کاربردی خاص، استخراج کرد.
برنامهنویسی اعلانی
برنامهنویسی اعلانی، در علوم رایانه یکی از شیوههای برنامهنویسی است که در آن منطق محاسبات بدون شرح چگونگی انجام آنها بیان میشود. برنامههای اعلانی تلاش میکنند تا با توصیف عملیات مورد نیاز برنامهها بجای توضیح چگونگی انجام عملیات، تاثیرات جانبی (side effects) درون برنامهها را کاهش و یا به کل ازمیان بردارند که از لحاظ اولویتهای عملیاتی در تناقض کامل با شیوه برنامهنویسی دستوری میباشند. زبانهای دستوری زبانهایی هستند که عملیات تحلیلی را برحسب عباراتی که در وضعیت برنامهها تغییراتی ایجاد میکنند، شرح میدهند حال آنکه زبانهای اعلانی برنامه هارابه عنوان اصول منطق محاسباتی و محاسبات را کسورات و اجزای کوچک درون فضای آن منطق میبینند.از آنجا که این زبان میتواند تا حد چشمگیری نوشتن برنامههای موازی برای رایانش موازی را آسان و ساده کند توانسته توجه زیادی را به خود معطوف سازد.
زبانهای معمول اعلانی شامل برنامهنویسی تابعی، عبارت باقاعده، برنامهنویسی منطقی میشوند.
تعریف
زبان ها و یا برنامههای اعلانی معمولاً به روشهای گوناگونی معرفی میشوند:۲
هر سبک برنامه ریزی، که دستوری نباشد.
هر برنامهای که توضیح دهد چه عملیاتی مورد نیاز است و نه اینکه به توصیف چگونگی انجام آن عملیات بپردازد.
هر نوع برنامهای که عاری از هر گونه تآثیرات جانبی (side effects) باشد.
هر زبانی که در مطابقت کامل و واضح با منطق ریاضیات باشد.
خلاصه
زبان اعلانی را میتوان به منزله چتری فرض کرد که شامل چند نمونه ساختار برنامه نویسی معروف میباشد:۳
برنامههای کاربردی(functional programming)
ابن نوع برنامهها، برنامههایی هستند که با محاسبات و تحلیلات به مانند ارزیابی توابع ریاضیاتی رفتار میکنند و از دادههای توضیحی(state)و بی ثبات(mutable) دوری میکنند. و بر خلاف برنامههای دستوری که به تغییرات وضعیت درون برنامهها تاکید دارند به کاربرد توابع تآکید میکنند.از جملهٔ این قبیل برنامهها میتوان به lips،APL اشاره کرد که بعدها نمونههای پیشرفته آن مانند Schemایجاد شد.
برنامههای منطق(logic programming)
این نوع زبان خود به سه دسته برنامههای قیدی(constraint programming)، برنامههای تحلیل داده(data flow programs)و برنامههای (domain specific) تقسیم میشود. برنامه ریزی منطق به عنوان یک سطح وسیع استفاده از منطق ریاضیات میباشد که در زمینههای تحلیل و محاسبات کامپیوتری، اثبات تئوریهای علمی، ایجاد مدل و حل مسائل، از این نوع ساختار برنامه ریزی استفاده میشود.زبانهایی چون svg،html،xsltاز نمونه زبانهای منطق به شمار میآیند.
برنامهنویسی بر پایه پیشنمونه
برنامهنویسی بر پایه پیشنمونه (به انگلیسی: Prototype-based programming) شیوهای از برنامهنویسی شئگرا است که کلاس در آن موجود نیست و رفتار استفادهٔ مجدد (که به وراثت در زبانهای بر پایهٔ کلاس شناخته میشود) توسط فرایندی از شبیهسازی اشیاء موجود انجام میپذیرد. این مدل همچنین به بدون کلاس، پیشنمونهگرا یا برنامهنویسی بر پایهٔ نمونه نیز شناخته میشود. دلگیشن (به انگلیسی: Delegation) قابلیت زبانی است که برنامهنویسی بر پایهٔ پیشنمونه را پیشتیبانی میکند.
برنامهنویسی پودمانی
برنامهنویسی پودمانی یا برنامهنویسی پیمانهای (به انگلیسی: Modular programming)، یک روش طراحی نرمافزار است برای افزایش وسعت نرمافزاری که از قسمتهای مجزایی به نام پودمان تشکیل شدهاست.
یک ماژول، تکه برنامه ای است که با یک استاندارد و قالب مشخص طراحی شده و انجام یکسری از فعالیتها را بر عهده دارد. در عوض مدیریت امکانات مورد نیاز ماژول و همچنین مدیریت بر روی خود ماژول توسط سایت انجام خواهد شد. مثلاً شما با افزودن ماژول خرید و فروش online، تمامی قابلیتهای یک سایت فروشگاهی را به سایت موجود خود خواهید افزود. در عوض ماژول جدید به دلیل ارث بردن و استفاده از قابلیتهای پایه ای سایت، چنان بر روی سایت شما عمل می نماید که گویی از ابتدا درون سایت بوده و بخشی جدا از برنامه نیست.
برنامهنویسی تابعی
برنامهنویسی تابعی (به انگلیسی: Functional programming) نوعی پارادایم برنامهنویسی است که در آن «محاسبات» به صورت ارزشیابی توابع ریاضی در نظر گرفته میشوند.
برنامهنویسی جنبهگرا
برنامهنویسی جنبهگرا روشی برای برنامهنویسی است که پس از برنامه و برای رفع مشکلات آن به وجود آمد. هدف از برنامه نویسی جنبهگرا، مستقل کردن وظایف (در قالب ماژولها) است به طوری که کمترین تداخل را در یکدیگر داشته باشند تا نهایتاً بتوان از آنها برای برنامههای دیگر است. برای مثال وظیفهٔ اهراز هویت در یک برنامه را میتوان به عنوان یک جنبه در نظر گرفت و ماژول جداگانهای برای آن ساخت تا از این پس در تمام پروژههای مشابه بتوان از آن استفاده کرد. بیشتر زبانهای برنامهنویسی، از برنامهنویسی جنبهگرا پشتیبانی خوبی به عمل میآورند. میتوان از آن جمله به جاوا و روش AspectJ اشاره کرد. برنامهنویسی جنبهگرا، ارتباط تنگاتنگ و نزدیکی با دارد ولی دو مفهوم متفاوت هستند.
برنامهنویسی دستوری
برنامهنویسی دستوری (به انگلیسی: Imperative programming) در علوم رایانه یکی از شیوههای برنامهنویسی است که در آن مراحل اجرای یک برنامه کامپیوتری قدم به قدم توسط برنامه نویس بیان میشود. این بر خلاف زبانهای اعلانی است که در آنها تنها نتیجه انجام دستورات بیان میشود. به بیان دیگر در زبانهای دستوری چگونگی اجرای برنامه بیان میشود اما در زبانهای اعلانی چیستی نتیجه بیان میشود.
به عنوان مثال اگر قصد باز کردن دری را داشته باشیم و با زبان اعلانی این را بخواهیم بیان کنیم خواهیم گفت در را باز کن اما اگر با زبان دستوری بیان کنیم خواهیم گفت بلند شو، به طرف در نردیک شو، دستگیره را بگیر و در را به طرف بیرون هل بده.
برنامهنویسی رویدادمحور
برنامهنویسی رویداد گرا یک الگوی برنامهنویسی است که در آن، روند اجرای برنامه توسط رویدادها - برای مثال، خروجی یک سنسور یا دستورهای کاربر (کلیک های موس، دکمه های کیبورد) و یا پیام های دریافتی از سایر برنامه ها یا رشته ها - تعیین می گردد.
برنامه نویسی رویداد گرا را می توان به عنوان یک تکنیک معماری نرمافزار تعریف کرد که در آن نرمافزار یک حلقه اصلی دارد که به روشنی به دو بخش زیر تقسیم می شود:
نخست، انتخاب رویداد (یا شناسایی رویداد)
و دوم، اداره کردن رویداد ها
برنامه های رویداد گرا را می توان در هر زبانی نوشت، اگرچه این کار در زبان هایی که سطح بالایی از انتزاع را فراهم می کنند، آسان تر است.
برنامهنویسی رویهای
برنامهنویسی پروسهای یک پارادایم برنامهنویسی بر پایه مفهوم فراخوانی پروسهها است. پروسه که همچنین به نامهای روال، زیرروال (سابروتین)، تابع، روش شناخته میشود، دربردارنده یک سری گامهای محاسباتی است که باید توسط رایانه اجرا شوند.
هر پروسه میتواند در هر نقطهای در طول اجرای برنامه فراخوانده شود شامل فراخوانی پروسه توسط خودش (برنامهنویسی بازگشتی) یا پروسههای دیگر.
برنامهنویسی ساختیافته
برنامهنویسی ساختیافته یک پارادایم برنامه نویسی است که در آن برنامهنویسی قدمها و روالهایی را که لازم است تا برنامه به جواب برسد، مشخص میکند. در این روش از برنامهنویسی، انجام یک روال به روالهای کوچک تر تقسیم میشود و به این ترتیب یک برنامه با شکسته شدن و به ریز برنامههای کوچک تر تقسیم شدن سعی میکند تا عملکرد مد نظر را پیادهسازی کند.
رویه ها (به انگلیسی: routines)، زیر رویه ها(به انگلیسی: subroutines)، ساختار بلوک (به انگلیسی: block structures) و حلقه های for , while در کنار سادگی آزمودن کدها و صرف نظر کردن از Goto که برنامه را به یک کلاف سردرگم (به اصطلاح برنامه نویسی: spaghetti code) تبدیل می کرد، موجب شدند تا دنبال کردن برنامه و نگه داری از آن تا حد زیادی بهبود یابد.
این پارادایم در دهه ی 1960 توسط بوهن (به انگلیسی: Böhm) و جاکوپینی (به انگلیسی: Jacopini) پدید آمد و در سال 1968 پدیده ی معروفی به نام Goto از سوی ادسخر دیکسترا زیان آور تشخیص داده شد و این پدیده ی تازه به صورت تئوری در قالب برنامه نویسی ساخت یافته ارایه شد و پس از آن توسط زبان الگول(به انگلیسی: ALGOL) به کمک ساختارهای کنترلی پشتیبانی گردید.
مثال
به عنوان مثال برای نوشتن برنامهای که قراراست اطلاعات نمرات یک محصل را بگیرد و کارنامهٔ آن را چاپ کند، زیر روالهای زیر لازم است:
زیر روالی ای برای خواندن اطلاعات ورودی
زیر روالی ای برای جمعآوری اطلاعات ورودی و محاسبهٔ معدل
زیر روالی برای چاپ اطلاعات به صورت یک جدول
زیر روالی برای اتصال به چاپگر و چاپ گزارش
هر زیر روال آنقدر کوچک میشود که برنامهنویس بتواند راحت تر کار کردن آن را درک کند ( هر زیر روال معمولاً ۳۰ خط برنامهنویسی است). به این ترتیب برنامهنویس با نوشتن هر زیر روال بخشی از برنامه را تولید میکند و برنامهنویسان مختلف میتوانند بر روی زیر روالهای مختلف کار کنند تا در نهایت به اضافه نمودن آنها به یکدیگر برنامهٔ نهایی ساخته شود.
در زبانهای ساختار یافته توابع کتابخانهای فراوانی وجود دارند که سعی میکنند به برنامهنویس در برخی از روالها کمک کنند. مثلاً برای چاپ در مثال فوق، توابع کتابخانهای برای سهولت انجام کار در این زیر روال، در زبان پاسکال، وجود دارد.
برخی از زبانهای ساخت یافته:
پاسکال
سی
بیسیک
برنامهنویسی شیءگرا
برنامهنویسی شیءگرا (به انگلیسی Object-Oriented Programming مخفف OOP) یک شیوه برنامه نویسی است که ساختار یا بلوک اصلی اجزای آن، شی ها می باشند. در واقع در این شیوه برنامه نویسی، برنامه به شیء گرایش پیدا می کند. به این معنا که داده ها و توابعی که قرار است بر روی این داده ها عمل کنند، تا حد امکان در قالبی به نام شی در کنار یکدیگر قرار گرفته، جمع بندی شده و یک واحد(شی) را تشکیل داده و نسبت به محیط بیرونِ خود، کپسوله می شوند و از این طریق، توابع بیگانه ی خارج از آن شی، دیگر امکان ایجاد تغییر در داده های درون آن شی را ندارند. به طور مثال حساب بانکی شما که شامل مشخصات فردی شما و میزان سپرده ی شما در بانک است، تشکیل یک شی را می دهند و به دلیل دارا بودن ویژگی کپسوله، امکان دستکاری در میزان سپرده یا مشخصات شما، توسط دیگران وجود ندارد. از دیگر ویژگی های برنامه نویسی شی گرا، پیچیدگی کم، هزینه کم، امکان گسترش سریع برنامه با خطای کمتر نسبت به سایر پارادیام های برنامه نویسی است.
فلسفه یی که منجر به شکل گیری ی زبان های شی گرا شد، عبارت بود از این واقعیت که نحوه ی عملکرد مغز و شیوه ی دریافت اطلاعات از محیط پیرامون و پردازش آن اطلاعات(اندیشیدن)، شیوه یی شی گراست، از همین روی می بایستی زبانی تعریف می شد که همین شیوه را مبنای کار خود قرار داده و بازتولید می کرد. و دقیقاً به همان شکل که اشیا در جهان خارج، دارای هویت و کارکرد مشخص و یگانه برای خود هستند و در عین حال با دیگر اشیا در ارتباطی تنگاتنگ و مستقیم اند، در زبان های برنامه نویسی نیز می بایستی این اصول کلی برقرار می شد. تا به این شکل، برنامه نویس بتواند با بهره گیری از زبانی که به روش اندیشیدنش، نزدیکی بیشتری دارد، شی های مختلفی را تعریف نموده، این شی ها را در ارتباط با یکدیگر قرار داده و از شی های پویای تولید شده برای حل مساله ی پیش روی استفاده نماید. امروزه اکثر زبانهای دستوری برنامه نویسی از فنون شیءگرایی پشتیبانی میکنند. زبانهایی مانند جاوا، سی++، سی شارپ، دلفی از جمله زبانهای شیءگرا هستند. حتی بسیاری از زبانهای روال گونه که ساختار برنامهها در آنها بلوکهایی با نام پروسیجر است امروزه از فنون شیءگرایی نیز پشتبانی میکنند. زبانهای سی++ و پیاچپی از این جمله هستند. هر شیء یک سری خصوصیت و قابلیت دارد، که اصطلاحاً Properties و Operation خوانده میشوند. در این روش از برنامه نویسی دید برنامه نویس به سیستم دید شخصی است که سعی مینماید به پیدا کردن اشیاء مختلف در سیستم و برقراری ارتباط بین آنها سیستم را تولید نماید. مفهوم مدیریت دیداری
مفاهیم عمده
کلاس
کلاس نوع خاصی از آرایه است که امکان ذخیره و جمع بندی تعداد زیادی المان را (که شامل داده ها و توابع هستند) برای یک شی جدید فراهم آورده و تحت یک نام مشترک ذخیره می کند. اما بر خلاف آرایه که تنها قادر به ذخیره ی داده هایی هم جنس است، کلاس می تواند داده هایی از جنس های مختلف را ذخیره نماید. به طور مثال در نظر بگیرید که می خواهیم تاریخ 13 نوامبر 2006 را که تشکیل شده از روز، ماه و سال است مورد استفاده قرار دهیم
حال در نظر بگیرید که نه فقط یک تاریخ، بلکه n تاریخ متفاوت مورد نیاز است. این بدان معنی ست که می بایستی به تعداد n بار، سه متغیر بالا، جداگانه تعریف شوند و تعریفِ تک تک و پیاپی متغیرها، نه فقط از لحاظ زمانی بسیار وقت گیر می نماید، بلکه از لحاظ میزان کد مورد نیاز نیز بسیار غیر عملی ست، چرا که هر بار می بایستی نام جدیدی برای متغیرها در نظر گرفته شود (دو متغیر متفاوت نمیتوانند هم نام باشند). در اینجاست که کلاس ها به خوبی وارد عمل می شوند. با استفاده از کلاس ها می توان متغیرهای متعدد (در مثال بالا: int day ;String month, ;int year) را زیر عنوان یک جنسیت مشترک جدید (به طور مثال هر سه را در یک کلاس با نام Date)، تعریف و جمع بندی نمود. و بعد از آن، بدون نیاز به تعریف مجدد روز، ماه و سال،از کلاس Date به میزان مورد نیاز استفاده کرد:
class Date{
int day;
String month;
int year;
}
وراثت
وراثت یا ارث بری (Inheritance) از مفاهیم اساسی برنامه نویسی شیءگراست. هر شیء یک نمونه از یک کلاس است و هر کلاس میتواند از کلاس یا کلاسهای دیگری مشتق شده باشد (خواص متدها یا رویدادهای کلاسهای دیگر را به ارث ببرد). در یک مثال ساده میتوان اتومبیلی را در نظر گرفت که برای جلوگیری از بازنویسی خواص عمومی اتومبیل شامل: چهار چرخ، متدهای حرکت چرخ، متد چرخاندن فرمان، فرمان، بدنه، در و غیره، میتوان یک کلاس پایه از اتومبیل ایجاد کرد سپس مثلاً برای اتومبیل زانتیا مدل C۵ یک کلاس جدید ایجاد کرده که خواص، متدها و رویدادهای عمومی اتومبیل را داشته باشد و فقط برای خواص، متدها و رویدادهای جدید این اتومبیل کد نوشته شود. این ویژگی باعث صرفهجویی در نوشتن کد و تا حدودی تضمین صحت کد موجود میشود. به عنوان مثال اگر کلاس پایه مشکلی داشته باشد فقط کافی است کلاس پایه تغییر داده شود و در تمامی کلاسهایی که از این کلاس پایه ویژگیای ا به ارث بردهاند این تغییر اعمال خواهد شد.
مخفیسازی
کپسوله سازی، مخفیسازی (Encapsulation)، یا لفافهبندی، به این مفهوم اشاره دارد که باید بعضی خصوصیات یا رفتارهای شیء را از دید دیگران پنهان کرد. فرض کنید شما به عنوان یک راننده میخواهید اتومبیل شخصی تان را روشن کنید و به محل کارتان عزیمت کنید سوییچ را بر میدارید، استارت میزنید و با فشار آوردن به پدالهای گاز و ترمز و چرخش فرمان و ... به محل کارتان خواهید رسید. در طول این مسیر در اتومبیل شما به عنوان یک شیء اعمال مختلفی در حال انجام بود. مثلاً لنت ترمز به دیسک چرخ برخورد میکرد و باعث کم شدن سرعت میشد یا شمعها شروع به جرقه زدن در زمانی بخصوصی میکردند. حال فرض کنید که عمل مخفی سازی وجود نداشت و شما مجبور بودید که جرقه زدن شمعها را کنترل میکردید و به سیستم سوخت رسانی در موقع لزوم دستور میدادید که سوخت را بداخل سیلندرها ارسال کند و... یا هیچگاه به مقصد نمیرسیدید! یا سالم نمیرسیدید!
عمل مخفی سازی باعث میشود که اشیاء بدون آنکه از چگونگی کارکرد یکدیگر اطلاع داشته باشند با هم کار کنند.
چندشکلی
چند ریختی(Polymorphism) چند ریختی، کمیتی است که به یک رابط امکان میدهد تا از عملیات یکسانی در قالب یک کلاس عمومی استفاده کند.عمل خاص کلاس را ذات حقیقی شیء تعیین میکند.مثال سادهای از چند ریختی، فرمان اتومبیل است. عمل فرمان اتومبیل برای تمام اتومبیلها بدون توجه به ساز و کاری که دارند، یکسان است. فرمان برای اتومبیل که به طور مکانیکی کار میکند یا با نیروی برق یا هر چیز دیگری، عمل یکسانی را انجام میدهد. بنابراین، پس از اینکه شما عملکرد فرمان را یاد گرفتید، می توانید فرمان هر اتومبیلی را کنترل کنید. همین هدف در برنامه نویسی نیز اعمال میشود. به طور کلی، مفهوم چند ریختی، اغلب با عبارت ((یک رابط، چندین روش))بیان میشود. این بدین معنی است که امکان طراحی رابط عمومی برای گروهی از عملیات مرتبط وجود دارد. چند ریختی یا چندشکلی (Polymorphism) به این معنا است که اشیاء میتوانند در موقعیتهای مختلف، رفتارهای متفاوتی بروز دهند. مثلاً یک تابع در صورتی که بر روی نمونهای از کلاس آ فراخوانی شود، رفتار ب را بروز دهد در حالی که اگر بر روی کلاس ج (که فرزند کلاس آ است) فراخوانی شود، رفتاری متفاوت انجام دهد.
انتزاع / تجرید
به این معنا است که بخشی از یک موجودیّت یک مفهوم را که میان همهٔ وارثان مشترک است، پیش تعریف کنیم. این توانایی منجر به داشتن نگاه مشابه به موجودیّتهای مشابه میگردد.
یک مثال کاربردی
در اطراف ما اشیاء زیادی وجود دارد و میتوان تمام مفاهیم موجود در طبیعت را با اشیاء تقلیل داد. مثلاً یک ماشین باربری. این ماشین یک سری خصوصیات دارد: چهار چرخ، یک پدال ترمز، یک پدال گاز، یک فرمان و یک محل بزرگ برای قرار دادن اشیاء در آن و.... این ماشین در صورتی که ما پدال گاز آن را فشار دهیم، حرکت میکند. در صورتی که فرمان آن را بچرخانیم تغییر مسیر میدهد. پس این شیء علاوه بر یک سری خصوصیات، یک سری رفتار مشخص هم به ما نشان میدهد. ولی فقط این یک ماشین نیست که این کار را انجام میدهد. تمامی ماشینها این کارها را انجام میدهند. پس میتوانیم این ماشین را 'تعریف' کنیم و بگوییم:
ماشین باربری وسیلهای است که چهار چرخ، یک گاز، یک ترمز، یک فرمان و یک محل برای حمل بار دارد و اگر پدال گاز آن فشار داده شود حرکت میکند. این تعریف این ماشین است ولی خود آن نیست. هر زمانی چنین ماشینی بخواهیم به کارخانه تولید آن میرویم و از فروشندگان میخواهیم تا با توجه به این تعریف یک ماشین به ما بدهند.
مفاهیم فوق در زبانهای برنامه نویسی شیءگرا گنجانده شدهاند. در این زبانها، اشیاء زیادی از پیش وجود دارند که برنامهنویسان میتوانند از آنها استفاده کنند.
ارتباط اشیاء
مجدداً به مثال ماشین باربری بر میگردیم و این بار، یک ماشین سواری را تعریف میکنیم. ماشین سواری شیئی است که چهار چرخ، یک ترمز، یک پدال گاز و یک صندوق عقب دارد. این تعریف به تعریف ماشین باربری بسیار شبیهاست. به عبارت دیگر ما به یک تعریف جدید میرسیم: خودرو. خودرو وسیلهای است که چهار چرخ، یک ترمز، یک پدال گاز دارد. پس از این به بعد تعریف ماشین باربری و ماشین سواری خیلی سادهتر میشود.
ماشین باربری، خودرویی است که محلی برای قرار دادن بار داشته باشد و ماشین سواری خودروییاست که صندوق عقب داشته باشد.
اگر کسی به درب کارخانه مراجعه کند و بگوید که 'خودرو' میخواهد، چیزی دریافت نمیکند. خودرو یک تعریف انتزاعی است، برای تعریف خودرو شیء وجود ندارد پس مشتری تنها میتواتند ماشین باربری یا ماشین سواری بخواهد.
کارواش را در نظر میگیریم. این کارواش خودرو را تمیز میکند و دیگر به طور جزئی عنوان نمیکند که کدام نوع خودرو را تمیز میکند. به عبارت دیگر نوع خودرو برای کارواش مهم نیست.
وقتی شخصی قصد اجاره خودرویی دارد، و میخواهد جنسی را حمل کند در هنگام تماس با متصدی کرایه ماشین میگوید: «اگر خودرو شمااز نوع باربری است، برای من ارسال کنید»، ولی اگر قصد جابجا شدن را دارد میگوید: «برای من یک ماشین سواری بفرستید.»
در زبانهای برنامه نویسی شیءگرا نیز اشیاء مختلفی وجود دارند که تعریف آنها تکمیل کننده یکدیگر است، به عبارت دیگر اشیا از یکدیگر ارث بری میکنند. برخی از تعاریف کاملاً عام است و نمیتوان از آنها نمونه شیئی ساخت و تنها تعریف هستند. به این تعاریف Interface گفته میشود.
وب مانی (به انگلیسی: Webmoney) سامانه خدمات پول اینترنتی است که در سال ۱۹۹۸
راه اندازی شدهاست. این خدمت به «شرکت انتقال وبمانی» تعلق دارد. این شرکت
ادعا میکند ۱۱ میلیون کاربر ثبتنام شده دارد.
در حال حاضر حدود ۶ میلیون کاربر بر روی سیاره زمین از خدمت وبمانی استفاده میکنند و روز به روز امکانات و خدمات وبمانی و همچنین کاربران این پول الکترونیکی رو به افزایش است. مهمترین ویژگی این سامانه پول الکترونیکی برخورداری از امنیت بالا است. بعد از افتتاح حساب وبمانی برای کاربر فایل کلیدی مخصوص حساب ساخته شده، ارایه میگردد که توسط این فایل کلیدی دسترسی به حساب ممکن میشود. همچنین کاربر میتواند در تنظیمات حساب خود، دسترسی به آن را با یک یا چند آیپی محدود نماید تا اینکه از ورود دیگران به حساب خود جلوگیری کند.

برای استفاده از وبمانی ابتدا کاربر باید نرمافزار «نگهدارنده وبمانی» (Webmoney Keeper) را از وبگاه نصب نماید یا به روش برخط وارد حساب خود در وبگاه وبمانی شود. به هر حساب وبمانی، شناسه وبمانی(WMID) تعلق میگیرد. هر کاربر در سامانه پول الکترونیکی وبمانی از گواهینامه الکترونیکی برخوردار میشود. طبق اطلاعات وارد شده در زمان افتتاح حساب، برای کاربران انواع گواهینامه الکترونیکی ارایه میگردد. اگر کاربر مشخصات شخصی وارد ننماید، گواهینامه ناشناس و اگر مشخصات خود را وارد نماید، گواهینامه تشریفاتی تعلق میگیرد. در زمان افتتاح حساب، کاربر میتواند مشخصات خود را وارد نموده و از گواهینامه تشریفاتی برخوردار شود.
هر حساب وبمانی دارای ۱۰ کیف پول مختلف است. هرکدام از این کیفهای پول نشانگر یک واحد ارزی است که به شرح زیر هستند:
WMZ – نشانگر کیف پول دلار ایالات متحده آمریکا (USD)
WME – نشانگر کیف پول یورو اتحادیه اروپا (EUR)
WMR – نشانگر کیف پول روبل کنفدراسیون روسیه (RUB)
WMU – نشانگر کیف پول گریونا اوکراین (UAH)
WMB – نشانگر کیف پول روبل بلاروس (BYR)
WMS – نشانگر کیف پول سوم قرقیزستان (KGS) – منحلشده
WMY – نشانگر کیف پول سوم ازبکستان (UZS) - منحلشده
WMV – نشانگر کیف پول دانگ ویتنام (VND)
WMX – نشانگر کیف پول بیتکوین (BTC)
WMG – نشانگر کیف پول طلا
این کیفهای پول جدا از شناسه وبمانی (WMID) است و برای انجام حواله باید از شماره ارز مشخص استفاده گردد. حوالجات در سیستم پول الکترونیکی وبمانی با هزینه ۰/۸ درصد انجام میشود. این هزینه بر عهده فرستنده است. مثلاً اگر فرستنده بخواهد ۱۰۰۰ دلار وبمانی به حساب گیرنده بریزد، بانک الکترونیکی وبمانی ۸ دلار وبمانی به عنوان کارمزد درنظر میگیرد و بنابراین برای این که ۱۰۰۰ دلار وبمانی کامل به دست گیرنده برسد، فرستنده باید ۱۰۰۸ دلار وبمانی به حساب گیرنده واریز نماید.
نرخ ارز
به پولهای خارجی ارز گفته میشود. به گفته دیگر به واحدهای پولی که در کشورهای دیگر جز کشور اصلی داد و ستد شود به صورت کلی ارز گفته میشود.
یکی ازتفاوتهای بین معاملات مالی در داخل کشور و مبادلات بینالمللی این است که درتجارت داخلی نیاز به پرداخت و دریافت وجوه بر حسب پول رایج ملی است اما در معاملات خارجی معمولا این وجوه به شکل پولهای رایج و معتبر خارجی، پرداخت میشود.
مثلا در ایران برای انجام مبادلات، از ریال استفاده میشود، در آلمان مارک و آمریکا دلار آمریکا، اما وقتی یک ایرانی بخواهد از آمریکا کالایی را تهیه کند باید در ازای آن دلار آمریکا بپردازد، بنابراین باید بر اساس یک رابطهٔ مبادلهٔ تعریف شده (نرخ ارز) ریال بدهد و دلار بگیرد و با آن کالا را بخرد.
تعریف نرخ ارز
منظور از ارز هر وسیلهای است که به صورت اسکناس، حواله یا چک در مبادلات خارجی جهت پرداختها استفاده میشود. و منظور از نرخ ارز خارجی عبارت است از مقداری از واحد پولی ملی که برای بدست آوردن واحدپول کشور دیگر باید پرداخت شود.
همچنین میتوان نرخ ارز را، ارزش برابری یک واحد پول خارجی به پول داخلی دانست. به عبارت دیگر بهای خرید یا فروش یک واحد پول خارجی به پول رایج کشور را نرخ ارز میگویند.
قاعدهٔ قیمتهای یکسان
قیمت یککالای خارجی در داخل کشور، وابسته به قیمت آنکالا در مبدا و همچنین نرخ ارز آنکشور است. طبق اینقاعده اگر هزینههایجنبی مبادله، ناچیز باشد، قیمتیککالا در همه جا با توجه به قیمتارز، یکسان خواهد بود و در شرایط ایده آل قدرت خریدیک ارز در داخل و خارج یکسان خواهد بود.
برابری قدرت خرید
اگر قاعدهٔ قیمت یکسان را به مجموعهای از کالاها یا سبد مصرفی یک جامعه تعمیم دهیم، به قاعدهٔ برابری قدرت خرید میرسیم. با فرض برابری قدرت خرید در مورد همه کالاها و امکان تهیه تمامی آنها از دیگر کشورهای جهان، رابطهٔ نرخ ارز را میتوان به صورت زیر نوشت:
قیمت سبد کالاهای خارجی / قیمت سبد کالاهای داخلی = نرخ ارز
به این معنی که درصد تغییرات نرخ ارز، برابر است با تفاضل تغییرات تورم داخلی و خارجی.
اگر نرخ تورم در داخل و خارج یکسان با شد، نرخ ارز نیز بدون تغییر باقی میماند؛
اما اگر تورم داخلی بیشتر از تورم خارجی شود، در نتیجه انتظار افزایش نرخ ارز نیز وجود دارد؛
و همچنین اگر نرخ تورم داخلی کمتر از تورم خارجی بشود، نرخ ارز کاهش خواهد یافت.
بازار ارز خارجی
ارز خارجی همانند پول ملی یک کالا محسوب میشود، و دارای بازار است که از دو طرف، عرضهو تقاضا تشکیل میشود.[۹]
بازار ارز خارجی عبارت است از چارچوب سازمان یافته و معینی که در آن افراد، موسسات و بانکها به کار خریدو فروشپولهای خارجی یا ارز اشتغال دارند. وظیفهٔ اصلی بازار ارز خارجی عبارت است از انتقال و جوه یا قدرت خرید از یک کشور به کشور دیگر.
وظیفهٔ دیگر بازار ارز تامین اعتبار است که مانند کالا مستلزم انتقال از فروشنده به خریدار است.
به طور کلی چهار نوع معامله در بازارهای ارزی انجام میپذیرد:
۱- معاملات حال(spot)؛
۲- معاملات سلف(forward)؛
۳- معاملات سوآپ (swap)؛
۴- آربیتراژ(arbitrage).
عرضهٔ ارز
همانند هر کالای دیگر عرضهٔ ارز با قیمت آن (نرخ ارز) رابطهٔ مستقیم دارد.
انواع نرخ ارز
نرخ ارز حقیقی
نرخ ارز حقیقی عبارت است از نسبت قیمتهای خارجی به قیمتهای داخلی بر حسب یک پول: {۴}{۲}R=\frac
R=\frac{〖ep〗^f}{p
که P و Pf به ترتیب سطح عمومی قیمتها در داخل و خارج است و e همان نرخ ارز اسمی و ارزش ریالی پول خارجی است.
نرخ ارز مؤثر اسمی
نرخ ارز مؤثر اسمی ارزش پول یک کشور را برحسب یک میانگین وزنی از پول سایر کشورها اندازهگیری میکند که در آن وزنها انعکاس دهندهٔ سهم هر کشور در تجارت بینالمللی این کشور میباشد. به همین دلیل به آن نرخ ارز با وزن تجاری هم میگویند.
نرخ ارز مؤثر حقیقی
نرخ ارز مؤثر حقیقی از تقسیم یک میانگین وزنی از قیمت سبد کالایی در کشورهای طرف تجاری بر حسب پول داخلی نسبت به قیمت آن در کشور به دست میآید.
تعیین نرخ ارز
در مدلهای اولیه نرخ ارز بر مبنای نظریهٔ برابری قدرت خرید(ppp) تعیین میشد و تنها عامل نوسانات نرخ ارز اسمی را قیمت کالاها میدانستند.
اما آنچه بدیهی است این است که عوامل گوناگونی بر نرخ ارز تاثیر میگذارند:
تراز پرداختها
هرگونه تغییر و تحول در تراز پرداختها تاثیر مستقیم روی نرخ ارز میگذارد. دارندگان ارز کشوری که تراز پرداختهایش رو به کاهش است، آن را میفروشند و ارز معتبر دیگری را خریداری میکنند. بنابراین، عرضهٔ این ارز در بازار زیاد میشود و نرخ آن نسبت به ارزهای دیگر کاهش مییابد.
استقراض خارجی
هر اندازه کشوری بیشتر مقروض باشد نیازش به ارز خارجی برای پرداخت اصل و بهرهٔ بدهیها بیشتر است. بنابر این، فشاری که روی ذخایر ارزی آن کشور وارد میشود، روی نرخ ارز آن کشور منتقل شده و آن را ضعیف میکند.
انتظارات برای آینده
ممکن است نرخ ارزها بر اثر پیشبینیهایی که نسبت به وضعیت آنها میشود، تغییر کند. با وجود انتظار نرخ ارز قوی در آینده، صادرات به آن کالا به تاخیر خواهد افتاد تا زمانی که نرخ ارز کاملا قوی شده و در هنگام تبدیل آن به پول کشور خودی با نرخ بهتری روبه روبوده و پول بیشتری دریافت گردد.
تورم
در صورت برابری نرخ تورم در هر دو کشور باید به شاخص قیمتهای خردهفروشی و عمدهفروشی توجه کرد تا وضعیت هر کشور مشخص شود.
سیاستهای اقتصادی
سیاستهایی کهبر نرخ ارز اثر میگذارند عبارتاند از: رشد معقول عرضهٔ پول، سیاستهای مناسب مالی، خصوصیات دیپلماسی خارجی و فعالیتهای نظامی، سرمایهگذاری در مقایسه با میزان نقدینگی.
تغییرات نرخ ارز
تغییرات نرخ ارز رابطه مستقیمی با تورم دارد.
شرایط تضعیف نرخ ارز
نرخ ارز رسمی ممکن است درصورت وجود شرایطی دچار ضعف شود. این عوامل عبارتاند از: ۱- ادامه کسری در موازنه پرداختهای کشور؛ ۲- کاهش در میزان ذخیره طلا و ارزهای خارجی؛ ۳- تورم داخلی؛ ۴- بیاعتمادی به پول داخلی؛ ۵- سیاستهای دولت که به جای مبارزه با علت، با معلول مبارزه میکند؛ ۶- خط مشیهای دولت که سبب تضعیف اقتصاد داخلی میشود؛ ۷- احتمالتضعیف نرخرسمی ارز کشورهایی کهیک اقتصاد به آنها تعهد و وابستگی نزدیک دارد.
رژیم ارزی
در سال ۱۹۴۴م. بر اساس معاهدهٔ «برتن وودز» کشورها ملزم به حفظ ارزش پول در برابر دلار با یک نسبت مشخص طلا شدند که به سیاست نرخ ارز ثابت شهرت داشت اما در سال ۱۹۷۱م. با اعلام عدم تعهد ایالات متحده در حفظ، برابری و تعویض دلار و طلا، کشورها و درصدر آنها ژاپن سیستم نرخ ارز شناور (مبتنی بر عرضه و تقاضا در بازار) را جایگزین نمودند. مهمترین نظام ارزی، نظام ارزی ثابت و نظام ارزی شناور است، البته، نظامهای دیگری نیز به مرور زمان بهوجود آمدهاند و میتوانند استفادهشوند که بسته به شرایط و نیاز کشورها به کار گرفته میشوند.
نرخ ارز ثابت
وضعیتی است که در آن نیروهای بازار کامللا فعال هستند، اما بانک مرکزی بسته به ملاحظات و ضرورتهای موجود، نرخ ارز معینی را به عنوان نرخ ارز هدف تعیین میکند و با مداخله در بازار و از طریق ساز وکار ذخایر خود، از آن نرخ هدف حمایت میکند.
مثلا اگر نرخ ارز تمایل داشته باشد که از نرخ هدف بالاتر رود بانک مرکزی با عرضهٔ دخایر ارزی خود به بازار از افزایش نرخ ارز جلوگیری میکند و همچنین اگر نرخ ارز تمایل داشته باشد از نرخ هدف کاهش یابد بانک مرکزی مذکور با خرید ارز از بازار و افزایش ذخایر خود از این کار جلوگیری میکند.
مزایاو معایب انتخاب نرخ ارز ثابت: انتخاب نظام ارزی ثابت باعث میشود که مردم و بنگاهها بتوانند، مادامی که نرخ ارز ثابت نگهداشتهشدهاست بدون نگرانی درمورد نوسانات نرخ ارز برای آینده برنامه ریزی کنند. در این صورت در سطح خرد ثبات وجود دارد، اما از آن جا که نوسانات ارز به بخش عرضهٔ پول منتقل میشود، ممکن است بیثباتی به بخش کلان اقتصاد منتقل شود.
نرخ ارز شناور
به ترتیباتی از بازار گفته میشود که در آن نرخ ارز بر اساس تعامل نیروهای عرضه و تقاضا ارز بدون مداخلهٔ مقامات پولی و به صورت آزاد تعیین میشود.
مزایا و معایب انتخاب نرخ ارز شناور: انتخاب نظام شناور باعث میشود نرخ ارز متغیر باشد ولی در نهایت ثبات اقتصاد کلان، به معنای ثبات در حجم پول و تثبیت نرخ تورم، در بلند مدت حاصل میگردد.
انواع نامهای ارز
ارز دولتی
ارز رقابتی، ارزی است که از سوی دولت در رقابت با بازار آزاد، عرضه میشود. ارز دولتی، ارزی است که دولت از طریق بانکهای مجاور و به نرخ دولتی فروشد. ارز دانشجویی، ارزی است که دولت برای تامین مخارج دانشجویان خارج از کشور در نظر میگیرد و به دانشجویان برای ادامه تحصیل میدهد. ارز تهاتری، ارزی است که در قرار دادهای پایاپا مبنای محاسبه قرار میگیرد. ارز مبادلهای، ارزی است که در مرکز مبادلات ارزی برای برخی گروه از کالاها جهت واردات در نظر گرفته میشود. ارز یوزانس، ارزی است که پس از دریافت کالا حواله میشود.
ارز شناور
ارز شناور، ارزی است که بهای آن ثابت نیست و بر اساس عرضه و تقاضا تعیین میشود. ارز صادراتی، ارزی است که از راه فروش کالای صادراتی تامین میشود.
در حال حاضر حدود ۶ میلیون کاربر بر روی سیاره زمین از خدمت وبمانی استفاده میکنند و روز به روز امکانات و خدمات وبمانی و همچنین کاربران این پول الکترونیکی رو به افزایش است. مهمترین ویژگی این سامانه پول الکترونیکی برخورداری از امنیت بالا است. بعد از افتتاح حساب وبمانی برای کاربر فایل کلیدی مخصوص حساب ساخته شده، ارایه میگردد که توسط این فایل کلیدی دسترسی به حساب ممکن میشود. همچنین کاربر میتواند در تنظیمات حساب خود، دسترسی به آن را با یک یا چند آیپی محدود نماید تا اینکه از ورود دیگران به حساب خود جلوگیری کند.

برای استفاده از وبمانی ابتدا کاربر باید نرمافزار «نگهدارنده وبمانی» (Webmoney Keeper) را از وبگاه نصب نماید یا به روش برخط وارد حساب خود در وبگاه وبمانی شود. به هر حساب وبمانی، شناسه وبمانی(WMID) تعلق میگیرد. هر کاربر در سامانه پول الکترونیکی وبمانی از گواهینامه الکترونیکی برخوردار میشود. طبق اطلاعات وارد شده در زمان افتتاح حساب، برای کاربران انواع گواهینامه الکترونیکی ارایه میگردد. اگر کاربر مشخصات شخصی وارد ننماید، گواهینامه ناشناس و اگر مشخصات خود را وارد نماید، گواهینامه تشریفاتی تعلق میگیرد. در زمان افتتاح حساب، کاربر میتواند مشخصات خود را وارد نموده و از گواهینامه تشریفاتی برخوردار شود.
هر حساب وبمانی دارای ۱۰ کیف پول مختلف است. هرکدام از این کیفهای پول نشانگر یک واحد ارزی است که به شرح زیر هستند:
WMZ – نشانگر کیف پول دلار ایالات متحده آمریکا (USD)
WME – نشانگر کیف پول یورو اتحادیه اروپا (EUR)
WMR – نشانگر کیف پول روبل کنفدراسیون روسیه (RUB)
WMU – نشانگر کیف پول گریونا اوکراین (UAH)
WMB – نشانگر کیف پول روبل بلاروس (BYR)
WMS – نشانگر کیف پول سوم قرقیزستان (KGS) – منحلشده
WMY – نشانگر کیف پول سوم ازبکستان (UZS) - منحلشده
WMV – نشانگر کیف پول دانگ ویتنام (VND)
WMX – نشانگر کیف پول بیتکوین (BTC)
WMG – نشانگر کیف پول طلا
این کیفهای پول جدا از شناسه وبمانی (WMID) است و برای انجام حواله باید از شماره ارز مشخص استفاده گردد. حوالجات در سیستم پول الکترونیکی وبمانی با هزینه ۰/۸ درصد انجام میشود. این هزینه بر عهده فرستنده است. مثلاً اگر فرستنده بخواهد ۱۰۰۰ دلار وبمانی به حساب گیرنده بریزد، بانک الکترونیکی وبمانی ۸ دلار وبمانی به عنوان کارمزد درنظر میگیرد و بنابراین برای این که ۱۰۰۰ دلار وبمانی کامل به دست گیرنده برسد، فرستنده باید ۱۰۰۸ دلار وبمانی به حساب گیرنده واریز نماید.
نرخ ارز
به پولهای خارجی ارز گفته میشود. به گفته دیگر به واحدهای پولی که در کشورهای دیگر جز کشور اصلی داد و ستد شود به صورت کلی ارز گفته میشود.
یکی ازتفاوتهای بین معاملات مالی در داخل کشور و مبادلات بینالمللی این است که درتجارت داخلی نیاز به پرداخت و دریافت وجوه بر حسب پول رایج ملی است اما در معاملات خارجی معمولا این وجوه به شکل پولهای رایج و معتبر خارجی، پرداخت میشود.
مثلا در ایران برای انجام مبادلات، از ریال استفاده میشود، در آلمان مارک و آمریکا دلار آمریکا، اما وقتی یک ایرانی بخواهد از آمریکا کالایی را تهیه کند باید در ازای آن دلار آمریکا بپردازد، بنابراین باید بر اساس یک رابطهٔ مبادلهٔ تعریف شده (نرخ ارز) ریال بدهد و دلار بگیرد و با آن کالا را بخرد.
تعریف نرخ ارز
منظور از ارز هر وسیلهای است که به صورت اسکناس، حواله یا چک در مبادلات خارجی جهت پرداختها استفاده میشود. و منظور از نرخ ارز خارجی عبارت است از مقداری از واحد پولی ملی که برای بدست آوردن واحدپول کشور دیگر باید پرداخت شود.
همچنین میتوان نرخ ارز را، ارزش برابری یک واحد پول خارجی به پول داخلی دانست. به عبارت دیگر بهای خرید یا فروش یک واحد پول خارجی به پول رایج کشور را نرخ ارز میگویند.
قاعدهٔ قیمتهای یکسان
قیمت یککالای خارجی در داخل کشور، وابسته به قیمت آنکالا در مبدا و همچنین نرخ ارز آنکشور است. طبق اینقاعده اگر هزینههایجنبی مبادله، ناچیز باشد، قیمتیککالا در همه جا با توجه به قیمتارز، یکسان خواهد بود و در شرایط ایده آل قدرت خریدیک ارز در داخل و خارج یکسان خواهد بود.
برابری قدرت خرید
اگر قاعدهٔ قیمت یکسان را به مجموعهای از کالاها یا سبد مصرفی یک جامعه تعمیم دهیم، به قاعدهٔ برابری قدرت خرید میرسیم. با فرض برابری قدرت خرید در مورد همه کالاها و امکان تهیه تمامی آنها از دیگر کشورهای جهان، رابطهٔ نرخ ارز را میتوان به صورت زیر نوشت:
قیمت سبد کالاهای خارجی / قیمت سبد کالاهای داخلی = نرخ ارز
به این معنی که درصد تغییرات نرخ ارز، برابر است با تفاضل تغییرات تورم داخلی و خارجی.
اگر نرخ تورم در داخل و خارج یکسان با شد، نرخ ارز نیز بدون تغییر باقی میماند؛
اما اگر تورم داخلی بیشتر از تورم خارجی شود، در نتیجه انتظار افزایش نرخ ارز نیز وجود دارد؛
و همچنین اگر نرخ تورم داخلی کمتر از تورم خارجی بشود، نرخ ارز کاهش خواهد یافت.
بازار ارز خارجی
ارز خارجی همانند پول ملی یک کالا محسوب میشود، و دارای بازار است که از دو طرف، عرضهو تقاضا تشکیل میشود.[۹]
بازار ارز خارجی عبارت است از چارچوب سازمان یافته و معینی که در آن افراد، موسسات و بانکها به کار خریدو فروشپولهای خارجی یا ارز اشتغال دارند. وظیفهٔ اصلی بازار ارز خارجی عبارت است از انتقال و جوه یا قدرت خرید از یک کشور به کشور دیگر.
وظیفهٔ دیگر بازار ارز تامین اعتبار است که مانند کالا مستلزم انتقال از فروشنده به خریدار است.
به طور کلی چهار نوع معامله در بازارهای ارزی انجام میپذیرد:
۱- معاملات حال(spot)؛
۲- معاملات سلف(forward)؛
۳- معاملات سوآپ (swap)؛
۴- آربیتراژ(arbitrage).
عرضهٔ ارز
همانند هر کالای دیگر عرضهٔ ارز با قیمت آن (نرخ ارز) رابطهٔ مستقیم دارد.
انواع نرخ ارز
نرخ ارز حقیقی
نرخ ارز حقیقی عبارت است از نسبت قیمتهای خارجی به قیمتهای داخلی بر حسب یک پول: {۴}{۲}R=\frac
R=\frac{〖ep〗^f}{p
که P و Pf به ترتیب سطح عمومی قیمتها در داخل و خارج است و e همان نرخ ارز اسمی و ارزش ریالی پول خارجی است.
نرخ ارز مؤثر اسمی
نرخ ارز مؤثر اسمی ارزش پول یک کشور را برحسب یک میانگین وزنی از پول سایر کشورها اندازهگیری میکند که در آن وزنها انعکاس دهندهٔ سهم هر کشور در تجارت بینالمللی این کشور میباشد. به همین دلیل به آن نرخ ارز با وزن تجاری هم میگویند.
نرخ ارز مؤثر حقیقی
نرخ ارز مؤثر حقیقی از تقسیم یک میانگین وزنی از قیمت سبد کالایی در کشورهای طرف تجاری بر حسب پول داخلی نسبت به قیمت آن در کشور به دست میآید.
تعیین نرخ ارز
در مدلهای اولیه نرخ ارز بر مبنای نظریهٔ برابری قدرت خرید(ppp) تعیین میشد و تنها عامل نوسانات نرخ ارز اسمی را قیمت کالاها میدانستند.
اما آنچه بدیهی است این است که عوامل گوناگونی بر نرخ ارز تاثیر میگذارند:
تراز پرداختها
هرگونه تغییر و تحول در تراز پرداختها تاثیر مستقیم روی نرخ ارز میگذارد. دارندگان ارز کشوری که تراز پرداختهایش رو به کاهش است، آن را میفروشند و ارز معتبر دیگری را خریداری میکنند. بنابراین، عرضهٔ این ارز در بازار زیاد میشود و نرخ آن نسبت به ارزهای دیگر کاهش مییابد.
استقراض خارجی
هر اندازه کشوری بیشتر مقروض باشد نیازش به ارز خارجی برای پرداخت اصل و بهرهٔ بدهیها بیشتر است. بنابر این، فشاری که روی ذخایر ارزی آن کشور وارد میشود، روی نرخ ارز آن کشور منتقل شده و آن را ضعیف میکند.
انتظارات برای آینده
ممکن است نرخ ارزها بر اثر پیشبینیهایی که نسبت به وضعیت آنها میشود، تغییر کند. با وجود انتظار نرخ ارز قوی در آینده، صادرات به آن کالا به تاخیر خواهد افتاد تا زمانی که نرخ ارز کاملا قوی شده و در هنگام تبدیل آن به پول کشور خودی با نرخ بهتری روبه روبوده و پول بیشتری دریافت گردد.
تورم
در صورت برابری نرخ تورم در هر دو کشور باید به شاخص قیمتهای خردهفروشی و عمدهفروشی توجه کرد تا وضعیت هر کشور مشخص شود.
سیاستهای اقتصادی
سیاستهایی کهبر نرخ ارز اثر میگذارند عبارتاند از: رشد معقول عرضهٔ پول، سیاستهای مناسب مالی، خصوصیات دیپلماسی خارجی و فعالیتهای نظامی، سرمایهگذاری در مقایسه با میزان نقدینگی.
تغییرات نرخ ارز
تغییرات نرخ ارز رابطه مستقیمی با تورم دارد.
شرایط تضعیف نرخ ارز
نرخ ارز رسمی ممکن است درصورت وجود شرایطی دچار ضعف شود. این عوامل عبارتاند از: ۱- ادامه کسری در موازنه پرداختهای کشور؛ ۲- کاهش در میزان ذخیره طلا و ارزهای خارجی؛ ۳- تورم داخلی؛ ۴- بیاعتمادی به پول داخلی؛ ۵- سیاستهای دولت که به جای مبارزه با علت، با معلول مبارزه میکند؛ ۶- خط مشیهای دولت که سبب تضعیف اقتصاد داخلی میشود؛ ۷- احتمالتضعیف نرخرسمی ارز کشورهایی کهیک اقتصاد به آنها تعهد و وابستگی نزدیک دارد.
رژیم ارزی
در سال ۱۹۴۴م. بر اساس معاهدهٔ «برتن وودز» کشورها ملزم به حفظ ارزش پول در برابر دلار با یک نسبت مشخص طلا شدند که به سیاست نرخ ارز ثابت شهرت داشت اما در سال ۱۹۷۱م. با اعلام عدم تعهد ایالات متحده در حفظ، برابری و تعویض دلار و طلا، کشورها و درصدر آنها ژاپن سیستم نرخ ارز شناور (مبتنی بر عرضه و تقاضا در بازار) را جایگزین نمودند. مهمترین نظام ارزی، نظام ارزی ثابت و نظام ارزی شناور است، البته، نظامهای دیگری نیز به مرور زمان بهوجود آمدهاند و میتوانند استفادهشوند که بسته به شرایط و نیاز کشورها به کار گرفته میشوند.
نرخ ارز ثابت
وضعیتی است که در آن نیروهای بازار کامللا فعال هستند، اما بانک مرکزی بسته به ملاحظات و ضرورتهای موجود، نرخ ارز معینی را به عنوان نرخ ارز هدف تعیین میکند و با مداخله در بازار و از طریق ساز وکار ذخایر خود، از آن نرخ هدف حمایت میکند.
مثلا اگر نرخ ارز تمایل داشته باشد که از نرخ هدف بالاتر رود بانک مرکزی با عرضهٔ دخایر ارزی خود به بازار از افزایش نرخ ارز جلوگیری میکند و همچنین اگر نرخ ارز تمایل داشته باشد از نرخ هدف کاهش یابد بانک مرکزی مذکور با خرید ارز از بازار و افزایش ذخایر خود از این کار جلوگیری میکند.
مزایاو معایب انتخاب نرخ ارز ثابت: انتخاب نظام ارزی ثابت باعث میشود که مردم و بنگاهها بتوانند، مادامی که نرخ ارز ثابت نگهداشتهشدهاست بدون نگرانی درمورد نوسانات نرخ ارز برای آینده برنامه ریزی کنند. در این صورت در سطح خرد ثبات وجود دارد، اما از آن جا که نوسانات ارز به بخش عرضهٔ پول منتقل میشود، ممکن است بیثباتی به بخش کلان اقتصاد منتقل شود.
نرخ ارز شناور
به ترتیباتی از بازار گفته میشود که در آن نرخ ارز بر اساس تعامل نیروهای عرضه و تقاضا ارز بدون مداخلهٔ مقامات پولی و به صورت آزاد تعیین میشود.
مزایا و معایب انتخاب نرخ ارز شناور: انتخاب نظام شناور باعث میشود نرخ ارز متغیر باشد ولی در نهایت ثبات اقتصاد کلان، به معنای ثبات در حجم پول و تثبیت نرخ تورم، در بلند مدت حاصل میگردد.
انواع نامهای ارز
ارز دولتی
ارز رقابتی، ارزی است که از سوی دولت در رقابت با بازار آزاد، عرضه میشود. ارز دولتی، ارزی است که دولت از طریق بانکهای مجاور و به نرخ دولتی فروشد. ارز دانشجویی، ارزی است که دولت برای تامین مخارج دانشجویان خارج از کشور در نظر میگیرد و به دانشجویان برای ادامه تحصیل میدهد. ارز تهاتری، ارزی است که در قرار دادهای پایاپا مبنای محاسبه قرار میگیرد. ارز مبادلهای، ارزی است که در مرکز مبادلات ارزی برای برخی گروه از کالاها جهت واردات در نظر گرفته میشود. ارز یوزانس، ارزی است که پس از دریافت کالا حواله میشود.
ارز شناور
ارز شناور، ارزی است که بهای آن ثابت نیست و بر اساس عرضه و تقاضا تعیین میشود. ارز صادراتی، ارزی است که از راه فروش کالای صادراتی تامین میشود.
ساعت : 1:29 am | نویسنده : admin
|
مطلب بعدی