اسکریپت نویسی
اسکریپتنویسی
زبان پردازهنویسی یا زبان اسکریپتنویسی، به نوعی از زبانهای برنامهنویسی گفته میشود که برای نوشتن پردازهها استفاده میشود.
پردازهها یا اسکریپتها برنامههای کوچکی هستند که بهوسیله آنها میتوان برخی وظایف تکراری و پراستفاده یا یک وظیفه طولانی را به طور خودکار انجام داد. معمولاً اینگونه وظایف به واژهپردازی در متنها مربوط میشوند.
در دهه ۱۹۶۰ اولین پوستههای فرمان ساخته شدند. کاربران این پوستهها گاه مجبور بودند برای انجام امور خود، سلسلهای از دستورهای تکراری یا مشابه را در پوسته وارد کنند. کم کم به پوستهها قابلیتهایی اضافه شد که کاربر با آن میتوانست الگوی دستورهای خود را به پوسته اعلام کند و پوسته به طور خودکار دستورها را انجام میداد. این پیشرفتها منجر به ساخت اولین اسکریپتهای پوستهای شد.
در واقع اسکریپتهای اولیه برنامههای کوچکی بودند که به وسیله آنها میشد برخی وظایف تکراری و پراستفاده یا یک وظیفه طولانی را به طور خودکار انجام داد. زبانهای اسکریپتنویسی امروزه پیشرفتهای زیادی کردهاند. آنها در زمینههایی چون کنترل وظایف و پوسته، واسطهای گرافیکی کاربر، واژهپردازی، خدمتگزاران وب و خدمتگیرندههای وب استفاده میشوند.
پردازه اجازه کنترل برخی از کاربردهای نرمافزار را به برنامهنویس میدهد اما تعدادی از فرمانها و امکانات زبانهای بزرگ در این زبانها حذف شدهاند. مثلاً امکان نوشتن فایل یا پاک کردن فایلها برروی سیستم کاربر مانند زبانهای برنامهنویسی وجود ندارد. مثالهایی از این دسته عبارت است از : جاوا اسکریپت، پرل و پایتون.
اکشناسکریپت
اکشناسکریپت 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 گفته میشود.
کاربردهای امروزی
اینترنت انعطاف پذیری بیشتری را در مورد ساعتهای کاری و موقعیت جغرافیایی فراهم میسازد بویژه با گسترش اتصالهای پرسرعت و نرمافزارهای کاربردی وب. امروزه اینترنت تقریباً از همه جا و به طرق مختلفی قابل دسترسی است، بویژه از طریق دستگاههای متحرک اینترنتی (Mobile Internet Device)، تلفن همراه، جعبههای بازی دستی(Handheld Game Console) و مسیریابهای سلولی(Cellular Routers) که به کاربران اجازه میدهد که هرکجا شبکههای بی سیم وجود دارد به اینترنت متصل شوند.
با وجود محدودیت اندازه صفحه کوچک دستگاههای جیبی، خدمات اینترنت مانند وب و پست الکترونیک قابل استفادهاند. اینترنت همچنین بازار بزرگی برای شرکتها شدهاست. برخی از بزرگترین شرکتهای دنیا با بهره گیری از ماهیت کم هزینه تبلیغات و دادوستد اینترنتی (که به دادوستدالکترونیک(E-Commerce) مشهور است) بزرگ شدهاند.این سریعترین راه برای انتشار همزمان اطلاعات بین افراد متعدد است. اینترنت متعاقباً راه و رسم خریدکردن را نیز متحول ساختهاست. به عنوان مثال یک فرد میتوانند کالایی مانند یک لوح فشرده(CD) را به صورت برخط(Online) سفارش داده و ظرف چند روز آن را از طریق پست دریافت کند و یا مستقیماً آن را در رایانهاش بارگیری(Download) نماید.اینترنت همچنین امکانات بزرگی برای بازاریابی شخصی (Personalized Marketing) به ارمغان میآورد و بیشتر از هر رسانه تبلیغاتی دیگری به یک شرکت امکان تبلیغ خصوصی محصول برای یک فرد و یا گروهی از افراد را میدهد.از نمونههای بازایابی شخصی میتوان به اجتماعات برخطی چون Facebook، Orkut، ،Twitter، Friendster، Myspace و مشابه آنها اشاره کرد که هزاران کاربر به عضویت آنها در میآیند تا خود را تبلیغ کنند و به صورت برخط دوست بیابند. بسیاری از آنها نوجوانان و جوانان بین ۱۳ تا ۲۵ سال هستند.وقتی که آنها خود را تبلیغ میکنند، علایق و سرگرمیهای خود را نیز تبلیغ مینمایند و شرکتهای بازاریابی برخط(Online Marketing) نیز از آن سود میجویند تا به اطلاعاتی در مورد اینکه هریک از این کاربران معمولاً جه کالاهایی را به صورت بر خط میخرند، دست یابند و محصولات شرکت خود را برای کاربران مورد نظرشان تبلیغ کنند.
به اشتراک گذاری آنی و کم هزینه ایدهها، دانش و مهارتها، با کمک نرمافزارهای تشریک مساعی (Collaborative Software) کارهای مشارکتی را بسیار آسانتر نمودهاست. گروهها نه تنها میتوانند به ارزانی ارتباط برقرار کنند و ایدهها را به اشتراک بگذارند، بلکه در وهله اول به دلیل دسترسی بسیار گسترده اینترنت تشکیل گروهها آسانتر میشود.مثالی از این موضوع، جنبش نرمافزار آزاد است که محصولاتی چون لینوکس، فایرفاکس موزیلا و اپنآفیس بوجود آورد. "گپ" اینترنتی چه به شکل اتاقهای گپ IRC و چه به شکل پیام رسانی فوری (Instant Messaging) به همکاران اجازه میدهد که به راحتی ضمن کارکردن پشت رایانه هایشان با یکدیگر در تماس باشند. پیامها حتی راحت تر و سریعتر از سیستم پست الکترونیکی مبادله میشوند. این سیستمها میتوانند به گونهای توسعه یابند که امکان مبادله فایل و یا تماس تصویری را نیز به کاربران ارائه دهند.(مانند Yahoo Messenger)
سیستمهای کنترل نسخه (Version Control) به گروههای همکاری کننده اجازه میدهد که بر روی اسناد اشتراکی کار کنند، بدون اینکه تصادفاً کار یکدیگر را رونویسی کنند و یا منتظر رسیدن اسناد به دستشان باشند تا بتوانند کار خود را بر روی اسناد انجام دهند. تیمهای تجاری و پرژهای میتوانند تقویمها را نیز در کنار اسناد و اطلاعات به اشتراک بگدارند. چنین هماهنگیهایی در طیف وسیعی از موضوعات مانند پژوهشهای علمی، تولید نرمافزار، برنامه ریزی کنفرانس وفعالیتهای سیاسی صورت میگیرد. همکاریهای سیاسی و اجتماعی با گسترش دسترسی به اینترنت و افزایش سوادرایانهای افزایش مییابد. از رویدادهای فلش ماب در اوایل ۲۰۰۰ تا استفاده از شبکههای اجتماعی در اعتراضات به انتخابات ۲۰۰۹ در ایران. اینترنت به افراد این امکان را میدهد که به طرز بسیار موثر تری از هرروش دیگری با هم کار کنند.
اینترنت امکان دسترسی از راه دور به رایانههای دیگر و انبارههای اطلاعات در هرجای دنیا که باشندرا به کاربران رایانه میدهد. آنها میتوانند برای این کار، در صورت نیاز، از فناوریهای امنیتی، رمزنگاری و احراز هویت نیز استفاده کنند. مثلاً یک حسابدار که در منزل خود نشستهاست میتواند حسابرسی دفاتر شرکتی را که در کشور دیگری قرار دارد، بر روی سروری که در کشور سومی قرار گرفته و توسط متخصصینی در کشور چهارم نگهداری میشود، انجام دهد ویا یک کارمند اداره میتواند در هر جای دنیا که باشدمی تواند یک نشست میزکاردور (Remote Desktop) رااز طریق اینترنت و یک شبکه خصوصی مجازی (VPN) ایمن به رایانهاش در اداره باز کند.
خدمات
اطلاعات
بسیاری از افراد واژههای "اینترنت" و "وب جهان گستر"(یابه صورت کوتاه "وب") را به جای هم بکار میبرند، حال آنکه این دو واژه معناهای متفاوتی دارند. وب جهان گستر مجموعهای جهانی از اسناد و تصاویر و سایر منابعی است که به وسیله ابرپیوندها با یکدیگر ارتباط منطقی دارند و با استفاده از شناسههای منبع یکنواخت (به انگلیسی: Uniform Resource Identifier) ویا به اختصار URI مورد مراجعه قرار میگیرند. URIها به ارائه دهندگان اجازه میدهد که سرویسها و مشتریان را به صورت سمبولیک مشخص نمایند. تا مکان یابی و آدرس دهی وب سرورها، سرورهای پرونده و سایر پایگاه دادههایی که اسناد را ذخیره میکنند و همچنین عرضه دسترسی به منابع از طریق پروتکل HTTP، اصلیترین پروتکل حامل وب، را ممکن سازند.HTTP تنها یک از صدها پروتکلی است که روی وب استفاده میشود. وب سرویسها نیز میتوانند از این پروتکل برای ارتباط استفاده کنند.
مرورگرهای وب جهان گستر مثل اینترنت اکسپلورر مایکروسافت، فایرفاکس، اپرا، سافاری اپل، و گوگل کروم با استفاده از ابرپیوندهای تعبیه شده درون صفحات، به کاربران امکان میدهند از یک صفحه وب به صفحه دیگرگردش کنند. این اسناد ممکن است ترکیبی از دادههای رایانهای شامل گرافیک، صدا، متن ساده، ویدیو، چندرسانهای و محتوای تعاملی شامل بازی، برنامههای اداری و نمایشهای علمی باشد. از راه پژوهشهای اینترنتی برپایه جستجوی کلیدواژهها با استفاده از موتورهای جستجوی وب مثل یاهو و گوگل کاربران میتوانند به سرعت و سادگی به حجم گسترده و متنوع اطلاعات بر خط دسترسی داشته باشند. در مقایسه با دانشنامههای چاپی و کتابخانههای سنتی، وب جهان گستر امکان عدم تمرکز اطلاعات را فراهم ساختهاست. وب همچنین به افراد و سازمانها توانایی انتشار ایدهها و افکارشان را برای شماربسیاری از مخاطبین بالقوه با هزینه وتاخیر زمانی کمینه میدهد. انتشار یک صفحه وب، وب نوشت، یا ساخت یک وبگاه هزینه اولیه بسیار پایینی دارد و سرویسهای رایگان نیز وجود دارند، هرچندکه انتشار و نگهداری وبگاههای بزرگ و حرفهای بااطلاعات جذاب، متنوع و به روز هنوزمشکل و پرهزینهاست. بسیاری از افراد، شرکتها و گروهها از وب نوشت هاکه به گستردگی برای یادداشتهای روزانه به روزشدنی به کارمی روند نیز استفاده میکنند.برخی از سازمانهای تجاری کارکنان خود کارکنان خود را تشویق میکنند که در حوزه تخصص خود توصیههایی را در وبگاه ارائه دهند، به این امید که با دانش تخصصی و اطلاعات رایگان، بازدیدکنندگان را تحت تاثیر قراردهند وبه شرکت خود جذب کنند. نمونه این روش در مایکروسافت دیده میشود که نرمافزارنویسان این شرکت، وب نوشتهای شخصی خود را منتشر میکنند تا علاقه عمومی را نسبت به کارشان بینگیزند.
تبلیغ برخط در صفحات وب پربیننده میتواند سود زیادی در برداشته باشد. دادوستدالکترونیک یا فروش محصولات مستقیماً از طریق وب نیز به رشد خود ادامه میدهد. در روزهای نخست وب، وبگاهها تنها مجموعهای از پروندههای متنی اچ تی امال(HTML) کامل شده و منزوی بود که بر روی وب سرورها ذخیره میشدند. به تازگی وبگاهها توسط نرمافزارهای مدیریت محتوا و ویکی و با محتوای اولیه اندک ساخته میشوند. مشارکت کنندگان سیستم پایگاه دادههای اصلی را توسط صفحات ویرایشگری که به همین منظور ساخته شدهاند با محتوای مورد نظر پر میکنند، حال آنکه بازدیدکنندگان تنها شکل نهایی HTML صفحات را میبینند. پروسه گرفتن محتوای جدید و دردسترس قرار دادن آن برای بازدیدکنندگان مورد نظر ممکن است شامل سیستمهای سردبیری، تاییدی و امنیتی باشد.
ارتباط
پست الکترونیک یکی از سرویسهای ارتباطی مهم در دسترس بر روی اینترنت است. مفهوم فرستادن پیامهای متنی الکترونیکی که به گونهای به نامهها و یادداشتهای پستی میماند، قدمتی بیش از اینترنت دارد. امروزه یکی از مسایلی که میتواند حائز اهمیت باشد درک تفاوت بین پست الکترونیک اینترنتی و سامانههای پست الکترونیکی داخلی است. یک نامه الکترونیکی اینترنتی ممکن است از شبکههای مختلفی عبورکند و بر روی ماشینهای مختلفی به صورت رمزنشده دخیره شود که از کنترل فرستنده و گیرنده نامه کاملاً خارج اند. دراین مدت کاملاً امکانپذیر است که این نامه توسط اشخاص ثالثی محتوای آن خوانده و یا حتی دستکاری شود. سامانههای پست الکترونیکی کاملاً داخلی که در آن نامه هاهرگزازمحدوده شبکه داخلی سازمان خارج نمیشوند بسیار ایمن تر هستند، هر چند که در هرسازمانی کارکنان فناوری اطلاعات و یا پرسنل دیگری هستند که شغلشان در ارتباط با نظارت و گاهی دسترسی به نامههای دیگران است. تصاویر و اسناد و سایر پروندهها نیز میتواند به صورت پیوست نامه الکترونیک فرستاده شود. نامههای الکترونیکی را میتوان به چندین نشانی پست الکترونیکی رونوشت نمود.
تلفن اینترنتی نیز سرویس ارتباطی دیگری است که با پیدایش اینترنت امکانپذیر شد. صدا روی پروتکل اینترنت(VoIP) نام پروتکلی است که زیر بنای همه ارتباطات تلفنی اینترنتی است. ایده آن در اوایل دهه ۱۹۹۰ همراه با برنامههای واکی-تاکی گونه برای رایانههای شخصی ظهور کرد. در سالهای اخیر سیستمهای VoIP سادگی استفاده و راحتی تلفنهای معمولی را پیدا کردهاند. فایده این کار ان است که چون ترافیک صدارااینترنت حمل میکند، VoIP هزینه بسیار کمی دارد و حتی میتواند رایگان باشد. به ویژه برای آن دسته از اتصالات اینترنت که همیشه برقرارند (مانند مودم کابلی یا ADSL) گزینه مناسبی است. VoIP در حال پخته شدن و تبدیل شدن به رقیب جایگزینی برای سیستمهای تلفن سنتی است. همکنشپذیری بین عرضه کنندگان مختلف بهبود یافته و امکان برقراری و یا در یافت تماس با تلفنهای معمولی نیز به وجود آمدهاست. کارتهای شبکه ساده و ارزان VoIP نیز در دسترس هستند که نیاز به وجود رایانه برای استفاده از VoIPرا ازبین میبرند.
کیفیت صدا از یک تماس تا تماس دیگر تغییر میکند، اما غالباً کیفیت برابر یا بهتر از تلفن معمولی است. مشکلاتی که برای VoIP باقی میمانند، گرفتن شماره تلفنهای اظطراری و قابلیت اطمینان است. در حال حاضر تعدادی از ازائه دهندگان VoIP سرویس شمارههای اظطراری را ارائه میدهند اما هنوز به صورت جهانی در دسترس نیست. تلفنهای سنتی انرژی را از خط تلفن میگیرند و در صورت قطع برق میتوانند همچنان عمل کنند. برای VoIP این امکان بدون استفاده از منبع تغذیه پشتیبان برای تغذیه تجهیزات تلفن و دسترسی به اینترنت، وجود ندارد. VoIP همچنین محبوبیت روز افزونی بین علاقهمندان بازیهای کامپیوتری به عنوان شکلی از ارتباط بین بازیکنان مییابد.
انتقال داده
اشتراک فایل نمونهای از انتقال مقادیر بزرگ داده از طریق اینترنت است. یک فایل رایانهای را میتوان به صورت پیوست نامه الکترونیکی به دوستان و همکاران فرستاد. میتوان آن را دریک وبگاه ویا اف تی پی سرور( FTP Server) بارگذاری (Upload) نمودتا به آسانی توسط دیگران بارگیری(Download) شود. میتوان آن را در یک "مکان مشترک" در یک کارسازپرونده(File Server) قرار دارد تا به سرعت و آسانی در اختیار همکاران قرار گیرد. بار سنگین بارگیریهای شمار زیاد کاربران را میتوان با به کاربردن کارساز(سرور)های آینه و شبکههای تظیر-به-نظیر کاهش داد. دسترسی به فایل را میتوان از طریق تصدیق هویت کاربر کنترل کرد. انتقال فایل بر روی اینترنت را نیز میتوان با رمزگذاری در پوشش ابهام قرار داد. دستیابی به فایل ممکن است در گرو پرداخت مبلغی باشد که میتواند توسط کارت اعتباری پرداخت شود. مبدا و اعتبار فایل از طریق امضای دیجیتال و یا MD۵ و سایر روشهای هضم پیام قابل بررسی است. این ویژگیهای ساده اینترنت در مقیاس جهانی، به تدریج تولید، فروش و توزیع هر چیزی را که قابل ارائه به صورت فایل باشد را تغییر میدهد که این چیزها شامل همه انتشارات چاپی، محصولات نرمافزاری، اخبار، موسیقی، فیلم، ویدیو، عکاسی، گرافیک و آثار هنری دیگر میباشد.
رسانه جریانی(Streaming Media) همان عملی است که بسیاری از پخش کنندگان صدا و سیما، به واسطه آن، برنامههای خودرا از طریق اینترنت به صورت زنده پخش میکنند.(به عنوان مثال BBC) آنها امکان دیدن برنامههای غیر همزمان ضبط شده را نیز به کاربران میدهند. گروهی از آنها صرفاً برنامههای خود را از طریق اینترنت پخش میکنند. این بدین معنی است که یک رایانه میتواند به این رسانههای برخط، شبیه به همان صورتی که پیش از این تنها از طریق گیرندههای رادیو و تلویزیون امکانپذیر بود دست یابد. پادکستها گونه دیگری از پخش اینترنتی هستند که فایل صوتی توسط رایانه بارگیری میشود و سپس به یک پخش کننده رسانه قابل حمل منتقل میشود تا بتوان بعداً در حرکت بدان گوش داد.
وب بین (Webcam)ها را نیز میتوان گونه کم هزینه تر رسانه جریانی دانست. اگرچه برخی از وب بینها تصویر با ترخ فریم کامل میدهند اما غالباً تصویر کوچک است و به کندی به روز میشود. کاربران اینترنت میتوانند حیواناتی را دریک جنگل افریقایا گزارش تصویری از ترافیک در یک میدان را به صورت زنده و بی درنگ تماشا کنند و یا بر روی داراییهای خود از راه دور نیز نظارت بصری داشته باشند.محبوبیت اتاقهای گپ ویدیویی ویا کنفرانس تصویری نیز با افزایش تعداد کاربرانی که وب بین دارند، افزایش مییابد. یوتیوب در تاریخ ۱۵ فوریه ۲۰۰۵ ایجاد شد و اکنون وبگاه پیشرو در زمینه ویدیوهای جریانی است. یوتیوب از یک پخش کننده وب برپایه فلش برای پخش ویدیو استفاده میکند. کاربران ثبت نام کرده میتوانند مقدار نامحدودی ویدیو را در این وبگاه بارگذاری کنند و پروفایل شخصی بسازند. یوتیوب ادعا میکند که کاربرانش روزانه صدها میلیون ویدیو را بارگذاری و یا تماشا میکنند.
اینترنت انعطاف پذیری بیشتری را در مورد ساعتهای کاری و موقعیت جغرافیایی فراهم میسازد بویژه با گسترش اتصالهای پرسرعت و نرمافزارهای کاربردی وب. امروزه اینترنت تقریباً از همه جا و به طرق مختلفی قابل دسترسی است، بویژه از طریق دستگاههای متحرک اینترنتی (Mobile Internet Device)، تلفن همراه، جعبههای بازی دستی(Handheld Game Console) و مسیریابهای سلولی(Cellular Routers) که به کاربران اجازه میدهد که هرکجا شبکههای بی سیم وجود دارد به اینترنت متصل شوند.
با وجود محدودیت اندازه صفحه کوچک دستگاههای جیبی، خدمات اینترنت مانند وب و پست الکترونیک قابل استفادهاند. اینترنت همچنین بازار بزرگی برای شرکتها شدهاست. برخی از بزرگترین شرکتهای دنیا با بهره گیری از ماهیت کم هزینه تبلیغات و دادوستد اینترنتی (که به دادوستدالکترونیک(E-Commerce) مشهور است) بزرگ شدهاند.این سریعترین راه برای انتشار همزمان اطلاعات بین افراد متعدد است. اینترنت متعاقباً راه و رسم خریدکردن را نیز متحول ساختهاست. به عنوان مثال یک فرد میتوانند کالایی مانند یک لوح فشرده(CD) را به صورت برخط(Online) سفارش داده و ظرف چند روز آن را از طریق پست دریافت کند و یا مستقیماً آن را در رایانهاش بارگیری(Download) نماید.اینترنت همچنین امکانات بزرگی برای بازاریابی شخصی (Personalized Marketing) به ارمغان میآورد و بیشتر از هر رسانه تبلیغاتی دیگری به یک شرکت امکان تبلیغ خصوصی محصول برای یک فرد و یا گروهی از افراد را میدهد.از نمونههای بازایابی شخصی میتوان به اجتماعات برخطی چون Facebook، Orkut، ،Twitter، Friendster، Myspace و مشابه آنها اشاره کرد که هزاران کاربر به عضویت آنها در میآیند تا خود را تبلیغ کنند و به صورت برخط دوست بیابند. بسیاری از آنها نوجوانان و جوانان بین ۱۳ تا ۲۵ سال هستند.وقتی که آنها خود را تبلیغ میکنند، علایق و سرگرمیهای خود را نیز تبلیغ مینمایند و شرکتهای بازاریابی برخط(Online Marketing) نیز از آن سود میجویند تا به اطلاعاتی در مورد اینکه هریک از این کاربران معمولاً جه کالاهایی را به صورت بر خط میخرند، دست یابند و محصولات شرکت خود را برای کاربران مورد نظرشان تبلیغ کنند.
به اشتراک گذاری آنی و کم هزینه ایدهها، دانش و مهارتها، با کمک نرمافزارهای تشریک مساعی (Collaborative Software) کارهای مشارکتی را بسیار آسانتر نمودهاست. گروهها نه تنها میتوانند به ارزانی ارتباط برقرار کنند و ایدهها را به اشتراک بگذارند، بلکه در وهله اول به دلیل دسترسی بسیار گسترده اینترنت تشکیل گروهها آسانتر میشود.مثالی از این موضوع، جنبش نرمافزار آزاد است که محصولاتی چون لینوکس، فایرفاکس موزیلا و اپنآفیس بوجود آورد. "گپ" اینترنتی چه به شکل اتاقهای گپ IRC و چه به شکل پیام رسانی فوری (Instant Messaging) به همکاران اجازه میدهد که به راحتی ضمن کارکردن پشت رایانه هایشان با یکدیگر در تماس باشند. پیامها حتی راحت تر و سریعتر از سیستم پست الکترونیکی مبادله میشوند. این سیستمها میتوانند به گونهای توسعه یابند که امکان مبادله فایل و یا تماس تصویری را نیز به کاربران ارائه دهند.(مانند Yahoo Messenger)
سیستمهای کنترل نسخه (Version Control) به گروههای همکاری کننده اجازه میدهد که بر روی اسناد اشتراکی کار کنند، بدون اینکه تصادفاً کار یکدیگر را رونویسی کنند و یا منتظر رسیدن اسناد به دستشان باشند تا بتوانند کار خود را بر روی اسناد انجام دهند. تیمهای تجاری و پرژهای میتوانند تقویمها را نیز در کنار اسناد و اطلاعات به اشتراک بگدارند. چنین هماهنگیهایی در طیف وسیعی از موضوعات مانند پژوهشهای علمی، تولید نرمافزار، برنامه ریزی کنفرانس وفعالیتهای سیاسی صورت میگیرد. همکاریهای سیاسی و اجتماعی با گسترش دسترسی به اینترنت و افزایش سوادرایانهای افزایش مییابد. از رویدادهای فلش ماب در اوایل ۲۰۰۰ تا استفاده از شبکههای اجتماعی در اعتراضات به انتخابات ۲۰۰۹ در ایران. اینترنت به افراد این امکان را میدهد که به طرز بسیار موثر تری از هرروش دیگری با هم کار کنند.
اینترنت امکان دسترسی از راه دور به رایانههای دیگر و انبارههای اطلاعات در هرجای دنیا که باشندرا به کاربران رایانه میدهد. آنها میتوانند برای این کار، در صورت نیاز، از فناوریهای امنیتی، رمزنگاری و احراز هویت نیز استفاده کنند. مثلاً یک حسابدار که در منزل خود نشستهاست میتواند حسابرسی دفاتر شرکتی را که در کشور دیگری قرار دارد، بر روی سروری که در کشور سومی قرار گرفته و توسط متخصصینی در کشور چهارم نگهداری میشود، انجام دهد ویا یک کارمند اداره میتواند در هر جای دنیا که باشدمی تواند یک نشست میزکاردور (Remote Desktop) رااز طریق اینترنت و یک شبکه خصوصی مجازی (VPN) ایمن به رایانهاش در اداره باز کند.
خدمات
اطلاعات
بسیاری از افراد واژههای "اینترنت" و "وب جهان گستر"(یابه صورت کوتاه "وب") را به جای هم بکار میبرند، حال آنکه این دو واژه معناهای متفاوتی دارند. وب جهان گستر مجموعهای جهانی از اسناد و تصاویر و سایر منابعی است که به وسیله ابرپیوندها با یکدیگر ارتباط منطقی دارند و با استفاده از شناسههای منبع یکنواخت (به انگلیسی: Uniform Resource Identifier) ویا به اختصار URI مورد مراجعه قرار میگیرند. URIها به ارائه دهندگان اجازه میدهد که سرویسها و مشتریان را به صورت سمبولیک مشخص نمایند. تا مکان یابی و آدرس دهی وب سرورها، سرورهای پرونده و سایر پایگاه دادههایی که اسناد را ذخیره میکنند و همچنین عرضه دسترسی به منابع از طریق پروتکل HTTP، اصلیترین پروتکل حامل وب، را ممکن سازند.HTTP تنها یک از صدها پروتکلی است که روی وب استفاده میشود. وب سرویسها نیز میتوانند از این پروتکل برای ارتباط استفاده کنند.
مرورگرهای وب جهان گستر مثل اینترنت اکسپلورر مایکروسافت، فایرفاکس، اپرا، سافاری اپل، و گوگل کروم با استفاده از ابرپیوندهای تعبیه شده درون صفحات، به کاربران امکان میدهند از یک صفحه وب به صفحه دیگرگردش کنند. این اسناد ممکن است ترکیبی از دادههای رایانهای شامل گرافیک، صدا، متن ساده، ویدیو، چندرسانهای و محتوای تعاملی شامل بازی، برنامههای اداری و نمایشهای علمی باشد. از راه پژوهشهای اینترنتی برپایه جستجوی کلیدواژهها با استفاده از موتورهای جستجوی وب مثل یاهو و گوگل کاربران میتوانند به سرعت و سادگی به حجم گسترده و متنوع اطلاعات بر خط دسترسی داشته باشند. در مقایسه با دانشنامههای چاپی و کتابخانههای سنتی، وب جهان گستر امکان عدم تمرکز اطلاعات را فراهم ساختهاست. وب همچنین به افراد و سازمانها توانایی انتشار ایدهها و افکارشان را برای شماربسیاری از مخاطبین بالقوه با هزینه وتاخیر زمانی کمینه میدهد. انتشار یک صفحه وب، وب نوشت، یا ساخت یک وبگاه هزینه اولیه بسیار پایینی دارد و سرویسهای رایگان نیز وجود دارند، هرچندکه انتشار و نگهداری وبگاههای بزرگ و حرفهای بااطلاعات جذاب، متنوع و به روز هنوزمشکل و پرهزینهاست. بسیاری از افراد، شرکتها و گروهها از وب نوشت هاکه به گستردگی برای یادداشتهای روزانه به روزشدنی به کارمی روند نیز استفاده میکنند.برخی از سازمانهای تجاری کارکنان خود کارکنان خود را تشویق میکنند که در حوزه تخصص خود توصیههایی را در وبگاه ارائه دهند، به این امید که با دانش تخصصی و اطلاعات رایگان، بازدیدکنندگان را تحت تاثیر قراردهند وبه شرکت خود جذب کنند. نمونه این روش در مایکروسافت دیده میشود که نرمافزارنویسان این شرکت، وب نوشتهای شخصی خود را منتشر میکنند تا علاقه عمومی را نسبت به کارشان بینگیزند.
تبلیغ برخط در صفحات وب پربیننده میتواند سود زیادی در برداشته باشد. دادوستدالکترونیک یا فروش محصولات مستقیماً از طریق وب نیز به رشد خود ادامه میدهد. در روزهای نخست وب، وبگاهها تنها مجموعهای از پروندههای متنی اچ تی امال(HTML) کامل شده و منزوی بود که بر روی وب سرورها ذخیره میشدند. به تازگی وبگاهها توسط نرمافزارهای مدیریت محتوا و ویکی و با محتوای اولیه اندک ساخته میشوند. مشارکت کنندگان سیستم پایگاه دادههای اصلی را توسط صفحات ویرایشگری که به همین منظور ساخته شدهاند با محتوای مورد نظر پر میکنند، حال آنکه بازدیدکنندگان تنها شکل نهایی HTML صفحات را میبینند. پروسه گرفتن محتوای جدید و دردسترس قرار دادن آن برای بازدیدکنندگان مورد نظر ممکن است شامل سیستمهای سردبیری، تاییدی و امنیتی باشد.
ارتباط
پست الکترونیک یکی از سرویسهای ارتباطی مهم در دسترس بر روی اینترنت است. مفهوم فرستادن پیامهای متنی الکترونیکی که به گونهای به نامهها و یادداشتهای پستی میماند، قدمتی بیش از اینترنت دارد. امروزه یکی از مسایلی که میتواند حائز اهمیت باشد درک تفاوت بین پست الکترونیک اینترنتی و سامانههای پست الکترونیکی داخلی است. یک نامه الکترونیکی اینترنتی ممکن است از شبکههای مختلفی عبورکند و بر روی ماشینهای مختلفی به صورت رمزنشده دخیره شود که از کنترل فرستنده و گیرنده نامه کاملاً خارج اند. دراین مدت کاملاً امکانپذیر است که این نامه توسط اشخاص ثالثی محتوای آن خوانده و یا حتی دستکاری شود. سامانههای پست الکترونیکی کاملاً داخلی که در آن نامه هاهرگزازمحدوده شبکه داخلی سازمان خارج نمیشوند بسیار ایمن تر هستند، هر چند که در هرسازمانی کارکنان فناوری اطلاعات و یا پرسنل دیگری هستند که شغلشان در ارتباط با نظارت و گاهی دسترسی به نامههای دیگران است. تصاویر و اسناد و سایر پروندهها نیز میتواند به صورت پیوست نامه الکترونیک فرستاده شود. نامههای الکترونیکی را میتوان به چندین نشانی پست الکترونیکی رونوشت نمود.
تلفن اینترنتی نیز سرویس ارتباطی دیگری است که با پیدایش اینترنت امکانپذیر شد. صدا روی پروتکل اینترنت(VoIP) نام پروتکلی است که زیر بنای همه ارتباطات تلفنی اینترنتی است. ایده آن در اوایل دهه ۱۹۹۰ همراه با برنامههای واکی-تاکی گونه برای رایانههای شخصی ظهور کرد. در سالهای اخیر سیستمهای VoIP سادگی استفاده و راحتی تلفنهای معمولی را پیدا کردهاند. فایده این کار ان است که چون ترافیک صدارااینترنت حمل میکند، VoIP هزینه بسیار کمی دارد و حتی میتواند رایگان باشد. به ویژه برای آن دسته از اتصالات اینترنت که همیشه برقرارند (مانند مودم کابلی یا ADSL) گزینه مناسبی است. VoIP در حال پخته شدن و تبدیل شدن به رقیب جایگزینی برای سیستمهای تلفن سنتی است. همکنشپذیری بین عرضه کنندگان مختلف بهبود یافته و امکان برقراری و یا در یافت تماس با تلفنهای معمولی نیز به وجود آمدهاست. کارتهای شبکه ساده و ارزان VoIP نیز در دسترس هستند که نیاز به وجود رایانه برای استفاده از VoIPرا ازبین میبرند.
کیفیت صدا از یک تماس تا تماس دیگر تغییر میکند، اما غالباً کیفیت برابر یا بهتر از تلفن معمولی است. مشکلاتی که برای VoIP باقی میمانند، گرفتن شماره تلفنهای اظطراری و قابلیت اطمینان است. در حال حاضر تعدادی از ازائه دهندگان VoIP سرویس شمارههای اظطراری را ارائه میدهند اما هنوز به صورت جهانی در دسترس نیست. تلفنهای سنتی انرژی را از خط تلفن میگیرند و در صورت قطع برق میتوانند همچنان عمل کنند. برای VoIP این امکان بدون استفاده از منبع تغذیه پشتیبان برای تغذیه تجهیزات تلفن و دسترسی به اینترنت، وجود ندارد. VoIP همچنین محبوبیت روز افزونی بین علاقهمندان بازیهای کامپیوتری به عنوان شکلی از ارتباط بین بازیکنان مییابد.
انتقال داده
اشتراک فایل نمونهای از انتقال مقادیر بزرگ داده از طریق اینترنت است. یک فایل رایانهای را میتوان به صورت پیوست نامه الکترونیکی به دوستان و همکاران فرستاد. میتوان آن را دریک وبگاه ویا اف تی پی سرور( FTP Server) بارگذاری (Upload) نمودتا به آسانی توسط دیگران بارگیری(Download) شود. میتوان آن را در یک "مکان مشترک" در یک کارسازپرونده(File Server) قرار دارد تا به سرعت و آسانی در اختیار همکاران قرار گیرد. بار سنگین بارگیریهای شمار زیاد کاربران را میتوان با به کاربردن کارساز(سرور)های آینه و شبکههای تظیر-به-نظیر کاهش داد. دسترسی به فایل را میتوان از طریق تصدیق هویت کاربر کنترل کرد. انتقال فایل بر روی اینترنت را نیز میتوان با رمزگذاری در پوشش ابهام قرار داد. دستیابی به فایل ممکن است در گرو پرداخت مبلغی باشد که میتواند توسط کارت اعتباری پرداخت شود. مبدا و اعتبار فایل از طریق امضای دیجیتال و یا MD۵ و سایر روشهای هضم پیام قابل بررسی است. این ویژگیهای ساده اینترنت در مقیاس جهانی، به تدریج تولید، فروش و توزیع هر چیزی را که قابل ارائه به صورت فایل باشد را تغییر میدهد که این چیزها شامل همه انتشارات چاپی، محصولات نرمافزاری، اخبار، موسیقی، فیلم، ویدیو، عکاسی، گرافیک و آثار هنری دیگر میباشد.
رسانه جریانی(Streaming Media) همان عملی است که بسیاری از پخش کنندگان صدا و سیما، به واسطه آن، برنامههای خودرا از طریق اینترنت به صورت زنده پخش میکنند.(به عنوان مثال BBC) آنها امکان دیدن برنامههای غیر همزمان ضبط شده را نیز به کاربران میدهند. گروهی از آنها صرفاً برنامههای خود را از طریق اینترنت پخش میکنند. این بدین معنی است که یک رایانه میتواند به این رسانههای برخط، شبیه به همان صورتی که پیش از این تنها از طریق گیرندههای رادیو و تلویزیون امکانپذیر بود دست یابد. پادکستها گونه دیگری از پخش اینترنتی هستند که فایل صوتی توسط رایانه بارگیری میشود و سپس به یک پخش کننده رسانه قابل حمل منتقل میشود تا بتوان بعداً در حرکت بدان گوش داد.
وب بین (Webcam)ها را نیز میتوان گونه کم هزینه تر رسانه جریانی دانست. اگرچه برخی از وب بینها تصویر با ترخ فریم کامل میدهند اما غالباً تصویر کوچک است و به کندی به روز میشود. کاربران اینترنت میتوانند حیواناتی را دریک جنگل افریقایا گزارش تصویری از ترافیک در یک میدان را به صورت زنده و بی درنگ تماشا کنند و یا بر روی داراییهای خود از راه دور نیز نظارت بصری داشته باشند.محبوبیت اتاقهای گپ ویدیویی ویا کنفرانس تصویری نیز با افزایش تعداد کاربرانی که وب بین دارند، افزایش مییابد. یوتیوب در تاریخ ۱۵ فوریه ۲۰۰۵ ایجاد شد و اکنون وبگاه پیشرو در زمینه ویدیوهای جریانی است. یوتیوب از یک پخش کننده وب برپایه فلش برای پخش ویدیو استفاده میکند. کاربران ثبت نام کرده میتوانند مقدار نامحدودی ویدیو را در این وبگاه بارگذاری کنند و پروفایل شخصی بسازند. یوتیوب ادعا میکند که کاربرانش روزانه صدها میلیون ویدیو را بارگذاری و یا تماشا میکنند.
ساعت : 8:02 pm | نویسنده : admin
|
شبکه اجتماعی |
مطلب قبلی