Skip to main content

Command Palette

Search for a command to run...

پروژهٔ نگار و مصائبش

Published
4 min read

نگار با پایتون نوشته شده‌، اما به احتمال زیاد کتابخانهٔ ویرایشش به چند زبان دیگر (نظیر PHP و javascript برگردانده خواهد شد). از این رو نگار روی [گیت‌هاب](https://github.com/shahinism/Negar "negar on github") منتشر می‌شود و شدیدا پذیرای ایده‌های نو و صد البته همکاری شما در توسعه‌اش است‌.

و از همه مهمتر این که نگار توسط یک تازه‌کار در حال توسعه است و می‌تواند کمک خوبی برای تازه‌کاران یا مشتاقان یادگیری برنامه نویسی باشد‌.

مصائب توسعه نگار

آن‌هایی که مرا از نزدیک می‌شناسند احتمالا می‌دانند که مدت‌هاست مشتاقم که برنامه‌نویس شوم ولی درصدی تنبلی و درصدی دیگر پیچیدگی امر برنامه‌نویسی مانع از رسیدن به این علاقه‌ام شده‌. بار‌ها به سمت زبان‌های C‎+‎+‎‌، C، PHP، Javascript و ... کشیده شده‌ام‌، سینتکس‌شان را یادگرفته‌ام‌، تعدادی مسائل و الگوریتم پایه‌ای را حل کرده‌ام ولی آخر سر نتوانسته‌ام که به خودم اجازهٔ برنامه‌نویس بودن بدهم D:

خوبی این تلاش‌های به بن‌بست رسیده برایم این بوده که بفهمم برنامه‌نویسی را توی کتاب‌ها یاد نمی‌دهند D: (البته منظورم سینتکس و این‌ها نیست‌ها!). یاد گرفتن واقعی از وقتی شروع می‌شود که شروع به نوشتن پروژه‌ای می‌کنید‌. ایدهٔ توسعهٔ نگار را مدت زیادی بود که در سر می‌پروراندم‌. خصوصا از وقتی که ایمان [ویراستیار](http://virastyar.ir "ویراستیار") را به عنوان جایگزینی برای [ویراستباز](http://virasbaz.persianlanguage.ir/ "ویراسباز") که من استفاده می‌کردم معرفی کرد و گفت که ای کاش یک نسخهٔ کلاینت هم برای این کار روی لینوکس بود‌. (درست که ویراستیار یک نسخهٔ کلاینت دارد‌، ولی آن با زبان جهنمی C#‎ نوشته شده که نصبش برای من هفت خوان می‌طلبد!)

این اشتیاق به قوت خودش باقی ماند تا این که کتاب یک بایت از پایتون را تمام کردم‌. کتاب خیلی خوبی بود‌‌ و خیلی از مسائل را به سادگی و روشنی توضیح می‌داد‌. این بود که ما هم جو این که هر کاری را می‌توانیم به راحتی با پایتون انجام دهیم گرفتمان و زدیم به کار نوشتن نگار‌!

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

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

کار از آن چیزی که به نظر می‌رسید سخت‌تر بود‌. تفاوت‌های زبان روبی و پایتون گاها در سینتکس خیلی کوچک بودند ولی در عملکرد زمین تا آسمان متفاوت بودند‌.

نکته‌ای که بیش از همه به نظرم جالب آمد طرز تفکر من نسبت به عبارات باقائده بود‌. قبلا در وبلاگ دوست خوبم علی با آن‌ها آشنا شده بودم‌. ولی زیاد دل به یاد گرفتن‌شان ندادم و فکر هم نمی‌کردم آن‌چنان دانستن‌شان به کارم بیاید‌. حقیقتش را بخواهید بیش از ۹۰ درصد ویراستار نگار بر پایهٔ همین regex‌ها بنا شده ;-)

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

کمک‌های Stackoverflow و Github

این که می‌گویند همیشه ابزار درست نتیجه را بهتر می‌کند (نقل از خودم) حقیقت محض است‌. در حین نوشتن نگار به مشکلاتی بر می‌خوردم که هیچ‌جوره با منطقم جور در نمی‌آمد‌. سرچ در گوگل هم خصوصا این که با فارسی در ارتباط بود و طبیعتا نمی‌شود دلی به نتایجش خوش کرد چندان فایده‌ای نداشت‌ (البته چند باری به جای فارسی دنبال Arabic‌ها گشتم که راهنمایی‌های خوبی برای یونیکد نوشتن در پایتون به دست آوردم). در چنین شرایطی بود که stackoverflow و کاربرانش به دادم رسیدند‌. دو سوالی که پرسیدم را آن‌چنان کامل و متناسب با شرایط مختلف جواب دادند که عمرا نمی‌شود در هیچ کتابی به این صراحت جوابی پیدا کرد D:

اما حل مشکلات به این راحتی‌ها هم نبود‌. بار‌ها پیش می‌آمد که شروع به ویرایش یک تابع می‌کردم و آن‌قدر تغییر می‌دادم که در نهایت نه ایده‌هایم برای حل مشکل کارساز بود و هم کل کد را خراب کرده بودم‌. این‌جا بود که Git کمک می‌کرد‌. فوق‌العاده است‌. فوق‌العاده‌. کدام ابزار دیگری را می‌شناسید که هم یک ورژن کنترل عالی باشد‌، هم به راحتی قابلیت مستندسازی پروژه را دو دستی تقدیمتان کند؟ (منظورم wiki و page است). در آینده بیشتر در مورد شگفتی‌های گیت و مخصوصا گیت‌هاب می‌نویسم‌!

نتیجه:

نتیجهٔ کار که دیگر معلوم است‌. اما در آخر باز هم اعلام می‌کنم که اگر علاقه به همکاری در یک پروژهٔ آزاد فارسی دارید تنها زحمتی که باید به خودتان بدهید‌، این است که پروژه را از گیت‌هاب فورک کنید ;-)

More from this blog

معجون بهشتی Selenium, PhantomJS و Requests برای web scraping

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

Oct 15, 20168 min read

ورژن کنترل اختیاری نیست!

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

Dec 27, 20154 min read

خوبی‌های جاوا اسکریپت؟

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

Jul 8, 20153 min read

کدنویسی بازی جاوااسکریپت به صورت زنده توسط Mary Rose

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

Oct 8, 20141 min read

برنامه نویسی کرنل لینوکس با راهنمایی The Eudyptula Challenge

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

Oct 1, 20143 min read

وبلاگ شاهین

221 posts