زبان پردازهنویسی یا زبان اسکریپتنویسی، به نوعی از زبانهای برنامهنویسی گفته میشود که برای نوشتن پردازهها استفاده میشود.
پردازهها یا اسکریپتها برنامههای کوچکی هستند که بهوسیله آنها میتوان برخی وظایف تکراری و پراستفاده یا یک وظیفه طولانی را به طور خودکار انجام داد. معمولاً اینگونه وظایف به واژهپردازی در متنها مربوط میشوند.
در دهه ۱۹۶۰ اولین پوستههای فرمان ساخته شدند. کاربران این پوستهها گاه مجبور بودند برای انجام امور خود، سلسلهای از دستورهای تکراری یا مشابه را در پوسته وارد کنند. کم کم به پوستهها قابلیتهایی اضافه شد که کاربر با آن میتوانست الگوی دستورهای خود را به پوسته اعلام کند و پوسته به طور خودکار دستورها را انجام میداد. این پیشرفتها منجر به ساخت اولین اسکریپتهای پوستهای شد.
در واقع اسکریپتهای اولیه برنامههای کوچکی بودند که به وسیله آنها میشد برخی وظایف تکراری و پراستفاده یا یک وظیفه طولانی را به طور خودکار انجام داد. زبانهای اسکریپتنویسی امروزه پیشرفتهای زیادی کردهاند. آنها در زمینههایی چون کنترل وظایف و پوسته، واسطهای گرافیکی کاربر، واژهپردازی، خدمتگزاران وب و خدمتگیرندههای وب استفاده میشوند.
پردازه اجازه کنترل برخی از کاربردهای نرمافزار را به برنامهنویس میدهد اما تعدادی از فرمانها و امکانات زبانهای بزرگ در این زبانها حذف شدهاند. مثلاً امکان نوشتن فایل یا پاک کردن فایلها برروی سیستم کاربر مانند زبانهای برنامهنویسی وجود ندارد. مثالهایی از این دسته عبارت است از : جاوا اسکریپت، پرل و پایتون.
اکشناسکریپت
اکشناسکریپت 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 گفته میشود.
گفتگوی اینترنتی
گپیا چت در فارسی اصطلاحی به معنای گفتگوی اینترنتی است. اگرچه فرهنگستان زبان
فارسی واژه گپ را معادل این واژه قرار دادهاست اما این واژه چندان مورد
استقبال عمومی قرار نگرفتهاست. این واژه خلاصه شده Online chat از زبان
انگلیسی است.
فن آوری
در ابتدا برای چت اینترنتی از پروتوکل آی آر سی استفاده میشد. اما اکنون از
طریق سایر پروتکلها نیز این کار امکان پذیر می باشد.
نرمافزارهای چت
برای چت نرمافزارهای زیادی مانند آیآرسی، یاهو مسنجر، ام اس ان مسنجر، گوگل
تاک، اسکایپ و پیامرسان ویندوز لایو وجود دارد. نرم افزار های چت هم اکنون در
موبایل هم افزایش چشم گیری داشته اند و کاربران خاص خود را دارند.
اینترنت
اینترنت (به انگلیسی: Internet) ( مخفف interconnected networks شبکههای به هم
پیوسته ) را باید بزرگترین سامانهای دانست که تاکنون به دست انسان طرّاحی،
مهندسی و اجرا گردیدهاست. ریشهٔ این شبکهٔ عظیم جهانی به دههٔ ۱۹۶۰باز می گردد
که سازمانهای نظامی ایالات متّحدهٔ آمریکا برای انجام پروژههای تحقیقاتی برای
ساخت شبکهای مستحکم، توزیع شده و باتحمل خطا سرمایه گذاری نمودند. این پژوهش
به همراه دورهای از سرمایه گذاری شخصی بنیاد ملی علوم آمریکا برای ایجاد یک
ستون فقرات جدید، سبب شد تا مشارکتهای جهانی آغاز گردد و از اواسط دههٔ ۱۹۹۰،
اینترنت به صورت یک شبکهٔ همگانی و جهانشمول در بیاید. وابسته شدن تمامی
فعّالیتهای بشر به اینترنت در مقیاسی بسیار عظیم و در زمانی چنین کوتاه، حکایت
از آغاز یک دوران تاریخیِ نوین در عرصههای گوناگون علوم، فنّآوری، و به خصوص
در نحوه تفکّر انسان دارد. شواهد زیادی در دست است که از آنچه اینترنت برای بشر
خواهد ساخت و خواهد کرد، تنها مقدار بسیار اندکی به واقعیت درآمدهاست.
اینترنت سامانهای جهانی از شبکههای رایانهای بهم پیوستهاست که از پروتکلِ
«مجموعه پروتکل اینترنت» برای ارتباط با یکدیگر استفاده مینمایند. به عبارت
دیگر اینترنت، شبکهی شبکه هاست که از میلیونها شبکه خصوصی، عمومی، دانشگاهی،
تجاری و دولتی در اندازههای محلی و کوچک تا جهانی و بسیار بزرگ تشکیل شدهاست
که با آرایه وسیعی از فناوریهای الکترونیکی و نوری به هم متصل گشتهاند.
اینترنت در برگیرنده منابع اطلاعاتی و خدمات گسترده ایست که برجستهترین آنها
وب جهانگستر و رایانامه میباشند. سازمانها، مراکز علمی و تحقیقاتی و موسسات
متعدد، نیازمند دستیابی به شبکه اینترنت برای ایجاد یک وبگاه، دستیابی از راه
دور ویپیان، انجام تحقیقات و یا استفاده از سیستم رایانامه، میباشند. بسیاری
از رسانههای ارتباطی سنتی مانند تلفن و تلویزیون نیز با استفاده از اینترنت
تغییر شکل دادهاند ویا مجدداً تعریف شده اند و خدماتی جدید همچون صدا روی
پروتکل اینترنت و تلویزیون پروتکل اینترنت ظهور کردند. انتشار روزنامه نیز به
صورت وبگاه، خوراک وب و وبنوشت تغییر شکل دادهاست. اینترنت اشکال جدیدی از
تعامل بین انسانها را از طریق پیامرسانی فوری، تالار گفتگو و شبکههای اجتماعی
بوجود آوردهاست.
در اینترنت هیچ نظارت مرکزی چه بر امور فنّی و چه بر سیاستهای دسترسی و
استفاده وجود ندارد. هر شبکه تشکیل دهنده اینترنت، استانداردهای خود را تدوین
میکند. تنها استثنا در این مورد دو فضای نام اصلی اینترنت، نشانی پروتکل
اینترنت و سامانه نام دامنه است که توسط سازمانی به نام آیکان مدیریت میشوند.
وظیفه پی بندی و استاندارد سازی پروتکلهای هستهای اینترنت، IPv4 و IPv6 بر
عهده گروه ویژه مهندسی اینترنت است که سازمانی بینالمللی و غیرانتفاعی است و
هر فردی میتواند در وظایفشان با آن مشارکت نماید.
واژهشناسی
در زبان انگلیسی واژه ی Intrnet هنگامی که به شبکه جهانی مبتنی بر پروتکل IP
اطلاق می گردد، با حرف بزرگ در اول کلمه، نوشته می شود.
در رسانه ها فرهنگ عامه، گاه با اینترنت به صورت یک مقوله عمومی و مرسوم برخورد
کرده و آن را با حرف تعریف و به صورت حروف کوچک می نگارند(the internet)
در برخی منابع بزرگ نوشتن حرف اول را به دلیل اسم بودن آن جایز می دانند نه
برای صفت بودن این واژه.
واژهٔ لاتین the Internet چنانچه به شبکهٔ جهانی اینترنت اشاره کند، اسم خاص
است و حرف اوّلش با حروف بزرگ آغاز میشود(I). اگر حرف اوّل آن کوچک باشد
میتواند به عنوان شکل کوچک شده کلمه Internetwork برداشت شود که به معنی میان
شبکه است. واژه "ابر" نیز به صورت استعاری، به ویژه در ادبیات رایانش ابری و
نرمافزار به عنوان سرویس، برای اشاره به اینترنت به کار میرود.
اینترنت در برابر وب
غالباً در گفتگوهای روزمره از دو واژهٔ "وب" و "اینترنت"، به اشتباه، بدون
تمایز زیادی استفاده میشود، امااین دو واژه معانی متفاوتی دارند. اینترنت یک
سامانه ارتباطی جهانی برای داده هاست، زیرساختهای نرمافزاری و سختافزاری است
که رایانهها در سراسر جهان به یکدیگر متصل میسازد. در مقابل، وب یکی از
خدماتی (سرویس)است که بر روی اینترنت ارائه میشود و برای ارتباط از شبکه
اینترنت بهره میجوید. وب مجموعه ای از نوشته های به هم پیوسته(web page) است
که به کمک ابرپیوندها و آدرس جهانی(URL) به یکدیگر پیوند خوردهاند.
وب شامل سرویس های دیگر مانند رایانامه، انتقال فایل(پروتکل افتیپی)، گروه
خبری و بازی آنلاین است.
خدمات(سرویس) های یاد شده بر روی شبکه های مستقل و جدا از اینترنت نیز در دسترس
هستند. وب به عنوان لایه ای در بالای اینترنت قرار گرفته و سطح بالاتری نسبت به
آن قرار دارد.
تاریخچه
افتتاح پروژه اسپوتنیک توسط اتحاد جماهیر شوروی سوسیالیستی زنگ خطر را برای
ایالات متحده به صدا درآورد تا با تأسیس آرپا یا موسسه پروژههای تحقیقاتی
پیشرفته در سال ۱۹۵۸ (میلادی) پیشروی در زمینه فناوری را بازیابد.
آرپا اداره فناوری پردازش اطلاعات (IPTO) را تاسیس نمود تا پروژه SAGE راکه
برای اولین بار سامانههای رادار سراسر کشور را با هم شبکه کرده بود پیشتر برد.
هدف IPTO دست یافتن به راههایی برای پاسخ به نگرانی ارتش امریکا در باره قابلیت
مقاومت شیکههای ارتباطیشان را پاسخ دهد، و به عنوان اولین اقدام رایانه هایشان
را در پنتاگون، کوه چاین و دفتر مرکزی فرماندهی راهبردی هوایی (SAC) را به
یکدیگر متصل سازد.جی.سی.آر لیکلایدر که از ترویج کنندگان شبکه جهانی بود به
مدیریت IPTO رسید.لیکلایدر در سال ۱۹۵۰ (میلادی) پس از علاقهمند شدن به فناوری
اطلاعات از آزمایشگاه روانشناسی صدا در دانشگاه هاروارد به ام آی تی رفت. در ام
آی تی او در کمیتهای مشغول به خدمت شد که آزمایشگاه لینکلن را تاسیس کرد و بر
روی پروژه SAGE کار میکرد. در سال ۱۹۵۷ (میلادی) او نایب رئیس شرکت بی بی ان
(BBN) شد. در آنجا بود که اولین محصول PDP-۱ را خرید و نخستین نمایش عمومی
اشتراک زمانی را هدایت نمود.
پروفسورلئونارد کلینراک در کنار یکی از اولین پردازشگرهای پیغام واسط (به
انگلیسی: Interface Message Processor) در دانشگاه کالیفرنیا، لسآنجلس
در IPTO جانشین لیکلایدر ایوان ساترلند، در سال ۱۹۶۵ (میلادی)، لارنس رابرتس را
بر آن گماشت که پروژهای را برای ایجاد یک شبکه آغاز نماید و رابرتس پایه این
فناوری را کار پل باران نهاد
.
پل باران مطالعه جامعی را برای نیروی هوایی ایالات متحده آمریکا منتشر کرده بود
که در آن پیشنهاد داده بود که برای دستیابی به استحکام و مقاومت در برابر حوادث
از راهگزینی بسته کوچک استفاده شود. رابرتس در آزمایشگاه لینکلن ام آی تی کار
کرده بود که هدف اولیه از تاسیس آن، پروژه SAGE بود. لئونارد کلینراک استاد
دانشگاه کالیفرنیا تئوریهای زیربنایی شبکههای بسته را در سال ۱۹۶۲ (میلادی) و
مسیریابی سلسله مراتبی را در سال ۱۹۶۷ (میلادی) ارائه کرده بود، مفاهیمی که
زمینه ساز گسترش اینترنت به شکل امروزی آن شدند.
جانشین ساترلند، رابرت تیلور، رابرتس را قانع نمود که موفقیتهای اولیهاش در
زمینه راهگزینی بسته کوچک را گسترش دهد و بیاید و دانشمند ارشد IPTO شود.در
آنجا رابرتس گزارشی با نام "شبکههای رایانهای منابع مشترک" به تیلور داد، که
در ژوئیه ۱۹۶۸ (میلادی) م.رد تایید او قرار گرفت و زمینه ساز آغاز کار آرپانت
در سال بعد شد. پس از کار فراوان، سرانجام در ۲۹ اکتبر ۱۹۶۹ دو گره اول آنچه که
بعدها آرپانت شد به هم متصل شدند.این اتصال بین مرکز سنجش شبکه کلینراک در
دانشکده مهندسی و علوم کاربردی UCLA و سامانه NLS داگلاس انگلبرت در موسسه
تحقیقاتی SRI International در پارک منلو در کالیفرنیا برقرار شد. سومین مکان
در آرپانت مرکز ریاضیات تعاملی Culler-Fried در دانشگاه کالیفرنیا، سانتا
باربارا بود و چهارمی دپارتمان گرافیک دانشگاه یوتا بود. تا پایان سال ۱۹۷۹
(میلادی) پانزده مکان مختلف به آرپانت جوان پیوسته بودند که پیام آور رشدی سریع
بود. آرپانت تنها یکی از اجداد اینترنت امروزی بود. در تلاشی جداگانه، دونالد
دیویز نیز، در آزمایشگاه ملی فیزیک انگلیس مفهوم راهگزینی بسته کوچک را کشف
کرده بود. اونخستین بار آن را در ۱۹۶۵ (میلادی) مطرح نمود. کلمات بسته و
راهگزینی بسته در واقع توسط او ابداع شدند و بعدها توسط استانداردها پذیرفته و
به کار گرفته شدند. دیویز همچنین یک شبکه راهگزینی بسته به نام Mark I در سال
۱۹۷۰ (میلادی) درانگلستان ساخته بود
.به دنبال نمایش موفق راهگزینی بسته در آرپانت(ARPANET)؛ در سال ۱۹۷۸، اداره
پست بریتانیا، Telenet، DATAPACوTRANSPAC با یکدیگر همکاری را برای بوجود آوردن
نخستین سرویس شبکه راهگزینی بسته خود آغاز نمودند. در بریتانیا این شبکه به نام
سرویس بینالمللی راهگزینی بسته (به انگلیسی: International Packet Switched
Service) خوانده میشد. مجموعه شبکههای X.۲۵ از اروپا و آمریکا گسترش یافت و
تا سال ۱۹۸۱ کانادا، هنگ کنگ و استرالیا ر در بر گرفته بود.استانداردهای
راهگزینی بسته X.۲۵ را "کمیته مشاوره بینالمللی تلگراف و تلفن(CCITT)" - که
امروزه به نام ITU-T خوانده میشود- حول و حوش سال ۱۹۷۶ تدوین نمود. X.۲۵ از
پروتکلهای TCP/IP مستقل بود. این پروتکلها حاصل کار تجربی DARPA در آرپانت،
شبکه رادیویی بسته و شبکه ماهوارهای بسته بودند.
آرپانت اولیه بر روی برنامه کنترل شبکه(NCP) (به انگلیسی: Network Control
Program) کارمی کرد، استانداردی که در دسامبر ۱۹۷۰ توسط تیمی به نام "گروه کاری
شبکه(NWG)" به مدیریت استیو کراکر (به انگلیسی: Steve Crocker) طراحی و پیاده
سازی شد. برای پاسخگویی به رشد سریع شبکه که مرتباً مکانهای بیشتری بدان متصل
میشد، وینتون سرف (به انگلیسی: Vinton Cerf) و باب کان (به انگلیسی: Bob Kahn)
اولین توصیف پروتکلهای TCP را که امروزه به گستردگی استفاده میشوند در خلال
سال ۱۹۷۳ ارائه دادند و در مه ۱۹۷۴ مقالهای در این باب منتشر نمودند. به
کاربردن واژه اینترنت برای توصیف یک شبکه TCP/IP یکتای جهانی از دسامبر ۱۹۷۴ با
انتشار RFC ۶۷۵ آغاز شد.این RFC اولین توصیف کامل مشخصات TCP بود که توسط
وینتون سرف، یوگن دالال و کارل سانشاین در آن زمان در دانشکاه استانفورد نوشته
شد. در خلال نه سال یعدی کار تا آنجا پیش رفت که پروتکلها تصحیح شدندو بر روی
بسیاری از سیستمهای عامل پیاده سازی شدند.اولین شبکه برپایه بسته پروتکل
اینترنت(TCP/IP) از اول ژانویه ۱۹۸۳ وقتی که همه ایستگاههای متصل به آرپا
پروتکلهای قدیمی NCP را با TCP/IP جایگزین کردند، شروع به کار نمود. در سال
۱۹۸۵ بنیاد ملی علوم آمریکا(NFS) ماموریت ساخت NFSNET- یک ستون فقرات (Network
Backbone) دانشگاهی با سرعت ۵۶ کیلوبیت بر ثانیه(Kbps) - با استفاده از
رایانههای "مسیریاب فازبال" (به انگلیسی: Fuzzball router) را به مخترع این
رایانهها، دیوید ال. میلز (به انگلیسی: David L. Mills) سپرد. یک سال بعد NFS
تبدیل به شبکه پرسرعت تر ۱٫۵ مگابیت بر ثانیه ( Mbps) را نیز پشتیبانی میکرد.
دنیس جنینگ، مسئول برنامه ابرکامپیدتردرNFS تصمیمی کلیدی در مورد استفاده از
پروتکلهای TCP/IP ارائه شده توسط DARPA گرفت. گشایش شبکه به دنیای تجاری در سال
۱۹۸۸ آغاز شد.شورای شبکه بندی فدرال ایالات متحده در آن سال با اتصال NFSNET به
سامانه تجاری پست MCI موافقت نمودو این اتصال در تابستان ۱۹۸۹ برقرارشد. سایر
خدمات پست الکترونیکی تجاری(مانند OnTyme,Compuserve,Telemail ) نیز به زودی
متصل شدند. در آن سال سه ارائه دهنده سرویس اینترنت(ISP) بوجود آمدند : UUNET,
PSINet, CERFNET . شبکههای جدای مهمی که دروازههایی به سوی اینترنت (که خود
بعداً جزئی از آن شدند)می گشودند عبارت بودند از : یوزنت, بیتنت بسیاری از
شبکههای متنوع تجاری و آموزشی دیگر همچون Telenet, Tymnet, Compuserve و JANET
نیز به اینترنت در حال رشد پیوستند. Telenet - که بعدها Sprintnet نامیده شد -
یک شبکه رایانهای ملی خصوصی بود که از ۱۹۷۰ کار خود را آغاز کرده بود و امکان
دسترسی با شمارهگیری (به انگلیسی: Dial-up Access) را به صورت رایگان در
شهرهایی در سراسر امریکا فراهم ساخته بود.این شبکه سرانجام در دهه ۱۹۸۰، با
محبوبیت روزافزون TCP/IP به سایرین متصل شد. فابلیت TCP/IP برای کار با هر نوع
شبکه ارتباطی از پیش موجود، سبب رشد آسانتر آن میگشت؛ اگر چه که رشد سریع
اینترنت در وهله اول ناشی از در دسترس بودن مسبریابهای استاندارد تجاری از طرف
بسیاری از شرکتها، در دسترس بودن تجهیزات تجاری اترنت(به انگلیسی: Ethernet)
برای ساخت شبکههای محلی و پیاده سازیهای گسترده و استانداردسازی TCP/IP در
یونیکس]](به انگلیسی: Unix) و بسیاری سیستم عاملهای دیگر بود.
این رایانه نکست توسط تیم برنرز لی در سرن به عنوان اولین وب سرور دنیا استفاده
شد.
اگرچه بسیاری از کاربردها و رهنمودهایی که اینترنت را ممکن ساخت به مدت تقریباً
دو دهه وجو داشتند، امااین شبکه تا دهه ۱۹۹۰ هنوز چهرهای همگانی نداشت. در ششم
آگوست ۱۹۹۱، سرن - سازمان اروپایی پژوهش در باره ذرات - پروژه وب جهان
گستر(World Wide Web) را به اطلاع عموم رساند. وب توسط دانشمندی انگلیسی به نام
تیم برنرز لی(به انگلیسی: Sir Tim Berners-Lee) در سال ۱۹۸۹ اختراع شد.یکی از
مرورگرهای وب محبوب اولیه ViolaWWW بود که از روی هایپرکارت الگوبرداری شده بود
و از سامانه پنجره ایکس(به انگلیسی: X Window System) استفاده میکرد. سرانجام
این مرورگر جای خود را در محبوبیت به مرورگرموزاییک (به انگلیسی: Mosaic) داد.
در سال ۱۹۹۳ مرکزملی کاربردهای ابررایانش امریکا (به انگلیسی: National Center
for Supercomputing Applications) دردانشگاه ایلینوی اولین نسخه از موزاییک را
منتشر کرد و تا اواخر سال ۱۹۹۴ علاقه عمومی به اینترنتی که پیش از این آموزشی و
تخصصی بود، گسترش فراوانی یافته بود. در سال ۱۹۹۶ استفاده از واژه اینترنت
معمول شد و مجازا برای اشاره به وب هم استفاده شد. در همین هنگام، در گذر این
دهه، اینترنت بسیاری از شبکههای رایانهای عمومی از پیش موجود را در خود جا
داد(اگر چه برخی مثل FidoNet همپنان جداماندند). آنچنانکه تخمین زده شدهاست،
در دهه ۹۰ در هرسال اینترنت رشدی صددرصدی نسبت به سال قبل خود داشتهاست و در
سالهای ۱۹۹۶و۱۹۹۷ نیز دورههای کوتاهی از رشد انفجاری داشتهاست
.این میزان رشد به خصوصیت عدم کنترل مرکزی اینترنت که امکان رشد اندامی شبکه را
فراهم میسازد نسبت دادهاند و همچنین به ماهیت بازوغیراختصاصی پروتکلهای
اینترنت که امکان برقراری سازگاری و همکاری میان فروشندگان مختلف و عدم توانایی
یک شرکت برای اعمال کنترل بیش از حد بر روی شبکه را سبب میشود.جمعیت تخمینی
کاربران اینترنت مطابق آمار سی ام ژوئیه ۲۰۰۹ ، ۱٫۶۷ میلیارد نفراست.
حاکمیت
اینترنت یک شبکه جهانی توزیع شدهاست که شبکههای خودمختار به انتخاب خود به آن
پیوستهاند و بدون هیچ بدنهٔ مرکزی فرماندهی کار میکند. اما برای حفظ
همکنشپذیری آن جنبههای فنی و سیاستهای زیر ساخت پایهٔ آن و همچنین فضاهای
نام اصلی آن توسط بنگاه اینترنتی نامها و شمارههای تخصیص داده شده(به انگلیسی:
Internet Corporation for Assigned Names and Numbers) (ICANN) اداره میشوند
که مقر اصلی آن درمارینا دل ری، کالیفرنیا قرار دارد. ICANN مرجعی است که به
هماهنگ سازی تخصیص شناسههای یکتا برای استفاده در اینترنت میپردازد.این
شناسهها شامل نامهای دامنه، نشانیهای IP، شماره پورتهای برنامهها در لایه
انتقال و بسیاری از پارامترهای دیگر میشود. فضاهای نام یکتای جهانی که در آن
نامها و شمارهها به صورتی تخصیص داده میشوند که مقادیر یکتا باشند، برای
دسترسی جهانی به اینترنت ضروری هستند. ICANN توسط یک هیات مدیره بینالمللی که
از بین انجمنهای فنی، آکادمیک و سایر انجمنهای غبر تجاری دیگراینترنت انتخاب
میشود.دولت امریکا همچنان نقش اولیه را در تایید تغییرات در حوزه ریشه سامانه
نام دامنه (به انگلیسی: DNS root zone) که قلب سامانه نام دامنه(DNS) را تشکیل
میدهد. نقش ICANN در هماهنگی تخصیص شناسههای یکتا، آن را به عنوان تنها پیکره
هماهنگ سازی در شبکه جهانی اینترنت متمایز میسازد.در ۱۶ نوامبر ۲۰۰۵ نشست
جهانی در باره جامعه اطلاعاتی که در تونس برگزار شد انجمن حاکمیت اینترنت(IGF)
را تاسیس کردند تا به مسایل مرتبط با اینترنت بپردازد.
کاربردهای امروزی
اینترنت انعطاف پذیری بیشتری را در مورد ساعتهای کاری و موقعیت جغرافیایی فراهم
میسازد بویژه با گسترش اتصالهای پرسرعت و نرمافزارهای کاربردی وب. امروزه
اینترنت تقریباً از همه جا و به طرق مختلفی قابل دسترسی است، بویژه از طریق
دستگاههای متحرک اینترنتی (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) ایمن به رایانهاش در اداره باز
کند.