اسکریپت نویسی
اسکریپتنویسی
زبان پردازهنویسی یا زبان اسکریپتنویسی، به نوعی از زبانهای برنامهنویسی گفته میشود که برای نوشتن پردازهها استفاده میشود.
پردازهها یا اسکریپتها برنامههای کوچکی هستند که بهوسیله آنها میتوان برخی وظایف تکراری و پراستفاده یا یک وظیفه طولانی را به طور خودکار انجام داد. معمولاً اینگونه وظایف به واژهپردازی در متنها مربوط میشوند.
در دهه ۱۹۶۰ اولین پوستههای فرمان ساخته شدند. کاربران این پوستهها گاه مجبور بودند برای انجام امور خود، سلسلهای از دستورهای تکراری یا مشابه را در پوسته وارد کنند. کم کم به پوستهها قابلیتهایی اضافه شد که کاربر با آن میتوانست الگوی دستورهای خود را به پوسته اعلام کند و پوسته به طور خودکار دستورها را انجام میداد. این پیشرفتها منجر به ساخت اولین اسکریپتهای پوستهای شد.
در واقع اسکریپتهای اولیه برنامههای کوچکی بودند که به وسیله آنها میشد برخی وظایف تکراری و پراستفاده یا یک وظیفه طولانی را به طور خودکار انجام داد. زبانهای اسکریپتنویسی امروزه پیشرفتهای زیادی کردهاند. آنها در زمینههایی چون کنترل وظایف و پوسته، واسطهای گرافیکی کاربر، واژهپردازی، خدمتگزاران وب و خدمتگیرندههای وب استفاده میشوند.
پردازه اجازه کنترل برخی از کاربردهای نرمافزار را به برنامهنویس میدهد اما تعدادی از فرمانها و امکانات زبانهای بزرگ در این زبانها حذف شدهاند. مثلاً امکان نوشتن فایل یا پاک کردن فایلها برروی سیستم کاربر مانند زبانهای برنامهنویسی وجود ندارد. مثالهایی از این دسته عبارت است از : جاوا اسکریپت، پرل و پایتون.
اکشناسکریپت
اکشناسکریپت ActionScript زبان برنامه نویسی برای فلشپلیر میباشد که تعامل با کاربر، پردازش و نگهداری اطلاعات و غیره را در زمان اجرا به عهده دارد .AS بر پایه ECMAScript است که معمولاً به صورت بایت کد توسط compiler درون فایل ذخیره گردیده و درrun-time توسط ActionScript Virtual Machine ترجمه و اجرا میشود. AS مدل پیشرفته و قوی را از یک زبان برنامه نویس ارایه میکند که برای بسیاری از توسعه دهندگان وب و برنامه نویسان با اندکی دانش ازobject-oriented programming آشنا و راحت خواهد بود .
برنامهنویسی سمت سرور
برنامهنویسی سمت سرور روشی است که برای طراحی وب که شامل اسکریپتهای نهان درون یک کد اچتیامال میباشد استفاده میشود که نتیجه درخواست یک کاربر به سرور یک وب سایت میباشد که با کدنویسیهای سمت سرور قبل از پاسخ دادن سرور به کاربر انجام میگردد. اسکریپتها میتواند درون هر کدام از زبانهای اسکریپتی موجود تحت سرور نوشته شود. برنامهنویسی سمت سرور با نوع برنامهنویسی سمت کاربر تفاوت دارد که انواع نهان آن همچون جاوااسکریپت در مرورگر وب در سمت کاربر اجرا میشود. کدنویسی سمت سرور معمولا برای ایجاد یک واسط کاربری و محدود کردن دسترسی کاربران به پایگاههای داده یا منابع اطلاعاتی میباشد. این اسکریپتها ممکن است مشخصات کاربر را برای استفاده در سفارشی کردن پاسخ براساس مشخصات کاربر، نیازمندیهای کاربر و حقوق دسترسی کاربران، گرد آوری کنند. همچنین کدنویسی سمت سرور باعث میشود که مالک وب سایت بتواند دسترسی کاربران به کد منبع و اسکریپتهای سمت سرور را کاهش دهد که این خود ممکن است اختصاصی و یا ارزشی باشد. مشکل کد نویسی سمت سرور این است که کامپیوتر سرور وب سایت باید بیشتر منابع مجاسباتی را پیش از ارسال صفحه به کاربر برای نمایش در مرورگر وب ارائه کند. وقتی که سرور معمولا از یک راه برای مثال پروتکل FTP،HTTP داده ارائه می کد، کاربران ممکن است حق انتخاب از میان تعدادی از برنامههای سمت کاربر دارند (بسیاری از مرورگرهای وب میتوانند از هر دو پروتکل گفته شده استفاده کنند). در موارد برنامههای کاربردی خاص تر، ممکن است برنامه نویسان خودشان اقدام به نوشتن پروتکل برای سرور، کاربر و انتقال اطلاعات نمایند، که میتواند فقط میتواند توسط یکدیگر استفاده شود. برنامههایی که بر روی کامپیوتر کاربر به صورت محلی بدون ارسال یا دریافت اطلاعات از طریق شبکه میباشد سرویس گیرندههای را در نظر نمیگیرند، و به همین دلیل اعمال آن برنامههای تاثیری بر روی اعمال کامپیوترهای سرویس گیرنده ندارند.
تاریخچه
برای اولین بار در دسامبر ۱۹۹۴، Netscape یک پیاده سازی از JavaScript را به وسیله Netscape Enterprise Server برای کد نویسی سمت سرور ارائه نمود.(مدت کمی پس از ارائه شدن JavaScript برای مرورگرها بود) کدنویسی سمت سرور بعدها در اوایل ۱۹۹۵ به وسیله Fred DuFresne در طراحی (Boston MA television station (WCVB استفادهشد. و این تکنولوژی با شماره ۵۸۳۵۷۱۲ در آمریکا ثبت شد. و این حق انحصاری در سال ۱۹۹۸ منتقل شد و در حال حاضر متعلق به (Open Invention Network (OIN است. در سال ۲۰۱۰ OIN، آقای Fred DuFresne را به خاطر اعمالش در اسکریپت نویسی سمت سرور "Distinguished Invertor" نامید.
توضیح
در روزهای اول وب، کدنویسی سمت سرور به طور انحصاری توسط ترکیبی از برنامههای C و یا اسکریپتهای Perl و با پوستهای از اسکریپتهای (Common Gateway Interface(CGI انجام میشد. آن اسکریپتها توسط سیستم عامل اجرا میشدند. و نتایج آن توسط وب سرور بازتاب داده میشدند. بسیاری وب سرورهای جدید میتوانند به طور مستقیم یک خط از زبان اسکریپتی همچون ASP و PHP را به وسیله خود وب سرور و یا ماژولهای اضافه (همچون mod_perl یا mod_php)که برای وب سرورها بودند اجرا نمایند. برای مثال WebDNA شامل یک پایگاه داده نهان درون خودش است. همچنین روشی از کدنویسی(i.e، CGI یا اجرای مستقیم) میتواند برای سخت سایتهای پیچیده با چندین صفحه استفاده شود، ولی معمولا اجرای مستقیم سربار کمتری دارد که ناشی از عدم تماس با مفسرهای خارجی میباشد. وب سایتهای پویا گاهی اوقات از برنامههای سروری کاربردی تحت وب خاصی استفاده میکنند، برای مثال کتابخانه "Python "Base HTTP Server، همچنین بعضی افراد این را کد نویسی سمت سرور نمی دانند. استفاده از روش کدنویسی تحت وب پویا در هنگام طراحی، همچون ASP کلاسیک یا PHP، توسعه دهندگان باید درک عمیقی از منطق، موقت و جدایی فیزیکی بین سرویس گیرنده و سرور داشته یاشند. برای اعمال کاربران برای به راه انداختن کدهای سمت سرور، حالتی را داریم که توسعه دهندهای با ASP کلاسیک کار میکند باید به صراحت باعث شود که مرورگر کاربر یک بازخورد درخواست به وب سرور بفرستد. ایجاد این چنین فعل و انفعالاتی به آسانی باعث صرف وقت زیادی در طراحی و به وجود آورنده مقدار زیادی کد ناخوانا میشود. JSP یک زبان اسکریپتی سمت سرور میباشد.
زبانهای اسکریپتنویسی سمت سرور
ایاسپی (*.asp)
اکتیوویافپی (*.avfp)
ایاسپیداتنت (*.aspx)
سی توسط سیجیآی (*.c. *،csp)
زبان نشانهگذاری کلدفیوژن (*.cfm)
جاوا توسط جیاسپی (*.jsp)
جاوااسکریپت با استفاده از جاوااسکریپت سمت سرور (*.ssjs. *،js)
لوآ (*.lp. *،op)
پرل سیجیآی (*.cgi. *،ipl. *،pl)
پیاچپی (*.php) - اسکریپتنویسی کدباز
پایتون، برای مثال توسط جنگو (*.py)
روبی، برای مثال توسط روبی آن ریلز (*.rb. *،rbw)
اسامایکس (*.smx)
لاسو (*.lasso)
تیسیال (*.tcl)
وبدیانای (*.dna. *،tpl)
تایپاسکریپت
تایپاسکریپت زبان برنامهنویسیای است که توسط مایکروسافت توسعهداده میشود. تایپاسکریپت پیشرفتدادهشدهٔ جاوااسکریپت است و بررسی نوع قوی و شئگرایی واقعی را ذاتاً به آن زبان میافزاید. آندرس هجلزبرگ پدر سیشارپ در توسعهٔ تایپاسکریپت فعالیت داشتهاست.
جاوااسکریپت
جاوااسکریپت (به انگلیسی: JavaScript) زبان برنامه نویسی اسکریپت مبتی بر اشیاء است که توسط NetScape تولید شدهاست. این زبان، یک زبان شیگر است که بر اساس استاندارد ECMA-262 Edition 3 نوشته شدهاست.
علیرغم اشتباه عمومی، زبان جاوا اسکریت با زبان جاوا ارتباطی ندارد، اگر چه ساختار این زبان به سی پلاس پلاس(++C) و جاوا شباهت دارد؛ که این امر برای یادگیری آسان در نظر گرفته شدهاست. از همینرو دستورهای متداول مانند if, for, try..catch ,"while" و... در این زبان هم یافت میگردند.
این زبان میتواند هم به صورت ساخت یافته و هم به صورت شی گرا مورد استفاده قرار گیرد. در این زبان اشیاء با اضافه شدن متدها و خصوصیات پویا به اشیاء خالی ساخته میشوند، بر خلاف جاوا. بعد از ساخته شدن یک شی به روش فوق، این شی میتواند به عنوان نمونهای برای ساخته شدن اشیاء مشابه مورد استفاده قرار گیرد.
به علت این قابلیت زبان جاوااسکریپت برای ساختن نمونه از سیستم مناسب میباشد.
کاربرد گسترده این زبان در سایتها و صفحات اینترنی میباشد و به کمک این زبان میتوان به اشیاء داخل صفحات HTML دسترسی پیدا کرد و آنها را تغییر داد. به همین علت برای پویا نمایی در سمت کاربر، از این زبان استفاده میشود.
تاریخچه
اسکریپت را در ابتدا شخصی به نام برندان ایچ در شرکت نتاسکیپ با نام Mocha طراحی نمود. این نام بعداً به LiveScript و نهایتاً به جاوا اسکریپت تغییر یافت. این تغییر نام تقریباً با افزوده شدن پشتیبانی از جاوا در مرورگر وب Netscape Navigator همزمانی دارد. اولین نسخهٔ جاوا اسکریپت در نسخه 2.0B3 این مرورگر در دسامبر ۱۹۹۵ معرفی و عرضه شد. این نام گذاری منجر به سردرگمیهای زیادی شده و این ابهام را ایجاد میکند که جاوا اسکریپت با جاوا مرتبط است در حالی که این طور نیست. عدهٔ زیادی این کار را یک ترفند تجاری برای به دست آوردن بخشی از بازار جاوا که در آن موقع زبان جدید مطرح برای برنامه نویسی تحت وب بود میدانند..
به دلیل موفقیت عمدهٔ جاوا اسکریپت در نقش زبان نویسهای سمت کارخواه (client side scripting language) برای صفحات وب، مایکروسافت یک نسخه سازگار از این زبان را ایجاد کرد و به علت مشکلات حقوقی آن را Jscript نامید. این زبان در نسخه ۳٫۰ از مرورگر اینترنت اکسپلورر و در آگوست ۱۹۹۶ داده شد. تفاوتهای این دو زبان به حدی جزیی است که اغلب Jscript و جاوا اسکریپت به جای هم به کار میروند. هرچند که مایکروسافت در اینجا چند ده دلیل برای تفاوت Jscript با استاندارد ECMA مطرح میکند.
نتاسکیپ جاوا اسکریپت را به سازمان Ecma International برای استاندارد سازی ارسال کردهاست و نتیجه نسخهٔ استاندارد شدهای به نام ECMA Script است.
جاوا اسکریپت به یکی از زبانهای برنامه نویسی پر طرفدار در وب تبدیل شدهاست. هر چند ابتدا بسیاری از برنامه نویسان حرفهای زبان را کم ارزش تلقی میکردند چون مخاطبین آن نویسندگان صفحات وب و آماتورهای این چنینی بودند. ظهور ایجکس بار دیگر جاوا اسکریپت را در معرض توجه قرار داد و برنامه نویسان حرفهای بیشتری را به خود جذب نمود. نتیجه ازدیاد فریمورک و کتابخانههای جامعی در این زمینه، بهبود شیوههای رایج برنامه نویسی در جاوا اسکریپت و افزایش کاربرد جاوا اسکریپت خارج از وب است.
امکانات زبانی
امکانات زیر (در صورت قید نشدن) همگی مطابق استاندارد ECMA Script میباشند.
زبان امری و ساخت یافته
جاوا اسکریپت از تمامی نحو ساختاری زبان C پشتیبانی میکند. مانند گزاره (if و switch و حلقههای while و...) یک مورد استثنا تعیین حوزهٔ متغیرهاست: تعریف حوزه در حد block در جاوا اسکریپت وجود ندارد. هر چند جاوا اسکریپت ۱٫۷ با کلمهٔ کلیدی let این نوع حوزه دهی را امکان پذیر میسازد. مانند c در جاوا اسکریپت بین عبارت و گزاره تفاوت وجود دارد.
پویایی
؛ تایپ دهی پویا: مانند اکثر زبانهای نویسهای تایپ به مقدارها منسوب میگردد و نه به متغیرها. برای مثال متغیر x ممکن است به یک عدد وابسته سازی شود، و بعداً به یک رشته. جاوا اسکریپت برای تعیین تایپ شی راههای مختلفی از جمله تایپ دهی اردکی (duck typing) را دارد.
؛ تایپ دهی ضعیف: زبان جاوا اسکریپت از نظر تایپ دهی ضعیف به شمار میآید و در آن نتیجهٔ عملیاتی مانند ۵ + “۳۷”، عبارت “۵۳۷” خواهد بود. (عدد را با رشته جمع کردهاست)
؛ اشیا به دید آرایههای انتسابی: جاوا اسکیرپت تقریباً تماماً بر اساس اشیا است. اشیا، آرایههای انتسابی به همراه یک «ساختار شماتیک» هستند. نام ویژگی اشیا، کلیدهای آرایه انتسابی هستند و درواقع obj.x = ۱۰ با obj[“x”] = ۱۰ هم ارز هستند و شیوه نگارش با نقطه صرفاً یک سهولت نحوی است. ویژگیها و مقدارهایشان در زمان اجرا قابلیت تغییر اضافه و حذف دارند. همچنین میتوان روی ویژگیهای یک شی با ساختار for … in پیمایش کرد.
؛ ارزیابی در زمان اجرا: جاوااسکریپا یک تابع eval دارد که قادر است گزارههای تولید شده در یک رشته در زمان اجرا را، اجرا کند.
تابعی بودن
؛ تابعی بودن: توابع موجوداتی «درجه اول» محسوب میشوند، یعنی خود یک شی هستند. بنابراین میتوانند ویژگی داشته باشند، در آرگومانهای تابعها داده شوند و مانند هر شی دیگری با آنها رفتار شود
؛ توابع داخلی و بستارها: توابع داخلی (توابع تعریف شده داخل یک تابع دیگر) هر بار که تابع بیرونی فرا خوانده شود، ایجاد میشوند و متغیرهای توابع بیرونی تا زمانی که تابع داخلی وجود داشته باشد، وجود خواهند داشت، حتی پس از اتمام آن فراخوانی از تابع بیرونی. (مثال: اگر تابع داخلی به عنوان مقدار برگشتی تابع باشد، هنوز به متغیرهای تابع بیرونی دسترسی دارد) – این مکانیزم بستار گرفتن در جاوا اسکریپت است.
ساختار شماتیک» محوری
؛ ساختار شماتیک: جاوا اسکریپت به جای ردهها برای تعریف ویژگیهای اشیا، که شامل متدها و وراثت است از «ساختار شماتیک» استفاده میکند (پیشنمونه). امکان شبیه سازی بسیاری از امکانات رده-محور با ساختارهای شماتیک جاوا اسکریپت امکان پذیر است.
توابع در نقش سازندهٔ اشیا
برای توابع علاوه بر نقش عادی، به عنوان سازنده ی اشیا هم عمل میکنند. آوردن یک new قبل فراخوانی تابع، آن را با کلمهٔ کلیدی this وابسته سازی شده به شی جدید اجرا میکند. ویژگی prototype از تابع مورد نظر، ساختار شماتیک شی جدید را مشخص میکند.
؛ توابع در نقش متد: بر خلاف بیشتر زبانهای شی گرا تفاوتی میان تعریف تابع و متد وجود ندارد. بلکه تفاوت در زمان فراخوانی تابع است، زمانی که یک تابع به عنوان متد یک شی فراخوانده میشود کلمهٔ کلیدی this محلی آن تابع به شی مورد نظر وابسته سازی میشود.
امکانات دیگر
جاوا اسکریپت برای تامین اشیا و متدها که با آنها تعامل کند به یک محیط اجرایی (مانند مرورگر وب) نیاز دارد تا بتواند به این ترتیب با دنیای خارج ارتباط برقرار کند. همچنین برای دسترسی به سایر نویسهها (include) هم به این محیط نیازمند است (مانند تگ <script>در HTML). (البته این یک ویژگی زبانی نیست اما در عمل اغلب این طور پیاده سازی شدهاست)
؛ تعداد متغیر پارامتر (variadic): تعداد نامعینی پارامتر را میتوان به یک تابع ارسال نمود. تابع میتواند هم از طریق پارامترهای رسمی و هم از طریق شی محلی arguments به آنها دسترسی داشته باشد.
Literalهای آرایه و شی
مانند بسیاری از زبانهای نویسهای آرایهها و اشیا (که در زبانهای دیگر همان آرایههای انتسابی هستند) را میتوان با یک نحو موجز ایجاد و توصیف نمود. در واقع این شیوهٔ نگارش پایهٔ قالب دادهای جیسون هم هست.
عبارات منظم
جاوا اسکریپت به شیوهای مشابه زبان پرل از عبارات منظم پشتیبانی میکند که نحوی قدرتمند و موجز را به شکلی فراتر از توابع پیش ساخته برای کار با رشتهها، فراهم میکند.
نظام تایپ دهی
انواع زیر جزو انواع دادههای قابل دسترس در زبان جاوا اسکریپت است. در استاندارد ECMA انواع دیگری هم تعریف شده که صرفاً داخلی است و برای پیاده سازی است.
تعریف نشده: این تایپ فقط یک مقدار با نام undefined دارد و متعلق به تمام متغییرهای مقدار دهی نشدهاست
نوع تهی: نوع تهی هم فقط یک مقدار دارد با نام null
نوع دودویی: نمایندهٔ یک مقدار منطقی است و دو مقدار true و false را میپذیرد.
نوع رشته: در بر گیرندهٔ تمام رشتههای متناهی از ۰ یا بیشتر عنصر ۱۶ بیتی بدون علامت است. این عناصر با اندیسهای نامنفی قابل دسترسی هستند. طول رشته تعداد عناصر داخل آن و طول رشتهٔ تهی برابر ۰ است.
زمانی که رشته حاوی متن واقعی باشد هر عنصر به عنوان یک واحد UTF-16 در نظر گرفته میشود (مستقل از این که شیوهٔ واقعی نگه داری رشته چه باشد). تمام عملیات بر روی رشتهها آنها را به عنوان اعداد صحیح بدون علامت در نظر میگیرند و تضمین کنندهٔ تولید رشته به حالت normalize شده نیست و تضمینهای خاص زمانی هم ندارد. علت این تصمیم گیری سادگی در پیاده سازی ذکر شدهاست.
نوع عدد: نوع عدد در جاوا اسکریپت مطابق با استادارد IEEE برای اعداد شناور دودویی است (با اندکی تفاوت).
نوع شی: شی در جاوا اسکریپت یک مجموعه بدون ترتیب از ویژگیها است. هر ویژگی میتواند داخلی، فقط-خواندنی، غیر قابل حذف، و غیر قابل پیمایش باشد (یا ترکیبی از اینها یا هیچ کدام)
تبدیلات خودکار
این زبان دارای تبدیلات خود کار بین این انواع دادهای است.
زمانی که بخواهد یک if را ارزیابی کند یا از عملگرهای منطقی ! و && و || استفاده شود، تبدیل به نوع دودویی را انجام میدهد. مقادیر ۰ و ۰- و NaN به false و سایر مقادیر عددی به true نگاشت میگردد. همچنین رشتهٔ تهی false و سایر رشتهها true در نظر گرفته میشود. انواع شی و تابع true و undefined و null هم false در نظر گرفته میشود.
زمانی که یکی از عملوندهای عملگر + رشته باشد، تبدیل به رشته صورت میگیرد، مانند ۵ + “۳۷” که میشود “۵۳۷”
عملگرهای دیگری عددی (جز جمع) منجر به تبدیل به عدد میگردد مانند ۳ – “۵۷” که مقدار عددی ۳۴- را به دست میدهد.
ویامالاسکریپت
زبان وی-ام-ال اسکریپت یک گویش یا مشتق از زبان جاوا اسکریپت میباشد که برای صفحات وی-ام-ال استفاده میشود که قسمتی از پروتکل برنامههای بیسیم و رادیویی میباشد.
وی-ام-ال اسکریپت یک سند مشتری محور میباشد و خیلی به جاوا اسکریپت شباهت دارد.دقیقا شبیه جاوا اسکریپت، وی-ام-ال اسکریپت برای وظایفی همچون صحت ورودیها، ساختن پیغامهای خطا و جعبههای محاورهای دیگر استفاده میشود.
وی-ام-ال اسکریپت مبتنی بر ای-سی-ام-ای اسکریپت(سند انجمن سازنده کامپیوترهای اروپا) میباشد که نسخه استاندارد شده جاوا اسکریپت میباشد. بنابراین نحو وی-ام-ال اسکریپت بسیار شبیه جاوا اسکریپت میباشد.
عمده تفاوت بین جاوا اسکریپت و وی-ام-ال اسکریپت این است که کد جاوا اسکریپت میتواند در صفحات اچ-تی-ام-ال مورد استفاده قرار گیرد.از آن جایی که همیشه درون یک فایل جدا از صفحات وی-ام-ال قرار دارد. آدرسها برای برگرداندن کد واقعی وی-ام-ال به سند وی-ام-ال.
ویبیاسکریپت
VBscript یک زبان رایانهای فعال است که توسط شرکت مایکروسافت توسعه یافتهاست. ترکیبات این زبان از تغییرات محدودی از زبان برنامه نویسی ویژوال بیسیک برگرفته شدهاست.
VBscript به صورت معمولی بر روی همه ویندوزهای انتشار یافته توسط مایکروسافت از ویندوز ۹۸ تا حالا نصب شدهاست. براساس تنظیمات و اهداف وسایلی که اجرا شده بر روی ویندوز CE ممکن است این برنامه شامل ویندوز CE نشود و سود این برنامه برای مدیران ویندوز برای جستجو کردن یک ابزار اتوماتیک است که از دسته زبانهای برنامه سازی توسعه یافته اولیه اواخر سال ۱۹۷۰ قوی تر و پربازده تر باشد.
VBscript باید با یک فضای استاندارد میزژیهایی شبیه کنترل سندهای مایکروسافت.
تاریخچه
VBscript به عنوان قسمتی از تکنولوژیهای نمایش ویندوز به کار گرفته شد. چیزی که هدفش در ابتدا برای توسعه وب در سال ۱۹۹۶ ارسال و منتشر شد، در طول یک دوره دو ساله VBscript و JVscript از ورژن ۱٫۰ به ورژن ۲٫۰ ارتقاء پیدا کردند و بعد از آن زمان مدیران سیستمها به این فکر افتادند که از این زبان استفاده کنند. در ورژن ۵٫۰ دستورالعملهای VBscript با ویژگیهایی نظیر توضیحات منظم، کلاسها، حالتها (مقدار/ اجرا/ اجرای عمومی) تابع برای سنجش، اجرای دستورهایی که توسط یک ویرایش گر دیگر ساخته شدهاست، یک اشاره گر دستور العملها مثل Getref()، پخش شده کمکهای کامپیوتر، رشد پیدا کردهاند.
در ورژن ۵٫۵ (Submatches)ها برای کلاس کلاس توضیحات منظم در VBscript اضافه شدهاست، که در نهایت به VBscript اجازه میدهد که تألیفاتی را سند کند که گروههای توضیحاتی را در درون خود تسخیر کند. این پیشرفت قبلاً فقط در JVscript از خانواده محصولات مایکروسافت ممکن بود. از سال ۲۰۰۸ تا حالا هیچ دستورالعمل جدیدی به نام VBscript اضافه نشدهاست. بطوری که توسط ویندوز powershell جایگزین شدهاست.
به علاوه کمکها در ادامه با مقدار کد نوشته شده در برنامه وظایف خود را ادامه میدهند به خاطر اینکه آنها به عنوان یک ابزاری مؤثر برای بعضی وظایف باقی میمانند.
ماشین زبان به طور مستمر توسط تیم مهندسی نگهداری مایکروسافت نگهداری شدهاست. چیزی که برای رفع خطاها و خدمات امنیتی قابل دسترسی است.
وقتی استفادهها در اینترنت اکسپلورر مایکروسافت به کار گرفته شده VBscript در دستورالعملها به JVscript شبیه میشود به عنوان یک زبان برای نوشتن دستورالعملهایی که برای صفحات HTML شامل شدهاند و متقابلاً با مدل شیءگرایی اسناد صفحات DOM که به تنهایی برای انجام وظایفی در HTML ممکن نیست. نمونههای دیگر از مرورگرها firebox و opera هستند که برای پشتیبانی VBscript ساخته نشدهاند. این به این معناست که ارتقاء دهندههای مرورگرها برای ارتقاء مرورگرها از زبان JVscript استفاده میکنند. در کنار کاربران وب، VBscript همچنین برای پردازش سرور صفحات وب استفاده میشود که این مسئله برای صفحات فعال سرور مایکروسافت ASP بسیار قابل توجهاست. ماشین ASP و کتابخانه تایت و vbscript.dll,asp.dll برای اجرای اسناد VBscript که جا شده در یک صفحه ASP مشمول تبدیل کنندههای ٪> و <٪ است. این یک مثال است از یک صفحه ASP با VBscript که فرمت یک زمان ۲۴ ساعته را نشان میدهد. همچنین VBscript میتواند برای تولید کاربردهایی که مستقیماً بر روی ویندوزهای کامپیوترهای شخصی مایکروسافت اجرا میشوند مورد استفاده قرار گیرد.
سادهترین مثال از آن یک سند است که استفاده فضای میزان ویندوز را میسازد. یک مثال از سند برای بالا آمدن به تنهایی فایل از راه گسترش فایل VBS است.
این سند میتواند در دو راه مطلوب شده باشند:
wscript. exe استفاده شده برای نمایش خروجی و ورودی را حول یک GUI دریافت کند. مثل بستههای دیالوگی و ورودی
cscript. exe استفاده در محیط ویرایش دستورات VBscript.
فایلهای vbs میتوانند دو نوع فایل ویرایشی را شامل شده باشند:
فایلهای wsf: فایلهایی که بعد از XML معمول شد.
فایلهای hta: فایلهایی که بعد از HTML معمول شد.
فایلهای wsf میتوانند فایلهای vbs چندگانه را شامل شوند. در نتیجه فایلهای wsf معناهایی برای استفاده مجدد از کدها را مهیا میکنند:
میتوانیم یک کتابخانهای از کلاسها یا تابعهایی در یک یا چند فایل vbs بنویسیم و آن فایلها را در یک یا چند فایل wsf برای استفاده و استفاده مجدد آن تابعها در یک راه مدل شده شامل کنیم. مورد استفاده دیگر HTML در کاربردهای HTML و HTA است. در یک HTA، HTML برای ملاقات کاربران مورد استفاده قرار گرفتهاست و یک زبان ویرایش مثل HTML برای منطق برنامه مورد استفاده قرار گرفتهاست.
HTAS در درون mshta.exe اجرا میشود. چیزی که یک فضای مورد اعتماد تولید شده توسط اینترنت اکسپلورر است. محدودیتها برای اجرای کاربردها در وب یا محدوده اینترنت مثل دسترسی به فایلهای محلی یا راههای شبکهای به کار برده شدهاست. همچنین HTAS در این محیط قابل اعتماد اجرا میشود. راهنمای فعال تحقیق میتواند موضوعی برای محدوده منطقی اینترنت اکسپلورر و پیامهای خطای مربوطه باشد.
VBscript و JVscript میتوانند در یک فایل wsc برای تولید یک مؤلفه ویرایش ویندوز مورد استفاده قرار گیرد. یک کلاس ویرایش فعال که میتواند توسط کاربردهای کامپیوتری قابل اجرای دیگر طلب شده باشد. در آخر VBscript به عنوان یک زبان ویرایشی وارداتی برای بعضی کاربردهای جاداده شده تطابق داده شدهاست. مثل ملاقاتهای اپراتوری تولیدی و ملاقاتهای ماشینی بشر.
توابع و دستورالعملها
VBscript توابعی کتابخانهای و روتین را محیا کردهاست مثل تاریخ/ زمان، عملیات رشتهای، ریاضی، تقابل کاربران، خطایابی و توضیحات منظم.
به علاوه تابعها میتوانند به استفاده از فناوریهای فعال اضافه شده باشند. مدیریت سیستمی فایل، تغییر و تبدیل فایل، و عملکردهای متن در حال جریان میتوانند به سرانجام برسند با کتابخانه زمان اجرای ویرایش scrrun.dll. فایل باینری و حافظهٔ ۰ و ۱ توسط کلاس ADODB.Stream محیا شدهاست. فایلی که هم میتواند به عنوان سازنده رشته مورد استفاده قرار گیرد و هم میتواند به عنوان تبدیل کننده یک آرایهای از بایتها به یک رشته و بالعکس مورد استفاده قرار گیرد. دسترسی به پایگاه اطلاعات مقدور است در اطراف شیءهای دادهای فعال ADO و پایگاه سوخت IIS با مجوزهای معتبر و کافی توسط تابع Getobject() میتواند دستکاری شود. به علاوه، فایلهای XML و طرحها میتوانند توسط کتابخانه XML مایکروسافت دستکاری شده باشند. (msxml۳.dll ، msxml۶.dll) چیزی که میتواند از طریق XMLHTTP و شیءهای سرور XMLHTTP برای بازیابی شاخههای وب جهانی مورد استفاده قرار گیرد.
برنامهنویسی ادیبانه
برنامهنویسی ادیبانه (به انگلیسی Literate Programming) چگونگی نگارش یک برنامه رایانهای است، بطوریکه صورت و شمایل آن برنامه به شکل اسناد و متونی باشد که برای خواندن غیررسمی و غیرفنی توسط انسان (مانند خواندن متون ادبی)، مناسب باشد. این مفهوم برای اولین بار توسط دونالد کنوت، دانشمند علوم رایانه و استاد افتخاری دانشگاه استانفورد (دانشگاه)، در سال ۱۹۸۱ (میلادی) میلادی مطرح شدهاست.
در این روش متن برنامه (کد مبدا) و توضیحات به همراه هم در یک فایل مبدا ذخیره میشوند. متن اصلی برنامه و توضیحات را میتوان بطور کامل بهوسیلهٔ برنامههای کاربردی خاص، استخراج کرد.
برنامهنویسی اعلانی
برنامهنویسی اعلانی، در علوم رایانه یکی از شیوههای برنامهنویسی است که در آن منطق محاسبات بدون شرح چگونگی انجام آنها بیان میشود. برنامههای اعلانی تلاش میکنند تا با توصیف عملیات مورد نیاز برنامهها بجای توضیح چگونگی انجام عملیات، تاثیرات جانبی (side effects) درون برنامهها را کاهش و یا به کل ازمیان بردارند که از لحاظ اولویتهای عملیاتی در تناقض کامل با شیوه برنامهنویسی دستوری میباشند. زبانهای دستوری زبانهایی هستند که عملیات تحلیلی را برحسب عباراتی که در وضعیت برنامهها تغییراتی ایجاد میکنند، شرح میدهند حال آنکه زبانهای اعلانی برنامه هارابه عنوان اصول منطق محاسباتی و محاسبات را کسورات و اجزای کوچک درون فضای آن منطق میبینند.از آنجا که این زبان میتواند تا حد چشمگیری نوشتن برنامههای موازی برای رایانش موازی را آسان و ساده کند توانسته توجه زیادی را به خود معطوف سازد.
زبانهای معمول اعلانی شامل برنامهنویسی تابعی، عبارت باقاعده، برنامهنویسی منطقی میشوند.
تعریف
زبان ها و یا برنامههای اعلانی معمولاً به روشهای گوناگونی معرفی میشوند:۲
هر سبک برنامه ریزی، که دستوری نباشد.
هر برنامهای که توضیح دهد چه عملیاتی مورد نیاز است و نه اینکه به توصیف چگونگی انجام آن عملیات بپردازد.
هر نوع برنامهای که عاری از هر گونه تآثیرات جانبی (side effects) باشد.
هر زبانی که در مطابقت کامل و واضح با منطق ریاضیات باشد.
خلاصه
زبان اعلانی را میتوان به منزله چتری فرض کرد که شامل چند نمونه ساختار برنامه نویسی معروف میباشد:۳
برنامههای کاربردی(functional programming)
ابن نوع برنامهها، برنامههایی هستند که با محاسبات و تحلیلات به مانند ارزیابی توابع ریاضیاتی رفتار میکنند و از دادههای توضیحی(state)و بی ثبات(mutable) دوری میکنند. و بر خلاف برنامههای دستوری که به تغییرات وضعیت درون برنامهها تاکید دارند به کاربرد توابع تآکید میکنند.از جملهٔ این قبیل برنامهها میتوان به lips،APL اشاره کرد که بعدها نمونههای پیشرفته آن مانند Schemایجاد شد.
برنامههای منطق(logic programming)
این نوع زبان خود به سه دسته برنامههای قیدی(constraint programming)، برنامههای تحلیل داده(data flow programs)و برنامههای (domain specific) تقسیم میشود. برنامه ریزی منطق به عنوان یک سطح وسیع استفاده از منطق ریاضیات میباشد که در زمینههای تحلیل و محاسبات کامپیوتری، اثبات تئوریهای علمی، ایجاد مدل و حل مسائل، از این نوع ساختار برنامه ریزی استفاده میشود.زبانهایی چون svg،html،xsltاز نمونه زبانهای منطق به شمار میآیند.
برنامهنویسی بر پایه پیشنمونه
برنامهنویسی بر پایه پیشنمونه (به انگلیسی: Prototype-based programming) شیوهای از برنامهنویسی شئگرا است که کلاس در آن موجود نیست و رفتار استفادهٔ مجدد (که به وراثت در زبانهای بر پایهٔ کلاس شناخته میشود) توسط فرایندی از شبیهسازی اشیاء موجود انجام میپذیرد. این مدل همچنین به بدون کلاس، پیشنمونهگرا یا برنامهنویسی بر پایهٔ نمونه نیز شناخته میشود. دلگیشن (به انگلیسی: Delegation) قابلیت زبانی است که برنامهنویسی بر پایهٔ پیشنمونه را پیشتیبانی میکند.
برنامهنویسی پودمانی
برنامهنویسی پودمانی یا برنامهنویسی پیمانهای (به انگلیسی: Modular programming)، یک روش طراحی نرمافزار است برای افزایش وسعت نرمافزاری که از قسمتهای مجزایی به نام پودمان تشکیل شدهاست.
یک ماژول، تکه برنامه ای است که با یک استاندارد و قالب مشخص طراحی شده و انجام یکسری از فعالیتها را بر عهده دارد. در عوض مدیریت امکانات مورد نیاز ماژول و همچنین مدیریت بر روی خود ماژول توسط سایت انجام خواهد شد. مثلاً شما با افزودن ماژول خرید و فروش online، تمامی قابلیتهای یک سایت فروشگاهی را به سایت موجود خود خواهید افزود. در عوض ماژول جدید به دلیل ارث بردن و استفاده از قابلیتهای پایه ای سایت، چنان بر روی سایت شما عمل می نماید که گویی از ابتدا درون سایت بوده و بخشی جدا از برنامه نیست.
برنامهنویسی تابعی
برنامهنویسی تابعی (به انگلیسی: Functional programming) نوعی پارادایم برنامهنویسی است که در آن «محاسبات» به صورت ارزشیابی توابع ریاضی در نظر گرفته میشوند.
برنامهنویسی جنبهگرا
برنامهنویسی جنبهگرا روشی برای برنامهنویسی است که پس از برنامه و برای رفع مشکلات آن به وجود آمد. هدف از برنامه نویسی جنبهگرا، مستقل کردن وظایف (در قالب ماژولها) است به طوری که کمترین تداخل را در یکدیگر داشته باشند تا نهایتاً بتوان از آنها برای برنامههای دیگر است. برای مثال وظیفهٔ اهراز هویت در یک برنامه را میتوان به عنوان یک جنبه در نظر گرفت و ماژول جداگانهای برای آن ساخت تا از این پس در تمام پروژههای مشابه بتوان از آن استفاده کرد. بیشتر زبانهای برنامهنویسی، از برنامهنویسی جنبهگرا پشتیبانی خوبی به عمل میآورند. میتوان از آن جمله به جاوا و روش AspectJ اشاره کرد. برنامهنویسی جنبهگرا، ارتباط تنگاتنگ و نزدیکی با دارد ولی دو مفهوم متفاوت هستند.
برنامهنویسی دستوری
برنامهنویسی دستوری (به انگلیسی: Imperative programming) در علوم رایانه یکی از شیوههای برنامهنویسی است که در آن مراحل اجرای یک برنامه کامپیوتری قدم به قدم توسط برنامه نویس بیان میشود. این بر خلاف زبانهای اعلانی است که در آنها تنها نتیجه انجام دستورات بیان میشود. به بیان دیگر در زبانهای دستوری چگونگی اجرای برنامه بیان میشود اما در زبانهای اعلانی چیستی نتیجه بیان میشود.
به عنوان مثال اگر قصد باز کردن دری را داشته باشیم و با زبان اعلانی این را بخواهیم بیان کنیم خواهیم گفت در را باز کن اما اگر با زبان دستوری بیان کنیم خواهیم گفت بلند شو، به طرف در نردیک شو، دستگیره را بگیر و در را به طرف بیرون هل بده.
برنامهنویسی رویدادمحور
برنامهنویسی رویداد گرا یک الگوی برنامهنویسی است که در آن، روند اجرای برنامه توسط رویدادها - برای مثال، خروجی یک سنسور یا دستورهای کاربر (کلیک های موس، دکمه های کیبورد) و یا پیام های دریافتی از سایر برنامه ها یا رشته ها - تعیین می گردد.
برنامه نویسی رویداد گرا را می توان به عنوان یک تکنیک معماری نرمافزار تعریف کرد که در آن نرمافزار یک حلقه اصلی دارد که به روشنی به دو بخش زیر تقسیم می شود:
نخست، انتخاب رویداد (یا شناسایی رویداد)
و دوم، اداره کردن رویداد ها
برنامه های رویداد گرا را می توان در هر زبانی نوشت، اگرچه این کار در زبان هایی که سطح بالایی از انتزاع را فراهم می کنند، آسان تر است.
برنامهنویسی رویهای
برنامهنویسی پروسهای یک پارادایم برنامهنویسی بر پایه مفهوم فراخوانی پروسهها است. پروسه که همچنین به نامهای روال، زیرروال (سابروتین)، تابع، روش شناخته میشود، دربردارنده یک سری گامهای محاسباتی است که باید توسط رایانه اجرا شوند.
هر پروسه میتواند در هر نقطهای در طول اجرای برنامه فراخوانده شود شامل فراخوانی پروسه توسط خودش (برنامهنویسی بازگشتی) یا پروسههای دیگر.
برنامهنویسی ساختیافته
برنامهنویسی ساختیافته یک پارادایم برنامه نویسی است که در آن برنامهنویسی قدمها و روالهایی را که لازم است تا برنامه به جواب برسد، مشخص میکند. در این روش از برنامهنویسی، انجام یک روال به روالهای کوچک تر تقسیم میشود و به این ترتیب یک برنامه با شکسته شدن و به ریز برنامههای کوچک تر تقسیم شدن سعی میکند تا عملکرد مد نظر را پیادهسازی کند.
رویه ها (به انگلیسی: routines)، زیر رویه ها(به انگلیسی: subroutines)، ساختار بلوک (به انگلیسی: block structures) و حلقه های for , while در کنار سادگی آزمودن کدها و صرف نظر کردن از Goto که برنامه را به یک کلاف سردرگم (به اصطلاح برنامه نویسی: spaghetti code) تبدیل می کرد، موجب شدند تا دنبال کردن برنامه و نگه داری از آن تا حد زیادی بهبود یابد.
این پارادایم در دهه ی 1960 توسط بوهن (به انگلیسی: Böhm) و جاکوپینی (به انگلیسی: Jacopini) پدید آمد و در سال 1968 پدیده ی معروفی به نام Goto از سوی ادسخر دیکسترا زیان آور تشخیص داده شد و این پدیده ی تازه به صورت تئوری در قالب برنامه نویسی ساخت یافته ارایه شد و پس از آن توسط زبان الگول(به انگلیسی: ALGOL) به کمک ساختارهای کنترلی پشتیبانی گردید.
مثال
به عنوان مثال برای نوشتن برنامهای که قراراست اطلاعات نمرات یک محصل را بگیرد و کارنامهٔ آن را چاپ کند، زیر روالهای زیر لازم است:
زیر روالی ای برای خواندن اطلاعات ورودی
زیر روالی ای برای جمعآوری اطلاعات ورودی و محاسبهٔ معدل
زیر روالی برای چاپ اطلاعات به صورت یک جدول
زیر روالی برای اتصال به چاپگر و چاپ گزارش
هر زیر روال آنقدر کوچک میشود که برنامهنویس بتواند راحت تر کار کردن آن را درک کند ( هر زیر روال معمولاً ۳۰ خط برنامهنویسی است). به این ترتیب برنامهنویس با نوشتن هر زیر روال بخشی از برنامه را تولید میکند و برنامهنویسان مختلف میتوانند بر روی زیر روالهای مختلف کار کنند تا در نهایت به اضافه نمودن آنها به یکدیگر برنامهٔ نهایی ساخته شود.
در زبانهای ساختار یافته توابع کتابخانهای فراوانی وجود دارند که سعی میکنند به برنامهنویس در برخی از روالها کمک کنند. مثلاً برای چاپ در مثال فوق، توابع کتابخانهای برای سهولت انجام کار در این زیر روال، در زبان پاسکال، وجود دارد.
برخی از زبانهای ساخت یافته:
پاسکال
سی
بیسیک
برنامهنویسی شیءگرا
برنامهنویسی شیءگرا (به انگلیسی Object-Oriented Programming مخفف OOP) یک شیوه برنامه نویسی است که ساختار یا بلوک اصلی اجزای آن، شی ها می باشند. در واقع در این شیوه برنامه نویسی، برنامه به شیء گرایش پیدا می کند. به این معنا که داده ها و توابعی که قرار است بر روی این داده ها عمل کنند، تا حد امکان در قالبی به نام شی در کنار یکدیگر قرار گرفته، جمع بندی شده و یک واحد(شی) را تشکیل داده و نسبت به محیط بیرونِ خود، کپسوله می شوند و از این طریق، توابع بیگانه ی خارج از آن شی، دیگر امکان ایجاد تغییر در داده های درون آن شی را ندارند. به طور مثال حساب بانکی شما که شامل مشخصات فردی شما و میزان سپرده ی شما در بانک است، تشکیل یک شی را می دهند و به دلیل دارا بودن ویژگی کپسوله، امکان دستکاری در میزان سپرده یا مشخصات شما، توسط دیگران وجود ندارد. از دیگر ویژگی های برنامه نویسی شی گرا، پیچیدگی کم، هزینه کم، امکان گسترش سریع برنامه با خطای کمتر نسبت به سایر پارادیام های برنامه نویسی است.
فلسفه یی که منجر به شکل گیری ی زبان های شی گرا شد، عبارت بود از این واقعیت که نحوه ی عملکرد مغز و شیوه ی دریافت اطلاعات از محیط پیرامون و پردازش آن اطلاعات(اندیشیدن)، شیوه یی شی گراست، از همین روی می بایستی زبانی تعریف می شد که همین شیوه را مبنای کار خود قرار داده و بازتولید می کرد. و دقیقاً به همان شکل که اشیا در جهان خارج، دارای هویت و کارکرد مشخص و یگانه برای خود هستند و در عین حال با دیگر اشیا در ارتباطی تنگاتنگ و مستقیم اند، در زبان های برنامه نویسی نیز می بایستی این اصول کلی برقرار می شد. تا به این شکل، برنامه نویس بتواند با بهره گیری از زبانی که به روش اندیشیدنش، نزدیکی بیشتری دارد، شی های مختلفی را تعریف نموده، این شی ها را در ارتباط با یکدیگر قرار داده و از شی های پویای تولید شده برای حل مساله ی پیش روی استفاده نماید. امروزه اکثر زبانهای دستوری برنامه نویسی از فنون شیءگرایی پشتیبانی میکنند. زبانهایی مانند جاوا، سی++، سی شارپ، دلفی از جمله زبانهای شیءگرا هستند. حتی بسیاری از زبانهای روال گونه که ساختار برنامهها در آنها بلوکهایی با نام پروسیجر است امروزه از فنون شیءگرایی نیز پشتبانی میکنند. زبانهای سی++ و پیاچپی از این جمله هستند. هر شیء یک سری خصوصیت و قابلیت دارد، که اصطلاحاً Properties و Operation خوانده میشوند. در این روش از برنامه نویسی دید برنامه نویس به سیستم دید شخصی است که سعی مینماید به پیدا کردن اشیاء مختلف در سیستم و برقراری ارتباط بین آنها سیستم را تولید نماید. مفهوم مدیریت دیداری
مفاهیم عمده
کلاس
کلاس نوع خاصی از آرایه است که امکان ذخیره و جمع بندی تعداد زیادی المان را (که شامل داده ها و توابع هستند) برای یک شی جدید فراهم آورده و تحت یک نام مشترک ذخیره می کند. اما بر خلاف آرایه که تنها قادر به ذخیره ی داده هایی هم جنس است، کلاس می تواند داده هایی از جنس های مختلف را ذخیره نماید. به طور مثال در نظر بگیرید که می خواهیم تاریخ 13 نوامبر 2006 را که تشکیل شده از روز، ماه و سال است مورد استفاده قرار دهیم
حال در نظر بگیرید که نه فقط یک تاریخ، بلکه n تاریخ متفاوت مورد نیاز است. این بدان معنی ست که می بایستی به تعداد n بار، سه متغیر بالا، جداگانه تعریف شوند و تعریفِ تک تک و پیاپی متغیرها، نه فقط از لحاظ زمانی بسیار وقت گیر می نماید، بلکه از لحاظ میزان کد مورد نیاز نیز بسیار غیر عملی ست، چرا که هر بار می بایستی نام جدیدی برای متغیرها در نظر گرفته شود (دو متغیر متفاوت نمیتوانند هم نام باشند). در اینجاست که کلاس ها به خوبی وارد عمل می شوند. با استفاده از کلاس ها می توان متغیرهای متعدد (در مثال بالا: int day ;String month, ;int year) را زیر عنوان یک جنسیت مشترک جدید (به طور مثال هر سه را در یک کلاس با نام Date)، تعریف و جمع بندی نمود. و بعد از آن، بدون نیاز به تعریف مجدد روز، ماه و سال،از کلاس Date به میزان مورد نیاز استفاده کرد:
class Date{
int day;
String month;
int year;
}
وراثت
وراثت یا ارث بری (Inheritance) از مفاهیم اساسی برنامه نویسی شیءگراست. هر شیء یک نمونه از یک کلاس است و هر کلاس میتواند از کلاس یا کلاسهای دیگری مشتق شده باشد (خواص متدها یا رویدادهای کلاسهای دیگر را به ارث ببرد). در یک مثال ساده میتوان اتومبیلی را در نظر گرفت که برای جلوگیری از بازنویسی خواص عمومی اتومبیل شامل: چهار چرخ، متدهای حرکت چرخ، متد چرخاندن فرمان، فرمان، بدنه، در و غیره، میتوان یک کلاس پایه از اتومبیل ایجاد کرد سپس مثلاً برای اتومبیل زانتیا مدل C۵ یک کلاس جدید ایجاد کرده که خواص، متدها و رویدادهای عمومی اتومبیل را داشته باشد و فقط برای خواص، متدها و رویدادهای جدید این اتومبیل کد نوشته شود. این ویژگی باعث صرفهجویی در نوشتن کد و تا حدودی تضمین صحت کد موجود میشود. به عنوان مثال اگر کلاس پایه مشکلی داشته باشد فقط کافی است کلاس پایه تغییر داده شود و در تمامی کلاسهایی که از این کلاس پایه ویژگیای ا به ارث بردهاند این تغییر اعمال خواهد شد.
مخفیسازی
کپسوله سازی، مخفیسازی (Encapsulation)، یا لفافهبندی، به این مفهوم اشاره دارد که باید بعضی خصوصیات یا رفتارهای شیء را از دید دیگران پنهان کرد. فرض کنید شما به عنوان یک راننده میخواهید اتومبیل شخصی تان را روشن کنید و به محل کارتان عزیمت کنید سوییچ را بر میدارید، استارت میزنید و با فشار آوردن به پدالهای گاز و ترمز و چرخش فرمان و ... به محل کارتان خواهید رسید. در طول این مسیر در اتومبیل شما به عنوان یک شیء اعمال مختلفی در حال انجام بود. مثلاً لنت ترمز به دیسک چرخ برخورد میکرد و باعث کم شدن سرعت میشد یا شمعها شروع به جرقه زدن در زمانی بخصوصی میکردند. حال فرض کنید که عمل مخفی سازی وجود نداشت و شما مجبور بودید که جرقه زدن شمعها را کنترل میکردید و به سیستم سوخت رسانی در موقع لزوم دستور میدادید که سوخت را بداخل سیلندرها ارسال کند و... یا هیچگاه به مقصد نمیرسیدید! یا سالم نمیرسیدید!
عمل مخفی سازی باعث میشود که اشیاء بدون آنکه از چگونگی کارکرد یکدیگر اطلاع داشته باشند با هم کار کنند.
چندشکلی
چند ریختی(Polymorphism) چند ریختی، کمیتی است که به یک رابط امکان میدهد تا از عملیات یکسانی در قالب یک کلاس عمومی استفاده کند.عمل خاص کلاس را ذات حقیقی شیء تعیین میکند.مثال سادهای از چند ریختی، فرمان اتومبیل است. عمل فرمان اتومبیل برای تمام اتومبیلها بدون توجه به ساز و کاری که دارند، یکسان است. فرمان برای اتومبیل که به طور مکانیکی کار میکند یا با نیروی برق یا هر چیز دیگری، عمل یکسانی را انجام میدهد. بنابراین، پس از اینکه شما عملکرد فرمان را یاد گرفتید، می توانید فرمان هر اتومبیلی را کنترل کنید. همین هدف در برنامه نویسی نیز اعمال میشود. به طور کلی، مفهوم چند ریختی، اغلب با عبارت ((یک رابط، چندین روش))بیان میشود. این بدین معنی است که امکان طراحی رابط عمومی برای گروهی از عملیات مرتبط وجود دارد. چند ریختی یا چندشکلی (Polymorphism) به این معنا است که اشیاء میتوانند در موقعیتهای مختلف، رفتارهای متفاوتی بروز دهند. مثلاً یک تابع در صورتی که بر روی نمونهای از کلاس آ فراخوانی شود، رفتار ب را بروز دهد در حالی که اگر بر روی کلاس ج (که فرزند کلاس آ است) فراخوانی شود، رفتاری متفاوت انجام دهد.
انتزاع / تجرید
به این معنا است که بخشی از یک موجودیّت یک مفهوم را که میان همهٔ وارثان مشترک است، پیش تعریف کنیم. این توانایی منجر به داشتن نگاه مشابه به موجودیّتهای مشابه میگردد.
یک مثال کاربردی
در اطراف ما اشیاء زیادی وجود دارد و میتوان تمام مفاهیم موجود در طبیعت را با اشیاء تقلیل داد. مثلاً یک ماشین باربری. این ماشین یک سری خصوصیات دارد: چهار چرخ، یک پدال ترمز، یک پدال گاز، یک فرمان و یک محل بزرگ برای قرار دادن اشیاء در آن و.... این ماشین در صورتی که ما پدال گاز آن را فشار دهیم، حرکت میکند. در صورتی که فرمان آن را بچرخانیم تغییر مسیر میدهد. پس این شیء علاوه بر یک سری خصوصیات، یک سری رفتار مشخص هم به ما نشان میدهد. ولی فقط این یک ماشین نیست که این کار را انجام میدهد. تمامی ماشینها این کارها را انجام میدهند. پس میتوانیم این ماشین را 'تعریف' کنیم و بگوییم:
ماشین باربری وسیلهای است که چهار چرخ، یک گاز، یک ترمز، یک فرمان و یک محل برای حمل بار دارد و اگر پدال گاز آن فشار داده شود حرکت میکند. این تعریف این ماشین است ولی خود آن نیست. هر زمانی چنین ماشینی بخواهیم به کارخانه تولید آن میرویم و از فروشندگان میخواهیم تا با توجه به این تعریف یک ماشین به ما بدهند.
مفاهیم فوق در زبانهای برنامه نویسی شیءگرا گنجانده شدهاند. در این زبانها، اشیاء زیادی از پیش وجود دارند که برنامهنویسان میتوانند از آنها استفاده کنند.
ارتباط اشیاء
مجدداً به مثال ماشین باربری بر میگردیم و این بار، یک ماشین سواری را تعریف میکنیم. ماشین سواری شیئی است که چهار چرخ، یک ترمز، یک پدال گاز و یک صندوق عقب دارد. این تعریف به تعریف ماشین باربری بسیار شبیهاست. به عبارت دیگر ما به یک تعریف جدید میرسیم: خودرو. خودرو وسیلهای است که چهار چرخ، یک ترمز، یک پدال گاز دارد. پس از این به بعد تعریف ماشین باربری و ماشین سواری خیلی سادهتر میشود.
ماشین باربری، خودرویی است که محلی برای قرار دادن بار داشته باشد و ماشین سواری خودروییاست که صندوق عقب داشته باشد.
اگر کسی به درب کارخانه مراجعه کند و بگوید که 'خودرو' میخواهد، چیزی دریافت نمیکند. خودرو یک تعریف انتزاعی است، برای تعریف خودرو شیء وجود ندارد پس مشتری تنها میتواتند ماشین باربری یا ماشین سواری بخواهد.
کارواش را در نظر میگیریم. این کارواش خودرو را تمیز میکند و دیگر به طور جزئی عنوان نمیکند که کدام نوع خودرو را تمیز میکند. به عبارت دیگر نوع خودرو برای کارواش مهم نیست.
وقتی شخصی قصد اجاره خودرویی دارد، و میخواهد جنسی را حمل کند در هنگام تماس با متصدی کرایه ماشین میگوید: «اگر خودرو شمااز نوع باربری است، برای من ارسال کنید»، ولی اگر قصد جابجا شدن را دارد میگوید: «برای من یک ماشین سواری بفرستید.»
در زبانهای برنامه نویسی شیءگرا نیز اشیاء مختلفی وجود دارند که تعریف آنها تکمیل کننده یکدیگر است، به عبارت دیگر اشیا از یکدیگر ارث بری میکنند. برخی از تعاریف کاملاً عام است و نمیتوان از آنها نمونه شیئی ساخت و تنها تعریف هستند. به این تعاریف Interface گفته میشود.
زبان پردازهنویسی یا زبان اسکریپتنویسی، به نوعی از زبانهای برنامهنویسی گفته میشود که برای نوشتن پردازهها استفاده میشود.
پردازهها یا اسکریپتها برنامههای کوچکی هستند که بهوسیله آنها میتوان برخی وظایف تکراری و پراستفاده یا یک وظیفه طولانی را به طور خودکار انجام داد. معمولاً اینگونه وظایف به واژهپردازی در متنها مربوط میشوند.
در دهه ۱۹۶۰ اولین پوستههای فرمان ساخته شدند. کاربران این پوستهها گاه مجبور بودند برای انجام امور خود، سلسلهای از دستورهای تکراری یا مشابه را در پوسته وارد کنند. کم کم به پوستهها قابلیتهایی اضافه شد که کاربر با آن میتوانست الگوی دستورهای خود را به پوسته اعلام کند و پوسته به طور خودکار دستورها را انجام میداد. این پیشرفتها منجر به ساخت اولین اسکریپتهای پوستهای شد.
در واقع اسکریپتهای اولیه برنامههای کوچکی بودند که به وسیله آنها میشد برخی وظایف تکراری و پراستفاده یا یک وظیفه طولانی را به طور خودکار انجام داد. زبانهای اسکریپتنویسی امروزه پیشرفتهای زیادی کردهاند. آنها در زمینههایی چون کنترل وظایف و پوسته، واسطهای گرافیکی کاربر، واژهپردازی، خدمتگزاران وب و خدمتگیرندههای وب استفاده میشوند.
پردازه اجازه کنترل برخی از کاربردهای نرمافزار را به برنامهنویس میدهد اما تعدادی از فرمانها و امکانات زبانهای بزرگ در این زبانها حذف شدهاند. مثلاً امکان نوشتن فایل یا پاک کردن فایلها برروی سیستم کاربر مانند زبانهای برنامهنویسی وجود ندارد. مثالهایی از این دسته عبارت است از : جاوا اسکریپت، پرل و پایتون.
اکشناسکریپت
اکشناسکریپت ActionScript زبان برنامه نویسی برای فلشپلیر میباشد که تعامل با کاربر، پردازش و نگهداری اطلاعات و غیره را در زمان اجرا به عهده دارد .AS بر پایه ECMAScript است که معمولاً به صورت بایت کد توسط compiler درون فایل ذخیره گردیده و درrun-time توسط ActionScript Virtual Machine ترجمه و اجرا میشود. AS مدل پیشرفته و قوی را از یک زبان برنامه نویس ارایه میکند که برای بسیاری از توسعه دهندگان وب و برنامه نویسان با اندکی دانش ازobject-oriented programming آشنا و راحت خواهد بود .
برنامهنویسی سمت سرور
برنامهنویسی سمت سرور روشی است که برای طراحی وب که شامل اسکریپتهای نهان درون یک کد اچتیامال میباشد استفاده میشود که نتیجه درخواست یک کاربر به سرور یک وب سایت میباشد که با کدنویسیهای سمت سرور قبل از پاسخ دادن سرور به کاربر انجام میگردد. اسکریپتها میتواند درون هر کدام از زبانهای اسکریپتی موجود تحت سرور نوشته شود. برنامهنویسی سمت سرور با نوع برنامهنویسی سمت کاربر تفاوت دارد که انواع نهان آن همچون جاوااسکریپت در مرورگر وب در سمت کاربر اجرا میشود. کدنویسی سمت سرور معمولا برای ایجاد یک واسط کاربری و محدود کردن دسترسی کاربران به پایگاههای داده یا منابع اطلاعاتی میباشد. این اسکریپتها ممکن است مشخصات کاربر را برای استفاده در سفارشی کردن پاسخ براساس مشخصات کاربر، نیازمندیهای کاربر و حقوق دسترسی کاربران، گرد آوری کنند. همچنین کدنویسی سمت سرور باعث میشود که مالک وب سایت بتواند دسترسی کاربران به کد منبع و اسکریپتهای سمت سرور را کاهش دهد که این خود ممکن است اختصاصی و یا ارزشی باشد. مشکل کد نویسی سمت سرور این است که کامپیوتر سرور وب سایت باید بیشتر منابع مجاسباتی را پیش از ارسال صفحه به کاربر برای نمایش در مرورگر وب ارائه کند. وقتی که سرور معمولا از یک راه برای مثال پروتکل FTP،HTTP داده ارائه می کد، کاربران ممکن است حق انتخاب از میان تعدادی از برنامههای سمت کاربر دارند (بسیاری از مرورگرهای وب میتوانند از هر دو پروتکل گفته شده استفاده کنند). در موارد برنامههای کاربردی خاص تر، ممکن است برنامه نویسان خودشان اقدام به نوشتن پروتکل برای سرور، کاربر و انتقال اطلاعات نمایند، که میتواند فقط میتواند توسط یکدیگر استفاده شود. برنامههایی که بر روی کامپیوتر کاربر به صورت محلی بدون ارسال یا دریافت اطلاعات از طریق شبکه میباشد سرویس گیرندههای را در نظر نمیگیرند، و به همین دلیل اعمال آن برنامههای تاثیری بر روی اعمال کامپیوترهای سرویس گیرنده ندارند.
تاریخچه
برای اولین بار در دسامبر ۱۹۹۴، Netscape یک پیاده سازی از JavaScript را به وسیله Netscape Enterprise Server برای کد نویسی سمت سرور ارائه نمود.(مدت کمی پس از ارائه شدن JavaScript برای مرورگرها بود) کدنویسی سمت سرور بعدها در اوایل ۱۹۹۵ به وسیله Fred DuFresne در طراحی (Boston MA television station (WCVB استفادهشد. و این تکنولوژی با شماره ۵۸۳۵۷۱۲ در آمریکا ثبت شد. و این حق انحصاری در سال ۱۹۹۸ منتقل شد و در حال حاضر متعلق به (Open Invention Network (OIN است. در سال ۲۰۱۰ OIN، آقای Fred DuFresne را به خاطر اعمالش در اسکریپت نویسی سمت سرور "Distinguished Invertor" نامید.
توضیح
در روزهای اول وب، کدنویسی سمت سرور به طور انحصاری توسط ترکیبی از برنامههای C و یا اسکریپتهای Perl و با پوستهای از اسکریپتهای (Common Gateway Interface(CGI انجام میشد. آن اسکریپتها توسط سیستم عامل اجرا میشدند. و نتایج آن توسط وب سرور بازتاب داده میشدند. بسیاری وب سرورهای جدید میتوانند به طور مستقیم یک خط از زبان اسکریپتی همچون ASP و PHP را به وسیله خود وب سرور و یا ماژولهای اضافه (همچون mod_perl یا mod_php)که برای وب سرورها بودند اجرا نمایند. برای مثال WebDNA شامل یک پایگاه داده نهان درون خودش است. همچنین روشی از کدنویسی(i.e، CGI یا اجرای مستقیم) میتواند برای سخت سایتهای پیچیده با چندین صفحه استفاده شود، ولی معمولا اجرای مستقیم سربار کمتری دارد که ناشی از عدم تماس با مفسرهای خارجی میباشد. وب سایتهای پویا گاهی اوقات از برنامههای سروری کاربردی تحت وب خاصی استفاده میکنند، برای مثال کتابخانه "Python "Base HTTP Server، همچنین بعضی افراد این را کد نویسی سمت سرور نمی دانند. استفاده از روش کدنویسی تحت وب پویا در هنگام طراحی، همچون ASP کلاسیک یا PHP، توسعه دهندگان باید درک عمیقی از منطق، موقت و جدایی فیزیکی بین سرویس گیرنده و سرور داشته یاشند. برای اعمال کاربران برای به راه انداختن کدهای سمت سرور، حالتی را داریم که توسعه دهندهای با ASP کلاسیک کار میکند باید به صراحت باعث شود که مرورگر کاربر یک بازخورد درخواست به وب سرور بفرستد. ایجاد این چنین فعل و انفعالاتی به آسانی باعث صرف وقت زیادی در طراحی و به وجود آورنده مقدار زیادی کد ناخوانا میشود. JSP یک زبان اسکریپتی سمت سرور میباشد.
زبانهای اسکریپتنویسی سمت سرور
ایاسپی (*.asp)
اکتیوویافپی (*.avfp)
ایاسپیداتنت (*.aspx)
سی توسط سیجیآی (*.c. *،csp)
زبان نشانهگذاری کلدفیوژن (*.cfm)
جاوا توسط جیاسپی (*.jsp)
جاوااسکریپت با استفاده از جاوااسکریپت سمت سرور (*.ssjs. *،js)
لوآ (*.lp. *،op)
پرل سیجیآی (*.cgi. *،ipl. *،pl)
پیاچپی (*.php) - اسکریپتنویسی کدباز
پایتون، برای مثال توسط جنگو (*.py)
روبی، برای مثال توسط روبی آن ریلز (*.rb. *،rbw)
اسامایکس (*.smx)
لاسو (*.lasso)
تیسیال (*.tcl)
وبدیانای (*.dna. *،tpl)
تایپاسکریپت
تایپاسکریپت زبان برنامهنویسیای است که توسط مایکروسافت توسعهداده میشود. تایپاسکریپت پیشرفتدادهشدهٔ جاوااسکریپت است و بررسی نوع قوی و شئگرایی واقعی را ذاتاً به آن زبان میافزاید. آندرس هجلزبرگ پدر سیشارپ در توسعهٔ تایپاسکریپت فعالیت داشتهاست.
جاوااسکریپت
جاوااسکریپت (به انگلیسی: JavaScript) زبان برنامه نویسی اسکریپت مبتی بر اشیاء است که توسط NetScape تولید شدهاست. این زبان، یک زبان شیگر است که بر اساس استاندارد ECMA-262 Edition 3 نوشته شدهاست.
علیرغم اشتباه عمومی، زبان جاوا اسکریت با زبان جاوا ارتباطی ندارد، اگر چه ساختار این زبان به سی پلاس پلاس(++C) و جاوا شباهت دارد؛ که این امر برای یادگیری آسان در نظر گرفته شدهاست. از همینرو دستورهای متداول مانند if, for, try..catch ,"while" و... در این زبان هم یافت میگردند.
این زبان میتواند هم به صورت ساخت یافته و هم به صورت شی گرا مورد استفاده قرار گیرد. در این زبان اشیاء با اضافه شدن متدها و خصوصیات پویا به اشیاء خالی ساخته میشوند، بر خلاف جاوا. بعد از ساخته شدن یک شی به روش فوق، این شی میتواند به عنوان نمونهای برای ساخته شدن اشیاء مشابه مورد استفاده قرار گیرد.
به علت این قابلیت زبان جاوااسکریپت برای ساختن نمونه از سیستم مناسب میباشد.
کاربرد گسترده این زبان در سایتها و صفحات اینترنی میباشد و به کمک این زبان میتوان به اشیاء داخل صفحات HTML دسترسی پیدا کرد و آنها را تغییر داد. به همین علت برای پویا نمایی در سمت کاربر، از این زبان استفاده میشود.
تاریخچه
اسکریپت را در ابتدا شخصی به نام برندان ایچ در شرکت نتاسکیپ با نام Mocha طراحی نمود. این نام بعداً به LiveScript و نهایتاً به جاوا اسکریپت تغییر یافت. این تغییر نام تقریباً با افزوده شدن پشتیبانی از جاوا در مرورگر وب Netscape Navigator همزمانی دارد. اولین نسخهٔ جاوا اسکریپت در نسخه 2.0B3 این مرورگر در دسامبر ۱۹۹۵ معرفی و عرضه شد. این نام گذاری منجر به سردرگمیهای زیادی شده و این ابهام را ایجاد میکند که جاوا اسکریپت با جاوا مرتبط است در حالی که این طور نیست. عدهٔ زیادی این کار را یک ترفند تجاری برای به دست آوردن بخشی از بازار جاوا که در آن موقع زبان جدید مطرح برای برنامه نویسی تحت وب بود میدانند..
به دلیل موفقیت عمدهٔ جاوا اسکریپت در نقش زبان نویسهای سمت کارخواه (client side scripting language) برای صفحات وب، مایکروسافت یک نسخه سازگار از این زبان را ایجاد کرد و به علت مشکلات حقوقی آن را Jscript نامید. این زبان در نسخه ۳٫۰ از مرورگر اینترنت اکسپلورر و در آگوست ۱۹۹۶ داده شد. تفاوتهای این دو زبان به حدی جزیی است که اغلب Jscript و جاوا اسکریپت به جای هم به کار میروند. هرچند که مایکروسافت در اینجا چند ده دلیل برای تفاوت Jscript با استاندارد ECMA مطرح میکند.
نتاسکیپ جاوا اسکریپت را به سازمان Ecma International برای استاندارد سازی ارسال کردهاست و نتیجه نسخهٔ استاندارد شدهای به نام ECMA Script است.
جاوا اسکریپت به یکی از زبانهای برنامه نویسی پر طرفدار در وب تبدیل شدهاست. هر چند ابتدا بسیاری از برنامه نویسان حرفهای زبان را کم ارزش تلقی میکردند چون مخاطبین آن نویسندگان صفحات وب و آماتورهای این چنینی بودند. ظهور ایجکس بار دیگر جاوا اسکریپت را در معرض توجه قرار داد و برنامه نویسان حرفهای بیشتری را به خود جذب نمود. نتیجه ازدیاد فریمورک و کتابخانههای جامعی در این زمینه، بهبود شیوههای رایج برنامه نویسی در جاوا اسکریپت و افزایش کاربرد جاوا اسکریپت خارج از وب است.
امکانات زبانی
امکانات زیر (در صورت قید نشدن) همگی مطابق استاندارد ECMA Script میباشند.
زبان امری و ساخت یافته
جاوا اسکریپت از تمامی نحو ساختاری زبان C پشتیبانی میکند. مانند گزاره (if و switch و حلقههای while و...) یک مورد استثنا تعیین حوزهٔ متغیرهاست: تعریف حوزه در حد block در جاوا اسکریپت وجود ندارد. هر چند جاوا اسکریپت ۱٫۷ با کلمهٔ کلیدی let این نوع حوزه دهی را امکان پذیر میسازد. مانند c در جاوا اسکریپت بین عبارت و گزاره تفاوت وجود دارد.
پویایی
؛ تایپ دهی پویا: مانند اکثر زبانهای نویسهای تایپ به مقدارها منسوب میگردد و نه به متغیرها. برای مثال متغیر x ممکن است به یک عدد وابسته سازی شود، و بعداً به یک رشته. جاوا اسکریپت برای تعیین تایپ شی راههای مختلفی از جمله تایپ دهی اردکی (duck typing) را دارد.
؛ تایپ دهی ضعیف: زبان جاوا اسکریپت از نظر تایپ دهی ضعیف به شمار میآید و در آن نتیجهٔ عملیاتی مانند ۵ + “۳۷”، عبارت “۵۳۷” خواهد بود. (عدد را با رشته جمع کردهاست)
؛ اشیا به دید آرایههای انتسابی: جاوا اسکیرپت تقریباً تماماً بر اساس اشیا است. اشیا، آرایههای انتسابی به همراه یک «ساختار شماتیک» هستند. نام ویژگی اشیا، کلیدهای آرایه انتسابی هستند و درواقع obj.x = ۱۰ با obj[“x”] = ۱۰ هم ارز هستند و شیوه نگارش با نقطه صرفاً یک سهولت نحوی است. ویژگیها و مقدارهایشان در زمان اجرا قابلیت تغییر اضافه و حذف دارند. همچنین میتوان روی ویژگیهای یک شی با ساختار for … in پیمایش کرد.
؛ ارزیابی در زمان اجرا: جاوااسکریپا یک تابع eval دارد که قادر است گزارههای تولید شده در یک رشته در زمان اجرا را، اجرا کند.
تابعی بودن
؛ تابعی بودن: توابع موجوداتی «درجه اول» محسوب میشوند، یعنی خود یک شی هستند. بنابراین میتوانند ویژگی داشته باشند، در آرگومانهای تابعها داده شوند و مانند هر شی دیگری با آنها رفتار شود
؛ توابع داخلی و بستارها: توابع داخلی (توابع تعریف شده داخل یک تابع دیگر) هر بار که تابع بیرونی فرا خوانده شود، ایجاد میشوند و متغیرهای توابع بیرونی تا زمانی که تابع داخلی وجود داشته باشد، وجود خواهند داشت، حتی پس از اتمام آن فراخوانی از تابع بیرونی. (مثال: اگر تابع داخلی به عنوان مقدار برگشتی تابع باشد، هنوز به متغیرهای تابع بیرونی دسترسی دارد) – این مکانیزم بستار گرفتن در جاوا اسکریپت است.
ساختار شماتیک» محوری
؛ ساختار شماتیک: جاوا اسکریپت به جای ردهها برای تعریف ویژگیهای اشیا، که شامل متدها و وراثت است از «ساختار شماتیک» استفاده میکند (پیشنمونه). امکان شبیه سازی بسیاری از امکانات رده-محور با ساختارهای شماتیک جاوا اسکریپت امکان پذیر است.
توابع در نقش سازندهٔ اشیا
برای توابع علاوه بر نقش عادی، به عنوان سازنده ی اشیا هم عمل میکنند. آوردن یک new قبل فراخوانی تابع، آن را با کلمهٔ کلیدی this وابسته سازی شده به شی جدید اجرا میکند. ویژگی prototype از تابع مورد نظر، ساختار شماتیک شی جدید را مشخص میکند.
؛ توابع در نقش متد: بر خلاف بیشتر زبانهای شی گرا تفاوتی میان تعریف تابع و متد وجود ندارد. بلکه تفاوت در زمان فراخوانی تابع است، زمانی که یک تابع به عنوان متد یک شی فراخوانده میشود کلمهٔ کلیدی this محلی آن تابع به شی مورد نظر وابسته سازی میشود.
امکانات دیگر
جاوا اسکریپت برای تامین اشیا و متدها که با آنها تعامل کند به یک محیط اجرایی (مانند مرورگر وب) نیاز دارد تا بتواند به این ترتیب با دنیای خارج ارتباط برقرار کند. همچنین برای دسترسی به سایر نویسهها (include) هم به این محیط نیازمند است (مانند تگ <script>در HTML). (البته این یک ویژگی زبانی نیست اما در عمل اغلب این طور پیاده سازی شدهاست)
؛ تعداد متغیر پارامتر (variadic): تعداد نامعینی پارامتر را میتوان به یک تابع ارسال نمود. تابع میتواند هم از طریق پارامترهای رسمی و هم از طریق شی محلی arguments به آنها دسترسی داشته باشد.
Literalهای آرایه و شی
مانند بسیاری از زبانهای نویسهای آرایهها و اشیا (که در زبانهای دیگر همان آرایههای انتسابی هستند) را میتوان با یک نحو موجز ایجاد و توصیف نمود. در واقع این شیوهٔ نگارش پایهٔ قالب دادهای جیسون هم هست.
عبارات منظم
جاوا اسکریپت به شیوهای مشابه زبان پرل از عبارات منظم پشتیبانی میکند که نحوی قدرتمند و موجز را به شکلی فراتر از توابع پیش ساخته برای کار با رشتهها، فراهم میکند.
نظام تایپ دهی
انواع زیر جزو انواع دادههای قابل دسترس در زبان جاوا اسکریپت است. در استاندارد ECMA انواع دیگری هم تعریف شده که صرفاً داخلی است و برای پیاده سازی است.
تعریف نشده: این تایپ فقط یک مقدار با نام undefined دارد و متعلق به تمام متغییرهای مقدار دهی نشدهاست
نوع تهی: نوع تهی هم فقط یک مقدار دارد با نام null
نوع دودویی: نمایندهٔ یک مقدار منطقی است و دو مقدار true و false را میپذیرد.
نوع رشته: در بر گیرندهٔ تمام رشتههای متناهی از ۰ یا بیشتر عنصر ۱۶ بیتی بدون علامت است. این عناصر با اندیسهای نامنفی قابل دسترسی هستند. طول رشته تعداد عناصر داخل آن و طول رشتهٔ تهی برابر ۰ است.
زمانی که رشته حاوی متن واقعی باشد هر عنصر به عنوان یک واحد UTF-16 در نظر گرفته میشود (مستقل از این که شیوهٔ واقعی نگه داری رشته چه باشد). تمام عملیات بر روی رشتهها آنها را به عنوان اعداد صحیح بدون علامت در نظر میگیرند و تضمین کنندهٔ تولید رشته به حالت normalize شده نیست و تضمینهای خاص زمانی هم ندارد. علت این تصمیم گیری سادگی در پیاده سازی ذکر شدهاست.
نوع عدد: نوع عدد در جاوا اسکریپت مطابق با استادارد IEEE برای اعداد شناور دودویی است (با اندکی تفاوت).
نوع شی: شی در جاوا اسکریپت یک مجموعه بدون ترتیب از ویژگیها است. هر ویژگی میتواند داخلی، فقط-خواندنی، غیر قابل حذف، و غیر قابل پیمایش باشد (یا ترکیبی از اینها یا هیچ کدام)
تبدیلات خودکار
این زبان دارای تبدیلات خود کار بین این انواع دادهای است.
زمانی که بخواهد یک if را ارزیابی کند یا از عملگرهای منطقی ! و && و || استفاده شود، تبدیل به نوع دودویی را انجام میدهد. مقادیر ۰ و ۰- و NaN به false و سایر مقادیر عددی به true نگاشت میگردد. همچنین رشتهٔ تهی false و سایر رشتهها true در نظر گرفته میشود. انواع شی و تابع true و undefined و null هم false در نظر گرفته میشود.
زمانی که یکی از عملوندهای عملگر + رشته باشد، تبدیل به رشته صورت میگیرد، مانند ۵ + “۳۷” که میشود “۵۳۷”
عملگرهای دیگری عددی (جز جمع) منجر به تبدیل به عدد میگردد مانند ۳ – “۵۷” که مقدار عددی ۳۴- را به دست میدهد.
ویامالاسکریپت
زبان وی-ام-ال اسکریپت یک گویش یا مشتق از زبان جاوا اسکریپت میباشد که برای صفحات وی-ام-ال استفاده میشود که قسمتی از پروتکل برنامههای بیسیم و رادیویی میباشد.
وی-ام-ال اسکریپت یک سند مشتری محور میباشد و خیلی به جاوا اسکریپت شباهت دارد.دقیقا شبیه جاوا اسکریپت، وی-ام-ال اسکریپت برای وظایفی همچون صحت ورودیها، ساختن پیغامهای خطا و جعبههای محاورهای دیگر استفاده میشود.
وی-ام-ال اسکریپت مبتنی بر ای-سی-ام-ای اسکریپت(سند انجمن سازنده کامپیوترهای اروپا) میباشد که نسخه استاندارد شده جاوا اسکریپت میباشد. بنابراین نحو وی-ام-ال اسکریپت بسیار شبیه جاوا اسکریپت میباشد.
عمده تفاوت بین جاوا اسکریپت و وی-ام-ال اسکریپت این است که کد جاوا اسکریپت میتواند در صفحات اچ-تی-ام-ال مورد استفاده قرار گیرد.از آن جایی که همیشه درون یک فایل جدا از صفحات وی-ام-ال قرار دارد. آدرسها برای برگرداندن کد واقعی وی-ام-ال به سند وی-ام-ال.
ویبیاسکریپت
VBscript یک زبان رایانهای فعال است که توسط شرکت مایکروسافت توسعه یافتهاست. ترکیبات این زبان از تغییرات محدودی از زبان برنامه نویسی ویژوال بیسیک برگرفته شدهاست.
VBscript به صورت معمولی بر روی همه ویندوزهای انتشار یافته توسط مایکروسافت از ویندوز ۹۸ تا حالا نصب شدهاست. براساس تنظیمات و اهداف وسایلی که اجرا شده بر روی ویندوز CE ممکن است این برنامه شامل ویندوز CE نشود و سود این برنامه برای مدیران ویندوز برای جستجو کردن یک ابزار اتوماتیک است که از دسته زبانهای برنامه سازی توسعه یافته اولیه اواخر سال ۱۹۷۰ قوی تر و پربازده تر باشد.
VBscript باید با یک فضای استاندارد میزژیهایی شبیه کنترل سندهای مایکروسافت.
تاریخچه
VBscript به عنوان قسمتی از تکنولوژیهای نمایش ویندوز به کار گرفته شد. چیزی که هدفش در ابتدا برای توسعه وب در سال ۱۹۹۶ ارسال و منتشر شد، در طول یک دوره دو ساله VBscript و JVscript از ورژن ۱٫۰ به ورژن ۲٫۰ ارتقاء پیدا کردند و بعد از آن زمان مدیران سیستمها به این فکر افتادند که از این زبان استفاده کنند. در ورژن ۵٫۰ دستورالعملهای VBscript با ویژگیهایی نظیر توضیحات منظم، کلاسها، حالتها (مقدار/ اجرا/ اجرای عمومی) تابع برای سنجش، اجرای دستورهایی که توسط یک ویرایش گر دیگر ساخته شدهاست، یک اشاره گر دستور العملها مثل Getref()، پخش شده کمکهای کامپیوتر، رشد پیدا کردهاند.
در ورژن ۵٫۵ (Submatches)ها برای کلاس کلاس توضیحات منظم در VBscript اضافه شدهاست، که در نهایت به VBscript اجازه میدهد که تألیفاتی را سند کند که گروههای توضیحاتی را در درون خود تسخیر کند. این پیشرفت قبلاً فقط در JVscript از خانواده محصولات مایکروسافت ممکن بود. از سال ۲۰۰۸ تا حالا هیچ دستورالعمل جدیدی به نام VBscript اضافه نشدهاست. بطوری که توسط ویندوز powershell جایگزین شدهاست.
به علاوه کمکها در ادامه با مقدار کد نوشته شده در برنامه وظایف خود را ادامه میدهند به خاطر اینکه آنها به عنوان یک ابزاری مؤثر برای بعضی وظایف باقی میمانند.
ماشین زبان به طور مستمر توسط تیم مهندسی نگهداری مایکروسافت نگهداری شدهاست. چیزی که برای رفع خطاها و خدمات امنیتی قابل دسترسی است.
وقتی استفادهها در اینترنت اکسپلورر مایکروسافت به کار گرفته شده VBscript در دستورالعملها به JVscript شبیه میشود به عنوان یک زبان برای نوشتن دستورالعملهایی که برای صفحات HTML شامل شدهاند و متقابلاً با مدل شیءگرایی اسناد صفحات DOM که به تنهایی برای انجام وظایفی در HTML ممکن نیست. نمونههای دیگر از مرورگرها firebox و opera هستند که برای پشتیبانی VBscript ساخته نشدهاند. این به این معناست که ارتقاء دهندههای مرورگرها برای ارتقاء مرورگرها از زبان JVscript استفاده میکنند. در کنار کاربران وب، VBscript همچنین برای پردازش سرور صفحات وب استفاده میشود که این مسئله برای صفحات فعال سرور مایکروسافت ASP بسیار قابل توجهاست. ماشین ASP و کتابخانه تایت و vbscript.dll,asp.dll برای اجرای اسناد VBscript که جا شده در یک صفحه ASP مشمول تبدیل کنندههای ٪> و <٪ است. این یک مثال است از یک صفحه ASP با VBscript که فرمت یک زمان ۲۴ ساعته را نشان میدهد. همچنین VBscript میتواند برای تولید کاربردهایی که مستقیماً بر روی ویندوزهای کامپیوترهای شخصی مایکروسافت اجرا میشوند مورد استفاده قرار گیرد.
سادهترین مثال از آن یک سند است که استفاده فضای میزان ویندوز را میسازد. یک مثال از سند برای بالا آمدن به تنهایی فایل از راه گسترش فایل VBS است.
این سند میتواند در دو راه مطلوب شده باشند:
wscript. exe استفاده شده برای نمایش خروجی و ورودی را حول یک GUI دریافت کند. مثل بستههای دیالوگی و ورودی
cscript. exe استفاده در محیط ویرایش دستورات VBscript.
فایلهای vbs میتوانند دو نوع فایل ویرایشی را شامل شده باشند:
فایلهای wsf: فایلهایی که بعد از XML معمول شد.
فایلهای hta: فایلهایی که بعد از HTML معمول شد.
فایلهای wsf میتوانند فایلهای vbs چندگانه را شامل شوند. در نتیجه فایلهای wsf معناهایی برای استفاده مجدد از کدها را مهیا میکنند:
میتوانیم یک کتابخانهای از کلاسها یا تابعهایی در یک یا چند فایل vbs بنویسیم و آن فایلها را در یک یا چند فایل wsf برای استفاده و استفاده مجدد آن تابعها در یک راه مدل شده شامل کنیم. مورد استفاده دیگر HTML در کاربردهای HTML و HTA است. در یک HTA، HTML برای ملاقات کاربران مورد استفاده قرار گرفتهاست و یک زبان ویرایش مثل HTML برای منطق برنامه مورد استفاده قرار گرفتهاست.
HTAS در درون mshta.exe اجرا میشود. چیزی که یک فضای مورد اعتماد تولید شده توسط اینترنت اکسپلورر است. محدودیتها برای اجرای کاربردها در وب یا محدوده اینترنت مثل دسترسی به فایلهای محلی یا راههای شبکهای به کار برده شدهاست. همچنین HTAS در این محیط قابل اعتماد اجرا میشود. راهنمای فعال تحقیق میتواند موضوعی برای محدوده منطقی اینترنت اکسپلورر و پیامهای خطای مربوطه باشد.
VBscript و JVscript میتوانند در یک فایل wsc برای تولید یک مؤلفه ویرایش ویندوز مورد استفاده قرار گیرد. یک کلاس ویرایش فعال که میتواند توسط کاربردهای کامپیوتری قابل اجرای دیگر طلب شده باشد. در آخر VBscript به عنوان یک زبان ویرایشی وارداتی برای بعضی کاربردهای جاداده شده تطابق داده شدهاست. مثل ملاقاتهای اپراتوری تولیدی و ملاقاتهای ماشینی بشر.
توابع و دستورالعملها
VBscript توابعی کتابخانهای و روتین را محیا کردهاست مثل تاریخ/ زمان، عملیات رشتهای، ریاضی، تقابل کاربران، خطایابی و توضیحات منظم.
به علاوه تابعها میتوانند به استفاده از فناوریهای فعال اضافه شده باشند. مدیریت سیستمی فایل، تغییر و تبدیل فایل، و عملکردهای متن در حال جریان میتوانند به سرانجام برسند با کتابخانه زمان اجرای ویرایش scrrun.dll. فایل باینری و حافظهٔ ۰ و ۱ توسط کلاس ADODB.Stream محیا شدهاست. فایلی که هم میتواند به عنوان سازنده رشته مورد استفاده قرار گیرد و هم میتواند به عنوان تبدیل کننده یک آرایهای از بایتها به یک رشته و بالعکس مورد استفاده قرار گیرد. دسترسی به پایگاه اطلاعات مقدور است در اطراف شیءهای دادهای فعال ADO و پایگاه سوخت IIS با مجوزهای معتبر و کافی توسط تابع Getobject() میتواند دستکاری شود. به علاوه، فایلهای XML و طرحها میتوانند توسط کتابخانه XML مایکروسافت دستکاری شده باشند. (msxml۳.dll ، msxml۶.dll) چیزی که میتواند از طریق XMLHTTP و شیءهای سرور XMLHTTP برای بازیابی شاخههای وب جهانی مورد استفاده قرار گیرد.
برنامهنویسی ادیبانه
برنامهنویسی ادیبانه (به انگلیسی Literate Programming) چگونگی نگارش یک برنامه رایانهای است، بطوریکه صورت و شمایل آن برنامه به شکل اسناد و متونی باشد که برای خواندن غیررسمی و غیرفنی توسط انسان (مانند خواندن متون ادبی)، مناسب باشد. این مفهوم برای اولین بار توسط دونالد کنوت، دانشمند علوم رایانه و استاد افتخاری دانشگاه استانفورد (دانشگاه)، در سال ۱۹۸۱ (میلادی) میلادی مطرح شدهاست.
در این روش متن برنامه (کد مبدا) و توضیحات به همراه هم در یک فایل مبدا ذخیره میشوند. متن اصلی برنامه و توضیحات را میتوان بطور کامل بهوسیلهٔ برنامههای کاربردی خاص، استخراج کرد.
برنامهنویسی اعلانی
برنامهنویسی اعلانی، در علوم رایانه یکی از شیوههای برنامهنویسی است که در آن منطق محاسبات بدون شرح چگونگی انجام آنها بیان میشود. برنامههای اعلانی تلاش میکنند تا با توصیف عملیات مورد نیاز برنامهها بجای توضیح چگونگی انجام عملیات، تاثیرات جانبی (side effects) درون برنامهها را کاهش و یا به کل ازمیان بردارند که از لحاظ اولویتهای عملیاتی در تناقض کامل با شیوه برنامهنویسی دستوری میباشند. زبانهای دستوری زبانهایی هستند که عملیات تحلیلی را برحسب عباراتی که در وضعیت برنامهها تغییراتی ایجاد میکنند، شرح میدهند حال آنکه زبانهای اعلانی برنامه هارابه عنوان اصول منطق محاسباتی و محاسبات را کسورات و اجزای کوچک درون فضای آن منطق میبینند.از آنجا که این زبان میتواند تا حد چشمگیری نوشتن برنامههای موازی برای رایانش موازی را آسان و ساده کند توانسته توجه زیادی را به خود معطوف سازد.
زبانهای معمول اعلانی شامل برنامهنویسی تابعی، عبارت باقاعده، برنامهنویسی منطقی میشوند.
تعریف
زبان ها و یا برنامههای اعلانی معمولاً به روشهای گوناگونی معرفی میشوند:۲
هر سبک برنامه ریزی، که دستوری نباشد.
هر برنامهای که توضیح دهد چه عملیاتی مورد نیاز است و نه اینکه به توصیف چگونگی انجام آن عملیات بپردازد.
هر نوع برنامهای که عاری از هر گونه تآثیرات جانبی (side effects) باشد.
هر زبانی که در مطابقت کامل و واضح با منطق ریاضیات باشد.
خلاصه
زبان اعلانی را میتوان به منزله چتری فرض کرد که شامل چند نمونه ساختار برنامه نویسی معروف میباشد:۳
برنامههای کاربردی(functional programming)
ابن نوع برنامهها، برنامههایی هستند که با محاسبات و تحلیلات به مانند ارزیابی توابع ریاضیاتی رفتار میکنند و از دادههای توضیحی(state)و بی ثبات(mutable) دوری میکنند. و بر خلاف برنامههای دستوری که به تغییرات وضعیت درون برنامهها تاکید دارند به کاربرد توابع تآکید میکنند.از جملهٔ این قبیل برنامهها میتوان به lips،APL اشاره کرد که بعدها نمونههای پیشرفته آن مانند Schemایجاد شد.
برنامههای منطق(logic programming)
این نوع زبان خود به سه دسته برنامههای قیدی(constraint programming)، برنامههای تحلیل داده(data flow programs)و برنامههای (domain specific) تقسیم میشود. برنامه ریزی منطق به عنوان یک سطح وسیع استفاده از منطق ریاضیات میباشد که در زمینههای تحلیل و محاسبات کامپیوتری، اثبات تئوریهای علمی، ایجاد مدل و حل مسائل، از این نوع ساختار برنامه ریزی استفاده میشود.زبانهایی چون svg،html،xsltاز نمونه زبانهای منطق به شمار میآیند.
برنامهنویسی بر پایه پیشنمونه
برنامهنویسی بر پایه پیشنمونه (به انگلیسی: Prototype-based programming) شیوهای از برنامهنویسی شئگرا است که کلاس در آن موجود نیست و رفتار استفادهٔ مجدد (که به وراثت در زبانهای بر پایهٔ کلاس شناخته میشود) توسط فرایندی از شبیهسازی اشیاء موجود انجام میپذیرد. این مدل همچنین به بدون کلاس، پیشنمونهگرا یا برنامهنویسی بر پایهٔ نمونه نیز شناخته میشود. دلگیشن (به انگلیسی: Delegation) قابلیت زبانی است که برنامهنویسی بر پایهٔ پیشنمونه را پیشتیبانی میکند.
برنامهنویسی پودمانی
برنامهنویسی پودمانی یا برنامهنویسی پیمانهای (به انگلیسی: Modular programming)، یک روش طراحی نرمافزار است برای افزایش وسعت نرمافزاری که از قسمتهای مجزایی به نام پودمان تشکیل شدهاست.
یک ماژول، تکه برنامه ای است که با یک استاندارد و قالب مشخص طراحی شده و انجام یکسری از فعالیتها را بر عهده دارد. در عوض مدیریت امکانات مورد نیاز ماژول و همچنین مدیریت بر روی خود ماژول توسط سایت انجام خواهد شد. مثلاً شما با افزودن ماژول خرید و فروش online، تمامی قابلیتهای یک سایت فروشگاهی را به سایت موجود خود خواهید افزود. در عوض ماژول جدید به دلیل ارث بردن و استفاده از قابلیتهای پایه ای سایت، چنان بر روی سایت شما عمل می نماید که گویی از ابتدا درون سایت بوده و بخشی جدا از برنامه نیست.
برنامهنویسی تابعی
برنامهنویسی تابعی (به انگلیسی: Functional programming) نوعی پارادایم برنامهنویسی است که در آن «محاسبات» به صورت ارزشیابی توابع ریاضی در نظر گرفته میشوند.
برنامهنویسی جنبهگرا
برنامهنویسی جنبهگرا روشی برای برنامهنویسی است که پس از برنامه و برای رفع مشکلات آن به وجود آمد. هدف از برنامه نویسی جنبهگرا، مستقل کردن وظایف (در قالب ماژولها) است به طوری که کمترین تداخل را در یکدیگر داشته باشند تا نهایتاً بتوان از آنها برای برنامههای دیگر است. برای مثال وظیفهٔ اهراز هویت در یک برنامه را میتوان به عنوان یک جنبه در نظر گرفت و ماژول جداگانهای برای آن ساخت تا از این پس در تمام پروژههای مشابه بتوان از آن استفاده کرد. بیشتر زبانهای برنامهنویسی، از برنامهنویسی جنبهگرا پشتیبانی خوبی به عمل میآورند. میتوان از آن جمله به جاوا و روش AspectJ اشاره کرد. برنامهنویسی جنبهگرا، ارتباط تنگاتنگ و نزدیکی با دارد ولی دو مفهوم متفاوت هستند.
برنامهنویسی دستوری
برنامهنویسی دستوری (به انگلیسی: Imperative programming) در علوم رایانه یکی از شیوههای برنامهنویسی است که در آن مراحل اجرای یک برنامه کامپیوتری قدم به قدم توسط برنامه نویس بیان میشود. این بر خلاف زبانهای اعلانی است که در آنها تنها نتیجه انجام دستورات بیان میشود. به بیان دیگر در زبانهای دستوری چگونگی اجرای برنامه بیان میشود اما در زبانهای اعلانی چیستی نتیجه بیان میشود.
به عنوان مثال اگر قصد باز کردن دری را داشته باشیم و با زبان اعلانی این را بخواهیم بیان کنیم خواهیم گفت در را باز کن اما اگر با زبان دستوری بیان کنیم خواهیم گفت بلند شو، به طرف در نردیک شو، دستگیره را بگیر و در را به طرف بیرون هل بده.
برنامهنویسی رویدادمحور
برنامهنویسی رویداد گرا یک الگوی برنامهنویسی است که در آن، روند اجرای برنامه توسط رویدادها - برای مثال، خروجی یک سنسور یا دستورهای کاربر (کلیک های موس، دکمه های کیبورد) و یا پیام های دریافتی از سایر برنامه ها یا رشته ها - تعیین می گردد.
برنامه نویسی رویداد گرا را می توان به عنوان یک تکنیک معماری نرمافزار تعریف کرد که در آن نرمافزار یک حلقه اصلی دارد که به روشنی به دو بخش زیر تقسیم می شود:
نخست، انتخاب رویداد (یا شناسایی رویداد)
و دوم، اداره کردن رویداد ها
برنامه های رویداد گرا را می توان در هر زبانی نوشت، اگرچه این کار در زبان هایی که سطح بالایی از انتزاع را فراهم می کنند، آسان تر است.
برنامهنویسی رویهای
برنامهنویسی پروسهای یک پارادایم برنامهنویسی بر پایه مفهوم فراخوانی پروسهها است. پروسه که همچنین به نامهای روال، زیرروال (سابروتین)، تابع، روش شناخته میشود، دربردارنده یک سری گامهای محاسباتی است که باید توسط رایانه اجرا شوند.
هر پروسه میتواند در هر نقطهای در طول اجرای برنامه فراخوانده شود شامل فراخوانی پروسه توسط خودش (برنامهنویسی بازگشتی) یا پروسههای دیگر.
برنامهنویسی ساختیافته
برنامهنویسی ساختیافته یک پارادایم برنامه نویسی است که در آن برنامهنویسی قدمها و روالهایی را که لازم است تا برنامه به جواب برسد، مشخص میکند. در این روش از برنامهنویسی، انجام یک روال به روالهای کوچک تر تقسیم میشود و به این ترتیب یک برنامه با شکسته شدن و به ریز برنامههای کوچک تر تقسیم شدن سعی میکند تا عملکرد مد نظر را پیادهسازی کند.
رویه ها (به انگلیسی: routines)، زیر رویه ها(به انگلیسی: subroutines)، ساختار بلوک (به انگلیسی: block structures) و حلقه های for , while در کنار سادگی آزمودن کدها و صرف نظر کردن از Goto که برنامه را به یک کلاف سردرگم (به اصطلاح برنامه نویسی: spaghetti code) تبدیل می کرد، موجب شدند تا دنبال کردن برنامه و نگه داری از آن تا حد زیادی بهبود یابد.
این پارادایم در دهه ی 1960 توسط بوهن (به انگلیسی: Böhm) و جاکوپینی (به انگلیسی: Jacopini) پدید آمد و در سال 1968 پدیده ی معروفی به نام Goto از سوی ادسخر دیکسترا زیان آور تشخیص داده شد و این پدیده ی تازه به صورت تئوری در قالب برنامه نویسی ساخت یافته ارایه شد و پس از آن توسط زبان الگول(به انگلیسی: ALGOL) به کمک ساختارهای کنترلی پشتیبانی گردید.
مثال
به عنوان مثال برای نوشتن برنامهای که قراراست اطلاعات نمرات یک محصل را بگیرد و کارنامهٔ آن را چاپ کند، زیر روالهای زیر لازم است:
زیر روالی ای برای خواندن اطلاعات ورودی
زیر روالی ای برای جمعآوری اطلاعات ورودی و محاسبهٔ معدل
زیر روالی برای چاپ اطلاعات به صورت یک جدول
زیر روالی برای اتصال به چاپگر و چاپ گزارش
هر زیر روال آنقدر کوچک میشود که برنامهنویس بتواند راحت تر کار کردن آن را درک کند ( هر زیر روال معمولاً ۳۰ خط برنامهنویسی است). به این ترتیب برنامهنویس با نوشتن هر زیر روال بخشی از برنامه را تولید میکند و برنامهنویسان مختلف میتوانند بر روی زیر روالهای مختلف کار کنند تا در نهایت به اضافه نمودن آنها به یکدیگر برنامهٔ نهایی ساخته شود.
در زبانهای ساختار یافته توابع کتابخانهای فراوانی وجود دارند که سعی میکنند به برنامهنویس در برخی از روالها کمک کنند. مثلاً برای چاپ در مثال فوق، توابع کتابخانهای برای سهولت انجام کار در این زیر روال، در زبان پاسکال، وجود دارد.
برخی از زبانهای ساخت یافته:
پاسکال
سی
بیسیک
برنامهنویسی شیءگرا
برنامهنویسی شیءگرا (به انگلیسی Object-Oriented Programming مخفف OOP) یک شیوه برنامه نویسی است که ساختار یا بلوک اصلی اجزای آن، شی ها می باشند. در واقع در این شیوه برنامه نویسی، برنامه به شیء گرایش پیدا می کند. به این معنا که داده ها و توابعی که قرار است بر روی این داده ها عمل کنند، تا حد امکان در قالبی به نام شی در کنار یکدیگر قرار گرفته، جمع بندی شده و یک واحد(شی) را تشکیل داده و نسبت به محیط بیرونِ خود، کپسوله می شوند و از این طریق، توابع بیگانه ی خارج از آن شی، دیگر امکان ایجاد تغییر در داده های درون آن شی را ندارند. به طور مثال حساب بانکی شما که شامل مشخصات فردی شما و میزان سپرده ی شما در بانک است، تشکیل یک شی را می دهند و به دلیل دارا بودن ویژگی کپسوله، امکان دستکاری در میزان سپرده یا مشخصات شما، توسط دیگران وجود ندارد. از دیگر ویژگی های برنامه نویسی شی گرا، پیچیدگی کم، هزینه کم، امکان گسترش سریع برنامه با خطای کمتر نسبت به سایر پارادیام های برنامه نویسی است.
فلسفه یی که منجر به شکل گیری ی زبان های شی گرا شد، عبارت بود از این واقعیت که نحوه ی عملکرد مغز و شیوه ی دریافت اطلاعات از محیط پیرامون و پردازش آن اطلاعات(اندیشیدن)، شیوه یی شی گراست، از همین روی می بایستی زبانی تعریف می شد که همین شیوه را مبنای کار خود قرار داده و بازتولید می کرد. و دقیقاً به همان شکل که اشیا در جهان خارج، دارای هویت و کارکرد مشخص و یگانه برای خود هستند و در عین حال با دیگر اشیا در ارتباطی تنگاتنگ و مستقیم اند، در زبان های برنامه نویسی نیز می بایستی این اصول کلی برقرار می شد. تا به این شکل، برنامه نویس بتواند با بهره گیری از زبانی که به روش اندیشیدنش، نزدیکی بیشتری دارد، شی های مختلفی را تعریف نموده، این شی ها را در ارتباط با یکدیگر قرار داده و از شی های پویای تولید شده برای حل مساله ی پیش روی استفاده نماید. امروزه اکثر زبانهای دستوری برنامه نویسی از فنون شیءگرایی پشتیبانی میکنند. زبانهایی مانند جاوا، سی++، سی شارپ، دلفی از جمله زبانهای شیءگرا هستند. حتی بسیاری از زبانهای روال گونه که ساختار برنامهها در آنها بلوکهایی با نام پروسیجر است امروزه از فنون شیءگرایی نیز پشتبانی میکنند. زبانهای سی++ و پیاچپی از این جمله هستند. هر شیء یک سری خصوصیت و قابلیت دارد، که اصطلاحاً Properties و Operation خوانده میشوند. در این روش از برنامه نویسی دید برنامه نویس به سیستم دید شخصی است که سعی مینماید به پیدا کردن اشیاء مختلف در سیستم و برقراری ارتباط بین آنها سیستم را تولید نماید. مفهوم مدیریت دیداری
مفاهیم عمده
کلاس
کلاس نوع خاصی از آرایه است که امکان ذخیره و جمع بندی تعداد زیادی المان را (که شامل داده ها و توابع هستند) برای یک شی جدید فراهم آورده و تحت یک نام مشترک ذخیره می کند. اما بر خلاف آرایه که تنها قادر به ذخیره ی داده هایی هم جنس است، کلاس می تواند داده هایی از جنس های مختلف را ذخیره نماید. به طور مثال در نظر بگیرید که می خواهیم تاریخ 13 نوامبر 2006 را که تشکیل شده از روز، ماه و سال است مورد استفاده قرار دهیم
حال در نظر بگیرید که نه فقط یک تاریخ، بلکه n تاریخ متفاوت مورد نیاز است. این بدان معنی ست که می بایستی به تعداد n بار، سه متغیر بالا، جداگانه تعریف شوند و تعریفِ تک تک و پیاپی متغیرها، نه فقط از لحاظ زمانی بسیار وقت گیر می نماید، بلکه از لحاظ میزان کد مورد نیاز نیز بسیار غیر عملی ست، چرا که هر بار می بایستی نام جدیدی برای متغیرها در نظر گرفته شود (دو متغیر متفاوت نمیتوانند هم نام باشند). در اینجاست که کلاس ها به خوبی وارد عمل می شوند. با استفاده از کلاس ها می توان متغیرهای متعدد (در مثال بالا: int day ;String month, ;int year) را زیر عنوان یک جنسیت مشترک جدید (به طور مثال هر سه را در یک کلاس با نام Date)، تعریف و جمع بندی نمود. و بعد از آن، بدون نیاز به تعریف مجدد روز، ماه و سال،از کلاس Date به میزان مورد نیاز استفاده کرد:
class Date{
int day;
String month;
int year;
}
وراثت
وراثت یا ارث بری (Inheritance) از مفاهیم اساسی برنامه نویسی شیءگراست. هر شیء یک نمونه از یک کلاس است و هر کلاس میتواند از کلاس یا کلاسهای دیگری مشتق شده باشد (خواص متدها یا رویدادهای کلاسهای دیگر را به ارث ببرد). در یک مثال ساده میتوان اتومبیلی را در نظر گرفت که برای جلوگیری از بازنویسی خواص عمومی اتومبیل شامل: چهار چرخ، متدهای حرکت چرخ، متد چرخاندن فرمان، فرمان، بدنه، در و غیره، میتوان یک کلاس پایه از اتومبیل ایجاد کرد سپس مثلاً برای اتومبیل زانتیا مدل C۵ یک کلاس جدید ایجاد کرده که خواص، متدها و رویدادهای عمومی اتومبیل را داشته باشد و فقط برای خواص، متدها و رویدادهای جدید این اتومبیل کد نوشته شود. این ویژگی باعث صرفهجویی در نوشتن کد و تا حدودی تضمین صحت کد موجود میشود. به عنوان مثال اگر کلاس پایه مشکلی داشته باشد فقط کافی است کلاس پایه تغییر داده شود و در تمامی کلاسهایی که از این کلاس پایه ویژگیای ا به ارث بردهاند این تغییر اعمال خواهد شد.
مخفیسازی
کپسوله سازی، مخفیسازی (Encapsulation)، یا لفافهبندی، به این مفهوم اشاره دارد که باید بعضی خصوصیات یا رفتارهای شیء را از دید دیگران پنهان کرد. فرض کنید شما به عنوان یک راننده میخواهید اتومبیل شخصی تان را روشن کنید و به محل کارتان عزیمت کنید سوییچ را بر میدارید، استارت میزنید و با فشار آوردن به پدالهای گاز و ترمز و چرخش فرمان و ... به محل کارتان خواهید رسید. در طول این مسیر در اتومبیل شما به عنوان یک شیء اعمال مختلفی در حال انجام بود. مثلاً لنت ترمز به دیسک چرخ برخورد میکرد و باعث کم شدن سرعت میشد یا شمعها شروع به جرقه زدن در زمانی بخصوصی میکردند. حال فرض کنید که عمل مخفی سازی وجود نداشت و شما مجبور بودید که جرقه زدن شمعها را کنترل میکردید و به سیستم سوخت رسانی در موقع لزوم دستور میدادید که سوخت را بداخل سیلندرها ارسال کند و... یا هیچگاه به مقصد نمیرسیدید! یا سالم نمیرسیدید!
عمل مخفی سازی باعث میشود که اشیاء بدون آنکه از چگونگی کارکرد یکدیگر اطلاع داشته باشند با هم کار کنند.
چندشکلی
چند ریختی(Polymorphism) چند ریختی، کمیتی است که به یک رابط امکان میدهد تا از عملیات یکسانی در قالب یک کلاس عمومی استفاده کند.عمل خاص کلاس را ذات حقیقی شیء تعیین میکند.مثال سادهای از چند ریختی، فرمان اتومبیل است. عمل فرمان اتومبیل برای تمام اتومبیلها بدون توجه به ساز و کاری که دارند، یکسان است. فرمان برای اتومبیل که به طور مکانیکی کار میکند یا با نیروی برق یا هر چیز دیگری، عمل یکسانی را انجام میدهد. بنابراین، پس از اینکه شما عملکرد فرمان را یاد گرفتید، می توانید فرمان هر اتومبیلی را کنترل کنید. همین هدف در برنامه نویسی نیز اعمال میشود. به طور کلی، مفهوم چند ریختی، اغلب با عبارت ((یک رابط، چندین روش))بیان میشود. این بدین معنی است که امکان طراحی رابط عمومی برای گروهی از عملیات مرتبط وجود دارد. چند ریختی یا چندشکلی (Polymorphism) به این معنا است که اشیاء میتوانند در موقعیتهای مختلف، رفتارهای متفاوتی بروز دهند. مثلاً یک تابع در صورتی که بر روی نمونهای از کلاس آ فراخوانی شود، رفتار ب را بروز دهد در حالی که اگر بر روی کلاس ج (که فرزند کلاس آ است) فراخوانی شود، رفتاری متفاوت انجام دهد.
انتزاع / تجرید
به این معنا است که بخشی از یک موجودیّت یک مفهوم را که میان همهٔ وارثان مشترک است، پیش تعریف کنیم. این توانایی منجر به داشتن نگاه مشابه به موجودیّتهای مشابه میگردد.
یک مثال کاربردی
در اطراف ما اشیاء زیادی وجود دارد و میتوان تمام مفاهیم موجود در طبیعت را با اشیاء تقلیل داد. مثلاً یک ماشین باربری. این ماشین یک سری خصوصیات دارد: چهار چرخ، یک پدال ترمز، یک پدال گاز، یک فرمان و یک محل بزرگ برای قرار دادن اشیاء در آن و.... این ماشین در صورتی که ما پدال گاز آن را فشار دهیم، حرکت میکند. در صورتی که فرمان آن را بچرخانیم تغییر مسیر میدهد. پس این شیء علاوه بر یک سری خصوصیات، یک سری رفتار مشخص هم به ما نشان میدهد. ولی فقط این یک ماشین نیست که این کار را انجام میدهد. تمامی ماشینها این کارها را انجام میدهند. پس میتوانیم این ماشین را 'تعریف' کنیم و بگوییم:
ماشین باربری وسیلهای است که چهار چرخ، یک گاز، یک ترمز، یک فرمان و یک محل برای حمل بار دارد و اگر پدال گاز آن فشار داده شود حرکت میکند. این تعریف این ماشین است ولی خود آن نیست. هر زمانی چنین ماشینی بخواهیم به کارخانه تولید آن میرویم و از فروشندگان میخواهیم تا با توجه به این تعریف یک ماشین به ما بدهند.
مفاهیم فوق در زبانهای برنامه نویسی شیءگرا گنجانده شدهاند. در این زبانها، اشیاء زیادی از پیش وجود دارند که برنامهنویسان میتوانند از آنها استفاده کنند.
ارتباط اشیاء
مجدداً به مثال ماشین باربری بر میگردیم و این بار، یک ماشین سواری را تعریف میکنیم. ماشین سواری شیئی است که چهار چرخ، یک ترمز، یک پدال گاز و یک صندوق عقب دارد. این تعریف به تعریف ماشین باربری بسیار شبیهاست. به عبارت دیگر ما به یک تعریف جدید میرسیم: خودرو. خودرو وسیلهای است که چهار چرخ، یک ترمز، یک پدال گاز دارد. پس از این به بعد تعریف ماشین باربری و ماشین سواری خیلی سادهتر میشود.
ماشین باربری، خودرویی است که محلی برای قرار دادن بار داشته باشد و ماشین سواری خودروییاست که صندوق عقب داشته باشد.
اگر کسی به درب کارخانه مراجعه کند و بگوید که 'خودرو' میخواهد، چیزی دریافت نمیکند. خودرو یک تعریف انتزاعی است، برای تعریف خودرو شیء وجود ندارد پس مشتری تنها میتواتند ماشین باربری یا ماشین سواری بخواهد.
کارواش را در نظر میگیریم. این کارواش خودرو را تمیز میکند و دیگر به طور جزئی عنوان نمیکند که کدام نوع خودرو را تمیز میکند. به عبارت دیگر نوع خودرو برای کارواش مهم نیست.
وقتی شخصی قصد اجاره خودرویی دارد، و میخواهد جنسی را حمل کند در هنگام تماس با متصدی کرایه ماشین میگوید: «اگر خودرو شمااز نوع باربری است، برای من ارسال کنید»، ولی اگر قصد جابجا شدن را دارد میگوید: «برای من یک ماشین سواری بفرستید.»
در زبانهای برنامه نویسی شیءگرا نیز اشیاء مختلفی وجود دارند که تعریف آنها تکمیل کننده یکدیگر است، به عبارت دیگر اشیا از یکدیگر ارث بری میکنند. برخی از تعاریف کاملاً عام است و نمیتوان از آنها نمونه شیئی ساخت و تنها تعریف هستند. به این تعاریف Interface گفته میشود.
شبکه اجتماعی
شبکهٔ اجتماعی ساختاری اجتماعی است که از گره هایی(که عموماً فردی یا سازمانی هستند) تشکیل شدهاست که توسط یک یا چند نوع خاص از وابستگی به هم متصل اند، برای مثال: قیمتها، الهامات، ایدهها و تبادلات مالی، دوستها، خویشاوندی، تجارت، لینکهای وب، سرایت بیماریها (اپیدمولوژی) یا مسیرهای هواپیمایی. ساختارهای حاصل اغلب بسیار پیچیده هستند.
تحلیل شبکههای اجتماعی روابط اجتماعی را با اصطلاحات رأس و یال مینگرد. رأسها بازیگران فردی درون شبکهها هستند و یالها روابط میان این بازیگران هستند.انواع زیادی از یالها میتواند میان رأسها وجود داشته باشد. نتایج تحقیقات مختلف بیانگر آن است که می توان از ظرفیت شبکههای اجتماعی در بسیاری از سطوح فردی و اجتماعی به منظور شناسایی مسائل و تعیین راه حل آنها، برقراری روابط اجتماعی، اداره امور تشکیلاتی، سیاستگذاری و رهنمون سازی افراد در مسیر دستیابی به اهداف استفاده نمود. به عنوان مثال، نتایج مطالعات در حوزه سیاستگذاری گردشگری نشان می دهد شبکههای اجتماعی به واسطه تاثیرگذاری روی متغیرهای رفتاری بر جذب گردشگران خارجی به مقاصد گوناگون تاثیرگذار هستند و می توان از این شبکه ها به منظور شکلگیری اعتماد و کاهش ریسک تصمیمگیری کاربران در انتخاب یک مقصد خاص گردشگری بهره گرفت.
در سادهترین شکل یک شبکهٔ اجتماعی نگاشتی از تمام یالهای مربوط، میان رأسهای مورد مطالعهاست. شبکهٔ اجتماعی هم چنین میتواند برای تشخیص موقعیت اجتماعی هر یک از بازیگران مورد استفاده قرار گیرد. این مفاهیم غالباً در یک نمودار شبکهٔ اجتماعی نشان داده میشوند که درآن، نقطهها رأسها هستند و خطها نشانگر یالها.
در ایران علیرغم اینکه عضویت در شبکههای اجتماعی جرم تلقی نمیشود، ولی به موجب فیلترینگ آنها از جانب حکومت، حضور در این وبگاهها چون از طریق دور زدن فیلترینگ میسر است، مصداق عمل مجرمانه است.
آنالیز شبکههای اجتماعی
آنالیز شبکههای اجتماعی(مرتبط با نظریه شبکهها) به عنوان یک تکنیک کلیدی در جامعه شناسی، انسان شناسی، جغرافیا، روانشناسی اجتماعی، جامعه شناسی زبان، علوم ارتباطات، علوم اطلاعات، مطالعات سازمانی، اقتصاد و زیست شناسی مدرن همانند یک موضوع محبوب در زمینهٔ تفکر ومطالعه پدیدار شدهاست.
بالغ بر یک قرن است که مردم، شبکهٔ اجتماعی مجازی را برای اشارههای ضمنی به مجموعه روابط پیچیده میان افراد درسیستمهای اجتماعی در تمامی مقیاسها از روابط بین فردی گرفته تا بینالمللی مورد استفاده قرار میدهند. در سال ۱۹۴۵ J. A. Barnes برای نخستین بار از اصطلاح قاعده مند برای مشخص کردن الگوهایی از رشتهها استفاده کرد که مفاهیم را مشخص میکنند و به صورت رایج توسط عموم و دانشمندان علوم اجتماعی مورد استفاده قرار میگیرد : گروههای محدود (مانند: قبایل و خانوادهها) و طبقات اجتماعی(مانند: جنسیّت و قومیت). دانشورانی چون : S.D. Berkowitz, Stephen Borgatti, Ronald Burt, Linton Freeman, Mark Granovetter, Peter Marsden, Nicholas Mullins, Anatol Rapoport, Stanley Wasserman, Barry Wellman, and Harrison White کاربرد شبکههای اجتماعی را به تفصیل بیان کردهاند.
آنالیز شبکههای اجتماعی از طریق احکام نظری و روشها و تحقیقهای مربوط به آن از یک صنعت ضمنی به معبری تحلیلی برای پارادایمها تغییر یافتهاست. برهان های تحلیلی از کل گرفته تا جزء؛ از ساختار گرفته تا روابط و افراد، از اخلاق گرفته تا رفتار همگی شبکههای سراسری را مورد بررسی قرار میدهند که در آنها، همهٔ رشتهها شامل روابط ویژهای در میان جمعیت ِ تعریف شدهاند و یا شبکههای فردی را مورد بررسی قرار میدهند که شامل رشتهها یی است که افراد مشخصی آنها را دارند از قبیل انجمنهای خصوصی.
گرایشهای تحلیلی متعددی آنالیز شبکههای اجتماعی را تمیز میدهند: هیچ فرضی وجود ندارد که گروهها، بلوکهای بنا کنندهٔ اجتماع هستند :: این معبر برای مطالعهٔ سیستمهای اجتماعی با محدودیت کمتر باز است از اجتماعات غیر محلی گرفته تا لینکهای درون وبگاهها.
آنالیز شبکههای اجتماعی علاوه بر سروکارداشتن با اشخاص (افراد، سازمانها، ایالات) به عنوان واحدهای گسستهٔ تحلیل، برروی چگونگی ساختار رشتهها که اشخاص و روابط میان آنها را تحت تاثیر قرار میدهد نیز تمرکز میکند.
برخلاف تحلیلهایی که بر این فرض استوارند که هنجارهای اجتماعی تعیین کنندهٔ رفتارها هستند، آنالیز شبکههای اجتماعی به بررسی وسعت تاثیرگذاری ساختار و ترکیب رشتهها بر هنجارها میپردازد.
شکل یک شبکهٔ اجتماعی به تعیین میزان سودمندی شبکه برای افراد آن شبکه کمک میکند. به طور جزئی شبکههای محکم برای اعضایشان نسبت به شبکههایی که تعداد زیادی اتصالات ضعیف برای افراد خارج از شبکهٔ اصلی دارند، کمتر مفید واقع میشوند. بیشتر شبکههای باز با اتصالات اجتماعی و رشتههای ضعیف، شانس بیشتری برای دسترسی به ایدهها و دست آوردهای جدید نسبت به شبکههای بسته با رشتههای طویل فراهم میآورد. به بیان دیگر گروهی از دوستان که تنها دارای ارتباط با یکدیگر هستند، اطلاعات و دست آوردهای یکسانی را به اشتراک میگذارند. اما گروهی از افراد که دارای ارتباط با بخشهای اجتماعی دیگر هستند شانس بیشتری برای دسترسی به محدودهٔ وسیعتری از اطلاعات دارند. افراد برای دستیابی به موفقیت بهتر است که با شبکههای گوناگونی ارتباط داشته باشند تا اینکه ارتباطات زیادی درون یک شبکه داشته باشند. به طور مشابه افراد میتوانند تأثیرگذاری و ایفای نقش به عنوان واسطه در برقراری ارتباط بین دو شبکه که به هم متصل نیستند را تمرین کنند.(این کار پر کردن سوراخهای ساختاری نامیده میشود.)
آنالیز شبکههای اجتماعی چشم انداز متناوبی را ایجاد میکند که در آن خواص افراد نسبت به ارتباطات و رشتههای میان آنها در شبکه از اهمیت کمتری برخوردار است. این معبر ایجاد شدهاست تا برای توضیح بسیاری از پدیدههای جهان واقعی مفید واقع شود، اما مجال کمتری برای نمایندگیهای فردی باقی میگذارد تا توانمندیهای فردیشان روی موفقیت تأثیرگذار باشد زیرا بخش زیادی از این توانمندیها درون ساختار شبکه باقی میماند.
شبکههای اجتماعی برای بررسی چگونگی تأثیرات متقابل میان تشکیلات، توصیف بسیاری از اتصالات غیررسمی که مجریان را به یکدیگر متصل میکند، نیز مورد استفاده قرار گرفتهاست و در این زمینهها نیز به خوبی برقراری ارتباطات فردی میان کارمندان در سازمانهای مختلف عمل میکند. شبکههای اجتماعی نقش کلیدی در موفقیتهای تجاری و پیشرفتهای کاری ایفا میکنند. شبکهها راههایی را برای شرکتها فراهم میکند که اطلاعات جمع آوری کنند، از رقابت بپرهیزند و حتی برای تنظیم قیمتها و سیاستها با هم تبانی کنند.
آشنایی با شبکههای اجتماعی اینترنتی
فضای مجازی مجال شکلگیری اجتماعات جدید از کاربران را فراهم میکند. از زمان تونیس (Tonnies) و تلاش او برای تعریف دو گونه تجمع انسانی یعنی «اجتماع» در مقابل «جامعه» (گزلشافت و گمنشافت) به بعد همه متفکران علوم اجتماعی و فرهنگی «رو در رو بودن»، «محدودیت تعداد»، و «ابتناء بر روابط عاطفی و نه روابط عقلانی را از خصائص بنیانی»اجتماع" عنوان کردهاند.
هر چند روابط کاربران فضای مجازی رابطهای با واسطهاست و نه رو در رو، بسیاری از مطالعه کنندگان اینترنت تمایل دارند از اصطلاح «اجتماع» برای اشاره به جمع کاربران استفاده کنند.
در این میان تلاشهای متعددی در حال انجام است تا حوزه و دامنه معنایی کاربردهای جدید این اصطلاح را برای اشاره به تجمعات کاربران فضای مجازی، روشن سازد. ازجمله میتوان به تلاشهای خانم شلینی ونچرلی اشاره کرد.
نظرات ونچرلی در سایت USINFO ارائه شدهاست. او به شبکهها و سازمانهای رسمی که به سامان بخشیدن به روابط و مقررات ارتباطاتی در فضای مجازی اشتغال دارند میپردازد و در ادامه به موضوع اجتماعات کاربران و خصوصیتهای آنها اشاره میکند.
شبکههای اجتماعی برپایه اینترنت از قبیل facebook.com و myspace.com در بین جوانان آمریکایی محبوبیت به سزایی کسب کردهاند. این شبکههای اجتماعی درعین حال که فضاهایی هستند که درآنها افراد دوستان جدیدی پیدا میکنند و یا دوستان قدیمی خود را در جریان تغییرات زندگی شان قرار میدهند، مکانهایی برای تبادل نظر هستند که در آنها جوانان عقاید و نظرات خود را با هم به اشتراک میگذارند.
این قابلیت که یک جوان بتواند با امثال خود در کشورهای دیگر جهان ارتباط برقرار کند باعث میشود تا این شبکهها به مکانی تبدیل شوند که در آنها ایدههای جدید معرفی میشوند و مورد بحث قرار میگیرند.
شبکههای اجتماعی اینترنتی در دنیا
استفاده از خدمات شبکههای اجتماعی، روزبهروز محبوبیت بیشتری پیدا میکند. هماکنون سایتهای شبکههای اجتماعی، بعد از پرتالهای بزرگی مثل یاهو یا اماسان موتورهای جستجو مثل گوگل، تبدیل به پراستفادهترین خدمت اینترنتی شدهاند.
خیلی از نهادهای مختلف جهانی و اینترنتی با اهداف گوناگون که مهمترین آنها تجاری و تبلیغاتی است، دست بهراهاندازی شبکههای اجتماعی زده یا درصدد خرید سهام مهمترین شبکههای اجتماعی دنیا هستند؛ مثل رقابت اخیر گوگل و مایکروسافت برسر سایت مایاسپیس و فیسبوک.
در رقابت مایاسپیس، پرکاربرترین سایت شبکه اجتماعی دنیا گوگل و در رقابت برسر فیسبوک، مایکروسافت برندهشد. ضمن اینکه یاهو هم بعد از راهاندازی نهچندان موفق «۳۶۰درجه»، به دنبال راهاندازی یک شبکه اجتماعی دیگر بهاسم «مش» است.
ناسا هم برای جذب جوانان علاقهمند به موضوعات هوافضا، یک شبکه اجتماعی را بر پایه استانداردهای نسل آینده وب و تنظیمات سایت خود راه اندازی کرد.
این شبکه اجتماعی جدید که مای ناسا نام دارد، بخشهای بسیار پیشرفتهای دارد که کاربران میتوانند از طریق آنها تصاویر و تفکرات خود را درباره موضوعات فضایی با سایر کاربران بهاشتراک بگذارند. مای ناسا یک نمونه بسیار اصلی از شبکههای اجتماعی است و یک محیط مجازی را میسازد که در آن کاربران میتوانند تمام موضوعات و مقولات مورد نظر و شخصی خود را جمعآوری کنند.
کاربران میتوانند در این شبکه اجتماعی جدید برای خود وبلاگ درست کنند و از وبلاگهایی نظیر وبلاگ یکی از مدیران ناسا که روایت بسیار شگفتانگیزی را از ماموریتهای فضایی خود نقل کردهاست، استفاده کنند.
شبکههای اجتماعی، بهخصوص آنهایی که کاربردهای معمولی و غیرتجاری دارند، مکانهایی در دنیای مجازی هستند که مردم خود را بهطور خلاصه معرفی میکنند و امکان برقراری ارتباط بین خود و همفکرانشان را در زمینههای مختلف مورد علاقه فراهم میکنند. البته در بعضی از این موارد مثل مایناسا سمت و سوی اصلی این علایق (فضا) مشخص است.
به نظر میرسد شبکههای اجتماعی در اینترنت، در آینده بیش از این هم اهمیت پیدا میکند. این شبکهها هماکنون هم روزبهروز محبوبتر میشوند. با شبکههای اجتماعی، دیگر افراد برای پیداکردن همفکران خود در موارد گوناگون تنها نیستند؛ یک دوست آرژانتینی برای تحلیل بازیهای بوکاجونیورز، یک دوست سوئدی برای صحبت در مورد فناوری اطلاعات، یک دوست فرانسوی برای صحبت در مورد فیلمهای سینمای مستقل یا یک دوست مصری برای بحث در مورد مسائل خاورمیانه.
مسلماً در دنیای حقیقی هیچگاه افراد علاقهمند، موضوعات موردعلاقه خود را به این گستردگی نمییافتند. این دلیل و شاید دلایل مشابه این، سرویسهای شبکههای اجتماعی را به یکی از مهمترین ارکان اینترنت در دو، سه سال اخیر تبدیل کردهاست.
گسترش شبکههای اجتماعی اینترنتی در ایران
در یک ساله اخیر وب سایت های که با نام شبکه اجتماعی در ایران فعالیت می کنن به طور روز افزونی در حال افزایش است تب فیسبوکی در ایران اوج گرفته و شبکه های اجتماعی زیادی که تا حدودی هم شبه به فیس بوک است خیلی زیاد شده تا یکسال قبل وقتی در گوگل کلمه شبکه اجتماعی را جستجو می کردیم به سختی در 5 صفح اول جستجو اثری از شبکه های اجتماعی بود ولی امروز وقتی کلمه شبکه اجتماعی را جستجو می کنی بالغ بر 21,800,000 نتایج جستجو نشان می دهد که نشانگر روشد بسیار چشمگیر آن در ایران است.
شبکههای اجتماعی اینترنتی در ایران
حدود ۴ سال پیش بود که مفهوم شبکههای اجتماعی بهطور گسترده با حضور اورکات در میان کاربران ایرانی رواج پیدا کرد و در مدت کوتاهی آنقدر سریع رشد کرد که پس از برزیل و آمریکا، ایران سومین کشور حاضر در اورکات شد.
اما درهمان زمان شایعاتی هم رواج پیدا کرد که نسبت به عضویت در این انجمن هشدار دادند. میگفتند که گوگل (گرداننده اورکات) از این طریق به اطلاعات شخصی، علایق و نظرات و ارتباطات خصوصی افراد دست پیدا میکند و ممکن است این کار باعث ازبینرفتن امنیت شخصی افراد شود.
چندی پیش دادگاهی در برزیل، از گوگل تقاضای اجرای محدودیتهایی در سرویس اورکات کرد تا گروههای نژادپرستانه از اورکات حذف شوند. البته گوگل از اجرای این تقاضا سرباز زدهاست.
گوگل اعلام کرده چون سرورهای گوگل که مرتبط با اورکات هستند، در آمریکا قرار دارند، کلیه امور مربوط به آن مطابق قوانین آمریکا بوده و نمیتوان قوانین برزیل یا سایر دولتها را در آن دخیل کرد اما گروههای خاصی را که بر خلاف قوانین داخلی اورکات بودهاند، شناسایی و بستهاست.
هرچند که یاهو ۳۶۰ هنوز مورد استفاده قرارمیگیرد، اما کاربران ایرانی به سراغ سایتهای شبکههای اجتماعی کمتر معروف و حتی شبکههای اجتماعی ایرانی میروند.
با نگاهی به تعداد کاربران ۲۴ شبکه اجتماعی پرطرفدار دنیا (جدول)، به آسانی میشود میزان تاثیرگذاری این شبکهها را درک کرد. این شبکهها مجموعاً بیش از یک میلیارد کاربر دارند و اگرچه تعامل زیادی بین کاربران آنها هست، اما بههرحال رقم فوقالعادهای است.
شبکهٔ اجتماعی ساختاری اجتماعی است که از گره هایی(که عموماً فردی یا سازمانی هستند) تشکیل شدهاست که توسط یک یا چند نوع خاص از وابستگی به هم متصل اند، برای مثال: قیمتها، الهامات، ایدهها و تبادلات مالی، دوستها، خویشاوندی، تجارت، لینکهای وب، سرایت بیماریها (اپیدمولوژی) یا مسیرهای هواپیمایی. ساختارهای حاصل اغلب بسیار پیچیده هستند.
تحلیل شبکههای اجتماعی روابط اجتماعی را با اصطلاحات رأس و یال مینگرد. رأسها بازیگران فردی درون شبکهها هستند و یالها روابط میان این بازیگران هستند.انواع زیادی از یالها میتواند میان رأسها وجود داشته باشد. نتایج تحقیقات مختلف بیانگر آن است که می توان از ظرفیت شبکههای اجتماعی در بسیاری از سطوح فردی و اجتماعی به منظور شناسایی مسائل و تعیین راه حل آنها، برقراری روابط اجتماعی، اداره امور تشکیلاتی، سیاستگذاری و رهنمون سازی افراد در مسیر دستیابی به اهداف استفاده نمود. به عنوان مثال، نتایج مطالعات در حوزه سیاستگذاری گردشگری نشان می دهد شبکههای اجتماعی به واسطه تاثیرگذاری روی متغیرهای رفتاری بر جذب گردشگران خارجی به مقاصد گوناگون تاثیرگذار هستند و می توان از این شبکه ها به منظور شکلگیری اعتماد و کاهش ریسک تصمیمگیری کاربران در انتخاب یک مقصد خاص گردشگری بهره گرفت.
در سادهترین شکل یک شبکهٔ اجتماعی نگاشتی از تمام یالهای مربوط، میان رأسهای مورد مطالعهاست. شبکهٔ اجتماعی هم چنین میتواند برای تشخیص موقعیت اجتماعی هر یک از بازیگران مورد استفاده قرار گیرد. این مفاهیم غالباً در یک نمودار شبکهٔ اجتماعی نشان داده میشوند که درآن، نقطهها رأسها هستند و خطها نشانگر یالها.
در ایران علیرغم اینکه عضویت در شبکههای اجتماعی جرم تلقی نمیشود، ولی به موجب فیلترینگ آنها از جانب حکومت، حضور در این وبگاهها چون از طریق دور زدن فیلترینگ میسر است، مصداق عمل مجرمانه است.
آنالیز شبکههای اجتماعی
آنالیز شبکههای اجتماعی(مرتبط با نظریه شبکهها) به عنوان یک تکنیک کلیدی در جامعه شناسی، انسان شناسی، جغرافیا، روانشناسی اجتماعی، جامعه شناسی زبان، علوم ارتباطات، علوم اطلاعات، مطالعات سازمانی، اقتصاد و زیست شناسی مدرن همانند یک موضوع محبوب در زمینهٔ تفکر ومطالعه پدیدار شدهاست.
بالغ بر یک قرن است که مردم، شبکهٔ اجتماعی مجازی را برای اشارههای ضمنی به مجموعه روابط پیچیده میان افراد درسیستمهای اجتماعی در تمامی مقیاسها از روابط بین فردی گرفته تا بینالمللی مورد استفاده قرار میدهند. در سال ۱۹۴۵ J. A. Barnes برای نخستین بار از اصطلاح قاعده مند برای مشخص کردن الگوهایی از رشتهها استفاده کرد که مفاهیم را مشخص میکنند و به صورت رایج توسط عموم و دانشمندان علوم اجتماعی مورد استفاده قرار میگیرد : گروههای محدود (مانند: قبایل و خانوادهها) و طبقات اجتماعی(مانند: جنسیّت و قومیت). دانشورانی چون : S.D. Berkowitz, Stephen Borgatti, Ronald Burt, Linton Freeman, Mark Granovetter, Peter Marsden, Nicholas Mullins, Anatol Rapoport, Stanley Wasserman, Barry Wellman, and Harrison White کاربرد شبکههای اجتماعی را به تفصیل بیان کردهاند.
آنالیز شبکههای اجتماعی از طریق احکام نظری و روشها و تحقیقهای مربوط به آن از یک صنعت ضمنی به معبری تحلیلی برای پارادایمها تغییر یافتهاست. برهان های تحلیلی از کل گرفته تا جزء؛ از ساختار گرفته تا روابط و افراد، از اخلاق گرفته تا رفتار همگی شبکههای سراسری را مورد بررسی قرار میدهند که در آنها، همهٔ رشتهها شامل روابط ویژهای در میان جمعیت ِ تعریف شدهاند و یا شبکههای فردی را مورد بررسی قرار میدهند که شامل رشتهها یی است که افراد مشخصی آنها را دارند از قبیل انجمنهای خصوصی.
گرایشهای تحلیلی متعددی آنالیز شبکههای اجتماعی را تمیز میدهند: هیچ فرضی وجود ندارد که گروهها، بلوکهای بنا کنندهٔ اجتماع هستند :: این معبر برای مطالعهٔ سیستمهای اجتماعی با محدودیت کمتر باز است از اجتماعات غیر محلی گرفته تا لینکهای درون وبگاهها.
آنالیز شبکههای اجتماعی علاوه بر سروکارداشتن با اشخاص (افراد، سازمانها، ایالات) به عنوان واحدهای گسستهٔ تحلیل، برروی چگونگی ساختار رشتهها که اشخاص و روابط میان آنها را تحت تاثیر قرار میدهد نیز تمرکز میکند.
برخلاف تحلیلهایی که بر این فرض استوارند که هنجارهای اجتماعی تعیین کنندهٔ رفتارها هستند، آنالیز شبکههای اجتماعی به بررسی وسعت تاثیرگذاری ساختار و ترکیب رشتهها بر هنجارها میپردازد.
شکل یک شبکهٔ اجتماعی به تعیین میزان سودمندی شبکه برای افراد آن شبکه کمک میکند. به طور جزئی شبکههای محکم برای اعضایشان نسبت به شبکههایی که تعداد زیادی اتصالات ضعیف برای افراد خارج از شبکهٔ اصلی دارند، کمتر مفید واقع میشوند. بیشتر شبکههای باز با اتصالات اجتماعی و رشتههای ضعیف، شانس بیشتری برای دسترسی به ایدهها و دست آوردهای جدید نسبت به شبکههای بسته با رشتههای طویل فراهم میآورد. به بیان دیگر گروهی از دوستان که تنها دارای ارتباط با یکدیگر هستند، اطلاعات و دست آوردهای یکسانی را به اشتراک میگذارند. اما گروهی از افراد که دارای ارتباط با بخشهای اجتماعی دیگر هستند شانس بیشتری برای دسترسی به محدودهٔ وسیعتری از اطلاعات دارند. افراد برای دستیابی به موفقیت بهتر است که با شبکههای گوناگونی ارتباط داشته باشند تا اینکه ارتباطات زیادی درون یک شبکه داشته باشند. به طور مشابه افراد میتوانند تأثیرگذاری و ایفای نقش به عنوان واسطه در برقراری ارتباط بین دو شبکه که به هم متصل نیستند را تمرین کنند.(این کار پر کردن سوراخهای ساختاری نامیده میشود.)
آنالیز شبکههای اجتماعی چشم انداز متناوبی را ایجاد میکند که در آن خواص افراد نسبت به ارتباطات و رشتههای میان آنها در شبکه از اهمیت کمتری برخوردار است. این معبر ایجاد شدهاست تا برای توضیح بسیاری از پدیدههای جهان واقعی مفید واقع شود، اما مجال کمتری برای نمایندگیهای فردی باقی میگذارد تا توانمندیهای فردیشان روی موفقیت تأثیرگذار باشد زیرا بخش زیادی از این توانمندیها درون ساختار شبکه باقی میماند.
شبکههای اجتماعی برای بررسی چگونگی تأثیرات متقابل میان تشکیلات، توصیف بسیاری از اتصالات غیررسمی که مجریان را به یکدیگر متصل میکند، نیز مورد استفاده قرار گرفتهاست و در این زمینهها نیز به خوبی برقراری ارتباطات فردی میان کارمندان در سازمانهای مختلف عمل میکند. شبکههای اجتماعی نقش کلیدی در موفقیتهای تجاری و پیشرفتهای کاری ایفا میکنند. شبکهها راههایی را برای شرکتها فراهم میکند که اطلاعات جمع آوری کنند، از رقابت بپرهیزند و حتی برای تنظیم قیمتها و سیاستها با هم تبانی کنند.
آشنایی با شبکههای اجتماعی اینترنتی
فضای مجازی مجال شکلگیری اجتماعات جدید از کاربران را فراهم میکند. از زمان تونیس (Tonnies) و تلاش او برای تعریف دو گونه تجمع انسانی یعنی «اجتماع» در مقابل «جامعه» (گزلشافت و گمنشافت) به بعد همه متفکران علوم اجتماعی و فرهنگی «رو در رو بودن»، «محدودیت تعداد»، و «ابتناء بر روابط عاطفی و نه روابط عقلانی را از خصائص بنیانی»اجتماع" عنوان کردهاند.
هر چند روابط کاربران فضای مجازی رابطهای با واسطهاست و نه رو در رو، بسیاری از مطالعه کنندگان اینترنت تمایل دارند از اصطلاح «اجتماع» برای اشاره به جمع کاربران استفاده کنند.
در این میان تلاشهای متعددی در حال انجام است تا حوزه و دامنه معنایی کاربردهای جدید این اصطلاح را برای اشاره به تجمعات کاربران فضای مجازی، روشن سازد. ازجمله میتوان به تلاشهای خانم شلینی ونچرلی اشاره کرد.
نظرات ونچرلی در سایت USINFO ارائه شدهاست. او به شبکهها و سازمانهای رسمی که به سامان بخشیدن به روابط و مقررات ارتباطاتی در فضای مجازی اشتغال دارند میپردازد و در ادامه به موضوع اجتماعات کاربران و خصوصیتهای آنها اشاره میکند.
شبکههای اجتماعی برپایه اینترنت از قبیل facebook.com و myspace.com در بین جوانان آمریکایی محبوبیت به سزایی کسب کردهاند. این شبکههای اجتماعی درعین حال که فضاهایی هستند که درآنها افراد دوستان جدیدی پیدا میکنند و یا دوستان قدیمی خود را در جریان تغییرات زندگی شان قرار میدهند، مکانهایی برای تبادل نظر هستند که در آنها جوانان عقاید و نظرات خود را با هم به اشتراک میگذارند.
این قابلیت که یک جوان بتواند با امثال خود در کشورهای دیگر جهان ارتباط برقرار کند باعث میشود تا این شبکهها به مکانی تبدیل شوند که در آنها ایدههای جدید معرفی میشوند و مورد بحث قرار میگیرند.
شبکههای اجتماعی اینترنتی در دنیا
استفاده از خدمات شبکههای اجتماعی، روزبهروز محبوبیت بیشتری پیدا میکند. هماکنون سایتهای شبکههای اجتماعی، بعد از پرتالهای بزرگی مثل یاهو یا اماسان موتورهای جستجو مثل گوگل، تبدیل به پراستفادهترین خدمت اینترنتی شدهاند.
خیلی از نهادهای مختلف جهانی و اینترنتی با اهداف گوناگون که مهمترین آنها تجاری و تبلیغاتی است، دست بهراهاندازی شبکههای اجتماعی زده یا درصدد خرید سهام مهمترین شبکههای اجتماعی دنیا هستند؛ مثل رقابت اخیر گوگل و مایکروسافت برسر سایت مایاسپیس و فیسبوک.
در رقابت مایاسپیس، پرکاربرترین سایت شبکه اجتماعی دنیا گوگل و در رقابت برسر فیسبوک، مایکروسافت برندهشد. ضمن اینکه یاهو هم بعد از راهاندازی نهچندان موفق «۳۶۰درجه»، به دنبال راهاندازی یک شبکه اجتماعی دیگر بهاسم «مش» است.
ناسا هم برای جذب جوانان علاقهمند به موضوعات هوافضا، یک شبکه اجتماعی را بر پایه استانداردهای نسل آینده وب و تنظیمات سایت خود راه اندازی کرد.
این شبکه اجتماعی جدید که مای ناسا نام دارد، بخشهای بسیار پیشرفتهای دارد که کاربران میتوانند از طریق آنها تصاویر و تفکرات خود را درباره موضوعات فضایی با سایر کاربران بهاشتراک بگذارند. مای ناسا یک نمونه بسیار اصلی از شبکههای اجتماعی است و یک محیط مجازی را میسازد که در آن کاربران میتوانند تمام موضوعات و مقولات مورد نظر و شخصی خود را جمعآوری کنند.
کاربران میتوانند در این شبکه اجتماعی جدید برای خود وبلاگ درست کنند و از وبلاگهایی نظیر وبلاگ یکی از مدیران ناسا که روایت بسیار شگفتانگیزی را از ماموریتهای فضایی خود نقل کردهاست، استفاده کنند.
شبکههای اجتماعی، بهخصوص آنهایی که کاربردهای معمولی و غیرتجاری دارند، مکانهایی در دنیای مجازی هستند که مردم خود را بهطور خلاصه معرفی میکنند و امکان برقراری ارتباط بین خود و همفکرانشان را در زمینههای مختلف مورد علاقه فراهم میکنند. البته در بعضی از این موارد مثل مایناسا سمت و سوی اصلی این علایق (فضا) مشخص است.
به نظر میرسد شبکههای اجتماعی در اینترنت، در آینده بیش از این هم اهمیت پیدا میکند. این شبکهها هماکنون هم روزبهروز محبوبتر میشوند. با شبکههای اجتماعی، دیگر افراد برای پیداکردن همفکران خود در موارد گوناگون تنها نیستند؛ یک دوست آرژانتینی برای تحلیل بازیهای بوکاجونیورز، یک دوست سوئدی برای صحبت در مورد فناوری اطلاعات، یک دوست فرانسوی برای صحبت در مورد فیلمهای سینمای مستقل یا یک دوست مصری برای بحث در مورد مسائل خاورمیانه.
مسلماً در دنیای حقیقی هیچگاه افراد علاقهمند، موضوعات موردعلاقه خود را به این گستردگی نمییافتند. این دلیل و شاید دلایل مشابه این، سرویسهای شبکههای اجتماعی را به یکی از مهمترین ارکان اینترنت در دو، سه سال اخیر تبدیل کردهاست.
گسترش شبکههای اجتماعی اینترنتی در ایران
در یک ساله اخیر وب سایت های که با نام شبکه اجتماعی در ایران فعالیت می کنن به طور روز افزونی در حال افزایش است تب فیسبوکی در ایران اوج گرفته و شبکه های اجتماعی زیادی که تا حدودی هم شبه به فیس بوک است خیلی زیاد شده تا یکسال قبل وقتی در گوگل کلمه شبکه اجتماعی را جستجو می کردیم به سختی در 5 صفح اول جستجو اثری از شبکه های اجتماعی بود ولی امروز وقتی کلمه شبکه اجتماعی را جستجو می کنی بالغ بر 21,800,000 نتایج جستجو نشان می دهد که نشانگر روشد بسیار چشمگیر آن در ایران است.
شبکههای اجتماعی اینترنتی در ایران
حدود ۴ سال پیش بود که مفهوم شبکههای اجتماعی بهطور گسترده با حضور اورکات در میان کاربران ایرانی رواج پیدا کرد و در مدت کوتاهی آنقدر سریع رشد کرد که پس از برزیل و آمریکا، ایران سومین کشور حاضر در اورکات شد.
اما درهمان زمان شایعاتی هم رواج پیدا کرد که نسبت به عضویت در این انجمن هشدار دادند. میگفتند که گوگل (گرداننده اورکات) از این طریق به اطلاعات شخصی، علایق و نظرات و ارتباطات خصوصی افراد دست پیدا میکند و ممکن است این کار باعث ازبینرفتن امنیت شخصی افراد شود.
چندی پیش دادگاهی در برزیل، از گوگل تقاضای اجرای محدودیتهایی در سرویس اورکات کرد تا گروههای نژادپرستانه از اورکات حذف شوند. البته گوگل از اجرای این تقاضا سرباز زدهاست.
گوگل اعلام کرده چون سرورهای گوگل که مرتبط با اورکات هستند، در آمریکا قرار دارند، کلیه امور مربوط به آن مطابق قوانین آمریکا بوده و نمیتوان قوانین برزیل یا سایر دولتها را در آن دخیل کرد اما گروههای خاصی را که بر خلاف قوانین داخلی اورکات بودهاند، شناسایی و بستهاست.
هرچند که یاهو ۳۶۰ هنوز مورد استفاده قرارمیگیرد، اما کاربران ایرانی به سراغ سایتهای شبکههای اجتماعی کمتر معروف و حتی شبکههای اجتماعی ایرانی میروند.
با نگاهی به تعداد کاربران ۲۴ شبکه اجتماعی پرطرفدار دنیا (جدول)، به آسانی میشود میزان تاثیرگذاری این شبکهها را درک کرد. این شبکهها مجموعاً بیش از یک میلیارد کاربر دارند و اگرچه تعامل زیادی بین کاربران آنها هست، اما بههرحال رقم فوقالعادهای است.
ساعت : 8:19 am | نویسنده : admin
|
مطلب بعدی