آمار

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





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


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






علم آمار

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

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

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






علم آماری

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

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







روش‌های آماری

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

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






احتمالات

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






نرم‌افزارها

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

یکی از مهم‌ترین کاربردهای آمار و احتمال با استفاده از رایانه شبیه سازی است.

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







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







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

شبیه سازی‌های آموزشی به طور خاص در یکی از چهار گروه زیر قرار می‌گیرند:

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

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

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

د - شبیه سازی ایفای نقش (جایی که افراد واقعی نقش یک کار واقعی را بازی می‌کنند.)







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







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







۵ - شبیه سازی و بازیها (هم چنین بسیاری از بازی‌های ویدئویی شبیه ساز هستند که به طور ارزان تر آماده سازی شده‌اند. بعضی اوقات از این‌ها به عنوان بازیهای شبیه سازی (sim) نامبرده می‌شود. چنین بازیهایی جنبه‌های گوناگون واقعی را شبیه سازی می‌کنند از اقتصاد گرفته تا وسایل هوانوردی مثل شبیه سازهای پرواز.)







۶ - شبیه سازی مهندسی (شبیه سازی یک مشخصه مهم در سیستم‌های مهندسی است. برای مثال در مهندسی برق، از خطوط تأخیری استفاده می‌شود تا تأخیر تشدید شده و شیفت فاز ناشی از خط انتقال واقعی را شبیه سازی کنند. مشابهاً، از بارهای ظاهری می‌توان برای شبیه سازی مقاومت بدون شبیه سازی تشدید استفاده کرد و از این حالت در مواقعی استفاده می‌شود که تشدید ناخواسته باشد. یک شبیه ساز ممکن است تنها چند تا از کارکردهای واحد را شبیه سازی کند که در مقابل با عملی است که تقلید نامیده می‌شود.






۷ - اغلب شبیه سازی‌های مهندسی مستلزم مدل سازی ریاضی و بررسی‌های کامپیوتری هستند. به هر حال موارد زیادی وجود دارد که مدل سازی ریاضی قابل اعتماد نیست. شبیه سازی مشکلات مکانیک سیالات اغلب مستلزم شبیه سازی‌های ریاضی و فیزیکی است. در این موارد، مدل‌های فیزیکی نیاز به شبیه سازی دینامیک دارند.)







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

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







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







۱۰ - شبیه سازی در تعلیم و تربیت (شبیه سازی‌ها در تعلیم و تربیت گاهی مثل شبیه سازی‌های آموزشی هستند. آن‌ها روی وظایف خاص متمرکز می‌شوند. در گذشته از ویدئو برای معلمین و دانش آموزان استفاده می‌شود تا مشاهده کنند، مسائل را حل کنند و نقش بازی کنند؛ هرچند، یک استفاده جدید تر از شبیه سازی‌ها در تعلیم و تربیت شامل فیلم‌های انیمیشن است (ANV.(ANVها نوعی فیلم ویدئویی کارتون مانند با داستان‌های تخیلی یا واقعی هستند که برای آموزش و یادگیری کلاس استفاده می‌شوند.ANVها برای ارزیابی آگاهی، مهارت‌های حل مسئله و نظم بچه‌ها و معلمین قبل و حین اشتغال کارایی دارند.)

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







واژگانی که درک مفهوم آن‌ها در علم آمار مهم است عبارت‌اند از∗:

جمعیت
نمونه
متغیّر
مقیاس‌های اندازه‌گیری:
مقیاس اسمی (به انگلیسی: Nominal Scale)
مقیاس ترتیبی (به انگلیسی: Ordinal Scale)
مقیاس فاصله‌ای (به انگلیسی: Interval Scales)
مقیاس نسبی (به انگلیسی: Ratio Scales)

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

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

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

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







مراحل پایه برای انجام یک تجربه عبارت‌اند از:

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






سطوح اندازه گیری

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





میانه‌ها و شاخص‌های آماری
میانه‌ها وشاخص‌های آماری ترتیبی

iامین شاخص آمار ترتیبی یک مجموعه n عضوی، iامین عضو کوچک است. به عنوان مثال، مینیمم یک مجموعه از اعضا، اولین شاخص آمار ترتیبی (i=۱)است و ماکزیمم، nامین شاخص آمار ترتیبی (i=n)است. میانه، به طور غیر رسمی، نقطهٔ میانی مجموعه‌است. هنگامی که n فرد است، میانه منحصر به فرد است که در i=(n+۱)/۲ رخ می‌دهد. وقتی n زوج است، دو میانه وجود دارند که در i=n/۲ و i=n/۲+۱ رخ می‌دهند. انتخاب iامین شاخص آمار ترتیبی از یک مجموعه با n عضو مجزا را بیان می‌کند. مسئله انتخاب می‌تواند به طور رسمی به شکل زیر تعیین شود: ورودی: مجموعه A با n عدد(مجزا) و عدد i، که i بزرگتر یا مساوی ۱ و کوچکتر یا مساوی با n است. خروجی: عضو x در A که بزرگتر از دقیقا i-۱ عضو دیگر A می‌باشد. مسئله انتخاب می‌تواند در زمان (O(nlgn حل شود، چون می‌توانیم اعداد را با استفاده از مرتب سازی دودویی (heap sort) یا مرتب سازی ادغام مرتب کنیم و سپس به سادگی iامین عنصر در آرایه خروجی را مشخص کنیم اما الگوریتم‌های سریع تری وجود دارند. ابتدا مسئله انتخاب مینمم و ماکزیمم یک مجموعه از اعضا را بررسی می‌کنیم. مسئله جالب تر، مسئله انتخاب کلی است، که دردوقسمت بررسی می‌شود.قسمت اول یک الگوریتم عملی را تحلیل می‌کند که در حالت میانگین به زمان اجرای (O(n می‌رسد. قسمت بعد یک الگوریتم است که جنبه‌های نظری بیشتری داشته و در بدترین حالت به زمان اجرای (O(n می‌رسد.






مینیمم و ماکزیمم

چه تعداد مقایسه برای تعیین یک مجموعه n عضوی لازم است؟ می‌توانیم به سادگی به حد بالای n-۱ برای مقایسه‌ها برسیم: هر عضو مجموعه را به ترتیب بررسی کرده و کوچکترین عضوی که تا کنون دیده شده‌است را نگه می‌داریم. در روال زیر، فرض می‌کنیم مجموعه در آرایه A قرار دارد، که طول آرایه n است. قطعا یافتن ماکزیمم می‌تواند با n-۱ مقایسه نیز انجام شود. آیا این بهترین کاری است که می‌توانیم انجام دهیم؟ بله، چون می‌توانیم به حد پایین n-۱ برا مقایسه‌ها برای مینممم برسیم. الگوریتم را در نظر بگیرید که مینیمم را به صورت مسابقه‌ای بین عناصر تعیین می‌کند. هر مقایسه یک بازی در مسابقه‌است که در آن عنصر کوچکتر از میان دو عنصر، برنده می‌شود. نگرش اصلی این است که هر عنصر به جز برنده باید حداقل یک بازی را ببازد. از این رو n-۱ مقایسه برای تعیین مینیمم لازم است.






مینیمم و ماکزیمم هم زمان

در برخی کاربردها، باید هم مینیمم و هم ماکزیمم یک مجموعه از n عضو را پیدا کنیم. ارائه الگوریتمی که بتواند هم مینیمم و هم ماکزیمم n عضو را با استفاده از (θ(nمقایسه، که به طور مجانبی بهینه‌است، پیدا کند سخت نیست. به سادگی مینیمم و ماکزیمم را به طور مستقل، با استفاده از n-۱ مقایسه برای هر یک پیدا می‌کند، که در کل ۲n-۲ مقایسه انجام می‌دهد. در حقیقت، حداکثر ۳n/۲ مقایسه برای پیدا کردن مینیمم و ماکزیمم کافی است. استراتژی این است که اعضای مینیمم و ماکزیمم را که تا این جا دیده شده‌اند نگه داریم. به جای این که هر عضو ورودی را با مقایسه با مینیمم و ماکزیمم فعلی پردازش کنیم، که هزینه ۲ مقایسه برای هر عضو را صرف می‌کند، اعضا را جفت به جفت مقایسه می‌کنیم. ابتدا جفت عضوها را از ورودی با یکدیگر مقایسه می‌کنیم و سپس عضو کوچکتر را با مینیمم جاری و عضو بزرگتر را با ماکزیمم جاری مقایسه می‌کنیم که هزینه ۳ مقایسه برای هر دو عضو را موجب می‌شود.






انتخاب در زمان خطی مورد انتظار

مسئله انتخاب کلی نسبت به مسئله پیدا کردن یک مینیمم سخت تر به نظر می‌آیدو هم چنان که به صورت شگفت آوری زمان اجرای مجانبی هر دو مسئله یکی است: (θ(n.در این بخش یک الگوریتم تقسیم و حل را برای مسئله انتخاب ارائه می دهیم. الگوریتم Randomized-Select بعد از الگوریتم مرتب سازی سریع مدل می‌شود. همانند مرتب سازی سریع ایده آن است که آرایه ورودی را به طور بازگشتی تقسیم کنیم. ولی برخلاف مرتب سازی سریع که هر دو طرف تقسیم بندی را به صورت بازگشتی پردازش می‌کند، Randomized-Select فقط روی یک طرف تقسیم بندی عمل می‌کند. این تفاوت در تحلیل آشکار می‌شود. در حالی که زمان اجرای مورد انتظار مرتب سازی سریع (θ(nlgn است، زمان مورد انتظار این الگوریتم (θ(nاست. Randomized-Select از روال Randomized-Partition که در بخش مرتب سازی سریع معرفی شد استفاده می‌کند.

این الگوریتم iامین عنصر کوچک آرایه Ap..r را برمی گرداند. بعد از این که Randomized-Partition در خط 3 الگوریتم اجرا می‌شود، آرایهAp..r به دو زیر آرایه (شاید خالی)Ap..q-1و Aq+1..rتقسیم می‌شود. به طوری که هر عنصرAp..q-1 کوچک تر یا مساوی با Aqاست که Aqنیز به نوبهٔ خود کوچک تر از هر عنصری ازAq+1..r می‌باشد. همانند مرتب سازی سریع، به Aq به عنوان عنصر محوری(pivot)اشاره می کنیم. خط 4 از Randomized-Select تعداد k عناصر در زیر آرایه Ap..q-1را محاسبه می‌کند، به عبارت دیگر تعداد عناصر در طرف کم تر تقسیم بندی، به علاوه 1 برای عنصر محوری. سپس خط 5 چک می‌کندکه آیi Aq امین عنصر کوچک هست یا نه.اگر باشد آن گاهAq برگردانده می‌شود. در غیر این صورت، الگوریتم تعیین می‌کند که iامین عنصر کوچک در کدام یک از دو زیر آریه قرار دارد. زمان اجرای Randomized-Select در بدترین حالت (θ(n^2است. اگر چه الگوریتم به خوبی در حالت میانگین کار می‌کند و چون تصادفی است، هیچ ورودی خاصی باعث رفتار بدترین حالت نمی‌شود.






انتخاب در بدترین حالت زمان خطی

اکنون الگوریتمی را بررسی می کنیم که زمان اجرای آن در بدترین حالت (O(nاست. مانند Randomized-Select، الگوریتم Select عنصر مورد نظر را با تقسیم بندی بازگشتی آرایه ورودی پیدا می‌کند. اما ایده‌ای که پشت این الگوریتم وجود دارد، این است که یک قسمت خوب را در هنگامی که آرایه تقسیم می‌شود تضمین می‌کند. Select از الگوریتم تقسیم بندی قطعی Partition مربوط به مرتب سازی سریع استفاده می‌کند که طوری تغییر یافته است که عنصری که تقسیم بندی حول آن انجام می‌شود را به عنوان پارامتر ورودی بگیرد. این الگوریتم iامین عنصر کوچک از آرایه ورودی با n>1 عنصر را با اجرای مراحل زیر تعیین می‌کند.(اگر n=1باشد آن گاه Select به طور مطلق، تنها ورودیش را به عنوان iامین عنصر کوچک برمی گرداند.)

n عنصرآرایه ورودی را بهn/5 گروه 5 عنصری تقسیم کنید و حداکثر یک گروه از n mod 5 عنصر باقیمانده ساخته می‌شود.
میانه هر یک از n/5گروه را ابتدا با مرتب ساز درجی عناصر هر گروه (که حداکثر 5 عنصر در هر یک وجود دارد)و سپس انتخاب میانه از لیست مرتب شده عناصر گروه پیدا کنید.
از Select به صورت بازگشتی برای پیدا کردن میانه x از n/5میانه‌ای که در مرحله 2 پیدا شدند استفاده کنید.
آرایه ورودی را حول میانهٔ میانه‌ها (یعنی x)با استفاده از نسخه تغییر یافته Partition تقسیم کنید. فرض کنید k یک واحد بیشتر از تعداد عناصر در طرف کم تر تقسیم بندی باشد، بنابراین k، x امین عنصر کوچک است و n-k عنصر در طرف بیشتر تقسیم بندی موجود است.
اگر i=k باشد، x را برگردانید در غیر این صورت اگر i<k باشد از Select به صورت بازگشتی برای پیدا کردن iامین عنصر کوچک در طرف کم تر استفاده کرده یا اگر i>k باشد، از آن برای پیدا کردن (i-k)امین عنصر کوچک در طرف بیشتر استفاده کنید.

برای تحلیل زمان اجرای Select، ابتدا یک حد پایین روی تعداد عناصر بزرگتر از عنصر تقسیم کنندهٔ x تعیین می کنیم. حداقل نصفی از میانه‌های پیدا شده در مرحله 2 بزرگتر از x یعنی میانهٔ میانه‌ها هستند. بنابراین در حداقل نصف n/5گروه، 3 عنصر وجود دارند که از x بزرگترند، به جز برای گروهی که اگر5 به n قابل قسمت نباشد، کم تر از 5 عنصر دارد و گروهی که خود شامل x است. با منظور نکردن این دو گروه ثابت می‌شود که تعداد عناصر بزرگتر از x حداقل برابر است با

3(2-1/2n/5)

که این عبارت بزرگتر یا مساوی با 3n/10-6 است. به طور مشابه عناصری که کوچک تر از x هستند حداقل 3n/10-6 است. بنابراین در بدترین حالت، Select برای حداکثر 7n/10+6 عنصر در مرحلهٔ 5 به طور بازگشتی فراخوانی می‌شود.






آزمون فرض آماری

آزمون فرض آماری (به انگلیسی: Statistical hypothesis testing) در علم آمار روشی است برای بررسی ادعاها یا فرض‌ها دربارهٔ پارامترهای توزیع در جوامع آماری. در این روش فرض صفر (به انگلیسی: Null-hypothesis) یا فرض اولیه مورد بررسی ست که متناسب با موضوع مطالعه فرضی به عنوان فرض بدیل یا فرض مقابل (به انگلیسی: Alternative-hypothesis) انتخاب می‌شود تا درستی هر کدام نسبت به هم مورد آزمون قرار گیرد.






آمار پارامتری

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

به عنوان مثال فرض می‌شود که توزیع نمره‌های یک امتحان از توزیع نرمال پیروی می‌کند. در نتیجه برای مشخص‌شدن توزیع احتمال، کافی است میانگین و واریانس توزیع را از روی داده‌های تجربی (نمره‌های دانش‌آموزان) به دست بیاوریم. حال برای پاسخ‌گفتن به سوال‌هایی چون «درصد دانش‌آموزانی که نمره‌ای بین ۱۰ تا ۱۵ آورده‌اند» از تابع توزیع به دست آمده استفاده می‌کنیم (البته بدیهی است که روش‌های ساده‌تری نیز برای چنین کاری وجود دارد).

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






آماره

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

تابع U=g(X۱, X۲, …, Xn)‎ از نمونهٔ تصادفی X۱, X۲, …, Xn را که در آن پارامتر مجهولی وجود نداشته باشد یک آماره می‌گویند. در این تعریف U یک متغیر تصادفی است که توزیع آن ممکن است به پارامتر بستگی نداشته باشد؛ اما تنها آماره‌هایی برای برآورد کردن مفید هستند که توزیعشان به پارامتر مجهول بستگی داشته باشد و اطلاعاتی در مورد این پارامتر به ما بدهند.






آنتروپی آماری
انتروپی آماری یک کمیت ترمودینامیکی است که در شیمی‌فیزیک کاربردهای فراوان دارد.






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





چولگی

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






تعریف

چولگی برابر با گشتاور سوم نرمال شده است. چولگی در حقیقت معیاری از وجود یا عدم تقارن تابع توزیع می باشد. برای یک توزیع کاملاً متقارن چولگی صفر و برای یک توزیع نامتقارن با کشیدگی به سمت مقادیر بالاتر چولگی مثبت و برای توزیع نامتقارن با کشیدگی به سمت مقادیر کوچکتر مقدار چولگی منفی است.






داده

به طور کلی، می‌توان همهٔ دانسته‌ها، آگاهی‌ها، داشته‌ها، آمارها، شناسه‌ها، پیشینه‌ها و پنداشته‌ها را داده یا دیتا (به انگلیسی: Data) نامید. انسان برای ثبت و درک مشترک هر واقعیت و پدیده از نشانه‌های ویژهٔ آن بهره گرفته‌است.

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






در رایانه

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

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

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






انواع داده‌ها از نظر ساخت‌یافتگی

داده‌های ساخت‌یافته
داده‌های نیمه‌ساخت‌یافته







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





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





پردازش رایانه‌ای داده‌ها

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

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






پردازش علائم

پردازش علائم (سیگنال‌ها) را باید یکی از شاخه‌های وسیع و پر کاربرد در پردازش داده‌ها به حساب آورد.
12:37 pm
برنامه‌نویسی

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

برنامه‌نویسی کامپیوتر (که اغلب در انگلیسی 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 را نگه دارد، مانند چند برنامه جاوا سکریبت، در قسمتی از کد پرل خود و برای پشتیبانی از چندین زبان برنامه نویسی با تناسب متغیر در "مدرک اینجا" استفاده کند.
ساعت : 12:37 pm | نویسنده : admin | کاکاپو | مطلب قبلی
کاکاپو | next page | next page