درسی از یک نرم افزار ۱۵ دقیقه ای

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

نرم افزار 15 دقیقه ای

به او گفتم کار سختی نیست. امتحان میکنم. بعد از آن در حدود ۱۵ دقیقه (زمان کار را با toggl.com ثبت کردم) توانستم برنامه ساده ای بنویسم که در درایو خاصی فایل های صوتی تکراری را پیدا کرده و در یک فایل متنی گزارشی به کاربر ارائه دهد.

دوستم از نرم افزار استفاده کرد و با توجه به این که تعداد فایها صوتی موجود در آرشیو او بسیار زیاد بود، این برنامه کمک زیادی در یافتن فایل های تکراری بر اساس نام، به او کرد.

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

عامل اصلی در موفقیت یک پروژه نرم افزاری استفاده درست از فناوری های موجود جهت رفع نیازهای اصلی کاربر هدف است.

در صورتی که نیاز اصلی کاربر رفع نشده باشد. واقعا مهم نیست که چه فناوری هایی و چه معماری های مرتبط و منظمی در نرم افزار استفاده شده است.

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

اخلاق برنامه نویسی: تمرین

مثل تمامی مشاغل برنامه نویس ها هم به تمرین نیاز دارند.  حتی شاید خیلی بیشتر. مطالعه فنی خیلی به برنامه نویس بهتر شدن کمک میکند ولی در کل تمرین کردن از همه چیز بهتر است.

برای تمرین راههای متفاوتی وجود دارد. ولی من به شخصه سوالات برنامه نویسی را ترجیح می دهم. سوالاتی که خیلی وقتا ها آدم را با مبانی و اصول اولیه برنامه نویسی آشتی می دهند!

همیشه یادگیری اصول و پایه زبان هایی که به صورت روزمره با آنها کار می کنیم در نوشتن کد های بهتر و کاراتر تاثیر مثبتی می گذارد.

برای تمرین یکی از بهترین راهها استفاده از online judge ها برای حل سوالات برنامه نویسی است.

چون سی شارپ یکی از زبان های مورد علاقه من هست و به طور کلی خیلی زیاد با آن در ارتباط هستم، همیشه دوست داشتم سیستمی وجود داشته باشد که بتوان سوالات را با سی شارپ حل کرد. چند سیستمی که خیلی قوی هم هستند زبان های جاوا و ++C را به طور عمده پشتیبانی می کنند. (UVA و …)

با یک مقدار جستجو دو تا سیستم خوب پیدا کردم که سی شارپ را هم به رسمیت میشناسند! (البته پیاده سازی mono را)

  • project euler   (زبان برنامه نویسی مهم نیست / بیشتر سوالات ریاضی وار)
    این وبسایت حدود ۵۰۰ سوال که بیشتر مبنای نظری ریاضیاتی دارند را مطرح کرده که به صورت فعال توسط برنامه نویسان مختلف در حال بررسی هستند. بر خلاف سیستم های استاندارد سوالات برنامه نویسی این سایت هیچ امکانی برای آپلود کد و اجرای کد سمت سرور ندارد. جواب سوالات هیشه یک عدد است که برنامه شما باید آن عدد را درست حساب کند.
  • spoj (زبان های زیادی را پشتیبانی می کند / سی شارپ هم پشتیبانی می کند / سوالات به سبک سوالات کلاسیک برنامه نویسی است)
    این موتور که تازه با آن آشنا شده ام سیستم جالبی است که خیلی کاربران فعالی هم دارد. زبان برنامه نویسی سی شارپ را هم پشتیبانی می کند که برای من امکان خیلی خوبی است! سوالات فراوان و بعضی وقت ها (اگر با زبانی مثل سی شارپ یا جاوا کار کنید) مشکلی دارد. با این که به تازگی آشنا شده ام با این سیستم به نظرم وقت گذاشتن و تمرین کردن سوالات این سایت گزینه مناسبی باشد.

کلا کد نوشتن خیلی به یک برنامه نویس بهتر شدن کمک میکند!

تمرین کنیم! (البته من هم تنبلم!)