اروپا

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





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

در روم باستان انواع گوناگونی از ازدواج وجود داشت. گونه سنتی (متعارف) آن conventio in manum نامیده می‌شد نیاز به مراسمی با حضور شاهدان داشت و با مراسم بخصوصی نیز باطل می‌شد. در این گونه ازدواج، زن حقوق ارث بری را در خانواده سابق خود از دست می‌داد و حقوق خانواده جدیدش را می‌گرفت. او دیگر تحت تبعیت اختیارات همسرش بود نیاز به ارجاع دارد. یک نوع ازدواج آزاد وجود داشت تحت عنوان sine manu. در این قرارداد، زن همچنان یک عضو از خانوادهٔ خود باقی می‌ماند، او تحت تبعیت پدرش می‌ماند، حقوق ارث بری خانواده سابق خود را حفظ می‌کند وهیچ حقوقی در خانواده جدیدش دریافت نمی‌کند. حداقل سن ازدواج برای دختران ۱۲ سال بود.

از اوایل دوره مسحیت (سالهای ۳۰ تا ۳۲۵)، به ازدواج به دید یک مقولهی کاملاً خصوصی نگاه می‌شد، بدون نیاز به هیچ گونه مراسم خاص مذهبی. اگرچه کشیش ایگناتوس اهل Antioch حدود سال ۱۱۰ به کشیش پلی کرپ اهل Smyrna نوشت، «ین گونه‌است که هر دو زن و مردی که با هم ازدواج می‌کنند، که این پیوند با پذیرش کشیش شکل می‌گیرد، که ازدواج آنها در محضر خداوند انجام می‌شود، و نه بر پایهی شهوت خودشان.» / در قرن دوازدهم کجا؟ زن‌ها مجبور بودند که نام شوهران خود را بگیرند و با از ابتدای نیمهی دوم قرن شانزدهم کجا؟ رضایتنامه والدین به همراه رضایتنامه کلیسا برای ازدواج لازم بود.

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

متوسط سن ازدواج در اوخر قرن سیزدهم تا اوایل قرن شانزدهم، حدود ۲۵ سالگی بوده‌است. نقش ازدواج‌های ثبت شده و قوانین مربوط به ازدواج، به عنوان بخشی از اصلاحات پروتستان، به تصویب دولت رسید. این اصلاحات نگاه مارتین لوتر را منعکس می‌کرد که ازدواج «امری دنیوی» است. در قرن هفدهم، بسیاری از کشورهای اروپایی پروتستان، دچار درگیری با دولت درامرازدواج، بودند. در سال ۲۰۰۰، متوسط سن ازدواج در گسترهً ۴۴-۲۵ سالگی برای مردان و ۳۹-۲۲ سالگی برای زنان بود. در انگلستان در سال ۱۷۵۳، اعتبار ازدواج با رضایت و اجماع، تحت قانون تصویب شدهً Lord Hardwich، در کلیسای آنجلیکا، تعیین می‌شد. این عمل الزامات خاصی همچون، حضور شاهدان در مراسم، را برای ازدواج به وجود می‌آورد.

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

در اوایل عصر حاضر، جان کالوین و همکاران پروتستانی او، به اصلاح قوانین مسیحی ازدواج، که مورد تصویب احکام حقوقی ازدواج ژنو بود، پرداختند. این اصلاحات، خواستار بازنگریِ قانون " لزوم شکل گیری ازدواج با الزامات دوگانهً ثبت نام دولتی و تقدیس کلیساًبود. در انگلستان و ولز در سال ۱۷۵۳، قانون ازدواج Lord Hardwick نیازمند مراسم رسمی بود. مختصر بر‌گزار کردن این عمل، منجر به یک ازدواج خارج از قاعده (غیر معمولی) می‌شد. این نوع از ازدواجهای مخفی یا بی قاعده در زندان ناوگان (Fleet Prison) و صدها مکان دیگر انجام می‌شد. از سال ۱۶۹۰ تا تصویب قانون ازدواج در سال ۱۷۵۳، تنها تعداد ۳۰۰،۰۰ ازدواج مخفی درزندان ناوگان Fleet Prison))انجام شد. این قانون، نیازمند به اجرای مراسمی رسمی بود، که توسط کشیشی در کلیسای آنجلیکا و دو شاهد، به رسمیت شناخته و ثبت می‌شد. این قانون به هیچ وجه برای اقلیت‌های یهودی و کواکرها (Quakers) لازم‌الاجرا نبود. آنها با آداب و رسوم خود ازدواج می‌کردند.

به موجب قانون ازدواج ۱۸۳۶ از سال ۱۸۳۷، در انگلستان و ولز، ازدواج مدنی به عنوان به موجب قانون ازدواج ۱۸۳۶ از سال ۱۸۳۷، در انگلستان و ولز، ازدواج مدنی به عنوان یک جایگزین قانونی برای ازدواج کلیسایی به رسمیت شناخته شد. در آلمان، ازدواج‌های مدنی در ۱۸۷۵ به رسمیت شناخته شد. این قانون اجازه انجام مراسم ازدواج در برابر کارکن رسمی اداره کل امور مدنی را صادر کرد، به شرط آنکه هر دو نفر قصد خود برای ازدواج معتبر و موثر تایید کنند. همچنین پذیرفت که در صورت تمایل طرفین مراسم مذهبی نیز به طور خصوصی بر‌گزار شود.

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






ازدواج از دیدگاه اخلاق

مصطفی ملکیان معتقد است ازدواج و فرزنداوری هر دو اخلاقاً ناروا هستند.






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

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

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

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






ازدواج با هم‌جنس

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






ازدواج همجنسگرایان

انواع مختلفی از ازدواج همجنسگرایانه وجود دارد، از شکل غیر رسمی و روابط نامشروع unsanctioned)) تا پیوندهایی با تشریفات بالا گسترده شده‌است. در حالی که ازدواج همجنسگرایانه(same-sex marriage) شکل نسبتاً جدیدی از رابطه‌است، با این حال قانون ازدواجِ زوج‌های همجنس همانند زوج‌های غیر هم جنس، به رسمیت شناخته می‌شود. تاثیر تبلیغات و بحث‌ها، در دهه اخیر، بر روی تصور مدنیِ ازدواج‌های همجنس گرایانه میان دو زن و دو مرد، بسیار نو و بی سابقه بوده‌است. برای پیوندهای همجنس ثبت شده، سابقهً طولانی درتمامی جهان وجود دارد. این اعتقاد وجود داشته‌است که پیوندهای همجنس در یونان باستان و رم، برخی از مناطق چین مانند فوجیان، و در برخی زمان‌ها در طول تاریخِ اورپای باستان، جشن گرفته می‌شده‌است. قانون با مشخصهًTheodosian (C.TH.۹٫۷٫۳)منتشر شده در ۳۴۲ میلادی، مجازات شدید یا حتی مرگ را، بر افرادی که ازدواج همجنسگرایانه داشتند، تحمیل می‌کرد. اما مقصود دقیق این قانون و رابطه اش با عملکرد اجتماعیِ آن، نامعلوم بود. اینها تنها چند مثال از ازدواج همجنس گرایانه در فرهنگ آن زمان بود.

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

یکی از مشهورترین نمونه‌های زناشویی دو همجنس، در میان قبیلهٔ آزاند سودان دیده شده‌است. جنگجویان این قبیله می‌توانند مردهای جوانتر را به عنوان عروس بگیرند و این عروس موظف است به یک جنگجور از جهت جنسی خدمت کند و وظایف خانه‌داری را برایش انجام دهد. این جنگجویان «شیربها»ی عروس مذکرشان را به خانواده‌اش می‌پردازند و با دودمان او رابطهٔ سببی برقرار می‌کنند. هرگاه یک جنگجو از کارافتاده شود و دیگر نتواند نقش خود را به عنوان جنگجو بازی کند، عروس مذکر خود را رها می‌کند و گهگاه با خواهر عروس مذکر پیشین‌اش ازدواج می‌کند. در این زمان عروس مذکر پیشین وارد ردهٔ جنگجویان می‌شود و عروس مذکر و جوان‌تری را برای خود می‌گیرد. آزاندها که در رابطهٔ جنسی‌شان بسیار انعطاف‌پذیرند، هیچ مشکلی در جابه‌جایی از کارهای هم‌جنس‌گرایانه به فعالیت‌های ناهم‌جنس‌گرایانه ندارند. (نگاه کنید به مورِی و روسکو، ۱۹۹۸)






سکس و زایش

همچنین رجوع کنید به: پاک‌دامنی و خیانت جنسی بسیاری از ادیان بزرگ دنیا به روابط جنسی خارج از ازدواج با ناخشنودی می‌نگرند. حکومت‌های غیرسکولار فراوانی، غالباً با اکثریت مسلمانقرارهای مجرمانه‌ای برای آمیزش جنسی پیش از ازدواج در نظر گرفته‌اند. روابط جنسی میان فردی متاهل با کسی به جز همسرش تحت عنوان زنای محصنه شناخته می‌شود و عموماً از سوی ادیان بزرگ جهان ناپسند شمرده می‌شود (بعضی آن را گناه می‌دانند). زنای محصنه توسط بسیاری از سیستم‌های قضایی جرم و دلیلی برای طلاق به شمار می‌آید. از سوی دیگر، ازدواج لازمه فرزنددار شدن نیست. «مرکز کلی آمار سلامت» در آمریکا گزارش کرده‌است که در ۱۹۹۲،۳۰٫۱ درصد از تولدها مربوط به زنان مجرد بوده‌است. در ۲۰۰۶ این عدد به ۳۸٫۵ درصد افزایش یافته‌است. کودکانی که خارج از ازدواج متولد می‌شدند، حرامزاده‌ها و ولدالزناها، نامشروع محسوب می‌شدند و گرفتار زیان‌های قانونی و ننگ اجتماعی می‌گردیدند. در سال‌های اخیر از اهمیت مشروعیت کاسته شده و پذیرش اجتماعی به خصوص در جوامع غربی افزایش یافته‌است. بعضی از زوج‌های متاهل تصمیم می‌گیرند که فرزند نداشته باشند و در نتیجه بی فرزند می‌مانند. بعضی دیگر از فرزنددار شدن به خاطر ناباروری و سایر دلایلی که از لقاح یا حمل کودک جلوگیری می‌کند ناتوان هستند. در بعضی از فرهنگ‌ها ازدواج فرزنددار شدن را به زنان تحمیل می‌کند. برای مثال در شمال غنا، بهای عروس در ازای الزام زن به بارداری است و زنانی که از روش‌های جلوگیری از بارداری استفاده می‌کنند با خطرات جدی و آزار جسمی و انتقام روبرو هستند.






ازدواج در ادیان و مذاهب
دین مسیح

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






اسلام

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

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

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






دین یهود

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






بهائی

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

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






ازدواج‌های موقت

در چندین نمونه از فرهنگ‌ها، آیینِ ازدواج «موقت» و «مشروط» وجود دارد. «رسم حلقه» در میان مردم نژاد سلتی و «ازدواج‌های دارای مدت مشخص» در میان مسلمانان از نمونه‌های آن است. پیش از اسلام، در میان اعراب نوعی «ازدواج موقت» مرسوم بود که امروز آن را در ایران با عنوان «صیغه» (Nikah Mut’ah) و در عراق با عنوان «متعه» می‌شناسند. صیغه نوعی نکاح موقت، با مدت زمان مشخص و معین است. حضرت رسول محمد(صلی الله علی علیه و آله)، ازدواج موقت را مورد تایید قرار داده‌است که گاهی با عث این اتهام می شود که پوشش قانونی‌ای را برای کارگران جنسی فراهم می‌آورد. مجادله‌های مسلمانان در رابطه با سنت صیغه، موجب شده‌است تا این آیین عمدتاً به جوامع شیعه‌نشین محدود شود.






ازدواج با خویشاوندان نزدیک

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






خاتمه یافتن ازدواج

در اکثر جوامع، مرگ یکی از زوج‌ها موجب پایان یافتن پیوند ازدواج می‌شود، و در جوامع تک‌همسری، این امکان برای شریک دیگر وجود دارد که مجدداً ازدواج کند. گاهی اوقات، ازدواج مجدد با گذشت دوره‌ای از سوگواری انجام می‌شود.

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

اینکه هر دو زوج حق دارند نسبت به طلاق رضایت داشته باشند، تنها طی دهه‌های اخیر در کشورهای غربی به رسمیت شناخته شد. در ایالات متحد آمریکا، نادرست نبودن عملِ طلاق، نخستین بار در سال ۱۹۶۹ در کالیفرنیا به رسمیت شناخته شد و نیویورک آخرین ایالتی بود که این موضوع را در سال ۱۹۸۹ به رسمیت شناخت.






ازدواج از دیدگاه حقوقی
مشخصهٔ ازدواج

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






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





ازدواج اجباری

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






انواع نکاح اجباری بالای زنان افغان

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






ازدواج گروهی

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

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

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






اردواج گروهی چه چیزی نیست؟

ازدواج گروهی، چند همسری نیست. ازدواج گروهی، جامعه بر مبنای اشتراک جنسی نیست.
11:13 pm
کاربرد برنامه نویسی

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





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

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

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



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

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

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

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

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

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

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

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

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

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




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


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

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

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



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

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


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



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

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

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

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



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

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

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


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


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



خصوصیات

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

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


پیاده سازی

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

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

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

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



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

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

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

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



پالایش

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

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

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

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

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

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

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

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




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

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

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

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

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




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

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

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

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

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

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

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