نرم افزار
نرم‌افزار

نرم‌افزار (به انگلیسی: Software) یا برنامه، مجموعه‌ای از دستورالعمل‌های دقیق و مرحله به مرحله است که هدف خاصی را دنبال می‌کنند.

ظاهراً، اولین بار جان توکی در سال ۱۹۵۸ این واژه را به‌این معنا به‌کار برده‌است. احتمالاً این واژه در مقابل سخت‌افزار (به انگلیسی: Hardware) به کار برده‌اند که بسیار پیش از پیدایش رایانه (به معنای اسباب و اشیاء) به‌کار می‌رفته‌است.






دو گروه کلی نرم‌افزارها

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

نرم‌افزار سیستم (به انگلیسی: System software)
نرم‌افزار کاربردی (به انگلیسی: Application software)

می‌توان گفت نرم‌افزارهای کاربردی، برنامه‌های مورد استفاده کاربرند و نرم‌افزارهای سیستمی، مدیریت رایانه را برعهده دارند. مهم‌ترین نرم‌افزار سیستم، سیستم‌عامل است.






سیستم عامل

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

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

از دیدگاه ساختاری (معماری) (architecture)، نرم‌افزارها به دسته‌های زیر تقسیم می‌شوند:

کاربر-بنیان یا Client Base
کارگزار-بنیان یا Server Base
کاربر کارگزار بنیان یا Client-Server Base

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






رقابت نرم‌افزاری

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




تعریف صنعتی

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

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






فهرست سخت‌افزارها

بُردِ مادر یا برد اصلی (مادربورد)
نمایشگر (مانیتور)
جعبه رایانه (کیس)
صفحه‌کلید (کیبورد)
موشواره (ماوس)
چاپگر (پرینتِر)
پویشگر (اسکنر)
واحد پردازش مرکزی (سی‌پی‌یو یا پردازنده)
فلاپی‌دیسک
دیسک سخت
مودم
دیسک‌گردان نوری (درایو نوری) (CD و DVD)
بلندگو
یو اس‌ بی
کارت صدا
کارت گرافیک
قلم نوری
هدفون (دوگوشی)
کارت تلویزیون و رادیو
دوربین (وب‌کم)
میکروفون
هدست






برنامه (رایانه)

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

برنامه‌های رایانه‌ای از تنوع زیادی برخوردارند. از جمله می‌توان به این موارد اشاره کرد:

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






ویروس رایانه‌ای
تعریف ویروس

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






تاریخچه

اولین تحقیق واقعی علمی و آکادمیک بر روی ویروس‌ها توسط فرد کوهن در سال 1983، با نام ویروس که توسط لِن آدلمن ابداع شده بود، انجام شد. بعضاً از کوهن به عنوان «پدر ویروس‌های کامپیوتری» نام برده می‌شود، اما واقعاً ویروس‌هایی بودند که قبل از شروع تحقیقات او تولید شده بودند. ویروس Elk Cloner نوشته شده توسط ریچ اسکرنتا در سال 1982 در گردش بود و ویروس‌های تولید شده توسط جو دلینگر نیز بین سال‌های 1981 تا 1983 ساخته شده بودند؛ که همه‌ی آن‌ها برای پلتفرم‌های Apple II بودند. برخی منابع یک نقص فنی در Arpanet را در سال 1980 به عنوان اولین ویروس ذکر می‌کنند، اما آن فقط یک کد قانونی و مجاز بود که اشتباه کار می‌کرد و تنها مسأله‌ای که ایجاد می‌کرد این بود که داده‌ها را در بسته‌های شبکه پخش می‌کرد. ویروس‌های گریگوری بنفورد، تنها به به داستان‌های علمی‌اش ختم نشد. او در سال 1969 ویروس‌های غیر مخرب‌ خود را در جایی که امروزه «آزمایشگاه ملی لیوِرمور لارنس» خوانده می‌شود و در Arpanet اولیه تولید و منتشر کرد.






میزبان ویروس

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

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

در ذیل فهرست پسوندهای رایج فایل‌های اجرایی ارائه شده است و اکثر نرم‌افزارهای ضد ویروس در حالت عادی (بدون تنظیمات خاص) این فایل‌ها را ویروس‌یابی می‌کنند (البته در برخی برنامه‌های ضد ویروس ممکن است برخی پسوندها حذف یا اضافه شوند) :

.com ، .exe ، .dll ، .ovl ، .bin ، .sys ، .dot ، .doc ، .vbe ، .vbs ، .hta ، .htm ، .scr ، .ocx ، .hlp ، .eml

بنابراین یکی از اصلی‌ترین میزبان‌های ویروس، فایل‌های اجرایی هستند. از طرف دیگر برخی ویروس‌ها نیز از سکتور راه‌انداز (Boot Sector) و جدول بخش‌بندی دیسک (Master Boot Record یا Partition Table) به عنوان میزبان استفاده می‌کنند. سکتور راه‌انداز واحد راه‌اندازی سیستم‌عامل است که در سکتور شماره صفر دیسکت فلاپی و یا درایوهای منطقی یک دیسک سخت قرار دارد و جدول بخش‌بندی شامل اطلاعات تقسیم‌بندی دیسک سخت می‌باشد که آن نیز در سکتور شماره صفر دیسک سخت قرار دارد. اینگونه ویروس‌ها با قرار گرفتن در یکی از این دو محل، هنگام راه‌اندازی کامپیوتر، اجرا شده و در حافظه سیستم مقیم می‌شوند و تا زمان خاموش کردن کامپیوتر و یا راه‌اندازی دوباره، همانجا مانده و فلاپی‌ها و یا دیسک‌های سخت دیگر را آلوده می‌کنند.






عملکرد ویروس

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

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

۲ - برخی از ویروس‌ها در حافظه کامپیوتر مقیم شده و از این طریق عملیات تکثیر خود را انجام می‌دهند. این عمل ممکن است به گونه‌ای باشد که جایی برای اجرای برنامه‌های دیگر نماند و یا باعث ایجاد تأخیر یا وقفه در حین عملیات سیستم اعم از اجرای برنامه‌ها و یا راه‌اندازی کامپیوتر گردد.

۳ - فرض کنید که شما یک ویروس بر روی کامپیوتر خود داشته باشید. بسیار احتمال دارد که این ویروس به صورت غیرعمدی به یک دوست، همکار یا مشتری منتقل شود که این امر ممکن است باعث از بین رفتن اعتماد آنها به شما و شرکت شما شود.

۴ - ویروس‌ها و برنامه‌های مخرب زیادی وجود دارند که اقدام به سرقت اطلاعات و کلمات عبور کاربر می‌نمایند. بعضی از اینگونه برنامه‌ها با مقیم شدن در حافظه از عباراتی که توسط شما تایپ می‌شود گزارش گرفته و پس از اتصال رایانه شما به اینترنت این اطلاعات را برای مقصد خاصی ارسال می‌کنند. گیرنده این اطلاعات می‌تواند به راحتی از آنها سوء استفاده‌های مختلفی نماید.

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

در مورد اثرات تخریبی ویروس‌هایی که آنها را به صورت عمدی انجام می‌دهند می‌توان به موارد زیر اشاره نمود:

تخریب یا حذف برنامه‌ها و اطلاعات بخش‌های مختلف دیسک‌ها.
فرمت کردن دیسک‌ها.
کد کردن اطلاعات و برنامه‌ها.
تخریب اطلاعات حافظه فلش ها.

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

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

تقسیم بندی ویروس‌ها بر اساس مقصد آلوده‌سازی:

۱ - ویروس‌های فایلی (File Viruses) : ویروس‌های فایلی، معمولاً فایل‌های اجرایی را آلوده می‌کنند. فایل‌های آلوده به این نوع از ویروس‌ها اغلب (اما نه همیشه) دارای پسوند .com یا .exe هستند.

۲ - ویروس‌های ماکرو (Macro Viruses) : ویروس‌های ماکرو، مستندات برنامه‌هایی را که از امکان ماکرونویسی پشتیبانی می‌نمایند (مانند MS Word ، MS Excel و...) آلوده می‌کنند. فایل‌های اینگونه برنامه‌ها اجرایی نیستند ولی درون آنها قسمت‌هایی اجرایی به نام «ماکرو» وجود دارد که می‌تواند میزبان مناسبی برای ویروس‌های ماکرو باشد.

۳ - ویروس‌های بوت و پارتیشن سکتوری (Boot Sector and Partition Table Viruses) : اینگونه ویروس‌ها سکتور راه‌انداز (Boot Sector) دیسک سخت و دیسکت فلاپی یا جدول بخش‌بندی دیسک‌های سخت را آلوده می‌کنند. با راه‌اندازی سیستم از روی دیسکی که به اینگونه ویروس‌ها آلوده شده است، ویروس در حافظه مقیم شده و متعاقباً دیسک‌هایی را که مورد دسترسی قرار گیرند، آلوده می‌کند.

۴ - ویروس‌های اسکریپتی (Script Viruses) : این ویروس‌ها که اسکریپت‌های نوشته شده به زبان‌های ویژوال بیسیک یا جاوا می‌باشند، تنها در کامپیوترهایی اجرا می‌شوند که بر روی آنها Internet Explorer یا هر مرورگر وب دیگری با توانایی اجرای اسکریپت‌ها، نصب شده باشد و فایل‌های با پسوند .html ، .htm ، .vbs ، .js ، .htt یا .asp را آلوده می‌کنند.

ویروس‌ها جدا از تقسیم‌بندی فوق، ممکن است در یک یا چند دسته از دسته‌های زیر نیز قرار بگیرند:

ویروس‌های مقیم در حافظه (Memory Resident Viruses) :

اینگونه ویروس‌ها با مقیم شدن در حافظه، هنگام دسترسی به فایل‌های دیگر، آنها را آلوده می‌کنند.

ویروس‌های مخفی‌کار (Stealth Viruses) :

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

ویروس‌های کدشده (Encrypting Viruses) :

این ویروس‌ها پس از هر بار آلوده‌سازی، با استفاده از شیوه‌های خود رمزی شکل ظاهری خود را تغییر می‌دهند.

ویروس‌های چندشکلی (Polymorphic Viruses) :

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

ویروس‌های فعال‌شونده بر اساس رویداد خاص(Triggered Event Viruses) :

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






نشانه‌های وجود ویروس

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

۱ - سیستم در هنگام راه‌اندازی قفل می‌کند و احتمالاً پیغام‌های غیرمعمول روی صفحه ظاهر می‌گردد.

۲ - هنگام اجرای برنامه‌ها پیغام کمبود حافظه ظاهر شده و برنامه اجرا نمی‌گردد.

۳ - در کارچاپگر اختلال ایجاد می‌شود یا بدون هیچگونه فرمان چاپی شروع به کار می‌کند.

۴ - امکان دسترسی به برخی از درایوها وجود ندارد.

۵ - هنگام اجرای فایل‌ها، پیغام File is Damaged یا File is Corrupted نمایش داده می‌شود.

۶ - هنگام اجرای یک فایل، کاراکترها و یا پیغام‌های غیرعادی روی صفحه نمایش ظاهر می‌گردد.

۷ - هنگام کار در محیط‌های گرافیکی، تصاویر به هم می‌ریزد.

۸ - اصوات غیرمعمول یا موزیک از بلندگوهای کامپیوتر پخش می‌شود.

۹ - سیستم هنگام اجرای یک برنامه قفل کرده و حتی گاهی فشردن کلیدهای Ctrl+Alt+Del نیز نمی‌تواند سیستم را دوباره راه‌اندازی کند.

۱۰ - اطلاعات بخشی از دیسک سخت و یا تمام آن بطور ناگهانی از بین می‌رود یا دیسک سخت ناخواسته فرمت می‌شود.

۱۱ - اندازه فایل‌های اجرایی افزایش می‌یابد.

۱۲ - خواص فایل‌های اجرایی تغییر می‌کند.

۱۳ - سرعت سیستم بطور نامحسوسی کاهش می‌یابد.

۱۴ - اطلاعات Setup کامپیوتر از بین می‌رود.

۱۵ - برنامه‌ها مراجعاتی به دیسکت انجام می‌دهند که قبلاً انجام نمی‌دادند.

۱۶ - کاهش فضای خالی دیسک بدون اینکه فایلی اضافه شده و یا به محتوای فایل‌ها افزوده شده باشد.

۱۷ - نرم‌افزارهای مقیم در حافظه با خطا اجرا شده یا اصلاً اجرا نمی‌شوند.

۱۸ - بعضی برنامه‌ها سعی در برقراری ارتباط با اینترنت را دارند.

۱۹ - هنگام کار با اینترنت مقدار ارسال و دریافت اطلاعات ناخواسته افزایش یافته و سرعت به شدت افت می‌کند.

۲۰ - نامه‌های الکترونیکی ناخواسته از روی سیستم ارسال شده و یا دریافت می‌گردد.





فناوری اطلاعات

فناوری اطلاعات (فا) (به انگلیسی: Information Technology یا IT)، همان طور که به‌وسیله انجمن فناوری اطلاعات آمریکا (ITAA‎) تعریف شده‌است، «به مطالعه، طراحی، توسعه، پیاده‌سازی، پشتیبانی یا مدیریت سیستم‌های اطلاعاتی مبتنی بر رایانه، خصوصا برنامه‌های نرم‌افزاری و سخت‌افزار رایانه می‌پردازد». به طور کوتاه، فناوری اطلاعات با مسائلی مانند استفاده از رایانه‌های الکترونیکی و نرم‌افزار سروکار دارد تا تبدیل، ذخیره، حفاظت، پردازش، انتقال و بازیابی اطلاعات به شکلی مطمئن و امن انجام پذیرد.

اخیرا تغییر اندکی در این عبارت داده می‌شود تا این اصطلاح به طور روشن دایره ارتباطات مخابراتی را نیز شامل گردد. بنابراین عده‌ای بیشتر مایلند تا عبارت «فناوری اطلاعات و ارتباطات» (فاوا) (Information and Communications Technology) یا به اختصار ICT را به کار برند.






عناصر کاملا اصلی

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

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

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






زمینه‌های IT

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






ابزارهای نرم‌افزاری مدیریت خدمات فناوری اطلاعات

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






فناوری اطلاعات در دانشگاه‌های ایران

در بیشتر کشورها این دانش در دانشگاه‌ها با عنوان رشته «فناوری اطلاعات» (Information Technology) شناخته می‌شود، در حالیکه در ایران بر اساس تصمیم سازمان آموزش عالی کشور عنوان «مهندسی فناوری اطلاعات» برای این رشته بکار برده می‌شود و رشته‌ای نیز تحت عنوان مهندسی فناوری اطلاعات و ارتباطات (ICT) به پیشنهاد وزارت ارتباطات و فناوری اطلاعات اخیراً در دانشگاههای ایران تدریس می‌شود همچنین رشته‌ای با عنوان فقط «فناوری اطلاعات» وجود ندارد. همچنین رشتهٔ میان‌رشته‌ای دیگری با عنوان رشته «مدیریت فناوری اطلاعات» در دانشگاه‌های ایران و دیگر کشورها وجود دارد که از ترکیب دو رشته "مدیریت" و «فناوری اطلاعات» به وجود آمده‌است. رشته مهندسی فناوری اطلاعات به چگونگی سازماندهی و ساماندهی داده‌ها می‌پردازد و رشته مدیریت فناوری اطلاعات به چگونگی تدوین سیستم و استفاده از داده‌ها می‌پردازد. هرکدام از این رشته‌ها دارای گرایش‌های ویژه خود هستند که در دانشگاه‌های ایران به شرح زیرند:

مهندسی فناوری اطلاعات:

تجارت الکترونیکی
سیستم‌های چندرسانه‌ای
مدیریت سیستم‌های اطلاعاتی
امنیت اطلاعات
شبکه‌های کامپیوتری






مهندسی فناوری اطلاعات (IT)

علم اطلاعات ودانش شناسی:

مدیریت اطلاعات
بازیابی اطلاعات ودانش
علم سنجی
اقتصاد و بازاریابی اطلاعات






مدیریت دانش

گرایش‌های رشته مدیریت فناوری اطلاعات:

مدیریت منابع اطلاعاتی
سیستم‌های اطلاعات پیشرفته
نظام کیفیت فراگیر
کسب و کار الکترونیک (کارشناسی ارشد)
مدیریت دانش (کارشناسی ارشد)
مدیریت رسانه (کارشناسی ارشد)






فناوری اطلاعات پزشکی (کاربرد فناوری اطلاعات در پزشکی)

گرایش‌های رشته مهندسی فناوری اطلاعات و ارتباطات:

مدیریت شبکه
دیتا و امنیت شبکه
ارتباطات سیار
مدیریت ارتباطات و فناوری اطلاعات
سیستمهای چند رسانه‌ای







دروس تخصصی مهندسی فناوری اطلاعات

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

مبانی فناوری اطلاعات
مهندسی فناوری اطلاعات
تجارت الکترونیکی
مدیریت و کنترل پروژه‌های فناوری اطلاعات
برنامه‌ریزی استراتژیک فناوری اطلاعات
آموزش الکترونیکی
محیط‌های چند رسانه‌ای
پروژه فناوری اطلاعات
کارآموزی IT
گرافیک کامپیوتری
ریاضی







فناوری اطلاعات در ایران

در ایران همیشه بحث بر سر متولی اصلی فناوری اطلاعات وجود داشت تا با تغییر نام وزارت پست و تلگراف و تلفن در سال ۱۳۸۲ به وزارت ارتباطات و فناوری اطلاعات و مهمتر از آن ایجاد معاونت فناوری اطلاعات وزارت ارتباطات، خود را متولی اصلی فناوری اطلاعات در کشور مطرح ساخت. از این سال به بعد توسعه همه‌جانبه‌ای در این وزارتخانه صورت گرفت تا شرکتها و مراکز متعددی زیر مجموعه آن تشکل یافتند و هر یک از آنها با توانمندیها و فعالیتهای بسیار، تحولات فراوانی را شکل داده و باعث گسترش وضع ارتباطی کشور در بخش‌های پست و مخابرات شدند. معاونت فناوری اطلاعات به منظور تدوین راهبردها، سیاستها، برنامه‌های بلند مدت و اهداف کیفی و کمی بخش توسعه فناوری اطلاعات و ارائه آن به شورای عالی فناوری اطلاعات معاونتی تحت عنوان معاونت فناوری اطلاعات در ساختار سازمانی وزارت ارتباطات و فناوری اطلاعات در نظر گرفته شد. و کم‌کم سازمانهایی مثل سازمان فناوری اطلاعات و ارتباطات زیرساخت نیز در این رابطه شکل گرفتند.





نظریه محاسبات

نظریهٔ محاسبات یا تئوری محاسبات (Theory of computation) زمینهٔ وسیعی است که امکان و کارآیی حل مسائل گوناگون به وسیلهٔ مدل‌های محاسباتی، با استفاده از الگوریتم‌ها را مورد مطالعه قرار می‌دهد.

این نظریه را به دو شاخهٔ عمده به‌صورت زیر تقسیم می‌کنند:

نظریهٔ محاسبه‌پذیری یا قابلیت محاسبه






نظریهٔ پیچیدگی

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






تاریخچه

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

یکی از اهداف مهم این پیشگامان، بررسی مسائلی مانند برنامه هیلبرت و قضایای گودل بود که در منطق و مبانی ریاضی مطرح شده بود.

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

از دیگر نتایج قابل توجه اثبات تمیز ناپذیری منطق مرتبه اول بود که توسط چرچ ثابت شد.

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

امروزه نظریهٔ محاسبه از شاخه‌های بنیادی در منطق ریاضی و علوم نظری کامپیوتر محسوب می‌شود و در مطالعهٔ مبانی ریاضی و همچنین تئوری الگوریتم‌ها و پیچیدگی محاسبه و بسیاری از مسائل تحقیقاتی در ریاضیات و علوم کامپیوتر نقش اساسی دارد.





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





رایانش خودمختار
رایانش خود مختار (به انگلیسی: Autonomic Computing) طرحی ابتکاری است که اولین بار توسط آی بی ام در سال ۲۰۰۱ آغاز شد. هدف نهایی آن ساخت سیستم‌های رایانه ای با قابلیت خود-مدیریتی است تابرپیچیدگی روزافزون مدیریت سیستم‌های رایانشی غلبه کنند و موانعی که بر اثراین پیچیدگیها برسرراه گسترش‌های آتی بوجود می آیندراکاهش دهند.به عبارت دیگر رایانش خودمختار اشاره به ویژگیهای خود-مدیریتی منابع رایانشی توزیع شده دارد. یک سیستم خودمختار خودش با استفاده از سیاستهای سطح بالا تصمیم گیری می کند؛ پیوسته وضعیت خود را بررسی و بهینه می‌کند و خود را با شرایط در حال تغییر تطبیق می دهد. چنانکه در بسیاری از رساله‌های علمی اشاره شده است یک چارچوب رایانش خود مختار را می توان به صورت ترکیبی از مولفه‌های خودمختار در تعامل با یکدیگر دانست. یک مولفه خود مختار را می توان ترکیبی از دو حلقه کنترل(محلی و سراسری)، حسگرها (برای نظارت بر خود) و تاثیرگذارها(برای تنظیم خود)، دانش و برنامه ریز/تطبیق دهنده برای بهره برداری از سیاستها برپایه آگاهی از خود و محیط دانست.





رایانش توزیع‌شده

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






مقدمه

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

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

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





رایانش مشبک

شبکه‌های گرید محاسباتی شبکه‌های محاسباتی گرید مجموعه‌ای از چندین سیستم با قدرت محاسباتی متفاوت می‌باشد که با متصل شدن این قدرت محاسباتی حاصل یک ابر رایانهٔ مجازی شکل می‌گیرید که با استفاده از آن می‌توان بسیاری از محاسبات پیچیدهٔ ریاضی، نجوم، زیست و... را در زمان بسیار کمی انجام داد. شعار شبکه‌های محاسباتی نادیده گرفتن نگرانی‌های ناشی از محدودیت سخت‌افزاری سیستم‌های کامپیوتری می‌باشد. در شبکه‌های محاسباتی یا همان Grid computing منابع (منظور منابع فیزیکی) بین چندین کاربر موجود در شبکه مشترک هستند. هر کاربر، بصورت همزمان با دیگر کاربران درخواست‌هایش را ارائه می‌کند، از این رو پروسه‌ها از چندین کاربر وارد می‌شود که این کارها از هم مستقل و هر درخواست با درخواست دیگر متفاوت است. معمولاً بخش مدیریت منابع (Resource management) با محاسبات متفاوت، سرعت و اندازه‌های مختلف کارها را دریافت می‌کند، سپس این پروسه‌های ورودی را به گره‌های محاسباتی(Nodes Computational) موجود در شبکه اختصاص می‌دهد.

دانشجویان دانشگاه‌ها و محققین در این حوزه بدلیل هزینه زیاد برپایی یک شبکهٔ محاسباتی برای انجام آزمایشات خود ناچار به استفاده از نرم‌افزارهای شبیه‌سازی می‌شوند. از مهمترین نرم‌افزارهای شبیه‌سازی گرید می‌توان به Grid sim اشاره کرد، در Grid sim ما با خصوصیات و ومعماری ابزارهای شبیه‌سازی Grid سرو کار داریم. Grid simیک toolkit یا جعبه ابزار برای مدلسازی منابع و شبیه‌سازی اتصال شبکه با پیکر بندی‌های مختلف است. اجزاء این شبیه‌ساز یک APIjava و بخشی از پروژه grid bus هست. Grid sim toolkit قادر است گروه هاو دسته‌های مختلفی از منابع ناهمگن، کاربران، برنامه‌های کاربردی، و زمانبندها را شبیه‌سازی کند.







انواع گرید

گریدها شبه به هم نیستند واندازه و شکل متفاوتی دارند، در ادامه سه تقسیم بندی یا کلاس Gridهای فعلی را که رایانه‌های فردی را تبدیل به یک مزرعهٔ ابر رایانه با هزاران پردازنده کرده فهرست شده است:

- گرید خوشه‌ای(cluster) که ساده ترین نوع این سیستم هستند از مجموعه‌ای از رایانه‌ها که با هم کار می‌کنند تشکیل شده‌اند ویک نقطه دسترسی به سیستم برای کاربران یک پروژه یا بخش سازمانی خاص ایجاد می‌کنند.

- گرید پردیزه (campus) به پروژه‌ها و بخش‌های سازمانی متعدد اجازه می‌دهد که منابع رایانه‌ای خود رابا هم به اشتراک گذارند. سازمان‌ها می‌توانند از این نوع سیستم برای مدیریت کارهای زیاد از فرایندهای تجاری سازمان تا داده کاوی استفاده کنند.

- گرید جهانی(global) مجموعه‌ای از چندین گرید پردیزه می‌باشند که پا بر فراز مرزهای سازمانی گذاشته‌اند و یک سیستم مجازی بسیار بزرگ را ایجاد کرده‌اند. کاربران می‌توانند به منابع رایانه‌ای بیش از آنچه که در سازمان دارند دسترسی داشته باشند





رایانش موازی

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






تعریف

یک سیستم محاسبات موازی رایانه ایست با بیش از یک پردازنده که برای پردازش موازی استفاده می‌شود. در گذشته، در یک سیستم چندپردازنده هر پردازنده در یک بسته‌بندی جداگانه قرار داشت، اما امروزه با معرفی تراشه‌های چندهسته‌ای، چندین پردازنده در کنار یکدیگر در یک بسته قرار می‌گیرند. در حال حاضر انواع بسیار گوناگونی از رایانه‌های موازی وجود دارند که بر اساس نوع اتصالات بین پردازنده‌ها و حافظه از یکدیگر متمایز می‌شوند. رده بندی Flynn که یکی از پذیرفته‌شده‌ترین رده‌بندی‌ها برای رایانه‌های موازی است، رایانه‌های موازی را بر این اساس طبقه‌بندی می‌کند که آیا شامل پردازنده‌هایی هستند که همگی هم‌زمان یک دستور یکسان را روی داده‌های متفاوتی اجرا می‌کنند (یک دستور چند داده SIMD: Single Instruction Multiple Data) و یا هر پردازنده دستور متفاوتی را روی داده‌هایی متفاوت اجرا می‌کند (چند دستور چند داده MIMD: Multiple Instruction Multiple Data).






پرداش موازی

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

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





رایانش ابری

رایانش ابری (به انگلیسی: Cloud Computing) مدل رایانشی بر پایهٔ شبکه‌های رایانه‌ای مانند اینترنت است که الگویی تازه برای عرضه، مصرف و تحویل خدمات رایانشی (شامل زیرساخت، نرم‌افزار، بستر، و سایر منابع رایانشی) با به کارگیری شبکه ارائه می‌کند "رایانش ابری" از ترکیب دو کلمه رایانش و ابر ایجاد شده است. ابر در اینجا استعاره از شبکه یا شبکه‌ای از شبکه‌های وسیع ماننداینترنت است که کاربر معمولی از پشت صحنه و آنچه در پی آن اتفاق می‌افتد اطلاع دقیقی ندارد (مانند داخل ابر) در نمودارهای شبکه‌های رایانه‌ای نیز از شکل ابر برای نشان دادن شبکهٔ اینترنت استفاده می‌شود. دلیل تشبیه اینترنت به ابر در این است که اینترنت همچون ابر جزئیات فنی‌اش را از دید کاربران پنهان می‌سازد و لایه‌ای از انتزاع را بین این جزئیات فنی و کاربران به وجود می‌آورد. به عنوان مثال آنچه یک ارائه‌دهندهٔ خدمت نرم‌افزاری رایانش ابری ارائه می‌کند، برنامه‌های کاربردی تجاری برخط است که از طریق مرورگر وب یا نرم‌افزارهای دیگر به کاربران ارائه می‌شود. نرم‌افزارهای کاربردی و اطلاعات، روی سرورها ذخیره می‌گردند و براساس تقاضا در اختیار کاربران قرار می‌گیرد. جزئیات از دید کاربر مخفی می‌مانند و کاربران نیازی به تخصص یا کنترل در مورد فناوری زیرساخت ابری که از آن استفاده می‌کنند ندارند. . رایانش ترجمه کلمه " Computing" است که در بعضی متون به جای رایانش از محاسبات و پردازش استفاده شده است. البته محاسبات و پردازش معادل کاملی از این کلمه نیست. زیرا بر اساس تعریف واژه نامه‌های معتبر مانند آکسفورد، لانگمن این واژه به معنای استفاده از رایانه و عملیات رایانه‌ها یا اموری است که یک رایانه انجام می‌دهد و محاسبه و پردازش تنها یکی از این امور است. به طور نمونه یک رایانه همانطور که برای اجرای فرامین به محاسبه و پردازش می‌پردازد، به همین ترتیب مدارک و فایل‌ها را در هارد دیسک یا صفحه سخت خود ذخیره می‌کند، امکان ایجاد ارتباط میان افراد را فرآهم می‌آورد که این امور چیزی بیش از یک محاسبه و پردازش صرف است. به علاوه در معنای علوم رایانه معادل‌های دیگری برای کلمات “محاسبه” و “پردازش”وجود دارند، مانند” calculation” و” processing ”، که عدم تمایز این کلمات با یکدیگر می‌تواند منشاء اشتباه در درک این مفاهیم شود.. رایانش ابری راهکارهایی برای ارائهٔ خدمات فناوری اطلاعات به شیوه‌های مشابه با صنایع همگانی (آب، برق، تلفن و ...) پیشنهاد می‌کند. این بدین معنی است که دسترسی به منابع فناوری اطلاعات در زمان تقاضا و بر اساس میزان تقاضای کاربر به گونه‌ای انعطاف‌پذیر و مقیاس‌پذیر از راه اینترنت به کاربر تحویل داده می‌شود. همانطور که کاربر تنها هزینه برق یا آب مصرفی خود را می‌پردازد. در صورت استفاده از رایانش ابری نیز کاربر تنها هزینه خدمات رایانشی مورد استفاده خود (اگر هزینه از کاربر دریافت شود) را پرداخت خواهد کرد.

رایانش ابری را گروهی تغییر الگوواره‌ای می‌دانند که دنباله‌روی تغییری است که در اوایل دهه ۱۹۸۰ از مدل رایانه بزرگ به مدل کارخواه-کارساز صورت گرفت.






تعریف

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

«رایانش ابری مدلی است برای فراهم کردن دسترسی آسان بر اساس تقاضای کاربر از طریق شبکه به مجموعه‌ای از منابع رایانشی قابل تغییر و پیکربندی (مثل: شبکه‌ها، سرورها، فضای ذخیره‌سازی، برنامه‌های کاربردی و سرویس‌ها) که این دسترسی بتواند با کمترین نیاز به مدیریت منابع و یا نیاز به دخالت مستقیم فراهم‌کننده سرویس به سرعت فراهم شده یا آزاد (رها) گردد.»

عموماً مصرف کننده‌های رایانش ابری مالک زیر ساخت فیزیکی ابر نیستند، بلکه برای اجتناب از هزینه سرمایه‌ای آن را از عرضه کنندگان شخص ثالث اجاره می‌کنند. آنها منابع را در قالب سرویس مصرف می‌کنند و تنها بهای منابعی که به کار می‌برند را می‌پردازند. بسیاری از سرویسهای رایانش ابری ارائه شده، با به کار گیری مدل رایانش همگانی امکان مصرف این سرویسها را به گونه‌ای مشابه با صنایع همگانی (مانند برق) فراهم می‌سازند. این در حالی است که سایر گونه‌های عرضه کنندگان بر مبنای اشتراک سرویسهای خود را عرضه می‌کنند. به اشتراک گذاردن قدرت رایانشی «مصرف شدنی و ناملموس» میان چند مستاجر می‌تواند باعث بهبود نرخ بهره‌وری شود؛ زیرا با این شیوه دیگر کارساز (سرور)ها بدون دلیل بیکار نمی‌مانند (که سبب می‌شود هزینه‌ها به میزان قابل توجهی کاهش یابند در عین حال که سرعت تولید و توسعه برنامه‌های کاربردی افزایش می‌یابد). یک اثر جانبی این شیوه این است که رایانه‌ها به میزان بیشتری مورد استفاده قرار می‌گیرند زیرا مشتریان رایانش ابری نیازی به محاسبه و تعیین حداکثری برای بار حداکثر (Peak Load) خود ندارند.






مقایسه با مدل‌های دیگر رایانش

رایانش ابری اگرچه برخی از ویژگیهایش را از مدل‌های رایانشی دیگر به ارث می‌برد؛ اما خود متفاوت از آنهاست. برخی از این مدل‌ها عبارتند از:

رایانش شبکه‌ای -«شکلی از رایانش توزیع شده و رایانش موازی که در آن یک رایانه مجازی بزرگ از رایانه‌هایی تشکیل شده‌است که با جفتگری ضعیف به هم شبکه شده‌اند و با هماهنگی با یکدیگر کار می‌کنند تا وظایف سنگین را به انجام برسانند».
رایانش خودمختار - «سامانه‌های رایانه‌ای با قابلیت خود-مدیریت».
مدل مشتری/سرور - رایانش مشتری/سرور به صورت گسترده به هر برنامه کاربردی توزیع یافته ای گفته می‌شود که بین ارائه دهنده سرویس (سرور) و درخواست کننده سرویس (مشتری) تمایز قایل می‌شود.
رایانه بزرگ - رایانه‌های قدرتمند توسط سازمانهای بزرگ برای کاربردهای بحرانی بکار برده می‌شوند. این کاربردها نوعاً شامل پردازش حجم زیاد داده می‌باشد. به طور نمونه می‌توان از سرشماری، آمار مصرف کننده و صنعت، برنامه‌ریزی منابع سازمانی(ERP) و پردازش تراکنشهای مالی نام برد.
رایانش همگانی - «عبارت است از بسته بندی منابع رایانشی مانند منابع محاسباتی و دخیره سازی، در قالب سرویس‌های قابل اندازه‌گیری، به گونه‌ای مشابه با صنایع همگانی (آب، برق، تلفن و ...)؛
نظیر به نظیر - گونه‌ای از معماری توزیع شده بدون هماهنگی مرکزی است که در آن شرکت کنندگان می‌توانند در آن واحد عرضه کننده و نیز مصرف کننده منابع باشند. (بر خلاف مدل کارخواه-کارساز سنتی)







تاریخچه

پیدایش مفاهیم اساسی رایانش ابری به دهه ۱۹۶۰ بازمی گردد. زمانی که جان مک کارتی اظهار داشت که «رایانش ممکن است روزی به عنوان یکی از صنایع همگانی سازماندهی شود». تقریباً تمام ویژگیهای امروز رایانش ابری (تدارک الاستیک، ارائه به صورت یک صنعت همگانی، برخط بودن و توهم دسترسی به عرضه نامحدود) به همراه مقایسه با صنعت برق و شکل‌های مصرف عمومی وخصوصی و دولتی وانجمنی را پارک هیل داگلاس در کتابی که با عنوان «مشکل صنعت همگانی رایانه» در سال ۱۹۶۶ مورد بررسی قرار داد. واژهٔ ابر در واقع بر گرفته از صنعت تلفن است به این گونه که کمپانیهای ارتباطات راه دور که تا دهه ۱۹۹۰ تنها خطوط نقطه به نقطهٔ اختصاصی ارائه می‌کردند، شروع به ارائه شبکه‌های خصوصی مجازی با کیفیتی مشابه و قیمتهای کمتر نمودند. نماد ابر برای نمایش نقطه مرزی بین بخشهایی که در حیطه مسئولیت کاربرند و آنهایی که در حیطه مسئولیت عرضه کننده بکار گرفته می‌شد. رایانش ابری مفهوم ابر را به گونه‌ای گسترش می‌دهد که سرورها را نیز علاوه برزیر ساخت‌های شبکه در بر گیرد.

سایت آمازون با مدرن سازی مرکز داده خود نقش مهمی در گسترش رایانش ابری ایفا کرد. بعد از حباب دات-کام آنها دریافتند که با تغییر مرکز داده‌های خود - که ماننداغلب شبکه‌های رایانه‌ای در بیشتر اوقات تنها از ۱۰٪ ظرفیت آن استفاده می‌شدو مابقی ظرفیت برای دوره‌های کوتاه اوج مصرف در نظر گرفته شده بود - به معماری ابر می‌توانند بازده داخلی خود را بهبود بخشند. آمازون از سال ۲۰۰۶ امکان دسترسی به سامانه خود از طریق وب سرویسهای آمازون را بر پایه رایانش همگانی ارائه کرد. در سال ۲۰۰۷، گوگل و آی بی ام به همراه چند دانشگاه پروژه‌ای تحقیقاتی در مقیاسی بزرگ را در زمینه رایانش ابری آغاز نمودند.

در اواسط سال ۲۰۰۸ شرکت گارتنر متوجه وجود موقعیتی در رایانش ابری شد که برای «شکل دهی ارتباط بین مصرف کنندگان خدمات فناوری اطلاعات، بین آنهایی که این سرویسها را مصرف می‌کنند و آنها که این سرویسها را می‌فروشند» بوجود می‌آید.






اقتصاد رایانش ابری

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

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

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






ساختار مدل
معماری

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

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

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






برنامه‌های کاربردی

سرویس‌های برنامه کاربردی ابری یا «نرم‌افزار به عنوان سرویس»(SaaS)، نرم‌افزار را به صورت سرویس روی اینترنت تحویل می‌دهند و بدین وسیله نیاز به نصب نرم‌افزار روی رایانه‌های مشتریان را ازبین می‌برند و نگهداری و پشتیبانی را ساده تر می‌سازد. ویژگیهای اصلی این سرویسها عبارتند از:




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





بستر

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






زیرساخت

سرویس‌های زیرساخت ابری یا «زیرساخت به عنوان سرویس»(IaaS) زیرساخت رایانه‌ای را که عموماً یک بستر مجازی است را به صورت سرویس ارائه می‌دهند. کاربران به جای خرید سخت‌افزار و نرم‌افزار و فضای مرکز داده (دیتا سنتر) ویا تجهیزات شبکه، همهٔ این زیر ساخت‌ها را به صورت یک سرویس کاملاً برونسپاری(Outsource) شده می‌خرند. صورتحساب سرویس معمولاً بر اساس مدل رایانش همگانی (Utility Computing) و میزان منابع مصرف شده صادر می‌شود و بنابر این هزینه منعکس کننده میزان فعالیت است. این شیوه در واقع تکامل یافته مدل عرضه سرورهای خصوصی مجازی است.
page1 - page2 - page3 - page4 - page5 - page7 - page8 - | 9:40 am
جاوااسکریپت (به انگلیسی: JavaScript) زبان برنامه نویسی اسکریپت مبتی بر اشیاء است که توسط NetScape تولید شده‌است. این زبان، یک زبان شی‌گرااست که بر اساس استاندارد ECMA-262 Edition 3 نوشته شده‌است.
علیرغم اشتباه عمومی، زبان جاوا اسکریت با زبان جاوا ارتباطی ندارد، اگر چه ساختار این زبان به سی پلاس پلاس(++C) و جاوا شباهت دارد؛ که این امر برای یادگیری آسان در نظر گرفته شده‌است. از همینرو دستورهای متداول مانند if, for, try..catch ,"while" و... در این زبان هم یافت می‌گردند.
این زبان می‌تواند هم به صورت ساخت یافته و هم به صورت شی گرا مورد استفاده قرار گیرد. در این زبان اشیاء با اضافه شدن متدها و خصوصیات پویا به اشیاء خالی ساخته می‌شوند، بر خلاف جاوا. بعد از ساخته شدن یک شی به روش فوق، این شی می‌تواند به عنوان نمونه‌ای برای ساخته شدن اشیاء مشابه مورد استفاده قرار گیرد.
به علت این قابلیت زبان جاوااسکریپت برای ساختن نمونه از سیستم مناسب می‌باشد.
کاربرد گسترده این زبان در سایتها و صفحات اینترنی می‌باشد و به کمک این زبان می‌توان به اشیاء داخل صفحات HTML دسترسی پیدا کرد و آنها را تغییر داد. به همین علت برای پویا نمایی در سمت کاربر، از این زبان استفاده می‌شود.





جاوا اسکریپت را در ابتدا شخصی به نام برندان ایچ در شرکت Netscape با نام Mocha طراحی نمود. این نام بعدا به LiveScript و نهایتا به جاوا اسکریپت تغییر یافت.این تغییر نام تقریبا با افزوده شدن پشتیبانی از جاوا در مرورگر وب Netscape Navigator همزمانی دارد. اولین نسخهٔ جاوا اسکریپت در نسخه 2.0B3 این مرورگر در دسامبر ۱۹۹۵ معرفی و عرضه شد. این نام گذاری منجر به سردرگمی‌های زیادی شده و این ابهام را ایجاد می‌کند که جاوا اسکریپت با جاوا مرتبط است در حالی که این طور نیست. عدهٔ زیادی این کار را یک ترفند تجاری برای به دست آوردن بخشی از بازار جاوا که در آن موقع زبان جدید مطرح برای برنامه نویسی تحت وب بود می‌دانند.

به دلیل موفقیت عمدهٔ جاوا اسکریپت در نقش زبان نویسه‌ای سمت کارخواه (client side scripting language) برای صفحات وب، مایکروسافت یک نسخه سازگار از این زبان را ایجاد کرد و به علت مشکلات حقوقی آن را Jscript نامید. این زبان در نسخه ۳٫۰ از مرورگر اینترنت اکسپلورر و در آگوست ۱۹۹۶ داده شد. تفاوت‌های این دو زبان به حدی جزیی است که اغلب Jscript و جاوا اسکریپت به جای هم به کار می‌روند. هرچند که مایکروسافت در اینجا چند ده دلیل برای تفاوت Jscript با استاندارد ECMA مطرح می‌کند.

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


زبان امری و ساخت یافته
جاوا اسکریپت از تمامی نحو ساختاری زبان C پشتیبانی می‌کند. مانند گزاره (if و switch و حلقه‌های while و...) یک مورد استثنا تعیین حوزهٔ متغیرهاست: تعریف حوزه در حد block در جاوا اسکریپت وجود ندارد. هر چند جاوا اسکریپت ۱٫۷ با کلمهٔ کلیدی let این نوع حوزه دهی را امکان پذیر می‌سازد. مانند c در جاوا اسکریپت بین عبارت و گزاره تفاوت وجود دارد.

پویایی
؛ تایپ دهی پویا: مانند اکثر زبان‌های نویسه‌ای تایپ به مقدارها منسوب می‌گردد و نه به متغیرها. برای مثال متغیر x ممکن است به یک عدد وابسته سازی شود، و بعداً به یک رشته. جاوا اسکریپت برای تعیین تایپ شی راه‌های مختلفی از جمله تایپ دهی اردکی (duck typing) را دارد.

؛ تایپ دهی ضعیف: زبان جاوا اسکریپت از نظر تایپ دهی ضعیف به شمار می‌آید و در آن نتیجهٔ عملیاتی مانند ۵ + “۳۷”، عبارت “۵۳۷” خواهد بود. (عدد را با رشته جمع کرده‌است)

؛ اشیا به دید آرایه‌های انتسابی: جاوا اسکیرپت تقریبا تماما بر اساس اشیا است. اشیا، آرایه‌های انتسابی به همراه یک «ساختار شماتیک» هستند. نام ویژگی اشیا، کلیدهای آرایه انتسابی هستند و درواقع obj.x = ۱۰ با obj[“x”] = ۱۰ هم ارز هستند و شیوه نگارش با نقطه صرفا یک سهولت نحوی است. ویژگی‌ها و مقدارهایشان در زمان اجرا قابلیت تغییر اضافه و حذف دارند. همچنین می‌توان روی ویژگیهای یک شی با ساختار for … in پیمایش کرد.

؛ ارزیابی در زمان اجرا: جاوااسکریپا یک تابع eval دارد که قادر است گزاره‌های تولید شده در یک رشته در زمان اجرا را، اجرا کند.

تابعی بودن: توابع موجوداتی «درجه اول» محسوب می‌شوند، یعنی خود یک شی هستند. بنابراین می‌توانند ویژگی داشته باشند، در آرگومان‌های تابع‌ها داده شوند و مانند هر شی دیگری با آن‌ها رفتار شود

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


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


توابع در نقش سازندهٔ اشیا
برای توابع علاوه بر نقش عادی، به عنوان سازنده ی اشیا هم عمل می‌کنند. آوردن یک new قبل فراخوانی تابع، آن را با کلمهٔ کلیدی this وابسته سازی شده به شی جدید اجرا می‌کند. ویژگی prototype از تابع مورد نظر، ساختار شماتیک شی جدید را مشخص می‌کند.

؛ توابع در نقش متد: بر خلاف بیشتر زبان‌های شی گرا تفاوتی میان تعریف تابع و متد وجود ندارد. بلکه تفاوت در زمان فراخوانی تابع است، زمانی که یک تابع به عنوان متد یک شی فراخوانده می‌شود کلمهٔ کلیدی this محلی آن تابع به شی مورد نظر وابسته سازی می‌شود.


جاوا اسکریپت برای تامین اشیا و متدها که با آن‌ها تعامل کند به یک محیط اجرایی (مانند مرورگر وب) نیاز دارد تا بتواند به این ترتیب با دنیای خارج ارتباط برقرار کند. همچنین برای دسترسی به سایر نویسه‌ها (include) هم به این محیط نیازمند است (مانند تگ <script>در HTML). (البته این یک ویژگی زبانی نیست اما در عمل اغلب این طور پیاده سازی شده‌است)

؛ تعداد متغیر پارامتر (variadic): تعداد نامعینی پارامتر را می‌توان به یک تابع ارسال نمود. تابع می‌تواند هم از طریق پارامترهای رسمی و هم از طریق شی محلی arguments به آن‌ها دسترسی داشته باشد.

Literalهای آرایه و شی

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

عبارات منظم

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


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

تعریف نشده: این تایپ فقط یک مقدار با نام undefined دارد و متعلق به تمام متغییرهای مقدار دهی نشده‌است

نوع تهی: نوع تهی هم فقط یک مقدار دارد با نام null

نوع دودویی: نمایندهٔ یک مقدار منطقی است و دو مقدار true و false را می‌پذیرد.

نوع رشته: در بر گیرندهٔ تمام رشته‌های متناهی از ۰ یا بیشتر عنصر ۱۶ بیتی بدون علامت است. این عناصر با اندیس‌های نامنفی قابل دسترسی هستند. طول رشته تعداد عناصر داخل آن و طول رشتهٔ تهی برابر ۰ است.

زمانی که رشته حاوی متن واقعی باشد هر عنصر به عنوان یک واحد UTF-16 در نظر گرفته می‌شود (مستقل از این که شیوهٔ واقعی نگه داری رشته چه باشد). تمام عملیات بر روی رشته‌ها آن‌ها را به عنوان اعداد صحیح بدون علامت در نظر می‌گیرند و تضمین کنندهٔ تولید رشته به حالت normalize شده نیست و تضمین‌های خاص زمانی هم ندارد. علت این تصمیم گیری سادگی در پیاده سازی ذکر شده‌است.

نوع عدد: نوع عدد در جاوا اسکریپت مطابق با استادارد IEEE برای اعداد شناور دودویی است (با اندکی تفاوت).

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


تبدیلات خودکار

این زبان دارای تبدیلات خود کار بین این انواع داده‌ای است.

زمانی که بخواهد یک if را ارزیابی کند یا از عملگرهای منطقی ! و && و || استفاده شود، تبدیل به نوع دودویی را انجام می‌دهد. مقادیر ۰ و ۰- و NaN به false و سایر مقادیر عددی به true نگاشت می‌گردد. همچنین رشتهٔ تهی false و سایر رشته‌ها true در نظر گرفته می‌شود. انواع شی و تابع true و undefined و null هم false در نظر گرفته می‌شود.

زمانی که یکی از عملوندهای عملگر + رشته باشد، تبدیل به رشته صورت می‌گیرد، مانند ۵ + “۳۷” که می‌شود “۵۳۷”

عملگرهای دیگری عددی (جز جمع) منجر به تبدیل به عدد می‌گردد مانند ۳ – “۵۷” که مقدار عددی ۳۴- را به دست می‌دهد.
ساعت : 9:40 am | نویسنده : admin | جاوا | مطلب قبلی
جاوا | next page | next page