شبکه کلان‌شهری (MAN)

«شبکه کلان‌شهری» (Metropolitan Area Network) یک «شبکه رایانه‌ای» بزرگ است که معمولاً در سطح یک شهر گسترده می‌شود. در این شبکه‌ها معمولاً از «زیرساخت بی‌سیم» و یا اتصالات «فیبر نوری» جهت ارتباط محل‌های مختلف استفاده می‌شود.






شبکه گسترده (WAN)

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

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






شبکه متصل (Internetwork)

دو یا چند «شبکه» یا «زیرشبکه» (Subnet) که با استفاده از تجهیزاتی که در لایه ۳ یعنی «لایه شبکه» «مدل مرجع OSI» عمل می‌کنند مانند یک «مسیریاب»، به یکدیگر متصل می‌شوند تشکیل یک شبکه از شبکه‌ها یا «شبکه متصل» را می‌دهند. همچنین می‌توان شبکه‌ای که از اتصال داخلی میان شبکه‌های عمومی، خصوصی، تجاری، صنعتی یا دولتی به وجود می‌آید را «شبکه متصل» نامید.

در کاربردهای جدید شبکه‌های به هم متصل شده از قرارداد IP استفاده می‌کنند. بسته به اینکه چه کسانی یک شبکه از شبکه‌ها را مدیریت می‌کنند و اینکه چه کسانی در این شبکه عضو هستند، می‌توان سه نوع «شبکه متصل» دسته بندی نمود:

شبکه داخلی یا اینترانت (Intranet)
شبکه خارجی یا اکسترانت (Extranet)
شبکه‌اینترنت (Internet)

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






شبکه داخلی (Intranet)

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

به طور مثال شبکه ملی در ایران نوعی از شبکه‌های داخلی (اینترانت) می‌باشد.






شبکه خارجی (Extranet)

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






شبکه اینترنت (Internet)

شبکه ویژه‌ای از شبکه‌ها که حاصل اتصالات داخلی شبکه‌های دولتی، دانشگاهی، عمومی و خصوصی در سرتاسر دنیا است. این شبکه بر اساس شبکه اولیه‌ای کار می‌کند که «آرپانت» (ARPANET) نام داشت و به‌وسیله موسسه «آرپا» (ARPA) که وابسته به «وزارت دفاع ایالات متحده آمریکا» است ایجاد شد. همچنین منزلگاهی برای «وب جهان‌گستر» (WWW) است. در لاتین واژه Internet برای نامیدن آن بکار می‌رود که برای اشتباه نشدن با معنی عام واژه «شبکه متصل» حرف اول را بزرگ می‌نویسند.

اعضای شبکه اینترنت یا شرکت‌های سرویس دهنده آنها از «آدرسهای IP» استفاده می‌کنند. این آدرس‌ها از موسسات ثبت نام آدرس تهیه می‌شوند تا تخصیص آدرسها قابل کنترل باشد. همچنین «سرویس دهندگان اینترنت» و شرکت‌های بزرگ، اطلاعات مربوط به در دسترس بودن آدرس‌هایشان را بواسطه «قرارداد دروازه لبه» (BGP) با دیگر اعضای اینترنت مبادله می‌کنند.






اجزای اصلی سخت‌افزاری

همه شبکه‌ها از اجزای سخت‌افزاری پایه‌ای تشکیل شده‌اند تا گره‌های شبکه را به یکدیگر متصل کنند، مانند «کارت‌های شبکه»، «تکرارگر»ها، «هاب»ها، «پل»ها، «راهگزین»ها و «مسیریاب»ها. علاوه بر این، بعضی روشها برای اتصال این اجزای سخت‌افزاری لازم است که معمولاً از کابلهای الکتریکی استفاده می‌شود (از همه رایجتر «کابل رده ۵» (کابل Cat5) است)، و کمتر از آنها، ارتباطات میکروویو (مانند آی‌تریپل‌ئی ۸۰۲٫۱۱) و («کابل فیبر نوری» Optical Fiber Cable) بکار می‌روند.






کارت شبکه (network adapter)

«کارت شبکه»، «آداپتور شبکه» یا «کارت واسط شبکه» (Network Interface Card) قطعه‌ای از سخت‌افزار رایانه‌است و طراحی شده تا این امکان را به رایانه‌ها بدهد که بتوانند بر روی یک شبکه رایانه‌ای با یکدیگر ارتباط برقرار کنند. این قطعه دسترسی فیزیکی به یک رسانه شبکه را تامین می‌کند و با استفاده از «آدرسهای MAC»، سیستمی سطح پایین جهت آدرس دهی فراهم می‌کند. این شرایط به کاربران اجازه می‌دهد تا به وسیله کابل یا به صورت بی‌سیم به یکدیگر متصل شوند.






تکرارگر (repeater)

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






هاب (جعبه تقسیم)- hub

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






پل (bridge)

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







پل‌ها به سه دسته تقسیم می‌شوند:

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







راهگزین (switch)

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

از نظر فنی می‌توان گفت که راهگزین در «لایه پیوند داده» از «مدل مرجع OSI» عمل کنند. ولی بعضی انواع راهگزین قادرند تا در لایه‌های بالاتر نیز به بررسی محتویات بسته بپردازند و از اطلاعات بدست آمده برای تعیین مسیر مناسب ارسال بسته استفاده کنند. به این راه گزین‌ها به اصطلاح «راهگزین‌های چندلایه» (Multilayer Switch) می‌گویند.






مسیریاب (router)

«مسیریاب»ها تجهیزات شبکه‌ای هستند که بسته‌های داده را با استفاده از «سرایند»ها و «جدول ارسال» تعیین مسیر کرده، و ارسال می‌کنند. مسیریاب‌ها در «لایه شبکه» از «مدل مرجع OSI» عمل می‌کنند. همچنین مسیریاب‌ها اتصال بین بسترهای فیزیکی متفاوت را امکان‌پذیر می‌کنند. این کار با چک کردن سرایند یک بسته داده انجام می‌شود.

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





شبیه‌سازی شبکه
شبیه‌سازی شبکه (به انگلیسی: Network simulation) در ارتباطات و شبکه‌های رایانه‌ای تحقیقات کامپیوتری، شبیه‌سازی شبکه تکنیکی است که رفتار شبکه را با انجام محاسبات تراکنشها بین موجودیتهای مختلف شبکه و استفاده از فرمولهای ریاضی و گرفتن مشاهدات از محصولات شبکه مدل می‌کند. رفتار شبکه و کاربردهای مختلف و سرویسهایی که پشتیبانی می‌کند را می‌توان در تست آزمایشگاه مشاهده کرد. ویژگی‌های مخنلف محیط می‌تواند تحت تأثیر روشهای کنترل ارزیابی در شرایط مختلف تغییر کند. برنامه شبیه‌سازی که در اتصالات کاربردهای زنده و سرویسها برای مشاهده انتها به انتهای کارایی در صفحه نمایش کاربر استفاده می‌شود به شبیه‌سازی شبکه (به انگلیسی: Network_emulation) اشاره دارد.






شبیه‌ساز شبکه

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






شبیه‌سازها

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

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

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

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






مثالهایی از شبیه‌سازهای شبکه

مثالهایی از نرم‌افزارهای شبیه‌سازی شبکه برجسته، که بعد از اینکه چند وقت یکبار در مقالات تحقیقاتی ذکر شدند مرتب شده‌اند:

Ns2/ns3
آپنت
نتسیم





کاربرد شبیه‌سازهای شبکه

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

انواع مختلف تکنولوژی‌های Wide Area Network، TCP,ATM,IP است. و تکنولوژی شبکه‌های شبکه محلی اترنت و توکن رینگ است. همگی می‌توانند با نوعی از شبیه‌سازها شبیه‌سازی شوند و کاربران می‌توانند انواع مختلف استانداردها و استراتژی‌های مسیریابی را تست و تحلیل کنند. همچنین شبیه‌سازهای شبکه به طور گسترده برای شبیه‌سازی شبکه‌های میدان جنگ در جنگ شبکه محور کاربرد دارند.

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






جریان ترافیک
در شبکه‌های سوئیچینگ بسته جریان ترافیک(به انگلیسی: traffic flow)، جریان بسته یا جریان شبکه یک دنباله‌ای از بسته‌ها از یک منبعکامپیوتر به یک مقصد می‌باشد که ممکن است برای یک میزبان دیگر یا فرستادن اطلاعات به چند شبکه به طور هم زمان باشد. RFC2722 جریان ترافیک را معادل "یک تماس یا ارتباط منطقی" تعریف می‌کند. RFC3697 جریان ترافیک را " دنباله‌ای از بسته‌های اطلاعاتی که از یک منبع خاص به یک مقصد خاص یا به گروهی از کامپیوترها ارسال می‌شوند" تعریف می‌کند. جریان می‌تواند همه بسته‌ها در یک انتقال داده یا جریانی از رسانه‌ها را شامل شود. به هر طریق، در یک ارتباط برای انتقال داده‌ها لازم نیست جریان به صورت ۱ به ۱ نگاشته شود. همچنین در RFC3917 جریان "به عنوان یک سری از بسته‌های اطلاعاتی در حال عبور از شبکه در یک بازه زمانی خاص" تعریف می‌شود.






توضیحات مفهومی

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

آدرس IP منبع و مقصد
پورت منبع و مقصد
پروتکل‌های لایه ۴ (TCP/UDP/ICMP)







جریان UDP و ICMP

تمام بسته‌هایی که آدرس منبع/پورت و آدرس مقصد/پورت یکسانی در یک بازه زمانی داشته باشند، به عنوان یک جریان در نظر گرفته می‌شوند. به دلیل اینکه UDP یک جهته است، یک جریان ایجاد می‌کند.ICMP دو سویه است، پس دو جریان را ایجاد می‌کند.






جریان TCP

برقراری یک ارتباط TCP با یک دست تکانی سه مرحله‌ای آغاز می‌شود و دو جریان را ایجاد می‌کند. یکی از A به B، دیگری از B به A، که A و B شامل IP-Port منبع و مقصد هستند.
جریان TCP با یک دست تکانی چهار مرحله‌ای یا با یک Time-Out پایان می‌پذیرد.






دیگر پروتکل ها

همچنین بسته‌های دیگر پروتکل‌ها می‌توانند به جریان شبکه گروه بندی شوند. پروتکل‌های دیگری نیز برای انتقال وجود دارند. بعضی پروتکل‌ها از لایه ۴ به عنوان حامل استفاده می‌کنند. به عنوان مثال ترافیک HTTP توسط TCP/IP ایجاد می‌شود و یک جریان را به عنوان یک ارتباط می‌سازد و خاتمه می‌دهد.






ابزاری برای مدیریت شبکه

مفاهیم مهم هستند، چرا که ممکن است که بسته‌های اطلاعاتی از یک جریان نیاز باشد متفاوت از دیگران به کار گرفته شود. با استفاده از صف‌های جداگانه در سوئیچ‌ها روترها و کارت‌های شبکه برای دست یابی به شکل دادن ترافیک، صف منصفانه یا کیفیت خدمات. این همچنین یک مفهومی است که در تجزیه و تحلیل شبکه یا ردیابی بسته‌ها مورد استفاده قرار می‌گیرد. در روترهای به کار گرفته شده برای اینترنت، یک جریان ممکن است به صورت یک مسیر ارتباطی میزبان به میزبان باشد، یا یک سوکت به سوکتشناسایی ارتباط توسط یک ترکیب منحصربه‌فرد از آدرس‌های مبداء و مقصد و شماره پورت به همراه پروتکل‌های انتقال (برای مثالTCP یا UDP). در حالت TCP یک جریان ممکن است یک مدار مجازی باشد یا یک ارتباط مجازی یا جریانی از بایت‌ها در سوئیچینگ بسته‌ای جریان ممکن است به وسیله برچسب شبکه محلی مجازی به شبکه‌های اترنت IEEE 802.1Q شناسایی شود و یا یک برچسب تغییر مسیر در MPLS تگ سوئیچینگ.






قرارداد ارتباطات

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

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






کارکردها

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

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







برخی انواع پروتکل‌ها

برخی انواع شناخته شدهٔ پروتکل‌ها عبارتند از:

SNMP (اس‌ان‌ام‌پی)
TCP (تی‌سی‌پی)
UDP (یودی پی)
IP (آی‌پی)
FTP (اف‌تی‌پی)
SNMP
TelNet (تل‌نت)
قرارداد ساده نامه‌رسانی
HTTP (اچ‌تی‌تی‌پی)
NNTP (ان‌ان‌تی‌پی)
POP۳ (پاپ‌تری)
تبادل بسته بین‌شبکه‌ای
IPX/SPX






بیت بر ثانیه

نرخ بیت، سرعت بیت (به انگلیسی: Bitrate/Bit rate) یا بیت بر ثانیه به معنای سرعت انتقال بیت از محلی به محل دیگر است. به بیان دیگر نرخ بیت نشان می‌دهد که در مدت زمانی معینی چه مقدار اطلاعات از جایی به جای دیگر ارسال می‌شود. معمولاً نرخ بیت را با بیت بر ثانیه (bps)، کیلوبیت بر ثانیه (kbps) یا مگابیت بر ثانیه (Mbps) اندازه می‌گیرند.


نرخ بیت همچنین می‌تواند کیفیت یک فایل صوتی یا ویدئویی را نشان دهد. برای مثال یک فایل MP3 که با نرخ بیت ۱۹۲ کیلوبیت بر ثانیه فشرده شده باشد نسبت به فایلی که با نرخ بیت ۱۲۸ کیلوبیت بر ثانیه فشرده شده باشد دارای کیفیت بهتری است. در واقع هر چه نرخ بیت بالاتر باشد بیت‌های بیشتری برای ارائه اطلاعات در هر ثانیه به کار می‌روند. به همین نحو یک فایل ویدئویی با نرخ بیت ۳۰۰۰ کیلوبیت بر ثانیه دارای کیفیت بیشتری نسبت به یک فایل ویدئویی با نرخ بیت ۱۰۰۰ کیلو بیت بر ثانیه است.






ارتباط

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

برخی از دانشمندان و کار‌شناسان، در مورد اینکه ارتباطات یک علم است (Science) اختلاف نظر دارند. هنوز برخی از اساتید این حوزه مانند رابرت کریگ (Robert T. Craig) «ارتباطات» را یک حوزه مطالعاتی (Communication Theory as a Field) می‌دانند. این دیدگاه می‌خواهد تاکید کند که ارتباطات به لحاظ وسعت، عمق و تنوعی که دارد نمی‌تواند در یک رشته علمی گنجانده شود، بلکه فرا‌تر از آن باید به آن به عنوان یک حوزه علمی و مطالعاتی نگاه کرد که از آن چندین رشته علمی می‌تواند زاییده شود.به عبارت، باید به «علوم ارتباطات» قائل بود و نه «علم ارتباطات».






ارتباط انسانی

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






ارتباطات غیر کلامی

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






ارتباطات تصویری

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






ارتباطات کلامی

ارتباطات کلامی، در حالیکه دردرجه اول به ارتباط کلامی سخن اشاره می کند گفته می شود، به طور معمول در هر دو واژه، کمک های کلامی و غیر کلامی عناصر برای حمایت از انتقال معنی تکیه دارد.ارتباط کلامی شامل بحث وگفتگو، سخنرانی ها، نمایش ها، ارتباطات بین فردی و بسیاری از انواع دیگر است. در ارتباطات چهره به چهره زبان بدن و چگونگی صدا نقش مهمی را بر عهده دارد و ممکن است تاثیر بیشتری بر شنونده داشته باشد نسبت به محتوای در نظر گرفته شده از واژه هایی که گفته شد. مجری ماهر باید توجه مخاطب و ارتباط با آنها را در نظر بگیرد.به عنوان مثال از گفتن یک جک توسط دو نفر یکی ممکن است مخاطب را با توجه به زبان بدنش و تن صدایش بسیار سرگرم کند در حالیکه نفر دوم با استفاده ی دقیق از همان کلمات شنوندگان را خسته و عصبانی کندنیازمند نقل قول کمک های بصری می تواند به آسان کردن ارتباطات موثر کمک کند وتقریبا همیشه در سخنرانی ها برای مخاطبان استفاده می شود. به طور گسترده ای گفته شد و به طور گسترده شکلی که به اشتباه تفسیر شداستفاده شد تا اهمیت حالت تحویل را تاکید کند"ارتباطات شامل ۵۵٪ زبان بدن،۳۸٪ تن صدا،۷٪محتوای کلمات،"به اصطلاح"قانون ۷٪ـ۳۸٪ـ۵۵٪" با این حال این چیزی نیست که تحقیقات اخیر ذکر کردـ بلکه، زمان انتقال احساسات، اگر زبان بدن، لحن صدا، و واژه ناسازگار باشند درآن هنگام زبان بدن و لحن صدا را بیشتر از یک کلمه باور خواهند داشت‌‌‌‍نیازمند روشن به طور مثال شخصی در حالی که من من کنان، قوز کرده، با نگاه به دور می گوید"از ملاقات شما خوشحال هستم"به عنوان بی احترامی تفسیر خواهد شد(بحث بیشتر در آلبرت محرابیان، سه عنصر از ارتباطات) مدل ارتباطات:نوشته شده شفاهی تصویری الکترونیکی غیر شفاهی






ارتباطات نوشتاری و توسعه آن در طول تاریخ

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






ارتباطات غیر انسانی

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






ارتباطات حیوانات

حوزه گسترده ای از ارتباطات حیوانی شامل بسیاری از مسائل ETHOLOGY است.ارتباطات حیوانات می تواند به عنوان هر رفتار یک حیوان که به رفتار کنونی و آینده دیگر حیوانات تاثیر می گذارد تعریف شود.به مطالعه ارتباطات حیوانی جانور شناسی گفته می شود (وتشخیص از انسان شناسی، مطالعه ارتباطات انسانی)نقش مهمی را درتوسعه نژاد شناسی، جامعه شناسی و مطالعه شناخت حیوانات بازی کرده است.ارتباطات حیوانات، در واقع مفهوم درستی از دنیای حیوانات است به طور کلی، دریک رشته به سرعت در حال رشد، و حتی در قرن ۲۱ میلادی تا کنون، بسیاری از برداشت های اولیه مربوط به زمینه های مختلف از جمله استفاده از نام شخصی نمادین، احساسات حیوانات، فرهنگ حیوانات و یادگیری، و حتی رفتار جنسی، در استدلال های طولانی تغییرات اساسی به خوبی شناخته شده است.






گیاهان و قارچ ها

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






مدل ارتباطات

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







مدل ارتباطات متقابل

اولین مدل عمده برای ارتباط به وسیله کلود شانون و وارن ویور برای آزمایشگاه های بل (۶)در سال ۱۹۴۹ آمد.مدل اصلی به جهت بازتاب کردن عملکرد رادیو و فن آوری های تلفن طراحی شده بود. مدل اولیه آنها متشکل بود از سه بخش اصلی:فرستنده، کانال و گیرنده.فرستنده قسمتی از تلفنی بود که شخص با آن صحبت می کرد، کانال خود تلفن بود، و گیرنده قسمتی از تلفن بود که در آن یک نفر می تواند صدای فرد دیگری را بشنود.شانون و ویور همچنین فهمیده بودند که بیشتر اوقات ایستگاهی وجود دارد که مانع گوش دادن به یک مکالمه تلفنی می شود، که آنها پنداشتند پارازیت است. در یک مدل ساده، اغلب بعنوان مدل انتقال یا نمای استاندارد از ارتباطات، اطلاعات یا مضمون(برای مثال یک پیام در زبان طبیعی )به چند شکل فرستاده می شود(بعنوان زبان گفتاری)از یک emisor / فرستنده/رمز گذار به یک مقصد/گیرنده/رمز گشا.(این مفهوم معمولی ا زارتباطات براحتی ارتباط را وسیله ای برای گرفتن و فرستادن اطلاعات می بیند.)نقاط قوت این مدل سادگی، کلی گرایی و کمیت گرایی است.دانشمندان اجتماعی کلود شانون و وارن ویور ساختار این مدل را بر اساس عناصر زیر بیان کردند:

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

شانون و ویور استدلال کردند که در این نظریه سه سطح از مشکلات برای ارتباط وجود دارد.

مشکل فنی:چطور می توان با دقت پیام را انتقال داد؟
مشکل معنایی:چقد رمعنی "انتقال"دقیق است؟
مشکل عامل موثر:چگونه به طور موثر معنی رفتار و تاثیر گذار را دریافت می کند؟







نقد و بررسی مدل انتقال با بیان دانیل چندلر:

فرض می شود پیام دهنده ها افراد منزوی هستند.
بدون هزینه برای اهداف متفاوت.
بدون هزینه برای تفسیرهای متفاوت..
بدون هزینه براری روابط نابرابر قدرت
بدون هزینه برای موقعیت متن.

در سال ۱۹۶۰، دیوید برلو مدل خطی ارتباط شانون و ویور (سال ۱۹۴۹)را گسترش داد و مدل ارتباط smcr را ایجاد کرد. مدل ارتباطی فرستنده ـ پیام ـ کانال ـ گیرنده ـ مدل را به درون بخش های متخصصی جدا می کند و توسط دانشمندان دیگر گسترش یافته است. ارتباطات معمولا همراه چند بعد اصلی توصیف می شود:پیام(چه نوع کارهایی ارتباط برقرار می کند)، منبع /emisor / فرستنده/ رمز گذار (توسط اشخاص)، شکل (در فرم)، کانال(به واسطه رسانه)، مقصد/ گیرنده/ هدف/ رمز گشا (به اشخاص)، و گیرنده.ویلبر اسکرم (۱۹۴۵)نیز نشان داد که ما باید بررسی کنیم که یک پیغام(خواسته یا نا خواسته)در هدف پیام تاثیر دارد. میان طرفین، ارتباطات شامل اعمالی نظیر دانش تجربی مشورت، ارائه مشاوره و فرمان، پرسش سوال می باشد و این اعمال ممکن است در یکی از راههای مختلف ارتباطات فرایندهای زیادی داشته باشد. این شکل بستگی به توانایی ارتباط گروه دارد. محتوا و شکل ارتباط با هم می سازندپیامی را که به سوی مقصد فرستاده می شود.هدف می تواند خود شخص، شخص یا موجود دیگر، نهاد دیگر(مانند یک شرکت یا گروهی از موجودات)باشد.ارتباط می تواند به عنوان اداره ی فرایندهای انتقال اطلاعات به وسیله سه سطح از قواعد وابسته به طبی دیده می شود:







نحوی(خواص رسمی از نشانه ها و نمادها)
عمل گرا(در رابطه با روابط بین نشانه ها/اصطلاحات و کاربران آنها)و
معنایی(مطالعه روابط بین نشانه ها و نمادهاو آنچه که آنها نشان می دهند)

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

با توجه به این نقاط ضعف، بارنلود(۲۰۰۸)یک مدل معاملاتی از ارتباط را پیشنهاد کرد.فرضیه اصل مدل معاملاتی ارتباطات این است که ارسال و دریافت پیام را به صورت همزمان بکار می گیرند.

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

نظریه هایcoregulation توصیف می کند ارتباطات را به عنوان یک فرایند خلاق و پویا و مداوم، به جای تبادل گسسته از اطلاعات است.رسانه های کانادایی محقق هارولد لنیس داشت نظریه ای که مردم استفاده می کنند انواع مختلف رسانه ها به ارتباط و که یکی از آنها انتخاب خواهد شد به استفاده از امکانات مختلف برای شکل و دوام جامعه(وارک، مکنزی ۱۹۹۷) ارائه دهد.مثال معروف او این است که با استفاده از مصر باستان و نگاه در راه های آنها که خودشان به واسطه رسانه ها با خواص خیلی مختلف سنگ و پاپیروس می ساختند.پاپیروس چیزی است که او"فضا صحافی" می نامد.آن ساخته شده ممکن است انتقال دهد دستورات نوشته شده د رفضای امپراتوری و جنبش لشکر کشی های نظامی دور و دولت استعماری را قادر می سازد.سنگ دیگر "زمان اتصال" است، از طریق ساخت معبد و اهرام می تواند اقتدار نسل به نسل خود را حفظ کند، از طریق این رسانه ها می توانند آنها شکل ارتباط را در جامعه خود تغییر دهند(وارک، مکنزی ۱۹۹۷).







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

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







مطالعات رسانه‌ای

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

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

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






رشته دانشگاهی

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

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

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

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

به طور کلی می‌توان گفت از نسبت میان علوم ارتباطات با سیاست، گرایشی تحت عنوان ارتباطات سیاسی از نسبت میان ارتباطات و توسعه گرایشی تحت عنوان ارتباطات و توسعه و از نسبت میان مدیریت و ارتباطات رشته روابط عمومی شکل گرفته است. رشته روزنامه نگاری نیز که بنیان اولیه این رشته محسوب می گردد. تحولات بوجود آمده در حوزه ارتباطات راه دور اینترنت و شبکه نیز موضوع و گرایش مهم دیگری در مطالعات ارتباطات است. مطالعه رسانه‌ها با رویکرد نقد فرهنگی از حوزه‌های دیگر این رشته است...
8:25 pm
کاربرد برنامه نویسی

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





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

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

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



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

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

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

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

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

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

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

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

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

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




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


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

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

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



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

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


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



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

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

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

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



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

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

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


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


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



خصوصیات

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

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


پیاده سازی

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

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

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

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



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

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

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

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



پالایش

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

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

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

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

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

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

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

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




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

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

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

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

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




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

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

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

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

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

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

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