البته که نه! برنامهنویسی با C# و به کمک سکوی .NET آسانتر است. بحث اینجا البته نه C++ است نه C#، نه سکوی .NET و نه حتی برنامهنویسی.
خواستم نکتهای را که مدتی پیش یاد گرفتهام به شما هم یاد بدهم. سعی کنید عنوان این مطلب را در Notepad ویندوز تایپ کنید. ابتدا آن را راست به چپ کنید و تایپ کنید «برنامهنویسی با C++ آسان است.» چه اتفاقی میافتد؟
چرا این اتفاق میافتد؟ آیا این ایراد نرمافزاری نوتپد است؟ من چنین تصوری داشتم و مطلب را در انجمن رایانش فارسی سؤال کردم (اینجا). پاسخ آن است که خیر این یک ایراد نیست. بر طبق الگوریتم دوسونویسی استاندارد یونیکد (UBA) نویسههایی مانند + و # کمتوان محسوب میشوند و جهت آنها در متن توسط نویسهٔ پرتوان بعدی آنها تعیین میشود. به همین جهت اضافه کردن یک نویسهٔ پرتوان استاندارد غیرقابل مشاهده مثل نویسهٔ LRM (Left-to-Right Mark) (قابل تایپ توسط Ctrl+Shift+3 در صفحهکلید استاندارد ویندوز در حالتی که صفحهکلید فارسی است) مشکل را حل میکند (برنامهنویسی با C++<LRM> آسان است).
نظیر همین مشکل برای تایپ «سکوی .NET» وجود دارد، در این مورد باید نویسهٔ کنترلی را پیش از نقطه گذاشت. البته من راجع به دلیلش مطمئن نیستم. طبق چیزی که بالا نقل کردم باید نویسهٔ بعدی نقطه جهت را چپ به راست میکرد، اما این گونه نمیشود و نیاز است قبل از آن نویسهٔ کنترلی بگذاریم. احتمالاً دلیلش با بررسی مستندات UBA مشخص میشود. اگر از دوستان کسی دلیلش را میداند بنویسد (بعدنوشت: جوابش را آقای سید رضی داد: اینجا).
علاوه بر این از نویسههای کنترلی LRM و RLM برای تایپ ممیزهای بین اعداد تاریخ طوری که در مرورگرهای مختلف متن نهایی یکسان دیده شود میتوان استفاده کرد. گویا مایکروسافت ورد این نویسهها را به صورت خودکار در جای لازم درج میکند و به همین دلیل کسانی که با ورد تایپ میکنند احتمالاً این مشکل را زیاد مشاهده نکردهاند.
دنبالهٔ ۱
پیرو بحث پاراگراف اول دربارهٔ تقابل C++ و C#، بارها دوستان تقاضا کردهاند گنجور رومیزی را روی لینوکس یا مکاوس بتوانند اجرا کنند. من پیشتر دنبال راه حلهایی مانند مونو بودم (اینجا را ببینید) که به نتیجه نرسید. با ویرایشهای جدیدتر مونو حتی در حد همان دلخوشکنک ابتدایی نمایش پنجرهٔ برنامه هم، برنامه اجرا نمیشود. آقای سیدرضی علویزاده در حال تهیهٔ برنامهای سازگار با پایگاه دادههای گنجور رومیزی با استفاده از Qt هستند که تحت سه سیستم عامل ویندوز، لینوکس و مک اجرا میشود. اطلاعات بیشتر راجع به «ساغر» را اینجا بخوانید و تصاویری از آن را ببینید.
دنبالهٔ ۲
از آنجا که حدس میزنم عنوان نوشته اغواگر جستجوگران اینترنتی «C++ آسان» باشد سایت پیسیکدنویس را به این دسته از مشتریان نوشته توصیه میکنم.
دنبالهٔ ۳
در راستای دنبالهٔ ۱ و بر اساس دلایلی که در اینجا راجع به آن صحبت کردهام صفحهٔ فیسبوک گنجور را راهاندازی کردهام (http://www.facebook.com/ganjoor). اگر اهل فیسبوک هستید و به گنجور علاقه دارید سری به آن بزنید و آن را به دوستانتان بشناسانید.
دنبالهٔ ۴
این نوشته را تقدیم میکنم به شیخنا.
در واقع دلیل اینکه در .Net باید قبل از نویسه LRM را اضافه کنیم ربطی به LRM ندارد بلکه مربوط به عبارتی است که میخواهیم LTR به حساب آید در واقع LRM و RLM روی نویسه ضعیف قبل و بعد از خود تاثیر میگذارند، توضیح سادهتر اینکه LRM مانند نویسه «a» عمل میکند اما بدون پهنا و RLM مانند نویسه «آ» عمل میکند اما بدون پهنا!
یک مثال نوشتن «سی++» در محیط LTR است
در ضمن در بسیاری از ویرایشگرهای یونیکد استاندارد از جمله Notepad این نویسهها که به نویسههای کنترلی یونیکد معروفند در منوی کلیک راست و در زیرمنوی Insert Unicode control character در دسترسند.
اتفاقا در صفحه http://www.pojh.co.cc/qbidiextender/ پروژهای را که در همین باره و خودکار کردن اضافه کردن نویسههای کنترلی یونیکد انجام دادهام میتوانید ببینید.
موفق باشید.
@سیدرضی:
ممنون که سؤال من رو جواب دادید.
مشابه همین مشکل تایپ ++C در Notepad، هنگام تایپ همزمان فارسی- انگلیسی در فیسبوک هم پیش می آید که متن را کاملا به هم میریزد. آیا راهکاری برای حل این مشکل در کامنتهای فیسبوک وجود دارد؟
با تشکر
@علی:
بله !! صفحه کلید استاندارد فارسی استفاده کنید، در همه جا مشکل حل خواهد شد. دو لینک زیر را ببینید.
http://weblog.aqlinux.ir/?p=111
http://azadrah.net/2011/08/persian-standard-keyborad-2
این صفحه کلید رو به دوستاتون معرفی کنید!