لطفاً خودتان را تکرار نکنید!

Mr Smith In Matrix Reloaded : Repeated himself and failed!

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

این اصل که به طور خلاصه «DRY» خوانده می‌شود (و متضاد آن «WET» است! ؛ اولی مخفف Don’t Repeat Yourself و دومی مخفف Write Everything Twice) به طور ساده (به زبان برنامه‌نویسان) می‌گوید هر قسمتی از کدِ برنامه که ممکن است لازم باشد در جای دیگری مجدداً استفاده شود؛ لازم است به جای تکرار، به شکل یک کد قابل استفادهٔ مجدد (تابع، کلاس و …) درآید و هر جا لازم شد فراخوانی شود. البته این اصل تعریف پیچیده‌تر و دقیق‌تری هم دارد که درکش مستلزم سوزاندن فسفر بیشتری است: «هر بخشی از دانش در یک سیستم باید یک نمایش یکتا، غیر مبهم و معتبر داشته باشد».

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

همیشه طوری کدنویسی کن که انگار کسی که قرار است کد تو را نگهداری کند یک قاتل زنجیره‌ای روانی است که نشانی خانه‌ات را می‌داند!

Dexter

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

شأن نزول این مطلب آن بود که خود من مدتها است که دارم تاوان عمل نکردن به این قاعده را برای خطای متداولی روی گنجور رومیزی می‌پردازم:

ایمیلهایی که گزارش خطایی با راهکار یکسان برای رفع خطا را در گنجور رومیزی به من داده‌اند

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

صلاح کار کجا و …

دربارهٔ این بیت:

صلاح کار کجا و من خراب کجا؟

ببین تفاوت ره کز کجاست تا به کجا!

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

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

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

خیام، مسافر تایتانیک؟

مجلهٔ دانشمند این ماه مقاله‌ای دارد با عنوان «تایتانیک چرا غرق شد؟».

تایتانیک چرا غرق شد؟

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

شاید خیلی از ایرانیان ندانند که نسخهٔ اصلی و دستنویس کتاب رباعیات خیام با کشتی تایتانیک به عمق اقیانوس رفت و متأسفانه نابود شد. این کتاب بسیار پرارزش که «عمر اعظم» نام داشت سرگذشت بسیار غم‌انگیزی دارد و سه روایت دربارهٔ آن نقل شده است. بر اساس یک روایت، این کتاب را یکی از شاهزادگان قاجار برای فروش به آمریکا می‌برده است و چون او یکی از سرنشینان کشتی تایتانیک بود این کتاب را با خود به قعر اقیانوس برد و به این ترتیب، برگی دیگر بر ماجرای قاچاق ثروتهای ملی ایران افزوده و یک اثر نفیس نابود شد. روایت دوم نیز دست کمی از روایت نخست ندارد. «بنیامین عمر بوساژ» که باخبر می‌شود نسخهٔ دستنویس رباعیات خیام (عمر اعظم) در دست یکی از شاهزادگان ایرانی است به ایران سفر می‌کند، دیگ طمع این شاهزادهٔ ضدملی را به جوش می‌آورد، کتاب را از او می‌خرد و هنگام بازگشت به آمریکا چون با کشتی تایتانیک سفر می‌کرده است این کتاب به قعر اقیانوس می‌رود و یک اثر نایاب از فرهنگ ایران‌زمین -متأسفانه- نابود می‌شود. و اما بر اساس روایت سوم، صحافی به نام «فرانسیس ستکلایف تلاش» آن را خریداری کرده از نظر صحافی روی آن کار می‌کند و قصد فروش آن را داشته که به علت بحران اقتصادی انگلیس (سال ۱۹۱۲) تصمیم می‌گیرد آن را به آمریکا ببرد، [آن را] به یک مسافر آمریکایی می‌فروشد و چون خریدار مسافر کشتی تایتانیک بوده، کتاب با غرق کشتی به اعماق دریا می‌رود و نابود می‌شود. می‌گویند برادرزادهٔ صحاف انگلیسی، «استانلی»، از باقیماندهٔ کتاب و تصاویری که از آن داشته نسخهٔ دومی -نه به ارزش نسخهٔ اول که به روایتی به خط و نوشتهٔ خود خیام بوده است– تهیه می‌کند که این نسخه نیز در بمباران لندن طی جنگ جهانی دوم نابود می‌شود. وی دست از کار نمی‌کشد و نسخهٔ سومی از طرحها، عکسها و تصاویر نسخه‌های اول و دوم تهیه می‌کند که این نسخه در اختیار همسر و بازماندگان «استانلی بری» بوده است که چند سال پیش به موزهٔ بریتانیا تعلق گرفت. در این کتاب که هم‌اکنون در موزهٔ بریتانیا موجود است، یکهزار قطعه جواهر، هزاران سنگ قیمتی رنگارنگ و چند متر مربع ورقهٔ طلا به کار رفته است. قصهٔ پر غصهٔ کتاب دستنویس رباعیات خیام را بسیاری از نویسندگان جهان که شیفتهٔ این دانشمند بزرگ ایرانی بوده‌اند با درد و اندوه نگاشته‌اند.

مجلهٔ دانشمند، شمارهٔ ۵۶۴، مهر ۱۳۸۹، صفحهٔ ۱۸

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

این مطلب، مرا یاد مقالهٔ دیگری در مجلهٔ اطلاعات علمی، شمارهٔ پیاپی ۳۴۲، مربوط به اسفندماه ۸۶ انداخت. در صفحهٔ ۱۶ این مجله، در مطلبی با عنوان «سرویس اینترنتی به کمک فاضلاب شهری» این دروغ آوریل گوگل که به انتخاب مجلهٔ پی‌سی‌ورلد یکی از خنده‌دارترین دروغهای آوریل گوگل بوده (اینجا) به عنوان یک مقالهٔ علمی و به شکل کاملاً جدی ترجمه و ارائه شده است.

داستانهایی دربارهٔ اعداد تصادفی

۱) تابع تولید عدد تصادفی

xkcd: Random Number

۲) چرخ چهارگوش

برنامه‌نویس سرشناسی که همچون من و احتمالاً شما، آن روزها که قرار بود موزیلا ویرایش ۳.۵ از مرورگر محبوبش را منتشر کند ذوق دریافت فایرفاکس جدید را داشت در روزهای اول استفاده از این ویرایش مهم فایرفاکس به مشکل آزاردهنده‌ای برخورد کرد:

پس دست به کار شدم و نصاب فایرفاکس را در روز انتشار دریافت کردم و پس از گذر از کثیف‌کاری معمول به‌روزرسانی افزونه‌ها توانستم مرورگر جدید را برای اولین بار اجرا کنم و خدایا من چه می‌بینم: وب -انگارکن- به سال ۱۹۹۴ برگشته: وقتی که هیچ کس جز خوره‌های واقعی سایت نداشت و همه چیز به سرعت برق بود. زندگی شیرین شده بود!

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

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

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

برای حل مشکل اعداد تصادفی، تیم NSS به روشی هوشمندانه روی آورده بودند، رویکردی چنان عالی که تا به حال به ذهن هیچ کس نرسیده بود: آنها تصمیم گرفتند که تمام فایلهای موجود در تمام پوشه‌های موقتی ویندوز را با چند ریسمان موازی بخوانند تا از آنها به عنوان نقطه‌های آغاز (seed) تولید اعداد تصادفی استفاده کنند! توجه کنید: این پوشه‌ها در هر چند میلی‌ثانیه تغییر می‌کنند، به سرعت در دسترسند، تأخیری در دسترسی به آنها وجود ندارد و هیچوقت با چیزهای حاشیه‌ای به دردنخور پر نمی‌شوند!

البته، پاراگراف بالا ذهنیت تیم NSS بود. در دنیای واقعی، چیزها یک کوچولو متفاوتند. متوجه هستید که؛ فایرفاکس ویرایش ۳.۵ کش اینترنت اکسپلورر را و پوشهٔ temp ویندوز برای پروفایل کاربر را توسط زیرسیستم NSS خود می‌خواند. این نه تنها به نظر من یک نباید به جهت خواندن داده‌های موقتی برنامهٔ دیگر است، بلکه یک بی‌توجهی شگفت‌آور نسبت به گلوگاه اصلی کامپیوترهای امروزی است: هارد دیسکها. اگر شما ویروس‌کشی داشته باشید که در حالت بددلانه تنظیم شده باشد پیمایش پوشه‌های موقت توسط NSS کندتر هم خواهد بود چرا که دسترسی به هر فایل از سوی فایرفاکس باعث اسکن آن توسط ویروس‌کش می‌شود. و اگر کاربر، با کامپیوترش هیچ کاری غیر از مرور وب با فایرفاکس نکند به گونه‌ای که این پوشه‌های موقت دست‌نخورده یا خالی بمانند، آن وقت چه؟ آیا خواندن فایل بدترین روش ممکن برای تولید نقطه‌های آغاز اعداد تصادفی نیست؟

۳) ماشین تولید اعداد تصادفی

dilbert random generator

– مطمئنید که این تصادفی است؟

– مشکل تصادفی بودن همین است که هیچ وقت نمی‌شود مطمئن بود.

۴) داستان گنجور

برای سیستم بازبینی خروجیهای OCR گنجور، راهکارهای مختلفی می‌شد طراحی کرد: می‌شد با توجه به آن که من عدد اطمینان بازشناسی تکه‌شعرها را هم داخل پایگاه داده‌ها داشتم، اوّل آنهایی را که با دقت پایین‌تری خوانده شده بودند در معرض بازبینی بگذارم. می‌شد به ترتیب عمل کنم، یعنی دوستانی که بازبینی می‌کنند از اوّل شروع کنند و هر کسی که تازه می‌آید آخرین تکه شعری را که هنوز بازبینی نشده یا اگر همه حداقل یک دور بازبینی شده‌اند، هنوز در دور دوم بازبینی نشده بازبینی کند و … .

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

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

نتیجه را احتمالاً می‌توانید حدس بزنید. خیلی از روزها، بیش از ۱۰۰۰ تکه از شعرها بازبینی می‌شد (آمارش هنوز در این صفحه در دسترس است)، اما بعد از دو ماه چیزی حدود ۱۹۰۰۰ تکه بیش از یک بار و حدود ۲۶۰۰۰ تکه تنها یک بار بازبینی شده بودند و ۸۰۰۰ تکه هم اصلاً بازبینی نشده بودند (گزارش تا آن مرحله).

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

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

و البته، یادتان باشد که این فقط مرحلهٔ اول بود و نهضت کماکان ادامه دارد.

رسن بازی

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

عبید زاکانی، رسالهٔ دلگشا

پیرمردی به اسم بیل

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

آموزگار او را با خود برد و نخست موی سر و ریش او بتراشید تا به آن نپردازد، پس از آن او را به جد تمام درس داد. پس هنگامی او را پیش شاپور برد که در درس پیشرفت کرده و مهارت یافته بود، چنان که شاپور مخارج بنای شهر و ثبت آن را به وی واگذار کرد.

مجلهٔ دانشمند، شمارهٔ مهرماه ۸۹، صفحات ۳۱ و ۳۲

گه نعره زدی بلبل، گه جامه دریدی گل …

اگر عنوان مطلب برایتان آشنا نیست سری به اینجا بزنید.

گه نعره زدی بلبل، گه جامه دریدی گل!

از «همشهری داستان» شمارهٔ ۴ صفحهٔ ۱۶۱ قابل دریافت از اینجا (سایت مجلات همشهری).

سلس‌القول

عباس اقبال آشتیانی در مقدمهٔ دیوان هاتف در شرح انحطاط شعری دورهٔ صفویه:

شاعری از شعرای این دوره که شاید تا کنون کسی اسم او را نشنیده و لااقل نام او را قابل سپردن به ذهن ندانسته است به نام «غواصی یزدی» روزی پانصد بیت شعر می‌گفته و تا قریب به سن نود کار او همین بوده و چهل سال قبل از فوت خود می‌گفته:

ز شعرم آنچه حالا در حساب است

هزار و نهصد و پنجه کتاب است!

این گویندهٔ عدیم‌النظیر که به قول قائم‌مقام سلس‌القول داشته کتابهای روضة‌الشهدا و قصص‌الانبیا و تاریخ طبری و ذخیرهٔ خوارزمشاهی را به نظم آورده بود و تقی‌الدین از تمام گفته‌های این شاعر نامراد فقط همین مطلع را قابل ضبط دانسته که می‌گوید:

گر نه هر دم ز سر کوی توام اشک برد

عاشقیها کنم آنجا که فلک رشک برد

و همین یک بیت معرف مقام این گویندهٔ پرگو تواند شد.

تخلص شعری امام خمینی

یکی از دوستان زحمت کشیده و دیوان امام خمینی را برای گنجور رومیزی آماده کرده (اگر علاقمند بودید اینجا را ببینید).

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

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

منبع دیوان هم البته سایت امام خمینی است، این قسمت.