وب‌گاه

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






صفحهٔ وب سندی است که معمولاً به صورت اچ‌تی‌ام‌ال نوشته می‌شود و همواره با استفاده از پروتکل اچ‌تی‌تی‌پی می‌توان به آن دسترسی پیدا کرد. پروتکل اچ‌تی‌تی‌پی اطلاعات را از کارساز وب‌گاه به مرورگر وب کاربر منتقل می‌کند تا این اطلاعات برای کاربر نمایش داده شوند.

همهٔ وب‌گاهها در کنار هم یک تار جهان‌گستر بزرگ از اطلاعات را درست می‌کنند.

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

برای دسترسی به اطلاعات برخی از سایت‌های وب می‌بایست حق اشتراک داشته باشید. از میان وب‌گاههایی که برای ورود به آن‌ها به اشتراک نیاز دارید، می‌توان به وب‌گاههای پورنوگرافی اینترنتی، بخش‌هایی از وب‌گاههای خبری، وب‌گاههای بازی، میزگردهای اینترنتی، خدمات رایانامه، وب و سایت‌های ارایه‌کنندهٔ داده‌های بلادرنگ بهابازار اشاره کرد.






مرور

وب‌گاه می‌تواند محصول تلاش یک فرد یا یک گروه باشد که با هدف خاصی تهیه می‌شود. هر وب‌گاه می‌تواند ابرپیوندهایی به بقیهٔ وب‌گاهها داشته‌باشد و بنابراین گاهی اوقات کاربر نمی‌تواند میان سایت‌های مختلف تمایز آشکاری قایل شود.

وب‌گاهها را به زبان اچ‌تی‌ام‌ال می‌نویسند و یا پس از آنکه در زبان دیگری نوشته می‌شوند به زبان اچ‌تی‌ام‌ال تبدیلشان می‌کنند و دسترسی به آن‌ها از طریق یک نرم‌افزار با نام مرورگر وب یا مشتری HTTP امکان‌پذیر است. دست‌رسی به وب‌گاهها از طریق رایانه‌های موجود روی شبکهٔ اینترنت یا وسایل مرتبط با اینترنت شامل رایانه‌های رومیزی، رایانه‌های کیفی و روپایی، رایانه‌های دستیار (PDA) و تلفن‌های همراه امکان‌پذیر است.

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

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

ویرایش‌گرهای متن مانند Notepad یا برنامه‌های ویرایش‌گر متنی که درشان می‌توان پروندهٔ HTML را مستقیماً ویراست.
ویرایش‌گرهای چاپ‌نما (WYSIWYG) مانند Microsoft FrontPage و Macromedia Dreamweaver که در آن‌ها اطلاعات سایت را یک واسط GUI می‌ویراید و پروندهٔ HTML با نرم‌افزار ویرایش‌گر خودکار تولید می‌شود.
ویرایش‌گرهای الگومحور مانند Rapidweaver و iWeb که به کاربران اجازه می‌دهند به سرعت حتی بدون هیچ آشنایی با HTML و تنها با انتخاب الگوی مورد نظر خود از میان الگوهای موجود، سایت وب مورد نظرشان را ایجاد کرده و آنرا روی سرور وب قرار دهند. افزودن رنگ و تصویر و متن به الگو با استفاده از یک نشر رومیزی (DTP) صورت می‌گیرد که در این صورت نیازی به آشنایی با کد HTML وجود ندارد.

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

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

اپلتها می‌توانند توانایی‌های مرورگرهای وب را بیفزایند و از آن‌ها برای نمایش «محتویات فعال» استفاده کنند. از میان این نرم‌افزارها می‌توان به Flash یا اپلت‌های نوشته شده به زبان جاوا اشاره کرد. زبان‌های ابرمتن‌نویسی پویا(DHTML) در به‌روزآوری بی درنگ صفحات وب کاربرد زیادی دارند (در صورت استفاده از این فن، برای اعمال تغییرات به اطلاعات موجود لازم نیست به بارگذاری بپردازید)، که در آن‌ها از الگوی شیءگرای سند(DOM) و جاوااسکرپیت استفاده شده‌است، که در مرورگرهای نوین وب به صورت پیش‌ساخته دیده می‌شوند.






شیوهٔ نگارش و گویش

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






انواع وب‌گاهها

وب‌گاههای گوناگون با محتویات و کاربردهای مختلف بر روی اینترنت به چشم می‌خورند که در طبقه‌بندی آنها روش‌های متعددی وجود دارد. برخی از این طبقه بندی‌ها عبارتند از:

وب‌گاههای وابسته: یک درگاه وب که علاوه بر CMS خود، اطلاعات بقیهٔ ارایه‌دهندگان خدمات را به ازای دریافت مبلغی در اختیار کاربران قرار می‌دهند. معمولاً سه ارتباط اصلی قابل تصور است. موسسات وابسته مانند cj.com، دفترهای تبلیغاتی هم‌چون ebay.com و مصرف‌کنندگان مثل یاهو.
وب‌گاههای بایگانی: که در نگه‌داری از اطلاعات با ارزش کاربرد دارند. برای نمونه: Internet Archive که از سال ۱۹۹۶ میلیاردها وب‌صفحهٔ کهنه (و نو) را در خود جای داده‌است و Google Groups که تا اوایل سال ۲۰۰۵ بیش از هشت‌صدوپنجاه‌وچهارمیلیون پیام فرستاده به گروه‌های بحث و خبر شبکهٔ کاربران را در خود اندوخته‌است.
وب نوشت دهنده ها: وب‌گاههایی اند که درشان افراد اطلاعات روزانهٔ خود را نگهداری می‌کنند و گاهی هم میزگردهای مختلف را دربرمی‌گیرند. برای مثال می‌توان به blogger.com و wordpress.com اشاره کرد.
وبگاههای میزبانیهاست:میزبانی وب یا وب هُستینگ (به انگلیسی: Web Hosting) به مفهوم فراهم ساختن فضایی است که کاربر می‌تواند فایل‌های وب‌گاه خود را در آن قرار دهد.
وب‌گاه بازرگانی: که در بهبود خدمات یا رونق بازرگانی کاربرد دارند.
وب‌گاه تجاری یا سایت تجارت الکترونیک: که برای خرید کاملاً مورد استفاده قرار می‌گیرد، مانند: amazon.com
وب‌گاه ارتباطییا شبکه اجتماعی: وب‌گاهی که در آن افراد با علایق مشترک به دادوستد اطلاعات می‌پردازند، معمولاً از طریق گفتگو یا بردهای پیام، برای مثال:مای‌اسپیس.
وب‌گاههای دادگان: وب‌گاهی که کاربرد اصلی‌اش در جست‌وجو و نمایش محتویات پایگاه‌های داده خاص مانند IMDB(بانک اطلاعات اینترنتی فیلم‌ها).
وب‌گاه نرم‌افزارسازی: سایتی که هدفش ارایهٔ اطلاعات و منابع مربوط به تولید نرم‌افزار، مهندسی نرم‌افزار، طراحی وب و مواردی از این قبیل است.
وب‌گاه راهنمای دادگان: سایتی که حاوی مطالب مختلفی است که به صورت منظم طبقه‌بندی شده‌است مانند راهنمای یاهو، راهنمای گوگل.
وب‌گاههای دریافت: مشخصاً در دانلودکردن اطلاعات مثلاً نرم‌افزارها،آهنگ ها نسخه‌های نمایشی بازی‌ها یا پس‌زمینه‌های رایانه‌ای کاربرد دارند که معمولا در کشور هایی که قانون کپی رایت را رعایت می کنند و به آن اهمیت می دهند این سایت ها غیر مجاز هستند و با آن ها برخورد قانونی می شود.ولی کشور هایی مانند ایران،سایت های دانلود بسیاری دارند.
وب‌گاههای استخدامی: به کارفرمایان این امکان را می‌دهند که نیازهای کاری خود را با اینترنت در اختیار کاربران بنهند. فرد جویای کار هم می‌تواند برگهٔ درخواست همکاری را پر کرده و یا اطلاعات شخصی خود را در اختیار کارفرما بگذارد.
وب‌گاه بازی: سایتی که افراد با مراجعه به آن همانند مراجعه به «زمین بازی» به بازی می‌پردازند مانند pogo.com.
وب‌گاههای دامنهٔ جغرافیایی: به نام‌های دامنه‌ای اشاره دارد که مشابه نام‌های مناطق جغرافیایی هستند مانند شهرها و کشورها برای مثال Richmond.com با آدرس اینترنتی www.richmond.com نام دامنهٔ جغرافیایی ریچموند در ایالت ویرجینا است.
وب‌گاههای خنده و سرگرمی: حاوی لطیفه و نغز و مطالب سرگرم‌کننده هستند.
وب‌گاههای اطلاعاتی: نقش خبررسانی را بر عهده دارند و لزوماً با اهداف اقتصادی طراحی نشده‌اند مانند: RateMyProfessors.com و داش‌نامهٔ آزاد ویکی‌پدیا. اغلب موسسات دولتی، آموزشی و غیرانتفاعی یک وب‌گاه خبررسانی هم دارند.
وب‌گاههای جاوا اپلت: حاوی نرم‌افزار مورد نیاز برای اجرای برنامه خوب روی وب است.
وب‌گاههای آینه ای: نسخه معادل یک وب‌گاه است.
وب‌گاههای خبری: همانند پایگاه اینترنتی اطلاعاتی است اما تنها اخبار و تفاسیر خبری را ارایه می‌دهد.
صفحهٔ اصلی شخصی: یک فرد یا یک گروه کوچک (مانند یک خانواده) هدایتش می‌کنند و حاوی اطلاعاتی است که فرد به سلیقه‌اش روی تار جهان‌گستر قرار می‌دهد.
وب‌گاههای برگه: وب‌گاهی که برای کسب اطلاعات مهم و امنیتی مانند رمزهای گذر و اطلاعات مربوط به کارت‌های اعتباری طراحی شده‌است و می‌تواند با گمراه کردن فرد اطلاعات شخصی وی مانند کد سرپرستی امنیت اجتماعی وی یا اطلاعات کارت‌اعتباری وی را به دست آورد. (فیشینگ را ببینید).
وب‌گاههای سیاسی: پایگاهی اینترنتی که افراد بر روی آن دیدگاه‌های سیاسی خود را مطرح می‌کنند.
وب‌گاههای نمره‌دهی: سایتی که در آن افراد یک موضوع خاص را ستایش کرده و یا از آن انتقاد می‌کنند. مانند ratemycar.com، ratemygun.com، ratemypet.com، hotornot.com.
وب‌گاههای مرور: وب‌گاهی که در آن افراد نظرات خود را راجع به انواع محصولات و خدمات با یکدیگر مطرح می‌کنند.
وب‌گاههای جستجوگر: سایتی که در آن اطلاعات کلی و دروازه‌هایی برای دستیابی به اطلاعات بقیه وب‌گاهها و جستجو در وب ارایه شده‌است. نمونهٔ بارز این سایت‌ها، وب‌گاه گوگل و پرکاربردترین وب‌گاههای از این نوع، سایت یاهو است.
وب‌گاههای ترسناک: وب‌گاهی که حاوی تصاویر یا مطالبی ترسناک است. مانند rotten.com و ratemypoo.com.
وب‌گاههای شکوائیه: sucks.com یک سایت وب معروف است که در آن افراد به انتقاد از اشخاص، مکان‌ها، شرکت‌ها، دولت‌ها و سازمان‌ها می‌پردازند.
وب‌گاههای درگاه وب: وب‌گاه که دروازه یا پورتالی را به سوی بقیهٔ منابع موجود روی شبکه اینترنت یا اینترانت باز می‌کند.
ود سایت: وب‌گاه که در آن جزئیات یک مراسم ازدواج مانند خاطرات، تصاویر، اطلاعات مربوط به آن ارایه می‌شود.

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

بسیاری از وب‌گاههای تجاری شکل و شمایلی شبیه دفترک (بروشور)ی wikitionary دارند و در آن‌ها تبلیغات تجاری فراوانی وجود دارند. برخی از سایت‌ها هم وسیلهٔ ارتباطی افراد با یکدیگر از طریق گفت‌وگوی وب هستند.

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







پروتکل انتقال ابرمتن

منشور انتقال ابرمتن (به انگلیسی: Hypertext Transfer Protocol) (مخفف انگلیسی: HTTP) یک پروتکل لایهٔ کاربرد (Application Layer) برای سیستم‎های توزیع شده می‎باشد. این پروتکل عمومی علاوه بر استفاده اصلی آن در ابرمتن‎ها در بسیاری از زمینه‎های دیگر کامپیوتری مانند سامانهٔ نام دامنه (DNS) قابل استفاده است. از نسخه اولیه، این پروتکل در وب جهانی استفاده می‎شد و آخرین به‎روز رسانی آن در ماه جون ۱۹۹۹ تحت عنوان «HTTP/1.1» صورت گرفت.

گسترش این پروتکل بر عهدهٔ نیروی ضربت مهندسی اینترنت (IETF) و کنسرسیوم وب جهان‌شمول (W3C) می‎باشد. این امر در گروه کاری پروتکل انتقال ابرمتن (HTTP Working Group) صورت می‎گرد.






تاریخچه

تیم برنرز لی، طراح و پیشنهاد دهنده وب جهانی که اکنون تحت عنوان WWW شناخته می‎شود، برای اولین بار پروتکل انتقال ابرمتن را به همراه ساختار اولیهٔ زبان نشانه گذاری ابرمتن (HTML) در یک وب سرور ساده و یک مرورگر مبتنی بر متن ارائه داد. در این نسخهٔ اولیه تنها روش درخواست (Request Method) موجود GET و تمامی پاسخ ها به زبان HTML بودند.

اولین نسخهٔ مستند پروتکل انتقال ابرمتن نسخهٔ ۰٫۹ آن بود که در سال ۱۹۹۱ منتشر شد. دیو راگت، که در سال ۱۹۹۵ گروه کاری پروتکل انتقال ابرمتن (HTTP Working Group) را رهبری می‎کرد، خواستار گسترش این پروتکل شد و نهایتاً نسخه ۱٫۰ تحت عنوان «HTTP/1.0» در سال ۱۹۹۶ به صورت رسمی معرفی شد.

گروه کاری این پروتکل در ژانویه سال ۱۹۹۷ اولین استاندارد نسخهٔ ۱٫۱ را که در همان زمان توسط بسیاری از مرورگرها پشتیبانی می‎شد، به صورت رسمی منتشر کرد. آخرین به‎روز رسانی نسخهٔ ۱٫۱ در جون سال ۱۹۹۹ در درخواست شماره ۲۶۱۶ (RFC 2616) انجام شد.






ساختار کلی

پروتکل انتقال ابرمتن یک پروتکل درخواست و پاسخ در مدل کلاینت–سرور می‎باشد. برای مثال یک مرورگر وب می تواند یک کلاینت و نرم‎افزار موجود بر روی سرویس‎دهندهٔ وبسایت، یک سرور باشد. شروع این پروتکل از طرف کلاینت است که با ارسال یک درخواست HTTP به سمت سرور گفت‎وگو را آغاز می‎کند. سرور بر اساس درخواست ارسالی یا منبعی مانند یک فایل را در اختیار کلاینت می‎گذارد و یا عملیات خاصی را انجام می‎دهد. نتیجهٔ این عملِ سرور در بستهٔ پاسخ HTTP برای کلاینت ارسال می‎شود. بستهٔ پاسخ شامل اطلاعات وضعیت و احتمالاً محتویات منبع درخواست شده می‎باشد.

مرورگر وب یک نمونه از عامل کاربر (به انگلیسی: User Agent) است. از دیگر عوامل کاربر می‎توان به خزندهٔ وب، نرم‎افزار های تلفن‎های همراه و نرم‎افزار های دیگری که به وب متصل شده و از اطلاعات آن استفاده و یا صفحه‎ای را نمایش می‎دهند، اشاره کرد.

پروتکل انتقال ابرمتن یک پروتکل لایهٔ کاربرد است که در مجموعه پروتکل اینترنت طراحی شده و مورد استفاده قرار می‌گیرد. این پروتکل با فرض اینکه لایهٔ حمل (Transport Layer) زیرین آن قابل اعتماد است طراحی شده و معمولاً از پروتکل هدایت انتقال (TCP) به عنوان لایهٔ زیرین استفاده می‎کند. با این حال از این پروتکل بر روی لایه‎های غیرقابل اطمینان نیز استفاده می‎شود. مثلا در پروتکل SSDP، پروتکل انتقال ابرمتن بر روی پروتکل داده‎نگار کاربر (یک پروتکل غیر امن) مورد استفاده قرار می‎گیرد.

منابع HTTP همگی با یک شناسانهٔ یکنواخت منبع (URI) یا به طور مشخص‎تر با یک نشانی وب (URL) آدرس‎دهی و مشخص می‎شوند. تمامی این آدرس‎ها با نشانهٔ http یا https آغاز می‎گردد. از این آدرس‎ها در زبان نشانه‌گذاری ابرمتن به صورت گسترده برای انتقال بین صفحات مختلف استفاده می‎گردد و از آن تحت عنوان پیوند یا لینک یاد می‎شود.

نسخهٔ ۱٫۱ این پروتکل برخلاف نسخهٔ ۱٫۰ قابلیت استفاده از یک اتصال (به انگلیسی: Connection) برای چندین درخواست را دارد. مثلا می‎تواند عکس‎ها، فایل‎های اسکریپت و … موجود در یک صفحه را با همان اتصال اولیه دریافت کند. لذا سرعت آن به دلیل حذف شدن برقراری ارتباط مجدد TCP نسبت به نسخهٔ ۱٫۰ افزایش یافته است.






جلسه

در پروتکل انتقال ابرمتن به دنباله‎ای از درخواست‎ها و پاسخ‎ها جلسه (به انگلیسی: Session) گفته می‎شود. کلاینت با ایجاد یک اتصال هدایت انتقال (TCP) بر روی یک درگاهِ از پیش تعیین شده بر روی سرور ( معمولا درگاه شماره ۸۰؛ فهرست عددهای درگاه تی‌سی‌پی و یودی‌پی )، جلسه را آغاز می‎کند. سرور وب همواره بر روی درگاه در انتظار درخواست‎های کلاینت‎ها می‎باشد. بعد از دریافت درخواست ارسال شده، سرور با ارسال یک خط وضعیت (به انگلیسی: Status Line) و بدنه، پاسخ کلاینت را به او بازمی‎گرداند. بدنه بستهٔ پاسخ معمولاً حاوی منبع درخواست شده است؛ با این حال از آن برای ارسال خطا و اطلاعات دیگر نیز استفاده می‎شود.






روش‎های درخواست

پروتکل انتقال ابرمتن روش‎هایی را برای درخواست تعریف کرده است (به انگلیسی: Request Method)که هر کدام از آن‎ها باعث انجام عمل خاص در سمت سرور می‎شوند. نسخهٔ ۱٫۰ روش‎های درخواست GET، POST و HEAD را دارا بود.بخش در نسخهٔ ۱٫۱ پنج روش جدید افزوده شدبخش ۹: OPTIONS، PUT، DELETE، TRACE و CONNECT. از آنجایی که عملکرد این روش‎ها به طور کامل تعریف و شرح داده شده است، لذا تمامی مرورگر ها و سرور ها به راحتی می‎توانند این روش‎ها را پیاده‎سازی و استفاده نمایند. اگر روشی برای سرور تعریف نشده باشد، با آن به عنوان یک روش غیرِامن برخورد خواهد کرد. در تعداد روش‎ها هیچ محدودیتی وجود ندارد. این نکته باعث می‎شود که گسترش احتمالی این پروتکل در آینده به زیرساخت‎ها فعلی آن آسیبی نرساند و آن‎ها را تغییر ندهد. برای مثال در حال حاضر پروتکل WebDAV هفت روش جدید درخواست را تعریف کرده است.







GET
درخواست نمایش منبعِ درخواست‎داده‎شده را می‎دهد. (این منبع معمولا یک فایل یا پرونده می‎باشد.) این روش فقط اطلاعات را از سرور دریافت می‎کند و نباید هیچ تاثیری بر روی منابع سرور بگذارد.






HEAD
این روش دقیقا مانند روش GET عمل می‎کند با این تفاوت که بدنه پاسخ را نمی‎خواهد. از این روش برای به‎دست‎آوردن فراداده‎های موجود در سرآیند (به انگلیسی: Header) استفاده می‎شود. یکی از استفاده‎های رایج این نوع درخواست، بررسی تغییر یافتن یک منبع است.






POST
در این روش به همراه بستهٔ درخواست اطلاعاتی نیز فرستاده می‎شود. سرور با توجه به نشانی وب (URL) درخواست شده و اطلاعات ارسال شده، منبع مورد نظر را در بستهٔ پاسخ برمی‎گرداند. این اطلاعات ارسالی می‎تواند نامِ‎کاربری و کلمهٔ‎عبور، یک نظر بر روی یک مطلب و یا اطلاعات هر فرم دیگری که توسط کاربر وارد شده است، باشد.بخش ۹٫۵






PUT
در این روش منبعی به همراه بستهٔ درخواست ارسال شده و از سرور تقاضا می‎شود که این منبع را در آدرس موجود در بسته بارگذاری کند. اگر در محلِ درخواست شده قبلا منبع دیگری قرار داشته باشد، منبع جدید جایگزین خواهد شد.






DELETE
از سرور درخواست می‎کند که آدرس فرستاده شده را حذف نماید.






TRACE
در این روش سرور اطلاعات ارسال شده را عیناً به کلاینت باز می‎گرداند. (برای بررسی تغییراتی که واسط‎های شبکه بر روی بسته می‎گذارند، از این روش استفاده می‎شود.)






OPTIONS
از سرور تقاضا می‎کند تا روش‎های درخواستِ (به انگلیسی: Request Method) موجود برای نشانی فرستاده شده را اعلام نماید. برای گرفتن تمامی روش‎های درخواست قابل اجرا بر روی سرور می‎توان از نشانی '*' استفاده کرد.






CONNECT
بستهٔ پروتکل ابرمتن را به یک تونل TCP/IP تبدیل می‎کند. این عمل معمولاً برای برقراری ارتباط امن (HTTPS) بر روی یک پراکسی سرور ناامن استفاده می‎شود.






PATCH
این روش که در سال ۲۰۱۰ به پروتکل افزوده شد، برای ایجاد تغییرات جزیی بر روی منابع استفاده می‎شود.

سرورهای وب موظف هستند حداقل روش‎های GET و HEAD را پیاده‎سازی نمایند.بخش ۵٫۱٫۱






وضعیت جلسه

پروتکل انتقال ابرمتن یک پروتکل Stateless می‎باشد. بدین معنی که سرور در یک جلسه هیچ ردی از کاربر ذخیره نمی‎کند. به طور مثال، سرور وب هیچگاه نمی تواند به یاد بیاورد که شما در این وبسایت لاگین کرده‎اید یا نه! اما به دلیل نیاز شدید نرم‎افزار های تحت وب به ثبت وضعیت، با استفاده از تکنیک‎ها زیر این عمل انجام می‎گیرد:







کوکی
استفاده از متغیر های پنهان در فرم‎های وب
استفاده از متغیر های موجود در رشتهٔ درخواست. مانند: index.php?session_id=some_unique_id







کدهای وضعیت

از نسخهٔ ۱٫۰ پروتکل انتقال ابرمتن به بعد، خطِ اولِ پاسخِ سرور تحت عنوان خط وضعیت شناخته شده است. این خط حاوی یک کد عددی (مانند ۴۰۴) که به عنوان کد وضعیت شناخته می‎شود و یک پیام متنی (مانند "یافت نشد" یا "Not Found") که با عنوان علت وضعیت شناخته می‎شود، می‎باشد. نحوهٔ برخورد عامل کاربر با پاسخ، بستگی کامل به کد وضعیت و فیلدهای سرآیند بستهٔ پاسخ دارد. با این حال استفاده از کدهای سفارشی (که در پروتکل اصلی موجود نیستند) نیز بلامانع می‎باشد. زیرا عوامل کاربر در برخورد با کدهای تعریف نشده، از رقم اول عدد آن‎ها برای شناسایی نوع کلی کد استفاده می‎کنند.


۶٫۱

کدهای وضعیت پروتکل انتقال ابرمتن به ۵ دستهٔ کلی تقسیم می‎شوند:

کدهای 1xx یا اطلاعاتی: این کدها با عدد ۱ آغاز می‎شوند. این گروه، این پیام کلی را مشخص می‎کنند: «درخواست شما دریافت شد، ادامه دهید».
کدهای 2xx یا موفقیت: این کدها با عدد ۲ آغاز می‎شوند. یعنی «درخواستِ ارسالی دریافت شده، درک شده، پذیرفته شده و با موفقیت انجام شده است».
کدهای 3xx یا تغییر مسیر: این کدها با عدد ۳ آغاز می‎شوند. یعنی «کلاینت برای کامل شدن درخواست نیازمند انجام عملیات اضافی است».
کدهای 4xx یا خطای کلاینت: این کدها با عدد ۴ آغاز می‎شوند. این گروه از کدها مشخص می‎کنند که «کلاینت در درخواست خود اشتباه کرده و یا باعث بروز خطا شده است».
کدهای 5xx یا خطای سرور: این کدها با عدد ۵ آغاز می‎شوند. با این مفهوم که «سرور در انجام عملیات مربوط به یک بستهٔ درخواستِ ظاهراً صحیح، ناموفق بوده و با خطا مواجه شده است».

علت وضعیت هایی که در متن تعریف پروتکل آمده‎اند پیشنهادی بوده و می‎توانند با متون دیگر، به صلاحِ دید توسعه دهنده، تغییر پیدا کنند. این عبارت می‎تواند توسط عامل کابر به عنوان توضیحات اضافی به کاربر نمایش داده شود.







وب جهان‌گستر

جهان وب٬ وب جهان‌گستر٬ تار گیتی‌گستر٬ یا به طور ساده وب (به انگلیسی: World Wide Web) یک سامانهٔ اطلاعاتی از پرونده‌های ابرمتنی متصل‌به‌هم است که از طریق شبکهٔ جهانی اینترنت قابل دسترسی هستند. به‌کمک یک مرورگر وب می‌توان صفحات وب (که شامل متن، تصویر، ویدیو و سایر محتویات چندرسانه‌ای هستند) را مشاهده و به‌کمک ابرپیوندها در میان آن‌ها حرکت‌کرد.

تیم برنرز لی، یک پژوهشگر علوم رایانه و کارمند موسسهٔ سرن در نزدیکی ژنو، در ماه مارچ سال ۱۹۸۹ میلادی پیشنهاد اولیهٔ وب امروزی را مطرح کرد. پیشنهاد ارائه‌شده در ۱۹۸۹ قرار بود که یک سیستم ارتباطی برای موسسه سرن شود، اما برنرز لی به‌زودی متوجه‌شد که این ایده قابلیت جهانی‌شدن را دارد. برنرز لی به همراه رابرت کایلیائو در سال ۱۹۹۰ میلادی این پیشنهاد را به‌عنوان «پیوند و دسترسی به اطلاعات مختلف به‌صورت تارنمایی از گره‌هایی که کاربران به دل‌خواه در میان آن‌ها حرکت می‌کنند» ارائه دادند. برنرز لی در ماه دسامبر همان سال اولین وب‌گاه را به‌وجودآورد و در ۷ اوت سال ۱۹۹۱ میلادی آن‌را به‌عنوان یک پروژه بر روی گروه خبری alt.hypertext منتشر کرد.






واژهٔ وب

واژهٔ وب (به معنی تار) در بسیاری از ترکیبات «اینترنتی» می‌آید. کم کم «وب» به‌عنوان واژهٔ بین‌المللی جا افتاده و به منظورهای مختلفی به کار می‌رود. این واژه معمولاً به صورت اشتباه به جای اینترنت به کار می‌رود اما وب در حقیقت یکی از خدماتی است که روی اینترنت ارایه می‌شود (مانند پست الکترونیکی).

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






تاریخچه

ایده اولیه در مورد تارِ گیتی‌گستر به سال ۱۹۸۰ (میلادی) برمی‌گردد. زمانی که در شهر سرن سوئیس، تیم برنرز لی شبکه ENQUIRE را ساخت (که به "Enquire Within Upon Everqthing CSS" اشاره داشت و همنام کتابی بود که وی از جوانی خود به یاد داشت. اگرچه آنچه وی ساخت با وب امروزی تفاوت‌های زیادی دارد اما ایده اصلی در آن گنجانده شده است (و حتی برخی از این ایده‌ها در پروژه بعدی برنرزلی پس از WWW یعنی وب معنایی به کار گرفته شد).

در مارس 1989، برنرزلی یک پیشنهاد را نوشت که به ENQUIRE اشاره داشت و یک سیستم اطلاعاتی پیشرفته را توصیف می‌کرد. وی با کمک رابرت کایلا، پیشنهاد طراحی تور جهان گستر را در 12 نوامبر 1990 ارائه کرد. اولین مرور وب جهان توسط برنرزلی با عنوانNEXTcube مورد استفاده قرار گرفت و وی اولین مرورگر وب و تور جهان گستر را در سال 1990 طراحی کرد.

در کریسمس 1990، برنرز لی همه ابزارهای لازم برای کار با وب را فراهم کرد

در 6 آگوست 1991 وی خلاصه‌ای از پروژه تور جهان گستر را در گروه خبری alt.hypertext پست کرد. در همین روز وب به عنوان یک خدمات عمومی روی اینترنت ارائه شد. مفهوم مهم ابر متن در پروژه‌های قدیمی‌تر مربوط به دهه 1960 مانند Project Xanadu مربوط به تد نلسون و NLS (سیستم آنلاین) مربوط به داگلاس انگلبارت مطرح شد.

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

تور جهان گستر با بقیه سیستم‌های ابر متنی موجود تفاوت‌هایی داشت:

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

در 30 آوریل سال ۱۹۹۳ (میلادی)، CERN اعلام کرد که تور جهان گستر به صورت رایگان برای همه افراد قابل دسترسی است. این موضوع دو ماه پس از اعلام رایگان نبودن پروتکل گوفر مطرح می‌شد و در نتیجه تمایل به وب به شدت افزایش یافت. قبل از آن مرورگر وب معروفی به نامViolaWWW وجود داشت که بر اساس ابر کارت کار می‌کرد. نسخه گرافیکی تور جهان گستر با نام مرورگر وب موزائیک در سال 1993 توسط مرکز ملی برنامه‌های سوپرکامپیوتر که توسط مارک اندرسن راه اندازی شده بود مورد انتقاد شدید قرار گرفت. قبل از عرضه موزائیک، گرافیک و متن در صفحات وب از یکدیگر جدا بودند و در پروتکل‌های اینترنتی قبلی مانند پروتکل گوفر و مرور اطلاعات ناحیه وسیع گرافیک کاربرد زیادی نداشت. واسط کاربر گرافیکی موزائیک وب را به مشهورترین پروتکل اینترنتی تبدیل کرد.






اجزاء وب

تار گیتی‌گستر ترکیبی از چهار عنصر اصلی است:

hypertext یا بسامتن: فرمتی از اطلاعات که به افراد اجازه می دهد تا در محیط کامپیوتر با استفاده از ارتباط داخلی موجود میان دو متن از بخشی از سند به بخش دیگری از آن یا حتی سند دیگری مراجعه کنند و به اطلاعات جدیدی دسترسی پیدا کند.
URL: شناسه‌های منحصر به فردی که برای مشخص کردن محل حضور اطلاعات موجود روی شبکه (فایل کامپیوتری، سند یا منابع دیگر) به کار می روند.
مدل Client-Server یا مشتری-خدمت‌گزار: سیستمی که در آن نرم‌افزار یا کامپیوتر مشتری از نرم‌افزار یا کامپیوتر خدمت‌گزار تقاضای دریافت منابع اطلاعاتی مانند داده یا فایل می کند.
markup language یازبان علامتگذاری: کاراکترها یا کدهای موجود در متن که ساختار متن وب معنایی را مشخص می کنند.







معماری سیستم وب

کلاً از دیدگاه فنی سیستم وب در دو بخش سازماندهی می شود:

برنامه سمت سرویس دهنده ی وب و برنامه سمت مشتری وب
پایگاه اطلاعاتی توزیع شده از صفحات ابرمتن، فایل های داده مثل صدا، تصویر و بطور کل هر منبع

صفحه وب چیزی نیست مگر یک فایل متنی بسیار ساده که با یکی از زبان های نشانه گذاری ابرمتنی مثل HTML، XHTML ، DHTML یا XML تدوین می شود. کاری که مرورگر به عنوان مشتری وب انجام می دهد آن است که تقاضای دریافت یکی از صفحات یا فایل ها را در قالب قراردادی استاندارد (به نام پروتکل HTTP) به سمت سرویس دهنده ارسال کند. در سمت مقابل سرویس دهنده ی وب این تقاضا را پردازش کرده و در صورت امکان، فایل مورد نظر را برای مرورگر ارسال می کند. مرورگر پپس از دریافت فایل ابرمتنی ، آن را تفسیر کرده و به صورت صفحه آرایی شده روی خروجی نشان می دهد. اگر فایل ابرمتنی در جایی به فایل صدا یا تصویر پیوند خورده باشد آن ها نیز توسط مرورگر تقاضا شده و پس از دریافت در جای خود قرار می گیرند.






وب چگونه عمل می‌کند

برای مشاهده یک صفحه وب یا دیگر منابع اطلاعاتی روی تور جهان گستر معمولاً URL صفحه را در یک مرورگر وب وارد می‌کنیم و یا لینک ابر متن مربوط با آن صفحه یا منبع را انتخاب می‌کنیم. اولین گام که در پشت پرده انجام می‌شود اختصاص یک آدرس IP به بخش سرور URL است که توسط پایگاه داده توزیع شده اینترنت صورت می‌گیرد که به آن DNS می‌گویند.

در مرحله بعد یک درخواست HTTP به مرور وب در آن آدرس IP ارسال می‌شود و درخواست مشاهده صفحه ارائه می‌گردد. در صورتی که یک صفحه معمولی در خواست شده باشد متن HTML، تصاویر گرافیکی یا هر فایل دیگری که مربوط به آن صفحه است در اختیار مشتری (مرورگر وب) قرار می‌گیرد. سپس مرورگر وب صفحه HTML، و دیگر فایل‌های دریافت شده را ترجمه می‌کند. در نهایت "صفحه" مورد نظر مشتری در اختیار وی قرار می‌گیرد.

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

اصطلاح "گشت و گذار در اینترنت" اولین بار توسط جین آرمور پولی که یک کتابدار بود در مقاله یا به نام "Surfing the INTERNET" مطرح شد که ژوئن سال 1992 در "بولتن کتابخانه ویلسن" در دانشگاه مینوستا چاپ شد. اگر چه پولی مستقلاً از این کلمه استفاده کرد اما در یوزنت‌های مربوط به سال‌های 1991 و 1992 این کلمه دیده می‌شود و حتی عده‌ای می‌گویند که این کلمه در مجمع هکرها در دو سال قبل از آن به صورت شفاهی عنوان شده بود. پولی در تاریخ اینترنت به مادر اینترنت معروف است.

اغلب صفحات وب شامل ابر لینک‌هایی هستند که به صفحات و منابع اطلاعاتی مرتبط با آنها مانند صفحات دانلود، اسناد منابع، تعاریف و غیره منتهی می‌شوند. چنین مجموعه‌ای از منابع مفید و مرتبط با هم توسط لینک‌های ابر متن به یکدیگر متصل شده‌اند را "وب" اطلاعات می‌نامند. قرار دادن این مجموعه منابع روی اینترنت شبکه‌ای را تولید کرد که در اوایل دهه 1990 توسط تیم برنرز لی، " تور جهان گستر" نامیده شد.






عملکرد برنامه ی سرویس دهنده و مشتری وب

در سمت سرویس دهنده ی وب، پروسه ای وجود دارد که دائماً به پورت شماره 80 گوش می دهد و منتظر تقاضای برقراری اتصال توسط مشتریان می ماند. دقت کنید که برنامه ی سرویس دهنده از سوکت های نوع استریم استفاده می کند و اتصال از نوع TCP است. فرامین و داده هایی که بین سرویس دهنده و مرورگر وب مبادله می شوند تماماً متنی هستند.(همانند سیستم پست الکترونیکی) پس از آنکه ،ژ\ بین برنامه ی سویس دهنده و مشتری برقرار شد برنامه ی مشتری حق دارد یک یا چندین تقاضا بفرستد و این تقاضا ها باید در قالب استاندارد HTTP باشد. سرویس دهنده، یکایک تقاضا ها را دریافت و پردازش و در صورت امکان آن ها را اجرا می کند.






کش (cache)

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

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

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

بدین ترتیب می‌توانیم بین اعمال "دریافت" و "ارسال" HTTP تفاوت قائل شویم. در صورتی که همه شرایط محقق شود، داده‌هایی که توسط فرمان دریافت (GET) درخواست شده‌اند می‌توانند در کش ذخیره شوند در حالی که داده‌های به دست آمده پس از ارسال (posting) اطلاعات به سرور در کش ذخیره نمی‌شوند.






جاوا و جاوا اسکریپت

این سیستم به سرورهای وب امکان می‌دهد تا برنامه‌های کوچکی (که اپلت (applet) نامیده می‌شوند) را مستقیماً در شبکه اطلاعات بازیابی شده قرار دهند و این اپلت‌ها که در کامپیوتر کاربر اجرا می‌شوند تعامل کاربر با اینترنت را سرعت می‌بخشد. در نهایت این سیستم به عنوان ابزاری برای تولید محتویات پیچیده طرف سرور مورد استفاده قرار گرفت. شرکت سان تلاش می‌کرد جاوا را به عنوان یک پلاتفرم برای اپلت‌های طرف مشتری مطرح کند اما به دلایلی مانند عدم وجود یکپارچگی با محتوا (اپلت‌ها به جعبه‌های کوچکی محدود می‌شدند که درون صفحه قرار داشتند) و عملکرد ضعیف (مخصوصاً شروع با تأخیر) ماشین مجازی بر روی سخت‌افزارهای PCهای آن زمان این امر هرگز محقق نشد.

با این وجود، جاوا اسکریپت یک زبان برنامه‌نویسی اسکریپتی است که برای صفحات وب طراحی شده است. نسخه استاندارد آن ECMAScript نام دارد. اگر چه نام آن شبیه جاوا است اما توسط شرکت ارتباطات نت اسکیپ (Netscape) طراحی شده است و تقریباً هیچ ارتباطی با جاوا که ساخت شرکت میکروسیستم‌های سان است ندارد. تنها شباهت آن با جاوا در این است که نحوه نگارش آن از زبان برنامه نویسی C گرفته شده است. جاوا اسکریپت مانند جاوا برنامه نویسی شیءگرا است اما شبیه سی پلاس پلاس و بر خلاف جاوا امکان استفاده از کدهای درهم (مخلوط) یعنی استفاده هم زمان از زبان برنامه‌نویسی شیء گرا و برنامه‌نویسی رویه‌ای را فراهم می‌آورد. جاوا اسکریپت در کنار مدل شیء سند به زبان برنامه‌نویسی بسیار قوی‌ای تبدیل شده که حتی طراحان آن چنین تصوری از موفقیت آن نداشتند. گاهی اوقات در مورد آن از کلمه HTML پویا (DHTML) استفاده می‌شود تا گذر از صفحات HTML "ایستا" بیشتر حس می‌شود.

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






تأثیر بر روابط اجتماعی

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

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

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

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






انتشار صفحات وب

صفحات وب در دسترس همه رسانه‌های جمعی قرار دارد. برای آنکه بتوانید یک صفحه وب را "منتشر" کنید لازم نیست به سراغ یک ناشر یا مؤسسه رسانه‌ای که در سرتاسر جهان مشاهده می‌شوند بروید. ابر متن، برخلاف کتاب و اسناد، دارای یک نظم خطی از ابتدا تا انتها نیست. ابر متن به بخش‌های فصل، زیر فصل و عناوین که در کتاب‌ها دیده می‌شود تقسیم‌بندی نمی‌شود.

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

نگرانی موجود در مورد ازدحام اطلاعات روی زیر ساختار اینترنت و تأخیر زیاد در دسترسی به داده‌ها به باعث شده است که نام World Wide Web به "World Wide Wait" تغییر کند! افزایش سرعت اینترنت مسأله‌ای مهم در بحث‌های مربوط به استفاده از همتا سازی و کیفیت خدمات (QOS) است. راه حل‌های ممکن برای کاهش انتظار برای مشاهده صفحات وب در سایت W3C ارائه شده است.

راهنمای استانداردهای موجود برای پاسخ زمانی ایده‌آل صفحات وب (مطابق کتاب نیلسن، چاپ 1999، صفحه 42) عبارتند از:

1/0 ثانیه (یک دهم ثانیه). زمان ایده‌آل پاسخ کاربر هیچ گونه تأخیری را حس نمی‌کند.
1 ثانیه. حداکثر زمان قابل قبول. زمان دانلود بیش از 1 ثانیه کاربر را خسته می‌کند.
10 ثانیه. زمان غیر قابل قبول. کاربر خسته شده و دوست دارد سایت را ترک کند. این اعداد برای طراحی ظرفیت سرور کاربرد زیادی دارند.







www در نام‌های وب‌سایت‌ها

از لحاظ فنی هیچ دلیلی وجود ندارد که نام سایت حتماً با www آغاز شود و اولین سرور وب در "info.cern.ch" قرار داشت. استفاده از پیشوند www یک توافق است که بین سازمان‌های ارائه دهنده خدمات وب انجام شده است تا تمامی نام‌های میزبان از یک پروتکل تبعیت کنند؛ برای مثال، بسیاری از سازمان‌ها نام سرور اصلی پروتکل گوفر خرد را به صورت gopher.wherever.edu تعریف می‌کنند و از پیشوندهای دیگری استفاده می‌کنند تا بتوان از چندین سرور وب استفاده کنند. برخی از مرورگرها به صورت خودکار www را به ابتدا و ".com" را به انتهای URL تایپ شده اضافه می‌کنند. در مرورگرهای اینترنت اکسپلورر و فایرفاکس موزیلا با فشردن همزمان کلیدهای ctrl و Enter پیشوند "http://www." و پسوند "com." به انتهای URL اضافه می‌شوند.






تلفظ "www

در زبان انگلیسی، WWW طولانی‌ترین تلفظ ممکن تور جهان گستر است که یک سرواژه سه حرفی است که به نه سیلاب نیاز دارد. داگلاس آدامز اظهار داشت: World Wide Web تنها عبارتی است که تلفظ شکل مختصر آن سه برابر بیشتر از تلفظ خود آن طول می‌کشد.

نسخه‌های کوتاه‌تر عبارتنداز "triple double 'u'"، "triple dub"، "dub dub dub"، "wuh wuh wuh" و "all the 'double u's". در زبان‌های دیگر "WWW" را اغلب "VVV" تلفظ می‌کنند. در زبان چینی، World Wide Web را به صورت wàn wéi wǎng تلفظ می‌کنند (به چینی: 万维网) که به معنای "شبکه ده هزار بعدی" است.






وب ۲٫۰
در وب ۲٫۰، کاربران قادرند خود به ایجاد و خلق محتوا در فضای اینترنت پرداخته، و دیگران را در داشته‌ها و اطّلاعات خود شریک سازند، و یا کارهای موجود از ناحیه دیگران را به صورتی مستقیم و بی واسطه مورد نقد و تغییر قرار دهند.






صفحه وب

صفحهٔ وب (به انگلیسی: Web page) یک منبع اطلاعاتی مناسب وب جهان‌گستر است و می‌توان با یک مرورگر وب به آن دسترسی یافت. این اطلاعات بیش‌تر در قالب اچ‌تی‌ام‌ال یا اکس‌اچ‌تی‌ام‌ال هستند و می‌توان با بهره از پیوندهای بس‌متن (Hypertext) از یک صفحهٔ وب به صفحه‌های دیگر رسید.

صفحه‌های وب می‌توانند از یک رایانهٔ محلی و یا از یک کارساز (سرویس‌دهنده) وب دریافت شوند. کارساز وب می‌تواند دسترسی به شبکهٔ خصوصی را محدود کند.







دامنه اینترنتی
دامنه اینترنتی (به انگلیسی: Internet domain) پسوندی است که در بخشهای پایانی نشانی اینترنتی وب‌گاه‌ها می‌آید.
پسوندهای ملی

هریک از کشورهای جهان دارای یک یا چند پسوند ملی یا «دامنه سطح‌بالای کد کشوری» هستند که برای سایت‌های منصوب به آن کشور استفاده می‌شوند. دامنه سطح‌بالای کد کشور ایران ‎.ir است و کد بین‌المللی . ایران نیز مراحل آزمایشی را می‌گذراند.






تاریخچه پیدایش و گسترش

در ۱۵ مارس ۱۹۸۵، اولین نام دامنه تجاری (.COM) به نام سیمبولیکس بوسیله یک شرکت سیستم‌های رایانه‌ای به نام Symbolics در کمبریج ماساچوست ثبت شد.

در ۱۹۹۲ کمتر از ۱۵۰۰۰ دامنه.COM ثبت شده بود.

در دسامبر ۲۰۰۹ حدود ۱۹۲ میلیون نام دامنه وجود داشت که بخش بزرگی از آنها دامنه پرطرفدار.COM بود. تعداد آنها در ۱۵ مارس ۲۰۱۰ به حدود ۸۴ میلیون رسید که شامل ۱۱٫۹ میلیون وب سایت کسب و کار آنلاین و تجارت الکترونیک , ۴٫۳ میلیون وب سایت تفریحی , ۳٫۱ میلیون وب سایت مرتبط با امور مالی، و ۱٫۸ میلیون وب سایت ورزشی می‌شد.

ماهانه حدود ۶۶۸ هزار دامنه.COM جدید ثبت می‌شود.






پهنای باند

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

پهنای باند تنها عامل تعیین کننده سرعت یک شبکه از زاویه کاربران نبوده و یکی دیگر از عناصر تاثیرگذار، «میزان تاخیر» در یک شبکه‌است که می‌تواند برنامه‌های متعددی را که بر روی شبکه اجراء می‌گردند، تحت تاثیر قرار دهد.







زیردامنه
در سلسله مراتب سامانه نام دامنه، یک زیردامنه (به انگلیسی: Subdomain) خود دامنه ای است که بخشی از یک دامنه بزرگتر می باشد.






بررسی اجمالی

سامانه نام دامنه یک ساختار درختی یا سلسله مراتبی دارد، با هر نام دامنه که یک برآمدگی از این درخت به شمار می آید. یک زیردامنه خود دامنه ای است که بخشی از یک دامنه بزرگتر می باشد. تنها دامنه ای که زیردامنه نیست دامنه ریشه (به انگلیسی: Root Domain) است. برای مثال mail.example.com و calendar.example.com زیردامنه‌های دامنه example.com هست، که به نوبه خود زیردامنه ای از دامنه سطح بالای COM می باشد.

یک زیردامنه بیانگر وابستگی نسبی است، نه وابستگی مطلق: برای مثال , wikipedia.org شامل یک زیردامنه از دامنه ORG است، و fa.wikipedia.org شامل یک زیردامنه از دامنه wikipedia.org.

در تئوری، این زیربخش می تواند تا ۱۲۷ سطح به سمت پایین عمق پیدا کند، و هر برچسب سامانه نام دامنه می تواند شامل ۶۳ حرف شود، تا زمانیکه تمام نام دامنه در کل متجاوز از ۲۵۵ حرف نباشد. اما در عمل برخی از ثبت کننده‌های دامنه محدودیت‌های کوتاه تری نسبت به آن دارند.






موارد استفاده

زیردامنه‌ها بطور عادی بوسیله سازمان هایی که می خواهند نام یکتایی را به بخش، کارکرد، یا سرویس مرتبط خاصی با سازمانشان اختصاص دهند استفاده می شود. برای مثال، یک دانشگاه ممکن است "cs" را به بخش علوم رایانه (computer science) خود اختصاص دهد. بطوریکه تعدادی میزبان توانسته باشد در آن زیردامنه استفاده شود، مانند mail.cs.example.edu یا www.cs.example.edu.






دامنه پوچ

یک زیردامنه گاهی اوقات یک دامنه پوچ (به انگلیسی: Vanity Domain) نامیده می‌شود، و می تواند زیردامنه ای از حوزه معرف یک تامین کننده خدمات اینترنت (به انگلیسی: Internet Service Provider) برای حساب کاربری فردی یا بیانگر شخصیت وجودی فردی باشد آن را ثبت کرده است.






خوشه خدمتگذار

بسته به نوع کاربرد، یک رکورد در یک دامنه، یا زیردامنه ممکن است به یک نام میزبان (به انگلیسی: Hostname)، یا یک تامین کننده خدمات بوسیله تعدادی دستگاه در یک خوشه منتسب شود. بعضی از وب سایت‌ها از زیردامنه‌های متفاوت برای اشاره به خوشه خدمتگذار (به انگلیسی: Server Cluster)های مختلف استفاده می کنند. برای مثال , www.example.com به خوشه خدمتگذار ۱ یا مرکز اطلاعات ۱ (Data Centre)، و www۲.example.com به خوشه خدمتگذار ۲ یا مرکز اطلاعات ۲ اشاره می‌کند، و ...
10:14 pm
کاربرد برنامه نویسی

زبان برنامه نویسی یک مکانیزم ساخت یافته برای تعریف داده‌ها، و عملیات یا تبدیل‌هایی که ممکن است بطور اتوماتیک روی آن داده انجام شوند، فراهم می‌کند. یک برنامه نویس از انتزاعات آماده در زبان استفاده می‌کند تا مفاهیم به کار رفته در محاسبات را بیان کند. این مفاهیم به عنوان یک مجموعه از ساده‌ترین عناصر موجود بیان می‌شوند(مفاهیم ابتدایی نامیده می‌شوند).





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

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

یک سیر رایج در گسترش زبان‌های برنامه نویسی این است که قابلیت حل مسائلی با درجات انتزاعی بالاتری را اضافه کنند. زبان‌های برنامه نویسی اولیه به سخت‌افزار رایانه گره خورده بودند. همانطور که زبان‌های برنامه نویسی جدید گسترش پیدا کرده‌اند، ویژگی‌هایی به برنامه‌ها افزوده شده که به برنامه نویس اجازه دهد که ایده‌هایی که از ترجمه ساده به دستورات سخت‌افزار دورتر هستند نیز استفاده کند. چون برنامه نویس‌ها کمتر به پیچیدگی رایانه محدود شده‌اند، برنامه‌های آنها می‌تواند محاسبات بیشتری با تلاش کمتر از سوی برنامه نویس انجام دهند. این به آنها این امکان را می‌دهد که کارایی بیشتردر واحد زمان داشته باشند. "پردازنده‌های زبان طبیعی" به عنوان راهی برای ازبین بردن نیاز به زبان‌های اختصاصی برنامه نویسی پیشنهاد شده‌اند. هرچند، این هدف دور است و فواید آن قابل بحث است. "ادسگر دیجسترا" موافق بود که استفاده از یک زبان رسمی برای جلوگیری از مقدمه سازی ساختارهای بی معنی واجب است، و زبان برنامه نویسی طبیعی را با عنوان "احمقانه" رد کرد، "آلن پرلیس" نیز مشابها این ایده را رد کرد. مطابق با متدولوژی نامتجانس استفاده شده توسط langpop.com در سال ۲۰۰۸، ۱۲ زبان پرکاربرد عبارتند از: C, C++, C#, Java, JavaScript, Perl, PHP, Python, Ruby, Shell, SQL, and Visual Basic.



المان‌ها
تمام زبان‌های بزنامه نویسی تعدادی بلوک‌های ابتدایی برای توضیح داده و پردازش یا تبدیل آنها(مانند جمع کردن دو عدد با انتخاب یک عضو از یک مجموعه)دارند. این " عناصرابتدایی" بوسیله قوانین معناشناسی و دستوری تعریف می‌شوند که ساختار و معنای مربوطه را توضیح می‌دهند.
دستور(
syntax)

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

دستور زبان برنامه نویسی معمولاً بوسیله ترکیب عبارات معین(برای ساختار لغوی) و فرم توضیح اعمال(برای ساختار گرامری) تعریف می‌شوند. متن زیر یک گرامر ساده، به زبان lisp است: expression ::= atom | list atom ::= number | symbol number ::= [+-]?['۰'-'۹']+ symbol ::= ['A'-'Za'-'z'].* list ::= '(' expression* ')' این گرامر موارد ذیل را مشخص می‌کند:

یک عبارت یا atom است و یا یک لیست
یک atom یا یک عدد است و یا یک سمبل
یک عدد دنباله ناشکسته‌ای از یک یا تعداد بیشتری اعداد دهدهی است، که یک علامت مثبت و یا منفی می‌تواند پیش از آن بیاید.
یک سمبل حرفی است که بعد از هیچ یا تعدادی کاراکتر (جز فاصله) می‌آید.
یک لیست تعدادی پرانتز است که می‌تواند صفر یا چند عبارت در خود داشته باشد.

"۱۲۳۴۵"، "()"، "(a b c۲۳۲ (۱))" مثال‌هایی هستند از دنباله‌های خوش فرم در این گرامر.

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

به عنوان مثال در زبان طبیعی، ممکن نیست به برخی از جملات درست از لحاظ گرامری، معنای خاصی اطلاق کرد و یا ممکن است جمله نادرست باشد:

"ایده‌های بی رنگ سبز با خشم می‌خوابند."از نظر دستوری خوش فرم است ولی معنای مورد قبولی ندارد.
"جان یک مجرد متاهل است." از نظر دستوری درست است، ولی معنایی را بیان می‌کند که نمی‌تواند درست باشد.

این قسمت از زبان C از نظر دستوری درست است، اما دستوری را انجام می‌دهد که از نظرمعنایی تعریف نشده است(چون p یک اشاره گر خالی است، عمل p->real,p->im معنای خاصی ندارد.) complex *p = NULL; complex abs_p = sqrt (p->real * p->real + p->im * p->im);

گرامر مورد نیاز برای مشخص کردن یک زبان برنامه نویسی می‌تواند با جایگاهش در "سلسله مراتب چامسکی" طبقه بندی شود. دستور اغلب زبان‌های برنامه نویسی می‌تواند بوسیله یک گرامر نوع ۲ مشخص گردد، برای مثال، گرامرهای مستقل از متن.




معناشناسی ایستا
معناشناسی ایستا محدودیت‌هایی بر روی ساختار مجاز متن‌ها تعیین می‌کند که بیان آنها در فرمول دستوری استاندارد مشکل و یا غیر ممکن است. مهمترین این محدودیت‌ها به وسیله سیستم نوع گذاری انجام می‌شود.


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

یک زبان نوع گذاری شده‌است اگر مشخصات هر عملیات، نوع داده‌های قابل اجرا توسط آن را با نشان دادن نوع‌هایی که برای آنها قابل اجرا نیست، تعیین کند. برای مثال، "این متن درون گیومه قرار دارد" یک رشته‌است. در غالب زبان‌های برنامه نویسی، تقسیم یک رشته با یک عدد معنایی ندارد. در نتیجه غالب زبان‌های برنامه نویسی مدرن ممکن است اجرای این عملیات را توسط برنامه‌ها رد کنند. در برخی زبان‌ها، عبارات بی معنی ممکن است هنگام ترجمه(compile) پیدا شود(چک کننده نوع ایستا)، و توسط کامپایلر رد شود، در حالی که در سایر برنامه‌ها، هنگام اجرا پیدا شود.(چک کننده نوع دینامیک) که به استثنای در حال اجرا منتج شود(runtime exception). حالت خاص زبان‌های نوع دار زبان‌های تک نوعند. این زبان‌ها غالباً اسکریپتی و یا مارک آپ هستند، مانند rexx وSGML و فقط یک داده گونه دارند—غالباً رشته‌های کاراکتری که هم برای داده‌های عددی و هم برای داده‌های سمبلی کاربرد دارند. در مقابل، یک زبان بدون نوع گذاری، مثل اکثر زبان‌های اسمبلی، این امکان را می‌دهد که هر عملیاتی روی هر داده‌ای انجام شود، که معمولاً دنباله‌ای از بیت‌ها با طول‌های متفاوت در نظر گرفته می‌شوند. زبان‌های سطح بالا که بی نوع هستند شامل زبان‌های ساده رایانه‌ای و برخی از انواع زبان‌های نسل چهارم.

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



نوع گذاری ایستا و متحرک

در نوع گذاری ایستا تمام عبارات نوع‌های خود را قبل از اجرای برنامه تعیین می‌کنند(معمولاً در زمان کامپایل). برای مثال، ۱ و (۲+۲) عبارات عددی هستند؛ آنها نمی‌توانند به تابعی که نیاز به یک رشته دارد داده شوند، یا در متغیری که تعریف شده تا تاریخ را نگه دارد، ذخیره شوند.


زبان‌های نوع گذاری شده ایستا می‌توانند با مانیفست نوع گذاری شوند یا با استفاده از نوع استنباط شوند. در حالت اول، برنامه نویس بیشتر صریحاً نوع‌ها را در جایگاه‌های منتنی مشخص می‌نویسد(برای مثال، در تعریف متغیرها). در حالت دوم، کامپایلر نوع عبارات و تعریف‌ها را بر اساس متن استنباط می‌کند. غالب زبان‌های مسیر اصلی(mainstream) ایستا نوع گذاری شده، مانند C#,C++ و Java، با مانیفست نوع گذاری می‌شوند



نوع گذاری قوی و ضعیف

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

نوع گذاری قوی مانع رخ دادن مشکل فوق می‌شود. تلاش برای انجام عملیات روی نوع نادرست متغیر منجر به رخ دادن خطا می‌شود. زبان‌هایی که نوع گذاری قوی دارند غالباً با نام "نوع-امن" و یا امن شناخته می‌شوند. تمام تعاریف جایگزین برای "ضعیف نوع گذاری شده" به زبان‌ها اشاره می‌کند، مثل perl, JavaScript, C++، که اجازه تعداد زیادی تبدیل نوع داخلی را می‌دهند. در جاوااسکریپت، برای مثال، عبارت ۲*x به صورت ضمنی x را به عدد تبدیل می‌کند، و این تبدیل موفقیت آمیز خواهد بود حتی اگر x خالی، تعریف نشده، یک آرایه، و یا رشته‌ای از حروف باشد. چنین تبدیلات ضمنی غالباً مفیدند، اما خطاهای برنامه نویسی را پنهان می‌کنند.

قوی و ایستا در حال حاضر عموماً دو مفهوم متعامد فرض می‌شوند، اما استفاده در ادبیات تفاوت دارد، برخی عبارت "قوی نوع گذاری شده" را به کار می‌برند و منظورشان قوی، ایستایی نوع گذاری شده‌است، و یا، حتی گیچ کننده تر، منظورشان همان ایستایی نوع گذاری شده‌است. بنابراین C هم قوی نوع گذاری شده و هم ضعیف و ایستایی نوع گذاری شده نامیده می‌شود.



معناشناسی اجرا

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

برای مثال، معناشناسی ممکن است استراتژی را که بویسله آن عبارات ارزیابی می‌شوند را تعریف کند و یا حالتی را که ساختارهای کنترلی تحت شرایطی دستورها را اجرا می‌کنند.


کتابخانه هسته
اغلب زبان‌های برنامه نویسی یک کتابخانه هسته مرتبط دارند(گاهی اوقات "کتابخانه استاندارد" نامیده می‌شوند، مخصوصا وقتی که به عنوان قسمتی از یک زبان استاندارد ارائه شده باشد)، که به طور قراردادی توسط تمام پیاده سازی‌های زبان در دسترس قرار گرفته باشند. کتابخانه هسته معمولاً تعریف الگوریتم‌ها، داده ساختارها و مکانیزم‌های ورودی و خروجی پرکاربرد را در خود دارد. کاربران یک زبان، غالباً با کتابخانه هسته به عنوان قسمتی از آن رفتار می‌کنند، اگرچه طراحان ممکن است با آن به صورت یک مفهوم مجزا رفتار کرده باشند. بسیاری از خصوصیات زبان هسته‌ای را مشخص می‌کنند که باید در تمام پیاده سازی‌ها موجود باشند، و در زبان‌های استاندارد شده این کتابخانه هسته ممکن است نیاز باشد. بنابراین خط بین زبان و کتابخانه هسته آن از زبانی به زبان دیگر متفاوت است. درواقع، برخی زبان‌ها به گونه‌ای تعریف شده‌اند که برخی از ساختارهای دستوری بدون اشاره به کتابخانه هسته قابل استفاده نیستند. برای مثالف در جاوا، یک رشته به عنوان نمونه‌ای از کلاس “java.lang.String” تعریف شده است؛ مشابها، در سمال تاک(smalltalk) یک تابع بی نام(یک "بلاک") نمونه‌ای از کلاس BlockContext کتابخانه می‌سازد. بطور معکوس، Scheme دارای چندین زیرمجموعه مرتبط برای ایجاد سایر ماکروهای زبان می‌باشد، و در نتیجه طراحان زبان حتی این زحمت را نیز تحمل نمی‌کنند که بگویند کدام قسمت زبان به عنوان ساختارهای زبان باید پیاده سازی شوند، و کدام یک به عنوان بخشی ازکتابخانه.


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



خصوصیات

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

تعریف صریح دستور، معناشناسی ایستا، ومعناشناسی اجرای زبان. درحالیکه دستور معمولاً با یک معناشناسی قراردادی مشخص می‌شود، تعاریف معناشناسی ممکن است در زبان طبیعی نوشته شده باشند (مثل زبان C)، یا معناشناسی قراردادی(مثل StandardML ,Scheme)
توضیح رفتار یک مترجم برای زبان(مثل C,fortran). دستور و معناشناسی یک زبان باید از این توضیح استنتاج شوند، که ممکن است به زبان طبیعی یا قراردادی نوشته شود.
پیاده سازی منبع یا مدل. گاهی اوقات در زبان‌های مشخص شده(مثل: prolog,ANSI REXX).دستور و معناشناسی صریحاً در رفتار پیاده سازی مدل موجودند.


پیاده سازی

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

خروجی یک کامپایلر ممکن است با سخت‌افزار و یا برنامه‌ای به نام مفسر اجرا شود. در برخی پیاده سازی‌ها که از مفسر استفاده می‌شود، مرز مشخصی بین کامپایل و تفسیر وجود ندارد. برای مثال، برخی پیاده سازی‌های زبان برنامه نویسی بیسیک کامپایل می‌کنند و سپس کد را خط به خط اجرا می‌کنند.

برنامه‌هایی که مستقیماً روی سخت‌افزار اجرا می‌شوند چندین برابر سریعتر از برنامه‌هایی که با کمک نرم‌افزار اجرا می‌شوند، انجام می‌شوند.

یک تکنیک برای بهبود عملکرد برنامه‌های تفسیر شده کامپایل در لحظه آن است. در این روش ماشین مجازی، دقیقاً قبل از اجرا، بلوک‌های کدهای بایتی که قرار است استفاده شوند را برای اجرای مستقیم روی سخت‌افزار ترجمه می‌کند.



تاریخچه
پیشرفت‌های اولیه

اولین زبان برنامه نویسی به قبل از رایانه‌های مدرن باز می‌گردد. قرن ۱۹ دستگاه‌های نساجی و متون نوازنده پیانو قابل برنامه نویسی داشت که امروزه به عنوان مثال‌هایی از زبان‌های برنامه نویسی با حوزه مشخص شناخته می‌شوند. با شروع قرن بیستم، پانچ کارت‌ها داده را کد گذاری کردند و پردازش مکانیکی را هدایت کردند. در دهه ۱۹۳۰ و ۱۹۴۰، صورت گرایی حساب لاندای آلونزو چرچ و ماشین تورینگ آلن تورینگ مفاهیم ریاضی بیان الگوریتم‌ها را فراهم کردند؛ حساب لاندا همچنان در طراحی زبان موثر است.

در دهه ۴۰، اولین رایانه‌های دیجیتال که توسط برق تغذیه می‌شدند ایجاد شدند. اولین زبان برنامه نویسی سطح بالا طراحی شده برای کامپیوتر پلانکالکول بود، که بین سال‌های ۱۹۴۵ و ۱۹۴۳ توسط کنراد زوس برای ز۳ آلمان طراحی شد.

کامپیوترهای اوایل ۱۹۵۰، بطور خاص ÜNIVAC ۱ و IBM ۷۰۱ از برنامه‌های زبان ماشین استفاده می‌کردند. برنامه نویسی زبان ماشین نسل اول توسط نسل دومی که زبان اسمبلی نامیده می‌شوند جایگزین شد. در سال‌های بعد دهه ۵۰، زبان برنامه نویسی اسمبلی، که برای استفاده از دستورات ماکرو تکامل یافته بود، توسط سه زبان برنامه نویسی سطح بالا دیگر: FORTRAN,LISP , COBOL مورد استفاده قرار گرفت. نسخه‌های به روز شده این برنامه‌ها همچنان مورد استفاده قرار می‌گیرند، و هر کدام قویا توسعه زبان‌های بعد را تحت تاثیر قرار دادند. در پایان دهه ۵۰ زبان algol ۶۰ معرفی شد، و بسیاری از زبان‌های برنامه نویسی بعد، با ملاحظه بسیار، از نسل algol هستند. قالب و استفاده از زبان‌های برنامه نویسی به شدت متاثر از محدودیت‌های رابط بودند.



پالایش

دوره دهه ۶۰ تا اواخر دهه ۷۰ گسترش مثال‌های عمده زبان پرکاربرد امروز را به همراه داشت. با این حال بسیاری از جنبه‌های آن بهینه سازی ایده‌های اولیه نسل سوم زبان برنامه نویسی بود:

APL برنامه نویسی آرایه‌ای را معرفی کرد و برنامه نویسی کاربردی را تحت تاثیر قرار داد.
PL/i(NPL) دراوایل دهه ۶۰ طراحی شده بود تا ایده‌های خوب فورترن و کوبول را بهم پیوند دهد.
در دهه ۶۰، Simula اولین زبانی بود که برنامه نویسی شئ گرا را پشتیبانی می‌کرد، در اواسط دهه۷۰. Smalltalk به دنبال آن به

عنوان اولین زبان کاملاً شئ گرا معرفی شد.

C بین سال‌های ۱۹۶۹ تا ۱۹۷۳ به عنوان زبان برنامه نویسی سیستمی طراحی شد و همچنان محبوب است.
Prolog، طراحی شده در ۱۹۷۲، اولین زبان برنامه نویسی منطقی بود.
در ۱۹۷۸ ML سیستم نوع چند ریخت روی لیسپ ایجاد کرد، و در زبان‌های برنامه نویسی کاربردی ایستا نوع گذاری شده پیشگام شد.

هر یک از این زبان‌ها یک خانواده بزرگ از وارثین از خود به جای گذاشت، و مدرنترین زبان‌ها از تبار حداقل یکی از زبان‌های فوق به شمار می‌آیند.

دهه‌های ۶۰ و ۷۰ مناقشات بسیاری روی برنامه نویسی ساخت یافته به خود دیدند، و اینکه آیا زبان‌های برنامه نویسی باید طوری طراحی شوند که آنها را پشتیبانی کنند.

"ادسگر دیکسترا" در نامه‌ای معروف در ۱۹۶۸ که در ارتباطات ACM منتشر شد، استدلال کرد که دستورgoto باید از تمام زبان‌های سطح بالا حذف شود.

در دهه‌های ۶۰ و ۷۰ توسعهٔ تکنیک‌هایی صورت گرفت که اثر یک برنامه را کاهش می‌داد و در عین حال بهره وری برنامه نویس و کاربر را بهبود بخشید. دسته کارت برای ۴GL اولیه بسیار کوچکتر از برنامهٔ هم سطح بود که با ۳GL deck نوشته شده بود.




یکپارچگی و رشد

دهه ۸۰ سال‌های یکپارچگی نسبی بود. C++ برنامه نویسی شئ گرا و برنامه نویسی سیستمی را ترکیب کرده بود. ایالات متحده ایدا(زبان برنامه نویسی سیستمی که بیشتر برای استفاده توسط پیمان کاران دفاعی بود) را استاندارد سازی کرد. در ژاپن و جاهای دیگر، هزینه‌های گزافی صرف تحقیق در مورد زبان نسل پنجم می‌شد که دارای ساختارهای برنامه نویسی منطقی بود. انجمن زبان کاربردی به سمت استانداردسازی ML و Lisp حرکت کرد. به جای ایجاد مثال‌های جدید، تمام این تلاش‌ها ایده‌هایی که در دهه‌های قبل حلق شده بودند را بهتر کرد.

یک گرایش مهم در طراحی زبان در دهه ۸۰ تمرکز بیشتر روی برنامه نویسی برای سیستم‌های بزرگ از طریق مدول‌ها، و یا واحدهای کدهای سازمانی بزرگ مقیاس بود. مدول-۲، ایدا. و ML همگی سیستم‌های مدولی برجسته‌ای را در دهه ۸۰ توسعه دادند. با وجود اینکه زبان‌های دیگر، مثل PL/i، پشتیبانی بسیار خوبی برای برنامه نویسی مدولی داشتند. سیستم‌های مدولی غالباً با ساختارهای برنامه نویسی عام همراه شده‌اند.

رشد سریع اینترنت در میانه دهه ۹۰ فرصت‌های ایجاد زبان‌های جدید را فراهم کرد. Perl، در اصل یک ابزار نوشتن یونیکس بود که اولین بار در سال ۱۹۸۷ منتشر شد، در وب‌گاه‌های دینامیک متداول شد. جاوا برای برنامه نویسی جنب سروری مورد استفاده قرار گرفت. این توسعه‌ها اساساً نو نبودند، بلکه بیشتر بهینه سازی شده زبان و مثال‌های موجود بودند، و بیشتر بر اساس خانواده زبان برنامه نویسی C بودند. پیشرفت زبان برنامه نویسی همچنان ادامه پیدا می‌کند، هم در تحقیقات و هم در صنعت. جهت‌های فعلی شامل امنیت و وارسی قابلیت اعتماد است، گونه‌های جدید مدولی(mixin، نماینده‌ها، جنبه‌ها) و تجمع پایگاه داده.

۴GLها نمونه‌ای از زبان‌هایی هستند که محدوده استفاده آنها مشخص است، مثل SQL. که به جای اینکه داده‌های اسکالر را برگردانند، مجموعه‌هایی را تغییر داده و بر می‌گردانند که برای اکثر زبان‌ها متعارفند. Perl برای مثال، با "مدرک اینجا" خود می‌تواند چندین برنامه ۴GL را نگه دارد، مانند چند برنامه جاوا سکریبت، در قسمتی از کد پرل خود و برای پشتیبانی از چندین زبان برنامه نویسی با تناسب متغیر در "مدرک اینجا" استفاده کند.




سنجش استفاده از زبان

مشکل است که مشخص کنیم کدام زبان برنامه نویسی بیشتر مورد استفاده‌است، و اینکه کاربرد چه معنی می‌دهد با توجه به زمینه تغییر می‌کند. یک زبان ممکن است زمان بیشتری از برنامه نویس بگیرد، زبان دیگر ممکن است خطوط بیشتری داشته باشد، و دیگری ممکن است زمان بیشتری از پردازنده را مصرف کند. برخی زبان‌ها برای کاربردهای خاص بسیار محبوبند. برای مثال: کوبول همچنان در مراکزداده متحد، غالباً روی کامپیوترهای بزرگ توانا است؛ fortran در مهندسی برنامه‌های کاربردی، C در برنامه‌های تعبیه شده و سیستم‌های عامل؛ و بقیه برنامه‌ها معمولاً برای نوشتن انواع دیگر برنامه‌ها کاربرد دارند. روش‌های مختلفی برای سنجش محبوبیت زبان‌ها، هر یک متناسب یا یک ویژگی محوری متفاوت پیشنهاد شده‌است:

شمارش تعداد تبلیغات شغلی که از آن زبان نام می‌برند.
تعداد کتاب‌های آموزشی و شرح دهندهٔ آن زبان که فروش رفته‌است.
تخمین تعداد خطوطی که در آن زبان نوشته شده اند- که ممکن است زبان‌هایی را که در جستجوها کمتر پیدا می‌شوند دست کم گرفته شوند.
شمارش ارجاع‌های زبان(برای مثال، به اسم زبان) در موتورهای جستجوهای اینترنت.

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

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

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

یک زبان برنامه نویسی ممکن است با فاکتورهای غیر مرتبط به مثال‌های برنامه نویسی دسته بندی شود. برای مثال، غالب زبان‌های برنامه نویسی کلمات کلیدی زبان انگلیسی را استفاده می‌کنند، در حالیکه تعداد کمی این کار را نمی‌کنند. سایر زبان‌ها ممکن است براساس داخلی بودن یا نبودن دسته بندی شوند.
ساعت : 10:14 pm | نویسنده : admin | طراحی وب امیر | مطلب قبلی
طراحی وب امیر | next page | next page