گزیر

::گاهنوشتهای حمیدرضا محمدی::

دربارهٔ من:

آخرین نظردهندگان:

مشترک شوید:

ایمیل خود را در جعبهٔ زیر وارد کنید و دکمهٔ اشتراک را بزنید.

جستجو:

Valid XHTML 1.0 Transitional RSS Feed

برنامه‌نویسی با C++‎ آسان است؟!

۸۹/۰۹/۱۸

البته که نه! برنامه‌نویسی با C#‎ و به کمک سکوی ‎.NET آسان‌تر است. بحث اینجا البته نه C++‎ است نه C#‎، نه سکوی ‎.NET و نه حتی برنامه‌نویسی.

خواستم نکته‌ای را که مدتی پیش یاد گرفته‌ام به شما هم یاد بدهم. سعی کنید عنوان این مطلب را در Notepad ویندوز تایپ کنید. ابتدا آن را راست به چپ کنید و تایپ کنید «برنامه‌نویسی با C++‎ آسان است.» چه اتفاقی می‌افتد؟

جهت C++‎ در جملهٔ تایپ شده درست نیست

چرا این اتفاق می‌افتد؟ آیا این ایراد نرم‌افزاری نوت‌پد است؟ من چنین تصوری داشتم و مطلب را در انجمن رایانش فارسی سؤال کردم (اینجا). پاسخ آن است که خیر این یک ایراد نیست. بر طبق الگوریتم دوسونویسی استاندارد یونیکد (UBA) نویسههایی مانند + و # کم‌توان محسوب می‌شوند و جهت آنها در متن توسط نویسهٔ پرتوان بعدی آنها تعیین می‌شود. به همین جهت اضافه کردن یک نویسهٔ پرتوان استاندارد غیرقابل مشاهده مثل نویسهٔ LRM (Left-to-Right Mark)‎ (قابل تایپ توسط Ctrl+Shift+3 در صفحه‌کلید استاندارد ویندوز در حالتی که صفحه‌کلید فارسی است) مشکل را حل می‌کند (برنامه‌نویسی با C++<LRM>‎ آسان است).

جهت 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/per.....keyborad-2

این صفحه کلید رو به دوستاتون معرفی کنید!

خروجی آر.اس.اس نظرات این نوشته:»

ارسال نظر برای این نوشته امکانپذیر نیست.