moaminsharifi/fa-wiki-spell-checker huggingface dataset:
ساموئل زینر به ارتباط فاطمه زهرا با مریم و سورهٔ قدر می‌پردازد و می‌گوید همان‌گونه‌که فاطمه «ظهوری از اُمُّ‌الکتاب در سطحِ زمینی» است، مریم «ظهورِ سکوتِ ام‌ّالکتاب در سطح زمینی» است. فاطمه شب است و مریم، مظهر سکوت است که شب را تشکیل می‌دهد، یعنی همان نشانه و رمزی که در روایت قرآن، از روزهٔ سکوت مریم نمایان است. جنبهٔ آسمانی مریم، مظهر آرامش الهی یا «سلام» است. او نمونه‌ای از ظرفیت و وابستگی به آرامش الهی است که به همهٔ موجودات به‌گونهٔ ابتدایی، با توجه به مبدأ خلقت در خالق — که خودش آرامش است — داده می‌شود. همان‌گونه‌که فاطمه با توجه به احادیث شیعه، شب است که در سورهٔ قدر «سلام و آرامش» تعیین شده‌است، بنابراین مریم نیز همان «سلام» است و حضور او نمایانگر آرامش بهشتی است، زیرا او مانند فاطمه بانویی برتر از نور است. زینر فاطمه زهرا را به‌عنوان ظهوری در سطح زمینی از «بانوی ازلیِ حکمتِ» مطرح‌شده در عهد عتیق معرفی می‌کند و او را با تعبیر قرآنی ام‌ّالکتاب، یعنی مادرِ ازلیِ کتاب یا مادر امرِ الهی — کلام خداوند — معادل کرده‌است. ساموئل زینر می‌گوید سورهٔ قدر عمقی چندگانه دارد. روح مانند قرآن در شب قدر، شبی که فاطمه است، نازل می‌شود. بااین‌حال مریم هم نماد شب است. سورهٔ مریم نشان می‌دهد عیسی، کلمه و روح خدا، در شب، به «اُمّ» وارد شده که مریم — به‌عنوان تجسّم شب — است؛ بنابراین، اگر براساس الهیات شیعه، فاطمه زهرا تلاقی نورهای حکمت‌های بیرونی و درونی دین باشد، پس مریم، «نقطهٔ یگانگی» است که «افق رویداد» را دربردارد، جایی که سکوت، کلامِ پنهانِ ابدیت با کلامِ گفته‌شدهٔ خداوند پیوند دارد.
به‌گفتهٔ مِری ثِرلکیل منابع شیعه حُکمی را که در قرآن از سوی خدا به مریم ابلاغ شده، برای فاطمه زهرا نیز می‌دانند. آن‌گونه‌که از او با عنوان «مریم کُبریٰ» یاد می‌کنند. برای شیعیان هر دو زن از جانب خدا برای اهدافی عالی یعنی «مادرانِ دودمان‌هایی متعالی» انتخاب شدند؛ بااین‌حال فاطمه زهرا، به‌عنوان «مریم کبریٰ»، از مریم در طهارت و رحمت الهی فراتر می‌رود. مریم و فاطمه زهرا به عالمان مسیحیت قرون وسطی، مسلمان و دانشمندان مطالعات جنسیتی، فرصتی برای بررسی نقش‌های زنانه در متون مقدس دادند. نویسندگان مسیحی، مریم را به‌عنوان مادر مسیح اعتلا دادند، و نویسندگان شیعی فرزندان فاطمه را به‌عنوان رهبران معصوم جامعه — امامان — نامیدند. مریم و فاطمه زهرا فراتر از مدل‌هایی برای الگوهای زنانه مطرح شدند. این نمونه‌ها برنامه‌های پیچیدهٔ سیاسی، اجتماعی و مذهبی روزگار خود را نیز فاش و رسوا می‌کنند. نویسندگان دوران باستان متأخر و نویسندگان مسیحی قرون وسطای آغازین، مریم را با کلیسا شناسانده و برابر کردند و آنانی را که خارج از آن محدوده بودند، مُرتَد نامیدند. نویسندگان شیعه در قرون وسطای آغازین بیان کردند که فاطمه زهرا پیروانش را به بهشت می‌برد و دشمنانش را به آتش جهنم هدایت می‌کند. تاریخ‌نویسان زندگی پیامبران و مُتِأَلّهان به‌طور یکسان از طریق جلوه‌دادن مریم و فاطمه زهرا با نشانه‌های نمادینِ هویتِ سیاسی، الهی و همگانی، آنان را برای جوامع خود بازتعریف کردند. فاطمه زهرا، تنها زن میان اهل بیت پیامبر است. بااین‌حال، همان‌طور که در مسیحیت، نویسندگان مرد هم‌زمان فضایل فاطمه را می‌ستودند، درهمان‌حال غلبهٔ مردانگی در میان اهل بیت را نیز تحسین می‌کردند. حضور فاطمه زهرا درمیان اهل بیت در نهایت به نقش او به‌عنوان دختر محمّد، همسر علی و مادر امام وابسته بود.
ثرلکیل می‌گوید جایگاه‌یابی مریم و فاطمه زهرا درمیان مسیحیان و مسلمانان، به چند دلیل کار دشواری است. اول این‌که یک مطابقت موفق، باید منابع تاریخی دو فرهنگ متفاوت در دوره‌های تغییرات بحرانی در هویت جمعی و مذهبی را به‌صورت یک‌جا به دست آورد. این درحالی است که هیچ تقارن تاریخی یا جغرافیایی وجود ندارد. در متون مسیحی، مطالب دربارهٔ مریم در اولین رساله‌های مذهبی دیده می‌شوند و در محافل مِرووَنژی در اروپای غربی ادامه می‌یابند. در متون اسلامی، مطالب دربارهٔ فاطمه زهرا منحصراً در دوران خلافت عباسیان آغاز شده و در سراسر سلسله‌های شیعه در مصر، ایران و یمن گسترش می‌یابد. درحالی‌که هیچ شباهتی در فضا و زمان وجود نداشت، هر دو دستهٔ مخاطبان مسیحی و مسلمان درتلاش برای تعریف خود در دنیایی بودند که به‌سرعت در حال تغییر بود. دلیل دوم این است که مقایسهٔ مریم و فاطمه زهرا بستگی به انواع مختلفی از منابع دارد. آثار باستانی و دورهٔ آغازین قرون وسطی، تعدادی از رساله‌های مذهبی و ادبیات مربوط به مریم را ارائه می‌دهد. محققان می‌توانند از طریق این متون، توصیفات الهی مریم را در کنار متون معجزه‌گونه و توصیفات آیینی مشاهده کنند. متألهان به‌وضوح بر جنبهٔ معجزه‌گونه‌بودن مریم اعتماد می‌کنند تا مسیح‌شناختی خود را تعریف کنند؛ تاریخ‌نویسان زندگی پیامبران، ماهرانه مریم را به‌عنوان الگویی برای تقلید نزد زنان مقدس بالا می‌برند. نویسندگان مروونژی‌ها حتی بسیاری از ملکه‌ها و بزرگان راهبه‌های خود را به‌عنوان باکره‌های باشکوه در شمایل مریم ارائه می‌دهند. اما منابع شیعه که فاطمه زهرا را می‌ستایند دسته‌بندی مشکل‌تری دارند. یک مقایسهٔ بین‌فرهنگی مطلوب، ارتباط تصاویر فاطمی در الهیات و زندگی‌نامه با همتایان مسیحی آن‌ها را مورد سنجش قرار می‌دهد؛ اما، مطابقت موازی کار آسانی نیست. مشکل سومِ مقایسهٔ مریم و فاطمه زهرا در متون مربوط، این است که نویسندگان مرد اغلب آن دو را با تصاویر متضاد توصیف می‌کردند. مریم و فاطمه زهرا هر دو آرمانی و درعین‌حال بی‌نظیر، پاکدامن و درعین‌حال پرثمر، شفیع و میانجی و درعین‌حال خدمتکاری مطیع بودند. این تصاویر سردرگم‌کننده، پرسش‌هایی تاریخی در مورد شیوهٔ حقیقی نگرش جوامع مسیحی و اسلامی به زنان و نقش‌های جنسیتی به‌جا می‌گذارد.
به‌گفتهٔ امیرمعزّی، به‌رغمِ منابع مذهبی بسیاری که دربارهٔ فاطمه موجود است، گزارش‌های خالص تاریخی در مورد زندگی او بسیار اندک است و بیشتر گزارش‌ها تنها برگ‌هایی نامهم از زندگی وی را پوشش می‌دهد.
منابع دست اول شناخت زندگانی فاطمه زهرا عبارت است از قرآن، گفته‌های محمّد و اهل بیت در قالب حدیث و آنچه از کردار وی ثبت شده‌است. در "الفهرست" ابن ندیم نخستین کتاب شیعه، "کتاب سُلَیم بن قِیْس هِلالی" برشمرده شده‌است، که تاریخ آن حدود نیمهٔ دوم سدهٔ اول تا اوایل سدهٔ دوم هجری تخمین زده شده‌است. علاوه بر آن، کتاب‌های سیره نبوی شامل زندگی‌نامه‌های سنتی نوشته‌شده توسط مسلمانان و گفتارهای منسوب به پیامبر اسلام است که در سده‌های دوم تا چهارم هجری نگاشته شده‌است. به‌نوشتهٔ رسول جعفریان سیرهٔ نبوی شامل دو بخش بود که یکی به زندگی اجداد محمّد و زندگی محمد در مکه می‌پرداخت و بخش دوم به حوادث پس از هجرت محمد از مکه به مدینه یعنی زندگی محمد در مدینه اختصاص داشت، که به «مَغازی» مشهور است. در این میان، قدیمی‌ترین کتاب سیره در دسترس، نوشتهٔ ابن اسحاق (درگذشته حدود ۱۵۰ ه‍.ق) با عنوان زندگی رسول خدا (نوشته‌شده در ۱۲۰ تا ۱۳۰ سال پس از درگذشت محمّد) است که متن اصلی آن از بین رفته‌است، اما بخش‌هایی از آن در آثار تاریخ‌نگاران بعدی، مانند "اَلسّیرَةُ النَّبَویّة" ابن هشام (درگذشته ۲۱۳ یا ۲۱۸ ه‍.ق) و "تاریخ طبری" طبری به‌جای مانده‌است. مورّخان اهل سنت سیرهٔ ابن اسحاق را به‌عنوان یک روایت مقبول از زندگی محمّد پذیرفته‌اند و دیگر اخباری را که گردآورده‌اند در حاشیهٔ آن قرار داده‌اند. اگرچه نه همهٔ محققین، اما بسیاری از آنان درستی و صحّت این زندگی‌نامه‌های قدیمی را پذیرفته‌اند، با این وجود میزان درستی آن‌ها قابل تعیین نیست. از دیگر سیره‌نویسان بنام، محمّد بن عمر واقدی (درگذشته ۲۰۷ یا ۲۰۹ ه‍.ق) مؤلّف کتاب "اَلمَغازی" و نیز منشی او، محمد بن سعد بن منیع (درگذشته ۲۳۰ ه‍.ق) مشهور به ابن سعد بغدادی، نویسندهٔ "طَبَقاتُ الْکُبریٰ" هستند. "المغازی" از مهم‌ترین آثار محمّد بن عمر واقدی است. در مقایسه با سیرهٔ ابن اسحاق، این کتاب از نظر وسعت و ارائهٔ جزئیات بر اثر ابن اسحاق برتری دارد. واقدی برای نوشتن مَغازی پیامبر اسلام، از تمام منابع شفاهی و مکتوب، اطلاعات نسب‌شناسان و بازدید از مناطق جنگی این نبردها استفاده کرده‌است.
منابع ثانویه برای کشف و فهم تاریخی رویدادهای زندگی فاطمه، آثار تاریخی مورخان است. "اَنسابُ الاَشراف" احمد بن یحیی بلاذری (درگذشته ۲۷۹ ه‍.ق) دربردارندهٔ اخبار تاریخی بسیاری دربارهٔ جنگ‌های صدر اسلام و اصحاب حدیث و به‌طور ویژه، برخی اطلاعات خاص دربارهٔ برخی مطالب موردنظر شیعه است، مانند وقایع رویداد خانهٔ فاطمه زهرا، غدیر خم، روایاتی دربارهٔ فضایل علی بن ابی‌طالب یا برخی موارد در نکوهش عثمان را بیان کرده‌است. "تاریخ یعقوبی" که به نام نویسندهٔ آن، یعقوبی (درگذشته ۲۸۴ ه‍.ق) است، مهم‌ترین اثر او نیز به‌شمار می‌رود. "تاریخُ الرُّسُلِ و الْمُلوک" معروف به "تاریخ طبری" (نوشته میان سال‌های ۲۸۳ تا ۲۹۰ ه‍.ق و بازنگری تا ۳۰۳ ه‍.ق) اثر محمد بن جریر طبری (درگذشته ۳۱۰ ه‍.ق) از کتاب‌های مقبول عام است که سبب اتکای تاریخ‌نگاران پس از او مانند اِبن مِسْکَوَیْه، ابن اثیر و ابن کثیر بر این کتاب شده‌است. "مناقب آل ابی‌طالب" (نوشته کمی پس از ۵۵۳ ه‍.ق) از آثار ابن شهرآشوب (درگذشته ۵۸۸ ه‍.ق) است. این کتاب با ذکر مناقب پیامبر اسلام آغاز می‌شده، با امامان شیعه ادامه یافته و به ذکر صحابه و تابعین پایان می‌پذیرفته‌است، اما نسخه‌های موجود با ذکر بخش حسن عسکری به انجام می‌رسد. رسول جعفریان به‌طور خاص در میان کتاب‌های حدیثی، "کتاب کافی" (نوشته حدود اوایل سدهٔ چهارم هجری) را واجد اطلاعات تاریخی می‌داند.
منابع زندگی فاطمه زهرا گاهی بخشی از زندگی را دربردارد، مانند منابعی که به ازدواج و درگذشت فاطمه زهرا یا مسئلهٔ فدک پرداخته‌اند. برخی از این منابع اولیه از این قرار هستند: "تَزویجُ فاطِمَة" عبدالله بن محمّد بن ابِی‌الدّنیا (درگذشته ۲۸۱ ه‍.ق)، "اَخبارُ فاطِمَةٍ و نَشْأَتُها و مَوْلِدُها" محمّد بن زکریّا بن دینار غَلّابی (درگذشته ۲۹۸ ه‍.ق)، "اَلظَّلامَةُ الْفاطِمیَّة" حسن بن علی اُطروش (درگذشته ۳۰۴ ه‍.ق)، "تَزویجُ فاطِمَةٍ بِنتِ الرَّسول" منسوب به محمد باقر به‌همراه "تَزویجُ فاطِمَةٍ بِنتِ رَسولِ الله لِعَلیِّ بنِ اَبی‌طالب" گردآوری محمد بن هارون رویانی (درگذشته ۳۰۷ ه‍.ق)، "اَلسَّقیفة" جوهری بصری (درگذشته ۳۲۳ ه‍.ق)، "تَزویجُ فاطِمَة" عبدالعزیز بن یحیی جَلّودی (درگذشته ۳۳۲ ه‍.ق)، "مَوْلِدُ فاطِمَة" شیخ صدوق (درگذشته ۳۸۱ ه‍.ق)، "وَفاةُ فاطِمَةِالزَّهراء" ابوالحسن بَکری مصری (درگذشته ۹۵۳ ه‍.ق)، "وَفاةُالزَّهراء" سیّد هاشم حسینی بَحرانی (درگذشته ۱۱۰۷ ه‍.ق).
منابع پرداخته به خطبهٔ فدکیه عبارتند از: "بَلاغاتُ النِّساء" ابن طیفور (درگذشته ۲۸۰ ه‍.ق)، "اَلسَّقیفة" جوهری بصری (درگذشته ۳۲۳ ه‍.ق)، "اَلشّافی" سیّد مرتضی (درگذشته ۴۳۶ ه‍.ق)، "الاحتجاج" طبرسی، "شرح نهج البلاغه" ابن ابی‌الحدید (درگذشته ۶۵۶ ه‍.ق)، "اَلطَّرائِف" سید بن طاووس (درگذشته ۶۶۴ ه‍.ق)، "کَشْفُ الْغُمَّة فی مَعرِفَةِ الأئِمَّة" علی بن عیسی اِربِلی (درگذشته ۶۹۳ ه‍.ق).
منابعی که در آن‌ها به مناقب و فضائل فاطمه زهرا پرداخته شده از این قرار هستند: "اَلفَضائِل" جابر بن یزید جُعْفی (درگذشته ۱۲۸ ه‍.ق)، "مَناقبُ اَهلِ الْبَیْت" عبّاد بن یعقوب رَواجِنی کوفی (درگذشته ۲۵۰ ه‍.ق)، "فَضائِلُ اَهلِ الْبَیْت" ابن ابی‌حاتم رازی (درگذشته ۳۲۷ ه‍.ق)، "مناقب فاطِمَةِالزَّهراء" حاکم نیشابوری (درگذشته ۴۰۵ ه‍.ق)، "مناقب فاطِمَةِالزَّهراء و ولدها" محمّد بن جُرَیْر طبری (درگذشته پس از ۴۱۱ ه‍.ق)، "اَلرَّوضَةُالزَّهراء فی مَناقِبِ فاطِمَةِالزَّهراء" ابوسعید محمد بن احمد خُزاعی، "اَلثّاقِب فِی الْمَناقِب" ابن حمزه طوسی (درگذشته ۵۶۰ ه‍.ق)، "اَلثُّغور الْباسِمَة فی فَضائِل السَّیِدَةُ فاطِمَة" جلال‌الدین سیوطی (درگذشته ۹۱۱ ه‍.ق)، "اِتْحافُ السّائِل بِما لِفاطِمَةِ مِنَ الْمَناقِب و الْفَضائِل" محمّد بن علی مَناوی (درگذشته ۱۰۳۱ ه‍.ق).
روز مادر در ایران، زادروز فاطمه زهرا یعنی ۲۰ جمادی‌الثّانی در نظر گرفته می‌شود. در دهه‌های اخیر توجه ویژه‌ای به ایام درگذشت فاطمه زهرا در ایران و دیگر نقاط جهان صورت گرفته‌است. از سال ۱۳۶۹ — برابر با ۱۴۱۱ ه‍.ق و هزار و چهارصدمین سال درگذشت فاطمه زهرا — فعالیت‌های گوناگونی برای بزرگداشت این ایام انجام شده‌است. گسترش این فعالیت‌ها سبب شد تا به پیشنهاد حسین وحید خراسانی، سوم جمادی‌الثّانی به‌عنوان درگذشت فاطمه زهرا، تعطیل رسمی اعلام شود. این اقدام با پاسخ مثبت سید محمد خاتمی، رئیس‌جمهور وقت، و تصویب در هیئت دولت و مجلس شورای اسلامی در سال ۱۳۷۸ انجام شد. در این روز بسیاری از مراجع شیعه در قم، مشهد و دیگر شهرهای ایران، در اجتماع‌های مردمی به سوی اماکن مذهبی حرکت کرده و در مراسم عزاداری شرکت می‌کنند.
آثار دربارهٔ فاطمه زهرا از آغاز دورهٔ تدوین حدیث، مورد توجه بوده‌است. دراین‌میان، اهل سنّت بیشتر به گردآوری احادیث و روایات فاطمه زهرا و شیعه بیشتر به ماجرای درگذشت او توجه کرده‌اند. در یک دسته‌بندی کلی، این آثار را در پنج بخش می‌توان جای داد: نخست مُسندها و آثار روایی و شرح سخنان، دوم کتاب‌های مناقب و فضایل، سوم زندگی‌نامه‌ها، چهارم کتاب‌های تحلیلیِ اخلاقی، تربیتی از زندگی فاطمه زهرا و پنجم کتابشناسی‌ها.
در دستهٔ مسندها و آثار روایی و شرح سخنان، بیشتر آثار متعلّق به اهل سنّت است. برخی از این آثار اکنون موجود نیستند مانند: "مُسنَد فاطمة" علی بن عمر دارَقُطنی، "مسند فاطِمَةُالزّهراء" عمر بن احمد شاهین، "وَ مَن رُویَ عَنْ فاطِمَةٍ مِن اولادِها" ابن عُقده و "السّقیفة" جوهری بصری. در میان آثار موجود، مسندهایی هست که مسند فاطمه زهرا بخشی از آن‌هاست مانند: "مسند" اسحاق بن راهْوَیْه، "مسند" احمد بن حنبل، "مسند" ابویَعلیٰ موصلی و "اَلْمُعجَمُ الْکَبیر" طَبَرانی. "مسند فاطمةالزهراء" جلال‌الدین سیوطی کتابی مستقل و جامع‌ترین اثر حدیثی اهل سنت در زمینهٔ روایات فاطمه زهراست. در کتاب‌های تاریخ اهل بیت نیز احادیثی از فاطمه زهرا موجود است، مانند: "الذُّرّیَةُالطّاهِرَةُالنَّبَویَّة" محمد بن احمد دولابی. در مجموعهٔ حدیث شیعه، کهن‌ترین مسند موجود دربارهٔ فاطمه زهرا، "دلائلُ الامامة" طبری است. در عصر حاضر، در حوزهٔ حدیثی شیعه، نگارش مسند مورد توجه واقع شده و از آن میان آثار دربارهٔ فاطمه زهرا — به‌خاطر اقتضای رجوع به الگوی زن مسلمان در سیره و سخنان فاطمه زهرا — بیش از آثار دربارهٔ دیگر چهارده معصوم است. برخی از مهم‌ترین این آثار عبارتند از: "مسند فاطِمَةُالزّهراء" عزیزالله عطاردی قوچانی، "مسند فاطِمَةُالزّهراء" سید حسین شیخ‌الاسلامی، "نَهجُ‌الْحَیاة (فرهنگ سخنان فاطمه)" محمد دشتی و "مسند فاطمه" مهدی جعفری. به‌جز مسندها، در آثار مُصَنَّف شیعه نیز احادیث فاطمه زهرا به‌صورت پراکنده آمده‌است. ازاین‌میان می‌توان به "بحارالانوار" محمدباقر مجلسی و "عوالم العلوم" عبدالله بحرانی اصفهانی اشاره کرد.
در حوزهٔ کتاب‌های مناقب و فضایل، برخی از مهم‌ترین عبارتند از: "اَلْفَضائِل" جابر بن یزید جعفی، "مناقبُ فاطِمَةُالزّهراء و وُلْدِها" طبری، "فَضائِلُ اَهلُ‌الْبَیْت" ابن ابی‌حاتم رازی، "اَلرَّوضَةُالزَّهراءُ فی مَناقبِ فاطِمَةِالزّهراء" ابوسعید محمد بن احمد، "اَلْخَصائِصُ الْفاطِمیَّة" باقر کجوری، "مناقب فاطمةالزهراء" حاکم نیشابوری، "اَلثّاقِبُ فِی الْمَناقِب" ابن حمزه طوسی، "مَناقبُ آلِ ابی‌طالب" ابن شهرآشوب. برخی نویسندگان شیعه نیز مناقب فاطمه زهرا را با استفاده از کتاب‌های حدیث اهل سنت گردآوری کرده‌اند، مانند: "شَرحُ اِحقاقُ الْحَقِّ وَ اِزهاقُ الْباطِل" سید شهاب‌الدین مرعشی نجفی، "مناقبُ الزّهراءِ، اَلْمُسْتَخْرَجَةُ مِنَ الْکُتُبِ الصِّحاح" غلامرضا کسائی کاوکانی، "فضایل فاطمه زهرا از نگاه دیگران" ناصر مکارم شیرازی و "فاطمه زهرا از نظر روایات اهل سنّت" محمد واصف. در دورهٔ کنونی، کتاب‌های فضایل به جنبه‌های مختلف مناقب فاطمه زهرا پرداخته‌اند، مانند: "فاطِمَةُالزّهراء بَهجَةُ قَلبِ الْمُصْطَفیٰ" احمد رحمانی همدانی.
در بخش زندگی‌نامه آثار بسیاری با رویکردهای روایی–تاریخی، تربیتی–اخلاقی و مذهبی–کلامی نوشته شده‌است. برخی از مهم‌ترین این آثار عبارتند از: "السّقیفة و فدک" جوهری بصری، "فَدَکٌ فِی التّاریخ" سید محمدباقر صدر، "بحارالانوار" محمدباقر مجلسی و "عوالم العلوم" بحرانی اصفهانی، "فاطمةالزهراء بهجة قلب مصطفی" احمد رحمانی همدانی، "شرح احقاق الحق و ازهاق الباطل" سید شهاب‌الدین مرعشی نجفی، "مُنتَهیُ‌الآمال" عباس قمی، "فاطِمَةُالزّهراء مِنَ الْمَهدِ اِلَی اللَّحَد" سید محمدکاظم قزوینی، "زندگی‌نامهٔ فاطمه زهرا" سید جعفر شهیدی. در حوزهٔ کتاب‌های تحلیلیِ اخلاقی–تربیتی نیز می‌توان به "اَلزَّهراءالْقُدوَة" محمدحسین فضل‌الله و "فاطمه زهرا بانوی نمونهٔ اسلام" ابراهیم امینی اشاره کرد.
مهم‌ترین کتابشناسی‌ها دربارهٔ فاطمه زهرا نیز عبارتند از: "فاطمةالزهراء بهجة قلب مصطفی" احمد رحمانی همدانی، "زخم خورشید: کاوشی در زندگی فاطمه زهرا" مهدی حسینیان قمی، "فاطمه در آئینهٔ کتاب" اسماعیل انصاری زنجانی.
در مطالعات آکادمیک غربی، در ابتدای سدهٔ بیستم هِنری لَمِنس کتاب "Fatima et les filles de Mahomet" را نگاشت که مبنای مقاله وی در ویراست نخست "دانشنامهٔ اسلام" قرار گرفت و تصویری منفی از فاطمه زهرا ترسیم کرد. این دیدگاه، بعدها مورد نقد پژوهشگران غربی قرار گرفت. در مقابل لمنس، لویی ماسینیون در "La Mubâhala de Medine et l’Hyperdulie de Fatima" و "Der gnostische Kult der Fatima im schiitischen Islam" تصویری عرفانی از فاطمه زهرا به دست داد که مبتنی بر نگرش شیعیان بود و به جنبهٔ تاریخی توجه نداشت. محمد علی امیرمعزی و جین کالمرد مقاله‌ای را در خصوص نقش فاطمه در معنویّت، مناسک و فرهنگ عامهٔ شیعی با عنوان «فاطمه دختر پیامبر محمّد» نگاشتند. لئورا وچا ولیری در ویراست دوم "دانشنامهٔ اسلام" مقالهٔ فاطمه را با رویکرد تفکیک وجهِ تاریخی از وجهِ اعتقادی فاطمه نگاشت. در آغاز سدهٔ بیست و یکم، باربل بینهاور کهلر مقاله‌ای با عنوان «Fāṭima bint Muḥammad Metamorphosen einer frühislamischen Frauengestalt» نگاشت و کوشید تا شکل‌گیری تصویر سنّی و شیعی از فاطمه زهرا را در جریان منازعات سیاسی–اعتقادی و نیز رویکردهای عرفانی و مناسکی توصیف کند. بینهاور کهلر و ورنا کلم در مقالهٔ «فاطمه، فاطمه است» به ادراکِ مدرن از فاطمه به‌عنوان الگویی برای آگاهی و تعهّد سیاسی–اجتماعی زنان معاصر پرداخته‌اند. همچنین، ورنا کلم، در مقالهٔ فاطمه در ویراست سوم "دانشنامهٔ اسلام"، توصیفی نقّادانه از نگرش‌ها و پژوهش‌های مختلف دربارهٔ فاطمه در طول تاریخ را ارائه کرده‌است.
در حوزهٔ ادبیات فارسی و عربی، در برخی نوشته‌های تفسیری و سفرنامه‌های فارسی و بنا به ضرورت نقل آیات و احادیث، به موضوعات پیرامونی فاطمه زهرا نیز اشاره شده‌است. بااین‌حال، آثار منظوم دربارهٔ فاطمه زهرا از غنا و کیفیت بیشتری برخوردارند. ادبیات شیعی — که آثار دربارهٔ فاطمه زهرا را نیز دربرمی‌گیرد — از صدر اسلام و با سرودهٔ عربی حَسّان بن ثابت در روز غدیر خم آغاز شد و در سدهٔ چهارم هجری در زبان فارسی نیز گسترش یافت. دراین‌میان پنج رویکرد در سروده‌های فاطمی جریان دارد: رویکرد روایی و تاریخی، رویکرد فلسفی و کلامی، رویکرد تخیلی و شاعرانه، رویکرد عاطفی و شخصی و رویکرد چندوجهی و فاخر. این رویکردها در قالب‌های قصیده، غزل، ترکیب‌بند، مُسَمَّط، رباعی و شعر نو تبلور یافته‌است.
برخی از شاعران زبان فارسی که در سروده‌های خود به موضوعات پیرامونی فاطمه زهرا پرداخته‌اند عبارتند از: دقیقی، فردوسی، غضائری رازی، ناصرخسرو، سنایی، قوامی رازی، عطار نیشابوری، سعدی، خواجوی کرمانی، حسین واعظ کاشفی، بابا فغانی شیرازی، هلالی جغتائی، اهلی شیرازی، وحشی بافقی، محتشم کاشانی، عاشق اصفهانی، قاآنی شیرازی، جیحون یزدی، صفای اصفهانی، ادیب‌الممالک فراهانی، محمدتقی بهار، محمدحسین غروی اصفهانی، صغیر اصفهانی، مهدی الهی قمشه‌ای، شهریار، سید روح‌الله خمینی، حسن حسن‌زاده آملی، حمید سبزواری، مشفق کاشانی، محمدحسین بهجتی اردکانی، محمود شاهرخی، نصرالله مردانی، قیصر امین‌پور، سهیل محمودی، عبدالجبار کاکایی، احمد عزیزی، محمدرضا آقاسی، غلامرضا قدسی، جواد محدثی، علیرضا قزوه، حمیدرضا شکارسری، سپیده کاشانی و نیره سعیدی.
چنان‌که پیش‌تر گفته شد، ادبیات شیعی در شعر عربی نیز با شعر حسّان بن ثابت آغاز می‌شود. دراین‌میان اشعاری نیز از علی بن ابی‌طالب در غم ازدست‌دادن فاطمه زهرا نقل شده‌است. رویکردهای رایج به شعر فاطمی در ادبیات عربی عبارتند از: رویکرد روایی و تاریخی، رویکرد عاطفی، رویکرد اخلاقی، رویکرد تخیلی، رویکرد فلسفی و رویکرد روایی و سیاسی. این سروده‌ها به‌صورت پراکنده در کتاب‌هایی مانند "مناقب آل ابی‌طالب"، "ریاضُ الْمَدحِ وَ الرَّثاءِ فی مَدحِ و رَثاءِ النَّبیِّ و آلِهِ الاَطْهار"، "فاطِمَةُالزّهراءُ فی دیوانِ الشِّعرِ الْعربی" و "لِلزّهراءِ شَذَی الْکَلِمات" گردآوری شده‌است. برخی از این شاعران ادب عرب عبارتند از: سید حِمیَری، دیکُ الْجِنّ، مهیار دیلمی، قَتادَة بن ادریس، شیخ حرّ عاملی، سید محمدمهدی بحرالعلوم، محمدحسین غروی اصفهانی، سید صدرالدین صدر و محمدحسین کاشِفُ‌الغِطاء.
فارسی و عربی
سی شارپ زبانی شیءگرا و سطح بالا از خانوادهٔ زبان‌های چارچوب دات‌نت شرکت مایکروسافت است.
زبان سی شارپ، یک زبان برنامه‌نویسی چند الگویی و منظم شده مدل‌های تابعی، امری، عمومی، شیءگرا و جز گرا و در بستر دات نت می‌باشد. این زبان توسط مایکروسافت و جزئی از دات نت به وجود آمد و بعداً استانداردهای ECMA و ISO را نیز دربر گرفت. سی شارپ یکی از ۴۴ زبان برنامه‌نویسی است که توسط زمان اجرای زبان مشترک از چارچوب دات‌نت پشتیبانی و در همه جا به وسیله مایکروسافت ویژوال استودیو شناخته می‌شود.
زبان سی شارپ با قدرت و در عین حال سطح بالای خود توانسته توجه بسیاری از برنامه نویسان را به خود جلب کند.
این زبان برپایه سادگی، مدرن بودن، همه منظوره و شیءگرا بودن ساخته شد. آندرس هجلزبرگ، طراح زبان برنامه‌نویسی دلفی، سرپرستی تیم طراحان زبان سی شارپ را بر عهده داشت. این زبان دارای دستوری شیءگرا مشابه ++C است و به شدت از زبان‌های جاوا و دلفی تأثیر پذیرفته‌است. در ابتدا نام این زبان COOL بود که مخفف C like Object Oriented Language بود، هر چند در ژوئیه ۲۰۰۰، زمانی که مایکروسافت پروژه را عمومی اعلام کرد، اسم آن به سی شارپ تغییر پیدا کرد.
استاندارد ECMA این اهداف طراحی زبان را برای سی شارپ برآورده می‌سازد:
در سال ۱۹۹۹، شرکت سان اجازه استفاده از زبان برنامه‌نویسی جاوا را در اختیار مایکروسافت قرار داد تا در سیستم‌عامل خود از آن استفاده کند. جاوا در اصل به هیچ پلت فرم یا سیستم‌عاملی وابسته نبود، ولی مایکروسافت برخی از مفاد قرار داد را زیر پا گذاشت و قابلیت مستقل از سیستم‌عامل بودن جاوا را از آن برداشت. شرکت سان پرونده‌ای علیه مایکروسافت درست کرد و مایکروسافت مجبور شد تا زبان شیءگرای جدیدی با کامپایل جدید که به ++C شبیه بود را درست کند.
در طول ساخت دات نت، کلاس‌های کتابخانه‌ای با زبان و کامپایلر SMC نوشته شدند. در سال ۱۹۹۹ آندرس هلزبرگ گروهی را برای طراحی زبانی جدید تشکیل داد که در آن زمان نامشCOOL بود و همانند C بود با خواص شیءگرایی. مایکروسافت در نظر داشت اسم این زبان را تا آخر Cool قرار دهد، ولی به دلیل مناسب نبودن برای اهداف تجاری این کار را نکرد.
در ارائه و معرفی رسمی چارچوب دات‌نت در PDC در سال ۲۰۰۰ این زبان به سی شارپ تغییر نام یافت و کتابخانه کلاس‌ها و runtime در ای‌اس‌پی‌دات‌نت به سی شارپ منتقل شدند.
مدیر و سرپرست طراحان در مایکروسافت آندرس هلزبرگ بود که تجربه قبلی او در طراحی Framework و زبان‌های برنامه سازی++Borland، دلفی، Turbo Pascal، ویژوال سی++ به آسانی در دستورالعمل‌های سی شارپ قابل رویت است و به همان خوبی در هسته CLR.
برخی از تفاوت‌های زبان سی شارپ با C و ++C عبارتند از:
اکسسورها که خاصیت نیز گفته می‌شوند در زبان سی شارپ قادر به کنترل دسترسی اعضا و معتبرسازی داده‌ها هستند.
این زبان جزو زبان‌های خانواده c می‌باشد و شباهت سینتکسی با زبان جاوا دارد
این کامپایلر در مقابل C یا ++C دارای ساختار بسیار متفاوتی است که دانستن آن به برنامه‌نویس امکان نوشتن برنامه‌های بسیار بهینه را خواهد
داد.
در C یا ++C ساختار رشته به صورت ارایه‌ای از نوع char بود که امکان اضافه کردن به رشته را محدود می‌کرد به دلیل ثابت بودن طول در آغاز تعریف
ولی در سی شارپ دو نوع متفاوت رشته وجود دارد؛ که یکی به صورت ارایه‌ای با طول ثابت ۲۵۶(در عمل ۲۵۵)موجوداست (به صورت پیش فرض)
و در صورتی که با کمبود جا روبرو شود فضای جدید (بزرگتر) یافته و به ان انتقال می‌دهد؛ ولی در نوع دوم رشته‌ها از لیست پیوندی استفاده می‌شود.
سی شارپ دارای یک سامانه نوع یکپارچه‌است که به آن CTS می‌گویند. این بدان معناست که تمام انواع، شامل موارد اصلی مانند Integerها، مشتق شده از System.Object هستند. به عنوان مثال، هر نوع یک متد به نام ToString() را به ارث می‌برد. بخاطر کارایی، انواع اولیه (و انواع مقداری) به‌طور داخلی فضایی برای آنها بر روی پشته در نظر گرفته می‌شود.
CTS داده‌ها را به دو نوع تقسیم می‌کند:
انواع داده‌ای توده ساده‌ای از داده می‌باشند. نمونه‌های انواع داده‌ای نه هویت مرجعی دارند و نه مفاهیم مقایسه مراجع را. برای مقایسه برابری یا عدم برابری انواع داده‌ای، خود مقدار داده‌ها را با یکدیگر مقایسه می‌کنیم مگر اینکه عملگرهای مشابه دوباره تعریف شده باشند. مقادیر داده‌های مرجعی همیشه یک مقدار پیش فرض دارند و همیشه می‌توانند ایجاد یا کپی شوند. یکی دیگر از محدودیت‌های انواع داده‌ای این ات که آنها نمی‌توانند از یکدیگر مشتق شوند (ولی می‌توانند اشتراکاتی داشته باشند) و هم چنین نمی‌توانند در سازنده مقدار دهی اولیه شوند. مثالی از انواع داده‌ای، بعضی از انواع اولیه مانند int و float و char و System.DateTime می‌باشند.
در مقابل، انواع مرجعی مفهوم تعریف مرجعی را دارند (که در آن هر نمونه از نوع مرجع، به‌طور ذاتی از دیگر نمونه‌ها جدا می‌شود، حتی اگر داده هر دو نمونه یکی باشد). این دقیقاً نمونه مشابه مقایسه تساوی یا عدم تساوی داده‌های مرجعی است، که در آن آزمایش برای مرجع‌ها از داده‌ای‌ها سریع تر است. در کل نه همیشه امکان تعریف نمونه مرجعی وجود دارد و نه امکان کپی یا نمایش مقادیر مقایسه دو نمونه؛ ولی به هر حال انواع مرجعی خاص می‌توانند این اعمال را از طریق سازنده‌های عمومی یا اجرای واسط‌های مشابه (مثل ICloneable یا IComparable) انجام دهند. نمونه‌هایی از انواع مرجعی، اشیاء، System.String و Sysmet.Array می‌باشند.
هر دو نوع داده قابلیت انعطاف توسط تعریف به وسیله کاربر را دارند.
در واقع وقتی ما نوع داده‌ای را به تابع ای ارسال می‌کنیم، آدرس داده نیز فرستاده می‌شود. البته این امر پیش فرض است ولی برای داده‌های مثل آرایه، رشته‌ای، آدرس فرستاده می‌شود و ارسال از نوع مرجع می‌شود.
Boxing عمل تبدیل مقدار نوع داده‌ای به نوع مرجع مشابه آن می‌باشد.
متال:
int foo = 42;// Value type...
object bar = foo;// foo is boxed to bar.
UnBoxing عمل تبدیل نوع مرجع به نوع داده‌ای می‌باشد.
int foo = 42;// Value type.
int foo2 = (int)bar;// Unboxed back to value type.
سی شارپ به برنامه‌نویس با استفاده از کلمه کلیدی Struct اجازه می‌دهد تا انواع مقداری User-defined را ایجاد کند. از دیدگاه برنامه‌نویسی، آنها کلاس‌های سبک‌وزن به نظر می‌رسند. برخلاف کلاس‌ها (که بر روی heap قرار می‌گیرند) و شبیه به انواع اولیه استاندارد مانند انواع مقداری Structها نیز بر روی پشته قرار می‌گیرند. آنها همچنین می‌توانند قسمتی از یک شئ باشند، یا در یک آرایه مرتب شوند، بدون حافظه غیر مستقیمی که به‌طور معمول برای انواع کلاس تخصیص می‌یابد.
ویژگی‌های جدید در سی شارپ چارچوب دات‌نت SDK ۲٫۰ (مطابق با سومین ویرایش استاندارد ECMA-۳۳۴):
کلاس‌های Partial اجازه اجرای کلاس‌ها از بیش از یک سورس فایل را می‌دهند. این امر اجازه می‌دهد تا کلاس‌های بسیار بزرگ را قطعه قطعه کنیم و همچنین برای زمانی که برخی قسمت‌های یک کلاس به‌طور خودکار تولید می‌شوند مفید است.
genericها یا نوع‌های پارامتری شده یا چندریختی‌های پارامتری یک ویژگی جدید چارچوب دات‌نت ۲٫۰ است که به وسیله سی شارپ پشتیبانی می‌شود. برخلاف Templateهای سی پلاس پلاس، در این انواع به جای اینکه نمونه سازی توسط کامپایلر انجام شود، در زمان اجرا صورت می‌گیرد، بنابراین می‌توانند چند زبانه باشند در حالی که ++C نمی‌تواند. آنها دارای ویژگی‌هایی هستند که به‌طور مستقیم توسط Templateهای C++ پشتیبانی نمی‌شوند مانند نوع محدودیت‌ها در پارامترهای Generic با استفاده از رابط‌ها(Interface). سی شارپ از پارامترهای‌های Generic بدون نوع پشتیبانی نمی‌کند. برخلاف genericهای جاوا،genericهای دات نت برای پارامتری کردن انواع داده‌ای در اشیاء ماشین مجازی CLI، از مفاهیم شی گرایی استفاده می‌کنند که اجازه بهینه‌سازی و حفاظت انواع اطلاعات را می‌دهد.
کلاس‌ها به صورت Static قابل تعریف نیستند مگر اینکه تمام اعضای آنها Static باشند؛ که این امر بسیار شبیه به مفهوم مدل در زبانهای رویه‌ای است. (زبان رویه‌ای: یک زبان برنامه‌نویسی که در آن عنصر اصلی برنامه‌نویسی یک زیربرنامه‌است. مانند زبانهای C، پاسکال و…)
یک شکل جدید از iterator(تکرار کننده)، با استفاده از ساختار yield return بسیار شبیه به yield زبان Python.
// Method that takes an iterable input (possibly an array) and returns all even numbers.
public static IEnumerable<int> GetEven(IEnumerable<int> numbers)
Delegate یک شی می‌باشد که حاوی یک یا چند اشاره گر به توابع می‌باشد؛ که با Invoke کردن آن تمامی توابع اشاره شده داخل آن اجرا می‌شوند.
Delegateهای ناشناس که عملکردهای محدودی را در سی شارپ به وجود می‌آورند. کد کنار بدنه Deletage ناشناس، دسترسی کامل برای خواندن یا نوشتن در متغیرهای عمومی، پارامترهای توابع و اعضای کلاسهای دارای محدوده Deletage را دارد ولی پارامترهای out و ref را پشتیبانی نمی‌کند.
برای مثال:
int SumOfArrayElements(int[] array)
تبدیل گروه‌های متد به نوع Deletage در برگشت دارای covariant و در انواع پارامترها دارای contravariant هستند.
نکته مهم: سطح دسترسی خاصیت نمی‌تواند بالاتر از سطح دسترسی اکسسورها باشد. به عنوان مثال private بودن خاصیت و public بودن اکسسور باعث بروز خطا می‌شود.
نوع داده Nullable (که با یک علامت سؤال قابل تشخیص است: int? i = null;)اجازه تخصیص مقدار null را برای انواع داده‌ای می‌دهد. این امر باعث بهبودی فعل و انفعال با پایگاه داده SQL می‌شود. در این حالت نوع ستونی INTEGER NULL در SQL به‌طور مستقیم به int? در سی شارپ تبدیل می‌شود.
داده‌های Nullable در آخرین لحظات اوت ۲۰۰۵ اضافه شدند چند هفته مانده به اتمام کار اداری و برای بهبود زبان. متغیر Null در حقیقت خالی نیست، بلکه نمونه‌ای است از struct Nullable<T> با ویژگی HasValue مساوی false. وقتی در برنامه قرار می‌گیرد، خود به خود نمونه خالی در آن قرار می‌گیرد، نه مقدار خود آن، در نتیجه اشاره گر مقصد همیشه غیر Null می‌باشد، حتی برای مقادیر Null. کد زیر نضص بالا را مشخص می‌کند:
if (o == null)
وقتی درون شی ای کپی می‌شود، نمونه Nullable به صورت تشریفاتی در آن قرار می‌گیرد و در نتیجه مقادیر و منابع Null با هم برابر می‌شوند. در گذشته این خاصیت دارای مجادله بود تا زمانی که علاوه بر چارچوب دات‌نت ۲، به هسته CLR نیز مجهز شد و همه تکنولوژی‌ها نظیر سی شارپ، ویژوال بیسیک، مایکروسافت اس‌کیوال سرور ۲۰۰۵ و مایکروسافت ویژوال استودیو ۲۰۰۵ را شامل شد.
مقدار اولین عملوندی که null نباشد را برمی‌گرداند. (یا null، برای زمانی که تمام عملوندها null باشند)
object obj = new Object();
return nullObj ?? obj;// returns obj
کاربرد اصلی این عملگر در قرار دادن یک مقدار nullable در یک مقدار non-nullable با استفاده از یک دستورالعمل ساده‌است.
int j = i ?? 0; /* Unless i is null, initialize j to i. Else (if i is null), initialize j to 0. */
این ورژن در تاریخ ۱۹ نوامبر سال ۲۰۰۷ به عنوان بخشی از چارچوب دات‌نت ۳٫۵ عرضه شد؛ که شامل ویژگی‌های جدید الهام شده از زبان‌های برنامه‌نویسی اصلی (Functional) مانند Haskell و ML، و الگوی LINQ برای CLR است. در حال حاضر توسط هیچ موسسه استانداردسازی تأیید نشده‌است.
لینک یک زبان پرس و جوی قابل انعطاف و همه منظوره برای بسیاری از انواع منبع داده‌ها است (مثل انتخاب اشیاء شناور، سندهای XML، بانک‌های اطلاعاتی و…) که در ویژگی‌های سی شارپ ۳ جمع شده‌اند.
سینتکس زبان به زحمت از SQL گرفته شده‌است، برای مثال:
int[] array = { 1, 5, 2, 10, 7 };
IEnumerable<int> query = from x in array
Customer c = new Customer(); c.Name = "James";
عبارت بالا می‌تواند به صورت زیر نوشته شود:
MyList list = new MyList();
فرض کنید که اجزای MyList و System.Collections.IEnumerable دارای متد عمومی Add هستند.
var x = new { FirstName="James", LastName="Frank" };
سی شارپ ۲٫۰ توابع بی‌نام را معرفی کرد. سی شارپ ۳٫۰ هم انواع بی‌نام را معرفی می‌کند. با استفاده از این ویژگی برنامه نویسان قادر خواهند بود به صورت Inline انواع دلخواه خود را ایجاد کنند. به نمونه زیر توجه کنید:
کد ارائه شده، یک نوع بی‌نام را تعریف می‌کند که از طریق متغیر ضمنی محلی به نام anonymousType در اختیار قرار می‌گیرد.
چرا Anonymous types؟ انواع بی‌نام بهترین گزینه برای تولید Entity Typeها می‌باشند. همان‌طور که گفته شد Entity Typeها فقط حاوی داده‌ها هستند؛ بنابراین به بهترین نحو می‌توان داده‌های دریافت شده از کاربر را در انواع بی‌نام بسته‌بندی کرد.
var x = new Dictionary<string, List<float»();
کد بالا با کد زیر قابل تعویض می‌باشد:
Dictionary<string, List<float» x = new Dictionary<string, List<float»();
این ویژگی تنها یک ntactic sugarراحت برای کوتاه‌تر بیان کردن متغیرهای محلی نمی‌باشد، بلکه برای تعریف متغیرهای بی‌نام لازم نیز است.
عبارات لامبدا یک راه کوتاه برای نوشتن مقادیر توابع بی‌نام کلاس اول را فراهم می‌کنند. دو مثال زیر را در نظر بگیرید:
listOfFoo.Where(delegate(Foo x) { return x.Size> 10; })
listOfFoo.Where(x => x.Size> 10);
در مثال‌های فوق، عبارات لامبدا صرفاً یک نوع سینتکس برای delegateهای بی‌نام با مقادیر دارای بازگشت هستند. هر چند با توجه به نوع متن استفاده می‌شوند، کامپایلر سی شارپ می‌تواند لامبداها را به ASTها نیز تبدیل کند تا بعداً در زمان اجرا نیز بتوانند پردازش شوند. در مثال فوق، اگر listOfFoo یک مجموعه ساده داخل حافظه نباشد، ولی یک پوشه در اطراف جدول بانک اطلاعاتی می‌باشد. این تکنیک می‌تواند برای بهینه کردن اجرا، برای ترجمه بدنه لامبدا به عبارت معادل آن در SQL استفاده شود. در هر یک از دو راه فوق، خود عبارت لامبدا دقیقاً شبیه کد به نظر می‌رسد، بنابراین روش استفاده در زمان اجرا، برای کاربر ناپیدا می‌باشد.
یکی از ویژگی‌هایی که سی شارپ ۲٫۰ ارائه کرد، توانایی تعریف توابع به صورت Inline بود که این ویژگی با عنوان توابع بی‌نام (anonymous methods) شناخته می‌شود. توابع بی‌نام در پاره‌ای مواقع بسیار مفیدند. اما نحو(syntax) به‌کارگیری آنها دشوار می‌باشد. عبارات لامبدا ویژگی توابع بی‌نام را دارند اما با نحو ساده‌تری در سی شارپ ۳٫۰ معرفی شده‌اند. به نمونه زیر توجه کنید:
تعریف عبارات لامبدا از نحو (syntax) خاصی پیرو می‌کند. همان‌طور که در کد بالا مشاهده می‌کنید، پارامترهای تابع هم به صورت صریح و هم به صورت ضمنی قابل بیان اند. کلمه return به صورت ضمنی حذف شده‌است.
تابع معادل عبارت لامبدای اول به صورت زیر است:
int Fn(int x)
لیست پارامترها و بدنه عبارت لامبدا توسط => از هم جدا می‌شوند. در صورتی که تعریف عبارت لامبدا بیشتر از یک خط کد باشد می‌توان بدنه آن را با استفاده از {} نشان داد.
کامپایلر به‌طور خودکار یک متغیر نمونه خصوصی و قرار دهنده و قرار گیرنده مناسب تولید می‌کند، مانند:
توابع بسط داده شده حالتی از سینتکس Suger هستند که امکان اضافه کردن متد جدید به کلاس موجود را بیرون از حوزه تعریف آن فراهم می‌کنند. در این مثال، تابع بسط داده شده یک تابع ایستا است که قابل فراخوانی توسط تابع مشابه می‌باشد. گیرنده فراخوانی مقید به اولین پارامتر تابع تحت عنوان this می‌باشد:
public static class StringExtensions
string s = "foo";
s.Left(3);// same as StringExtensions.Left(s, 3);
زبان سی شارپ کلمه کلیدی sealed را برای این منظور ارائه کرد که امکان ارث بری از یک کلاس را صلب کند؛ یعنی با اضافه شدن این کلمه کلیدی به ابتدای تعریف کلاس، امکان ارث بری از آن غیرممکن می‌شود. سی شارپ ۳٫۰ ویژگی جدیدی را در اختیار برنامه نویسان قرار می‌دهد به این صورت که می‌توان هر نوع کلاسی حتی کلاس‌های مهر شده با Sealed را با استفاده از Extension methodsبسط داد.
توابع جزئی به تولیدکننده‌های کد اجازه تولید اعلان توابع به صورت نقاط گسترش یافته‌ای که تنها شامل کدهای اصلی هستند را می‌دهد، در صورتی که یک نفر آن را در قسمتی از کلاسی دیگر اجرا کند.
سی شارپ ۳٫۰ کلمه کلیدی جدید var را معرفی می‌کند که به کمک آن برنامه نویسان قادر خواهند بود متغیرهای محلی خود را بدون ذکر صریح نوع آن‌ها، تعریف کنند.
namespace CS3_Test
یکی از ویژگی‌های اصلی زبان سی شارپ،Strong Type بودن آن است. Strong Type بودن زبان به این معناست که با اعلان یک متغیر، نوع آن صریحاً باید توسط برنامه‌نویس مشخص شود. آیا اضافه شدن این ویژگی جدید، منافاتی با Strong Type بودن این زبان دارد؟ در پاسخ باید گفت که تعریف متغیرهای محلی به صورت ضمنی با استفاده از کلمه کلیدی var هیچ گونه منافاتی با Strong Type بودن سی شارپ ندارد. چون برنامه‌نویس می‌بایست نوع متغیر را به هنگام اعلان آن صریحاً مشخص کند. نوع متغیر پس از اولین اعلان تا اتمام حوزه تعریف آن تغییر نخواهد کرد و هر گونه تلاش برای تغییر نوع با خطا مواجه خواهد شد؛ بنابراین دو اعلان زیر نامعبر هستند:
استفاده از var تنها در تعریف متغیرهای محلی امکانپذیر است. در اعلان متغیرها به صورت سراسری، پارامترهای توابع و مقادیر بازگشتی نمی‌توان از var استفاده کرد. چرا var؟ این ویژگی آزادی عملی بیشتری برای کار با متغیرهای محلی در اختیار برنامه‌نویس قرار می‌دهد. سناریویی را در نظر بگیرید که یک تابع تحت شرایطی، مقادیر از انواع مختلف را برگرداند. در این صورت بدون درگیر شدن با casting و تبدیل نوع می‌توان با تعریف متغیر ضمنی محلی هر نوعی را که تابع برمی‌گرداند، در اختیار داشت.
ماهیت تمامی برنامه‌های امروزی به گونه‌ای‌ست که با حجم عظیمی از داده‌ها سرو کار دارند. برای مدیریت داده‌ها، نیاز به کلاس‌هایی‌ست که در مهندسی نرم‌افزار آنها را Entity Types می‌نامیم. این کلاس‌ها به عنوان بسته‌هایی از داده‌ها محسوب می‌شوند. معضل فعلی موجود در رابطه با Entity Typeها تعدد سازنده‌های آن‌ها می‌باشد و ممکن است شما نیز با این مشکل برخورد کرده باشید. به این صورت که در سناریوهای مختلف، برنامه‌نویسان مجبور هستند سازنده یک کلاس را به چند شکل سربارگذاری کنند. سی شارپ ۳٫۰ راه چاره‌ای فوق‌العاده برای این مشکل ارائه می‌دهد. Object initializer حالت پیشرفته‌ای از سازنده می‌باشد.
این کلاس شامل سه متغیر بوده و برای هر متغیر خاصیتی تعریف شده‌است. اینک این سوالات مطرح می‌شوند: سازنده این کلاس را به چند شکل باید سربارگذاری کرد؟ سازنده‌ای که هر سه متغیر را مقداردهی کند؟ شاید در مواردی هر سه متغیر در دست نباشد در این صورت چه سازنده‌ای باید فراخوانی شود؟ سی شارپ ۳٫۰ راه حل زیر را ارائه می‌دهد. فرض کنید بخوانیم نمونه‌ای از کلاس Person را ایجاد کنیم.
همان‌طور که مشاهده می‌کنید، در سی شارپ ۳٫۰ به هنگام نمونه سازی، این امکان در اختیار برنامه‌نویس قرار می‌گیرد که هر یک از خصیصه‌های موجود در کلاس را به دلخواه و بنا به نیاز مقدار دهی کند به صورت زیر:
Person person = new Person
( Age = 21,
تیم طراح سی شارپ ویژگی فوق‌العاده‌ای را به آن اضافه کرد که برنامه نویسان را قادر می‌سازد نحو (Syntax) زبان‌های پرس و جو مانند SQL و XQuery را با استفاده از این زبان پیاده‌سازی کنند. این ویژگی با نام اختصاری LINQ شناخته می‌شود و دارای انواع زیر است:
نمونه‌ای از کاربرد LINQ به صورت زیر است:
توضیح: در مثال بالا ابتدا یک آرایهٔ int با مقداردهی اولیه تعریف شده‌است. سپس با استفاده از دستورها) LINQ که جز کلمات کلیدی سی شارپ محسوب می‌شوند)، آرایه‌ای با اعضای بزرگتر از ۵ انتخاب و در متغیر ضمنی محلی selective_array ذخیره می‌شود. در نهایت اعضای selective_array به صورت ۷ و ۹ و ۱۲ خواهد بود. در توضیح این ویژگی جدید به همین یک مثال بسنده می‌کنیم چون بیان تمامی جنبه‌های LINQ خود نیازمند نگارش مقاله‌ای مفصل می‌باشد.
آرایه‌ها را نیز می‌توان با استفاده از کلمه کلیدی var تعریف کرد.
ویژگی «دستورها پیش پردازنده» سی شارپ (اگرچه آنها به واقع یک پیش پردازنده نیستند) مبنی بر دستورها پیش پردازنده C است که به برنامه‌نویس اجازه تعریف سمبلهایی را می‌دهند. برخی از این دستورها عبارتند از: #if، #region، #define. راهنماهایی نظیر #region تذکراتی به ویرایش‌گرها برای code folding می‌دهند.
توضیحات تک خط با استفاده از دو اسلش تعریف می‌شوند(//) و توضیحات چند خطی با /* شروع و به */ ختم می‌شوند.
// a comment
public class FooBar
توضیحات چند خطی هم چنین می‌توانند با /* شروع و با */ تمام شوند.
سامانه مستندسازی سی شارپ بسیار شبیه به جاوا است، اما مبنی بر XML. دو شیوه مستندسازی در حال حاضر به وسیله کامپایلر سی شارپ پشتیبانی می‌شود.
توضیحات تک خطی، که معمولاً در تولیدکننده کد مایکروسافت ویژوال استودیو پیدا می‌شوند، با استفاده از/// شروع می‌شوند.
/// <summary>A summary of the method.</summary>
/// <param name="firstParam">A description of the parameter.</param>
/// <remarks>Remarks about the method.</remarks>
توضیحات چند خطی، که در نسخه ۱٫۰ تعریف شدند، اما در نسخه ۱٫۱ پشتیبانی از آنها وجود نداشت با /* شروع و به */ ختم می‌شوند:
نکته:در اینجا یک ملاک سخت در مورد استفاده از فضاهای خالی در سندهای XML هنگام استفاده از /**وجود دارد:
نوع دیگری از کد بالا ارائه خواهد شد:
سینتکس سندسازی توضیحات XML در یک ضمیمه بی‌قاعده از استاندارد ECMA از سی شارپ وجود دارد. یک استاندارد مشابه قوانینی برای پردازش توضیحات و تبدیل آنها به متون Plain در XML را با کمک قوانین CLI فراهم می‌کند. این به هر IDE در سی شارپ و دیگر ابزار گسترش دهنده امکان پیدا کردن هر نمادی را در کدها می‌دهد.
بخش مرکزی چارچوب دات‌نت، محیط اجرایی Runtime می‌باشد که اصطلاحاً به آن CLR یا .NET Runtime می‌گویند. کدهایی که تحت کنترل CLR اجرا می‌شوند اغلب به عنوان کدهای مدیریت شده نامیده می‌شوند.
اگر چه، پیش از این که کدها (همه زبان‌های چارچوب دات‌نت) به وسیله CLR اجرا شوند، بایستی مورد کامپایل قرار گیرند. در چارچوب دات‌نت عمل کامپایل در دو مرحله صورت می‌گیرد:
یک نکته قابل توجه، اشتراک زبان میانی مایکروسافت با کد بایت جاوا(Bytecode)است. ایده این اشتراک از آنجا سرچشمه گرفت که چون Bytecode یک زیان سطح پایین با یک دستور زبان ساده می‌باشد (که به جای متن مبتنی بر کدهای عددی است)، می‌تواند به سرعت به کدهای بومی(Native) ترجمه شود.
منبع چارچوب دات‌نت مایکروسافت برای اجرا فقط ویندوز است. پیاده‌سازی‌های دیگری برای اجرای برنامه‌های سی شارپ در ویندوز، لینوکس،BSD یا Mac OS X وجود دارند اما هنوز کامل نیستند: Mono و DotGNU در نوامبر سال ۲۰۰۲ توسط مایکروسافت (نسخه ۱٫۰) برای پیاده‌سازی CLI برای کار در Free BSD و Mac OS X ۱۰٫۲ ارائه شد، اما نسخه‌های بعدی آنها فقط قابل اجرا بر روی ویندوز بود.
نسخه بعدی این زبان، سی شارپ ۴ است که از اکتبر سال ۲۰۰۸ در حال ساخته شدن است. مایکروسافت لیستی از ویژگی‌های جدید سی شارپ ۴ را در کنفرانس توسعه دهندگان حرفه‌ای اعلام کرده‌است. تمرکز اصلی در ورژن بعدی روی قابلیت هماهنگی فریم ورک‌ها و نوع زبان‌هایی است که کامال پویا یا قیمتی پویا هستند، مانند dynamic language runtime و COM. ویژگی‌های زیر تا کنون اعلام شده‌اند:
پارامترهای واسط‌های generic و deletageها می‌توانند با استفاده از کلمات out و in از دو نوع Covariant و contravariant باشند. این تعیین نوع‌ها بعداً برای تبدیل انواع به یکدیگر، چه از نوع صریح یا مجازی و چه از نوع compile-time یا run-time به کار می‌رود. به عنوان مثال، واسط IEnumerable<T> در زیر دوباره تعریف شده‌است:
interface IEnumerable<out T>
بنابراین، هر کلاس مشتق شده‌ای که از IEnumerable<Derived> استفاده کرده باشد، با تمام کلاس‌های پایه که IEnumerable<Base> را دارند سازگار است. به عنوان تمرین، کد زیر نوشته شده‌است:
void PrintAll(IEnumerable<object> objects)
IEnumerable<string> strings = new List<string>();
PrintAll(strings);// IEnumerable<string> is implicitly converted to IEnumerable<object>
برای contravariance، رابط IComparer<T> به صورت زیر دوباره تعریف شده‌است:
public interface IComparer<in T>
بنابراین، هر کلاسی که IComparer<Base> را برای یک کلاس پایه بیان می‌کند، با IComparer<Derived> در تمام واسط‌ها و کلاس‌هایی که از آن کلاس پایه مشتق شده‌اند، سازگار است. این امر نوشتن کد زیر را میسر می‌سازد:
IComparer<object> objectComparer = GetComparer();
IComparer<string> stringComparer = objectComparer;
در سامانه انواع داده‌های سی شارپ یک نوع جدید با نام شبه-نوع معرفی شده‌است که مانند System.Object رفتار می‌کند، ولی در ادامه، هر دسترسی به اعضا یا برنامه‌هایی که از این نوع استفاده می‌کنند، بدون چک شدن نوع داده‌هایشان اجازه کار دارند و تجزیه آنها تا زمان اجرا به تعویق می‌افتد. به عنوان مثال:
// Returns the value of Length property or field of any object
صدا زده شدن‌های متد پویا، مانند پارامترهای صریح یا مجازی با مقدار نوع dynamic راه‌اندازی می‌شوند. به عنوان مثال:
جستجوی پویا تحت سه مکانیزم مشخص اجرا می‌شود: COM IDispatch برای اشیاء COM، رابط IDynamicObject DLR برای اشیاء دارای این واسط و Reflection برای بقیه اشیا؛ بنابراین هر کلاس سی شارپ می‌تواند صدا زده شدن‌های پویای خود را با اجرای IDynamicObject در نمونه‌های خود جدا کند.
در مورد متدهای پویا و مشخص کننده صدا زدن‌ها، تجزیه و تحلیل اضافه بار مطابق انواع اصلی که به عنوان آرگومان‌ها هستند، در زمان اجرا اتفاق می‌افتد، در غیر این صورت بر اساس قوانین تجزیه و تحلیل اضافه بار سی شارپ عمل خواهد شد. به علاوه، در مواردی که در صدا زدن پویا، گیرنده خودش پویا نیست، تجزیه و اضافه بار زمان اجرا تنها به متدهایی که در زمان کامپایل به صورت گیرنده ظاهر شده‌اند، رسیدگی می‌کند. به عنوان مثال:
class Derived: Base
dynamic x = 123;
Base b = new Derived();
b.Foo(x);// picks Base.Foo(double) because b is of type Base, and Derived.Foo(int) is not exposed
dynamic b1 = b;
b1.Foo(x);// picks Derived.Foo(int)
هر مقداری که توسط دستیابی به عضو پویا برگردانده شده باشد، خودش از نوع پویا است. مقادیر نوع پویا به سایر نوع‌ها و از سایر نوع عا قابل تبدیل هستند. در نمونه کد بالا، این امر به تابع GetLength اجازه با مقدار بازگردانده شده از Length بدون هیچ صریحی به عنوان integer استفاده کند. در زمان اجرا، مقدار واقعی به نوع خواسته شده تبدیل می‌شود.
در حال حاضر کلمه کلیدی ref برای متدهای صدا زننده اختیاری است. کد زیر را در نظر بگیرید:
void Increment(ref int x)
Increment(ref x);
به صورت زیر هم می‌تواند نوشته شود:
Increment(x);
در سی شارپ ۴ پارامترهای اختیاری ای با مقادیر پیش فرض موجود در ++C معرفی می‌شوند. به عنوان مثال:
void Increment(ref int x, int dx = 1)
Increment(ref x);// dx takes the default value of 1
Increment(x, 2);// dx takes the value 2
به علاوه، برای کامل کردن پارامترهای اختیاری، می‌توانید صریحاً نام پارامترها را در صدازدن‌های متدها تعیین کنید. این کار به شما اجازه تصویب کردن انتخابی برای هر زیر مجموعه اختیاری از پارامترهای متد را می‌دهد. تنها محدودیت موجود این است که پارامترهای نام دار باید بعد از پارامترهای بدون نام بیایند. نام پارامترها می‌توانند برای هر دو نوع پارامترهای اختیاری و ضروری تعیین شوند و می‌توانند برای بهبود خوانایی و فراخوانی دوباره آرگومان‌ها مفید باشند. به عنوان مثال:
OpenFile("file.txt");// use default values for both "mode" and "access"
OpenFile("file.txt", mode: FileMode.Create);// use default value for "access"
OpenFile("file.txt", access: FileAccess.Read);// use default value for "mode"
OpenFile(name: "file.txt", access: FileAccess.Read, mode: FileMode.Create);// name all parameters for extra readability, and use order different from method declaration
پارامترهای اختیاری inter-operating را با COMراحت تر می‌کنند. در گذشته، سی شارپ مجبور بود تمام پارامترهای متد سازنده COM را پشت سر بگذارد، حتی آنهایی را که اختیاری بودند؛ به عنوان مثال:
object fileName = "Test.docx";
object missing = System.Reflection.Missing.Value;
doc.SaveAs(ref fileName,
با پشتیبانی از پارامترهای اختیاری، کد بالا می‌تواند به صورت زیر خلاصه شود:
doc.SaveAs("Test.docx");
جزئیات مشخصات سی شارپ، حداقل تعداد نوع‌ها و کتابخانه‌های کلاس است که کامپایلر نیاز به وجود آن‌ها دارد. عملاً، اغلب سی شارپ توسط بیشترین استفاده از CLI را می‌کند، که استاندارد شده ECMA-۳۳۵ است.
در زیر یک مثال ساده از برنامه سی شارپ آمده‌است، نسخه‌ای از مثال کلاسیک Hello World:
class ExampleClass
هر خط هدفی دارد:
در بالا، تعریف کلاس آمده‌است. هر چیزی که در بین در علامت پرانتز باشد،ExampleClass را توصیف می‌کند:
این یک تابع عضو کلاس را در زمان شروع اجرای برنامه اعلان می‌کند. دات نت در زمان اجرا، تابع Main را صدا می‌زند (نکته: Main ممکن است از هر جای دیگری نیز صدا زده شود، مثلاً توسط تابع ExampleClass و با کد ()Main). کلمه کلیدی static تابع را بدون داشتن نمونه‌ای از ExampleClass قابل دسترس می‌کند. هر تابع Main در هر کنسولی باید به صورت static تعریف شود. در غیر این صورت برنامه به یک نمونه نیاز خواهد داشت و هر نمونه به یک برنامه نیاز دارد. برای اجتناب از این وابستگی دایره‌ای تجزیه ناپذیر، کامپایلرهای سی شارپ در صورت Static نبودن تابع Main، یک خطا اعلام می‌کنند. کلمه کلیدی void نشان دهنده این است که تابع Main هیچ مقداری را برنمی‌گرداند.
خط بالا، خروجی را می‌نویسد. در فضای اسم System, Console یک کلاس استاتیک است که یک میانجی بین ورودی، خروجی و خطای کنسول می‌باشد. برنامه‌ای که متد WriteLine را از کنسول صدا می‌زند، خروجی رشته «Hello, world!» را در خروجی نمایش می‌دهد.
راه دیگر این کار استفاده از فضای نام استاتیک است به این صورت است:
using static System.Console;
در آگوست سال ۲۰۰۰، شرکت مایکروسافت، و Hewlett-Packard و شرکت اینتل به عنوان پشتیبان مشخصات سی شارپ را مانند CLI به سازمان استانداردسازی ECMA ارائه کردند. در دسامبر سال ۲۰۰۱، این سازمان، ECMA-۳۳۴ را با عنوان مشخصات زبان سی شارپ منتشر کرد. سی شارپ در سال ۲۰۰۳ به عنوان یک استاندارد ISO به ثبت رسید(ISO/IEC ۲۳۲۷۰). در سال ۲۰۰۲، ECMA دومین ویرایش از خصوصیات زبان سی شارپ را پذیرفت.
در ژوئن سال ۲۰۰۵، ECMA سومین ویرایش را با اضافه کردن مواردی همچون کلاس‌های partial، متدهای ناشناس، انواع nullable و Genericها منتشر کرد.
در ژوئیه ۲۰۰۵، ECMA استانداردها و TRها را همراه با پردازش Fast-Track اخیر به ISO/IEC JTC پیشنهاد کرد. این روند معمولاً ۶ تا ۹ ماه زمان می‌برد.
آخرین ویرایش این زبان در ۱۵ آگوست سال ۲۰۱۲ در قالب Framework ۴٫۵ارائه گردید
با توجه به توابع موجود در چارچوب دات‌نت امکان استفاده از این توابع وجود دارد که می‌توان گفت برای هر کاری شرکت مایکروسافت تابعی پیش‌بینی کرده؛ که این امکان را ایجاد می‌کند که به فایل اصلی پروژه هیچ فایل کتابخانی را اضافه نکنید (هم به صورت دستی یا خود کامپایلر).
این موضوع خود باعث ایجاد فایل‌های خروجی با حجم بسیار کم می‌شود. این موضوع در بسیاری از موارد بسیار اهمیت دارد.
برنامه‌های سی شارپ، همچون تمام برنامه‌های نوشته شده در چارچوب دات‌نت و سایر محیط‌های ماشینی مجازی مانند جاوا، نیازمند منابع سامانه و حافظه بیشتری نسبت به برنامه‌های نوشته شده با سایر زبان‌ها مانند سی پلاس پلاس است و هم چنین سرعت کمتری نیز دارد.
هر چند تعریف زبان سی شارپ و CLI تحت استانداردهای ISO و ECMA استاندارد شده‌اند،CLI تنها قسمتی از Base Class Library (BCL) مایکروسافت می‌باشد که شامل کلاس‌های غیر استاندارد استفاده شده در برنامه‌های سی شارپ نیز می‌شود. از این گذشته، بعضی از قسمت‌های BCL تحت حق امتیاز مایکروسافت هستند که ممکن است پیاده‌سازی کامل framework را مختل کند، زیرا تنها بخش‌های استاندارد دارای حق محافظت RAND در برابر مدعیان را دارند. همچنین در ساخت انواع برنامه‌های کاربردی از قبیل CRMها نیز قابل استفاده می‌باشد
متداول‌ترین کامپایلر سی شارپ، Microsoft Visual C# می‌باشد.
کاملاً شبیه به پروژه Mono.
اسم سی شارپ از علامت موسیقی شارپ گرفته شده‌است که در موسیقی بیانگر این است که متن نوشته شده باید نیم قدم از خط بالاتر باشد. مطابق با ECMA-۳۳۴، بخش ۶، مخفف‌ها و اختصارها، نام زبان به صورت «#C» نوشته می‌شود(«کلمه لاتین C (U+۰۰۴۳) به همراه علامت عددی #(U+۰۰۲۳)») که به صورت «سی شارپ» تلفظ می‌شود. علامت «#» نباید با علامت شارپ در موسیقی(♯، U+266F) که در یک صفحه کلید استاندارد وجود ندارد اشتباه گرفته شود. پسوند شارپ، توسط بسیاری دیگر از زبان‌های دات نت مانند #J، #A و #F نیز به کار رفته‌است. پیاده‌سازی اولیه از زبان ایفل تحت دات نت نیز #Eiffel نام داشت که الان زبان ایفل را به‌طور کامل پشتیبانی می‌کند. هم چنین این پسوند بعضی وقت‌ها در کتابخانه‌ها نیز به کار می‌رود، مانند #Gtk، #Cocoa و #Qt.
میرزا حبیب‌الله رشتی، از فقهای شیعه و از مجتهدین صاحب نام عصر ناصری، در سال ۱۲۳۴ در املشدائرةالمعارف تشیع، ج ۲، ص ۵۰۹. به دنیا آمد.
نیاکانش در اصل اهل قوچان بودند که در سال‌های آغازین قرن یازدهم به گیلان کوچانده شده و از آن پس در همان‌جا ساکن شدند.گوشه‌هایی از تاریخ گیلان، شیخ بهاءالدین املشی، ص ۳۵.
در خانه، نخستین کلمات را از قرآن آموخت. دوازده ساله بود که از املش به لنگرود و سپس به رشت عزیمت نمود تا بر اندوخته‌اش بیفزاید.
سپس راه هجرت پیش گرفت و عازم حوزه علمیه قزوین شد.زندگانی و شخصیت شیخ انصاری، ص ۲۶۲.
هفت سال در فقه و اصول از عبدالکریم ایروانی بهره گرفت و در ۲۵ سالگی، به درجه اجتهاد رسید.گنجینه دانشمندان، شیخ محمد رازی، ج ۵، ص ۱۷۴.
در سال ۱۲۵۹ از قزوین به املش بازگشت و چهار سال مرجع امور دینی مردم بود.
در سال ۱۲۶۳ به نجف رفت و در حلقه درس محمد حسن نجفی به تلمذ نشست و تا سال ۱۲۶۶ که سال وفات او بود، از کلاسش بهره برد و از او اجازه اجتهاد دریافت کرد.اعیان الشیعة، سید محسن امین، ج ۹، ص ۱۴۹.
پس از آن به درس شیخ انصاری رفت و تا پایان زندگی از شاگردان ممتاز درس وی بود.
میرزا حبیب‌الله رشتی به همراهی مرتضی انصاری شوشتری، صاحب جواهر، میرزای شیرازی، حسین محدث نوری، شیخ فضل‌الله نوری، میرزاحسن آشتیانی، سید محمد کاظم یزدی، سید جمال الدین اسدآبادی، آقا نجفی اصفهانی، علی لنکرانی، حاجی میرزا حسن آقا مجتهد تبریزی، آخوند ملامحمد خمامی رشتی، آخوند رستم‌آبادی، سید احمد طباطبایی برادر سید محمد طباطبایی، آخوند ملا قربانعلی زنجانی، ملا محمد آملی، عبدالنبی نوری، سید محمد یزدی، محمد بروجردی، حاج میرزا لطف‌الله، حاج آقا نورالله مجتهد عراقی، شیخ علی اکبر مجتهد، سید علی قطب نخجوانی، شیخ محمد علی پیشنماز، آقا جمال الدین لافجه‌ای، علی اکبر طالقانی و برخی دیگر از بنیانگذاران، جمع اوران و جامع سازان عصر اول احیای روشنفکری، نواندیشی و خردگرایی دین شیعه و شکل دهندگان جنبش مشروعه در قرن ۱۲ هجری-قمری بودند. (دوران اول احیای دین و مذهب شیعه اسلامی پس از ۱۰۰۰ سال زیر ضربه بودن)
میرزا حبیب‌الله رشتی، همراهان، استادان و ۳ نسل شاگردان آنان احیاکننده و عامل شکل‌گیری عصر دوم مذهب شیعه اسلامی و فراهم شدن امکان شروع انقلاب اسلامی در قرن ۱۳ هجری-قمری می‌باشند. (دوران دوم احیای دین و مذهب شیعه اسلامی)
میرزا حبیب‌الله رشتی نیز که عمدتاً از اعطای اجازة اجتهاد به دیگران اکراه داشته و نوعاً در این امر احتیاط زیادی به خرج می‌داد، در تقریظ بر رسالة فقهی شیخ فضل‌الله نوری با عنوان «قاعدة ضمان الید» مقام علمی و تحقیقی شیخ را به نحوی شگفت و کم‌نظیر ستوده است. ایشان در بخشی از این تقریظ چنین می‌آورد: