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

اجماع
اجماع، کنسانسوس یا آئین وفاق عام در دو معنا کاربرد دارد. اول به معنای توافقی عام میان اعضای یک گروه که با در نظر گرفتن آراء هر یک از افراد، چه در مرحله تصمیمسازی و چه در اقدامات پیرو آن، به دست آمدهاست و دوم نظریه و آئینی که برای دستیابی به چنین توافقی مورد استفاده است. این آئین که از آن با نام تصمیمگیری اجماعی هم یاد میشود، یک روش تصمیمگیری گروهی است که هدف آن نهتنها به دنبال یافتن همرایی بیشینه اعضا بلکه برطرف کردن دشواریهای گروه کمینه است. تصمیمگیری اجماعی بیشتر نوعی تفاهم همگانی قلمداد میشود. این روش توسط بسیاری از گروههای گوناگون عقیدتی، مالی، سیاسی، و حتی پروژههای برخط استفاده میشود. در این روش:
بیشینه دستاندرکاران باید شرکت کنند
به صورت فعال در تصمیمگیری دخالت کنند
همه باید همکاری کنند که به بهترین جواب مورد پسند گروه برسند
همهٔ هموندان باید حق ارائه، مخالفت، وتو، و یا بستن پیشنهاد را داشته باشند
رسیدن به اجماع نیازمند توجه جدی به نظرات مطروحه هر یک از اعضای گروه است. وقتی که تصمیمی بر مبنای اجماع اتخاذ میشود، میبایست به صلاحدید اعضا در اقدامات بعدی نیز اعتماد کرد.
در فقه اسلامی اجماع علمای اسلامی یکی از منابع تعیین احکام شرعی محسوب میشود. این نوع از اجماع شرایط خاصی دارد که در مقاله اجماع (فقه) تشریح شدهاست.
اشک تمساح
اشک تمساح اصطلاحی است مشترک در بین چندین زبان دنیا برای بیان کنایهآمیز تاسفها و اشکهای ناصادق. عبارت اشک تمساح در یکی از نمایشنامههای شکسپیر نیز ذکر شدهاست.
در برخی از فرهنگها افسانهای وجود که دارد که گریه کردن تمساح را بعد از شکار قربانی یا برای اغفال آن بیان میکند. برخی این افسانه را منشا این اصطلاح دانستهاند.
نکته جالب آنکه در دنیای واقعی، تمساحان قدرت اشک ریختن برای ابراز احساسات ندارند و این تنها انسان است که قادر به عمل ارتباطی گریه کردن است.
حکایت
ریشهی واژه
واژهی حکایت برگرفته از واژهی محاکات به معنای مشابه کسی یا چیزی شدن، مانند چیزی را به گفتار یا کردار آوردن، است (همتراز محاکات، یعنی؛ mimesis از ریشهی mime یونانیست که واژهی فارسی «میمون» را میتوان همریشه با آن دانست، میمون در باور ما تقلیدکننده است.). از اینرو میتوان حکایت را شبیه سازیای تخیلی از دنیا دانست.
حکایت چیست؟
حکایت نوعی از داستان کوتاه است که در آن درس یا نکته ای اخلاقی نهفته است. این درس یا نکته بیشتر در پایان حکایت بر خواننده آشکار میشود. شخصیتهای حکایت آدمها، حیوانات یا اشیای بیجانند. زمانی که حیوانات شخصیت حکایتند، مانند انسانها سخن می گویند و احساسات انسانی از خود نشان می دهند. یکی از بهترین نمونههای حکایت در زبان فارسی را میتوان در هزار و یک شب دید.
حکایتها معمولاً طوری نوشته میشوند که خواننده به سادگی آنها را درک کند. ادبیاتی را که در حکایتها به کار برده میشود، ادبیات تعلیمی مینامند.
برخی حکایتها از نسلی به نسل دیگر بازگو میشود. بیشتر در حکایت با استعاره از اشیا و یا حیوانات، نابخردی انسان در رفتار و منشش به وی نشان داده می شود. گاهی حکایت آکنده از طنز یا هزل است. در ضمن حکایت نام آلبومی موسیقی مشهوری از استاد سیاوش قمیشی و مسعود فردمنش نیز می باشد.
برخی از نمادها در حکایت
در حکایت برخی از حیوانات به خاطر رفتار ویژه شناخته شده اند.
شیر: بی باکی و شجاعت
خروس: لافزنی
طاووس: غرور
روباه: فریبکاری
گرگ: زیاده خواهی و آزمندی
اسب: دلاوری
گاو: بی خردی
خر: پرکاری
ویژگیهای حکایت
با بررسی حکایات و تحلیل آنها میتوان ویژگیهای زیر را در بیشتر آنها یافت.
زمان و مکان رویدادهایش نامشخص است.
معمولاً انباشته از گزافهها و اغراقها و عوامل فوق طبیعی است که از محدودهی تواناییها و امکانات انسان بیرون است.
بیشتر به وصف چیزهایی میپردازد که هرگز رخ ندادهاند و حتی امکان رخ دادنشان نیز نیست. (محال وجودی) و در بیشتر موارد حتی ممکن عقلی نیز نیستند.
پیرنگ داستانی سست و فاقد وحدت و انسجامیدارند.
معمولاً در پی بیان پند و اندرز و نکتهی خاصی است و کمتر جنبهی سرگرمی دارد.
بیشتر آنها از یک الگوی ثابت پیروی میکنند مانند آنچه پراپ در کتاب «ریخت شناسی قصههای پریان» در مورد ساختار قصههای موسوم به قصههای پریان بررسی میکند.
بیشتر آنها ویژگیهای کهن الگویی دارند.
اشخاص در حکایت پرداخت نشده و به شخصیت، طبق نظریات امروزین شخصیت، نزدیک نشدهاند و فقط به عنوان بازیگرانی بدون ویژگیهای شخصیت در حکایت ایفای نقش میکنند.
گونهی زبانی همهی بازیگران آنها یکسان است و نمیتوان بر اساس زبان بازیگر به طبقهی اجتماعی- اقتصادی، سن، جنسیت یا شغل او پی برد.
راوی بیشتر آنها همهچیزدان است و چیزی بر او پنهان نمیماند و بر گذشته و آینده حکایت واقف است و معمولاً سرنوشت بازیگران را در ابتدای حکایت افشا میکند. در مواردی که راوی همهچیزدان نیست قواعد و اصول زاویهی دید راوی رعایت نشده است.
بازیگران (قهرمانen یا ضد قهرمانen) در حکایت چهرهای کاملاً سیاه یا سفید دارند، یعنی؛ یا بسیار خوب و منزهاند یا بسیار بد و شرور. به ندرت در بعضی از حکایات بازیگری خاکستری که طبیعی و عادی باشد، میتوان دید.
در حکایت صرفاً به بیان حالات و صفات بیرونی بازیگران توجه شده است و حالات درونی و ذهنی بازیگران نادیده گرفته شده است.
توصیفها در حکایت بسیار جزیی و الکن است.
زبان قصههای عامیانه زبان ادبی نیست
آثار و پژوهشگران قصههای عامیانه
بسیاری از قصههای عامیانه که نوعی حکایت به شمار میآیند به صورت شفاهی انتقال یافتهاند، در ایران قصهپردازی و نقل حکایت از دیرباز مرسوم بوده، بسیاری از ویژگیهای ذکر شده را میتوان در نمونههای زیبایی از حکایتهای مثنوی معنوی، کلیله و دمنه، هفت پیکر، خسرو و شیرین و ... البته با زبان و پرداختی ادبی دید. صادق هدایت برخی از حکایتها و قصههای عامیانه را جمعآوری کرد، پس از او کسانی در این راه کوششهایی نمودند، از جمله علی اشرف درویشیان. حکایات سید اشرف الدین گیلانی در مجموعه "گلزار ادبی".
متل (قصه)
متل . م َ ت َ به قصههای کوتاه سرگرم کننده با مضامین لطیف و آموزنده گفته میشود که تمام یا قسمتی از آن قافیه دار، شعرگونه و یا مانند بحر طویل باشد. قهرمان متلها اغلب حیوانات، ولی گاهی انسانها و یا مظاهر طبیعت هستند.
امروزه متل به داستانهای منظوم کودکانه گفته میشود. معمولاً مصرعهای متل کوتاه است. دویدم و دویدم و اتل متل توتوله از متلهای معروف فارسی است.
نظرسنجی
نظرسنجی نوعی روش تحقیق پیمایشی است که در آن دیدگاه گروهی از افراد در مورد یک موضوع مورد مطالعه قرار میگیرد. برای این کار، تعدادی پرسش محدود درباره موضوع مورد نظر تهیه میشود و نظر نمونهای از جامعه درباره آنها پرسیده میشود..
نتایج نظر سنجی
نظر سنجی به واسطه آمار و ارقام مهم و اغلب تکان دهنده ای که دارد در بعضی مواقع انتشار عمومی پیدا نمیکند.به عنوان مثال تا کنون هیچ آمار رسمی از تعداد معتادان در کشور در دست نیست.
نحوه نظر سنجی
هم اکنون در کشور های پیش رفته بهترین،دقیق ترین و کاربردی ترین نوع نظر سنجی،نظر سنجی اینترنتی است.ولی در کشورهایی مانند پاکستان و افغانستان که امکانات نظر سنجی اینترنتی به صورت همگانی میسر نیست،اغلب از شیوه های کلاسیک نظر سنجی مانند پرسش و پاسخ و یا مصاحبه استفاده میشود.
سرشماری
سرشماری عبارت است از شمارش و محاسبه تعداد کل نفرات یا اشیای مورد نظر مانند تعداد کل نفراتی که در یک کشور زندگی میکنند. سرشماری محدود به انسانها نیست و ممکن است شامل محصولات و کارگاههای صنعتی و کشاورزی نیز شود. یک نوع سرشماری نیز مربوط به حیات وحش است که طی آن گونه های مختلف حیوانات وحشی ازقبیل پرندگان،پستاندارن،آبزیان و خزندگان سرشماری میشوند که این کار توسط سازمان حفاظت محیط زیست در کشور اجرا شده و هدف از آن پی بردن به تعداد افراد جمعیت و مطالعه روی رفتارهای مهاجرتی آنهاصورت میپذیرد. تفاوت سرشماری با آمارگیری در این است که در سرشماری تعداد کل اعضای جامعه مورد نظر تک به تک شمارش و کنترل میشوند. اما در آمارگیری معمولاً درصد کوچکی از جامعه مورد مطالعه به عنوان نمونه آماری مورد مطالعه قرار میگیرند و سپس نتایج حاصله به کل جامعه مورد نظر تعمیم داده میشود.
تقریباً تمام کشورهای جهان به طور منظم تعداد افراد کشور را شمارش میکنند. بیشتر کشورها هر ده سال یکبار جمعیت را سرشماری میکنند. در سرشماری اطلاعات مهمی همچون میزان درآمد افراد، چگونگی محل زیست، متاهل یا مجرد بودن و تعداد فرزندان خانواده به دست میآید . در برخی کشورها سرشماری عمومی جمعیت هر پنج سال یکبار انجام میگیرد.
سرشماری در کشورها
ایران
در ایران نخستین سرشماری عمومی نفوس و مسکن در سال ۱۳۳۵ و واپسین آن در سال ۱۳۹۰ انجام شد. بنابر مادهٔ ۴ قانون مرکز آمار ایران، این سرشماری سراسری، هر پنج سال یک بار با فرمان رئیس جمهور اجـرا میشود. سرشماری بعدی نفوس و مسکن ایران در سال ۱۳۹۵ انجام میشود.
افغانستان
برپایه سرشماری مقدماتی کمیته ملی احصائیه افغانستان، جمعیت این کشور در سال ۱۳۸۵، ۲۴ میلیون تن است. گفته میشود از این تعداد ۱۲٬۳۰۰ میلیون تن مرد و ۱۱٬۸۰۰ میلیون تن زن هستند. ۷/۲۱٪ جمعیت کشور شهرنشین میباشند. مرحله اصلی سرشماری افغانستان در ماه سنبله ۱۳۸۷ صورت خواهد گرفت. این آمار شامل میلیونها مهاجر افغانی مقیم ایران، پاکستان و کشورهای دیگر نمیباشد. سازمان ملل پیش از این جمعیت افغانستان را ۲۹ میلیون نفر براورد کرده بود.
گردآوری داده
گردآوری داده به فرایند گردآوری و آمادهسازی داده برای پردازش گفته میشود. هدف از گردآوریداده بدست آوردن اطلاعات بهمنظور ثبت اتفاقات، تصمیمگیری، و یا گزارش اطلاعات به دیگران است. اساساً اطلاعات با در نظرگرفتن هدف نهایی گردآوری میشوند.
گردآوری داده معمولاً در مراحل اولیه هر پروژهای انجام میشود و شامل مراحل زیر است:
کارهای پیش از گردآوری — شامل توافق برسر تعاریف، روشها، اهداف و فرمت داده نهایی.
گردآوری داده
ارائه یافتهها — شامل به تصویرکشیدن، تحلیل، مرتبکردن و غیره.
نمونه (آمار)
نمونه در آمار به تعدادی از اجزا انتخاب شده با روش تصادفی از یک جامعه آماری گفته میشود که با بررسی مشخصات در نمونه فرضیات آماری در جامعه مرجع قابل تحقیق میباشند. اگر بخواهیم موضوعی خاص را در مورد جامعهای بررسی کنیم، میتوانیم تک تک اعضای آن مجموعه را مورد بررسی قرار دهیم. اما در راهی سادهتر میتوانیم موضوع را درمورد تعداد محدودی از جامعه آماری (که به تصادف، با دقت و مطالعه لازم انتخاب میشوند و تعدادشان به فراخور اندازه جامعه آماری تغییر میکند) بررسی کرده و نتیجه را به آن جامعه نسبت دهیم. در اینصورت مشکلاتی مانند در دسترس نبودن تمام اعضای جامعه، وقتگیر بودن، هزینه بالا و از بین رفتن جامعه در برخی مطالعات، مرتفع میگردند.
نمونهگیری
نمونهگیری یکی از مهمترین ارکان علم آمار است. یک نمونه باید طوری انتخاب شود که تنوع و به اندازه کافی بزرگ باشد تا نتایج حاصل قابل اعتماد باشند.
آمار
آمار (به انگلیسی: statistics) به مجموعهی دادههای عددی مربوط به یک موضوع (معمولا مهم)، مانند جمعیت، متوفیات، میزان تجارت داخلی یا خارجی، دما یا بارش ماهیانه و غیر گفته میشود. آمار را باید علم و عمل استخراج، بسط، و توسعهٔ دانشهای تجربی انسانی با استفاده از روشهای گردآوری، تنظیم، پرورش، و تحلیل دادههای تجربی (حاصل از اندازه گیری و آزمایش) دانست. زمینههای محاسباتی و رایانهای جدیدتری همچون یادگیری ماشینی، و کاوشهای ماشینی در دادهها، در واقع، امتداد و گسترش دانش گسترده و کهن از آمار به عهد محاسبات نو و دوران اعمال شیوههای ماشینی در همهجا میباشد. علم آمار، علم فن فراهم کردن دادههای کمّی و تحلیل آنها به منظور به دست آورن نتیایجی که اگرچه احتمالی است، اما در خور اعتماد است.
در صورتی که شاخهای علمی مد نظر نباشد، معنای آن، دادههایی بهشکل ارقام و اعداد واقعی یا تقریبی است که با استفاده از علم آمار میتوان با آنها رفتار کرد و عملیات ذکر شده در بالا را بر آنها انجام داد. بیشتر مردم با کلمة آمار به مفهومی که برای ثبت و نمایش اطلاعات عددی به کار میرود آشنا هستند. ولی این مفهوم منطبق با موضوع اصلی مورد بحث آمار نیست. آمار عمدتاً با وضعیتهایی سر و کار دارد که در آنها وقوع یک پیشامد به طور حتمی قابل پیش بینی نیست. اسنتاجهای آماری غالباً غیر حتمی اند، زیرا مبتنی بر اطلاعات ناکاملی هستند. در طول چندین دهه آمار فقط با بیان اطلاعات و مقادیر عددی در باره اقتصاد، جمعیتشناسی و اوضاع سیاسی حاکم در یک کشور سر و کار داشت. حتی امروز بسیاری از نشریات و گزارشهای دولتی که تودهای از آمار و ارقام را در بردارند معنی اولیه کلمه آمار را در ذهن زنده میکنند. اکثر افراد معمولی هنوز این تصویر غلط را در باره آمار دارند که آن را منحصر به ستونهای عددی سرگیجه آور و گاهی یک سری شکلهای مبهوت کننده میدانند. بنابراین، یادآوری این نکته ضروری است که نظریه و روشهای جدید آماری از حد ساختن جدولهای اعداد و نمودارها بسیار فراتر رفتهاند. آمار به عنوان یک موضوع علمی، امروزه شامل مفاهیم و روشهایی است که در تمام پژوهشهایی که مستلزم جمع آوری دادهها به وسیله یک فرایند آزمایش و مشاهده و انجام استنباط و نتیجه گیری به وسیله تجزیه و تحلیل این دادهها هستند اهمیت بسیار دارند.
علم آمار
علم آمار، خود مبتنی است بر نظریه آمار که شاخهای از ریاضیات کاربردی به حساب میآید. در نظریهٔ آمار، اتفاقات تصادفی و عدم قطعیت توسط نظریهٔ احتمالات مدلسازی میشوند. در این علم، مطالعه و قضاوت معقول در بارهٔ موضوعهای گوناگون، بر مبنای یک جمع انجام میشود و قضاوت در مورد یک فرد خاص، اصلاً مطرح نیست.
از جملهٔ مهمترین اهداف آمار، میتوان تولید «بهترین» اطّلاعات از دادههای موجود و سپس استخراج دانش از آن اطّلاعات را ذکر کرد. به همین سبب است که برخی از منابع، آمار را شاخهای از نظریه تصمیمها به شمار میآورند.
این علم به بخشهای آمار توصیفی و آمار استنباطی تقسیم میشود. از طرف دیگر میتوان آن را به دو بخش آمار کلاسیک و آمار بیز تقسیم بندی کرد. در آمار کلاسیک، که امروزه در دانشگاهها و دبیرستانها تدریس میگردد، ابتدا آزمایش و نتیجه را داریم و بعد بر اساس آنها فرضها را آزمون میکنیم. به عبارت دیگر ابتدا آزمایش انجام میشود و بعد فرض آزمون میگردد. در آمار بیزی ابتدا فرض در نظر گرفته میشود و دادهها با آن مطابقت داده میشوند به عبارت دیگر در آمار بیزی یک پیش توزیع داریم-توزیع پیشین- و بعد از مطالعه دادهها و برای رسیدن به آن توزیع پیشین، توزیع پسین را در نظر میگیریم.
علم آماری
شامل برنامهریزی و جمعبندی و تفسیر مشاهدات غیر قطعی است بهشکلی که∗:
اعداد نمایندهٔ واقعی مشاهدات بوده، غیر واقعی یا غلط نباشند.
بهنحو مفیدی تهیه و تنظیم شوند.
بهنحو صحیح تحلیل شوند.
قابل نتیجهگیری صحیح باشند.
روشهای آماری
مطالعات تجربی و مشاهداتی هدف کلی برای یک پروژه تحقیقی آماری، بررسی حوادث اتفاقی بوده و به ویژه نتیجه گیری روی تأثیر تغییرات در ارزش شاخصها یا متغیرهای غیر وابسته روی یک پاسخ یا متغیر وابستهاست. دو شیوه اصلی از مطالعات آماری تصادفی وجود دارد: مطالعات تجربی و مطالعات مشاهداتی. در هر دو نوع از این مطالعات، اثر تغییرات در یک متغیر (یا متغیرهای) غیر وابسته روی رفتار متغیرهای وابسته مشاهده میشود. اختلاف بین این دو شیوه درچگونگی مطالعهای است که عملاً هدایت میشود. یک مطالعه تجربی در بردارنده روشهای اندازه گیری سیستم تحت مطالعهاست که سیستم را تغییر میدهد و سپس با استفاده از روش مشابه اندازه گیریهای اضافی انجام میدهد تا مشخص سازد که آیا تغییرات انجام شده، مقادیر شاخصها را تغییر میدهد یا خیر. در مقابل یک مطالعه نظری، مداخلات تجربی را در بر نمیگیرد. در عوض دادهها جمع آوری میشوند و روابط بین پیش بینیها و جواب بررسی میشوند.
یک نمونه از مطالعه تجربی، مطالعات Hawthorne مشهور است که تلاش کرد تا تغییرات در محیط کار را در کمپانی الکتریک غربی Howthorne بیازماید. محققان علاقه مند بودند که آیا افزایش نور میتواند کارایی را در کارگران خط تولید افزایش دهد. محققان ابتدا کارایی را در کارخانه اندازه گیری کردند و سپس میزان نور را در یک قسمت از کارخانه تغییر دادند تا مشاهده کنند که آیا تغییر در نور میتواند کارایی را تغییر دهد. به واسطه خطا در اقدامات تجربی، به ویژه فقدان یک گروه کنترل محققاتی در حالی که قادر نبودند آنچه را که طراحی کرده بودند، انجام دهند قادر شدند تا محیط را با شیوه Hawthorne آماده سازند. یک نمونه از مطالعه مشاهداتی، مطالعه ایست که رابطه بین سیگار کشیدن و سرطان ریه را بررسی میکند. این نوع از مطالعه به طور اختصاصی از شیوهای استفاده میکند تا مشاهدات مورد علاقه را جمع آوری کند و سپس تجزیه و تحلیل آماری انجام دهد. در این مورد، محققان مشاهدات افراد سیگاری و غیر سیگاری را جمع آوری میکنند و سپس به تعداد موارد سرطان ریه در هر دو گروه توجه میکنند.
احتمالات
در زبان محاوره، احتمال یکی از چندین واژهای است که برای دانسته یا پیشامدهای غیر مطمئن به کار میرود و کم و بیش با واژههایی مانند ریسک، خطرناک، نامطمئن، مشکوک و بسته به متن قابل معاوضهاست. شانس، بخت، امتیاز و شرط بندی از لغات دیگری است که نشان دهنده برداشتهای مشابهی است. همانگونه که نظریه مکانیک به تعاریف دقیق ریاضی از عبارات متداولی مثل کار و نیرو میپردازد، نظریه احتمالات نیز تلاش دارد تا مفاهیم و برداشتهای مربوط به احتمالات را کمّی سازی کند.
نرمافزارها
آمار مدرن برای انجام بعضی از محاسبات خیلی پیچیده و بزرگ به وسیله رایانهها استفاده میشود. کل شاخههای آمار با استفاده از محاسبات کامپیوتری انجامپذیر شدهاند، برای مثال شبکههای عصبی. انقلاب کامپیوتری با یک توجه نو به آمار «آزمایشی» و «شناختیک» رویکردهایی برای آینده آمار داشتهاست.
یکی از مهمترین کاربردهای آمار و احتمال با استفاده از رایانه شبیه سازی است.
شبیه سازی نسخهای از بعضی وسایل حقیقی یا موقعیتهای کاری است. شبیه سازی تلاش دارد تا بعضی جنبههای رفتاری یک سیستم فیزیکی یا انتزاعی را به وسیله رفتار سیستم دیگری نمایش دهد. شبیه سازی در بسیاری از متون شامل مدل سازی سیستمهای طبیعی و سیتمهای انسانی استفاده میشود. برای به دست آوردن بینش نسبت به کارکرد این سیستمها در تکنولوژی و مهندسی ایمنی که هدف، آزمون بعضی سناریوهای عملی در دنیای واقعی است از شبیه سازی استفاده میشود. در شبیه سازی با استفاده از یک شبیه ساز یا وسیله دیگری در یک موقعیت ساختگی میتوان آثار واقعی بعضی شرایط احتمالی را بازسازی کرد.
۱- شبیه سازی فیزیکی و متقابل (شبیه سازی فیزیکی، به شبیه سازی اطلاق میشود که در آن اشیای فیزیکی به جای شی واقعی جایگزین میشوند و این اجسام فیزیکی اغلب به این خاطر استفاده میشوند که کوچکتر و ارزان تر از شی یا سیستم حقیقی هستند. شبیه سازی متقابل (تعاملی) که شکل خاصی از شبیه سازی فیزیکی است و غالباً به انسان در شبیه سازیهای حلقهای اطلاق میشود یعنی شبیه سازیهای فیزیکی که شامل انسان میشوند مثل مدل استفاده شده در شبیه ساز پرواز.)
۲- شبیه سازی در آموزش (شبیه سازی اغلب در آموزش پرسنل شهری و نظامی استفاده میشود. معمولاً هنگامی رخ میدهد که استفاده از تجهیزات در دنیای واقعی از لحاظ هزینه کمرشکن یا بسیار خطرناک است تا بتوان به کارآموزان اجازه استفاده از آنها را داده. در چنین موقعیتهایی کارآموزان وقت خود را با آموزش دروس ارزشمند در یک محیط واقعی «ایمن» میگذرانند. غالباً این اطمینان وجود دارد تا اجازه خطا را به کارآموزان در طی آموزش داد تا ارزیابی سیستم ایمنی– بحران صورت گیرد.)
شبیه سازیهای آموزشی به طور خاص در یکی از چهار گروه زیر قرار میگیرند:
الف - شبیه سازی زنده (جایی که افراد واقعی از تجهیزات شبیه سازی شده (یا آدمک) در دنیای واقعی استفاده میکنند.)
ب - شبیه سازی مجازی (جایی که افراد واقعی از تجهیزات شبیه سازی شده در دنیای شبیه سازی شده (یا محیط واقعی) استفاده میکنند.) یا
ج - شبیه سازی ساختاری (جایی که افراد شبیه سازی شده از تجهیزات شبیه سازی شده در یک محیط شبیه سازی شده استفاده میکنند. اغلب به عنوان بازی جنگی نامیده میشود زیرا که شباهتهایی با بازیهای جنگی رومیزی دارد که در آنها بازیکنان، سربازان و تجهیزات را اطراف یک میز هدایت میکنند.)
د - شبیه سازی ایفای نقش (جایی که افراد واقعی نقش یک کار واقعی را بازی میکنند.)
۳ - شبیه سازیهای پزشکی (شبیه سازهای پزشکی به طور فزایندهای در حال توسعه و کاربرد هستند تا روشهای درمانی و تشخیص و همچنین اصول پزشکی و تصمیم گیری به پرسنل بهداشتی آموزش داده شود. طیف شبیه سازها برای آموزش روشها از پایه مثل خونگیری تا جراحی لاپاراسکوپی و مراقبت از بیمار دچار ضربه، وسیع و گستردهاست. بسیاری از شبیه سازهای پزشکی دارای یک رایانه هستند که به یک ماکت پلاستیکی با آناتومی مشابه واقعی متصل است. در بعضی از آنها، ترسیمهای کامپیوتری تمام اجزای قابل رؤیت را به دست میدهد و با دستکاری در دستگاه میتوان جنبههای شبیه سازی شده کار را تولید کرد. بعضی از این دستگاهها دارای شبیه سازهای گرافیکی رایانهای برای تصویربرداری هستند مانند پرتو ایکس یا سایر تصاویر پزشکی. بعضی از شبیه سازهای بیمار، دارای یک مانکن انسان نما هستند که به داروهای تزریق شده واکنش میدهد و میتوان آن را برای خلق صحنههای مشابه فوریتهای پزشکی خطرناک برنامه ریزی کرد. بعضی از شبیه سازهای پزشکی از طریق شبکه اینترنت قابل گسترش هستند و با استفاده از جستجوگرهای استاندارد شبکه به تغییرات جواب میدهند. در حال حاضر، شبیه سازیها به موارد غربال گری پایه محدود شدهاند به نحوی که استفاده کنندگان از طریق وسایل امتیازدهی استاندارد با شبیه سازی در ارتباط هستند.)
۴ - شبیه سازهای پرواز (یک شبیه ساز پرواز برای آموزش خلبانان روی زمین مورد استفاده قرار میگیرد. به خلبان اجازه داده میشود تا به هواپیمای شبیه سازی شده اش آسیب برساند بدون آن که خود دچار آسیب شود. شبیه سازهای پرواز اغلب برای آموزش خلبانان استفاه میشوند تا هواپیما را در موقعیتهای بسیار خطرناک مثل زمین نشستن بدون داشتن موتور یا نقص کامل الکتریکی یا هیدرولیکی هدایت کنند. پیشرفتهترین شبیه سازها دارای سیستم بصری با کیفیت بالا و سیستم حرکت هیدرولیک هستند. کار با شبیه ساز به طور معمول نسبت به هواپیمای واقعی ارزان تر است.)
۵ - شبیه سازی و بازیها (هم چنین بسیاری از بازیهای ویدئویی شبیه ساز هستند که به طور ارزان تر آماده سازی شدهاند. بعضی اوقات از اینها به عنوان بازیهای شبیه سازی (sim) نامبرده میشود. چنین بازیهایی جنبههای گوناگون واقعی را شبیه سازی میکنند از اقتصاد گرفته تا وسایل هوانوردی مثل شبیه سازهای پرواز.)
۶ - شبیه سازی مهندسی (شبیه سازی یک مشخصه مهم در سیستمهای مهندسی است. برای مثال در مهندسی برق، از خطوط تأخیری استفاده میشود تا تأخیر تشدید شده و شیفت فاز ناشی از خط انتقال واقعی را شبیه سازی کنند. مشابهاً، از بارهای ظاهری میتوان برای شبیه سازی مقاومت بدون شبیه سازی تشدید استفاده کرد و از این حالت در مواقعی استفاده میشود که تشدید ناخواسته باشد. یک شبیه ساز ممکن است تنها چند تا از کارکردهای واحد را شبیه سازی کند که در مقابل با عملی است که تقلید نامیده میشود. ۷ - اغلب شبیه سازیهای مهندسی مستلزم مدل سازی ریاضی و بررسیهای کامپیوتری هستند. به هر حال موارد زیادی وجود دارد که مدل سازی ریاضی قابل اعتماد نیست. شبیه سازی مشکلات مکانیک سیالات اغلب مستلزم شبیه سازیهای ریاضی و فیزیکی است. در این موارد، مدلهای فیزیکی نیاز به شبیه سازی دینامیک دارند.)
۸ - شبیه سازی کامپیوتری (شبیه سازی رایانه، جزو مفیدی برای بسیاری از سیستمهای طبیعی در فیزیک، شیمی و زیستشناسی و نیز برای سیستمهای انسانی در اقتصاد و علوم اجتماعی (جامعهشناسی کامپیوتری) و همچنین در مهندسی برای به دست آوردن بینش نسبت به عمل این سیستمها شدهاست. یک نمونه خوب از سودمندی استفاده از رایانهها در شبیه سازی را میتوان در حیطه شبیه سازی ترافیک شبکه جستجو کرد. در چنین شبیه سازیهایی رفتار مدل هر شبیه سازی را مطابق با مجموعه پارامترهای اولیه منظور شده برای محیط تغییر خواهد داد. شبیه سازیهای کامپیوتری اغلب به این منظور به کار گرفته میشوند تا انسان از شبیه سازیهای حلقهای در امان باشد. به طور سنتی، مدل برداری رسمی سیستمها از طریق یک مدل ریاضی بودهاست به نحوی که تلاش در جهت یافتن راه حل تحلیلی برای مشکلات بودهاست که پیش بینی رفتار سیستم را با استفاده از یک سری پارامترها و شرایط اولیه ممکن ساختهاست. شبیه سازی کامپیوتری اغلب به عنوان یک ضمیمه یا جانشین برای سیستمهای مدل سازی است که در آنها راه حلهای تحلیلی بسته ساده ممکن نیست. انواع مختلفی از شبیه سازی کامپیوتری وجود دارد که وجه مشترک همه آنها در این است که تلاش میکند تا یک نمونه از برنامهای برای یک مدل تولید کنند که در آن امکان محاسبه کامل تمام حالات ممکن مدل مشکل یا غیر ممکن است.)
به طور رو به افزونی معمول شدهاست که نام انواع مختلفی از شبیه سازی شنیده میشود که به عنوان «محیطهای صناعی» اطلاق میشوند. این عنوان اتخاذ شدهاست تا تعریف شبیه سازی عملاً به تمام دستاوردهای حاصل از رایانه تعمیم داده شود.
۹ - شبیه سازی در علم رایانه (در برنامه نویسی کامپیوتری، یک شبیه ساز اغلب برای اجرای برنامهای مورد استفاده قرار میگیرد که انجام آن برای رایانه با مقداری دشواری همراه است. برای مثال، شبیه سازها معمولاً برای رفع عیب یک ریزبرنامه استفاده میشوند. از آن جایی که کار کامپیوتر شبیه سازی شدهاست، تمام اطلاعات در مورد کار رایانه مستقیماً در دسترس برنامه دهندهاست و سرعت و اجرای شبیه سازی را میتوان تغییر داد. همچنین شبیه سازها برای تفسیر درختهای عیب یا تست کردن طراحیهای منطقی VLSI قبل از ساخت مورد استفاده قرار میگیرند. در علم رایانه نظریه، عبارت شبیه سازی نشان دهنده یک رابطه بین سیستمهای انتقال وضعیت است که این در مطالعه مفاهیم اجرایی سودمند است.)
۱۰ - شبیه سازی در تعلیم و تربیت (شبیه سازیها در تعلیم و تربیت گاهی مثل شبیه سازیهای آموزشی هستند. آنها روی وظایف خاص متمرکز میشوند. در گذشته از ویدئو برای معلمین و دانش آموزان استفاده میشود تا مشاهده کنند، مسائل را حل کنند و نقش بازی کنند؛ هرچند، یک استفاده جدید تر از شبیه سازیها در تعلیم و تربیت شامل فیلمهای انیمیشن است (ANV.(ANVها نوعی فیلم ویدئویی کارتون مانند با داستانهای تخیلی یا واقعی هستند که برای آموزش و یادگیری کلاس استفاده میشوند.ANVها برای ارزیابی آگاهی، مهارتهای حل مسئله و نظم بچهها و معلمین قبل و حین اشتغال کارایی دارند.)
شکل دیگری از شبیه سازی در سالهای اخیر با اقبال در آموزش بازرگانی مواجه شدهاست. شبیه سازی بازرگانی که دارای یک مدل پویا است که آزمون استراتژیهای بازرگانی را در محیط فاقد خطر مهیا میسازد و محیط مساعدی برای مباحث مطالعه موارد ارائه میدهد.
واژگانی که درک مفهوم آنها در علم آمار مهم است عبارتاند از∗:
جمعیت
نمونه
متغیّر
مقیاسهای اندازهگیری:
مقیاس اسمی (به انگلیسی: Nominal Scale)
مقیاس ترتیبی (به انگلیسی: Ordinal Scale)
مقیاس فاصلهای (به انگلیسی: Interval Scales)
مقیاس نسبی (به انگلیسی: Ratio Scales)
آمار رشته وسیعی از ریاضی است که راههای جمع آوری، خلاصه سازی و نتیجه گیری از دادهها را مطالعه میکند. این علم برای طیف وسیعی از علوم دانشگاهی از فیزیک و علوم اجتماعی گرفته تا انسانشناسی و همچنین تجارت، حکومت داری و صنعت کاربرد دارد.
هنگامی که دادهها جمع آوری شدند چه از طریق یک روش نمونه برداری خاص یا به وسیله ثبت پاسخها در قبال رفتارها در یک مجموعه آزمایشی (طرح آزمایش) یا به وسیله مشاهده مکرر یک فرایند در طی زمان (سریهای زمانی) خلاصههای گرافیکی یا عددی را میتوان با استفاده از آمار توصیفی به دست آورد.
الگوهای موجه در دادهها سازمان بندی میشوند تا نتیجه گیری در مورد جمعیتهای بزرگتر به دست آید که این کار با استفاده از آمار استنباطی صورت میگیرد و تصادفی بودن و عدم قاطعیت در مشاهدات را شناسایی میکند. این استنباطها ممکن است به شکل جوابهای بله یا خیر به سؤالات باشد (آزمون فرض)، خصوصیات عددی را برآورد کند (تخمین)، پیش گویی مشاهدات آتی باشد، توصیف ارتباطها باشد (همبستگی) و یا مدل سازی روابط باشد (رگرسیون).
شبکه توصیف شده در بالا گاهی اوقات به عنوان آمار کاربردی اطلاق میشود. در مقابل، آمار ریاضی (یا ساده تر نظریه آماری) زیر رشتهای از ریاضی کاربردی است که از نظریه احتمال و آنالیز برای به کارگیری آمار برروی یک پایه نظریه محکم استفاده میکند.
مراحل پایه برای انجام یک تجربه عبارتاند از:
برنامه ریزی تحقیق شامل تعیین منابع اطلاعاتی، انتخاب موضوع تحقیق و ملاحظات اخلاقی برای تحقیق و روش پیشنهادی. طراحی آزمون شامل تمرکز روی مدل سیستم و تقابل متغیرهای مستقل و وابسته. خلاصه سازی از نتایج مشاهدات برای جامعیت بخشیدن به آنها با حذف نتایج (آمار توصیفی). رسیدن به اجماع در مورد آنچه مشاهدات درباره دنیایی که مشاهده میکنیم به ما میگویند (استنباط آماری). ثبت و ارائه نتایج مطالعه.
سطوح اندازه گیری
چهار نوع اندازه گیری یا مقیاس اندازه گیری در آمار استفاده میشود. چهار نوع یا سطح اندازه گیری (ترتیبی، اسمی، بازهای و نسبی) دارای درجات متفاوتی از سودمندی در بررسیهای آماری دارند. اندازه گیری نسبی در حالی که هم یک مقدار صفر و فاصله بین اندازههای متفاوت تعریف میشود بیشترین انعطاف پذیری را در بین روشهای آماری دارد که میتواند برای تحلیل دادهها استفاده شود. مقیاس تناوبی با داشتن فواصل معنی دار بین اندازهها اما بدون داشتن میزان صفر معنی دار (مثل اندازهگیری بهره هوشی یا اندازهگیری دما در مقیاس سلسیوس) در تحقیقات آماری استفاده میشود. صفت آماری - هر ویژگی مربوط به هر واحد جامعه را یک صفت آماری یا به اختصار یک صفت برای آن واحد آماری است. اگر یک واحد آماری یک انسان باشد، گروه خون، وزن، میزان سواد، میزان درآمد، درجه حرارت بدن و تعدادخانوار هر کدام یک صفت آماری برای آن واحد است. صفتهای آماری دو دسته کلی هستند. ۱- صفت مشخصه ۲ صفت متغیر
آزمون فرض آماری
آزمون فرض آماری (به انگلیسی: Statistical hypothesis testing) در علم آمار روشی است برای بررسی ادعاها یا فرضها دربارهٔ پارامترهای توزیع در جوامع آماری. در این روش فرض صفر (به انگلیسی: Null-hypothesis) یا فرض اولیه مورد بررسی ست که متناسب با موضوع مطالعه فرضی به عنوان فرض بدیل یا فرض مقابل (به انگلیسی: Alternative-hypothesis) انتخاب میشود تا درستی هر کدام نسبت به هم مورد آزمون قرار گیرد.
هر که بنای قناعت بگذارد، برای گذران زندگی به زحمت نمیافتد (هر چند عیالمند باشد) در نتیجه از ا حتیاج به مردم خلاص میشود و از چاپلوسی و تملّق ناکسان، فراغت مییابد و در نزد خالق و خلق، عزیز میگردد.

اجماع
اجماع، کنسانسوس یا آئین وفاق عام در دو معنا کاربرد دارد. اول به معنای توافقی عام میان اعضای یک گروه که با در نظر گرفتن آراء هر یک از افراد، چه در مرحله تصمیمسازی و چه در اقدامات پیرو آن، به دست آمدهاست و دوم نظریه و آئینی که برای دستیابی به چنین توافقی مورد استفاده است. این آئین که از آن با نام تصمیمگیری اجماعی هم یاد میشود، یک روش تصمیمگیری گروهی است که هدف آن نهتنها به دنبال یافتن همرایی بیشینه اعضا بلکه برطرف کردن دشواریهای گروه کمینه است. تصمیمگیری اجماعی بیشتر نوعی تفاهم همگانی قلمداد میشود. این روش توسط بسیاری از گروههای گوناگون عقیدتی، مالی، سیاسی، و حتی پروژههای برخط استفاده میشود. در این روش:
بیشینه دستاندرکاران باید شرکت کنند
به صورت فعال در تصمیمگیری دخالت کنند
همه باید همکاری کنند که به بهترین جواب مورد پسند گروه برسند
همهٔ هموندان باید حق ارائه، مخالفت، وتو، و یا بستن پیشنهاد را داشته باشند
رسیدن به اجماع نیازمند توجه جدی به نظرات مطروحه هر یک از اعضای گروه است. وقتی که تصمیمی بر مبنای اجماع اتخاذ میشود، میبایست به صلاحدید اعضا در اقدامات بعدی نیز اعتماد کرد.
در فقه اسلامی اجماع علمای اسلامی یکی از منابع تعیین احکام شرعی محسوب میشود. این نوع از اجماع شرایط خاصی دارد که در مقاله اجماع (فقه) تشریح شدهاست.
اشک تمساح
اشک تمساح اصطلاحی است مشترک در بین چندین زبان دنیا برای بیان کنایهآمیز تاسفها و اشکهای ناصادق. عبارت اشک تمساح در یکی از نمایشنامههای شکسپیر نیز ذکر شدهاست.
در برخی از فرهنگها افسانهای وجود که دارد که گریه کردن تمساح را بعد از شکار قربانی یا برای اغفال آن بیان میکند. برخی این افسانه را منشا این اصطلاح دانستهاند.
نکته جالب آنکه در دنیای واقعی، تمساحان قدرت اشک ریختن برای ابراز احساسات ندارند و این تنها انسان است که قادر به عمل ارتباطی گریه کردن است.
حکایت
ریشهی واژه
واژهی حکایت برگرفته از واژهی محاکات به معنای مشابه کسی یا چیزی شدن، مانند چیزی را به گفتار یا کردار آوردن، است (همتراز محاکات، یعنی؛ mimesis از ریشهی mime یونانیست که واژهی فارسی «میمون» را میتوان همریشه با آن دانست، میمون در باور ما تقلیدکننده است.). از اینرو میتوان حکایت را شبیه سازیای تخیلی از دنیا دانست.
حکایت چیست؟
حکایت نوعی از داستان کوتاه است که در آن درس یا نکته ای اخلاقی نهفته است. این درس یا نکته بیشتر در پایان حکایت بر خواننده آشکار میشود. شخصیتهای حکایت آدمها، حیوانات یا اشیای بیجانند. زمانی که حیوانات شخصیت حکایتند، مانند انسانها سخن می گویند و احساسات انسانی از خود نشان می دهند. یکی از بهترین نمونههای حکایت در زبان فارسی را میتوان در هزار و یک شب دید.
حکایتها معمولاً طوری نوشته میشوند که خواننده به سادگی آنها را درک کند. ادبیاتی را که در حکایتها به کار برده میشود، ادبیات تعلیمی مینامند.
برخی حکایتها از نسلی به نسل دیگر بازگو میشود. بیشتر در حکایت با استعاره از اشیا و یا حیوانات، نابخردی انسان در رفتار و منشش به وی نشان داده می شود. گاهی حکایت آکنده از طنز یا هزل است. در ضمن حکایت نام آلبومی موسیقی مشهوری از استاد سیاوش قمیشی و مسعود فردمنش نیز می باشد.
برخی از نمادها در حکایت
در حکایت برخی از حیوانات به خاطر رفتار ویژه شناخته شده اند.
شیر: بی باکی و شجاعت
خروس: لافزنی
طاووس: غرور
روباه: فریبکاری
گرگ: زیاده خواهی و آزمندی
اسب: دلاوری
گاو: بی خردی
خر: پرکاری
ویژگیهای حکایت
با بررسی حکایات و تحلیل آنها میتوان ویژگیهای زیر را در بیشتر آنها یافت.
زمان و مکان رویدادهایش نامشخص است.
معمولاً انباشته از گزافهها و اغراقها و عوامل فوق طبیعی است که از محدودهی تواناییها و امکانات انسان بیرون است.
بیشتر به وصف چیزهایی میپردازد که هرگز رخ ندادهاند و حتی امکان رخ دادنشان نیز نیست. (محال وجودی) و در بیشتر موارد حتی ممکن عقلی نیز نیستند.
پیرنگ داستانی سست و فاقد وحدت و انسجامیدارند.
معمولاً در پی بیان پند و اندرز و نکتهی خاصی است و کمتر جنبهی سرگرمی دارد.
بیشتر آنها از یک الگوی ثابت پیروی میکنند مانند آنچه پراپ در کتاب «ریخت شناسی قصههای پریان» در مورد ساختار قصههای موسوم به قصههای پریان بررسی میکند.
بیشتر آنها ویژگیهای کهن الگویی دارند.
اشخاص در حکایت پرداخت نشده و به شخصیت، طبق نظریات امروزین شخصیت، نزدیک نشدهاند و فقط به عنوان بازیگرانی بدون ویژگیهای شخصیت در حکایت ایفای نقش میکنند.
گونهی زبانی همهی بازیگران آنها یکسان است و نمیتوان بر اساس زبان بازیگر به طبقهی اجتماعی- اقتصادی، سن، جنسیت یا شغل او پی برد.
راوی بیشتر آنها همهچیزدان است و چیزی بر او پنهان نمیماند و بر گذشته و آینده حکایت واقف است و معمولاً سرنوشت بازیگران را در ابتدای حکایت افشا میکند. در مواردی که راوی همهچیزدان نیست قواعد و اصول زاویهی دید راوی رعایت نشده است.
بازیگران (قهرمانen یا ضد قهرمانen) در حکایت چهرهای کاملاً سیاه یا سفید دارند، یعنی؛ یا بسیار خوب و منزهاند یا بسیار بد و شرور. به ندرت در بعضی از حکایات بازیگری خاکستری که طبیعی و عادی باشد، میتوان دید.
در حکایت صرفاً به بیان حالات و صفات بیرونی بازیگران توجه شده است و حالات درونی و ذهنی بازیگران نادیده گرفته شده است.
توصیفها در حکایت بسیار جزیی و الکن است.
زبان قصههای عامیانه زبان ادبی نیست
آثار و پژوهشگران قصههای عامیانه
بسیاری از قصههای عامیانه که نوعی حکایت به شمار میآیند به صورت شفاهی انتقال یافتهاند، در ایران قصهپردازی و نقل حکایت از دیرباز مرسوم بوده، بسیاری از ویژگیهای ذکر شده را میتوان در نمونههای زیبایی از حکایتهای مثنوی معنوی، کلیله و دمنه، هفت پیکر، خسرو و شیرین و ... البته با زبان و پرداختی ادبی دید. صادق هدایت برخی از حکایتها و قصههای عامیانه را جمعآوری کرد، پس از او کسانی در این راه کوششهایی نمودند، از جمله علی اشرف درویشیان. حکایات سید اشرف الدین گیلانی در مجموعه "گلزار ادبی".
متل (قصه)
متل . م َ ت َ به قصههای کوتاه سرگرم کننده با مضامین لطیف و آموزنده گفته میشود که تمام یا قسمتی از آن قافیه دار، شعرگونه و یا مانند بحر طویل باشد. قهرمان متلها اغلب حیوانات، ولی گاهی انسانها و یا مظاهر طبیعت هستند.
امروزه متل به داستانهای منظوم کودکانه گفته میشود. معمولاً مصرعهای متل کوتاه است. دویدم و دویدم و اتل متل توتوله از متلهای معروف فارسی است.
نظرسنجی
نظرسنجی نوعی روش تحقیق پیمایشی است که در آن دیدگاه گروهی از افراد در مورد یک موضوع مورد مطالعه قرار میگیرد. برای این کار، تعدادی پرسش محدود درباره موضوع مورد نظر تهیه میشود و نظر نمونهای از جامعه درباره آنها پرسیده میشود..
نتایج نظر سنجی
نظر سنجی به واسطه آمار و ارقام مهم و اغلب تکان دهنده ای که دارد در بعضی مواقع انتشار عمومی پیدا نمیکند.به عنوان مثال تا کنون هیچ آمار رسمی از تعداد معتادان در کشور در دست نیست.
نحوه نظر سنجی
هم اکنون در کشور های پیش رفته بهترین،دقیق ترین و کاربردی ترین نوع نظر سنجی،نظر سنجی اینترنتی است.ولی در کشورهایی مانند پاکستان و افغانستان که امکانات نظر سنجی اینترنتی به صورت همگانی میسر نیست،اغلب از شیوه های کلاسیک نظر سنجی مانند پرسش و پاسخ و یا مصاحبه استفاده میشود.
سرشماری
سرشماری عبارت است از شمارش و محاسبه تعداد کل نفرات یا اشیای مورد نظر مانند تعداد کل نفراتی که در یک کشور زندگی میکنند. سرشماری محدود به انسانها نیست و ممکن است شامل محصولات و کارگاههای صنعتی و کشاورزی نیز شود. یک نوع سرشماری نیز مربوط به حیات وحش است که طی آن گونه های مختلف حیوانات وحشی ازقبیل پرندگان،پستاندارن،آبزیان و خزندگان سرشماری میشوند که این کار توسط سازمان حفاظت محیط زیست در کشور اجرا شده و هدف از آن پی بردن به تعداد افراد جمعیت و مطالعه روی رفتارهای مهاجرتی آنهاصورت میپذیرد. تفاوت سرشماری با آمارگیری در این است که در سرشماری تعداد کل اعضای جامعه مورد نظر تک به تک شمارش و کنترل میشوند. اما در آمارگیری معمولاً درصد کوچکی از جامعه مورد مطالعه به عنوان نمونه آماری مورد مطالعه قرار میگیرند و سپس نتایج حاصله به کل جامعه مورد نظر تعمیم داده میشود.
تقریباً تمام کشورهای جهان به طور منظم تعداد افراد کشور را شمارش میکنند. بیشتر کشورها هر ده سال یکبار جمعیت را سرشماری میکنند. در سرشماری اطلاعات مهمی همچون میزان درآمد افراد، چگونگی محل زیست، متاهل یا مجرد بودن و تعداد فرزندان خانواده به دست میآید . در برخی کشورها سرشماری عمومی جمعیت هر پنج سال یکبار انجام میگیرد.
سرشماری در کشورها
ایران
در ایران نخستین سرشماری عمومی نفوس و مسکن در سال ۱۳۳۵ و واپسین آن در سال ۱۳۹۰ انجام شد. بنابر مادهٔ ۴ قانون مرکز آمار ایران، این سرشماری سراسری، هر پنج سال یک بار با فرمان رئیس جمهور اجـرا میشود. سرشماری بعدی نفوس و مسکن ایران در سال ۱۳۹۵ انجام میشود.
افغانستان
برپایه سرشماری مقدماتی کمیته ملی احصائیه افغانستان، جمعیت این کشور در سال ۱۳۸۵، ۲۴ میلیون تن است. گفته میشود از این تعداد ۱۲٬۳۰۰ میلیون تن مرد و ۱۱٬۸۰۰ میلیون تن زن هستند. ۷/۲۱٪ جمعیت کشور شهرنشین میباشند. مرحله اصلی سرشماری افغانستان در ماه سنبله ۱۳۸۷ صورت خواهد گرفت. این آمار شامل میلیونها مهاجر افغانی مقیم ایران، پاکستان و کشورهای دیگر نمیباشد. سازمان ملل پیش از این جمعیت افغانستان را ۲۹ میلیون نفر براورد کرده بود.
گردآوری داده
گردآوری داده به فرایند گردآوری و آمادهسازی داده برای پردازش گفته میشود. هدف از گردآوریداده بدست آوردن اطلاعات بهمنظور ثبت اتفاقات، تصمیمگیری، و یا گزارش اطلاعات به دیگران است. اساساً اطلاعات با در نظرگرفتن هدف نهایی گردآوری میشوند.
گردآوری داده معمولاً در مراحل اولیه هر پروژهای انجام میشود و شامل مراحل زیر است:
کارهای پیش از گردآوری — شامل توافق برسر تعاریف، روشها، اهداف و فرمت داده نهایی.
گردآوری داده
ارائه یافتهها — شامل به تصویرکشیدن، تحلیل، مرتبکردن و غیره.
نمونه (آمار)
نمونه در آمار به تعدادی از اجزا انتخاب شده با روش تصادفی از یک جامعه آماری گفته میشود که با بررسی مشخصات در نمونه فرضیات آماری در جامعه مرجع قابل تحقیق میباشند. اگر بخواهیم موضوعی خاص را در مورد جامعهای بررسی کنیم، میتوانیم تک تک اعضای آن مجموعه را مورد بررسی قرار دهیم. اما در راهی سادهتر میتوانیم موضوع را درمورد تعداد محدودی از جامعه آماری (که به تصادف، با دقت و مطالعه لازم انتخاب میشوند و تعدادشان به فراخور اندازه جامعه آماری تغییر میکند) بررسی کرده و نتیجه را به آن جامعه نسبت دهیم. در اینصورت مشکلاتی مانند در دسترس نبودن تمام اعضای جامعه، وقتگیر بودن، هزینه بالا و از بین رفتن جامعه در برخی مطالعات، مرتفع میگردند.
نمونهگیری
نمونهگیری یکی از مهمترین ارکان علم آمار است. یک نمونه باید طوری انتخاب شود که تنوع و به اندازه کافی بزرگ باشد تا نتایج حاصل قابل اعتماد باشند.
آمار
آمار (به انگلیسی: statistics) به مجموعهی دادههای عددی مربوط به یک موضوع (معمولا مهم)، مانند جمعیت، متوفیات، میزان تجارت داخلی یا خارجی، دما یا بارش ماهیانه و غیر گفته میشود. آمار را باید علم و عمل استخراج، بسط، و توسعهٔ دانشهای تجربی انسانی با استفاده از روشهای گردآوری، تنظیم، پرورش، و تحلیل دادههای تجربی (حاصل از اندازه گیری و آزمایش) دانست. زمینههای محاسباتی و رایانهای جدیدتری همچون یادگیری ماشینی، و کاوشهای ماشینی در دادهها، در واقع، امتداد و گسترش دانش گسترده و کهن از آمار به عهد محاسبات نو و دوران اعمال شیوههای ماشینی در همهجا میباشد. علم آمار، علم فن فراهم کردن دادههای کمّی و تحلیل آنها به منظور به دست آورن نتیایجی که اگرچه احتمالی است، اما در خور اعتماد است.
در صورتی که شاخهای علمی مد نظر نباشد، معنای آن، دادههایی بهشکل ارقام و اعداد واقعی یا تقریبی است که با استفاده از علم آمار میتوان با آنها رفتار کرد و عملیات ذکر شده در بالا را بر آنها انجام داد. بیشتر مردم با کلمة آمار به مفهومی که برای ثبت و نمایش اطلاعات عددی به کار میرود آشنا هستند. ولی این مفهوم منطبق با موضوع اصلی مورد بحث آمار نیست. آمار عمدتاً با وضعیتهایی سر و کار دارد که در آنها وقوع یک پیشامد به طور حتمی قابل پیش بینی نیست. اسنتاجهای آماری غالباً غیر حتمی اند، زیرا مبتنی بر اطلاعات ناکاملی هستند. در طول چندین دهه آمار فقط با بیان اطلاعات و مقادیر عددی در باره اقتصاد، جمعیتشناسی و اوضاع سیاسی حاکم در یک کشور سر و کار داشت. حتی امروز بسیاری از نشریات و گزارشهای دولتی که تودهای از آمار و ارقام را در بردارند معنی اولیه کلمه آمار را در ذهن زنده میکنند. اکثر افراد معمولی هنوز این تصویر غلط را در باره آمار دارند که آن را منحصر به ستونهای عددی سرگیجه آور و گاهی یک سری شکلهای مبهوت کننده میدانند. بنابراین، یادآوری این نکته ضروری است که نظریه و روشهای جدید آماری از حد ساختن جدولهای اعداد و نمودارها بسیار فراتر رفتهاند. آمار به عنوان یک موضوع علمی، امروزه شامل مفاهیم و روشهایی است که در تمام پژوهشهایی که مستلزم جمع آوری دادهها به وسیله یک فرایند آزمایش و مشاهده و انجام استنباط و نتیجه گیری به وسیله تجزیه و تحلیل این دادهها هستند اهمیت بسیار دارند.
علم آمار
علم آمار، خود مبتنی است بر نظریه آمار که شاخهای از ریاضیات کاربردی به حساب میآید. در نظریهٔ آمار، اتفاقات تصادفی و عدم قطعیت توسط نظریهٔ احتمالات مدلسازی میشوند. در این علم، مطالعه و قضاوت معقول در بارهٔ موضوعهای گوناگون، بر مبنای یک جمع انجام میشود و قضاوت در مورد یک فرد خاص، اصلاً مطرح نیست.
از جملهٔ مهمترین اهداف آمار، میتوان تولید «بهترین» اطّلاعات از دادههای موجود و سپس استخراج دانش از آن اطّلاعات را ذکر کرد. به همین سبب است که برخی از منابع، آمار را شاخهای از نظریه تصمیمها به شمار میآورند.
این علم به بخشهای آمار توصیفی و آمار استنباطی تقسیم میشود. از طرف دیگر میتوان آن را به دو بخش آمار کلاسیک و آمار بیز تقسیم بندی کرد. در آمار کلاسیک، که امروزه در دانشگاهها و دبیرستانها تدریس میگردد، ابتدا آزمایش و نتیجه را داریم و بعد بر اساس آنها فرضها را آزمون میکنیم. به عبارت دیگر ابتدا آزمایش انجام میشود و بعد فرض آزمون میگردد. در آمار بیزی ابتدا فرض در نظر گرفته میشود و دادهها با آن مطابقت داده میشوند به عبارت دیگر در آمار بیزی یک پیش توزیع داریم-توزیع پیشین- و بعد از مطالعه دادهها و برای رسیدن به آن توزیع پیشین، توزیع پسین را در نظر میگیریم.
علم آماری
شامل برنامهریزی و جمعبندی و تفسیر مشاهدات غیر قطعی است بهشکلی که∗:
اعداد نمایندهٔ واقعی مشاهدات بوده، غیر واقعی یا غلط نباشند.
بهنحو مفیدی تهیه و تنظیم شوند.
بهنحو صحیح تحلیل شوند.
قابل نتیجهگیری صحیح باشند.
روشهای آماری
مطالعات تجربی و مشاهداتی هدف کلی برای یک پروژه تحقیقی آماری، بررسی حوادث اتفاقی بوده و به ویژه نتیجه گیری روی تأثیر تغییرات در ارزش شاخصها یا متغیرهای غیر وابسته روی یک پاسخ یا متغیر وابستهاست. دو شیوه اصلی از مطالعات آماری تصادفی وجود دارد: مطالعات تجربی و مطالعات مشاهداتی. در هر دو نوع از این مطالعات، اثر تغییرات در یک متغیر (یا متغیرهای) غیر وابسته روی رفتار متغیرهای وابسته مشاهده میشود. اختلاف بین این دو شیوه درچگونگی مطالعهای است که عملاً هدایت میشود. یک مطالعه تجربی در بردارنده روشهای اندازه گیری سیستم تحت مطالعهاست که سیستم را تغییر میدهد و سپس با استفاده از روش مشابه اندازه گیریهای اضافی انجام میدهد تا مشخص سازد که آیا تغییرات انجام شده، مقادیر شاخصها را تغییر میدهد یا خیر. در مقابل یک مطالعه نظری، مداخلات تجربی را در بر نمیگیرد. در عوض دادهها جمع آوری میشوند و روابط بین پیش بینیها و جواب بررسی میشوند.
یک نمونه از مطالعه تجربی، مطالعات Hawthorne مشهور است که تلاش کرد تا تغییرات در محیط کار را در کمپانی الکتریک غربی Howthorne بیازماید. محققان علاقه مند بودند که آیا افزایش نور میتواند کارایی را در کارگران خط تولید افزایش دهد. محققان ابتدا کارایی را در کارخانه اندازه گیری کردند و سپس میزان نور را در یک قسمت از کارخانه تغییر دادند تا مشاهده کنند که آیا تغییر در نور میتواند کارایی را تغییر دهد. به واسطه خطا در اقدامات تجربی، به ویژه فقدان یک گروه کنترل محققاتی در حالی که قادر نبودند آنچه را که طراحی کرده بودند، انجام دهند قادر شدند تا محیط را با شیوه Hawthorne آماده سازند. یک نمونه از مطالعه مشاهداتی، مطالعه ایست که رابطه بین سیگار کشیدن و سرطان ریه را بررسی میکند. این نوع از مطالعه به طور اختصاصی از شیوهای استفاده میکند تا مشاهدات مورد علاقه را جمع آوری کند و سپس تجزیه و تحلیل آماری انجام دهد. در این مورد، محققان مشاهدات افراد سیگاری و غیر سیگاری را جمع آوری میکنند و سپس به تعداد موارد سرطان ریه در هر دو گروه توجه میکنند.
احتمالات
در زبان محاوره، احتمال یکی از چندین واژهای است که برای دانسته یا پیشامدهای غیر مطمئن به کار میرود و کم و بیش با واژههایی مانند ریسک، خطرناک، نامطمئن، مشکوک و بسته به متن قابل معاوضهاست. شانس، بخت، امتیاز و شرط بندی از لغات دیگری است که نشان دهنده برداشتهای مشابهی است. همانگونه که نظریه مکانیک به تعاریف دقیق ریاضی از عبارات متداولی مثل کار و نیرو میپردازد، نظریه احتمالات نیز تلاش دارد تا مفاهیم و برداشتهای مربوط به احتمالات را کمّی سازی کند.
نرمافزارها
آمار مدرن برای انجام بعضی از محاسبات خیلی پیچیده و بزرگ به وسیله رایانهها استفاده میشود. کل شاخههای آمار با استفاده از محاسبات کامپیوتری انجامپذیر شدهاند، برای مثال شبکههای عصبی. انقلاب کامپیوتری با یک توجه نو به آمار «آزمایشی» و «شناختیک» رویکردهایی برای آینده آمار داشتهاست.
یکی از مهمترین کاربردهای آمار و احتمال با استفاده از رایانه شبیه سازی است.
شبیه سازی نسخهای از بعضی وسایل حقیقی یا موقعیتهای کاری است. شبیه سازی تلاش دارد تا بعضی جنبههای رفتاری یک سیستم فیزیکی یا انتزاعی را به وسیله رفتار سیستم دیگری نمایش دهد. شبیه سازی در بسیاری از متون شامل مدل سازی سیستمهای طبیعی و سیتمهای انسانی استفاده میشود. برای به دست آوردن بینش نسبت به کارکرد این سیستمها در تکنولوژی و مهندسی ایمنی که هدف، آزمون بعضی سناریوهای عملی در دنیای واقعی است از شبیه سازی استفاده میشود. در شبیه سازی با استفاده از یک شبیه ساز یا وسیله دیگری در یک موقعیت ساختگی میتوان آثار واقعی بعضی شرایط احتمالی را بازسازی کرد.
۱- شبیه سازی فیزیکی و متقابل (شبیه سازی فیزیکی، به شبیه سازی اطلاق میشود که در آن اشیای فیزیکی به جای شی واقعی جایگزین میشوند و این اجسام فیزیکی اغلب به این خاطر استفاده میشوند که کوچکتر و ارزان تر از شی یا سیستم حقیقی هستند. شبیه سازی متقابل (تعاملی) که شکل خاصی از شبیه سازی فیزیکی است و غالباً به انسان در شبیه سازیهای حلقهای اطلاق میشود یعنی شبیه سازیهای فیزیکی که شامل انسان میشوند مثل مدل استفاده شده در شبیه ساز پرواز.)
۲- شبیه سازی در آموزش (شبیه سازی اغلب در آموزش پرسنل شهری و نظامی استفاده میشود. معمولاً هنگامی رخ میدهد که استفاده از تجهیزات در دنیای واقعی از لحاظ هزینه کمرشکن یا بسیار خطرناک است تا بتوان به کارآموزان اجازه استفاده از آنها را داده. در چنین موقعیتهایی کارآموزان وقت خود را با آموزش دروس ارزشمند در یک محیط واقعی «ایمن» میگذرانند. غالباً این اطمینان وجود دارد تا اجازه خطا را به کارآموزان در طی آموزش داد تا ارزیابی سیستم ایمنی– بحران صورت گیرد.)
شبیه سازیهای آموزشی به طور خاص در یکی از چهار گروه زیر قرار میگیرند:
الف - شبیه سازی زنده (جایی که افراد واقعی از تجهیزات شبیه سازی شده (یا آدمک) در دنیای واقعی استفاده میکنند.)
ب - شبیه سازی مجازی (جایی که افراد واقعی از تجهیزات شبیه سازی شده در دنیای شبیه سازی شده (یا محیط واقعی) استفاده میکنند.) یا
ج - شبیه سازی ساختاری (جایی که افراد شبیه سازی شده از تجهیزات شبیه سازی شده در یک محیط شبیه سازی شده استفاده میکنند. اغلب به عنوان بازی جنگی نامیده میشود زیرا که شباهتهایی با بازیهای جنگی رومیزی دارد که در آنها بازیکنان، سربازان و تجهیزات را اطراف یک میز هدایت میکنند.)
د - شبیه سازی ایفای نقش (جایی که افراد واقعی نقش یک کار واقعی را بازی میکنند.)
۳ - شبیه سازیهای پزشکی (شبیه سازهای پزشکی به طور فزایندهای در حال توسعه و کاربرد هستند تا روشهای درمانی و تشخیص و همچنین اصول پزشکی و تصمیم گیری به پرسنل بهداشتی آموزش داده شود. طیف شبیه سازها برای آموزش روشها از پایه مثل خونگیری تا جراحی لاپاراسکوپی و مراقبت از بیمار دچار ضربه، وسیع و گستردهاست. بسیاری از شبیه سازهای پزشکی دارای یک رایانه هستند که به یک ماکت پلاستیکی با آناتومی مشابه واقعی متصل است. در بعضی از آنها، ترسیمهای کامپیوتری تمام اجزای قابل رؤیت را به دست میدهد و با دستکاری در دستگاه میتوان جنبههای شبیه سازی شده کار را تولید کرد. بعضی از این دستگاهها دارای شبیه سازهای گرافیکی رایانهای برای تصویربرداری هستند مانند پرتو ایکس یا سایر تصاویر پزشکی. بعضی از شبیه سازهای بیمار، دارای یک مانکن انسان نما هستند که به داروهای تزریق شده واکنش میدهد و میتوان آن را برای خلق صحنههای مشابه فوریتهای پزشکی خطرناک برنامه ریزی کرد. بعضی از شبیه سازهای پزشکی از طریق شبکه اینترنت قابل گسترش هستند و با استفاده از جستجوگرهای استاندارد شبکه به تغییرات جواب میدهند. در حال حاضر، شبیه سازیها به موارد غربال گری پایه محدود شدهاند به نحوی که استفاده کنندگان از طریق وسایل امتیازدهی استاندارد با شبیه سازی در ارتباط هستند.)
۴ - شبیه سازهای پرواز (یک شبیه ساز پرواز برای آموزش خلبانان روی زمین مورد استفاده قرار میگیرد. به خلبان اجازه داده میشود تا به هواپیمای شبیه سازی شده اش آسیب برساند بدون آن که خود دچار آسیب شود. شبیه سازهای پرواز اغلب برای آموزش خلبانان استفاه میشوند تا هواپیما را در موقعیتهای بسیار خطرناک مثل زمین نشستن بدون داشتن موتور یا نقص کامل الکتریکی یا هیدرولیکی هدایت کنند. پیشرفتهترین شبیه سازها دارای سیستم بصری با کیفیت بالا و سیستم حرکت هیدرولیک هستند. کار با شبیه ساز به طور معمول نسبت به هواپیمای واقعی ارزان تر است.)
۵ - شبیه سازی و بازیها (هم چنین بسیاری از بازیهای ویدئویی شبیه ساز هستند که به طور ارزان تر آماده سازی شدهاند. بعضی اوقات از اینها به عنوان بازیهای شبیه سازی (sim) نامبرده میشود. چنین بازیهایی جنبههای گوناگون واقعی را شبیه سازی میکنند از اقتصاد گرفته تا وسایل هوانوردی مثل شبیه سازهای پرواز.)
۶ - شبیه سازی مهندسی (شبیه سازی یک مشخصه مهم در سیستمهای مهندسی است. برای مثال در مهندسی برق، از خطوط تأخیری استفاده میشود تا تأخیر تشدید شده و شیفت فاز ناشی از خط انتقال واقعی را شبیه سازی کنند. مشابهاً، از بارهای ظاهری میتوان برای شبیه سازی مقاومت بدون شبیه سازی تشدید استفاده کرد و از این حالت در مواقعی استفاده میشود که تشدید ناخواسته باشد. یک شبیه ساز ممکن است تنها چند تا از کارکردهای واحد را شبیه سازی کند که در مقابل با عملی است که تقلید نامیده میشود. ۷ - اغلب شبیه سازیهای مهندسی مستلزم مدل سازی ریاضی و بررسیهای کامپیوتری هستند. به هر حال موارد زیادی وجود دارد که مدل سازی ریاضی قابل اعتماد نیست. شبیه سازی مشکلات مکانیک سیالات اغلب مستلزم شبیه سازیهای ریاضی و فیزیکی است. در این موارد، مدلهای فیزیکی نیاز به شبیه سازی دینامیک دارند.)
۸ - شبیه سازی کامپیوتری (شبیه سازی رایانه، جزو مفیدی برای بسیاری از سیستمهای طبیعی در فیزیک، شیمی و زیستشناسی و نیز برای سیستمهای انسانی در اقتصاد و علوم اجتماعی (جامعهشناسی کامپیوتری) و همچنین در مهندسی برای به دست آوردن بینش نسبت به عمل این سیستمها شدهاست. یک نمونه خوب از سودمندی استفاده از رایانهها در شبیه سازی را میتوان در حیطه شبیه سازی ترافیک شبکه جستجو کرد. در چنین شبیه سازیهایی رفتار مدل هر شبیه سازی را مطابق با مجموعه پارامترهای اولیه منظور شده برای محیط تغییر خواهد داد. شبیه سازیهای کامپیوتری اغلب به این منظور به کار گرفته میشوند تا انسان از شبیه سازیهای حلقهای در امان باشد. به طور سنتی، مدل برداری رسمی سیستمها از طریق یک مدل ریاضی بودهاست به نحوی که تلاش در جهت یافتن راه حل تحلیلی برای مشکلات بودهاست که پیش بینی رفتار سیستم را با استفاده از یک سری پارامترها و شرایط اولیه ممکن ساختهاست. شبیه سازی کامپیوتری اغلب به عنوان یک ضمیمه یا جانشین برای سیستمهای مدل سازی است که در آنها راه حلهای تحلیلی بسته ساده ممکن نیست. انواع مختلفی از شبیه سازی کامپیوتری وجود دارد که وجه مشترک همه آنها در این است که تلاش میکند تا یک نمونه از برنامهای برای یک مدل تولید کنند که در آن امکان محاسبه کامل تمام حالات ممکن مدل مشکل یا غیر ممکن است.)
به طور رو به افزونی معمول شدهاست که نام انواع مختلفی از شبیه سازی شنیده میشود که به عنوان «محیطهای صناعی» اطلاق میشوند. این عنوان اتخاذ شدهاست تا تعریف شبیه سازی عملاً به تمام دستاوردهای حاصل از رایانه تعمیم داده شود.
۹ - شبیه سازی در علم رایانه (در برنامه نویسی کامپیوتری، یک شبیه ساز اغلب برای اجرای برنامهای مورد استفاده قرار میگیرد که انجام آن برای رایانه با مقداری دشواری همراه است. برای مثال، شبیه سازها معمولاً برای رفع عیب یک ریزبرنامه استفاده میشوند. از آن جایی که کار کامپیوتر شبیه سازی شدهاست، تمام اطلاعات در مورد کار رایانه مستقیماً در دسترس برنامه دهندهاست و سرعت و اجرای شبیه سازی را میتوان تغییر داد. همچنین شبیه سازها برای تفسیر درختهای عیب یا تست کردن طراحیهای منطقی VLSI قبل از ساخت مورد استفاده قرار میگیرند. در علم رایانه نظریه، عبارت شبیه سازی نشان دهنده یک رابطه بین سیستمهای انتقال وضعیت است که این در مطالعه مفاهیم اجرایی سودمند است.)
۱۰ - شبیه سازی در تعلیم و تربیت (شبیه سازیها در تعلیم و تربیت گاهی مثل شبیه سازیهای آموزشی هستند. آنها روی وظایف خاص متمرکز میشوند. در گذشته از ویدئو برای معلمین و دانش آموزان استفاده میشود تا مشاهده کنند، مسائل را حل کنند و نقش بازی کنند؛ هرچند، یک استفاده جدید تر از شبیه سازیها در تعلیم و تربیت شامل فیلمهای انیمیشن است (ANV.(ANVها نوعی فیلم ویدئویی کارتون مانند با داستانهای تخیلی یا واقعی هستند که برای آموزش و یادگیری کلاس استفاده میشوند.ANVها برای ارزیابی آگاهی، مهارتهای حل مسئله و نظم بچهها و معلمین قبل و حین اشتغال کارایی دارند.)
شکل دیگری از شبیه سازی در سالهای اخیر با اقبال در آموزش بازرگانی مواجه شدهاست. شبیه سازی بازرگانی که دارای یک مدل پویا است که آزمون استراتژیهای بازرگانی را در محیط فاقد خطر مهیا میسازد و محیط مساعدی برای مباحث مطالعه موارد ارائه میدهد.
واژگانی که درک مفهوم آنها در علم آمار مهم است عبارتاند از∗:
جمعیت
نمونه
متغیّر
مقیاسهای اندازهگیری:
مقیاس اسمی (به انگلیسی: Nominal Scale)
مقیاس ترتیبی (به انگلیسی: Ordinal Scale)
مقیاس فاصلهای (به انگلیسی: Interval Scales)
مقیاس نسبی (به انگلیسی: Ratio Scales)
آمار رشته وسیعی از ریاضی است که راههای جمع آوری، خلاصه سازی و نتیجه گیری از دادهها را مطالعه میکند. این علم برای طیف وسیعی از علوم دانشگاهی از فیزیک و علوم اجتماعی گرفته تا انسانشناسی و همچنین تجارت، حکومت داری و صنعت کاربرد دارد.
هنگامی که دادهها جمع آوری شدند چه از طریق یک روش نمونه برداری خاص یا به وسیله ثبت پاسخها در قبال رفتارها در یک مجموعه آزمایشی (طرح آزمایش) یا به وسیله مشاهده مکرر یک فرایند در طی زمان (سریهای زمانی) خلاصههای گرافیکی یا عددی را میتوان با استفاده از آمار توصیفی به دست آورد.
الگوهای موجه در دادهها سازمان بندی میشوند تا نتیجه گیری در مورد جمعیتهای بزرگتر به دست آید که این کار با استفاده از آمار استنباطی صورت میگیرد و تصادفی بودن و عدم قاطعیت در مشاهدات را شناسایی میکند. این استنباطها ممکن است به شکل جوابهای بله یا خیر به سؤالات باشد (آزمون فرض)، خصوصیات عددی را برآورد کند (تخمین)، پیش گویی مشاهدات آتی باشد، توصیف ارتباطها باشد (همبستگی) و یا مدل سازی روابط باشد (رگرسیون).
شبکه توصیف شده در بالا گاهی اوقات به عنوان آمار کاربردی اطلاق میشود. در مقابل، آمار ریاضی (یا ساده تر نظریه آماری) زیر رشتهای از ریاضی کاربردی است که از نظریه احتمال و آنالیز برای به کارگیری آمار برروی یک پایه نظریه محکم استفاده میکند.
مراحل پایه برای انجام یک تجربه عبارتاند از:
برنامه ریزی تحقیق شامل تعیین منابع اطلاعاتی، انتخاب موضوع تحقیق و ملاحظات اخلاقی برای تحقیق و روش پیشنهادی. طراحی آزمون شامل تمرکز روی مدل سیستم و تقابل متغیرهای مستقل و وابسته. خلاصه سازی از نتایج مشاهدات برای جامعیت بخشیدن به آنها با حذف نتایج (آمار توصیفی). رسیدن به اجماع در مورد آنچه مشاهدات درباره دنیایی که مشاهده میکنیم به ما میگویند (استنباط آماری). ثبت و ارائه نتایج مطالعه.
سطوح اندازه گیری
چهار نوع اندازه گیری یا مقیاس اندازه گیری در آمار استفاده میشود. چهار نوع یا سطح اندازه گیری (ترتیبی، اسمی، بازهای و نسبی) دارای درجات متفاوتی از سودمندی در بررسیهای آماری دارند. اندازه گیری نسبی در حالی که هم یک مقدار صفر و فاصله بین اندازههای متفاوت تعریف میشود بیشترین انعطاف پذیری را در بین روشهای آماری دارد که میتواند برای تحلیل دادهها استفاده شود. مقیاس تناوبی با داشتن فواصل معنی دار بین اندازهها اما بدون داشتن میزان صفر معنی دار (مثل اندازهگیری بهره هوشی یا اندازهگیری دما در مقیاس سلسیوس) در تحقیقات آماری استفاده میشود. صفت آماری - هر ویژگی مربوط به هر واحد جامعه را یک صفت آماری یا به اختصار یک صفت برای آن واحد آماری است. اگر یک واحد آماری یک انسان باشد، گروه خون، وزن، میزان سواد، میزان درآمد، درجه حرارت بدن و تعدادخانوار هر کدام یک صفت آماری برای آن واحد است. صفتهای آماری دو دسته کلی هستند. ۱- صفت مشخصه ۲ صفت متغیر
آزمون فرض آماری
آزمون فرض آماری (به انگلیسی: Statistical hypothesis testing) در علم آمار روشی است برای بررسی ادعاها یا فرضها دربارهٔ پارامترهای توزیع در جوامع آماری. در این روش فرض صفر (به انگلیسی: Null-hypothesis) یا فرض اولیه مورد بررسی ست که متناسب با موضوع مطالعه فرضی به عنوان فرض بدیل یا فرض مقابل (به انگلیسی: Alternative-hypothesis) انتخاب میشود تا درستی هر کدام نسبت به هم مورد آزمون قرار گیرد.
12:42 am
برنامهنویسی
برنامهنویسی رایانه در فرهنگ واژه غیر متخصّصین ممکن است به تمام پروژه ساخت نرمافزار یا برنامهٔ رایانهای گفته شود. با این همه برنامهنویسی تنها بخشی از فرایند توسعهٔ نرمافزار یا برنامه رایانهای است. اهمیت، توجه و منابع اختصاص داده شده به برنامهنویسی، بسته به ویژگیهای مشخص شده محصول و خواست افراد درگیر در پروژه و کاربران و در نهایت شیوهٔ انتخاب شده مهندسی نرمافزار متغیر است.
برنامهنویسی کامپیوتر (که اغلب در انگلیسی programming یا coding گفته میشود) فرایند نوشتن، اشکال زدایی(debug) و نگهداری کد منبع (source code) برنامه کامپیوتر میباشد. این کد منبع با یک زبان برنامه نویسی نوشته شده است. این کد منبع ممکن است تغییر داده شده یک کد قبلی و یا یک کد کاملاً جدید باشد. هدف برنامه نویسی ساختن یک برنامه میباشد که یک رفتار خواسته شده را به نمایش بگذارد.

تاریخچه
موضوع دستگاههایی که به دنبالهای از دستورالعملهای از قبل تعریف شده عمل میکند بر میگردد به Greek Mythology.
برنامه نویسی مدرن
اندازه گیری کاربرد زبان
تعیین اینکه محبوبترین زبان برنامه نویسی مدرن کدام است کار بسیار مشکلی است. بعضی از زبانها در کاربردهای خاصی محبوب است و بعضی دیگر مرتباً در نوشتن کاربردهای گوناگون استفاده میشود. روشهای اندازه گیری محبوبیت زبان شامل موارد زیر میباشد: شمردن تعداد آگهیهای اشتغال و توجه به یک زبان، تعداد کتابهای آموزشی فروخته شده در مورد یک زبان، تخمین تعداد خطوط کد نوشته شده در یک زبان
پارادایمها
زبانهای برنامهنویسی گوناگون براساس قابلیتهای درنظر گرفته شده از شیوهٔ خطهای مختلف استفاده میکنند. موارد ریزتری مانند چگونگی برخورد با نیازهای پشت پردهٔ ماشین مانند مدیریت حافظه و مدیریت زباله نیز در زبانهای مختلف متفاوت است. علاوه بر اینها، مفاهیمی متفاوت از (اجرای) یک برنامه تصور شدهاند که پارادایم یا الگو نام دارند.
برنامهنویسی دستوری
برنامهنویسی دستوری (به انگلیسی: Imperative programming) در علوم رایانه یکی از شیوههای برنامهنویسی است که در آن مراحل اجرای یک برنامه کامپیوتری قدم به قدم توسط برنامه نویس بیان میشود. این بر خلاف زبانهای اعلانی است که در آنها تنها نتیجه انجام دستورات بیان میشود. به بیان دیگر در زبانهای دستوری چگونگی اجرای برنامه بیان میشود اما در زبانهای اعلانی چیستی نتیجه بیان میشود.
به عنوان مثال اگر قصد باز کردن دری را داشته باشیم و با زبان اعلانی این را بخواهیم بیان کنیم خواهیم گفت در را باز کن اما اگر با زبان دستوری بیان کنیم خواهیم گفت بلند شو، به طرف در نردیک شو، دستگیره را بگیر و در را به طرف بیرون هل بده.
زبان برنامهنویسی
زبانهای برنامهنویسی ساختارهای زبانی دستورمداری در رایانهها هستند که بهوسیلهٔ آنها میتوان یک الگوریتم را بهوسیلهٔ ساختارهای دستوری متفاوت برای اجرای رایانه توصیف کرد و با این روش امکان نوشتن برنامه جهت تولید نرمافزارهای جدید بوجود میآید. معمولاً هر زبان برنامهنویسی دارای یک محیط نرمافزاری برای وارد کردن متن برنامه، اجرا، همگردانی و رفع اشکال آن هستند. عموماً زبانهای برنامه نویسی را به پنج نسل تقسیم میکنند:
نسل اول زبان ماشین - زبان صفرو یک
نسل دوم زبانهایی مانند اسمبلی -قابل فهم تر برای انسان
نسل سوم زبانهایی مانند کوبول و پی ال وان و... -دستورات قابل فهم تر برای انسان و نیاز به کمپایلرها
نسل چهارم مثل زبانهای اوراکل و فاکس پرو و اس کیو الها - نزدیک به محاورههای انسانی
نسل پنج زبانهایی مانند prolog , ops5 - تمرکز بر حل مسئله و استفاده از الگوریتمهای نوشته شده توسط
برنامه نویس
یک زبان برنامه نویسی یک زبان مصنوعی است که برای بیان محاسباتی که توسط یک ماشین (مخصوصا رایانه) قابل انجام است، طراحی شدهاست.زبانهای برنامه نویسی برای ایجاد برنامههایی به کار میروند که رفتار یک ماشین را مشخص میکنند، الگوریتم دقیق را بیان میکنند، و یا روشی برای ارتباط انسانند. بسیاری از زبانهای برنامه نویسی تعدادی قالب از ویژگیهای نوشته شده دستوری(syntax) و معناشناسی (semantics) دارند، چرا که رایانهها دستورات دقیقاً مشخص نیاز دارند. برخی توسط سند خصوصیات (specification document) تعیین شدهاند. (برای مثال یک استاندارد ISO)، در حالی که برخی دیگر دارای پیاده سازی غالبی میباشند.(مانند Perl) اولین زبان برنامه نویسی به قبل از اختراع رایانه باز میگردد، و برای هدایت رفتار ماشینهایی مانند دستگاههای نساجی اتوماتیک و نوازندههای پیانو به کار میرفت. هزاران زبان برنامه نویسی خلق شدهاند، بیشتر در زمینهٔ رایانه، زمینهای که هر ساله بسیاری دیگر ایجاد میشوند.
تقسیمبندی
زبانهای برنامه نویسی را میتوان از چهار دیدگاه متفاوت مورد بررسی قرار داده و تقسیم بندی کرد: الف)روشهای برنامه نویسی ۱-زیر روالی ۲-ساخت یافته ۳-مدولار ۴-شئ گرا ب)نزدیکی به زبان ماشین ۱-سطح پایین ۲-سطح میانی ۳-سطح بالا ج)نوع ترجمه ۱-مفسری ۲-کامپایلری د)رابط برنامه نویسی ۱-مبتنی بر متن ۲-مبتنی بر گرافیک (ویژوال)
تعاریف
ویژگیهایی که غالباً برای تشکیل یک زبان برنامه نویسی مهم شمرده میشوند:
تابع :یک زبان برنامه نویسی، زبانی است که برای نوشتن برنامههای رایانهای به کار میرود که رایانهای را برای انجام محاسبات یا اجرای الگوریتم و یا احتمالاً کنترل دستگاههای خارجی مثل چاپگر، ربات و... درگیر میکنند.
هدف: زبانهای برنامه نویسی با زبانهای طبیعی تفاوت دارند و آن اینکه زبانهای طبیعی فقط برای فعل و انفعالات بین مردم به کار میروند، در حالیکه زبانهای برنامه نویسی همچنین به انسانها اجازه میدهد که از طریق دستورات با ماشینها ارتباط برقرار کنند. برخی زبانهای برنامه نویسی بوسیله یک دستگاه استفاده میشوند تا دستگاه دیگری را کنترل کند. برای مثال برنامههای پست اسکریپت(post script) غالباً توسط برنامه دیگری برای کنترل یک چاپگر و یا نمایشگر ایجاد میشوند.
ساختارها: زبانهای برنامه نویسی ممکن است ساختارهایی برای تعریف و تغییر داده ساختارها یا کنترل جریان اجرا داشته باشند.
توان بیانگر: نظریه محاسبات، زبانها را بوسیله محاسباتی که توان بیان آنها را دارند طبقه بندی میکند. تمام زبانهای "کامل تورینگ" میتوانند مجموعه یکسانی از الگوریتمها را پیاده سازی کنند.ANSI/ISO SQL و Charity مثالهایی هستند از زبانهایی که کامل تورینگ نیستند، ولی غالباً زبان برنامه نویسی نامیده میشوند.
برخی مولفین اصطلاح" زبان برنامه نویسی" را محدود به آنهایی میکنند که میتوانند تمام الگوریتمهای ممکن را پیاده سازی کنند، گاهی اوقات اصطلاح" زبان رایانه" برای زبانهای برنامه نویسی محدودتر به کار میرود. زبانهای غیر محاسباتی، مانند زبانهای مارک آپ(markup) HTML یا گرامرهای قراردادی مثل BNF، معمولاً زبان برنامه نویسی محسوب نمیشوند. یک زبان برنامه نویسی(که میتواند کامل تورینگ نباشد) ممکن است در این زبانهای غیر محاسباتی (میزبان) تعبیه شوند.
کاربرد
زبان برنامه نویسی یک مکانیزم ساخت یافته برای تعریف دادهها، و عملیات یا تبدیلهایی که ممکن است بطور اتوماتیک روی آن داده انجام شوند، فراهم میکند. یک برنامه نویس از انتزاعات آماده در زبان استفاده میکند تا مفاهیم به کار رفته در محاسبات را بیان کند. این مفاهیم به عنوان یک مجموعه از سادهترین عناصر موجود بیان میشوند(مفاهیم ابتدایی نامیده میشوند). زبانهای برنامه نویسی با غالب زبانهای انسانی تفاوتی دارد و آن این است که نیاز به بیان دقیق تر و کامل تری دارد. هنگام استفاده از زبانهای طبیعی برای ارتباط با دیگر انسانها، نویسندگان و گویندگان میتوانند مبهم باشند و اشتباهات کوچک داشته باشند، و همچنان انتظار داشته باشند که مخاطب آنها متوجه شده باشد. اگرچه، مجازا، رایانهها "دقیقاً آنچه که به آنها گفته شده را انجام میدهند." و نمیتوانند "بفهمند" که نویسنده دقیقاً چه کدی مد نظر نویسنده بودهاست] البته امروزه برنامههایی برای انجام این کار تولید شدهاند و تلاشهای بسیاری در این زمینه انجام شده ولی هنوز به نتیجهٔ رضایت بخشی نرسیده است[. ترکیب تعریف زبان، یک برنامه، و ورودی برنامه بطور کامل رفتار خروجی را به هنگام اجرای برنامه (در محدوده کنترل آن برنامه) مشخص میکند. برنامههای یک رایانه ممکن است در یک فرایند ناپیوسته بدون دخالت انسان اجرا شوند، یا یک کاربر ممکن است دستورات را در یک مرحله فعل و انفعال مفسر تایپ کند.در این حالت "دستور"ها همان برنامهها هستند، که اجرای آنها زنجیروار به هم مرتبطند.به زبانی که برای دستور دادن به برنامهای استفاده میشود، زبان اسکریپت میگویند. بسیاری از زبانها کنار گذاشته شدهاند، برای رفع نیازهای جدید جایگزین شدهاند، با برنامههای دیگر ترکیب شدهاند و در نهایت استعمال آنها متوقف شدهاست. با وجود اینکه تلاشهایی برای طراحی یک زبان رایانه" کامل" شدهاست که تمام اهداف را تحت پوشش قرار دهد، هیچ یک نتوانستند بطور کلی این جایگاه را پر کنند. نیاز به زبانهای رایانهای گسترده از گستردگی زمینههایی که زبانها استفاده میشوند، ناشی میشود:
محدوده برنامهها از متون بسیار کوچک نوشته شده توسط افراد عادی تا سیستمهای بسیار بزرگ نوشته شده توسط صدها برنامه نویس است
توانایی برنامه نویسها: از تازه کارهایی که بیش از هر چیز به سادگی نیاز دارند تا حرفهایهایی که با پیچیدگی قابل توجهی کنار میآیند.
برنامهها باید سرعت، اندازه و سادگی را بسته به سیستمها از ریزپردازندها تا ابر رایانهها متناسب نگه دارند.
برنامهها ممکن است یک بار نوشته شوند و تا نسلها تغییر نکنند، و یا ممکن است پیوسته اصلاح شوند.
در نهایت، برنامه نویسها ممکن است در علایق متفاوت باشند: آنها ممکن است به بیان مسائل با زبانی خاص خو گرفته باشند.
یک سیر رایج در گسترش زبانهای برنامه نویسی این است که قابلیت حل مسائلی با درجات انتزاعی بالاتری را اضافه کنند. زبانهای برنامه نویسی اولیه به سختافزار رایانه گره خورده بودند. همانطور که زبانهای برنامه نویسی جدید گسترش پیدا کردهاند، ویژگیهایی به برنامهها افزوده شده که به برنامه نویس اجازه دهد که ایدههایی که از ترجمه ساده به دستورات سختافزار دورتر هستند نیز استفاده کند. چون برنامه نویسها کمتر به پیچیدگی رایانه محدود شدهاند، برنامههای آنها میتواند محاسبات بیشتری با تلاش کمتر از سوی برنامه نویس انجام دهند. این به آنها این امکان را میدهد که کارایی بیشتردر واحد زمان داشته باشند. "پردازندههای زبان طبیعی" به عنوان راهی برای ازبین بردن نیاز به زبانهای اختصاصی برنامه نویسی پیشنهاد شدهاند. هرچند، این هدف دور است و فواید آن قابل بحث است. "ادسگر دیجسترا" موافق بود که استفاده از یک زبان رسمی برای جلوگیری از مقدمه سازی ساختارهای بی معنی واجب است، و زبان برنامه نویسی طبیعی را با عنوان "احمقانه" رد کرد، "آلن پرلیس" نیز مشابها این ایده را رد کرد. مطابق با متدولوژی نامتجانس استفاده شده توسط langpop.com در سال ۲۰۰۸، ۱۲ زبان پرکاربرد عبارتند از: C, C++, C#, Java, JavaScript, Perl, PHP, Python, Ruby, Shell, SQL, and Visual Basic.
معناشناسی ایستا
معناشناسی ایستا محدودیتهایی بر روی ساختار مجاز متنها تعیین میکند که بیان آنها در فرمول دستوری استاندارد مشکل و یا غیر ممکن است. مهمترین این محدودیتها به وسیله سیستم نوع گذاری انجام میشود.
سیستم نوع گذاری
یک سیستم نوع گذاری مشخص میکند که یک زبان برنامه نویسی چگونه مقادیر و عبارات را در نوع(type) دسته بندی میکند، چگونه میتواند آن نوعها را تغییر دهد و رفتار متقابل آنها چگونهاست. این کارعموما توضیح داده ساختارهایی که میتوانند در آن زبان ایجاد شوند را شامل میشود. طراحی و مطالعه سیستمهای نوع گذاری بوسیله ریاضیات قراردادی را تئوری نوع گذاری گویند.
زبانهای نوع گذاری شده و بدون نوع گذاری
یک زبان نوع گذاری شدهاست اگر مشخصات هر عملیات، نوع دادههای قابل اجرا توسط آن را با نشان دادن نوعهایی که برای آنها قابل اجرا نیست، تعیین کند. برای مثال، "این متن درون گیومه قرار دارد" یک رشتهاست. در غالب زبانهای برنامه نویسی، تقسیم یک رشته با یک عدد معنایی ندارد. در نتیجه غالب زبانهای برنامه نویسی مدرن ممکن است اجرای این عملیات را توسط برنامهها رد کنند. در برخی زبانها، عبارات بی معنی ممکن است هنگام ترجمه(compile) پیدا شود(چک کننده نوع ایستا)، و توسط کامپایلر رد شود، در حالی که در سایر برنامهها، هنگام اجرا پیدا شود.(چک کننده نوع دینامیک) که به استثنای در حال اجرا منتج شود(runtime exception). حالت خاص زبانهای نوع دار زبانهای تک نوعند. این زبانها غالباً اسکریپتی و یا مارک آپ هستند، مانند rexx وSGML و فقط یک داده گونه دارند—غالباً رشتههای کاراکتری که هم برای دادههای عددی و هم برای دادههای سمبلی کاربرد دارند. در مقابل، یک زبان بدون نوع گذاری، مثل اکثر زبانهای اسمبلی، این امکان را میدهد که هر عملیاتی روی هر دادهای انجام شود، که معمولاً دنبالهای از بیتها با طولهای متفاوت در نظر گرفته میشوند. زبانهای سطح بالا که بی نوع هستند شامل زبانهای ساده رایانهای و برخی از انواع زبانهای نسل چهارم.
در عمل، در حالیکه تعداد بسیار کمی از دیدگاه نظریه نوع، نوع گذاری شده تلقی میشوند(چک کردن یا رد کردن تمام عملیاتها)، غالب زبانهای امروزی درجهای از نوع گذاری را فراهم میکنند. بسیاری از زبانهای تولیدکننده راهی را برای گذشتن یا موقوف کردن سیستم نوع فراهم میکنند.
نوع گذاری قوی و ضعیف
نوع گذاری ضعیف این امکان را ایجاد میکند که با متغیری به جای متغیری دیگر برخورد شود، برای مثال رفتار با یک رشته به عنوان یک عدد. این ویژگی بعضی اوقات ممکن است مفید باشد، اما ممکن است باعث ایجاد برخی مشکلات برنامه شود که موقع کامپایل و حتی اجرا پنهان بمانند.
نوع گذاری قوی مانع رخ دادن مشکل فوق میشود. تلاش برای انجام عملیات روی نوع نادرست متغیر منجر به رخ دادن خطا میشود. زبانهایی که نوع گذاری قوی دارند غالباً با نام "نوع-امن" و یا امن شناخته میشوند. تمام تعاریف جایگزین برای "ضعیف نوع گذاری شده" به زبانها اشاره میکند، مثل 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 را نگه دارد، مانند چند برنامه جاوا سکریبت، در قسمتی از کد پرل خود و برای پشتیبانی از چندین زبان برنامه نویسی با تناسب متغیر در "مدرک اینجا" استفاده کند.
برنامهنویسی رایانه در فرهنگ واژه غیر متخصّصین ممکن است به تمام پروژه ساخت نرمافزار یا برنامهٔ رایانهای گفته شود. با این همه برنامهنویسی تنها بخشی از فرایند توسعهٔ نرمافزار یا برنامه رایانهای است. اهمیت، توجه و منابع اختصاص داده شده به برنامهنویسی، بسته به ویژگیهای مشخص شده محصول و خواست افراد درگیر در پروژه و کاربران و در نهایت شیوهٔ انتخاب شده مهندسی نرمافزار متغیر است.
برنامهنویسی کامپیوتر (که اغلب در انگلیسی programming یا coding گفته میشود) فرایند نوشتن، اشکال زدایی(debug) و نگهداری کد منبع (source code) برنامه کامپیوتر میباشد. این کد منبع با یک زبان برنامه نویسی نوشته شده است. این کد منبع ممکن است تغییر داده شده یک کد قبلی و یا یک کد کاملاً جدید باشد. هدف برنامه نویسی ساختن یک برنامه میباشد که یک رفتار خواسته شده را به نمایش بگذارد.

تاریخچه
موضوع دستگاههایی که به دنبالهای از دستورالعملهای از قبل تعریف شده عمل میکند بر میگردد به Greek Mythology.
برنامه نویسی مدرن
اندازه گیری کاربرد زبان
تعیین اینکه محبوبترین زبان برنامه نویسی مدرن کدام است کار بسیار مشکلی است. بعضی از زبانها در کاربردهای خاصی محبوب است و بعضی دیگر مرتباً در نوشتن کاربردهای گوناگون استفاده میشود. روشهای اندازه گیری محبوبیت زبان شامل موارد زیر میباشد: شمردن تعداد آگهیهای اشتغال و توجه به یک زبان، تعداد کتابهای آموزشی فروخته شده در مورد یک زبان، تخمین تعداد خطوط کد نوشته شده در یک زبان
پارادایمها
زبانهای برنامهنویسی گوناگون براساس قابلیتهای درنظر گرفته شده از شیوهٔ خطهای مختلف استفاده میکنند. موارد ریزتری مانند چگونگی برخورد با نیازهای پشت پردهٔ ماشین مانند مدیریت حافظه و مدیریت زباله نیز در زبانهای مختلف متفاوت است. علاوه بر اینها، مفاهیمی متفاوت از (اجرای) یک برنامه تصور شدهاند که پارادایم یا الگو نام دارند.
برنامهنویسی دستوری
برنامهنویسی دستوری (به انگلیسی: Imperative programming) در علوم رایانه یکی از شیوههای برنامهنویسی است که در آن مراحل اجرای یک برنامه کامپیوتری قدم به قدم توسط برنامه نویس بیان میشود. این بر خلاف زبانهای اعلانی است که در آنها تنها نتیجه انجام دستورات بیان میشود. به بیان دیگر در زبانهای دستوری چگونگی اجرای برنامه بیان میشود اما در زبانهای اعلانی چیستی نتیجه بیان میشود.
به عنوان مثال اگر قصد باز کردن دری را داشته باشیم و با زبان اعلانی این را بخواهیم بیان کنیم خواهیم گفت در را باز کن اما اگر با زبان دستوری بیان کنیم خواهیم گفت بلند شو، به طرف در نردیک شو، دستگیره را بگیر و در را به طرف بیرون هل بده.
زبان برنامهنویسی
زبانهای برنامهنویسی ساختارهای زبانی دستورمداری در رایانهها هستند که بهوسیلهٔ آنها میتوان یک الگوریتم را بهوسیلهٔ ساختارهای دستوری متفاوت برای اجرای رایانه توصیف کرد و با این روش امکان نوشتن برنامه جهت تولید نرمافزارهای جدید بوجود میآید. معمولاً هر زبان برنامهنویسی دارای یک محیط نرمافزاری برای وارد کردن متن برنامه، اجرا، همگردانی و رفع اشکال آن هستند. عموماً زبانهای برنامه نویسی را به پنج نسل تقسیم میکنند:
نسل اول زبان ماشین - زبان صفرو یک
نسل دوم زبانهایی مانند اسمبلی -قابل فهم تر برای انسان
نسل سوم زبانهایی مانند کوبول و پی ال وان و... -دستورات قابل فهم تر برای انسان و نیاز به کمپایلرها
نسل چهارم مثل زبانهای اوراکل و فاکس پرو و اس کیو الها - نزدیک به محاورههای انسانی
نسل پنج زبانهایی مانند prolog , ops5 - تمرکز بر حل مسئله و استفاده از الگوریتمهای نوشته شده توسط
برنامه نویس
یک زبان برنامه نویسی یک زبان مصنوعی است که برای بیان محاسباتی که توسط یک ماشین (مخصوصا رایانه) قابل انجام است، طراحی شدهاست.زبانهای برنامه نویسی برای ایجاد برنامههایی به کار میروند که رفتار یک ماشین را مشخص میکنند، الگوریتم دقیق را بیان میکنند، و یا روشی برای ارتباط انسانند. بسیاری از زبانهای برنامه نویسی تعدادی قالب از ویژگیهای نوشته شده دستوری(syntax) و معناشناسی (semantics) دارند، چرا که رایانهها دستورات دقیقاً مشخص نیاز دارند. برخی توسط سند خصوصیات (specification document) تعیین شدهاند. (برای مثال یک استاندارد ISO)، در حالی که برخی دیگر دارای پیاده سازی غالبی میباشند.(مانند Perl) اولین زبان برنامه نویسی به قبل از اختراع رایانه باز میگردد، و برای هدایت رفتار ماشینهایی مانند دستگاههای نساجی اتوماتیک و نوازندههای پیانو به کار میرفت. هزاران زبان برنامه نویسی خلق شدهاند، بیشتر در زمینهٔ رایانه، زمینهای که هر ساله بسیاری دیگر ایجاد میشوند.
تقسیمبندی
زبانهای برنامه نویسی را میتوان از چهار دیدگاه متفاوت مورد بررسی قرار داده و تقسیم بندی کرد: الف)روشهای برنامه نویسی ۱-زیر روالی ۲-ساخت یافته ۳-مدولار ۴-شئ گرا ب)نزدیکی به زبان ماشین ۱-سطح پایین ۲-سطح میانی ۳-سطح بالا ج)نوع ترجمه ۱-مفسری ۲-کامپایلری د)رابط برنامه نویسی ۱-مبتنی بر متن ۲-مبتنی بر گرافیک (ویژوال)
تعاریف
ویژگیهایی که غالباً برای تشکیل یک زبان برنامه نویسی مهم شمرده میشوند:
تابع :یک زبان برنامه نویسی، زبانی است که برای نوشتن برنامههای رایانهای به کار میرود که رایانهای را برای انجام محاسبات یا اجرای الگوریتم و یا احتمالاً کنترل دستگاههای خارجی مثل چاپگر، ربات و... درگیر میکنند.
هدف: زبانهای برنامه نویسی با زبانهای طبیعی تفاوت دارند و آن اینکه زبانهای طبیعی فقط برای فعل و انفعالات بین مردم به کار میروند، در حالیکه زبانهای برنامه نویسی همچنین به انسانها اجازه میدهد که از طریق دستورات با ماشینها ارتباط برقرار کنند. برخی زبانهای برنامه نویسی بوسیله یک دستگاه استفاده میشوند تا دستگاه دیگری را کنترل کند. برای مثال برنامههای پست اسکریپت(post script) غالباً توسط برنامه دیگری برای کنترل یک چاپگر و یا نمایشگر ایجاد میشوند.
ساختارها: زبانهای برنامه نویسی ممکن است ساختارهایی برای تعریف و تغییر داده ساختارها یا کنترل جریان اجرا داشته باشند.
توان بیانگر: نظریه محاسبات، زبانها را بوسیله محاسباتی که توان بیان آنها را دارند طبقه بندی میکند. تمام زبانهای "کامل تورینگ" میتوانند مجموعه یکسانی از الگوریتمها را پیاده سازی کنند.ANSI/ISO SQL و Charity مثالهایی هستند از زبانهایی که کامل تورینگ نیستند، ولی غالباً زبان برنامه نویسی نامیده میشوند.
برخی مولفین اصطلاح" زبان برنامه نویسی" را محدود به آنهایی میکنند که میتوانند تمام الگوریتمهای ممکن را پیاده سازی کنند، گاهی اوقات اصطلاح" زبان رایانه" برای زبانهای برنامه نویسی محدودتر به کار میرود. زبانهای غیر محاسباتی، مانند زبانهای مارک آپ(markup) HTML یا گرامرهای قراردادی مثل BNF، معمولاً زبان برنامه نویسی محسوب نمیشوند. یک زبان برنامه نویسی(که میتواند کامل تورینگ نباشد) ممکن است در این زبانهای غیر محاسباتی (میزبان) تعبیه شوند.
کاربرد
زبان برنامه نویسی یک مکانیزم ساخت یافته برای تعریف دادهها، و عملیات یا تبدیلهایی که ممکن است بطور اتوماتیک روی آن داده انجام شوند، فراهم میکند. یک برنامه نویس از انتزاعات آماده در زبان استفاده میکند تا مفاهیم به کار رفته در محاسبات را بیان کند. این مفاهیم به عنوان یک مجموعه از سادهترین عناصر موجود بیان میشوند(مفاهیم ابتدایی نامیده میشوند). زبانهای برنامه نویسی با غالب زبانهای انسانی تفاوتی دارد و آن این است که نیاز به بیان دقیق تر و کامل تری دارد. هنگام استفاده از زبانهای طبیعی برای ارتباط با دیگر انسانها، نویسندگان و گویندگان میتوانند مبهم باشند و اشتباهات کوچک داشته باشند، و همچنان انتظار داشته باشند که مخاطب آنها متوجه شده باشد. اگرچه، مجازا، رایانهها "دقیقاً آنچه که به آنها گفته شده را انجام میدهند." و نمیتوانند "بفهمند" که نویسنده دقیقاً چه کدی مد نظر نویسنده بودهاست] البته امروزه برنامههایی برای انجام این کار تولید شدهاند و تلاشهای بسیاری در این زمینه انجام شده ولی هنوز به نتیجهٔ رضایت بخشی نرسیده است[. ترکیب تعریف زبان، یک برنامه، و ورودی برنامه بطور کامل رفتار خروجی را به هنگام اجرای برنامه (در محدوده کنترل آن برنامه) مشخص میکند. برنامههای یک رایانه ممکن است در یک فرایند ناپیوسته بدون دخالت انسان اجرا شوند، یا یک کاربر ممکن است دستورات را در یک مرحله فعل و انفعال مفسر تایپ کند.در این حالت "دستور"ها همان برنامهها هستند، که اجرای آنها زنجیروار به هم مرتبطند.به زبانی که برای دستور دادن به برنامهای استفاده میشود، زبان اسکریپت میگویند. بسیاری از زبانها کنار گذاشته شدهاند، برای رفع نیازهای جدید جایگزین شدهاند، با برنامههای دیگر ترکیب شدهاند و در نهایت استعمال آنها متوقف شدهاست. با وجود اینکه تلاشهایی برای طراحی یک زبان رایانه" کامل" شدهاست که تمام اهداف را تحت پوشش قرار دهد، هیچ یک نتوانستند بطور کلی این جایگاه را پر کنند. نیاز به زبانهای رایانهای گسترده از گستردگی زمینههایی که زبانها استفاده میشوند، ناشی میشود:
محدوده برنامهها از متون بسیار کوچک نوشته شده توسط افراد عادی تا سیستمهای بسیار بزرگ نوشته شده توسط صدها برنامه نویس است
توانایی برنامه نویسها: از تازه کارهایی که بیش از هر چیز به سادگی نیاز دارند تا حرفهایهایی که با پیچیدگی قابل توجهی کنار میآیند.
برنامهها باید سرعت، اندازه و سادگی را بسته به سیستمها از ریزپردازندها تا ابر رایانهها متناسب نگه دارند.
برنامهها ممکن است یک بار نوشته شوند و تا نسلها تغییر نکنند، و یا ممکن است پیوسته اصلاح شوند.
در نهایت، برنامه نویسها ممکن است در علایق متفاوت باشند: آنها ممکن است به بیان مسائل با زبانی خاص خو گرفته باشند.
یک سیر رایج در گسترش زبانهای برنامه نویسی این است که قابلیت حل مسائلی با درجات انتزاعی بالاتری را اضافه کنند. زبانهای برنامه نویسی اولیه به سختافزار رایانه گره خورده بودند. همانطور که زبانهای برنامه نویسی جدید گسترش پیدا کردهاند، ویژگیهایی به برنامهها افزوده شده که به برنامه نویس اجازه دهد که ایدههایی که از ترجمه ساده به دستورات سختافزار دورتر هستند نیز استفاده کند. چون برنامه نویسها کمتر به پیچیدگی رایانه محدود شدهاند، برنامههای آنها میتواند محاسبات بیشتری با تلاش کمتر از سوی برنامه نویس انجام دهند. این به آنها این امکان را میدهد که کارایی بیشتردر واحد زمان داشته باشند. "پردازندههای زبان طبیعی" به عنوان راهی برای ازبین بردن نیاز به زبانهای اختصاصی برنامه نویسی پیشنهاد شدهاند. هرچند، این هدف دور است و فواید آن قابل بحث است. "ادسگر دیجسترا" موافق بود که استفاده از یک زبان رسمی برای جلوگیری از مقدمه سازی ساختارهای بی معنی واجب است، و زبان برنامه نویسی طبیعی را با عنوان "احمقانه" رد کرد، "آلن پرلیس" نیز مشابها این ایده را رد کرد. مطابق با متدولوژی نامتجانس استفاده شده توسط langpop.com در سال ۲۰۰۸، ۱۲ زبان پرکاربرد عبارتند از: C, C++, C#, Java, JavaScript, Perl, PHP, Python, Ruby, Shell, SQL, and Visual Basic.
معناشناسی ایستا
معناشناسی ایستا محدودیتهایی بر روی ساختار مجاز متنها تعیین میکند که بیان آنها در فرمول دستوری استاندارد مشکل و یا غیر ممکن است. مهمترین این محدودیتها به وسیله سیستم نوع گذاری انجام میشود.
سیستم نوع گذاری
یک سیستم نوع گذاری مشخص میکند که یک زبان برنامه نویسی چگونه مقادیر و عبارات را در نوع(type) دسته بندی میکند، چگونه میتواند آن نوعها را تغییر دهد و رفتار متقابل آنها چگونهاست. این کارعموما توضیح داده ساختارهایی که میتوانند در آن زبان ایجاد شوند را شامل میشود. طراحی و مطالعه سیستمهای نوع گذاری بوسیله ریاضیات قراردادی را تئوری نوع گذاری گویند.
زبانهای نوع گذاری شده و بدون نوع گذاری
یک زبان نوع گذاری شدهاست اگر مشخصات هر عملیات، نوع دادههای قابل اجرا توسط آن را با نشان دادن نوعهایی که برای آنها قابل اجرا نیست، تعیین کند. برای مثال، "این متن درون گیومه قرار دارد" یک رشتهاست. در غالب زبانهای برنامه نویسی، تقسیم یک رشته با یک عدد معنایی ندارد. در نتیجه غالب زبانهای برنامه نویسی مدرن ممکن است اجرای این عملیات را توسط برنامهها رد کنند. در برخی زبانها، عبارات بی معنی ممکن است هنگام ترجمه(compile) پیدا شود(چک کننده نوع ایستا)، و توسط کامپایلر رد شود، در حالی که در سایر برنامهها، هنگام اجرا پیدا شود.(چک کننده نوع دینامیک) که به استثنای در حال اجرا منتج شود(runtime exception). حالت خاص زبانهای نوع دار زبانهای تک نوعند. این زبانها غالباً اسکریپتی و یا مارک آپ هستند، مانند rexx وSGML و فقط یک داده گونه دارند—غالباً رشتههای کاراکتری که هم برای دادههای عددی و هم برای دادههای سمبلی کاربرد دارند. در مقابل، یک زبان بدون نوع گذاری، مثل اکثر زبانهای اسمبلی، این امکان را میدهد که هر عملیاتی روی هر دادهای انجام شود، که معمولاً دنبالهای از بیتها با طولهای متفاوت در نظر گرفته میشوند. زبانهای سطح بالا که بی نوع هستند شامل زبانهای ساده رایانهای و برخی از انواع زبانهای نسل چهارم.
در عمل، در حالیکه تعداد بسیار کمی از دیدگاه نظریه نوع، نوع گذاری شده تلقی میشوند(چک کردن یا رد کردن تمام عملیاتها)، غالب زبانهای امروزی درجهای از نوع گذاری را فراهم میکنند. بسیاری از زبانهای تولیدکننده راهی را برای گذشتن یا موقوف کردن سیستم نوع فراهم میکنند.
نوع گذاری قوی و ضعیف
نوع گذاری ضعیف این امکان را ایجاد میکند که با متغیری به جای متغیری دیگر برخورد شود، برای مثال رفتار با یک رشته به عنوان یک عدد. این ویژگی بعضی اوقات ممکن است مفید باشد، اما ممکن است باعث ایجاد برخی مشکلات برنامه شود که موقع کامپایل و حتی اجرا پنهان بمانند.
نوع گذاری قوی مانع رخ دادن مشکل فوق میشود. تلاش برای انجام عملیات روی نوع نادرست متغیر منجر به رخ دادن خطا میشود. زبانهایی که نوع گذاری قوی دارند غالباً با نام "نوع-امن" و یا امن شناخته میشوند. تمام تعاریف جایگزین برای "ضعیف نوع گذاری شده" به زبانها اشاره میکند، مثل 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 را نگه دارد، مانند چند برنامه جاوا سکریبت، در قسمتی از کد پرل خود و برای پشتیبانی از چندین زبان برنامه نویسی با تناسب متغیر در "مدرک اینجا" استفاده کند.