تاریخ اینترنت
اتحاد جماهیر شوروی آن زمان موشکی با نام «اسپونیک» (Spotnik) را به فضا میفرستد و نشان میدهد دارای قدرتی است که میتواند شبکههای ارتباطی آمریکا را توسط موشکهای بالستیک و دوربرد خود از بین ببرد. آمریکاییها در پاسخگویی به این اقدام روسها، موسسه پروژههای تحقیقی پیشرفته “ARPA” را بهوجود آوردند. هدف از تاسیس چنین موسسهای پژوهش و آزمایش برای پیدا کردن روشی بود که بتوان از طریق خطوط تلفنی، کامپیوترها را به هم مرتبط نمود.

به طوری که چندین کاربر بتوانند از یک خط ارتباطی مشترک استفاده کنند. در اصل شبکهای بسازند که در آن دادهها به صورت اتوماتیک بین مبدا و مقصد حتی در صورت از بین رفتن بخشی از مسیرها جابهجا و منتقل شوند. در اصل هدف “ARPA” ایجاد یک شبکه اینترنتی نبود و فقط یک اقدام احتیاطی در مقابل حمله احتمالی موشکهای اتمی دوربرد بود. هر چند اکثر دانش امروزی ما درباره شبکه بهطور مستقیم از طرح آرپانت “ARPPA NET” گرفته شدهاست. شبکهای که همچون یک تار عنکبوت باشد و هر کامپیوتر ان از مسیرهای مختلف بتواند با همتایان خود ارتباط دااشته باشد واگر اگر یک یا چند کامپیوتر روی شبکه یا پیوند بین انها از کار بیفتادبقیه باز هم بتوانستند از مسیرهای تخریب نشده با هم ارتباط بر قرار کنند.
این ماجرا با وجودی که بخشی از حقایق بهوجود آمدن اینترنت را بیان میکند اما نمیتواند تمام واقعیات مربوط به آن را تشریح کند. باید بگوییم افراد مختلفی در تشکیل اینترنت سهم داشتهاند آقای “Paul Baran” یکی از مهمترین آنهاست. آقای باران که در دوران جنگ سرد زندگی میکرد میدانست که شبکه سراسری تلفن آمریکا توانایی مقابله با حمله اتمی شوروی سابق را ندارد. مثلاً اگر رییس جمهور وقت آمریکا حمله اتمی متقابل را دستور دهد، باید از یک شبکه تلفنی استفاده میکرد که قبلاً توسط روسها منهدم شده بود. در نتیجه طرح یک سیستم مقاوم در مقابل حمله اتمی روسها ریخته شد.آقای باران (Baran) تشکیل و تکامل اینترنت را به ساخت یک کلیسا تشبیه کرد و معتقد بود، طی سالهای اخیر هر کس سنگی به پایهها و سنگهای قبلی بنا اضافه میکند و انجام هر کاری وابسته به کارهای انجام شده قبلی است. بنابراین نمیتوان گفت، کدام بخش از کار مهمترین بخش کار بودهاست و در کل پیدایش اینترنت نتیجه کار و تلاش گروه کثیری از دانشمندان است. داستان پیدایش اینترنت با افسانه و واقعیت در هم آمیخته شدهاست.
در اوایل دهه ۶۰ میلادی آقای باران طی مقالاتی پایه کار اینترنت امروزی را ریخت. اطلاعات و دادهها به صورت قطعات و بستههای کوچکتری تقسیم و هر بسته با آدرسی که به آن اختصاص داده میشود به مقصد خاص خود فرستاده میشود. به این ترتیب بستهها مانند نامههای پستی میتوانند از هر مسیری به مقصد برسند. زیرا آنها شامل آدرس فرستنده و گیرنده هستند و در مقصد بستهها مجدداً یکپارچه میشوند و به صورت یک اطلاعات کامل درمیآیند.
آقای باران (Baran) طی مقالاتی اینچنینی ساختمان و ساختار اینترنت را پیشگویی کرد. او از کار سلولهای مغزی انسان به عنوان الگو استفاده کرد، او معتقد بود: وقتی سلولهای مغزی از بین بروند، شبکه عصبی از آنها دیگر استفاده نمیکند و مسیر دیگری را در مغز انتخاب میکند. از دیدگاه وی این امکان وجود دارد که شبکهای با تعداد زیادی اتصالات برای تکرار ایجاد شوند تا در صورت نابودی بخشی از آن، همچنان به صورت مجموعهای به هم پیوسته کار کند. تا نیمه دهه ۶۰ میلادی کسی به نظرات او توجهای نکرد. تا اینکه در سال ۱۹۶۵ نیروی هوایی آمریکا و«آزمایشگاههای بل» به نظرات او علاقهمند شدند و پنتاگون با سرمایهگذاری در طراحی و ساخت شبکهای براساس نظریات او موافقت کرد.
ولی آقای باران (Baran) بنابر دلایلی حاضر با همکاری با نیروی هوایی آمریکا نشد. در این میان دانشمندی با نام تیلور (Tailon) وارد موسسه آرپا (ARPA) شد. او مستقیماً به آقای هرتسفلد رییس موسسه پیشنهاد کرد: (ARPA) آرپا هزینه ایجاد یک شبکه آزمایشی کوچک با حداقل چهار گره را تامین کند که بودجه آن بالغ بر یک میلیون دلار میشد. با این پیشنهاد تیلور تجربهای را آغاز کرد که منجر به پیدایش اینترنت امروزی شد. او موفق شد در سال ۱۹۶۶، دو کامپیوتر را در شرق و غرب آمریکا به هم متصل کند. با این اتصال انقلابی در نحوه صدور اطلاعات در دنیای ارتباطات رخ داد که نتیجه آن را امروز همگی شاهد هستیم. این شبکه به بستههایی (packet) از دادهها که به وسیله کامپیوترهای مختلف ارسال میشدند اتکا داشت. پس از انکه ازمایشها سودمندی انرا مشخص کردند سایر بخشهای دولتی و دانشگاهها پژوهشی تمایل خود را به وصل شدن به ان اعلام کردند . ارتباطات الکترونیکی به صورت روشی موثر برای دانشمندان و دیگران به منظور استفاده مشترک از دادهها در امد. در همان زمان که ARPAnet در حال رشد بود تعدادی شبکه پوشش محلی (LAN) در نقاط مختلف آمریکا به وجود امد. مدیران LANها نیز به وصل کردن کامپیوترهای شبکههای خود به شبکههای بزرگتر اقدام کردند . پروتوکل اینترنت ARPAnet IP زبان استاندارد حکمفرما برای برقراری ارتباط کامپیوترهای شبکههای مختلف به یکدیگر شد.تاریخ تولد اینترنت به طور رسمی اول سپتامبر ۱۹۶۹ اعلام شدهاست. زیرا که اولین “IMP” در دانشگاه “UCLA” واقع در سانتاباربارا در این تاریخ بارگذاری شدهاست.
از اوایل دهه ۱۹۹۰ رشد استفاده از اینترنت به صورت تصاعدی افزایش یافت . یکی از علل چنین استقبالی ابزار جستجویی مانند Gopher و archie بودهاست اما اینها در سال ۱۹۹۱ تحت تاثیر word wide web قرار گرفتند که به وسیله CERN یا ازمایشگاه فیزیک هستهای اروپا ساخته شد . با ان که اینترنت از ابتدا طوری بود که مبادله اطلاعات برای تازه واردان بسیار ساده باشد. بزرگترین جهش در وب در سال ۱۹۹۳ با عرضه نرمافزار موزاییک mosaic که نخستین برنامه مرورگر وب گرافیکی بود به وجود امد. برنامه موزاییک محصول تلاش دانشجویان و استادان بخش "مرکز ملی کاربردهای ابر کامپیوتر " در دانشگاه ایلینویز آمریکا بود. برای نخستین بار موزاییک امکانات اشاره و کلیک (به وسیله موش) را فراهم کرد. کاربران میتوانستند صفحات وب (web page) یا مجموعهای از متن و گرافیک را کنار هم بگذارند تا هر کسی که میخواست انها را بتواند روی اینترنت ببیند. وقتی با موش روی کلمهها یا تصاویر خاصی که hyper link نامیده میشد کلیک میکردند برنامه موزاییک به طور خود کار یک صفحه دیگر باز میکرد که به کلمه یا تصویر خاص و کلیک شده اختصاص داشت. بهترین بخش این سیستم انجا بود که hyper linkها میتوانستند به صفحاتی روی همان کامپیوتر یا هر کامپیوتر دیگر اینترنت با خدمات وب اشاره کنند. صفحات وب هر روز متولد میشدند و مفهوم موج سواری یا surfing روی وب متولد شد. اواسط سال ۱۹۹۴ سه میلیون کامپیوتر به اینترنت وصل شده بود و در ان هنگام اجرای عملیات اهسته نشده بود. صفحات جدید وب که شامل همه چیز از اسناد دولتی تا مدارک شرکتها و مدلهای جدید لباس بود در سراسر دنیا چندین برابر شد . موزاییک و جانشینان ان مانند navigator محصول شرکت " نت اسکیپ " اینترنت را از قلمرو علمی به میان مردم اوردند. طبق اخرین امار ۵۱ درصد کاربران بعد از سال ۱۹۹۵ وارد این محیط شدهاند. میلیونها انسانی که از اینترنت استفاده میکنند نیازی ندارند که نکات فنی مانند TCP/IP را بدانند . امروزه شرکتهای خدمات دهنده اینترنت یا ISP این کار را به عهده دارند.رشد روز افزون ان و ساده تر شدن استفاده ان همچنان ادامه دارد . هر چه تعداد مردم بیشتری به اینترنت رجوع کنند تعداد شرکتهای سازنده برنامههای اینترنت بیشتر میشود.با انکه بعضی از عاشقان اینترنت ان را نوعی شیوه زندگی میدانند. در نظر بیشتر کاربران منبع سرگرمی اطلاعات است ولی بیشترین مصرف ان پست الکترونیکی یا همان email است که یکی از ابزارهای ارتباطی کار امد به شمار میرود. پیامها از کامپیوتری به کامپیوتر دیگر با سرعت پرواز میکنند و منتظر میمانند تا شخص فرصت خواندن انها را پیدا کند . وب امکانات خوبی برای کپی از نرمافزارهای مجاز از لحاظ کپی فراهم میسازد. وقتی که میبینیم که در مدت کوتاهی اینترنت به چنین رشدی نایل آمده است، مطمئناً دشوار خواهد بود که آینده او را پیش بینی کنیم. طبق نظر کارشناسان ماهانه ۱۰ درصد به تعداد کاربران اینترنت افزوده میشود ولی تعداد دقیق کاربران که روزانه از آن استفاده میکنند مشخص نیست. هرچند که پارهای از کارشناسان تعداد آنها را تا ۹۰۰ میلیون نفر حدس میزنند. تعداد رسمی کاربران اینترنتی را در سال ۲۰۰۰ کارشناسان ۵۰۰ میلیون نفر اعلام کرده بودند.
قطعاً در سالهای آینده تحولات شگرفی را در زمینه شبکههای اینترنتی شاهد خواهیم بود. بهوسیله اینترنت انسان به راههای جدیدی دست پیدا کرد. در کنار این شانس جدید توسط اینترنت، باید بگوییم خطراتی نیز در رابطه با سیاست و اقتصاد و علم به دنبال خواهد داشت. فرم امروزی اینترنت مدیون همکاری تمام کاربران اینترنت در سرتاسر گیتی است که با این تصور که اطلاعات موجود در سطح جهان را به راحتی با یکدیگر مبادله کنند. این تصوری بود که آقای باران(Baran) از اینترنت داشت و امیدواریم در آینده نیز تکامل اینترنت در این مسیر باشد.
اینترنت در ایران
اینترنت در ایران عبارت است از کلیه جنبه های مرتبط به ایجاد، توسعه و استفاده از شبکه های رایانه ای تحت مجموعه پروتکل اینترنت در ایران که آن را از اینترنت به معنای عام مشخص و متمایز می کند و شامل امور فنی، ساختارهای حقوقی و اداری، دسترسی، خدمات، کاربری و نیز آثار و چالش های ناشی از آن می شود.
اینترنت در ایران در سطح جامعه اکثراً محدود به وبگردی و ارتباطات راهدور و در دانشگاهها تحقیقات علمی است و تجارت الکترونیک به علت نبود زیرساختها و قوانین لازم در سطح محدودی ارائه میگردد. در سال ۱۹۹۳، ایران دومین کشوری در خاورمیانه بود که به اینترنت متصل شد. از آن زمان، تعداد کاربران اینترنت در ایران روند فزایندهای داشته است. اما بر اساس آمار دسامبر ۲۰۱۲ ایران به لحاظ سرعت اینترنت در دسترسی برای کاربران خانگی، در بین ۱۷۸ کشور در جایگاه ۱۶۴ قرار داشت و از بین کشورهای خاورمیانه تنها مصر و سوریه رتبهٔ پایینتری داشتند. همچنین در فصل اول سال ۲۰۱۳ ایران در بین کشورهای جهان جزء کندترین کشورها در زمینه ارائه اینترنت پرسرعت است. کاربران اینترنت در ایران هم از فیلترینگ اعمالشده توسط نهادهای دولتی و هم از فیلترینگ معکوس اعمالشده توسط شرکتهای وابسته به کشورهایی که ایران را تحریم کردهاند، رنج میبرند. همچنین، تولیدکنندگان محتوا در اینترنت طبق قانون موظفند که اطلاعات شخصی خود و ویژگیهای فنی وبگاه خود را نزد دولت ثبت کنند.
پیشینه
پیش از ایجاد شبکه اینترنت، نسل قبلی شبکههای رایانهای جهانگستر به نام بیتنت در دنیا به کار میرفت. به گفتهٔ سیاوش شهشهانی، قائممقام سابق پژوهشگاه دانشهای بنیادی، این مرکز در ایران در سال ۱۳۶۸ خورشیدی (معادل ۱۹۸۹ تا ۱۹۹۰) برای اولین بار به شبکهٔ بیتنت متصل شد؛ هدف این کار ارتباط علمی و پژوهشی با دانشگاههای دنیا بود. شبکهٔ بیتنت با شبکهٔ اینترنتی که امروز استفاده میشود تفاوتهای بسیار داشت. استفادهٔ اصلی که از آن میشد دریافت و ارسال نامههای الکترونیکی بود. سیاوش شهشهانی، قائممقام آن زمان پژوهشگاه دانشهای بنیادی، در مصاحبهای میگوید: «وقتی عضویت ما را تصویب کردند یک بند جدید هم به تعهدات اعضا اضافه کردند و آن این که از شبکه برای تبلیغات مذهبی استفاده نشود.» یکی دیگر از تعهدات این بود که هیج عضوی نباید جلوی عبور اطلاعات از کشوری به کشور دیگر را بگیرد. محمد جواد لاریجانی فردی بود که تعهدات لازم برای برقراری این اتصال را پذیرفت و توافقنامه را امضا کرد. مرکز در ابتدا از طریق اتصال با شمارهگیری و با استفاده از خط تلفن به دانشگاهی در اتریش متصل شد. پس از آن یک خط استیجاری با دانشگاه وین برقرار شد. این اتصال از سال ۱۹۹۳ به شکل رسمی در آمد.
اینترنت به صورت عمومی از حدود سالهای ۱۹۹۳ (معادل ۱۳۷۲ خورشیدی) برای استفادههای دانشگاهی وارد ایران شد. پژوهشگاه دانشهای بنیادی اولین مرکزی بود که به سمت استفاده از اینترنت گام برداشت و از طریق دانشگاه وین به اینترنت متصل شد. در ابتدا خدمات اتصال به اینترنت فقط به کاربران دانشگاهی داده میشد. استفادهٔ عمومی از اینترنت برای اولین توسط شرکت ندا رایانه فراهم آورد.
نقش مخابرات
به گفتهٔ سیاوش شهشهانی وزارت مخابرات دولت ایران نیز از مخالفان گسترش شبکه اینترنت در ایران بود. به گفته وی مخابرات اینترنت را موضوعی موقت و مد روز میدانست و در پی گسترش شبکه X.۲۵ در ایران بود. این مخالفتها مدتها ادامه یافت و تا حدودی گسترش اینترنت در ایران را در سالهای اول کند کرد:
برای اتصال دانشگاه به شبکه، در مرکز تحقیقات ۲ دیدگاه مختلف وجود داشت؛ یکی این که اینترنت را به عنوان یک امتیاز ویژه برای مرکز حفظ کنیم. دوم اینکه آنها را در دانشگاهها توزیع کنیم. بالاخره بعد از بحثهای متوالی، نظریه دوم پیروز شد و دانشگاهها به نوبت به اینترنت وصل شدند. با توجه به اینکه در آغاز اتصال از طریق خط استیجاری بود، به طور طبیعی محدودیتهایی در دانشگاهها به وجود آمد. برای استفاده از اتصال ماهوارهای، مذاکراتی طولانی با مخابرات را پشت سر گذاشتیم و تا پای عقد قرارداد هم رفتیم. ولی تصادفاً در همان روزی که بنا بود قرارداد امضا شود، رئیس مخابرات عوض شد. رئیس بعدی هم از امضای قرارداد خودداری کرد. به همین دلیل حدود ۳ سال طول کشید تا اولین ارتباط ماهوارهای با سرعت ۱۲۸ کیلوبیت بر ثانیه از طریق یک شرکت ایتالیایی برقرار شود. پیش از آن به ترتیب دانشگاههای صنعتی شریف و صنعتی اصفهان، مرکز تحقیقات ژنتیک و مرکز زلزلهشناسی به اینترنت وصل شده بودند. اتصال ۱۲۸ که برقرار شد وضع اینترنت در دانشگاهها کمی بهتر شد. البته ۲ تا ۳ ماه بعد ظرفیت این اتصال به نقطه اشباع رسید برای همین ۸ ماه بعد یعنی اوایل سال ۱۹۹۷ آن را به اتصال ۵۱۲ کیلوبیت در ثانیه ارتقا دادیم.
پس از آغاز ارایهٔ سرویس اینترنت پر سرعت توسط شرکت مخابرات ایران، این شرکت با وجود خصوصی بودن در ژانویه ۲۰۱۲ اقدام به تبلیغات خدمات اینترنت پرسرعت خود از طریق شبکه خبر جمهوری اسلامی ایران در تلویزیون دولتی ایران نمود که این موضوع اعتراض شرکتهای خصوصی رقیب را برانگیخت. این شرکتها، مخابرات را عامل گرانی اینترنت در ایران میدانند.. در عین حال بر اساس مصوبه ۱۰۶ شورای رقابت در مناطقی از کشور که شرکتهای PAP آمادگی فعالیت دارند، شرکت مخابرات مجاز به بهرهبرداری بیش از ۱۰ درصد از ظرفیت بازار نمیباشد اما برخی شرکتهای ارایهدهنده خدمات اینترنتی ادعا میکنند به علت عدم همکاری مخابرات استان تهران این مصوبه در عمل اجرا نمیشود.
ساختار فنی
در ایران بیش از ۶۰۰ شرکت ارائهکنندهٔ خدمات اینترنت فعال هستند که دسترسی کاربران به اینترنت را به شکلهای مختلفی فراهم میکنند. ارزانترین شکل اینترنت در ایران، اینترنت کمسرعت مبتنی بر شمارهگیری است. قیمت اینترنت پرسرعت بر اساس سرعت اتصال و پهنای باند متفاوت است. قیمت اینترنت در ایران گرانترین قیمت ممکن در دنیا به نسبت سرعت و کیفیت و حجم دانلود است.
پهنای باند
پهنای باند ورودی به ایران از طریق فیبر نوری تامین میشود. تا سال ۱۳۸۴، قسمت عمدهٔ پهنای باند ایران از طریق کابل دریایی بین جاسک و فجیره تامین میشد که به علت وابستگی به یک ورودی، قطعیهای عمده در اینترنت ایران به ویژه در ماه دی رخ میداد. تا سال۱۳۸۸، ایران تعداد مبادی اینترنت خود را به ۹ عدد افزایش داد به شکلی که با تمام کشورهای همسایه به جز پاکستان، فیبر ارتباطی داشت. به علاوه ایران در این سال خبر از پیوستن به شبکه فالکون را داد؛ به این ترتیب ظرف پانزده سال بعدی، ایران میبایست مستقیماً به شبکه فیبرنوری جهانی (فلگ) بپیوندد. در آبان ۱۳۹۱، مجموع پهنای باند ایران از طریق این ۹ درگاه مختلف برابر با ۴۶۷ استیام-۱ اعلام شد که معادل ۷۲،۶۲۷ مگابیت در ثانیه است. پهنای باند ورودی به ایران توسط شرکت ارتباطات زیرساخت تهیه میشود و قیمت فروش آن به شرکتهای ارائهکنندهٔ خدمات اینترنتی یکی از دلایل قیمت بالای دسترسی به اینترنت در ایران دانسته میشود. در اکتبر ۲۰۰۸ رئیس انجمن شرکتهای اینترنتی ایران اعلام کرد که کل پهنای باند وارد شده به ایران برابر با مجموع پهنای باند دو دانشگاه در سوئد است و برخی کارشناسان مشکلات شبکهٔ داخلی در ایران را در حدی میدانند که حداکثر سرعت مجاز برای دسترسی خانگی به اینترنت (که توسط سازمان تنظیم مقررات و ارتباطات رادیویی برابر با ۱۲۸ کیلوبیت در ثانیه معادل ۱۶ کیلوبایت در ثانیه تعیین شدهاست) را در درجهٔ کمتری از اهمیت در مورد محدودیت سرعت دسترسی قرار میدهند.
در شش ماهه نخست سال ۲۰۱۰ از میان ۱۵۲ کشور بررسی شده، ایران پس از کشورهایی چون ونزوئلا، نیجریه، بولیوی، عراق، پاراگوئه و جزایر ترک و کایکاس با سرعتی برابر ۰٫۶۱ مگابیت بر ثانیه در رتبه ۱۴۴ قرار گرفت. آمار منتشرشده در مرداد ۱۳۹۰ نیز حاکی از آن بود که از نظر متوسط سرعت اتصال کاربران به اینترنت، ایران در بین کشورهای جهان رتبه پنجم از آخر را داراست. بر اساس آمار دی ۱۳۹۱ ایران به لحاظ سرعت اینترنت خانگی، در بین ۱۷۸ کشور در جایگاه ۱۶۳ قرار گرفتهاست. گزارش سال ۲۰۱۳ خانه آزادی درباره آزادی اینترنت در نقاط مختلف جهان میگوید که از میان ۶۰ کشور مورد مطالعه، ایران بدترین رتبه را در یک سال گذشته داشته است.
در بهمن۱۳۸۹ مخابرات ایران اعلام کرد که از ۲۸ میلیون کاربر اینترنت در کشور، تنها ۷۰۰٬۰۰۰ نفر از اینترنت پرسرعت استفاده میکنند و مابقی (۹۸٪) از اینترنت با استفاده شمارهگیری استفاده میکنند. همچنین در بهمن ۱۳۸۹ نمایندگان مجلس شورای اسلامی اعلام کردند که محدودیت سرعت اینترنت برای کاربرد خانگی برداشته نخواهد شد.
شبکه ملی اطلاعات
پروژهٔ «اینترانت ملی» یا «شبکه ملی اطلاعات»، پروژهای است که توسط دولت ایران برای انتقال مراکز دادهها و میزبانی وبگاههای ایرانی به داخل کشور برنامهریزی شدهاست. به گفته یکی از نمایندگان مجلس ایران، اینترانت ملی جایگزینی برای شبکه اینترنت و روشی برای کنترل محتوای اینترنت است و راهحل مشکل فیلترینگ و کم کردن سرعت اینترنت خواهد بود. این اظهار نظر، در کنار گفتههای وزیر ارتباطات وقت که گفته بود «اینترنت ملی جایگزین اینترنت جهانی میشود» و گفتههای مدیرعامل شرکت فناوری اطلاعات که مسدود شدن سرویسهای رایانامه خارجی نظیر جیمیل را فرصتی برای حرکت به سمت «ایمیل ملی» تلقی کرده بود این شائبه را بر انگیخته که دولت ایران به دنبال جداسازی کامل شبکه اینترنت ایران از شبکهٔ جهانی اینترنت است. پیش از ایران، میانمار و کوبا نیز اقدام به جداسازی شبکهٔ ملی خود از اینترت کرده بودند و چین نیز در حال اجرای این برنامه بود. با این حال، دیگر نمایندگان مجلس و اشخاص حقوقی، وجود برنامهای برای جدا شدن ایران از اینترنت جهانی را تکذیب کردهاند.
کمیت و کیفیت دسترسی و استفاده
آمار دسترسی
در خصوص ضریب نفوذ اینترنت در ایران اختلاف زیادی بین آمارهای اعلام شده از دستگاه های ذی ربط وجود دارد. بخصوص تناقض میان آمارهای مرکز آمار ایران به عنوان مرجع رسمی اعلام آمارهای کشور در برنامه پنجم توسعه و وزارت ارتباطات و فناوری اطلاعات به عنوان دستگاه ارائه خدمات اینترنت به کاربران تفاوت فاحش دارد. در سال ۱۳۸۷ با اعلام آمارهای این دو مرجع این تفاوت آشکار شد به طوری که سازمان آمار ایران ضریب نفوذ اینترنت را ۱۱.۱ درصد و سازمان فناوری اطلاعات عدد ۳۴.۹ درصد اعلام کرد، که این تفاوت به تعریف و فرمول محاسباتی برمی گردد. بر اساس آخرین آمار اعلامشده از سوی وزارت ارتباطات بر اساس محاسبه سامانه مدیریت ضریب نفوذ اینترنت مرکز مدیریت توسعه ملی اینترنت (متما)، ضریب نفوذ اینترنت در کشور در شش ماه نخست ۱۳۹۲ عدد ۵۴.۱۸ درصد می باشد که برمبنای سرویس های اینترنتی ارائه شده محاسبه شده است. در این محاسبه تعداد کاربران اینترنت در شش ماه نخست امسال را ۴۰ میلیون و ۷۱۸ هزار و ۷۴۰ نفر و تعداد کل مشترکان اینترنت در کشور را ۲۶,۶۷۶,۹۴۸ نفر اعلام کرده است. از این تعداد بالغ بر ۲۱.۰۳ درصد کاربران از طریق GPRS، حدود ۱۲.۶۲ درصد از طریق ADSL (شمار مشترکان ضربدر ۲.۵)، ۹.۲۳ درصد از طریق دایل آپ، حدود ۸ درصد از طریق فیبرنوری (شمار مشترکان ضربدر ۲.۵) و تعداد ۳.۱۸ درصد از طریق وایمکس (شمار مشترکان ضربدر ۲.۵) می باشد.
برای حل مشکل تفاوت آمار، بناست در سال ۱۳۹۲ طرح آمارگیری ضریب نفوذ اینترنت توسط سازمان فناوری اطلاعات ایران با همکاری مرکز آمار ایران بهعنوان متولی اجرای آمارگیریهای ملی در کشور و با هماهنگی و مشاوره اداره آمار و اطلاعات اتحادیه جهانی مخابرات اجرا شود. به گفته علیرضا رضایی مدیرکل دفتر صنعت، معدن و زیربنایی مرکز آمار کشور مبنای تعریف این مرکز از کاربران اینترنت، استناد به دستورالعمل توصیه شده و استاندارد توسط اتحادیه بین المللی مخابرات (ITU) است که طبق آن کاربر اینترنت به کسی اطلاق میشود که در طول سه ماه گذشته، حداقل یک بار از اینترنت استفاده کرده باشد. وی می گوید «مدل مدنظر سازمان فناوری اطلاعات به این صورت است که تعداد مشترکین اینترنت را با استفاده از یک مدل خاص، به کاربر اینترنت تبدیل میکنند. به عنوان مثال، اگر یک خانوار دارای خط ADSL باشد، بهطور متوسط باید ۳ الی ۴ نفر از آن استفاده کنند که در نهایت با استفاده از این مدل و ضرب کردن خطوط اینترنت در تعداد افراد خانوار، تعداد مشترکان را به تعداد کاربران اینترنت تبدیل میکنند که استفاده از این روش، ایراداتی دارد.» و می افزاید «مهمترین اختلافی که مرکز آمار ایران با سازمان فناوری اطلاعات داشت که در حال حاضر برطرف شده، این است که آنها میگفتند که به تعداد استفادهای که یک نفر از اینترنت در منزل یا محل کار یا دانشگاه میکند، یک کاربر جداگانه حساب میشود. به عنوان مثال، اگر من به عنوان کاربر اینترنت در محل کار، منزل و دانشگاه به اینترنت دسترسی داشته باشم، نه یک کاربر بلکه سه کاربر محسوب میشوم در صورتی که این تعریف مغایر با تعریف سازمان ITU است. اختلاف دوم به استفاده این سازمان از روش مدل مبنا که بر یک سری از فرضها استوار است، برمیگردد. این فرضها ممکن است باعث ایجاد انحراف در نتایج شوند اما در روش مورد استفاده توسط مرکز آمار ایران که مبتنی بر روش مشاهده است، احتمال وجود خطا در آمارگیری صورت گرفته، وجود دارد اما سعی میکنیم آن را کنترل کنیم.»
از سوی دیگر در آبانماه ۱۳۹۲ علی اصغر انصاری (معاون سازمان فناوری اطلاعات) از رشد انتقال میزبانی وبگاههای اینترنتی به داخل کشور با رقم ماهانه ۳ تا ۵ درصد خبر داد و اظهار داشت: از میان ۵۰۰ وبگاه اینترنتی که بیشترین بازدید را در میان ایرانیها به خود اختصاص دادهاند، ۴۳۶ وبگاه ایرانی و مابقی غیرایرانی هستند که از این تعداد بالغ بر ۲۸۷ وبگاه در داخل کشور میزبانی میشوند.
در دهه ۱۳۸۰ مهمترین روش دسترسی به اینترنت در ایران دسترسی از طریق شمارهگیری تلفنی بوده است. کاربران میتوانند از شرکتهای ارائه کنندهٔ خدمات اینترنتی اشتراک مدتدار (بر حسب ساعات استفاده از اینترنت یا بر حسب روزهای مجاز برای دسترسی به اینترنت) خریداری کنند، یا این که از کارت اینترنت استفاده کنند. این کارتها را میتوان از دکههای مطبوعاتی یا کافینتها خرید. گونهٔ دیگری از دسترسی با شمارهگیری در ایران وجود دارد که به اینترنت هوشمند معروف است. در این روش کاربر با تماس با شمارههایی ۱۰ رقمی که همگی با ۹۰۹ آغاز میشوند، بدون واردکردن نام کاربری و گذرواژه به اینترنت متصل میشود. اینترنت هوشمند جزو خدمات شبکه هوشمند مخابرات ایران به حساب میآید و هزینهٔ ارتباط با اینترنت از این طریق طبق تعرفهٔ مخابرات ایران (دقیقهای ۵۰ ریال) به صورت حساب مشترک خط تلفن افزوده میشود.
از اوایل دههٔ ۱۳۸۰ دسترسی به ایدیاسال نیز در ایران فراهم شد اگر چه استفاده از آن برای همهٔ کاربرها مقدور نبود. به طور ویژه، استفاده از تکنولوژی پیسیام که با هدف افزایش ضریب نفوذ تلفن در ایران انجام شد، باعث شده که عدهٔ قابل توجهی از مشترکین تلفن نتوانند از خط تلفن خود برای ارتباط ایدیاسال استفاده کنند. گذشته از این، طبق مصوبات اخیر «کمیسیون تنظیم مقررات و ارتباطات رادیویی» در ایران، اشتراک گذاری با نسبت ۱ به ۱۰ در ایران عملاً مجاز شناخته شده که باعث افت کیفیت خطوط ایدیاسال میشود. همچنین برخی شرکتهای ارائهدهندهٔ خدمات اینترنتی اقدام به ارائهٔ خدمات اینترنت بیسیم نظیر وایمکس کردهاند. همچنین قرار است که در آینده اتصال منازل به اینترنت با پهنای باند ۲۰ مگابیت در ثانیه از طریق فیبر نوری میسر شود.
از سال ۲۰۰۷، سه شرکت همراه اول و ایرانسل و تالیا خدمات اینترنت روی تلفن همراه را نیز ارائه میکنند. این شرکتها اینترنت را به صورت جیپیآراس و یا سرعت داده افزایش یافته برای تحول جیاسام ارائه میکنند و در کنار آن خدمات دیگر مبتنی بر اینترنت (از جمله بانکداری اینترنتی با کمک تلفن همراه) را نیز برای دارندگان تلفن همراه ارائه میکنند. آخرین گزارشها در سال ۲۰۱۳ وضعیت دسترسی به فناوری اطلاعات و ارتباطات ایران نشان میدهد که تنها چهار درصد جمعیت کشور کاربر اینترنت پرسرعت با فناوری سیمی همچون ای دی اس ال و حدود ۱/۴درصد با فناوری بیسیم مانند وایمکس و موبایل به اینترنت پرسرعت دسترسی دارند. همچنین سامانه مدیریت ضریب نفوذ اینترنت مرکز مدیریت توسعه ملی اینترنت نشان میدهد که استانهای مازندران، تهران، اصفهان، خوزستان و سمنان به ترتیب دارای بالاترین ضریب نفوذ اینترنت در ایران هستند.
مقابله با محتوای غیرمجاز یا مجرمانه از طریق محدودیت دسترسی
محدودسازی دسترسی به نشانیهای اینترنتی از طریق پالایش یا فیلترینگ در ایران از سال ۱۳۸۰ با تصویب مقررات و ضوابط شبکههای اطلاع رسانی رایانهای آغاز می شود و مصادیق فعالیت های اینترنتی غیرمجاز معین می شود. پیرو آن در سال ۱۳۸۱ «کمیته مصادیق پایگاههای اطلاعرسانی رایانهای غیرمجاز » (که گاه «کمیته مصادیق پایگاه های غیرمجاز اینترنتی» نامیده شده است)، زیر نظر شورای عالی انقلاب فرهنگی تشکیل شد. وزارت اطلاعات ، سازمان صدا و سیما، وزارت فرهنگ و ارشاد اسلامی، نماینده شورای عالی انقلاب فرهنگی و سازمان تبلیغات اسلامی اعضای ثابت و اصلی کمیته مصادیق پایگاه های غیر مجاز اینترنتی بودند و وزارت اطلاعات مسئولیت آن را برعهده داشت. به نوشته رضا باقری اصل، مدیر وقت دفتر فناوریهای نوین مرکز پژوهش های مجلس شورای اسلامی، «نقد اساسی که به این کمیته وارد است غیر قضایی بودن جایگاه کمیته و نیز ترکیب اعضاء می باشد. زیرا فیلتر کردن یک سایت یا رفع فیلتر اساساً یک اقدام قضایی در جهت اعطاء یا سلب حق از یک شخص است و کمیته مذکور با ترکیبی از اعضایی که برشمرده شد چنین جایگاهی را ندارد.»
از سال ۱۳۸۲ در کنار کمیته تعیین مصادیق، «دفتر اینترنت دادستانی» از سوی «دادستانی تهران» تأسیس شد. طبق بند ٥ اصل ١٥٦ قانون اساسی جمهوری اسلامی ایران، مسئولیت پیشگیری از وقوع جرایم به عهده قوه قضائیه است و از این رو دادستانی برای اعمال مقررات شبکه های اطلاع رسانی رایانه ای مصوب شورای عالی انقلاب فرهنگی مبادرت به این اقدام مبادرت کرد. در آن زمان دفتر اینترنت دادستانی جهت مسدودسازی وب سایت های مستهجن، به ویژه پایگاه های فارسی، به ماده ٦٣٩ قانون مجازات اسلامی مصوب ١٣٧٥ استناد می کردند. همچنین برای رسیدگی به شکایات افراد از وب سایت هایی که فعالیت هایی از قبیل کلاهبرداری، نشر اطلاعات خصوصی و سایر عناوین مجرمانه را دارند، را رأساً از سوی محاکم تحت پیگرد قرار می داد. این دفتر با تشکیل پرونده و ارجاع آنها به شعب اختصاصی پیش بینی شده، فرآیند کیفری را تسهیل می کند و در صورت صدور حکم دادگاه مبنی بر مسدود شدن وب سایت مربوط، اقدامات مقتضی را با مجریان فیلترینگ به انجام می رساند.
شرکت فناوری اطلاعات، به عنوان متولی اصلی اجرای فیلترینگ کشور، کار خود را از سال ١٣٨٠ با نرم افزار امریکایی Websense آغاز کرد. در سال ١٣٨٢ نرم افزار Smart و بعدا نرم افزار Webwasher بکارگرفته شد که حق اشتراک آن تا پایان آبان ١٣٨٥ اعتبار داشت. در این نرم افزارها کنترل محیط هایی نظیر پست الکترونیکی و محیط های گپ وجود ندارد، حال آنکه در صورت بکارگیری فیلترینگ روباتیک وب، می توان آن را در ابتدای پهنای باند قرار داد تا به صورت خودکار و هوشمند به جست وجو بپردازد و براساس طبقه بندی تعریف شده، فهرست سیاه را تکمیل کند. به همین منظور، ابزاری به نام Delta Global خریداری و به کار گرفته شده است. ضعف ابزارهای خارجی و هزینه آنها باعث شد مسئولین شرکت به سمت تولیدات داخلی گرایش یابند. در این رابطه جند شرکت موفق شدند تأییدیه لازم را از شرکت فناوری اطلاعات و قوه قضائیه اخذ کنند. این ابزارها که برای پوشش دهی مسیر ارسال طراحی و تولید شده اند، ابتدا جوابگوی ظرفیت شبکه نبودند. لذا به آنها اجازه داده شد در لایه های بعدی توزیع، یعنی ISPها به کار گرفته شوند. پس از رفع نواقص از اردیبهشت ماه ۸۶ لایه Carrier Class را در اختیار گرفته اند. کسب این توفیق باعث شد مجدداً مناقصه خارجی برگزار نشود. این مسئولیت پس از تصویب قانون جرائم رایانه ای در سال ۱۳۸۸ به شرکت ارتباطات زیرساخت محول شد.
با تصویب قانون جرائم رایانه ای و تشکیل «کارگروه تعیین مصادیق محتوای مجرمانه رایانه ای» در سال ۱۳۸۸ مسئولیت تعیین موارد پالایش به این کارگروه محول شد. طبق حکم ماده ۲۲ این قانون، «قوه قضائیه موظف است ظرف یک ماه از تاریخ تصویب این قانون کمیته تعیین مصادیق محتوای مجرمانه را در محل دادستانی کل کشور تشکیل دهد. وزیر یا نماینده وزارتخانه های آموزش و پرورش، ارتباطات و فناوری اطلاعات، اطلاعات، دادگستری، علوم، تحقیقات و فناوری، فرهنگ و ارشاد اسلامی، رئیس سازمان تبلیغات اسلامی، رئیس سازمان صدا و سیما و فرمانده نیروی انتظامی، یک نفر خبره در فناوری اطلاعات و ارتباطات به انتخاب کمیسیون صنایع و معادن مجلس شورای اسلامی و یک نفر نماینده مجلس شورای اسلامی به انتخاب کمیسیون حقوقی و قضایی و تأیید مجلس شورای اسلامی اعضای کمیته را تشکیل خواهند داد. ریاست کمیته به عهده دادستان کل کشور خواهد بود.» بنا بر اعلام محمود خسروی مدیرعامل شرکت ارتباطات زیرساخت « براساس ماده 21 قانون جرایم رایانه ای فیلترینگ یکپارچه برای تمامی شرکتهای اینترنتی تعریف شده است و ISP ها این اجازه را ندارند که به دلخواه برای سایتی محدودیت و عدم محدودیت اعمال کنند. فیلترینگ یکپارچه در کل کشور و از مسیر "گیت وی" انجام می شود و تعیین سایتهایی که مشمول این طرح قرار می گیرند از سوی کمیته تعیین مصادیق خواهد بود و شرکت ارتباطات زیرساخت آن را اعمال می کند. برابر قانون نیز هر سرویس دهنده اینترنت موظف است که این موارد را اجرا کند.»
«کارگروه تعیین مصادیق محتوای مجرمانه رایانه ای» در اجرای حکم ماده ۲۱ قانون جرائم رایانه ای و بر اساس قوانین موضوعه از جمله قانون مجازات اسلامی، قانون مطبوعات و قانون جرائم رایانه ای و نیز مصوبات شورای عالی امنیت ملی مجموعه ای از محتواها را مجرمانه اعلام نمود. این هشت محور عبارت هستند از:
محتوا علیه عفت و اخلاق عمومی
محتوا علیه مقدسات اسلامی
محتوا علیه امنیت و آسایش عمومی
محتوا علیه مقامات و نهادهای دولتی و عمومی
محتوایی که برای ارتکاب جرایم رایانه ای به کار می رود ( محتوا مرتبط با جرایم رایانه ای )
محتوایی که تحریک ، ترغیب ، یا دعوت به ارتکاب جرم می کند ( محتوای مرتبط با سایر جرایم )
محتوا مجرمانه مربوط به امور سمعی و بصری ومالکیت معنوی
محتوای مجرمانه مرتبط با انتخابات مجلس شورای اسلامی
محتوای مجرمانه مرتبط با انتخابات ریاست جمهوری
به گفتهٔ گاردین، ایران از نظر تعداد وبگاههایی که در آن فیلتر شدهاند، در دنیا پس از چین در رتبهٔ دوم قرار دارد. بعضی از وبگاههای مطرح ایران و جهان مانند جستجوگر گوگل، جستجوگر بینگ، فیسبوک و توییتر، جیمیل و سرویس ایمیل یاهو، وبگاه اکبر هاشمی رفسنجانی، وبگاه سید محمد خاتمی، سحام نیوز، پرشین بلاگ، بلاگفا، بلاگر، وردپرس، خبر آنلاین، عصر ایران، و وبگاه سفارت کشور انگلستان در ایران به صورت موقت یا دائم فیلتر و از دسترس خارج شدهاند.
برخی انتقادات در خصوص شیوه عملکرد نرم افزارهای فیلترینگ وجود دارد. به نوشته رضا باقری اصل «فیلترینگ ارسال ضریب خطای بالایی دارد و علی رغم بهره گیری از ابزار هوشمند و پایگاه داده یکپارچه که هنوز به بهره برداری نرسیده است نمیتوان انتظار پالایش ۱۰۰ درصدی را داشت و در نهایت توسعه واژگان و فهرست سیاه سایت ها ISPها را با مشکل مواجه می سازد. استفاده از روش منع جست وجوی واژگان غیرمجاز رفتار تولیدکنندگان محتوای غیر مجاز را تغییر می دهد به طوری که با روش های تحریک موتورهای جست وجو از واژگان مجاز برای معرفی محتوای غیر مجاز بهره می برند. بنابراین اگر بخواهیم کماکان از این روش استفاده کنیم باید فهرست را هر روز طولانی تر کرده تا جایی که واژگان مجازی باقی نماند.» و «در خصوص فیلترینگ دریافت یا محتوا نیز مسایلی از قبیل تنوع محتوا، ضریب خطای بالا در تشخیص، تنوع فناوری هایی که صفحات وب ایجاد می کنند و بار زیادی که شبکه متحمل می شود، موانع اصلی پیاده سازی آن بوده است. البته این مسأله در مورد کلیدواژه ها نیز صادق است و برای احراز آن کافیست به عنوان نمونه یک کلمه ممنوعه را در تعداد کلمات موجود در بانک و همچنین تعداد افرادی که در یک لحظه به جست وجوی آن می پردازند ضرب کنیم.»
تاثیر تحریم های بین المللی بر محدودیت دسترسی
از سوی دیگر، کاربران اینترنت در ایران از محدودیت دسترسی معکوس نیز رنج میبرند به این معنی که برخی وبگاههای اینترنتی به دلیل الزامشان به تبعیت از تحریمهای علیه ایران مجبور به محدودکردن خدماتی هستند که به کاربران ایرانی ارائه میشود. از جمله این شرکتها میتوان به گوگل، نوکیا و سیمنتک اشاره کرد. با این حال، در برخی موارد این محدودیتها فراتر از ضوابط تحریمهای علیه ایران بودهاند؛ به عنوان مثال، اگر چه شرکت گوگل تا مدتها دریافت برنامههای افزودنی گوگل کروم از ایران را ممنوع کرده بود، پس از پیگیری آن توسط کاربران ایرانی این محدودیت در اوایل سال ۲۰۱۲ برداشته شد. شرکت اپل نیز در اوایل سال ۲۰۱۲ محدودیتهایی اعمالشده برای ایرانیان در خرید برنامههای کاربردی از فروشگاه اپل استور را برداشت. به دلایل بالا، کاربران اینترنت در ایران به استفاده از نرمافزارهای فیلترشکن و روشهای گریز از این محدودیتها روی آوردهاند. بر اساس آمار منتشرشده در اکتبر ۲۰۱۲ به نقل از پلیس فضای تولید و تبادل اطلاعات ایران، حدود ۳۰ درصد از کاربران اینترنت در ایران از ویپیان استفاده میکنند. این در حالی است که استفاده از فیلترشکن در ایران جرم تلقی میشود و پلیس نسبت به خطرات استفاده از ویپیان و نرمافزارهای فیلترشکن نیز هشدار میدهد. و بر اساس آمار الکسا صفحهٔ پیوندها بین ۵-۷ صفحهٔ پربازدید در ایران تبدیل شد.
یکی دیگر از راههای دسترسی به اینترنت در ایران کافینتها هستند. هر روز بر حساسیت استفاده کاربران از اینترنت در کافینتها از سوی نهادهای دولتی و امنیتی افزایش پیدا میکند، فرمانده نیروی انتظامی تهران در مردادماه سال ۱۳۹۲ اعلام کرد که ماموران نظارت بر اماکن عمومی پلیس تهران در جریان عملیات تازه سرکشی از ۳۵۲ کافینت بازدید کردهاند. طبق آمار از هر ۵ کافینتی که بازدید کردهاند یکی را پلمپ کردهاند. نیروی انتظامی هدف از این اقدام را "تامین امنیت کاربران و استفادهکنندگان از سرویسهای دفاتر خدمات اینترنت (کافینتها)" اعلام کرده است. نیروهای انتظامی همچنین دفاتر خدمات اینترنت را موظف کردهاند اطلاعات هویتی کاربران را با دریافت مدارک شناسایی معتبر ثبت و از ارائه خدمات به مراجعه کنندگانی که مدارک شناسایی ارائه نمیکنند خودداری کنند. همچنین دفاتر خدمات اینترنت موظفند حداقل دو دوربین در در محوطه دفاتر خود نصب کرده باشند و علاوه بر اطلاعات هویتی کاربران، سایر اطلاعات کاربری شامل روز و ساعت استفاده، آیپی اختصاص یافته و فایل لاگوب سایتها و صفحات رویت شده را ثبت و حداقل تا ششماه نگهداری کنند.
در مورد آمار تعداد وبگاههای فیلتر شده در ایران باید گفت که به طور معمول آمار رسمی و دقیقی منتشر نمیشود اما یکی از مشاوران قوه قضائیه ایران تعداد وبگاههای فیلتر شده تا آبان ۸۷ را پنج میلیون برشمرد. ، همچنین در دیماه سال ۹۱ عنوان شد که با نگاهی به برخی استانها که آمار فیلترینگ خود را اعلام کردهاند، تعداد وبگاههای فیلترشده در سه ماهه اول این سال بیش از ۱۰۰ وبگاه ایرانی و خارجی است. همچنین در حالی که برخی متولیان اینترنت در ایران میگویند، ۹۰ درصد وبگاهها بر اساس درخواستهای مردمی مسدود میشوند ، مدیر سرویس وبلاگ " پرشینبلاگ " از شش برابر شدن تقاضای مسدود سازی وبلاگها، در هشت ماه اخیر از سوی کارگروه تعیین مصادیق محتوای مجرمانه خبر میدهد. از سوی دیگر سیدمحمدرضا آقامیری عضو کمیته تعیین مصادیق محتوای مجرمانه ماهانه فقط در حدود ۱۵۰۰ وبگاه ضد دینی توسط این کمیته فیلتر میشود و آمار دقیقی درباره فیلترینگ کلیه وبگاهها وجود ندارد
محدودیت در به کارگیری
بسیاری از وبگاههای شبکه اجتماعی که در سطح جهانی فعالیت میکنند (نظیر فیسبوک و توییتر) در ایران فیلتر شدهاند. اگر چه عضویت در این شبکههای اجتماعی به خودی خود جرم تلقی نمیشود، اما دور زدن سامانهٔ فیلترینگ برای دسترسی به این شبکهها جرم تلقی میگردد. همچنین، فعالیت ایرانیان در این شبکههای اجتماعی به شکلی که منجر به توهین به مقدسات جمهوری اسلامی ایران شود (از جمله با انتشار تصاویر بدون حجاب) جرم تلقی میشود.
ایران اولین کشوری نیست که چنین الزامی را برای تولید محتوا دارد؛ پیش از ایران، چین نیز کاربران اینترنت را جهت ایجاد وبگاه و وبنوشت ملزم به اعلام هویت خود کرده بود. چین در سال ۲۰۱۲ این قوانین را گسترش داد به شکلی که کاربرانی که در اینترنت محتوا تولید نمیکنند و تنها برای استفادهٔ محتوا به اینترنت سر میزنند هم ملزم به اعلام هویت خود به ارائهدهندگان خدمات اینترنت هستند. ایران پیش از این تلاش کرده بود که با الگو برداری از چین، یک موتور جستجوی داخلی طراحی کند تا از کاربری موتور جستجوی گوگل توسط کاربران ایرانی کاسته شود.
ساختار حقوقی
سیاست های مربوط به اینترنت
سیاست های کلی نظام در خصوص شبکه های اطلاع رسانی رایانه ای
این سیاست ها برای تنظیم خط مشی حاکمیت در خصوص شبکه های رایانه ای از جمله اینترنت در تاریخ ۱۱ مهر ۱۳۷۷ توسط مقام رهبری، آیت الله خامنه ای، مصوب و ابلاغ گردید و در آن بر اموری شامل «ساماندهي و تقويت نظام ملي اطلاعرساني رايانهاي»، «توسعة كمي وكيفي شبكة اطلاعرساني ملي»، «يجاد دسترسي به شبكههاي اطلاعرساني جهاني صرفاً از طريق نهادها و مؤسسات مجاز»، «حضور فعال و اثرگذار در شبكههاي جهاني»، «ايجاد و تقويت نظام حقوقي و قضايي متناسب»، « توسعة فنآوري اطلاعات (به ويژه حفاظت از اطلاعات) و آيندهنگري در خصوص آثار تحولات فنآوري اطلاعات » و «اقدام مناسب براي دستيابي به ميثاقها و مقررات بينالمللي و ايجاد اتحاديههاي اطلاعرساني » تأکید شد.
سیاستهای کلی نظام در بخش امنیت فضای تولید و تبادل اطلاعات (افتا)
این سیاستها در خصوص امنیت فناوری اطلاعات و ارتباطات و از جمله اینترنت در تاریخ ۲۹ بهمن ۱۳۸۹ توسط رهبر ایران، مصوب و ابلاغ گردید. هدف آن عبارت است از «ایجاد نظام جامع و فراگیر در سطح ملی و سازوکار مناسب برای امنسازی ساختارهای حیاتی و حساس و مهم در حوزه فناوری اطلاعات و ارتباطات، و ارتقاء مداوم امنیت شبکههای الکترونیکی و سامانههای اطلاعاتی و ارتباطی در کشور به منظور استمرار خدمات عمومی، پایداری زیرساختهای ملی، صیانت از اسرار کشور، حفظ فرهنگ و هویت اسلامی-ایرانی و ارزشهای اخلاقی، و حراست از حریم خصوصی و آزادیهای مشروع و سرمایههای مادی و معنوی.» این هدف از طریق «ارتقاء سطح دانش و ظرفیتهای علمی، پژوهشی، آموزشی و صنعتی کشور برای تولید علم و فناوری» در زمینه افتا و «تکیه بر فناوری بومی و توانمندیهای تخصصی داخلی» در این حوزه پیگیری میشود.
مقررات شورایعالی انقلاب فرهنگی
پیرو تصویب و ابلاغ سیاستهای کلی شبکههای اطلاع رسانی رایانهای از سوی مقام رهبری شورای عالی انقلاب فرهنگی «مقررات و ضوابط شبکههای اطلاع رسانی رایانهای» را طی جلسات 482، 483، 484، 485، 486 و 488 در سال ۱۳۸۰ تصویب کرد. در صدر این مقررات اصول حاکم بر آن بدین شرح بیان شده است:
حق دسترسی آزاد مردم به اطلاعات و دانش.
مسؤولیت مدنی و حقوقی افراد در قبال فعالیتهای خود.
رعایت حقوق اجتماعی و صیانت فرهنگی و فنی کشور در این قلمرو.
ایجاد حداکثر سهولت در ارائه خدمات اطلاع رسانی و اینترنت به عموم مردم.
نخستین مورد این مقررات عبارت است از «آییننامه نحوه اخذ مجوز و ضوابط فنی نقطه تماس بین المللی» که نقطه تماس بین المللی(ASP) را در انحصار دولت قرار می دهد و صدور مجوز آن به دستگاه های اجرایی را به شورای عالیاطلاع رسانی محول می کند. این آیین نامه کلیه ایجاد کنندگان نقطه تماس بین المللی را مکلف می کند تا اقدامات لازم را برای حفاظت و کنترل متمرکز از شبکههای مزبور انجام دهند که عبارت است از: الف - فراهم سازی سیستم پالایش مناسب به منظور ممانعت از دسترسی به پایگاههای ممنوع اخلاقی و سیاسی و حذف ورودیهای غیرمطلوب. همچنین تعیین ضوابط پالایش به کمیسیون راهبردی شورای عالی اطلاع رسانی محول می شود. ب - ایجاد سیستم بارو (Firewall) مناسب به منظور صیانت شبکهها از تخریب، فریب و سرقت اطلاعات. ج - دایرکننده نقطه تماس بین المللی اینترنتی بانک فعالیتهای اینترنتی کاربران خود را در دسترس وزارت پست و تلگراف و تلفن قراردهد تا براساس ضوابط و مصوبات شورای عالی امنیت ملی با حکم قاضی حسب درخواست در اختیار وزارت اطلاعات قرار گیرد. د - فراهم سازی امکان جلوگیری از برقراری ارتباطات غیرمتعارف، نظیر ارتباطات غیرمتقارن و ارتباطات غیرمستقیم در موارد غیرمجاز (پیشکار- ProxyServer). به علاوه از وزارت وزارت پست و تلگراف و تلفن می خواهد تمهیدات لازم برای برقراری ارتباطات بین کاربران در داخل کشور از طریق شبکه مازه (Back Bone) داخلی را فراهم سازد.
مورد دوم « آییننامه واحدهای ارائه کننده خدمات اطلاع رسانی و اینترنت رسا (ISP)» می باشد. این آیین نامه حدود فعالیت ارائه کننده خدمات اینترنت و شرایط اخذ، نحوه صدور مجوز و نظارت بر فعالیت آنها توسط وزارت پست و تلگراف و تلفن را معین می کند. همچنین مسئولیت های این شرکت ها و کاربران آنها را بیان می کند که شامل مسئولیت نسبت به محتوای تولیدی توسط خود اشخاص، رعایت حقوق پدیدآورندگان، اعمال پالایش، ثبت اطلاعات کاربران و فعالیت های اینترنتی آنها و ارائه آن به وزارت مذکور، حفظ حقوق کاربران و جلوگیری از حمله به کامپیوترهای آنها ، حفظ حریم اطلاعات خصوصی کاربران و ارائه خدمات با کیفیت می شود. به علاوه مصادیق محتوای ممنوع را مشخص می سازد.
مورد سوم آییننامه «دفاتر خدمات حضوری اینترنت (Coffeenet)» است که شرایط و مراحل اخذ مجوز گردانندگان کافی نت و مقررات حاکم بر فعالیت آنها را بیان می کند. طبق این آیین نامه این مراکز واحد صنفی هستند و باید از صنف مربوطه مجوز بگیرند. از نکات جالب آن توجه به سرویس های نوظهور نظیر تلفن اینترنتی - آوانت (VOIP) است.
شورایعالی انقاب فرهنگی در بهمن ماه سال ۱۳۸۱ در راستای اجرای مقررات فوق تصویب کرد که «به منظور صیانت از فرهنگ ملی و اسلامی، کمیته ای مرکب از نمایندگان وزارت اطلاعات، وزارت فرهنگ و ارشاد اسلامی و سازمان صدا و سیما با مسیولیت نماینده وزارت اطلاعات تشکیل میشود. این کمیته مصادیق پایگاههای اطلاعرسانی رایانهای غیرمجاز را تعیین و به وزارت پست و تلگراف و تلفن ابلاغ خواهد کرد.» در سال ۱۳۸۲ در مصوبه دیگری نماینده دبیرخانه شورای عالی انقلاب فرهنگی و نماینده سازمان تبلیغات اسلامی به آن کمیته اضافه شدند.
بدین ترتیب این آیین نامه ها به فعالیت بخش خصوصی در ایجاد نقطه تماس بین المللی خاتمه می دهد. فعالیت بخش خصوصی در حوزه اینترنت را تنظیم و مقررات گذاری می کند و برای نخستین بار سازوکار رسمی پالایش در ایران را ایجاد میکند. مسئولیت های حاکمیتی این حوزه را به شورای عالیاطلاع رسانی و وزارت پست و تلگراف و تلفن محول می کند. البته طی دهه ۱۳۸۰ با تغییر ساختار این دو نهاد و تغییر قوانین بخصوص قانون جرائم رایانه ای، بخش عمده ای از این مقررات نسخ ضمنی می شود.
ساختار اداری
مرکز ملی فضای مجازی ایران
مرکزی است که به فرمان سید علی خامنهای رهبر حکومت جمهوری اسلامی ایران توسط شورای عالی فضای مجازی تشکیل گردید. در بخشی از فرماننامهٔ وی آمدهاست که
گسترش فزاینده فناوریهای اطلاعاتی و ارتباطاتی بهویژه شبکهٔ جهانی اینترنت و آثار چشمگیر آن در ابعاد زندگی فردی و اجتماعی و لزوم سرمایه گذاری وسیع و هدفمند در جهت بهرهگیری حداکثری از فرصتهای ناشی از آن در جهت پیشرفت همهجانبهٔ کشور و ارائه خدمات گسترده و مفید به اقشار گوناگون مردم و همچنین ضرورت برنامهریزی و هماهنگی مستمر به منظور صیانت از آسیبهای ناشی از آن اقتضا میکند که نقطهٔ کانونی متمرکزی برای سیاستگذاری و تصمیم گیری و هماهنگی در فضای مجازی کشور به وجود آید. به این مناسبت شورای عالی فضای مجازی کشور با اختیارات کافی به ریاستِ رئیس جمهور تشکیل میگردد و لازم است به کلیهٔ مصوبات آن ترتیب آثار قانونی داده شود.
شرکت ارتباطات زیرساخت
شرکت ارتباطات زیرساخت، یکی از شرکتهای زیرمجموعه وزارت ارتباطات و فناوری اطلاعات میباشد که به عنوان متولی شبکه مادر مخابراتی در کشور و کارگزار وزارت ارتباطات و فناوری اطلاعات، به منظور اعمال حاکمیت، وظیفه اجرای سوئیچینگ و ارتباطات اپراتورهای مخابراتی را در نقاط حضور و شبکههای مربوط بر عهده دارد.
مرکز مدیریت توسعه ملی اینترنت
مرکز مدیریت توسعه ملی اینترنت در اردیبهشت سال ۱۳۹۱ توسط وزارت وقت ارتباطات و فناوری اطلاعات به عنوان مرجع اعلام فهرست ارائهدهندگان رایانامه (ایمیل) با میزبانی داخلی معرفی شد که باید توسط بانکها و بیمهها برای آدرس ایمیل مشتریان قابل قبول باشند. بر این اساس استفاده از آدرس ایمیلهای نظیر جی میل، یاهو و غیره توسط مشتریان بانکها و بیمهها ممنوع شد. این مرکز همچنین مسئول تخصیص نشانیهای اینترنتی و دامنهٔ .ir است.
سازمان تنظیم مقررات و ارتباطات رادیویی
سازمان تنظیم مقررات و ارتباطات رادیویی یک نهاد مستقل قانونگذار و نظارتی است که نقش آن رقابتی کردن بازار ارائه خدمات مخابراتی و بالا رفتن کیفیت خدمات آنهاست. این سازمان همچنین مسئول تعیین جدول ملی فرکانس، و صدور پروانهٔ بهرهبرداری برای هر گونه خدمات مخابراتی است.
یکی از ادارات کل تحت پوشش معاونت نظارت با سه گروه هماهنگی و نظارت بر سرویسهای فناوری اطلاعات، تهیه و بازنگری طرحهای نظارت بر سرویسهای فناوری اطلاعات، تدوین و بازنگری آئین نامهها و ضوابط بر سرویسهای فناوری اطلاعات میباشد که وظیفه سیاستگذاری، مدیریت، هدایت و ایجاد هماهنگی جهت نظارت و اعمال مقررات در سطح کشور را در حوزه سرویسهای فناوری اطلاعات بر عهده دارد. در حال حاضر دارندگان پروانه سرویسهای فناوری اطلاعات شامل ISP، ISDP، PAP، SAP، WiMAX، GMPCS، شرکت مخابرات ایران و شبکه علمی کشور میباشند
پلیس فضای تولید و تبادل اطلاعات ایران
با نام مختصر فتا، یک واحد تخصصی نیروی انتظامی جمهوری اسلامی ایران است که وظیفه آن مقابله با فیشینگ (کلاهبرداری اینترنتی) و جعل، سرقت اینترنتی، هک و نفوذ، جرائم سازمان یافته رایانهای، هرزه نگاری (موارد سوء اخلاقی) و تجاوز به حریم خصوصی افراد است.
تشکیل پلیس فتا به دستور فرمانده نیروی انتظامی جمهوری اسلامی ایران و با هدف ایجاد نیروی ویژه مبارزه با جرائم رایانهای انجام شد. رییس پلیس سایبری کشور به فعالیت پلیس فتا در ۳۳ استان کشور و نیز راه اندازی این پلیس در۵۶ شهرستان بالای بیش از۲۰۰ هزار نفر اشاره کرد و اعلام کرد تا آذر ماه ۱۳۹۲ ده مرکز استان کشور مجهز به آزمایشگاه فارنزیک است.
رسانندههای خدمات اینترنتی
کمیسیون سازمان تنظیم مقررات و ارتباطات رادیویی در سال ۱۳۸۳ پروانهٔ انتقال دادهها را برای ۱۲ شرکت خصوصی رساننده خدمات اینترنتی به مدت ۱۰ سال صادر کرد، که یکی از آنها شرکت مخابرات ایران است. بقیه شرکتهای خصوصی معروف به ندا در حال حاضر نیمی از بازار اینترنت پرسرعت در بستر کابل مسی را در اختیار دارند و نیم دیگر این بازار در اختیار شرکت مخابرات ایران است. این در حالی است که بر اساس مصوبات «شورا و مرکز ملی رقابت»، سهم مخابرات از کاربران هر استان باید ۱۰ درصد یا کمتر باشد اما در عمل مخابرات ۵۰ درصد تعدادی و ۷۰ درصد درآمدی را در اختیار دارد. مجموع مشترکان شرکتهای ندا در ایران حدود یک میلیون و ۵۰۰ هزار مشترک سراسر ایران است.
خدمات بر بستر اینترنت
تجارت الکترونیک
طبق تبصره ۲۶ قانون دوم برنامه پنج ساله توسعه اقتصادی کشور (۱۳۷۴-۱۳۷۸)، وزارت بازرگانی موظف به ایجاد و راه اندازی تجارت الکترونیکی در سطح ملی و بینالمللی با کمک تمام نهادها و ارگانهای دولتی بوده است. به همین دلیل وزارت بازرگانی ایران در سال ۱۳۷۴ به عنوان ناظر در چهاردهمین هیأت تبادل الکترونیک اطلاعات برای امور اداری، تجاری و ترابری (ادیفکت) شروع به فعالیت کرد و در مرداد ۱۳۷۵ با همکاری و مشارکت سازمانهای دیگر مانند گمرک، وزارت راه و ترابری، وزارت پست و تلگراف و بانک مرکزی هیئتی مشابه در ایران تشکیل شد.
در حال حاضر تجارت الکترونیک در ایران با استفاده از کارتهای بانکی چندین بانک عضو شبکهٔ شتاب قابل انجام است. همچنین خدمات بانکداری الکترونیکی نظیر دریافت موجودی و صورتحساب، انتقال وجه، و پرداخت قبوض آب، برق، گاز، تلفن ثابت و تلفن همراه توسط بانکها در ایران ارائه میشود.
اظهار نظرها در مورد وضعیت اینترنت در ایران
با آغاز به کار دولت حسن روحانی خبرهایی در مورد استفادهٔ برخی از مقامات جمهوری اسلامی از رسانههای اجتماعی انتشار یافت و میزان دسترسی جامعه ایرانی به اینترنت آزاد بحث داغ روز شد، در همین ارتباط، روحانی در پاسخ به خبرنگار شبکه خبری ان بی سی که از وی در مورد سانسور اینترنت در ایران سوال کرد گفت:
دولت در آیندهای نزدیک کمیسیونی برای پرداختن به حقوق شهروندان تشکیل خواهد داد. ما میخواهیم مردم در زندگی خصوصی خود کاملاً آزاد باشند. در جهان امروز، دسترسی به اطلاعات و حق گفتوشنود آزاد، و حق تفکر آزاد، حق تمام ملتها از جمله مردم ایران است.
همچنین جک دورسی رئیس و یکی از بنیانگذاران شبکه اجتماعی توییتر در یکی از توییتهای اخیر خود حسن روحانی، رئیسجمهور ایران را خطاب قرار داده و نوشته است: عصر به خیر رئیسجمهور، آیا شهروندان ایران میتوانند توییتهای شما را بخوانند؟ و توییتر منسوب به آقای روحانی در پاسخ به آقای دورسی بدون آن که مستقیماً سوال او را جواب دهد، نوشته است:
عصر به خیر جک، همان طور که به کریستین امانپور هم گفتم تلاش میکنم تا مردم کشورم بتوانند به راحتی به تمام اطلاعات جهانی دسترسی داشته باشند، چون این حق آنهاست.
چالش ها
جرایم
با افزایش دسترسی به اینترنت در ایران، جرایم اینترنتی نیز گسترش یافت. در ژانویه ۲۰۱۱ پلیس ایران در واکنش به این شرایط اقدام به تشکیل پلیس فضای تولید و تبادل اطلاعات در ایران کرد. فعالیتهای این نهاد چندان بیحاشیه هم نبود و در آبان ۱۳۹۱ ستار بهشتی، کارگر ساده و وبلاگنویس ۳۵ ساله، که توسط پلیس فتا بازداشت شده بود در هنگام بازجویی درگذشت.. در پی این تخلف، به دستور اسماعیل احمدیمقدم، سرهنگ محمدحسن شکریان، رئیس پلیس فتای تهران در تاریخ ۱۱ آبان ۱۳۹۱ برکنار شد.
فرمانده نیروی انتظامی ایران در بهمن ۱۳۸۹ اعلام کرد که ۸۴ درصد جرایم در فضای سایبری جرایم مالی است
امنیت
رخنهگران اینترنتی
فضای اینترنت در ایران هم میزبان فعالیتهای هکرها بوده و هم مورد حملهٔ هکرها قرار گرفته است. برخی گروههای هکر ایرانی، در زمانهای مختلف اقدام به هک وبگاههای وابسته به کشور اسرائیل کردهاند. همچنین گروه هکرهای کلاهسفید ایرانی «آشیانه» تا کنون هم در پاسخ به هک شدن وبگاههای ایرانی، اقدام به هک وبگاههای خارجی کرده و هم وبگاههای رسمی دولتی و نهادهای مذهبی ایرانی را مورد حمله قرار دادهاست.
وبگاههای اینترنتی دولتی در ایران تاکنون چندین بار مورد حمله هکرها قرار گرفتهاست. به عنوان نمونه در سپتامبر ۲۰۱۰ وبگاه رسمی صدا و سیمای جمهوری اسلامی ایران مورد حمله هکرها قرار گرفت و به مدت نیم ساعت پیامی علیه محمود احمدی نژاد رئیس جمهور وقت ایران جایگزین متن اصلی این وبگاه شد. پیش از آن نیز وبگاه وزارت ارتباطات و فناوری اطلاعات ایران و وبگاه شبکه ۴ سیمای جمهوری اسلامی ایران در مارس ۲۰۱۰ و وبگاه وزارت علوم، تحقیقات و فناوری در اوت ۲۰۰۹ مورد حمله هکرها قرار گرفته بودند.
بدافزارها
چندین بار حملات سایبری برای مقابله با برنامه هستهای ایران توسط بدافزارهایی مانند بدافزار شعله، استاکسنت و استارس انجام شد که به گفته کارشناسان رایانهای بیشترین تاثیرشان را بر روی رایانههای ایران گذاشتهاند.
پهنای باند
پهنای باند و میزان تاخیر پهنای باند از جمله واژههای متداول در دنیای شبکههای کامپیوتری است که به نرخ انتقال داده توسط یک اتصال شبکه و یا یک رابط، اشاره مینماید. این واژه از رشته مهندسی برق اقتباس شدهاست. در این شاخه از علوم، پهنای باند نشان دهنده مجموع فاصله و یا محدوده بین بالاترین و پائینترین سیگنال بر روی کانالهای مخابراتی باند است. که به منظور سنجش اندازه پهنای باند سیگنال از واحد هرتز استفاده میشود.
پهنای باند تنها عامل تعیین کننده سرعت یک شبکه از زاویه کاربران نبوده و یکی دیگر از عناصر تاثیرگذار، «میزان تاخیر» در یک شبکهاست که میتواند برنامههای متعددی را که بر روی شبکه اجراء میگردند، تحت تاثیر قرار دهد.
صفحه گسترده
صفحه گسترده به صفحات جدول بندی شده که قابلیت انجام محاسبات ریاضی را دارند صفحه گسترده میگویند. صفحه گسترده (spreadsheet) نوعی نرمافزار است که برای ساده کردن ورود اطلاعات (data entry) و انجام محاسبات ریاضی طراحی شده اند. نرمافزارهای LibreOffice Calc و اکسل و همچنین SPSS نمونهای از این برنامه ها هستند.
ریزپردازنده
ریزپرداز، یا ریزپردازنده (به انگلیسی: Microprocessor)(میکروپروسسور) تراشههای کوچکیست که میتوانند عملیات حسابی و منطقی را انجام دهد. این تراشهها از تعداد بسیار زیادی ترانزیستور ساخته شدهاند.
به علت پیچیدگی فرایند طراحی و ساخت ریزپردازندهها، همچنین پیشرفت سریع آنها از نسلی به نسل دیگر، در حاضر فناوری ساخت ریزپردازنده صرفاً در اختیار ایالات متحده آمریکا است.
ریزپردازنده قلب هر رایانه دستی یا رومیزی است که به عنوان واحد پردازشگر مرکزی شناخته شدهاست. یک دستگاه محاسبهای کامل است که روی یک تراشه واحد ساخته میشود و مجموع دستورات دستگاه را اجرا میکند. سه کار مهم را انجام میدهد یکی اینکه از واحد همبستگی منطقی/ حساب، استفاده میکند یعنی کارهای وابسته به ریاضی چون جمع، تفریق، ضرب و تقسیمکردن را انجام میدهد، دوم میتواند اطلاعات را از مکان یک حافظه به حافظه دیگر انتقال دهد و سوم اینکه میتواند تصمیم بگیرد و به یک سری از دستورات جدید که براساس آن تصمیمات است جهش کند.
فناوری پردازندهها بر پایه حداقل طول کانال ترانزیستورهای آنها که معمولاً "mosfet" هستند سنجیده میشوند. در واحدهای پردازش مرکزی P۴ عادی این مقدار ۰٫۱۸ میکرون است. در پردازندههای جدید این مقدار به ۳۲ نانومتر کاهش پیدا کردهاست و هم اکنون نیز سعی بر کاهش آن است. یکی دیگر از معیارهای فناوری پردازندهها حداکثر بسامد پالس ساعت (Clock Pulse) است. هرچه این مقدار بیشتر باشد واحدهای منطقی داخلی سریع تر به ورودیها واکنش میدهند.
یکی از مسایل مهم در طراحی ریزپردازندهها، کنترل دمای داخل CPU است. بدلیل افزایش روزافزون سرعت آنها، دمای داخلی هم زیاد میشود و باید برای جلوگیری از سوختن آن فکری کرد. یکی از راهکارها ایجاد مکانیزمی است که بتواند حرارت داخل را به بیرون هدایت کند. از جمله نصب گرماگیر (Heatsink) روی سطح خارجی CPU و همچنین قرار دادن لولههای نازک دارای آب در داخل آن از این قبیل هستند.
واحد پردازش مرکزی
سیپییو (به انگلیسی: Central Processing Unit یا CPU) یا پردازنده (به انگلیسی: Processor)، یکی از اجزاء رایانه میباشد که فرامین و اطلاعات را مورد پردازش قرار میدهد. واحدهای پردازش مرکزی ویژگی پایهای قابل برنامهریزیشدن را در رایانههای دیجیتال فراهم میکنند، و یکی از مهمترین اجزاء رایانهها هستند. یک پردازندهٔ مرکزی، مداری یکپارچه میباشد که معمولاً به عنوان ریزپردازنده شناخته میشود. امروزه عبارت CPU معمولاً برای ریزپردازندهها به کار میرود.
عبارت «Central Processor Unit» (واحد پردازندهٔ مرکزی) یک ردهٔ خاص از ماشین را معرفی میکند که میتواند برنامههای رایانه را اجرا کند. این عبارت گسترده را میتوان به راحتی به بسیاری از رایانههایی که بسیار قبلتر از عبارت "CPU" بوجود آمده بودند نیز تعمیم داد. به هر حال این عبارت و شروع استفاده از آن در صنعت رایانه، از اوایل سال ۱۹۶۰ رایج شد. شکل، طراحی و پیادهسازی پردازندهها نسبت به طراحی اولیه آنها تغییر کردهاست ولی عملگرهای بنیادی آنها همچنان به همان شکل باقیماندهاست.
پردازندههای اولیه به عنوان یک بخش از سامانهای بزرگتر که معمولاً یک نوع رایانهاست، دارای طراحی سفارشی بودند. این روش گران قیمت طراحی سفارشی پردازندهها برای یک بخش خاص، به شکل قابل توجهی، مسیر تولید انبوه آنرا که برای اهداف زیادی قابل استفاده بود فراهم نمود. این استانداردسازی روند قابل ملاحظهای را در عصر مجزای ابر رایانههای ترانزیستوری و ریز کامپیوترها آغاز نمود و راه عمومی نمودن مدارات مجتمع(IC یا Integrated Circuit) را سرعت فراوانی بخشید. یک مدار مجتمع، امکان افزایش پیچیدگیها برای طراحی پردازندهها و ساختن آنها در مقیاس کوچک را (در حد میلیمتر) امکان پذیر میسازد. هر دو فرایند (کوچک سازی و استاندارد سازی پردازندهها)، حضور این تجهیزات رقمی را در زندگی مدرن گسترش داد و آن را به فراتر از یک دستگاه خاص مانند رایانه تبدیل کرد. ریزپردازندههای جدید را در هر چیزی از خودروها گرفته تا تلفنهای همراه و حتی اسباب بازیهای کودکان میتوان یافت.
مدت زمان انجام یک کار بهوسیله رایانه، به عوامل متعددی بستگی دارد که اولین آنها، سرعت پردازشگر رایانهاست. پردازشگر یک تراشه الکترونیکی کوچک در قلب کامپیوتر است و سرعت آن بر حسب مگاهرتز یا گیگاهرتز سنجیده میشود. هر چه مقدار این پارامتر بیشتر باشد، پردازشگر سریعتر خواهد بود و در نتیجه قادر خواهد بود، محاسبات بیشتری را در هر ثانیه انجام دهد. سرعت پردازشگر به عنوان یکی از مشخصههای یک کامپیوتر به قدری در تعیین کارآیی آن اهمیت دارد که معمولاً به عنوان یکی از اجزای تشکیل دهنده نام کامپیوتر از آن یاد میشود. تراشه پردازشگر و اجزای الکترونیکی که آن را پشتیبانی میکنند، مجموعاً به عنوان واحد پردازش مرکزی یا CPU شناخته شده هست
واحد پردازش مرکزی واحد محاسباتی (ALU) و کنترلی (CU) رایانهاست که دستورالعملها را تفسیر و اجرا میکند. رایانههای بزرگ و ریزرایانههای قدیمی بردهایی پر از مدارهای مجتمع داشتهاند که عمل پردازش را انجام میدادهاند. تراشههایی که ریز پردازنده نامیده میشوند، امکان ساخت رایانههای شخصی و ایستگاههای کاری (Work Station) را میسر ساختهاند.
در اصطلاح عامیانه CPU به عنوان مغز رایانه شناخته میشود.
تاریخچه
پیش از ظهور اولین ماشین که به پردازندههای امروزی شباهت داشت؛ کامپوترهای مثل انیاک مجبور بودند برای اینکه کارهای مختلفی را انجام دهند دوباره سیم کشی شوند. این ماشینها کامپیوترهایی با برنامه ثابت نامیده میشوند. از آنجای که عبارت پردازنده عموماً برای دستگاههایی که برنامههای کامپیوتری را اجرا میکنند به کار میرود، میتوان کامپیوترهای برنامه ذخیره شده (stored-program computer) را به عنوان اولین پردازندهها نام برد. ایده کامپیوترهای برنامه ذخیره شده در طراحی J. Presper Eckert و John William برای کامپیوتر اینیاک ارائه شده بود، ولی خیلی زود از طرح حذف گشت تا طرح سریع به اتمام برسد. در ۳۰ ژوئن ۱۹۴۵ قبل از اینکه اینیاک ساخته شود، ریاضی دانی به نام John von Neumann یک مقاله با عنوان اولین پیش نویس گزارش EDVAC منتشر کرد. که این طرح کلی از اولین کامپیوتر برنامه ذخیره شده بود که سرانجام در آگوست ۱۹۴۹ به اتمام رسید. EDVAC برای انجام تعداد خاصی از دستورالعملها طراحی شده بود. این دستورالعملها میتوانستند ترکیب شوند و برنامههای مفیدی را روی EDVAC اجرا کنند. روشن است که برنامههایی که برای EDVAC نوشته شده بودن روی حافظهٔ سریع کامپیوتر ذخیره میشدند به جای سیم کشی کردن مشخص کامپیوتر. طراحی von Neumann بر این محدودیت اینیاک، که زمان و تلاش زیاد برای پیکربندی مجدد برای انجام کار جدید بود غلبه کرد. برنامه یا نرمافزار ی که بر روی EDVAC اجرا میشد میتوانست به راحتی محتویات حافظه را تغییر دهد. در ابتدا CPU ها به صورت اختصاصی به عنوان بخشی از یک دستگاه بزرگتر طراحی میشدند که گاهی بخشی از یک رایانه بودند. با این حال این روش سفارشی طراحی برای یک کاربرد خاص، راه را برای تولید انبوه پردازندههای ساخته شده نا هموار میکرد. استاندارد سازی پردازندهها با پیدایش ترانزیستورها و میکرو کامپیوترها شروع شد و با ظهور آی سیها شتاب بیشتری گرفت. آی سیها این اجازه را میدادند که CPUهای پیچیده تر و با قواعد طراحی نانو متر تولید شوند. استانداردسازی و کوچک شدن CPUها هر دو باعث افزایش حضور دستگاههای دیجیتال در زندگی مدرن در مقابل کاربرد محاسباتی خاص شدند. ریز پردازندهها در هر جایی از ماشینها تا تلفنهای همراه و اسباب بازیهای کودکان حضور دارند. هرچند von Neumann به خاطر طراحی EDVAC خود شناخته شده است، قبل از او افرادی مانند Konrad Zuse ایدههای مشابهی را مطرح و پیاده سازی نموده بودند. اصطلاح معماری هاروارد Harvard Mark که یک طراحی برنامه ذخیره شده که از نوار کاغذهای منگنه بجای حافظههای الکترونیکی استفاده میکرد، قبل از EDVAC تمام شده بود. تفاوت اصلی بین طراحی ون و معماری هاروارد فضای مشترک برای ذخیره دستورالعملها و دادهها در مقابل فضاهای جدا گانه طراحی هاروارد بود. اغلب CPUهای مدرن از طراحی ون پیروی میکنند، اما المانهایی هم وجود دارند که معماری هاروارد پیروی میکنند. رلهها و لامپهای خلا که عموماً به عنوان عناصر سوئیچینگ مورد استفاده قرار میگرفتند. یک کامپیوتر مفید به هزاران یا صدها هزار از این المانهای سوئیچینگ نیاز دارد و سرعت کلی سیستم به سرعت این سوئیچها وابسطه است. کامپیوترهای لامپ خلا نزیر EDVAC تقریباً ۸ ساعت بدون خرابی کار میکردند در حالی که کامپیوترهای رلهای مانند طراحی هاروارد خیلی زودتر با مشکل مواجه میشدند. در نهایت CPUهای بر پایه لامپ خلا به دلیل سرعت قابل توجه و قابلیت اطمینان بیشتر بر هم نوعان خود پیروز شدند. اغلب CPUهای سنکرون نسبت به CPUهای مدرن با فرکانس کلاک کمتری در حد ۱۰۰Hz تا ۴ MHz کار میکردند که این محدودیت به دلیل سرعت کم المانهای سوئیچ بود.
ترانزیستورهای گسسته و مدارات مجتمع (واحد پردازش مرکزی)
پیچیدگی طراحی پرداندهها همزمان با افزایش سریع فناوریهای متنوع که ساختارهای کوچکتر و قابل اطمینان تری را در وسایل الکترونیک باعث میشد، افزایش یافت. اولین موفقیت با ظهور اولین ترانزیستورها حاصل شد. پردازندههای ترانزیستوری در طول دهههای ۵۰ و ۶۰ میلادی زمان زیادی نبود که اختراع شده بود و این در حالی بود که آنها بسیار حجیم، غیر قابل اعتماد و دارای المانهای سوئیچینگ شکننده مانند لامپهای خلا و رلههای الکتریکی بودند. با چنین پیشرفتی پردازندههایی با پیچیدگی و قابلیت اعتماد بیشتری بر روی یک یا چندین برد مدار چاپی که شامل قسمتهای تفکیک شده بودند ساخته شدند.
ریزپردازندهها
پیدایش ریز پردازندهها در سال ۱۹۷۰ به طور قابل توجهی در طراحی و پیاده سازی پردازندهها تأثیر گذار بود. از زمان ابداع اولین ریزپردازنده (اینتل۴۰۰۴)در سال ۱۹۷۰ و اولین بهره برداری گسترده از ریزپردازنده اینتل ۸۰۸۰ در سال ۱۹۷۴، این روند رو به رشد ریزپردازندهها از دیگر روشهای پیاده سازی واحدهای پردازش مرکزی (CPU) پیشی گرفت، کارخانجات تولید ابر کامپیوترها و کامپیوترهای شخصی در آن زمان اقدام به تولید مدارات مجتمع با برنامه ریزی پیشرفته نمودند تا بتوانند معماری قدیمی کامپیوترهای خود را ارتقا دهند و در نهایت ریز پردازندهای سازگار با مجموعه دستورالعملها ی خود تولید کردند که با سختافزار و نرمافزارهای قدیمی نیز سازگار بودند. با دستیابی به چنین موفقیت بزرگی امروزه در تمامی کامپیوترهای شخصی CPUها منحصراً از ریز پردازندهها استفاده میکنند.
عملکرد ریزپردازندهها
کارکرد بنیادی بیشتر ریزپردازندهها علیرغم شکل فیزیکی که دارند، اجرای ترتیبی برنامههای ذخیره شده را موجب میشود. بحث در این مقوله نتیجه پیروی از قانون رایج نیومن را به همراه خواهد داشت. برنامه توسط یک سری از اعداد که در بخشی از حافظه ذخیره شدهاند نمایش داده میشود. چهار مرحله که تقریباً تمامی ریزپردازندههایی که از قانون فون نیومن در ساختارشان استفاده میکنند از آن پیروی میکنند عبارتاند از: فراخوانی، رمزگشایی، اجرا، بازگشت برای نوشتن مجدد.
طراحی و اجرا
مفهوم اساسی یک سی پی یو به صورت زیر است: در طراحی یک سی پی یو یک لیست از عملیات بنام مجموعهٔ دستوری بصورت ذاتی وجود دارد که سی پی یو آنها را انجام میدهد. چنین عملیاتی ممکن است شامل جمع کردن یا تفریق کردن دو عدد، مقایسهٔ اعداد یا پرش به بخشی دیگر از یک برنامه باشد. هرکدام از این عملیات پایهای توسط توالی خاصی از بیتها نمایش داده میشود که این توالی برای چنین عملیات خاصی اپکد نام دارد. فرستادن یک اپکد خاص به یک سی پی یو باعث میشود تا سی پی یو عملی را که توسط اپکد مذکور نمایش داده میشود انجام دهد. برای اجرای یک دستور در یک برنامهٔ کامپیوتری، سی پی یو از اپکد دستور مذکور و نیز نشانوندهای آن (برای مثال، در مورد یک عمل جمع، دو عددی که قرار است با همجمع شوند.) استفاده میکند. عمل ریاضی واقعی برای هر دستور توسط یک زیرواحد از سی پی یو به نام واحد محاسبه و منطق (ALU)انجام میگیرد. یک سی پی یو علاوه بر اینکه از ALU خودش برای انجام اعمال استفاده میکند، اعمال دیگری نظیر: خواندن دستور بعدی از حافظه، خواندن اطلاعات مشخص شده بصورت نشانوند از حافظه و نوشتن یافتههای حاصل در حافظه را نیز به عهده دارد. در بسیاری از طراحیهای سی پی یو، یک مجموعهٔ دستوری مشخصا بین اعمالی که اطلاعات را از حافظه بارگیری میکنند و اعمال ریاضی افتراق میدهد. در این مورد اطلاعات بارگیری شده از حافظه در رجیسترها ذخیره میشود و یک عمل ریاضیاتی هیچ گونه نشانوندی نمیگیرد بلکه بسادگی عمل محاسباتی مذکور را روی اطلاعات موجود در رجیسترها انجام داده و آن را در یک رجیستر جدید مینویسد.
دامنه صحیح
روشی که یک پردازنده از طریق آن اعداد را نمایش میدهد یک روش انتخابی در طراحی است که البته در بسیاری از راههای اصولی اثر گذار است. در برخی از کامپیوترهای دیجیتالی اخیر از یک مدل الکترونیکی بر پایه سیستم شمارش دسیمال (مبنای ده) برای نمایش اعداد استفاده شدهاست. برخی دیگر از کامپیوترها از یک سیستم نامتعارف شمارشی مانند سیستم سه تایی (مبنای سه) استفاده میکنند. در حال حاضر تمامی پردازندههای پیشرفته اعداد را به صورت دودویی (مبنای دو) نمایش میدهند که در آن هر عدد به وسیله چندین کمیت فیزیکی دو ارزشی مانند ولتاژ بالا و پایین نمایش داده میشوند.
علت نمایش دهی از طریق اعداد حجم کم و دقت بالا در اعدادی است که پردازشگر میتواند نمایش دهد. در حالت دودویی پردازندهها، یک بیت به یک مکان مشخص در پردازنده اطلاق میشود که پردازنده با آن به صورت مستقیم در ارتباط است. ارزش بیت (مکانهای شمارشی) یک پردازنده که برای نمایش اعداد بکار برده میشود «بزرگی کلمه»، «پهنای بیت»، «پهنای گذرگاه اطلاعات» و یا «رقم صحیح» نامیده میشود. که البته این اعداد گاهی در بین بخشهای مختلف پردازندههای کاملاً یکسان نیز متفاوت است. برای مثال یک پردازنده ۸ بیتی به محدودهای از اعداد دسترسی دارد که میتواند با هشت رقم دودویی (هر رقم دو مقدار میتواند داشته باشد) ۲ یا ۲۵۶ عدد گسسته نمایش داده شود. نتیجاتا مقدار صحیح اعداد باعث میشود که سختافزار در محدودهای از اعداد صحیح که قابل اجرا برای نرمافزار باشد محدود شود و بدین وسیله توسط پردازنده مورد بهره برداری قرار گیرد.
پالس ساعت
اکثر پردازندهها و در حقیقت اکثر دستگاههایی که با منطق پالسی و تناوبی کار میکنند به صورت طبیعی باید سنکرون یا همزمان باشند. این بدان معناست که آنها به منظور همزمان سازی سیگنالها طراحی و ساخته شدهاند. این سیگنالها به عنوان سیگنال ساعت (پالس ساعت) شناخته میشوند و معمولاً به صورت یک موج مربعی پریودیک (متناوب) میباشند. برای محاسبه بیشترین زمانی که سیگنال قادر به حرکت از قسمتهای مختلف مداری پردازندهاست، طراحان یک دوره تناوب مناسب برای پالس ساعت انتخاب میکنند. این دوره تناوب باید از مقدار زمانی که برای حرکت سیگنال یا انتشار سیگنال در بدترین شرایط ممکن صرف میشود بیشتر باشد. برای تنظیم دوره تناوب باید پردازندهها باید مطابق حساسیت به لبههای پایین رونده یا بالا رونده حرکت سیگنال در بدترین شرایط تاخیر طراحی و ساخته شوند. در واقع این حالت هم از چشم انداز طراحی و هم از نظر میزان اجزای تشکیل دهنده یک مزیت ویژه در ساده سازی پردازندهها محسوب میشود. اگرچه معایبی نیز دارد، از جمله اینکه پردازنده باید منتظر المانهای کندتر بماند، حتی اگر قسمتهایی از آن سریع عمل کنند. این محدودیت به مقدار زیادی توسط روشهای گوناگون افزایش قدرت موازی سازی (انجام کارها به صورت همزمان) پردازندهها قابل جبران است.پالش ساعت شامل یک لبه بالا روند و یک لبه پایین رونده است که این تغییر حالت با تغییر ولتاژ صورت میپذیرد.
موازی گرایی (پاراللیسم)
توصیفی که از عملکرد پایهای یک سی پی یو در بخش قبلی شد، ساده ترین فرمی است که یک سی پی یو میتواند داشته باشد. این نوع از سی پی یو که معمولاً آن را ساب اسکیلر مینامند، یک دستور را روی یک یا دو جزو اطلاعاتی، در یک زمان اجرا میکند. این فرایند موجب یک ناکارامدی ذاتی در سی پی یوهای ساب اسکیلر میشود. از آنجایی که فقط یک دستور در یک زمان اجرا میشود، کل سی پی یو باید منتظر بماند تا آن دستور کامل شود تا بتواند به دستور بعدی برود. در نتیجه سی پی یوهای ساب اسکیلر در موارد دستوری که بیش از یک پالس ساعت (چرخهٔ ساعتی) برای اجرا شدن کامل طول میکشند، معلق میماند. حتی اضافه کردن یک واحد اجرایی دیگر بهبود زیادی روی عملکرد ندارد، و در این حالت به جای اینکه یک مسیر معلق باشد، دو مسیر معلق میماند و تعداد ترانزیستورهای بلااستفاده افزایش مییابد. این طراحی، که در آن منابع اجرایی سی پی یو میتواند فقط یک دستور در یک زمان اجرا کند، قادر خواهد بود تا فقط احتمالاً به عملکردی در حد اسکیلر (یک دستور در یک clock) برسد. با این وجود عملکرد آن تقریباً همیشه ساب اسکیلر (کمتر از یک دستور در یک چرخه) است.
تلاش برای رسیدن به عملکردی در حد اسکیلر و یا بهتر از آن منجر به طیفی از روشهای طراحی شد که باعث میشود تا سی پی یو کمتر بصورت خطی و بیشتر به صورت موازی عمل کند. در هنگام استفاده از ترم پاراللیسم برای سی پی یوها، دو اصطلاح بطور کلی برای طبقه بندی این تکنیکهای طراحی استفاده میشود. پاراللیسم در سطح دستوری (ILP) که هدف آن افزایش سرعت اجرای دستورات در داخل یک سی پی یو است (یا به عبارتی افزایش استفاده از منابع اجرایی روی همان چیپ (on-die))، و پاراللیسم در سطح thread که هدف آن افزایش تعداد threadهایی است (بطور موثر برنامههای جداگانه) که یک سی پی یو میتواند بطور همزمان اجرا کند. هر روش با روش دیگر از نظر نحوهٔ اجرا و نیز تاثیر نسبی آنها در افزایش عملکرد سی پی یو برای یک برنامه متفاوت است.
پاراللیسم در سطح دستوری
یکی از ساده ترین شیوههای مورد استفاده برای انجام افزایش پاراللیسم این است که اولین مراحل fetching و decoding دستوری را پیش از اینکه اجرای دستور قبلی تمام شود، شروع کنیم. این روش ساده ترین فرم یک تکنیک بنام instruction pipelining است و در تقریباً تمام سی پی یوهای عمومی جدید استفاده میشود. پایپ لاینینگ، با شکستن مسیر دستوری و تبدیل ان به مراحل جداگانه، باعث میشود تا در هر زمان بیش از یک دستور اجرا شود. این جدا کردن را میتوان با خط مونتاژ مقایسه کرد که در آن یک دستور در هر مرحله کاملتر میشود تا اینکه کامل شود.
با این وجود pipelining ممکن است موقعیتی را بوجود آورد که در آن یافتههای عمل قبلی برای کامل کردن عمل بعدی لازم است. این وضعیت را معمولاً آشفتگی ناشی از وابستگی مینامند. برای جلوگیری از این وضعیت، باید توجه بیشتری شود تا در صورت رخ دادن این شرایط بخشی از خط تولید دستوری را به تاخیر اندازیم. بطور طبیعی براورده کردن این شرایط نیازمند مدارهایی اضافهاست، بنابراین پردازندههای pipelined پیچیده تر از انواع ساب اسکیلر هستند (البته نه خیلی چشمگیر). یک پردازندهٔ pipelined میتواند بسیار نزدیک به حد اسکیلر شود، در این شرایط تنها مانع موجود stallها (دستوری که بیش از یک چرخهٔ ساعتی در یک مرحله طول میکشد) هستند. ارتقاء بیشتر در مورد ایدهٔ instruction pipelining منجر به ایجاد روشی شدهاست که زمان خالی اجزای سی پی یو را حتی به میزان بیشتری کاهش میدهد. طراحیهایی که گفته میشود سوپراسکیلر هستند شامل یک خط ایجاد(pipeline) دستور طولانی و واحدهای اجرایی مشابه متعدد هستند. در یک خط ایجاد سوپرسکیلر دستورهای متعددی خوانده شده و به dispatcher (توزیع گر) میروند، توزیع گر تصمیم میگیرد که آیا دستورات مذکور میتوانند بطور موازی (همزمان) اجرا شوند یا نه. در صورتی که پاسخ مثبت باشد، دستورات مذکور به واحدهای اجرایی موجود ارسال (dispatch) میشوند. این کار باعث میشود تا چندین دستور به طور همزمان اجرا شوند. به طور کلی هرقدر یک سی پی یوی سوپرسکیلر بتواند دستورات بیشتری را بطور همزمان به واحدهای اجرایی در حال انتظار ارسال (dispatch) کند، دستورات بیشتری در یک سیکل مشخص اجرا میشوند.
بیشترین دشواری در طراحی یک معماری سوپرسکیلر سی پی یو مربوط به ساخت یک dispatcher موثر است. دیسپچر باید قادر باشد تا به سرعت و بدون اشتباه مشخص کند که آیا دستورات میتوانند بطور موازی اجرا شوند و آنها را به شیوهای ارسال (dispatch) کند تا بیشترین واحدهای اجرایی ممکن را از بیکاری خارج کند. این امر نیازمند این است که خط ایجاد دستوری حداکثر اوقات ممکن پر باشد و معماریهای سوپرسکیلر را نیازمند مقادیر چشمگیری از کش سی پی یو(cache) میکند. همچنین در این شرایط تکنیکهای پیشگیری از خطری نظیر پیش بینی شاخهای (branch prediction)، اجرای حدسی (speculative execution) و اجرای خارج از نوبت (out of order execution) برای حفظ سطوح بالای عملکرد ضروری هستند. با تلاش برای پیش بینی اینکه یک دستور شرطی کدام شاخه (یا مسیر) را انتخاب میکند، سی پی یو میتواند تعداد زمانهایی را که تمام خط تولید (pipeline) باید منتظر بماند تا یک دستور شرطی کامل شود به حداقل برساند. اجرای حدسی با اجرای بخشهایی از کد که ممکن است بعد از کامل شدن یک عمل شرطی نیاز نباشند، معمولاً موجب افزایش متوسط عملکرد میشود. اجرای خارج از نوبت ترتیبی را که دستورات اجرا میشوند تا حدی دوباره چینی میکند تا تاخیر ناشی از وابستگی اطلاعات را کاهش دهد. همچنین در موارد یک دستور -چند دیتا (Single Instructions Multiple Data) - زمانیکه اطلاعات زیادی از یک نوع باید پردازش شود، پردازندههای جدید میتوانند بخشهایی از خط ایجاد مذکور را غیر فعال کنند، در این حالت زمانیکه یک دستور چند بار اجرا میشود، سی پی یو میتواند از فازهای fetch و decode صرفه نظر کند و بنابراین در موقعیتهای خاصی (خصوصاً در موتورهای برنامهای بسیار مونوتون نظیر نرمافزار ایجاد ویدیو و پردازش عکس) به میزان زیادی عملکرد افزایش مییابد.
در مواردی که فقط بخشی از سی پی یو سوپرسکیلر است، بخشی که سوپرسکیلر نیست دچار جبران عملکردی ناشی از وقفههای زمانبندی میشود. Intel P5 Pentium (اینتل پنتیوم ۵)دو تا واحد محاسبه و منطق (ALU) سوپرسکیلر داشت که میتوانست یک دستور را به ازای یک clock بپذیرد اما FPUی آن نمیتوانست یک دستور را به ازای یک clock بپذیرد. بنابراین P۵ سوپرسکیلر از نوع integer است اما از نوع floating point (ممیز شناور) نیست. جانشین اینتل برای معماری P۵، نوع P۶ بود که قابلیتهای سوپرسکیلر را به ویژگیهای floating point آن اضافه میکرد و بنابراین موجب افزایش چشمگیری در عملکرد دستوری floating point میشد.
هم طراحی pipeline ساده و هم طراحی سوپر سکیلر موجب میشوند تا یک پردازندهٔ منفرد با سرعتی بیش از یک دستور به ازای یک چرخه (IPC) دستورات را اجرا کند و بدین وسیله ILP ی سی پی یو را افزایش میدهند. بیشتر طراحیهای جدید سی پی یو حداقل تا حدی سوپرسکیلر هستند و تقریباً تمام سی پی یوهای عمومی که در دههٔ اخیر طراحی شدهاند سوپرسکیلر هستند. در سالهای اخیر بخشی از تاکید در طراحی کامپیوترهای ILP بالا از حوزهٔ سخت افزاری سی پی یو خارج شده و در اینترفیس نرمافزاری، یا همان ISA متمرکز شدهاست. استراتژی کلمهٔ دستوری خیلی بلند (VLIW) موجب میشود تا بخشی از ILP بطور مستقیم توسط نرمافزار درگیر شود و بدین وسیله میزان کاری را که سی پی یو باید انجام دهد تا ILP را افزایش دهد (بوست کند) و پیچیدگی طراحی مذکور را کاهش دهد، کم میکند.
پاراللیسم در سطح thread
رویکرد دیگر برای دستیابی به عملکرد، اجرای چندین برنامه یا thread به صورت موازی است. در تقسیم بندی Flynn این رویکرد چندین دستور روی چندین دیتا (MIMD) نام دارد.
یک تکنولوژی که برای این هدف استفاده شد، تکنولوژی چند پردازشی (MP) نام دارد. چاشنی ابتدایی این نوع تکنولوژی چند پردازشی قرینه(SMP) نام داردکه در آن تعداد محدودی از سی پی یوها یک نمای منسجم از سیستم حافظهٔ خودشان را به اشتراک میگذارند. در این طرح ریزی هر سی پی یو سخت افزاری اضافی برای حفظ یک نمای دائماً بروز شده از حافظه دارد. با اجتناب از نماهای کهنه و مانده از سی پی یو، سی پی یوهای مذکور میتوانند روی یک برنامه همکاری کنند و برنامهها میتوانند از یک سی پی یو به دیگری مهاجرت کنند. طرح ریزیهایی نظیر دستیابی غیر همشکل به حافظه (NUMA) و پروتکلهای وابستهٔ مبتنی بر دایرکتوری در دههٔ ۱۹۹۰ ارائه شدند. سیستمهای SMP به تعداد کمی از سی پی یوها محدود میشوند در حالیکه سیستمهای NUMA با هزاران پردازنده موجود هستند. در ابتدای امر، چند پردازشی با استفاده از چندین سی پی یو و صفحهٔ مجزا برای برقراری ارتباط بین پردازندهها ساخته شد. هنگامیکه پردازندهها و ارتباطهای بین آنها تماماً روی یک تراشهٔ سیلیکون منفرد سوار شدند، تکنولوژی مذکور ریزپردازندهٔ چند هستهای نام گرفت.
بعدها مشخص شد که finer-grain parallelism با یک برنامهٔ منفرد ایجاد شد. یک برنامهٔ منفرد ممکن است چندین thread (یا عملکرد) داشته باشد که میتوانند بطور جداگانه یا موازی اجرا شوند. برخی از نمونههای ابتدایی این تکنولوژی، پردازش ورودی/خروجی نظیر دسترسی مستقیم به حافظه را بعنوان یک thread جداگانه از thread محاسبه بکار گرفتند. یک رویکرد عمومی تر به این تکنولوژی در دههٔ ۱۹۷۰ ارائه شد. در آن زمان سیستمها طوری طراحی شدند تا چندین thread محاسبهای را بطور موازی اجرا کنند. این تکنولوژی (MT)multithreading نام دارد. این رویکرد در مقایسه با چند پردازشی به صرفه تر است زیرا فقط تعداد کمی از اجزا در داخل یک سی پی یو به منظور پشتیبانی از MT تکرار میشوند در حالیکه در MP تمام سی پی یو تکرار میشود. در MT، واحدهای اجرایی و سیستم حافظه منجمله کشها در بین جندین thread به اشتراک گذارده میشوند. عیب MT این است که سخت افزاری که از مولتی ثردینگ پشتیبانی میکند در مقایسه با سخت افزاری که از MP پشتیبانی میکند برای نرمافزار قابل دیدن تر است و بنابراین نرمافزارهای ناظر نظیر سیستمهای عامل برای پشتیبانی از MT باید متحمل تغییرات بیشتری شوند. یک نوع از MT که بکار گرفته شد block multithreading نام دارد که در آن اجرای یک thread آغاز میشود و زمانیکه برای بازگشت اطلاعات از حافظهٔ خارجی باید منتظر بماند، دچار توقف عملکرد میشود. در این حالت سی پی یو بلافاصله به thread دیگر که آمادهٔ اجرا است سوویچ میکند. این سوویچ معمولاً در یک چرخهٔ کلاک از سی پی یو انجام میگیرد.اولترااسپارک (UltraSPARC) نمونهای از این تکنولوژی است. نوع دیگری از MT مولتی ثردینگ همزمان (simultaneous multithreading) نام دارد که در آن دستورات چندین thread بطور موازی در طی یک چرخهٔ کلاک از سی پی یو اجرا میشوند.
بمدت چندین دهه از ۱۹۷۰ تا ۲۰۰۰، در طراحی سی پی یوهای عمومی دارای عملکرد بالا به میزان زیادی روی دستیابی به ILP بالا از طریق تکنولوژیهایی مثل piplining، کشها، اجرای سوپراسکیلر، اجرای خارج از نوبت و... تاکید میشد. این رویه منجر به طراحی سی پی یوهای بزرگ و پر مصرفی نظیر اینتل پنتیوم ۴ شد. در دههٔ ۲۰۰۰، نابرابری روزافزون بین فرکانسهای عامل سی پی یو و فرکانسهای عامل حافظهٔ اصلی و نیز جدی تر شدن مسالهٔ محو تدریجی پاور سی پی یو (power) بعلت تکنیکهای ILP خیلی نامعمول تر موجب شد تا طراحان سی پی یو دیگر بدنبال افزایش عملکرد با استفاده از تکنیکهای ILP نباشند. پس از آن، طراحان سی پی یو ایدههایی را از بازارهای کامپیوتری تجاری نظیر پردازش دادوستدی که در آن مجموع عملکرد چندین برنامه (پردازش مربوط به کار انجام شده در یک بازهٔ زمانی) مهمتر از عملکرد یک thread یا برنامهاست، به عاریه گرفتند. این تغییر رویکرد میتوان در تکثیر طراحیهای CMP چند هستهای (چند پردازشی در سطح تراشه) و بطور قابل ذکر طراحیهای جدیدتر اینتل که مشابه معماری کمتر سوپرسکیلر P۶ بودند، مشاهده کرد. طراحیهای بعدی در چندین خانوادهٔ پردازنده، CMP را نشان دادند، از جمله x۸۶-۶۴ Opteron و Athlon 64 X۲، SPARC UltraSPARC T۱، IBM POWER۴ و POWER۵ و چندین سی پی یو ی کنسول بازی ویدیویی مشابه طراحی powerpc سه هستهای ایکس باکس ۳۶۰ و ریزپردازندههای سلولی ۷ هستهای ۷-core)) پلی استیشن ۳.
موازی گرایی (پاراللیسم) اطلاعات
یک الگوی غیر معمول اما بطور فزایندهای مهم از سی پی یوها (و در حقیقت، بطور کلی پردازش) مربوط به موازی گرایی اطلاعات است. پردازندههایی که قبلاً بحث شدند، تماماً انواعی از ابزارهای اسکیلر نامیده میشوند. همچنان که از نام آن پیداست، پردازندههای برداری (vector processors) با چندین قطعه از اطلاعات در زمینهٔ یک دستور سروکار دارند که با پردازندههای اسکیلر که با یک قطعه از اطلاعات برای هر دستور سروکار دارد، متفاوت است. در طبقه بندی Flynn، این دو نوع مواجه با اطلاعات بطور کلی و بترتیب SIMD (یک دستور برای چندین داده) و SISD (یک دستور برای یک داده) نامیده میشود. استفادهٔ مهم در ایجاد سی پی یوهایی که با بردارهایی از اطلاعات سرو کار دارند، در بهینه سازی اعمالی است که در آنها یک عمل (برای مثال یک جمع یا dot product)باید روی مجموعهٔ بزرگی از اطلاعات صورت گیرد. برخی از مثالهای کلاسیک این نوع از اعمال کاربردهای مولتی مدیا (تصاویر، ویدئو و صدا) و نیز بسیاری از انواع اعمال علمی و مهندسی هستند. در حالیکه یک سی پی یو ی اسکیلر باید تمام فرایند fetching، دکودینگ و اجرا ی هر دستور و مقدار را برای مجموعهای از اطلاعات انجام دهد، یک سی پی یو ی برداری میتواند یک عمل را روی مجموعهٔ نسبتاً بزرگی از اطلاعات با یک دستور انجام دهد. البته این امر تنها زمانی امکان پذیر است که کاربر مذکور نیازمند مراحل بسیاری است که یک عمل را روی مجموعهٔ بزرگی از دادهها اجرا میکند.
اکثر سی پی یوهای وکتور ابتدایی، نظیر Cray-۱ فقط مربوط به تحقیقات علمی و کاربردهای کریپتوگرافی بودند. با این وجود، هنگامیکه مولتی مدیاها به میزان زیادی به مدیای دیجیتال تغییر پیدا کردند، نیاز به برخی از اشکال SIMD در سی پی یوهای کاربرد-عمومی نیز برجسته شد. مدت کوتاهی بعد ازاینکه لحاظ شدن واحدهای اجرایی نقطهٔ شناور در سی پی یوهای کاربرد-عمومی شروع به معمول شدن کرد، اختصاصی شدن و بکارگیری واحدهای اجرایی SIMD نیز در سی پی یوهای کاربرد-عمومی شروع به ظهور کرد. برخی از این اختصاصیتهای SIMD ابتدایی نظیر Multimedia Acceleration eXtensions مربوط به HP و MMX اینتل فقط اینتگر بودند.
اتحاد جماهیر شوروی آن زمان موشکی با نام «اسپونیک» (Spotnik) را به فضا میفرستد و نشان میدهد دارای قدرتی است که میتواند شبکههای ارتباطی آمریکا را توسط موشکهای بالستیک و دوربرد خود از بین ببرد. آمریکاییها در پاسخگویی به این اقدام روسها، موسسه پروژههای تحقیقی پیشرفته “ARPA” را بهوجود آوردند. هدف از تاسیس چنین موسسهای پژوهش و آزمایش برای پیدا کردن روشی بود که بتوان از طریق خطوط تلفنی، کامپیوترها را به هم مرتبط نمود.

به طوری که چندین کاربر بتوانند از یک خط ارتباطی مشترک استفاده کنند. در اصل شبکهای بسازند که در آن دادهها به صورت اتوماتیک بین مبدا و مقصد حتی در صورت از بین رفتن بخشی از مسیرها جابهجا و منتقل شوند. در اصل هدف “ARPA” ایجاد یک شبکه اینترنتی نبود و فقط یک اقدام احتیاطی در مقابل حمله احتمالی موشکهای اتمی دوربرد بود. هر چند اکثر دانش امروزی ما درباره شبکه بهطور مستقیم از طرح آرپانت “ARPPA NET” گرفته شدهاست. شبکهای که همچون یک تار عنکبوت باشد و هر کامپیوتر ان از مسیرهای مختلف بتواند با همتایان خود ارتباط دااشته باشد واگر اگر یک یا چند کامپیوتر روی شبکه یا پیوند بین انها از کار بیفتادبقیه باز هم بتوانستند از مسیرهای تخریب نشده با هم ارتباط بر قرار کنند.
این ماجرا با وجودی که بخشی از حقایق بهوجود آمدن اینترنت را بیان میکند اما نمیتواند تمام واقعیات مربوط به آن را تشریح کند. باید بگوییم افراد مختلفی در تشکیل اینترنت سهم داشتهاند آقای “Paul Baran” یکی از مهمترین آنهاست. آقای باران که در دوران جنگ سرد زندگی میکرد میدانست که شبکه سراسری تلفن آمریکا توانایی مقابله با حمله اتمی شوروی سابق را ندارد. مثلاً اگر رییس جمهور وقت آمریکا حمله اتمی متقابل را دستور دهد، باید از یک شبکه تلفنی استفاده میکرد که قبلاً توسط روسها منهدم شده بود. در نتیجه طرح یک سیستم مقاوم در مقابل حمله اتمی روسها ریخته شد.آقای باران (Baran) تشکیل و تکامل اینترنت را به ساخت یک کلیسا تشبیه کرد و معتقد بود، طی سالهای اخیر هر کس سنگی به پایهها و سنگهای قبلی بنا اضافه میکند و انجام هر کاری وابسته به کارهای انجام شده قبلی است. بنابراین نمیتوان گفت، کدام بخش از کار مهمترین بخش کار بودهاست و در کل پیدایش اینترنت نتیجه کار و تلاش گروه کثیری از دانشمندان است. داستان پیدایش اینترنت با افسانه و واقعیت در هم آمیخته شدهاست.
در اوایل دهه ۶۰ میلادی آقای باران طی مقالاتی پایه کار اینترنت امروزی را ریخت. اطلاعات و دادهها به صورت قطعات و بستههای کوچکتری تقسیم و هر بسته با آدرسی که به آن اختصاص داده میشود به مقصد خاص خود فرستاده میشود. به این ترتیب بستهها مانند نامههای پستی میتوانند از هر مسیری به مقصد برسند. زیرا آنها شامل آدرس فرستنده و گیرنده هستند و در مقصد بستهها مجدداً یکپارچه میشوند و به صورت یک اطلاعات کامل درمیآیند.
آقای باران (Baran) طی مقالاتی اینچنینی ساختمان و ساختار اینترنت را پیشگویی کرد. او از کار سلولهای مغزی انسان به عنوان الگو استفاده کرد، او معتقد بود: وقتی سلولهای مغزی از بین بروند، شبکه عصبی از آنها دیگر استفاده نمیکند و مسیر دیگری را در مغز انتخاب میکند. از دیدگاه وی این امکان وجود دارد که شبکهای با تعداد زیادی اتصالات برای تکرار ایجاد شوند تا در صورت نابودی بخشی از آن، همچنان به صورت مجموعهای به هم پیوسته کار کند. تا نیمه دهه ۶۰ میلادی کسی به نظرات او توجهای نکرد. تا اینکه در سال ۱۹۶۵ نیروی هوایی آمریکا و«آزمایشگاههای بل» به نظرات او علاقهمند شدند و پنتاگون با سرمایهگذاری در طراحی و ساخت شبکهای براساس نظریات او موافقت کرد.
ولی آقای باران (Baran) بنابر دلایلی حاضر با همکاری با نیروی هوایی آمریکا نشد. در این میان دانشمندی با نام تیلور (Tailon) وارد موسسه آرپا (ARPA) شد. او مستقیماً به آقای هرتسفلد رییس موسسه پیشنهاد کرد: (ARPA) آرپا هزینه ایجاد یک شبکه آزمایشی کوچک با حداقل چهار گره را تامین کند که بودجه آن بالغ بر یک میلیون دلار میشد. با این پیشنهاد تیلور تجربهای را آغاز کرد که منجر به پیدایش اینترنت امروزی شد. او موفق شد در سال ۱۹۶۶، دو کامپیوتر را در شرق و غرب آمریکا به هم متصل کند. با این اتصال انقلابی در نحوه صدور اطلاعات در دنیای ارتباطات رخ داد که نتیجه آن را امروز همگی شاهد هستیم. این شبکه به بستههایی (packet) از دادهها که به وسیله کامپیوترهای مختلف ارسال میشدند اتکا داشت. پس از انکه ازمایشها سودمندی انرا مشخص کردند سایر بخشهای دولتی و دانشگاهها پژوهشی تمایل خود را به وصل شدن به ان اعلام کردند . ارتباطات الکترونیکی به صورت روشی موثر برای دانشمندان و دیگران به منظور استفاده مشترک از دادهها در امد. در همان زمان که ARPAnet در حال رشد بود تعدادی شبکه پوشش محلی (LAN) در نقاط مختلف آمریکا به وجود امد. مدیران LANها نیز به وصل کردن کامپیوترهای شبکههای خود به شبکههای بزرگتر اقدام کردند . پروتوکل اینترنت ARPAnet IP زبان استاندارد حکمفرما برای برقراری ارتباط کامپیوترهای شبکههای مختلف به یکدیگر شد.تاریخ تولد اینترنت به طور رسمی اول سپتامبر ۱۹۶۹ اعلام شدهاست. زیرا که اولین “IMP” در دانشگاه “UCLA” واقع در سانتاباربارا در این تاریخ بارگذاری شدهاست.
از اوایل دهه ۱۹۹۰ رشد استفاده از اینترنت به صورت تصاعدی افزایش یافت . یکی از علل چنین استقبالی ابزار جستجویی مانند Gopher و archie بودهاست اما اینها در سال ۱۹۹۱ تحت تاثیر word wide web قرار گرفتند که به وسیله CERN یا ازمایشگاه فیزیک هستهای اروپا ساخته شد . با ان که اینترنت از ابتدا طوری بود که مبادله اطلاعات برای تازه واردان بسیار ساده باشد. بزرگترین جهش در وب در سال ۱۹۹۳ با عرضه نرمافزار موزاییک mosaic که نخستین برنامه مرورگر وب گرافیکی بود به وجود امد. برنامه موزاییک محصول تلاش دانشجویان و استادان بخش "مرکز ملی کاربردهای ابر کامپیوتر " در دانشگاه ایلینویز آمریکا بود. برای نخستین بار موزاییک امکانات اشاره و کلیک (به وسیله موش) را فراهم کرد. کاربران میتوانستند صفحات وب (web page) یا مجموعهای از متن و گرافیک را کنار هم بگذارند تا هر کسی که میخواست انها را بتواند روی اینترنت ببیند. وقتی با موش روی کلمهها یا تصاویر خاصی که hyper link نامیده میشد کلیک میکردند برنامه موزاییک به طور خود کار یک صفحه دیگر باز میکرد که به کلمه یا تصویر خاص و کلیک شده اختصاص داشت. بهترین بخش این سیستم انجا بود که hyper linkها میتوانستند به صفحاتی روی همان کامپیوتر یا هر کامپیوتر دیگر اینترنت با خدمات وب اشاره کنند. صفحات وب هر روز متولد میشدند و مفهوم موج سواری یا surfing روی وب متولد شد. اواسط سال ۱۹۹۴ سه میلیون کامپیوتر به اینترنت وصل شده بود و در ان هنگام اجرای عملیات اهسته نشده بود. صفحات جدید وب که شامل همه چیز از اسناد دولتی تا مدارک شرکتها و مدلهای جدید لباس بود در سراسر دنیا چندین برابر شد . موزاییک و جانشینان ان مانند navigator محصول شرکت " نت اسکیپ " اینترنت را از قلمرو علمی به میان مردم اوردند. طبق اخرین امار ۵۱ درصد کاربران بعد از سال ۱۹۹۵ وارد این محیط شدهاند. میلیونها انسانی که از اینترنت استفاده میکنند نیازی ندارند که نکات فنی مانند TCP/IP را بدانند . امروزه شرکتهای خدمات دهنده اینترنت یا ISP این کار را به عهده دارند.رشد روز افزون ان و ساده تر شدن استفاده ان همچنان ادامه دارد . هر چه تعداد مردم بیشتری به اینترنت رجوع کنند تعداد شرکتهای سازنده برنامههای اینترنت بیشتر میشود.با انکه بعضی از عاشقان اینترنت ان را نوعی شیوه زندگی میدانند. در نظر بیشتر کاربران منبع سرگرمی اطلاعات است ولی بیشترین مصرف ان پست الکترونیکی یا همان email است که یکی از ابزارهای ارتباطی کار امد به شمار میرود. پیامها از کامپیوتری به کامپیوتر دیگر با سرعت پرواز میکنند و منتظر میمانند تا شخص فرصت خواندن انها را پیدا کند . وب امکانات خوبی برای کپی از نرمافزارهای مجاز از لحاظ کپی فراهم میسازد. وقتی که میبینیم که در مدت کوتاهی اینترنت به چنین رشدی نایل آمده است، مطمئناً دشوار خواهد بود که آینده او را پیش بینی کنیم. طبق نظر کارشناسان ماهانه ۱۰ درصد به تعداد کاربران اینترنت افزوده میشود ولی تعداد دقیق کاربران که روزانه از آن استفاده میکنند مشخص نیست. هرچند که پارهای از کارشناسان تعداد آنها را تا ۹۰۰ میلیون نفر حدس میزنند. تعداد رسمی کاربران اینترنتی را در سال ۲۰۰۰ کارشناسان ۵۰۰ میلیون نفر اعلام کرده بودند.
قطعاً در سالهای آینده تحولات شگرفی را در زمینه شبکههای اینترنتی شاهد خواهیم بود. بهوسیله اینترنت انسان به راههای جدیدی دست پیدا کرد. در کنار این شانس جدید توسط اینترنت، باید بگوییم خطراتی نیز در رابطه با سیاست و اقتصاد و علم به دنبال خواهد داشت. فرم امروزی اینترنت مدیون همکاری تمام کاربران اینترنت در سرتاسر گیتی است که با این تصور که اطلاعات موجود در سطح جهان را به راحتی با یکدیگر مبادله کنند. این تصوری بود که آقای باران(Baran) از اینترنت داشت و امیدواریم در آینده نیز تکامل اینترنت در این مسیر باشد.
اینترنت در ایران
اینترنت در ایران عبارت است از کلیه جنبه های مرتبط به ایجاد، توسعه و استفاده از شبکه های رایانه ای تحت مجموعه پروتکل اینترنت در ایران که آن را از اینترنت به معنای عام مشخص و متمایز می کند و شامل امور فنی، ساختارهای حقوقی و اداری، دسترسی، خدمات، کاربری و نیز آثار و چالش های ناشی از آن می شود.
اینترنت در ایران در سطح جامعه اکثراً محدود به وبگردی و ارتباطات راهدور و در دانشگاهها تحقیقات علمی است و تجارت الکترونیک به علت نبود زیرساختها و قوانین لازم در سطح محدودی ارائه میگردد. در سال ۱۹۹۳، ایران دومین کشوری در خاورمیانه بود که به اینترنت متصل شد. از آن زمان، تعداد کاربران اینترنت در ایران روند فزایندهای داشته است. اما بر اساس آمار دسامبر ۲۰۱۲ ایران به لحاظ سرعت اینترنت در دسترسی برای کاربران خانگی، در بین ۱۷۸ کشور در جایگاه ۱۶۴ قرار داشت و از بین کشورهای خاورمیانه تنها مصر و سوریه رتبهٔ پایینتری داشتند. همچنین در فصل اول سال ۲۰۱۳ ایران در بین کشورهای جهان جزء کندترین کشورها در زمینه ارائه اینترنت پرسرعت است. کاربران اینترنت در ایران هم از فیلترینگ اعمالشده توسط نهادهای دولتی و هم از فیلترینگ معکوس اعمالشده توسط شرکتهای وابسته به کشورهایی که ایران را تحریم کردهاند، رنج میبرند. همچنین، تولیدکنندگان محتوا در اینترنت طبق قانون موظفند که اطلاعات شخصی خود و ویژگیهای فنی وبگاه خود را نزد دولت ثبت کنند.
پیشینه
پیش از ایجاد شبکه اینترنت، نسل قبلی شبکههای رایانهای جهانگستر به نام بیتنت در دنیا به کار میرفت. به گفتهٔ سیاوش شهشهانی، قائممقام سابق پژوهشگاه دانشهای بنیادی، این مرکز در ایران در سال ۱۳۶۸ خورشیدی (معادل ۱۹۸۹ تا ۱۹۹۰) برای اولین بار به شبکهٔ بیتنت متصل شد؛ هدف این کار ارتباط علمی و پژوهشی با دانشگاههای دنیا بود. شبکهٔ بیتنت با شبکهٔ اینترنتی که امروز استفاده میشود تفاوتهای بسیار داشت. استفادهٔ اصلی که از آن میشد دریافت و ارسال نامههای الکترونیکی بود. سیاوش شهشهانی، قائممقام آن زمان پژوهشگاه دانشهای بنیادی، در مصاحبهای میگوید: «وقتی عضویت ما را تصویب کردند یک بند جدید هم به تعهدات اعضا اضافه کردند و آن این که از شبکه برای تبلیغات مذهبی استفاده نشود.» یکی دیگر از تعهدات این بود که هیج عضوی نباید جلوی عبور اطلاعات از کشوری به کشور دیگر را بگیرد. محمد جواد لاریجانی فردی بود که تعهدات لازم برای برقراری این اتصال را پذیرفت و توافقنامه را امضا کرد. مرکز در ابتدا از طریق اتصال با شمارهگیری و با استفاده از خط تلفن به دانشگاهی در اتریش متصل شد. پس از آن یک خط استیجاری با دانشگاه وین برقرار شد. این اتصال از سال ۱۹۹۳ به شکل رسمی در آمد.
اینترنت به صورت عمومی از حدود سالهای ۱۹۹۳ (معادل ۱۳۷۲ خورشیدی) برای استفادههای دانشگاهی وارد ایران شد. پژوهشگاه دانشهای بنیادی اولین مرکزی بود که به سمت استفاده از اینترنت گام برداشت و از طریق دانشگاه وین به اینترنت متصل شد. در ابتدا خدمات اتصال به اینترنت فقط به کاربران دانشگاهی داده میشد. استفادهٔ عمومی از اینترنت برای اولین توسط شرکت ندا رایانه فراهم آورد.
نقش مخابرات
به گفتهٔ سیاوش شهشهانی وزارت مخابرات دولت ایران نیز از مخالفان گسترش شبکه اینترنت در ایران بود. به گفته وی مخابرات اینترنت را موضوعی موقت و مد روز میدانست و در پی گسترش شبکه X.۲۵ در ایران بود. این مخالفتها مدتها ادامه یافت و تا حدودی گسترش اینترنت در ایران را در سالهای اول کند کرد:
برای اتصال دانشگاه به شبکه، در مرکز تحقیقات ۲ دیدگاه مختلف وجود داشت؛ یکی این که اینترنت را به عنوان یک امتیاز ویژه برای مرکز حفظ کنیم. دوم اینکه آنها را در دانشگاهها توزیع کنیم. بالاخره بعد از بحثهای متوالی، نظریه دوم پیروز شد و دانشگاهها به نوبت به اینترنت وصل شدند. با توجه به اینکه در آغاز اتصال از طریق خط استیجاری بود، به طور طبیعی محدودیتهایی در دانشگاهها به وجود آمد. برای استفاده از اتصال ماهوارهای، مذاکراتی طولانی با مخابرات را پشت سر گذاشتیم و تا پای عقد قرارداد هم رفتیم. ولی تصادفاً در همان روزی که بنا بود قرارداد امضا شود، رئیس مخابرات عوض شد. رئیس بعدی هم از امضای قرارداد خودداری کرد. به همین دلیل حدود ۳ سال طول کشید تا اولین ارتباط ماهوارهای با سرعت ۱۲۸ کیلوبیت بر ثانیه از طریق یک شرکت ایتالیایی برقرار شود. پیش از آن به ترتیب دانشگاههای صنعتی شریف و صنعتی اصفهان، مرکز تحقیقات ژنتیک و مرکز زلزلهشناسی به اینترنت وصل شده بودند. اتصال ۱۲۸ که برقرار شد وضع اینترنت در دانشگاهها کمی بهتر شد. البته ۲ تا ۳ ماه بعد ظرفیت این اتصال به نقطه اشباع رسید برای همین ۸ ماه بعد یعنی اوایل سال ۱۹۹۷ آن را به اتصال ۵۱۲ کیلوبیت در ثانیه ارتقا دادیم.
پس از آغاز ارایهٔ سرویس اینترنت پر سرعت توسط شرکت مخابرات ایران، این شرکت با وجود خصوصی بودن در ژانویه ۲۰۱۲ اقدام به تبلیغات خدمات اینترنت پرسرعت خود از طریق شبکه خبر جمهوری اسلامی ایران در تلویزیون دولتی ایران نمود که این موضوع اعتراض شرکتهای خصوصی رقیب را برانگیخت. این شرکتها، مخابرات را عامل گرانی اینترنت در ایران میدانند.. در عین حال بر اساس مصوبه ۱۰۶ شورای رقابت در مناطقی از کشور که شرکتهای PAP آمادگی فعالیت دارند، شرکت مخابرات مجاز به بهرهبرداری بیش از ۱۰ درصد از ظرفیت بازار نمیباشد اما برخی شرکتهای ارایهدهنده خدمات اینترنتی ادعا میکنند به علت عدم همکاری مخابرات استان تهران این مصوبه در عمل اجرا نمیشود.
ساختار فنی
در ایران بیش از ۶۰۰ شرکت ارائهکنندهٔ خدمات اینترنت فعال هستند که دسترسی کاربران به اینترنت را به شکلهای مختلفی فراهم میکنند. ارزانترین شکل اینترنت در ایران، اینترنت کمسرعت مبتنی بر شمارهگیری است. قیمت اینترنت پرسرعت بر اساس سرعت اتصال و پهنای باند متفاوت است. قیمت اینترنت در ایران گرانترین قیمت ممکن در دنیا به نسبت سرعت و کیفیت و حجم دانلود است.
پهنای باند
پهنای باند ورودی به ایران از طریق فیبر نوری تامین میشود. تا سال ۱۳۸۴، قسمت عمدهٔ پهنای باند ایران از طریق کابل دریایی بین جاسک و فجیره تامین میشد که به علت وابستگی به یک ورودی، قطعیهای عمده در اینترنت ایران به ویژه در ماه دی رخ میداد. تا سال۱۳۸۸، ایران تعداد مبادی اینترنت خود را به ۹ عدد افزایش داد به شکلی که با تمام کشورهای همسایه به جز پاکستان، فیبر ارتباطی داشت. به علاوه ایران در این سال خبر از پیوستن به شبکه فالکون را داد؛ به این ترتیب ظرف پانزده سال بعدی، ایران میبایست مستقیماً به شبکه فیبرنوری جهانی (فلگ) بپیوندد. در آبان ۱۳۹۱، مجموع پهنای باند ایران از طریق این ۹ درگاه مختلف برابر با ۴۶۷ استیام-۱ اعلام شد که معادل ۷۲،۶۲۷ مگابیت در ثانیه است. پهنای باند ورودی به ایران توسط شرکت ارتباطات زیرساخت تهیه میشود و قیمت فروش آن به شرکتهای ارائهکنندهٔ خدمات اینترنتی یکی از دلایل قیمت بالای دسترسی به اینترنت در ایران دانسته میشود. در اکتبر ۲۰۰۸ رئیس انجمن شرکتهای اینترنتی ایران اعلام کرد که کل پهنای باند وارد شده به ایران برابر با مجموع پهنای باند دو دانشگاه در سوئد است و برخی کارشناسان مشکلات شبکهٔ داخلی در ایران را در حدی میدانند که حداکثر سرعت مجاز برای دسترسی خانگی به اینترنت (که توسط سازمان تنظیم مقررات و ارتباطات رادیویی برابر با ۱۲۸ کیلوبیت در ثانیه معادل ۱۶ کیلوبایت در ثانیه تعیین شدهاست) را در درجهٔ کمتری از اهمیت در مورد محدودیت سرعت دسترسی قرار میدهند.
در شش ماهه نخست سال ۲۰۱۰ از میان ۱۵۲ کشور بررسی شده، ایران پس از کشورهایی چون ونزوئلا، نیجریه، بولیوی، عراق، پاراگوئه و جزایر ترک و کایکاس با سرعتی برابر ۰٫۶۱ مگابیت بر ثانیه در رتبه ۱۴۴ قرار گرفت. آمار منتشرشده در مرداد ۱۳۹۰ نیز حاکی از آن بود که از نظر متوسط سرعت اتصال کاربران به اینترنت، ایران در بین کشورهای جهان رتبه پنجم از آخر را داراست. بر اساس آمار دی ۱۳۹۱ ایران به لحاظ سرعت اینترنت خانگی، در بین ۱۷۸ کشور در جایگاه ۱۶۳ قرار گرفتهاست. گزارش سال ۲۰۱۳ خانه آزادی درباره آزادی اینترنت در نقاط مختلف جهان میگوید که از میان ۶۰ کشور مورد مطالعه، ایران بدترین رتبه را در یک سال گذشته داشته است.
در بهمن۱۳۸۹ مخابرات ایران اعلام کرد که از ۲۸ میلیون کاربر اینترنت در کشور، تنها ۷۰۰٬۰۰۰ نفر از اینترنت پرسرعت استفاده میکنند و مابقی (۹۸٪) از اینترنت با استفاده شمارهگیری استفاده میکنند. همچنین در بهمن ۱۳۸۹ نمایندگان مجلس شورای اسلامی اعلام کردند که محدودیت سرعت اینترنت برای کاربرد خانگی برداشته نخواهد شد.
شبکه ملی اطلاعات
پروژهٔ «اینترانت ملی» یا «شبکه ملی اطلاعات»، پروژهای است که توسط دولت ایران برای انتقال مراکز دادهها و میزبانی وبگاههای ایرانی به داخل کشور برنامهریزی شدهاست. به گفته یکی از نمایندگان مجلس ایران، اینترانت ملی جایگزینی برای شبکه اینترنت و روشی برای کنترل محتوای اینترنت است و راهحل مشکل فیلترینگ و کم کردن سرعت اینترنت خواهد بود. این اظهار نظر، در کنار گفتههای وزیر ارتباطات وقت که گفته بود «اینترنت ملی جایگزین اینترنت جهانی میشود» و گفتههای مدیرعامل شرکت فناوری اطلاعات که مسدود شدن سرویسهای رایانامه خارجی نظیر جیمیل را فرصتی برای حرکت به سمت «ایمیل ملی» تلقی کرده بود این شائبه را بر انگیخته که دولت ایران به دنبال جداسازی کامل شبکه اینترنت ایران از شبکهٔ جهانی اینترنت است. پیش از ایران، میانمار و کوبا نیز اقدام به جداسازی شبکهٔ ملی خود از اینترت کرده بودند و چین نیز در حال اجرای این برنامه بود. با این حال، دیگر نمایندگان مجلس و اشخاص حقوقی، وجود برنامهای برای جدا شدن ایران از اینترنت جهانی را تکذیب کردهاند.
کمیت و کیفیت دسترسی و استفاده
آمار دسترسی
در خصوص ضریب نفوذ اینترنت در ایران اختلاف زیادی بین آمارهای اعلام شده از دستگاه های ذی ربط وجود دارد. بخصوص تناقض میان آمارهای مرکز آمار ایران به عنوان مرجع رسمی اعلام آمارهای کشور در برنامه پنجم توسعه و وزارت ارتباطات و فناوری اطلاعات به عنوان دستگاه ارائه خدمات اینترنت به کاربران تفاوت فاحش دارد. در سال ۱۳۸۷ با اعلام آمارهای این دو مرجع این تفاوت آشکار شد به طوری که سازمان آمار ایران ضریب نفوذ اینترنت را ۱۱.۱ درصد و سازمان فناوری اطلاعات عدد ۳۴.۹ درصد اعلام کرد، که این تفاوت به تعریف و فرمول محاسباتی برمی گردد. بر اساس آخرین آمار اعلامشده از سوی وزارت ارتباطات بر اساس محاسبه سامانه مدیریت ضریب نفوذ اینترنت مرکز مدیریت توسعه ملی اینترنت (متما)، ضریب نفوذ اینترنت در کشور در شش ماه نخست ۱۳۹۲ عدد ۵۴.۱۸ درصد می باشد که برمبنای سرویس های اینترنتی ارائه شده محاسبه شده است. در این محاسبه تعداد کاربران اینترنت در شش ماه نخست امسال را ۴۰ میلیون و ۷۱۸ هزار و ۷۴۰ نفر و تعداد کل مشترکان اینترنت در کشور را ۲۶,۶۷۶,۹۴۸ نفر اعلام کرده است. از این تعداد بالغ بر ۲۱.۰۳ درصد کاربران از طریق GPRS، حدود ۱۲.۶۲ درصد از طریق ADSL (شمار مشترکان ضربدر ۲.۵)، ۹.۲۳ درصد از طریق دایل آپ، حدود ۸ درصد از طریق فیبرنوری (شمار مشترکان ضربدر ۲.۵) و تعداد ۳.۱۸ درصد از طریق وایمکس (شمار مشترکان ضربدر ۲.۵) می باشد.
برای حل مشکل تفاوت آمار، بناست در سال ۱۳۹۲ طرح آمارگیری ضریب نفوذ اینترنت توسط سازمان فناوری اطلاعات ایران با همکاری مرکز آمار ایران بهعنوان متولی اجرای آمارگیریهای ملی در کشور و با هماهنگی و مشاوره اداره آمار و اطلاعات اتحادیه جهانی مخابرات اجرا شود. به گفته علیرضا رضایی مدیرکل دفتر صنعت، معدن و زیربنایی مرکز آمار کشور مبنای تعریف این مرکز از کاربران اینترنت، استناد به دستورالعمل توصیه شده و استاندارد توسط اتحادیه بین المللی مخابرات (ITU) است که طبق آن کاربر اینترنت به کسی اطلاق میشود که در طول سه ماه گذشته، حداقل یک بار از اینترنت استفاده کرده باشد. وی می گوید «مدل مدنظر سازمان فناوری اطلاعات به این صورت است که تعداد مشترکین اینترنت را با استفاده از یک مدل خاص، به کاربر اینترنت تبدیل میکنند. به عنوان مثال، اگر یک خانوار دارای خط ADSL باشد، بهطور متوسط باید ۳ الی ۴ نفر از آن استفاده کنند که در نهایت با استفاده از این مدل و ضرب کردن خطوط اینترنت در تعداد افراد خانوار، تعداد مشترکان را به تعداد کاربران اینترنت تبدیل میکنند که استفاده از این روش، ایراداتی دارد.» و می افزاید «مهمترین اختلافی که مرکز آمار ایران با سازمان فناوری اطلاعات داشت که در حال حاضر برطرف شده، این است که آنها میگفتند که به تعداد استفادهای که یک نفر از اینترنت در منزل یا محل کار یا دانشگاه میکند، یک کاربر جداگانه حساب میشود. به عنوان مثال، اگر من به عنوان کاربر اینترنت در محل کار، منزل و دانشگاه به اینترنت دسترسی داشته باشم، نه یک کاربر بلکه سه کاربر محسوب میشوم در صورتی که این تعریف مغایر با تعریف سازمان ITU است. اختلاف دوم به استفاده این سازمان از روش مدل مبنا که بر یک سری از فرضها استوار است، برمیگردد. این فرضها ممکن است باعث ایجاد انحراف در نتایج شوند اما در روش مورد استفاده توسط مرکز آمار ایران که مبتنی بر روش مشاهده است، احتمال وجود خطا در آمارگیری صورت گرفته، وجود دارد اما سعی میکنیم آن را کنترل کنیم.»
از سوی دیگر در آبانماه ۱۳۹۲ علی اصغر انصاری (معاون سازمان فناوری اطلاعات) از رشد انتقال میزبانی وبگاههای اینترنتی به داخل کشور با رقم ماهانه ۳ تا ۵ درصد خبر داد و اظهار داشت: از میان ۵۰۰ وبگاه اینترنتی که بیشترین بازدید را در میان ایرانیها به خود اختصاص دادهاند، ۴۳۶ وبگاه ایرانی و مابقی غیرایرانی هستند که از این تعداد بالغ بر ۲۸۷ وبگاه در داخل کشور میزبانی میشوند.
در دهه ۱۳۸۰ مهمترین روش دسترسی به اینترنت در ایران دسترسی از طریق شمارهگیری تلفنی بوده است. کاربران میتوانند از شرکتهای ارائه کنندهٔ خدمات اینترنتی اشتراک مدتدار (بر حسب ساعات استفاده از اینترنت یا بر حسب روزهای مجاز برای دسترسی به اینترنت) خریداری کنند، یا این که از کارت اینترنت استفاده کنند. این کارتها را میتوان از دکههای مطبوعاتی یا کافینتها خرید. گونهٔ دیگری از دسترسی با شمارهگیری در ایران وجود دارد که به اینترنت هوشمند معروف است. در این روش کاربر با تماس با شمارههایی ۱۰ رقمی که همگی با ۹۰۹ آغاز میشوند، بدون واردکردن نام کاربری و گذرواژه به اینترنت متصل میشود. اینترنت هوشمند جزو خدمات شبکه هوشمند مخابرات ایران به حساب میآید و هزینهٔ ارتباط با اینترنت از این طریق طبق تعرفهٔ مخابرات ایران (دقیقهای ۵۰ ریال) به صورت حساب مشترک خط تلفن افزوده میشود.
از اوایل دههٔ ۱۳۸۰ دسترسی به ایدیاسال نیز در ایران فراهم شد اگر چه استفاده از آن برای همهٔ کاربرها مقدور نبود. به طور ویژه، استفاده از تکنولوژی پیسیام که با هدف افزایش ضریب نفوذ تلفن در ایران انجام شد، باعث شده که عدهٔ قابل توجهی از مشترکین تلفن نتوانند از خط تلفن خود برای ارتباط ایدیاسال استفاده کنند. گذشته از این، طبق مصوبات اخیر «کمیسیون تنظیم مقررات و ارتباطات رادیویی» در ایران، اشتراک گذاری با نسبت ۱ به ۱۰ در ایران عملاً مجاز شناخته شده که باعث افت کیفیت خطوط ایدیاسال میشود. همچنین برخی شرکتهای ارائهدهندهٔ خدمات اینترنتی اقدام به ارائهٔ خدمات اینترنت بیسیم نظیر وایمکس کردهاند. همچنین قرار است که در آینده اتصال منازل به اینترنت با پهنای باند ۲۰ مگابیت در ثانیه از طریق فیبر نوری میسر شود.
از سال ۲۰۰۷، سه شرکت همراه اول و ایرانسل و تالیا خدمات اینترنت روی تلفن همراه را نیز ارائه میکنند. این شرکتها اینترنت را به صورت جیپیآراس و یا سرعت داده افزایش یافته برای تحول جیاسام ارائه میکنند و در کنار آن خدمات دیگر مبتنی بر اینترنت (از جمله بانکداری اینترنتی با کمک تلفن همراه) را نیز برای دارندگان تلفن همراه ارائه میکنند. آخرین گزارشها در سال ۲۰۱۳ وضعیت دسترسی به فناوری اطلاعات و ارتباطات ایران نشان میدهد که تنها چهار درصد جمعیت کشور کاربر اینترنت پرسرعت با فناوری سیمی همچون ای دی اس ال و حدود ۱/۴درصد با فناوری بیسیم مانند وایمکس و موبایل به اینترنت پرسرعت دسترسی دارند. همچنین سامانه مدیریت ضریب نفوذ اینترنت مرکز مدیریت توسعه ملی اینترنت نشان میدهد که استانهای مازندران، تهران، اصفهان، خوزستان و سمنان به ترتیب دارای بالاترین ضریب نفوذ اینترنت در ایران هستند.
مقابله با محتوای غیرمجاز یا مجرمانه از طریق محدودیت دسترسی
محدودسازی دسترسی به نشانیهای اینترنتی از طریق پالایش یا فیلترینگ در ایران از سال ۱۳۸۰ با تصویب مقررات و ضوابط شبکههای اطلاع رسانی رایانهای آغاز می شود و مصادیق فعالیت های اینترنتی غیرمجاز معین می شود. پیرو آن در سال ۱۳۸۱ «کمیته مصادیق پایگاههای اطلاعرسانی رایانهای غیرمجاز » (که گاه «کمیته مصادیق پایگاه های غیرمجاز اینترنتی» نامیده شده است)، زیر نظر شورای عالی انقلاب فرهنگی تشکیل شد. وزارت اطلاعات ، سازمان صدا و سیما، وزارت فرهنگ و ارشاد اسلامی، نماینده شورای عالی انقلاب فرهنگی و سازمان تبلیغات اسلامی اعضای ثابت و اصلی کمیته مصادیق پایگاه های غیر مجاز اینترنتی بودند و وزارت اطلاعات مسئولیت آن را برعهده داشت. به نوشته رضا باقری اصل، مدیر وقت دفتر فناوریهای نوین مرکز پژوهش های مجلس شورای اسلامی، «نقد اساسی که به این کمیته وارد است غیر قضایی بودن جایگاه کمیته و نیز ترکیب اعضاء می باشد. زیرا فیلتر کردن یک سایت یا رفع فیلتر اساساً یک اقدام قضایی در جهت اعطاء یا سلب حق از یک شخص است و کمیته مذکور با ترکیبی از اعضایی که برشمرده شد چنین جایگاهی را ندارد.»
از سال ۱۳۸۲ در کنار کمیته تعیین مصادیق، «دفتر اینترنت دادستانی» از سوی «دادستانی تهران» تأسیس شد. طبق بند ٥ اصل ١٥٦ قانون اساسی جمهوری اسلامی ایران، مسئولیت پیشگیری از وقوع جرایم به عهده قوه قضائیه است و از این رو دادستانی برای اعمال مقررات شبکه های اطلاع رسانی رایانه ای مصوب شورای عالی انقلاب فرهنگی مبادرت به این اقدام مبادرت کرد. در آن زمان دفتر اینترنت دادستانی جهت مسدودسازی وب سایت های مستهجن، به ویژه پایگاه های فارسی، به ماده ٦٣٩ قانون مجازات اسلامی مصوب ١٣٧٥ استناد می کردند. همچنین برای رسیدگی به شکایات افراد از وب سایت هایی که فعالیت هایی از قبیل کلاهبرداری، نشر اطلاعات خصوصی و سایر عناوین مجرمانه را دارند، را رأساً از سوی محاکم تحت پیگرد قرار می داد. این دفتر با تشکیل پرونده و ارجاع آنها به شعب اختصاصی پیش بینی شده، فرآیند کیفری را تسهیل می کند و در صورت صدور حکم دادگاه مبنی بر مسدود شدن وب سایت مربوط، اقدامات مقتضی را با مجریان فیلترینگ به انجام می رساند.
شرکت فناوری اطلاعات، به عنوان متولی اصلی اجرای فیلترینگ کشور، کار خود را از سال ١٣٨٠ با نرم افزار امریکایی Websense آغاز کرد. در سال ١٣٨٢ نرم افزار Smart و بعدا نرم افزار Webwasher بکارگرفته شد که حق اشتراک آن تا پایان آبان ١٣٨٥ اعتبار داشت. در این نرم افزارها کنترل محیط هایی نظیر پست الکترونیکی و محیط های گپ وجود ندارد، حال آنکه در صورت بکارگیری فیلترینگ روباتیک وب، می توان آن را در ابتدای پهنای باند قرار داد تا به صورت خودکار و هوشمند به جست وجو بپردازد و براساس طبقه بندی تعریف شده، فهرست سیاه را تکمیل کند. به همین منظور، ابزاری به نام Delta Global خریداری و به کار گرفته شده است. ضعف ابزارهای خارجی و هزینه آنها باعث شد مسئولین شرکت به سمت تولیدات داخلی گرایش یابند. در این رابطه جند شرکت موفق شدند تأییدیه لازم را از شرکت فناوری اطلاعات و قوه قضائیه اخذ کنند. این ابزارها که برای پوشش دهی مسیر ارسال طراحی و تولید شده اند، ابتدا جوابگوی ظرفیت شبکه نبودند. لذا به آنها اجازه داده شد در لایه های بعدی توزیع، یعنی ISPها به کار گرفته شوند. پس از رفع نواقص از اردیبهشت ماه ۸۶ لایه Carrier Class را در اختیار گرفته اند. کسب این توفیق باعث شد مجدداً مناقصه خارجی برگزار نشود. این مسئولیت پس از تصویب قانون جرائم رایانه ای در سال ۱۳۸۸ به شرکت ارتباطات زیرساخت محول شد.
با تصویب قانون جرائم رایانه ای و تشکیل «کارگروه تعیین مصادیق محتوای مجرمانه رایانه ای» در سال ۱۳۸۸ مسئولیت تعیین موارد پالایش به این کارگروه محول شد. طبق حکم ماده ۲۲ این قانون، «قوه قضائیه موظف است ظرف یک ماه از تاریخ تصویب این قانون کمیته تعیین مصادیق محتوای مجرمانه را در محل دادستانی کل کشور تشکیل دهد. وزیر یا نماینده وزارتخانه های آموزش و پرورش، ارتباطات و فناوری اطلاعات، اطلاعات، دادگستری، علوم، تحقیقات و فناوری، فرهنگ و ارشاد اسلامی، رئیس سازمان تبلیغات اسلامی، رئیس سازمان صدا و سیما و فرمانده نیروی انتظامی، یک نفر خبره در فناوری اطلاعات و ارتباطات به انتخاب کمیسیون صنایع و معادن مجلس شورای اسلامی و یک نفر نماینده مجلس شورای اسلامی به انتخاب کمیسیون حقوقی و قضایی و تأیید مجلس شورای اسلامی اعضای کمیته را تشکیل خواهند داد. ریاست کمیته به عهده دادستان کل کشور خواهد بود.» بنا بر اعلام محمود خسروی مدیرعامل شرکت ارتباطات زیرساخت « براساس ماده 21 قانون جرایم رایانه ای فیلترینگ یکپارچه برای تمامی شرکتهای اینترنتی تعریف شده است و ISP ها این اجازه را ندارند که به دلخواه برای سایتی محدودیت و عدم محدودیت اعمال کنند. فیلترینگ یکپارچه در کل کشور و از مسیر "گیت وی" انجام می شود و تعیین سایتهایی که مشمول این طرح قرار می گیرند از سوی کمیته تعیین مصادیق خواهد بود و شرکت ارتباطات زیرساخت آن را اعمال می کند. برابر قانون نیز هر سرویس دهنده اینترنت موظف است که این موارد را اجرا کند.»
«کارگروه تعیین مصادیق محتوای مجرمانه رایانه ای» در اجرای حکم ماده ۲۱ قانون جرائم رایانه ای و بر اساس قوانین موضوعه از جمله قانون مجازات اسلامی، قانون مطبوعات و قانون جرائم رایانه ای و نیز مصوبات شورای عالی امنیت ملی مجموعه ای از محتواها را مجرمانه اعلام نمود. این هشت محور عبارت هستند از:
محتوا علیه عفت و اخلاق عمومی
محتوا علیه مقدسات اسلامی
محتوا علیه امنیت و آسایش عمومی
محتوا علیه مقامات و نهادهای دولتی و عمومی
محتوایی که برای ارتکاب جرایم رایانه ای به کار می رود ( محتوا مرتبط با جرایم رایانه ای )
محتوایی که تحریک ، ترغیب ، یا دعوت به ارتکاب جرم می کند ( محتوای مرتبط با سایر جرایم )
محتوا مجرمانه مربوط به امور سمعی و بصری ومالکیت معنوی
محتوای مجرمانه مرتبط با انتخابات مجلس شورای اسلامی
محتوای مجرمانه مرتبط با انتخابات ریاست جمهوری
به گفتهٔ گاردین، ایران از نظر تعداد وبگاههایی که در آن فیلتر شدهاند، در دنیا پس از چین در رتبهٔ دوم قرار دارد. بعضی از وبگاههای مطرح ایران و جهان مانند جستجوگر گوگل، جستجوگر بینگ، فیسبوک و توییتر، جیمیل و سرویس ایمیل یاهو، وبگاه اکبر هاشمی رفسنجانی، وبگاه سید محمد خاتمی، سحام نیوز، پرشین بلاگ، بلاگفا، بلاگر، وردپرس، خبر آنلاین، عصر ایران، و وبگاه سفارت کشور انگلستان در ایران به صورت موقت یا دائم فیلتر و از دسترس خارج شدهاند.
برخی انتقادات در خصوص شیوه عملکرد نرم افزارهای فیلترینگ وجود دارد. به نوشته رضا باقری اصل «فیلترینگ ارسال ضریب خطای بالایی دارد و علی رغم بهره گیری از ابزار هوشمند و پایگاه داده یکپارچه که هنوز به بهره برداری نرسیده است نمیتوان انتظار پالایش ۱۰۰ درصدی را داشت و در نهایت توسعه واژگان و فهرست سیاه سایت ها ISPها را با مشکل مواجه می سازد. استفاده از روش منع جست وجوی واژگان غیرمجاز رفتار تولیدکنندگان محتوای غیر مجاز را تغییر می دهد به طوری که با روش های تحریک موتورهای جست وجو از واژگان مجاز برای معرفی محتوای غیر مجاز بهره می برند. بنابراین اگر بخواهیم کماکان از این روش استفاده کنیم باید فهرست را هر روز طولانی تر کرده تا جایی که واژگان مجازی باقی نماند.» و «در خصوص فیلترینگ دریافت یا محتوا نیز مسایلی از قبیل تنوع محتوا، ضریب خطای بالا در تشخیص، تنوع فناوری هایی که صفحات وب ایجاد می کنند و بار زیادی که شبکه متحمل می شود، موانع اصلی پیاده سازی آن بوده است. البته این مسأله در مورد کلیدواژه ها نیز صادق است و برای احراز آن کافیست به عنوان نمونه یک کلمه ممنوعه را در تعداد کلمات موجود در بانک و همچنین تعداد افرادی که در یک لحظه به جست وجوی آن می پردازند ضرب کنیم.»
تاثیر تحریم های بین المللی بر محدودیت دسترسی
از سوی دیگر، کاربران اینترنت در ایران از محدودیت دسترسی معکوس نیز رنج میبرند به این معنی که برخی وبگاههای اینترنتی به دلیل الزامشان به تبعیت از تحریمهای علیه ایران مجبور به محدودکردن خدماتی هستند که به کاربران ایرانی ارائه میشود. از جمله این شرکتها میتوان به گوگل، نوکیا و سیمنتک اشاره کرد. با این حال، در برخی موارد این محدودیتها فراتر از ضوابط تحریمهای علیه ایران بودهاند؛ به عنوان مثال، اگر چه شرکت گوگل تا مدتها دریافت برنامههای افزودنی گوگل کروم از ایران را ممنوع کرده بود، پس از پیگیری آن توسط کاربران ایرانی این محدودیت در اوایل سال ۲۰۱۲ برداشته شد. شرکت اپل نیز در اوایل سال ۲۰۱۲ محدودیتهایی اعمالشده برای ایرانیان در خرید برنامههای کاربردی از فروشگاه اپل استور را برداشت. به دلایل بالا، کاربران اینترنت در ایران به استفاده از نرمافزارهای فیلترشکن و روشهای گریز از این محدودیتها روی آوردهاند. بر اساس آمار منتشرشده در اکتبر ۲۰۱۲ به نقل از پلیس فضای تولید و تبادل اطلاعات ایران، حدود ۳۰ درصد از کاربران اینترنت در ایران از ویپیان استفاده میکنند. این در حالی است که استفاده از فیلترشکن در ایران جرم تلقی میشود و پلیس نسبت به خطرات استفاده از ویپیان و نرمافزارهای فیلترشکن نیز هشدار میدهد. و بر اساس آمار الکسا صفحهٔ پیوندها بین ۵-۷ صفحهٔ پربازدید در ایران تبدیل شد.
یکی دیگر از راههای دسترسی به اینترنت در ایران کافینتها هستند. هر روز بر حساسیت استفاده کاربران از اینترنت در کافینتها از سوی نهادهای دولتی و امنیتی افزایش پیدا میکند، فرمانده نیروی انتظامی تهران در مردادماه سال ۱۳۹۲ اعلام کرد که ماموران نظارت بر اماکن عمومی پلیس تهران در جریان عملیات تازه سرکشی از ۳۵۲ کافینت بازدید کردهاند. طبق آمار از هر ۵ کافینتی که بازدید کردهاند یکی را پلمپ کردهاند. نیروی انتظامی هدف از این اقدام را "تامین امنیت کاربران و استفادهکنندگان از سرویسهای دفاتر خدمات اینترنت (کافینتها)" اعلام کرده است. نیروهای انتظامی همچنین دفاتر خدمات اینترنت را موظف کردهاند اطلاعات هویتی کاربران را با دریافت مدارک شناسایی معتبر ثبت و از ارائه خدمات به مراجعه کنندگانی که مدارک شناسایی ارائه نمیکنند خودداری کنند. همچنین دفاتر خدمات اینترنت موظفند حداقل دو دوربین در در محوطه دفاتر خود نصب کرده باشند و علاوه بر اطلاعات هویتی کاربران، سایر اطلاعات کاربری شامل روز و ساعت استفاده، آیپی اختصاص یافته و فایل لاگوب سایتها و صفحات رویت شده را ثبت و حداقل تا ششماه نگهداری کنند.
در مورد آمار تعداد وبگاههای فیلتر شده در ایران باید گفت که به طور معمول آمار رسمی و دقیقی منتشر نمیشود اما یکی از مشاوران قوه قضائیه ایران تعداد وبگاههای فیلتر شده تا آبان ۸۷ را پنج میلیون برشمرد. ، همچنین در دیماه سال ۹۱ عنوان شد که با نگاهی به برخی استانها که آمار فیلترینگ خود را اعلام کردهاند، تعداد وبگاههای فیلترشده در سه ماهه اول این سال بیش از ۱۰۰ وبگاه ایرانی و خارجی است. همچنین در حالی که برخی متولیان اینترنت در ایران میگویند، ۹۰ درصد وبگاهها بر اساس درخواستهای مردمی مسدود میشوند ، مدیر سرویس وبلاگ " پرشینبلاگ " از شش برابر شدن تقاضای مسدود سازی وبلاگها، در هشت ماه اخیر از سوی کارگروه تعیین مصادیق محتوای مجرمانه خبر میدهد. از سوی دیگر سیدمحمدرضا آقامیری عضو کمیته تعیین مصادیق محتوای مجرمانه ماهانه فقط در حدود ۱۵۰۰ وبگاه ضد دینی توسط این کمیته فیلتر میشود و آمار دقیقی درباره فیلترینگ کلیه وبگاهها وجود ندارد
محدودیت در به کارگیری
بسیاری از وبگاههای شبکه اجتماعی که در سطح جهانی فعالیت میکنند (نظیر فیسبوک و توییتر) در ایران فیلتر شدهاند. اگر چه عضویت در این شبکههای اجتماعی به خودی خود جرم تلقی نمیشود، اما دور زدن سامانهٔ فیلترینگ برای دسترسی به این شبکهها جرم تلقی میگردد. همچنین، فعالیت ایرانیان در این شبکههای اجتماعی به شکلی که منجر به توهین به مقدسات جمهوری اسلامی ایران شود (از جمله با انتشار تصاویر بدون حجاب) جرم تلقی میشود.
ایران اولین کشوری نیست که چنین الزامی را برای تولید محتوا دارد؛ پیش از ایران، چین نیز کاربران اینترنت را جهت ایجاد وبگاه و وبنوشت ملزم به اعلام هویت خود کرده بود. چین در سال ۲۰۱۲ این قوانین را گسترش داد به شکلی که کاربرانی که در اینترنت محتوا تولید نمیکنند و تنها برای استفادهٔ محتوا به اینترنت سر میزنند هم ملزم به اعلام هویت خود به ارائهدهندگان خدمات اینترنت هستند. ایران پیش از این تلاش کرده بود که با الگو برداری از چین، یک موتور جستجوی داخلی طراحی کند تا از کاربری موتور جستجوی گوگل توسط کاربران ایرانی کاسته شود.
ساختار حقوقی
سیاست های مربوط به اینترنت
سیاست های کلی نظام در خصوص شبکه های اطلاع رسانی رایانه ای
این سیاست ها برای تنظیم خط مشی حاکمیت در خصوص شبکه های رایانه ای از جمله اینترنت در تاریخ ۱۱ مهر ۱۳۷۷ توسط مقام رهبری، آیت الله خامنه ای، مصوب و ابلاغ گردید و در آن بر اموری شامل «ساماندهي و تقويت نظام ملي اطلاعرساني رايانهاي»، «توسعة كمي وكيفي شبكة اطلاعرساني ملي»، «يجاد دسترسي به شبكههاي اطلاعرساني جهاني صرفاً از طريق نهادها و مؤسسات مجاز»، «حضور فعال و اثرگذار در شبكههاي جهاني»، «ايجاد و تقويت نظام حقوقي و قضايي متناسب»، « توسعة فنآوري اطلاعات (به ويژه حفاظت از اطلاعات) و آيندهنگري در خصوص آثار تحولات فنآوري اطلاعات » و «اقدام مناسب براي دستيابي به ميثاقها و مقررات بينالمللي و ايجاد اتحاديههاي اطلاعرساني » تأکید شد.
سیاستهای کلی نظام در بخش امنیت فضای تولید و تبادل اطلاعات (افتا)
این سیاستها در خصوص امنیت فناوری اطلاعات و ارتباطات و از جمله اینترنت در تاریخ ۲۹ بهمن ۱۳۸۹ توسط رهبر ایران، مصوب و ابلاغ گردید. هدف آن عبارت است از «ایجاد نظام جامع و فراگیر در سطح ملی و سازوکار مناسب برای امنسازی ساختارهای حیاتی و حساس و مهم در حوزه فناوری اطلاعات و ارتباطات، و ارتقاء مداوم امنیت شبکههای الکترونیکی و سامانههای اطلاعاتی و ارتباطی در کشور به منظور استمرار خدمات عمومی، پایداری زیرساختهای ملی، صیانت از اسرار کشور، حفظ فرهنگ و هویت اسلامی-ایرانی و ارزشهای اخلاقی، و حراست از حریم خصوصی و آزادیهای مشروع و سرمایههای مادی و معنوی.» این هدف از طریق «ارتقاء سطح دانش و ظرفیتهای علمی، پژوهشی، آموزشی و صنعتی کشور برای تولید علم و فناوری» در زمینه افتا و «تکیه بر فناوری بومی و توانمندیهای تخصصی داخلی» در این حوزه پیگیری میشود.
مقررات شورایعالی انقلاب فرهنگی
پیرو تصویب و ابلاغ سیاستهای کلی شبکههای اطلاع رسانی رایانهای از سوی مقام رهبری شورای عالی انقلاب فرهنگی «مقررات و ضوابط شبکههای اطلاع رسانی رایانهای» را طی جلسات 482، 483، 484، 485، 486 و 488 در سال ۱۳۸۰ تصویب کرد. در صدر این مقررات اصول حاکم بر آن بدین شرح بیان شده است:
حق دسترسی آزاد مردم به اطلاعات و دانش.
مسؤولیت مدنی و حقوقی افراد در قبال فعالیتهای خود.
رعایت حقوق اجتماعی و صیانت فرهنگی و فنی کشور در این قلمرو.
ایجاد حداکثر سهولت در ارائه خدمات اطلاع رسانی و اینترنت به عموم مردم.
نخستین مورد این مقررات عبارت است از «آییننامه نحوه اخذ مجوز و ضوابط فنی نقطه تماس بین المللی» که نقطه تماس بین المللی(ASP) را در انحصار دولت قرار می دهد و صدور مجوز آن به دستگاه های اجرایی را به شورای عالیاطلاع رسانی محول می کند. این آیین نامه کلیه ایجاد کنندگان نقطه تماس بین المللی را مکلف می کند تا اقدامات لازم را برای حفاظت و کنترل متمرکز از شبکههای مزبور انجام دهند که عبارت است از: الف - فراهم سازی سیستم پالایش مناسب به منظور ممانعت از دسترسی به پایگاههای ممنوع اخلاقی و سیاسی و حذف ورودیهای غیرمطلوب. همچنین تعیین ضوابط پالایش به کمیسیون راهبردی شورای عالی اطلاع رسانی محول می شود. ب - ایجاد سیستم بارو (Firewall) مناسب به منظور صیانت شبکهها از تخریب، فریب و سرقت اطلاعات. ج - دایرکننده نقطه تماس بین المللی اینترنتی بانک فعالیتهای اینترنتی کاربران خود را در دسترس وزارت پست و تلگراف و تلفن قراردهد تا براساس ضوابط و مصوبات شورای عالی امنیت ملی با حکم قاضی حسب درخواست در اختیار وزارت اطلاعات قرار گیرد. د - فراهم سازی امکان جلوگیری از برقراری ارتباطات غیرمتعارف، نظیر ارتباطات غیرمتقارن و ارتباطات غیرمستقیم در موارد غیرمجاز (پیشکار- ProxyServer). به علاوه از وزارت وزارت پست و تلگراف و تلفن می خواهد تمهیدات لازم برای برقراری ارتباطات بین کاربران در داخل کشور از طریق شبکه مازه (Back Bone) داخلی را فراهم سازد.
مورد دوم « آییننامه واحدهای ارائه کننده خدمات اطلاع رسانی و اینترنت رسا (ISP)» می باشد. این آیین نامه حدود فعالیت ارائه کننده خدمات اینترنت و شرایط اخذ، نحوه صدور مجوز و نظارت بر فعالیت آنها توسط وزارت پست و تلگراف و تلفن را معین می کند. همچنین مسئولیت های این شرکت ها و کاربران آنها را بیان می کند که شامل مسئولیت نسبت به محتوای تولیدی توسط خود اشخاص، رعایت حقوق پدیدآورندگان، اعمال پالایش، ثبت اطلاعات کاربران و فعالیت های اینترنتی آنها و ارائه آن به وزارت مذکور، حفظ حقوق کاربران و جلوگیری از حمله به کامپیوترهای آنها ، حفظ حریم اطلاعات خصوصی کاربران و ارائه خدمات با کیفیت می شود. به علاوه مصادیق محتوای ممنوع را مشخص می سازد.
مورد سوم آییننامه «دفاتر خدمات حضوری اینترنت (Coffeenet)» است که شرایط و مراحل اخذ مجوز گردانندگان کافی نت و مقررات حاکم بر فعالیت آنها را بیان می کند. طبق این آیین نامه این مراکز واحد صنفی هستند و باید از صنف مربوطه مجوز بگیرند. از نکات جالب آن توجه به سرویس های نوظهور نظیر تلفن اینترنتی - آوانت (VOIP) است.
شورایعالی انقاب فرهنگی در بهمن ماه سال ۱۳۸۱ در راستای اجرای مقررات فوق تصویب کرد که «به منظور صیانت از فرهنگ ملی و اسلامی، کمیته ای مرکب از نمایندگان وزارت اطلاعات، وزارت فرهنگ و ارشاد اسلامی و سازمان صدا و سیما با مسیولیت نماینده وزارت اطلاعات تشکیل میشود. این کمیته مصادیق پایگاههای اطلاعرسانی رایانهای غیرمجاز را تعیین و به وزارت پست و تلگراف و تلفن ابلاغ خواهد کرد.» در سال ۱۳۸۲ در مصوبه دیگری نماینده دبیرخانه شورای عالی انقلاب فرهنگی و نماینده سازمان تبلیغات اسلامی به آن کمیته اضافه شدند.
بدین ترتیب این آیین نامه ها به فعالیت بخش خصوصی در ایجاد نقطه تماس بین المللی خاتمه می دهد. فعالیت بخش خصوصی در حوزه اینترنت را تنظیم و مقررات گذاری می کند و برای نخستین بار سازوکار رسمی پالایش در ایران را ایجاد میکند. مسئولیت های حاکمیتی این حوزه را به شورای عالیاطلاع رسانی و وزارت پست و تلگراف و تلفن محول می کند. البته طی دهه ۱۳۸۰ با تغییر ساختار این دو نهاد و تغییر قوانین بخصوص قانون جرائم رایانه ای، بخش عمده ای از این مقررات نسخ ضمنی می شود.
ساختار اداری
مرکز ملی فضای مجازی ایران
مرکزی است که به فرمان سید علی خامنهای رهبر حکومت جمهوری اسلامی ایران توسط شورای عالی فضای مجازی تشکیل گردید. در بخشی از فرماننامهٔ وی آمدهاست که
گسترش فزاینده فناوریهای اطلاعاتی و ارتباطاتی بهویژه شبکهٔ جهانی اینترنت و آثار چشمگیر آن در ابعاد زندگی فردی و اجتماعی و لزوم سرمایه گذاری وسیع و هدفمند در جهت بهرهگیری حداکثری از فرصتهای ناشی از آن در جهت پیشرفت همهجانبهٔ کشور و ارائه خدمات گسترده و مفید به اقشار گوناگون مردم و همچنین ضرورت برنامهریزی و هماهنگی مستمر به منظور صیانت از آسیبهای ناشی از آن اقتضا میکند که نقطهٔ کانونی متمرکزی برای سیاستگذاری و تصمیم گیری و هماهنگی در فضای مجازی کشور به وجود آید. به این مناسبت شورای عالی فضای مجازی کشور با اختیارات کافی به ریاستِ رئیس جمهور تشکیل میگردد و لازم است به کلیهٔ مصوبات آن ترتیب آثار قانونی داده شود.
شرکت ارتباطات زیرساخت
شرکت ارتباطات زیرساخت، یکی از شرکتهای زیرمجموعه وزارت ارتباطات و فناوری اطلاعات میباشد که به عنوان متولی شبکه مادر مخابراتی در کشور و کارگزار وزارت ارتباطات و فناوری اطلاعات، به منظور اعمال حاکمیت، وظیفه اجرای سوئیچینگ و ارتباطات اپراتورهای مخابراتی را در نقاط حضور و شبکههای مربوط بر عهده دارد.
مرکز مدیریت توسعه ملی اینترنت
مرکز مدیریت توسعه ملی اینترنت در اردیبهشت سال ۱۳۹۱ توسط وزارت وقت ارتباطات و فناوری اطلاعات به عنوان مرجع اعلام فهرست ارائهدهندگان رایانامه (ایمیل) با میزبانی داخلی معرفی شد که باید توسط بانکها و بیمهها برای آدرس ایمیل مشتریان قابل قبول باشند. بر این اساس استفاده از آدرس ایمیلهای نظیر جی میل، یاهو و غیره توسط مشتریان بانکها و بیمهها ممنوع شد. این مرکز همچنین مسئول تخصیص نشانیهای اینترنتی و دامنهٔ .ir است.
سازمان تنظیم مقررات و ارتباطات رادیویی
سازمان تنظیم مقررات و ارتباطات رادیویی یک نهاد مستقل قانونگذار و نظارتی است که نقش آن رقابتی کردن بازار ارائه خدمات مخابراتی و بالا رفتن کیفیت خدمات آنهاست. این سازمان همچنین مسئول تعیین جدول ملی فرکانس، و صدور پروانهٔ بهرهبرداری برای هر گونه خدمات مخابراتی است.
یکی از ادارات کل تحت پوشش معاونت نظارت با سه گروه هماهنگی و نظارت بر سرویسهای فناوری اطلاعات، تهیه و بازنگری طرحهای نظارت بر سرویسهای فناوری اطلاعات، تدوین و بازنگری آئین نامهها و ضوابط بر سرویسهای فناوری اطلاعات میباشد که وظیفه سیاستگذاری، مدیریت، هدایت و ایجاد هماهنگی جهت نظارت و اعمال مقررات در سطح کشور را در حوزه سرویسهای فناوری اطلاعات بر عهده دارد. در حال حاضر دارندگان پروانه سرویسهای فناوری اطلاعات شامل ISP، ISDP، PAP، SAP، WiMAX، GMPCS، شرکت مخابرات ایران و شبکه علمی کشور میباشند
پلیس فضای تولید و تبادل اطلاعات ایران
با نام مختصر فتا، یک واحد تخصصی نیروی انتظامی جمهوری اسلامی ایران است که وظیفه آن مقابله با فیشینگ (کلاهبرداری اینترنتی) و جعل، سرقت اینترنتی، هک و نفوذ، جرائم سازمان یافته رایانهای، هرزه نگاری (موارد سوء اخلاقی) و تجاوز به حریم خصوصی افراد است.
تشکیل پلیس فتا به دستور فرمانده نیروی انتظامی جمهوری اسلامی ایران و با هدف ایجاد نیروی ویژه مبارزه با جرائم رایانهای انجام شد. رییس پلیس سایبری کشور به فعالیت پلیس فتا در ۳۳ استان کشور و نیز راه اندازی این پلیس در۵۶ شهرستان بالای بیش از۲۰۰ هزار نفر اشاره کرد و اعلام کرد تا آذر ماه ۱۳۹۲ ده مرکز استان کشور مجهز به آزمایشگاه فارنزیک است.
رسانندههای خدمات اینترنتی
کمیسیون سازمان تنظیم مقررات و ارتباطات رادیویی در سال ۱۳۸۳ پروانهٔ انتقال دادهها را برای ۱۲ شرکت خصوصی رساننده خدمات اینترنتی به مدت ۱۰ سال صادر کرد، که یکی از آنها شرکت مخابرات ایران است. بقیه شرکتهای خصوصی معروف به ندا در حال حاضر نیمی از بازار اینترنت پرسرعت در بستر کابل مسی را در اختیار دارند و نیم دیگر این بازار در اختیار شرکت مخابرات ایران است. این در حالی است که بر اساس مصوبات «شورا و مرکز ملی رقابت»، سهم مخابرات از کاربران هر استان باید ۱۰ درصد یا کمتر باشد اما در عمل مخابرات ۵۰ درصد تعدادی و ۷۰ درصد درآمدی را در اختیار دارد. مجموع مشترکان شرکتهای ندا در ایران حدود یک میلیون و ۵۰۰ هزار مشترک سراسر ایران است.
خدمات بر بستر اینترنت
تجارت الکترونیک
طبق تبصره ۲۶ قانون دوم برنامه پنج ساله توسعه اقتصادی کشور (۱۳۷۴-۱۳۷۸)، وزارت بازرگانی موظف به ایجاد و راه اندازی تجارت الکترونیکی در سطح ملی و بینالمللی با کمک تمام نهادها و ارگانهای دولتی بوده است. به همین دلیل وزارت بازرگانی ایران در سال ۱۳۷۴ به عنوان ناظر در چهاردهمین هیأت تبادل الکترونیک اطلاعات برای امور اداری، تجاری و ترابری (ادیفکت) شروع به فعالیت کرد و در مرداد ۱۳۷۵ با همکاری و مشارکت سازمانهای دیگر مانند گمرک، وزارت راه و ترابری، وزارت پست و تلگراف و بانک مرکزی هیئتی مشابه در ایران تشکیل شد.
در حال حاضر تجارت الکترونیک در ایران با استفاده از کارتهای بانکی چندین بانک عضو شبکهٔ شتاب قابل انجام است. همچنین خدمات بانکداری الکترونیکی نظیر دریافت موجودی و صورتحساب، انتقال وجه، و پرداخت قبوض آب، برق، گاز، تلفن ثابت و تلفن همراه توسط بانکها در ایران ارائه میشود.
اظهار نظرها در مورد وضعیت اینترنت در ایران
با آغاز به کار دولت حسن روحانی خبرهایی در مورد استفادهٔ برخی از مقامات جمهوری اسلامی از رسانههای اجتماعی انتشار یافت و میزان دسترسی جامعه ایرانی به اینترنت آزاد بحث داغ روز شد، در همین ارتباط، روحانی در پاسخ به خبرنگار شبکه خبری ان بی سی که از وی در مورد سانسور اینترنت در ایران سوال کرد گفت:
دولت در آیندهای نزدیک کمیسیونی برای پرداختن به حقوق شهروندان تشکیل خواهد داد. ما میخواهیم مردم در زندگی خصوصی خود کاملاً آزاد باشند. در جهان امروز، دسترسی به اطلاعات و حق گفتوشنود آزاد، و حق تفکر آزاد، حق تمام ملتها از جمله مردم ایران است.
همچنین جک دورسی رئیس و یکی از بنیانگذاران شبکه اجتماعی توییتر در یکی از توییتهای اخیر خود حسن روحانی، رئیسجمهور ایران را خطاب قرار داده و نوشته است: عصر به خیر رئیسجمهور، آیا شهروندان ایران میتوانند توییتهای شما را بخوانند؟ و توییتر منسوب به آقای روحانی در پاسخ به آقای دورسی بدون آن که مستقیماً سوال او را جواب دهد، نوشته است:
عصر به خیر جک، همان طور که به کریستین امانپور هم گفتم تلاش میکنم تا مردم کشورم بتوانند به راحتی به تمام اطلاعات جهانی دسترسی داشته باشند، چون این حق آنهاست.
چالش ها
جرایم
با افزایش دسترسی به اینترنت در ایران، جرایم اینترنتی نیز گسترش یافت. در ژانویه ۲۰۱۱ پلیس ایران در واکنش به این شرایط اقدام به تشکیل پلیس فضای تولید و تبادل اطلاعات در ایران کرد. فعالیتهای این نهاد چندان بیحاشیه هم نبود و در آبان ۱۳۹۱ ستار بهشتی، کارگر ساده و وبلاگنویس ۳۵ ساله، که توسط پلیس فتا بازداشت شده بود در هنگام بازجویی درگذشت.. در پی این تخلف، به دستور اسماعیل احمدیمقدم، سرهنگ محمدحسن شکریان، رئیس پلیس فتای تهران در تاریخ ۱۱ آبان ۱۳۹۱ برکنار شد.
فرمانده نیروی انتظامی ایران در بهمن ۱۳۸۹ اعلام کرد که ۸۴ درصد جرایم در فضای سایبری جرایم مالی است
امنیت
رخنهگران اینترنتی
فضای اینترنت در ایران هم میزبان فعالیتهای هکرها بوده و هم مورد حملهٔ هکرها قرار گرفته است. برخی گروههای هکر ایرانی، در زمانهای مختلف اقدام به هک وبگاههای وابسته به کشور اسرائیل کردهاند. همچنین گروه هکرهای کلاهسفید ایرانی «آشیانه» تا کنون هم در پاسخ به هک شدن وبگاههای ایرانی، اقدام به هک وبگاههای خارجی کرده و هم وبگاههای رسمی دولتی و نهادهای مذهبی ایرانی را مورد حمله قرار دادهاست.
وبگاههای اینترنتی دولتی در ایران تاکنون چندین بار مورد حمله هکرها قرار گرفتهاست. به عنوان نمونه در سپتامبر ۲۰۱۰ وبگاه رسمی صدا و سیمای جمهوری اسلامی ایران مورد حمله هکرها قرار گرفت و به مدت نیم ساعت پیامی علیه محمود احمدی نژاد رئیس جمهور وقت ایران جایگزین متن اصلی این وبگاه شد. پیش از آن نیز وبگاه وزارت ارتباطات و فناوری اطلاعات ایران و وبگاه شبکه ۴ سیمای جمهوری اسلامی ایران در مارس ۲۰۱۰ و وبگاه وزارت علوم، تحقیقات و فناوری در اوت ۲۰۰۹ مورد حمله هکرها قرار گرفته بودند.
بدافزارها
چندین بار حملات سایبری برای مقابله با برنامه هستهای ایران توسط بدافزارهایی مانند بدافزار شعله، استاکسنت و استارس انجام شد که به گفته کارشناسان رایانهای بیشترین تاثیرشان را بر روی رایانههای ایران گذاشتهاند.
پهنای باند
پهنای باند و میزان تاخیر پهنای باند از جمله واژههای متداول در دنیای شبکههای کامپیوتری است که به نرخ انتقال داده توسط یک اتصال شبکه و یا یک رابط، اشاره مینماید. این واژه از رشته مهندسی برق اقتباس شدهاست. در این شاخه از علوم، پهنای باند نشان دهنده مجموع فاصله و یا محدوده بین بالاترین و پائینترین سیگنال بر روی کانالهای مخابراتی باند است. که به منظور سنجش اندازه پهنای باند سیگنال از واحد هرتز استفاده میشود.
پهنای باند تنها عامل تعیین کننده سرعت یک شبکه از زاویه کاربران نبوده و یکی دیگر از عناصر تاثیرگذار، «میزان تاخیر» در یک شبکهاست که میتواند برنامههای متعددی را که بر روی شبکه اجراء میگردند، تحت تاثیر قرار دهد.
صفحه گسترده
صفحه گسترده به صفحات جدول بندی شده که قابلیت انجام محاسبات ریاضی را دارند صفحه گسترده میگویند. صفحه گسترده (spreadsheet) نوعی نرمافزار است که برای ساده کردن ورود اطلاعات (data entry) و انجام محاسبات ریاضی طراحی شده اند. نرمافزارهای LibreOffice Calc و اکسل و همچنین SPSS نمونهای از این برنامه ها هستند.
ریزپردازنده
ریزپرداز، یا ریزپردازنده (به انگلیسی: Microprocessor)(میکروپروسسور) تراشههای کوچکیست که میتوانند عملیات حسابی و منطقی را انجام دهد. این تراشهها از تعداد بسیار زیادی ترانزیستور ساخته شدهاند.
به علت پیچیدگی فرایند طراحی و ساخت ریزپردازندهها، همچنین پیشرفت سریع آنها از نسلی به نسل دیگر، در حاضر فناوری ساخت ریزپردازنده صرفاً در اختیار ایالات متحده آمریکا است.
ریزپردازنده قلب هر رایانه دستی یا رومیزی است که به عنوان واحد پردازشگر مرکزی شناخته شدهاست. یک دستگاه محاسبهای کامل است که روی یک تراشه واحد ساخته میشود و مجموع دستورات دستگاه را اجرا میکند. سه کار مهم را انجام میدهد یکی اینکه از واحد همبستگی منطقی/ حساب، استفاده میکند یعنی کارهای وابسته به ریاضی چون جمع، تفریق، ضرب و تقسیمکردن را انجام میدهد، دوم میتواند اطلاعات را از مکان یک حافظه به حافظه دیگر انتقال دهد و سوم اینکه میتواند تصمیم بگیرد و به یک سری از دستورات جدید که براساس آن تصمیمات است جهش کند.
فناوری پردازندهها بر پایه حداقل طول کانال ترانزیستورهای آنها که معمولاً "mosfet" هستند سنجیده میشوند. در واحدهای پردازش مرکزی P۴ عادی این مقدار ۰٫۱۸ میکرون است. در پردازندههای جدید این مقدار به ۳۲ نانومتر کاهش پیدا کردهاست و هم اکنون نیز سعی بر کاهش آن است. یکی دیگر از معیارهای فناوری پردازندهها حداکثر بسامد پالس ساعت (Clock Pulse) است. هرچه این مقدار بیشتر باشد واحدهای منطقی داخلی سریع تر به ورودیها واکنش میدهند.
یکی از مسایل مهم در طراحی ریزپردازندهها، کنترل دمای داخل CPU است. بدلیل افزایش روزافزون سرعت آنها، دمای داخلی هم زیاد میشود و باید برای جلوگیری از سوختن آن فکری کرد. یکی از راهکارها ایجاد مکانیزمی است که بتواند حرارت داخل را به بیرون هدایت کند. از جمله نصب گرماگیر (Heatsink) روی سطح خارجی CPU و همچنین قرار دادن لولههای نازک دارای آب در داخل آن از این قبیل هستند.
واحد پردازش مرکزی
سیپییو (به انگلیسی: Central Processing Unit یا CPU) یا پردازنده (به انگلیسی: Processor)، یکی از اجزاء رایانه میباشد که فرامین و اطلاعات را مورد پردازش قرار میدهد. واحدهای پردازش مرکزی ویژگی پایهای قابل برنامهریزیشدن را در رایانههای دیجیتال فراهم میکنند، و یکی از مهمترین اجزاء رایانهها هستند. یک پردازندهٔ مرکزی، مداری یکپارچه میباشد که معمولاً به عنوان ریزپردازنده شناخته میشود. امروزه عبارت CPU معمولاً برای ریزپردازندهها به کار میرود.
عبارت «Central Processor Unit» (واحد پردازندهٔ مرکزی) یک ردهٔ خاص از ماشین را معرفی میکند که میتواند برنامههای رایانه را اجرا کند. این عبارت گسترده را میتوان به راحتی به بسیاری از رایانههایی که بسیار قبلتر از عبارت "CPU" بوجود آمده بودند نیز تعمیم داد. به هر حال این عبارت و شروع استفاده از آن در صنعت رایانه، از اوایل سال ۱۹۶۰ رایج شد. شکل، طراحی و پیادهسازی پردازندهها نسبت به طراحی اولیه آنها تغییر کردهاست ولی عملگرهای بنیادی آنها همچنان به همان شکل باقیماندهاست.
پردازندههای اولیه به عنوان یک بخش از سامانهای بزرگتر که معمولاً یک نوع رایانهاست، دارای طراحی سفارشی بودند. این روش گران قیمت طراحی سفارشی پردازندهها برای یک بخش خاص، به شکل قابل توجهی، مسیر تولید انبوه آنرا که برای اهداف زیادی قابل استفاده بود فراهم نمود. این استانداردسازی روند قابل ملاحظهای را در عصر مجزای ابر رایانههای ترانزیستوری و ریز کامپیوترها آغاز نمود و راه عمومی نمودن مدارات مجتمع(IC یا Integrated Circuit) را سرعت فراوانی بخشید. یک مدار مجتمع، امکان افزایش پیچیدگیها برای طراحی پردازندهها و ساختن آنها در مقیاس کوچک را (در حد میلیمتر) امکان پذیر میسازد. هر دو فرایند (کوچک سازی و استاندارد سازی پردازندهها)، حضور این تجهیزات رقمی را در زندگی مدرن گسترش داد و آن را به فراتر از یک دستگاه خاص مانند رایانه تبدیل کرد. ریزپردازندههای جدید را در هر چیزی از خودروها گرفته تا تلفنهای همراه و حتی اسباب بازیهای کودکان میتوان یافت.
مدت زمان انجام یک کار بهوسیله رایانه، به عوامل متعددی بستگی دارد که اولین آنها، سرعت پردازشگر رایانهاست. پردازشگر یک تراشه الکترونیکی کوچک در قلب کامپیوتر است و سرعت آن بر حسب مگاهرتز یا گیگاهرتز سنجیده میشود. هر چه مقدار این پارامتر بیشتر باشد، پردازشگر سریعتر خواهد بود و در نتیجه قادر خواهد بود، محاسبات بیشتری را در هر ثانیه انجام دهد. سرعت پردازشگر به عنوان یکی از مشخصههای یک کامپیوتر به قدری در تعیین کارآیی آن اهمیت دارد که معمولاً به عنوان یکی از اجزای تشکیل دهنده نام کامپیوتر از آن یاد میشود. تراشه پردازشگر و اجزای الکترونیکی که آن را پشتیبانی میکنند، مجموعاً به عنوان واحد پردازش مرکزی یا CPU شناخته شده هست
واحد پردازش مرکزی واحد محاسباتی (ALU) و کنترلی (CU) رایانهاست که دستورالعملها را تفسیر و اجرا میکند. رایانههای بزرگ و ریزرایانههای قدیمی بردهایی پر از مدارهای مجتمع داشتهاند که عمل پردازش را انجام میدادهاند. تراشههایی که ریز پردازنده نامیده میشوند، امکان ساخت رایانههای شخصی و ایستگاههای کاری (Work Station) را میسر ساختهاند.
در اصطلاح عامیانه CPU به عنوان مغز رایانه شناخته میشود.
تاریخچه
پیش از ظهور اولین ماشین که به پردازندههای امروزی شباهت داشت؛ کامپوترهای مثل انیاک مجبور بودند برای اینکه کارهای مختلفی را انجام دهند دوباره سیم کشی شوند. این ماشینها کامپیوترهایی با برنامه ثابت نامیده میشوند. از آنجای که عبارت پردازنده عموماً برای دستگاههایی که برنامههای کامپیوتری را اجرا میکنند به کار میرود، میتوان کامپیوترهای برنامه ذخیره شده (stored-program computer) را به عنوان اولین پردازندهها نام برد. ایده کامپیوترهای برنامه ذخیره شده در طراحی J. Presper Eckert و John William برای کامپیوتر اینیاک ارائه شده بود، ولی خیلی زود از طرح حذف گشت تا طرح سریع به اتمام برسد. در ۳۰ ژوئن ۱۹۴۵ قبل از اینکه اینیاک ساخته شود، ریاضی دانی به نام John von Neumann یک مقاله با عنوان اولین پیش نویس گزارش EDVAC منتشر کرد. که این طرح کلی از اولین کامپیوتر برنامه ذخیره شده بود که سرانجام در آگوست ۱۹۴۹ به اتمام رسید. EDVAC برای انجام تعداد خاصی از دستورالعملها طراحی شده بود. این دستورالعملها میتوانستند ترکیب شوند و برنامههای مفیدی را روی EDVAC اجرا کنند. روشن است که برنامههایی که برای EDVAC نوشته شده بودن روی حافظهٔ سریع کامپیوتر ذخیره میشدند به جای سیم کشی کردن مشخص کامپیوتر. طراحی von Neumann بر این محدودیت اینیاک، که زمان و تلاش زیاد برای پیکربندی مجدد برای انجام کار جدید بود غلبه کرد. برنامه یا نرمافزار ی که بر روی EDVAC اجرا میشد میتوانست به راحتی محتویات حافظه را تغییر دهد. در ابتدا CPU ها به صورت اختصاصی به عنوان بخشی از یک دستگاه بزرگتر طراحی میشدند که گاهی بخشی از یک رایانه بودند. با این حال این روش سفارشی طراحی برای یک کاربرد خاص، راه را برای تولید انبوه پردازندههای ساخته شده نا هموار میکرد. استاندارد سازی پردازندهها با پیدایش ترانزیستورها و میکرو کامپیوترها شروع شد و با ظهور آی سیها شتاب بیشتری گرفت. آی سیها این اجازه را میدادند که CPUهای پیچیده تر و با قواعد طراحی نانو متر تولید شوند. استانداردسازی و کوچک شدن CPUها هر دو باعث افزایش حضور دستگاههای دیجیتال در زندگی مدرن در مقابل کاربرد محاسباتی خاص شدند. ریز پردازندهها در هر جایی از ماشینها تا تلفنهای همراه و اسباب بازیهای کودکان حضور دارند. هرچند von Neumann به خاطر طراحی EDVAC خود شناخته شده است، قبل از او افرادی مانند Konrad Zuse ایدههای مشابهی را مطرح و پیاده سازی نموده بودند. اصطلاح معماری هاروارد Harvard Mark که یک طراحی برنامه ذخیره شده که از نوار کاغذهای منگنه بجای حافظههای الکترونیکی استفاده میکرد، قبل از EDVAC تمام شده بود. تفاوت اصلی بین طراحی ون و معماری هاروارد فضای مشترک برای ذخیره دستورالعملها و دادهها در مقابل فضاهای جدا گانه طراحی هاروارد بود. اغلب CPUهای مدرن از طراحی ون پیروی میکنند، اما المانهایی هم وجود دارند که معماری هاروارد پیروی میکنند. رلهها و لامپهای خلا که عموماً به عنوان عناصر سوئیچینگ مورد استفاده قرار میگرفتند. یک کامپیوتر مفید به هزاران یا صدها هزار از این المانهای سوئیچینگ نیاز دارد و سرعت کلی سیستم به سرعت این سوئیچها وابسطه است. کامپیوترهای لامپ خلا نزیر EDVAC تقریباً ۸ ساعت بدون خرابی کار میکردند در حالی که کامپیوترهای رلهای مانند طراحی هاروارد خیلی زودتر با مشکل مواجه میشدند. در نهایت CPUهای بر پایه لامپ خلا به دلیل سرعت قابل توجه و قابلیت اطمینان بیشتر بر هم نوعان خود پیروز شدند. اغلب CPUهای سنکرون نسبت به CPUهای مدرن با فرکانس کلاک کمتری در حد ۱۰۰Hz تا ۴ MHz کار میکردند که این محدودیت به دلیل سرعت کم المانهای سوئیچ بود.
ترانزیستورهای گسسته و مدارات مجتمع (واحد پردازش مرکزی)
پیچیدگی طراحی پرداندهها همزمان با افزایش سریع فناوریهای متنوع که ساختارهای کوچکتر و قابل اطمینان تری را در وسایل الکترونیک باعث میشد، افزایش یافت. اولین موفقیت با ظهور اولین ترانزیستورها حاصل شد. پردازندههای ترانزیستوری در طول دهههای ۵۰ و ۶۰ میلادی زمان زیادی نبود که اختراع شده بود و این در حالی بود که آنها بسیار حجیم، غیر قابل اعتماد و دارای المانهای سوئیچینگ شکننده مانند لامپهای خلا و رلههای الکتریکی بودند. با چنین پیشرفتی پردازندههایی با پیچیدگی و قابلیت اعتماد بیشتری بر روی یک یا چندین برد مدار چاپی که شامل قسمتهای تفکیک شده بودند ساخته شدند.
ریزپردازندهها
پیدایش ریز پردازندهها در سال ۱۹۷۰ به طور قابل توجهی در طراحی و پیاده سازی پردازندهها تأثیر گذار بود. از زمان ابداع اولین ریزپردازنده (اینتل۴۰۰۴)در سال ۱۹۷۰ و اولین بهره برداری گسترده از ریزپردازنده اینتل ۸۰۸۰ در سال ۱۹۷۴، این روند رو به رشد ریزپردازندهها از دیگر روشهای پیاده سازی واحدهای پردازش مرکزی (CPU) پیشی گرفت، کارخانجات تولید ابر کامپیوترها و کامپیوترهای شخصی در آن زمان اقدام به تولید مدارات مجتمع با برنامه ریزی پیشرفته نمودند تا بتوانند معماری قدیمی کامپیوترهای خود را ارتقا دهند و در نهایت ریز پردازندهای سازگار با مجموعه دستورالعملها ی خود تولید کردند که با سختافزار و نرمافزارهای قدیمی نیز سازگار بودند. با دستیابی به چنین موفقیت بزرگی امروزه در تمامی کامپیوترهای شخصی CPUها منحصراً از ریز پردازندهها استفاده میکنند.
عملکرد ریزپردازندهها
کارکرد بنیادی بیشتر ریزپردازندهها علیرغم شکل فیزیکی که دارند، اجرای ترتیبی برنامههای ذخیره شده را موجب میشود. بحث در این مقوله نتیجه پیروی از قانون رایج نیومن را به همراه خواهد داشت. برنامه توسط یک سری از اعداد که در بخشی از حافظه ذخیره شدهاند نمایش داده میشود. چهار مرحله که تقریباً تمامی ریزپردازندههایی که از قانون فون نیومن در ساختارشان استفاده میکنند از آن پیروی میکنند عبارتاند از: فراخوانی، رمزگشایی، اجرا، بازگشت برای نوشتن مجدد.
طراحی و اجرا
مفهوم اساسی یک سی پی یو به صورت زیر است: در طراحی یک سی پی یو یک لیست از عملیات بنام مجموعهٔ دستوری بصورت ذاتی وجود دارد که سی پی یو آنها را انجام میدهد. چنین عملیاتی ممکن است شامل جمع کردن یا تفریق کردن دو عدد، مقایسهٔ اعداد یا پرش به بخشی دیگر از یک برنامه باشد. هرکدام از این عملیات پایهای توسط توالی خاصی از بیتها نمایش داده میشود که این توالی برای چنین عملیات خاصی اپکد نام دارد. فرستادن یک اپکد خاص به یک سی پی یو باعث میشود تا سی پی یو عملی را که توسط اپکد مذکور نمایش داده میشود انجام دهد. برای اجرای یک دستور در یک برنامهٔ کامپیوتری، سی پی یو از اپکد دستور مذکور و نیز نشانوندهای آن (برای مثال، در مورد یک عمل جمع، دو عددی که قرار است با همجمع شوند.) استفاده میکند. عمل ریاضی واقعی برای هر دستور توسط یک زیرواحد از سی پی یو به نام واحد محاسبه و منطق (ALU)انجام میگیرد. یک سی پی یو علاوه بر اینکه از ALU خودش برای انجام اعمال استفاده میکند، اعمال دیگری نظیر: خواندن دستور بعدی از حافظه، خواندن اطلاعات مشخص شده بصورت نشانوند از حافظه و نوشتن یافتههای حاصل در حافظه را نیز به عهده دارد. در بسیاری از طراحیهای سی پی یو، یک مجموعهٔ دستوری مشخصا بین اعمالی که اطلاعات را از حافظه بارگیری میکنند و اعمال ریاضی افتراق میدهد. در این مورد اطلاعات بارگیری شده از حافظه در رجیسترها ذخیره میشود و یک عمل ریاضیاتی هیچ گونه نشانوندی نمیگیرد بلکه بسادگی عمل محاسباتی مذکور را روی اطلاعات موجود در رجیسترها انجام داده و آن را در یک رجیستر جدید مینویسد.
دامنه صحیح
روشی که یک پردازنده از طریق آن اعداد را نمایش میدهد یک روش انتخابی در طراحی است که البته در بسیاری از راههای اصولی اثر گذار است. در برخی از کامپیوترهای دیجیتالی اخیر از یک مدل الکترونیکی بر پایه سیستم شمارش دسیمال (مبنای ده) برای نمایش اعداد استفاده شدهاست. برخی دیگر از کامپیوترها از یک سیستم نامتعارف شمارشی مانند سیستم سه تایی (مبنای سه) استفاده میکنند. در حال حاضر تمامی پردازندههای پیشرفته اعداد را به صورت دودویی (مبنای دو) نمایش میدهند که در آن هر عدد به وسیله چندین کمیت فیزیکی دو ارزشی مانند ولتاژ بالا و پایین نمایش داده میشوند.
علت نمایش دهی از طریق اعداد حجم کم و دقت بالا در اعدادی است که پردازشگر میتواند نمایش دهد. در حالت دودویی پردازندهها، یک بیت به یک مکان مشخص در پردازنده اطلاق میشود که پردازنده با آن به صورت مستقیم در ارتباط است. ارزش بیت (مکانهای شمارشی) یک پردازنده که برای نمایش اعداد بکار برده میشود «بزرگی کلمه»، «پهنای بیت»، «پهنای گذرگاه اطلاعات» و یا «رقم صحیح» نامیده میشود. که البته این اعداد گاهی در بین بخشهای مختلف پردازندههای کاملاً یکسان نیز متفاوت است. برای مثال یک پردازنده ۸ بیتی به محدودهای از اعداد دسترسی دارد که میتواند با هشت رقم دودویی (هر رقم دو مقدار میتواند داشته باشد) ۲ یا ۲۵۶ عدد گسسته نمایش داده شود. نتیجاتا مقدار صحیح اعداد باعث میشود که سختافزار در محدودهای از اعداد صحیح که قابل اجرا برای نرمافزار باشد محدود شود و بدین وسیله توسط پردازنده مورد بهره برداری قرار گیرد.
پالس ساعت
اکثر پردازندهها و در حقیقت اکثر دستگاههایی که با منطق پالسی و تناوبی کار میکنند به صورت طبیعی باید سنکرون یا همزمان باشند. این بدان معناست که آنها به منظور همزمان سازی سیگنالها طراحی و ساخته شدهاند. این سیگنالها به عنوان سیگنال ساعت (پالس ساعت) شناخته میشوند و معمولاً به صورت یک موج مربعی پریودیک (متناوب) میباشند. برای محاسبه بیشترین زمانی که سیگنال قادر به حرکت از قسمتهای مختلف مداری پردازندهاست، طراحان یک دوره تناوب مناسب برای پالس ساعت انتخاب میکنند. این دوره تناوب باید از مقدار زمانی که برای حرکت سیگنال یا انتشار سیگنال در بدترین شرایط ممکن صرف میشود بیشتر باشد. برای تنظیم دوره تناوب باید پردازندهها باید مطابق حساسیت به لبههای پایین رونده یا بالا رونده حرکت سیگنال در بدترین شرایط تاخیر طراحی و ساخته شوند. در واقع این حالت هم از چشم انداز طراحی و هم از نظر میزان اجزای تشکیل دهنده یک مزیت ویژه در ساده سازی پردازندهها محسوب میشود. اگرچه معایبی نیز دارد، از جمله اینکه پردازنده باید منتظر المانهای کندتر بماند، حتی اگر قسمتهایی از آن سریع عمل کنند. این محدودیت به مقدار زیادی توسط روشهای گوناگون افزایش قدرت موازی سازی (انجام کارها به صورت همزمان) پردازندهها قابل جبران است.پالش ساعت شامل یک لبه بالا روند و یک لبه پایین رونده است که این تغییر حالت با تغییر ولتاژ صورت میپذیرد.
موازی گرایی (پاراللیسم)
توصیفی که از عملکرد پایهای یک سی پی یو در بخش قبلی شد، ساده ترین فرمی است که یک سی پی یو میتواند داشته باشد. این نوع از سی پی یو که معمولاً آن را ساب اسکیلر مینامند، یک دستور را روی یک یا دو جزو اطلاعاتی، در یک زمان اجرا میکند. این فرایند موجب یک ناکارامدی ذاتی در سی پی یوهای ساب اسکیلر میشود. از آنجایی که فقط یک دستور در یک زمان اجرا میشود، کل سی پی یو باید منتظر بماند تا آن دستور کامل شود تا بتواند به دستور بعدی برود. در نتیجه سی پی یوهای ساب اسکیلر در موارد دستوری که بیش از یک پالس ساعت (چرخهٔ ساعتی) برای اجرا شدن کامل طول میکشند، معلق میماند. حتی اضافه کردن یک واحد اجرایی دیگر بهبود زیادی روی عملکرد ندارد، و در این حالت به جای اینکه یک مسیر معلق باشد، دو مسیر معلق میماند و تعداد ترانزیستورهای بلااستفاده افزایش مییابد. این طراحی، که در آن منابع اجرایی سی پی یو میتواند فقط یک دستور در یک زمان اجرا کند، قادر خواهد بود تا فقط احتمالاً به عملکردی در حد اسکیلر (یک دستور در یک clock) برسد. با این وجود عملکرد آن تقریباً همیشه ساب اسکیلر (کمتر از یک دستور در یک چرخه) است.
تلاش برای رسیدن به عملکردی در حد اسکیلر و یا بهتر از آن منجر به طیفی از روشهای طراحی شد که باعث میشود تا سی پی یو کمتر بصورت خطی و بیشتر به صورت موازی عمل کند. در هنگام استفاده از ترم پاراللیسم برای سی پی یوها، دو اصطلاح بطور کلی برای طبقه بندی این تکنیکهای طراحی استفاده میشود. پاراللیسم در سطح دستوری (ILP) که هدف آن افزایش سرعت اجرای دستورات در داخل یک سی پی یو است (یا به عبارتی افزایش استفاده از منابع اجرایی روی همان چیپ (on-die))، و پاراللیسم در سطح thread که هدف آن افزایش تعداد threadهایی است (بطور موثر برنامههای جداگانه) که یک سی پی یو میتواند بطور همزمان اجرا کند. هر روش با روش دیگر از نظر نحوهٔ اجرا و نیز تاثیر نسبی آنها در افزایش عملکرد سی پی یو برای یک برنامه متفاوت است.
پاراللیسم در سطح دستوری
یکی از ساده ترین شیوههای مورد استفاده برای انجام افزایش پاراللیسم این است که اولین مراحل fetching و decoding دستوری را پیش از اینکه اجرای دستور قبلی تمام شود، شروع کنیم. این روش ساده ترین فرم یک تکنیک بنام instruction pipelining است و در تقریباً تمام سی پی یوهای عمومی جدید استفاده میشود. پایپ لاینینگ، با شکستن مسیر دستوری و تبدیل ان به مراحل جداگانه، باعث میشود تا در هر زمان بیش از یک دستور اجرا شود. این جدا کردن را میتوان با خط مونتاژ مقایسه کرد که در آن یک دستور در هر مرحله کاملتر میشود تا اینکه کامل شود.
با این وجود pipelining ممکن است موقعیتی را بوجود آورد که در آن یافتههای عمل قبلی برای کامل کردن عمل بعدی لازم است. این وضعیت را معمولاً آشفتگی ناشی از وابستگی مینامند. برای جلوگیری از این وضعیت، باید توجه بیشتری شود تا در صورت رخ دادن این شرایط بخشی از خط تولید دستوری را به تاخیر اندازیم. بطور طبیعی براورده کردن این شرایط نیازمند مدارهایی اضافهاست، بنابراین پردازندههای pipelined پیچیده تر از انواع ساب اسکیلر هستند (البته نه خیلی چشمگیر). یک پردازندهٔ pipelined میتواند بسیار نزدیک به حد اسکیلر شود، در این شرایط تنها مانع موجود stallها (دستوری که بیش از یک چرخهٔ ساعتی در یک مرحله طول میکشد) هستند. ارتقاء بیشتر در مورد ایدهٔ instruction pipelining منجر به ایجاد روشی شدهاست که زمان خالی اجزای سی پی یو را حتی به میزان بیشتری کاهش میدهد. طراحیهایی که گفته میشود سوپراسکیلر هستند شامل یک خط ایجاد(pipeline) دستور طولانی و واحدهای اجرایی مشابه متعدد هستند. در یک خط ایجاد سوپرسکیلر دستورهای متعددی خوانده شده و به dispatcher (توزیع گر) میروند، توزیع گر تصمیم میگیرد که آیا دستورات مذکور میتوانند بطور موازی (همزمان) اجرا شوند یا نه. در صورتی که پاسخ مثبت باشد، دستورات مذکور به واحدهای اجرایی موجود ارسال (dispatch) میشوند. این کار باعث میشود تا چندین دستور به طور همزمان اجرا شوند. به طور کلی هرقدر یک سی پی یوی سوپرسکیلر بتواند دستورات بیشتری را بطور همزمان به واحدهای اجرایی در حال انتظار ارسال (dispatch) کند، دستورات بیشتری در یک سیکل مشخص اجرا میشوند.
بیشترین دشواری در طراحی یک معماری سوپرسکیلر سی پی یو مربوط به ساخت یک dispatcher موثر است. دیسپچر باید قادر باشد تا به سرعت و بدون اشتباه مشخص کند که آیا دستورات میتوانند بطور موازی اجرا شوند و آنها را به شیوهای ارسال (dispatch) کند تا بیشترین واحدهای اجرایی ممکن را از بیکاری خارج کند. این امر نیازمند این است که خط ایجاد دستوری حداکثر اوقات ممکن پر باشد و معماریهای سوپرسکیلر را نیازمند مقادیر چشمگیری از کش سی پی یو(cache) میکند. همچنین در این شرایط تکنیکهای پیشگیری از خطری نظیر پیش بینی شاخهای (branch prediction)، اجرای حدسی (speculative execution) و اجرای خارج از نوبت (out of order execution) برای حفظ سطوح بالای عملکرد ضروری هستند. با تلاش برای پیش بینی اینکه یک دستور شرطی کدام شاخه (یا مسیر) را انتخاب میکند، سی پی یو میتواند تعداد زمانهایی را که تمام خط تولید (pipeline) باید منتظر بماند تا یک دستور شرطی کامل شود به حداقل برساند. اجرای حدسی با اجرای بخشهایی از کد که ممکن است بعد از کامل شدن یک عمل شرطی نیاز نباشند، معمولاً موجب افزایش متوسط عملکرد میشود. اجرای خارج از نوبت ترتیبی را که دستورات اجرا میشوند تا حدی دوباره چینی میکند تا تاخیر ناشی از وابستگی اطلاعات را کاهش دهد. همچنین در موارد یک دستور -چند دیتا (Single Instructions Multiple Data) - زمانیکه اطلاعات زیادی از یک نوع باید پردازش شود، پردازندههای جدید میتوانند بخشهایی از خط ایجاد مذکور را غیر فعال کنند، در این حالت زمانیکه یک دستور چند بار اجرا میشود، سی پی یو میتواند از فازهای fetch و decode صرفه نظر کند و بنابراین در موقعیتهای خاصی (خصوصاً در موتورهای برنامهای بسیار مونوتون نظیر نرمافزار ایجاد ویدیو و پردازش عکس) به میزان زیادی عملکرد افزایش مییابد.
در مواردی که فقط بخشی از سی پی یو سوپرسکیلر است، بخشی که سوپرسکیلر نیست دچار جبران عملکردی ناشی از وقفههای زمانبندی میشود. Intel P5 Pentium (اینتل پنتیوم ۵)دو تا واحد محاسبه و منطق (ALU) سوپرسکیلر داشت که میتوانست یک دستور را به ازای یک clock بپذیرد اما FPUی آن نمیتوانست یک دستور را به ازای یک clock بپذیرد. بنابراین P۵ سوپرسکیلر از نوع integer است اما از نوع floating point (ممیز شناور) نیست. جانشین اینتل برای معماری P۵، نوع P۶ بود که قابلیتهای سوپرسکیلر را به ویژگیهای floating point آن اضافه میکرد و بنابراین موجب افزایش چشمگیری در عملکرد دستوری floating point میشد.
هم طراحی pipeline ساده و هم طراحی سوپر سکیلر موجب میشوند تا یک پردازندهٔ منفرد با سرعتی بیش از یک دستور به ازای یک چرخه (IPC) دستورات را اجرا کند و بدین وسیله ILP ی سی پی یو را افزایش میدهند. بیشتر طراحیهای جدید سی پی یو حداقل تا حدی سوپرسکیلر هستند و تقریباً تمام سی پی یوهای عمومی که در دههٔ اخیر طراحی شدهاند سوپرسکیلر هستند. در سالهای اخیر بخشی از تاکید در طراحی کامپیوترهای ILP بالا از حوزهٔ سخت افزاری سی پی یو خارج شده و در اینترفیس نرمافزاری، یا همان ISA متمرکز شدهاست. استراتژی کلمهٔ دستوری خیلی بلند (VLIW) موجب میشود تا بخشی از ILP بطور مستقیم توسط نرمافزار درگیر شود و بدین وسیله میزان کاری را که سی پی یو باید انجام دهد تا ILP را افزایش دهد (بوست کند) و پیچیدگی طراحی مذکور را کاهش دهد، کم میکند.
پاراللیسم در سطح thread
رویکرد دیگر برای دستیابی به عملکرد، اجرای چندین برنامه یا thread به صورت موازی است. در تقسیم بندی Flynn این رویکرد چندین دستور روی چندین دیتا (MIMD) نام دارد.
یک تکنولوژی که برای این هدف استفاده شد، تکنولوژی چند پردازشی (MP) نام دارد. چاشنی ابتدایی این نوع تکنولوژی چند پردازشی قرینه(SMP) نام داردکه در آن تعداد محدودی از سی پی یوها یک نمای منسجم از سیستم حافظهٔ خودشان را به اشتراک میگذارند. در این طرح ریزی هر سی پی یو سخت افزاری اضافی برای حفظ یک نمای دائماً بروز شده از حافظه دارد. با اجتناب از نماهای کهنه و مانده از سی پی یو، سی پی یوهای مذکور میتوانند روی یک برنامه همکاری کنند و برنامهها میتوانند از یک سی پی یو به دیگری مهاجرت کنند. طرح ریزیهایی نظیر دستیابی غیر همشکل به حافظه (NUMA) و پروتکلهای وابستهٔ مبتنی بر دایرکتوری در دههٔ ۱۹۹۰ ارائه شدند. سیستمهای SMP به تعداد کمی از سی پی یوها محدود میشوند در حالیکه سیستمهای NUMA با هزاران پردازنده موجود هستند. در ابتدای امر، چند پردازشی با استفاده از چندین سی پی یو و صفحهٔ مجزا برای برقراری ارتباط بین پردازندهها ساخته شد. هنگامیکه پردازندهها و ارتباطهای بین آنها تماماً روی یک تراشهٔ سیلیکون منفرد سوار شدند، تکنولوژی مذکور ریزپردازندهٔ چند هستهای نام گرفت.
بعدها مشخص شد که finer-grain parallelism با یک برنامهٔ منفرد ایجاد شد. یک برنامهٔ منفرد ممکن است چندین thread (یا عملکرد) داشته باشد که میتوانند بطور جداگانه یا موازی اجرا شوند. برخی از نمونههای ابتدایی این تکنولوژی، پردازش ورودی/خروجی نظیر دسترسی مستقیم به حافظه را بعنوان یک thread جداگانه از thread محاسبه بکار گرفتند. یک رویکرد عمومی تر به این تکنولوژی در دههٔ ۱۹۷۰ ارائه شد. در آن زمان سیستمها طوری طراحی شدند تا چندین thread محاسبهای را بطور موازی اجرا کنند. این تکنولوژی (MT)multithreading نام دارد. این رویکرد در مقایسه با چند پردازشی به صرفه تر است زیرا فقط تعداد کمی از اجزا در داخل یک سی پی یو به منظور پشتیبانی از MT تکرار میشوند در حالیکه در MP تمام سی پی یو تکرار میشود. در MT، واحدهای اجرایی و سیستم حافظه منجمله کشها در بین جندین thread به اشتراک گذارده میشوند. عیب MT این است که سخت افزاری که از مولتی ثردینگ پشتیبانی میکند در مقایسه با سخت افزاری که از MP پشتیبانی میکند برای نرمافزار قابل دیدن تر است و بنابراین نرمافزارهای ناظر نظیر سیستمهای عامل برای پشتیبانی از MT باید متحمل تغییرات بیشتری شوند. یک نوع از MT که بکار گرفته شد block multithreading نام دارد که در آن اجرای یک thread آغاز میشود و زمانیکه برای بازگشت اطلاعات از حافظهٔ خارجی باید منتظر بماند، دچار توقف عملکرد میشود. در این حالت سی پی یو بلافاصله به thread دیگر که آمادهٔ اجرا است سوویچ میکند. این سوویچ معمولاً در یک چرخهٔ کلاک از سی پی یو انجام میگیرد.اولترااسپارک (UltraSPARC) نمونهای از این تکنولوژی است. نوع دیگری از MT مولتی ثردینگ همزمان (simultaneous multithreading) نام دارد که در آن دستورات چندین thread بطور موازی در طی یک چرخهٔ کلاک از سی پی یو اجرا میشوند.
بمدت چندین دهه از ۱۹۷۰ تا ۲۰۰۰، در طراحی سی پی یوهای عمومی دارای عملکرد بالا به میزان زیادی روی دستیابی به ILP بالا از طریق تکنولوژیهایی مثل piplining، کشها، اجرای سوپراسکیلر، اجرای خارج از نوبت و... تاکید میشد. این رویه منجر به طراحی سی پی یوهای بزرگ و پر مصرفی نظیر اینتل پنتیوم ۴ شد. در دههٔ ۲۰۰۰، نابرابری روزافزون بین فرکانسهای عامل سی پی یو و فرکانسهای عامل حافظهٔ اصلی و نیز جدی تر شدن مسالهٔ محو تدریجی پاور سی پی یو (power) بعلت تکنیکهای ILP خیلی نامعمول تر موجب شد تا طراحان سی پی یو دیگر بدنبال افزایش عملکرد با استفاده از تکنیکهای ILP نباشند. پس از آن، طراحان سی پی یو ایدههایی را از بازارهای کامپیوتری تجاری نظیر پردازش دادوستدی که در آن مجموع عملکرد چندین برنامه (پردازش مربوط به کار انجام شده در یک بازهٔ زمانی) مهمتر از عملکرد یک thread یا برنامهاست، به عاریه گرفتند. این تغییر رویکرد میتوان در تکثیر طراحیهای CMP چند هستهای (چند پردازشی در سطح تراشه) و بطور قابل ذکر طراحیهای جدیدتر اینتل که مشابه معماری کمتر سوپرسکیلر P۶ بودند، مشاهده کرد. طراحیهای بعدی در چندین خانوادهٔ پردازنده، CMP را نشان دادند، از جمله x۸۶-۶۴ Opteron و Athlon 64 X۲، SPARC UltraSPARC T۱، IBM POWER۴ و POWER۵ و چندین سی پی یو ی کنسول بازی ویدیویی مشابه طراحی powerpc سه هستهای ایکس باکس ۳۶۰ و ریزپردازندههای سلولی ۷ هستهای ۷-core)) پلی استیشن ۳.
موازی گرایی (پاراللیسم) اطلاعات
یک الگوی غیر معمول اما بطور فزایندهای مهم از سی پی یوها (و در حقیقت، بطور کلی پردازش) مربوط به موازی گرایی اطلاعات است. پردازندههایی که قبلاً بحث شدند، تماماً انواعی از ابزارهای اسکیلر نامیده میشوند. همچنان که از نام آن پیداست، پردازندههای برداری (vector processors) با چندین قطعه از اطلاعات در زمینهٔ یک دستور سروکار دارند که با پردازندههای اسکیلر که با یک قطعه از اطلاعات برای هر دستور سروکار دارد، متفاوت است. در طبقه بندی Flynn، این دو نوع مواجه با اطلاعات بطور کلی و بترتیب SIMD (یک دستور برای چندین داده) و SISD (یک دستور برای یک داده) نامیده میشود. استفادهٔ مهم در ایجاد سی پی یوهایی که با بردارهایی از اطلاعات سرو کار دارند، در بهینه سازی اعمالی است که در آنها یک عمل (برای مثال یک جمع یا dot product)باید روی مجموعهٔ بزرگی از اطلاعات صورت گیرد. برخی از مثالهای کلاسیک این نوع از اعمال کاربردهای مولتی مدیا (تصاویر، ویدئو و صدا) و نیز بسیاری از انواع اعمال علمی و مهندسی هستند. در حالیکه یک سی پی یو ی اسکیلر باید تمام فرایند fetching، دکودینگ و اجرا ی هر دستور و مقدار را برای مجموعهای از اطلاعات انجام دهد، یک سی پی یو ی برداری میتواند یک عمل را روی مجموعهٔ نسبتاً بزرگی از اطلاعات با یک دستور انجام دهد. البته این امر تنها زمانی امکان پذیر است که کاربر مذکور نیازمند مراحل بسیاری است که یک عمل را روی مجموعهٔ بزرگی از دادهها اجرا میکند.
اکثر سی پی یوهای وکتور ابتدایی، نظیر Cray-۱ فقط مربوط به تحقیقات علمی و کاربردهای کریپتوگرافی بودند. با این وجود، هنگامیکه مولتی مدیاها به میزان زیادی به مدیای دیجیتال تغییر پیدا کردند، نیاز به برخی از اشکال SIMD در سی پی یوهای کاربرد-عمومی نیز برجسته شد. مدت کوتاهی بعد ازاینکه لحاظ شدن واحدهای اجرایی نقطهٔ شناور در سی پی یوهای کاربرد-عمومی شروع به معمول شدن کرد، اختصاصی شدن و بکارگیری واحدهای اجرایی SIMD نیز در سی پی یوهای کاربرد-عمومی شروع به ظهور کرد. برخی از این اختصاصیتهای SIMD ابتدایی نظیر Multimedia Acceleration eXtensions مربوط به HP و MMX اینتل فقط اینتگر بودند.
5:15 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 در برنامههای تعبیه شده و سیستمهای عامل؛ و بقیه برنامهها معمولاً برای نوشتن انواع دیگر برنامهها کاربرد دارند. روشهای مختلفی برای سنجش محبوبیت زبانها، هر یک متناسب یا یک ویژگی محوری متفاوت پیشنهاد شدهاست:
شمارش تعداد تبلیغات شغلی که از آن زبان نام میبرند.
تعداد کتابهای آموزشی و شرح دهندهٔ آن زبان که فروش رفتهاست.
تخمین تعداد خطوطی که در آن زبان نوشته شده اند- که ممکن است زبانهایی را که در جستجوها کمتر پیدا میشوند دست کم گرفته شوند.
شمارش ارجاعهای زبان(برای مثال، به اسم زبان) در موتورهای جستجوهای اینترنت.
طبقه بندیها هیچ برنامه غالبی برای دسته بندی زبانهای برنامه نویسی وجود ندارد. یک زبان مشخص معمولاً یک زبان اجدادی ندارد. زبانها معمولاً با ترکیب المانهای چند زبان پیشینه بوجود میآیند که هربار ایدههای جدید درگردشند. ایدههایی که در یک زبان ایجاد میشوند در یک خانواده از زبانهای مرتبط پخش میشوند، و سپس از بین خلاهای بین خانوادهها منتقل شده و در خانوادههای دیگر ظاهر میشوند.
این حقیقت که این دسته بندی ممکن است در راستای محورهای مختلف انجام شوند، این وظیفه را پیچیده تر میکند؛ برای مثال، جاوا هم یک زبان شیءگرا(چون به برنامه نویسی شیءگرا تشویق میکند) و زبان همزمان(چون ساختارهای داخلی برای اجرای چندین جریان موازی دارد) است. پایتون یک زبان اسکریپتی شیءگراست.
در نگاه کلی، زبانهای برنامه نویسی به مثالهای برنامه نویسی و یک دسته بندی بر اساس محدوده استفاده تقسیم میشوند. مثالها شامل برنامه نویسی رویهای، برنامه نویسی شیءگرا، برنامه نویسی کاربردی، وبرنامه نویسی منطقی؛ برخی زبانها ترکیب چند مثالند. یک زبان اسمبلی مثالی از یک مدل مستقیم متضمن معماری ماشین نیست. با توجه به هدف، زبانهای برنامه نویسی ممکن است همه منظوره باشند، زبانهای برنامه نویسی سیستمی، زبانهای اسکریپتی، زبانهای محدوده مشخص، زبانهای همزمان/ گسترده(و یا ترکیب اینها). برخی زبانهای همه منظوره تا حد زیادی برای اهداف آموزشی طراحی شدهاند.
یک زبان برنامه نویسی ممکن است با فاکتورهای غیر مرتبط به مثالهای برنامه نویسی دسته بندی شود. برای مثال، غالب زبانهای برنامه نویسی کلمات کلیدی زبان انگلیسی را استفاده میکنند، در حالیکه تعداد کمی این کار را نمیکنند. سایر زبانها ممکن است براساس داخلی بودن یا نبودن دسته بندی شوند.
زبان برنامه نویسی یک مکانیزم ساخت یافته برای تعریف دادهها، و عملیات یا تبدیلهایی که ممکن است بطور اتوماتیک روی آن داده انجام شوند، فراهم میکند. یک برنامه نویس از انتزاعات آماده در زبان استفاده میکند تا مفاهیم به کار رفته در محاسبات را بیان کند. این مفاهیم به عنوان یک مجموعه از سادهترین عناصر موجود بیان میشوند(مفاهیم ابتدایی نامیده میشوند).

زبانهای برنامه نویسی با غالب زبانهای انسانی تفاوتی دارد و آن این است که نیاز به بیان دقیق تر و کامل تری دارد. هنگام استفاده از زبانهای طبیعی برای ارتباط با دیگر انسانها، نویسندگان و گویندگان میتوانند مبهم باشند و اشتباهات کوچک داشته باشند، و همچنان انتظار داشته باشند که مخاطب آنها متوجه شده باشد. اگرچه، مجازا، رایانهها "دقیقاً آنچه که به آنها گفته شده را انجام میدهند." و نمیتوانند "بفهمند" که نویسنده دقیقاً چه کدی مد نظر نویسنده بودهاست] البته امروزه برنامههایی برای انجام این کار تولید شدهاند و تلاشهای بسیاری در این زمینه انجام شده ولی هنوز به نتیجهٔ رضایت بخشی نرسیده است[. ترکیب تعریف زبان، یک برنامه، و ورودی برنامه بطور کامل رفتار خروجی را به هنگام اجرای برنامه (در محدوده کنترل آن برنامه) مشخص میکند. برنامههای یک رایانه ممکن است در یک فرایند ناپیوسته بدون دخالت انسان اجرا شوند، یا یک کاربر ممکن است دستورات را در یک مرحله فعل و انفعال مفسر تایپ کند.در این حالت "دستور"ها همان برنامهها هستند، که اجرای آنها زنجیروار به هم مرتبطند.به زبانی که برای دستور دادن به برنامهای استفاده میشود، زبان اسکریپت میگویند. بسیاری از زبانها کنار گذاشته شدهاند، برای رفع نیازهای جدید جایگزین شدهاند، با برنامههای دیگر ترکیب شدهاند و در نهایت استعمال آنها متوقف شدهاست. با وجود اینکه تلاشهایی برای طراحی یک زبان رایانه" کامل" شدهاست که تمام اهداف را تحت پوشش قرار دهد، هیچ یک نتوانستند بطور کلی این جایگاه را پر کنند. نیاز به زبانهای رایانهای گسترده از گستردگی زمینههایی که زبانها استفاده میشوند، ناشی میشود:
محدوده برنامهها از متون بسیار کوچک نوشته شده توسط افراد عادی تا سیستمهای بسیار بزرگ نوشته شده توسط صدها برنامه نویس است
توانایی برنامه نویسها: از تازه کارهایی که بیش از هر چیز به سادگی نیاز دارند تا حرفهایهایی که با پیچیدگی قابل توجهی کنار میآیند.
برنامهها باید سرعت، اندازه و سادگی را بسته به سیستمها از ریزپردازندها تا ابر رایانهها متناسب نگه دارند.
برنامهها ممکن است یک بار نوشته شوند و تا نسلها تغییر نکنند، و یا ممکن است پیوسته اصلاح شوند.
در نهایت، برنامه نویسها ممکن است در علایق متفاوت باشند: آنها ممکن است به بیان مسائل با زبانی خاص خو گرفته باشند.
یک سیر رایج در گسترش زبانهای برنامه نویسی این است که قابلیت حل مسائلی با درجات انتزاعی بالاتری را اضافه کنند. زبانهای برنامه نویسی اولیه به سختافزار رایانه گره خورده بودند. همانطور که زبانهای برنامه نویسی جدید گسترش پیدا کردهاند، ویژگیهایی به برنامهها افزوده شده که به برنامه نویس اجازه دهد که ایدههایی که از ترجمه ساده به دستورات سختافزار دورتر هستند نیز استفاده کند. چون برنامه نویسها کمتر به پیچیدگی رایانه محدود شدهاند، برنامههای آنها میتواند محاسبات بیشتری با تلاش کمتر از سوی برنامه نویس انجام دهند. این به آنها این امکان را میدهد که کارایی بیشتردر واحد زمان داشته باشند. "پردازندههای زبان طبیعی" به عنوان راهی برای ازبین بردن نیاز به زبانهای اختصاصی برنامه نویسی پیشنهاد شدهاند. هرچند، این هدف دور است و فواید آن قابل بحث است. "ادسگر دیجسترا" موافق بود که استفاده از یک زبان رسمی برای جلوگیری از مقدمه سازی ساختارهای بی معنی واجب است، و زبان برنامه نویسی طبیعی را با عنوان "احمقانه" رد کرد، "آلن پرلیس" نیز مشابها این ایده را رد کرد. مطابق با متدولوژی نامتجانس استفاده شده توسط 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 در برنامههای تعبیه شده و سیستمهای عامل؛ و بقیه برنامهها معمولاً برای نوشتن انواع دیگر برنامهها کاربرد دارند. روشهای مختلفی برای سنجش محبوبیت زبانها، هر یک متناسب یا یک ویژگی محوری متفاوت پیشنهاد شدهاست:
شمارش تعداد تبلیغات شغلی که از آن زبان نام میبرند.
تعداد کتابهای آموزشی و شرح دهندهٔ آن زبان که فروش رفتهاست.
تخمین تعداد خطوطی که در آن زبان نوشته شده اند- که ممکن است زبانهایی را که در جستجوها کمتر پیدا میشوند دست کم گرفته شوند.
شمارش ارجاعهای زبان(برای مثال، به اسم زبان) در موتورهای جستجوهای اینترنت.
طبقه بندیها هیچ برنامه غالبی برای دسته بندی زبانهای برنامه نویسی وجود ندارد. یک زبان مشخص معمولاً یک زبان اجدادی ندارد. زبانها معمولاً با ترکیب المانهای چند زبان پیشینه بوجود میآیند که هربار ایدههای جدید درگردشند. ایدههایی که در یک زبان ایجاد میشوند در یک خانواده از زبانهای مرتبط پخش میشوند، و سپس از بین خلاهای بین خانوادهها منتقل شده و در خانوادههای دیگر ظاهر میشوند.
این حقیقت که این دسته بندی ممکن است در راستای محورهای مختلف انجام شوند، این وظیفه را پیچیده تر میکند؛ برای مثال، جاوا هم یک زبان شیءگرا(چون به برنامه نویسی شیءگرا تشویق میکند) و زبان همزمان(چون ساختارهای داخلی برای اجرای چندین جریان موازی دارد) است. پایتون یک زبان اسکریپتی شیءگراست.
در نگاه کلی، زبانهای برنامه نویسی به مثالهای برنامه نویسی و یک دسته بندی بر اساس محدوده استفاده تقسیم میشوند. مثالها شامل برنامه نویسی رویهای، برنامه نویسی شیءگرا، برنامه نویسی کاربردی، وبرنامه نویسی منطقی؛ برخی زبانها ترکیب چند مثالند. یک زبان اسمبلی مثالی از یک مدل مستقیم متضمن معماری ماشین نیست. با توجه به هدف، زبانهای برنامه نویسی ممکن است همه منظوره باشند، زبانهای برنامه نویسی سیستمی، زبانهای اسکریپتی، زبانهای محدوده مشخص، زبانهای همزمان/ گسترده(و یا ترکیب اینها). برخی زبانهای همه منظوره تا حد زیادی برای اهداف آموزشی طراحی شدهاند.
یک زبان برنامه نویسی ممکن است با فاکتورهای غیر مرتبط به مثالهای برنامه نویسی دسته بندی شود. برای مثال، غالب زبانهای برنامه نویسی کلمات کلیدی زبان انگلیسی را استفاده میکنند، در حالیکه تعداد کمی این کار را نمیکنند. سایر زبانها ممکن است براساس داخلی بودن یا نبودن دسته بندی شوند.