برنامه نویسان جوان و کم تجربه (منظور از کم تجربه کسی است که حداقل دو سال سابقه ی برنامه نویسی داشته باشد) در زمان تصمیم گیری برای اینکه بخشی از برنامه را خودشان از صفر بنویسند یا از کتابخانه های آماده استفاده کنند، دچار شک و اشتباه می شوند.
مهمترین دلیل وسوسه ای که همواره برنامه نویسان را به سمت کدنویسی بیشتر هدایت می کند، حس لذت بردن از کدنویسی است و تقریبا همه ی برنامه نویسان در این حس مشترک هستند. البته عوامل دیگر مانند اینکه هر برنامه نویس خود را بهترین می داند و فکر می کند کسی بهتر از او نمی تواند کدنویسی کند هم تاثیرگذار است.
در گذشته برنامه ها بسیار ساده تر از زمان حال بودند و دو برنامه نویس با کمک هم سیستم عامل می نوشتند! اما روز به روز به پیچیدگی های برنامه ها افزوده شده و دیگر یک برنامه نویس نمی تواند همه ی دانش های موجود را یاد گرفته و به تنهایی پروژه های بزرگ را انجام دهد. مهمترین نکته که باید به آن دقت شود این است که «به ما برای کدنویسی و یا لذت بردن از کدنویسی پولی داده نمی شود، بلکه برای حل مشکلات مشتری با استفاده از یک نرم افزار پول می گیریم»
باید قبول کنیم که نرم افزار یک صنعت و تجارت می باشد، بعد هر خط کدنویسی باید این سوال را از خود بپرسیم «این خط کد چه کمکی به تجارت ما خواهد کرد؟». برخی برنامه نویسان از تعداد بالای خط های برنامه هایشان لذت می برند، اما باید بدانند هر خط کد اضافی باعث افزایش احتمال بوجود آمدن باگ های بیشتر و سخت تر کردن نگهداری برنامه در آینده می شود. ادامه …
سیستم های کنترل نسخه یا به اختصار vcsها در بیشتر موارد خود برنامه ای کامل و مستقل هستند که در مدیریت تغییرات اسناد، برنامه ها، عکس ها یا هر فایلی در کامپیوتر به ما کمک می کنند. تغییرات معمولا با کدی از حروف یا اعداد نشانه گذاری شده که به آن revision number یا revision گفته می شود.
ساده ترین استفاده از vcs ها زمانیست که بر روی فایل خود تغییراتی به اشتباه انجام داده اید و می توانید فایل خود را به نسخه های قبل بازگردانده و دوباره کار را بر روی فایل شروع کنید. به وسیله ی vcs ها اگر چند نفر یک فایل را ویرایش می کنند، می توان مسیر تغییرات را پیگیری کرد و هر نفر از ویرایش های دیگران آگاه شود، این امکان به افراد اجازه می دهد تا اشتباه های یکدیگر را تصحیح کنند و حتی در محیط هایی مانند ویکی پدیا از خرابکاری جلوگیری کنند.
هر تغییر می تواند در اندازه ی اصلاح یک غلط املایی در فایل متنی تا refactoring (هر چقدر فکر کردم معادل فارسی برای این کلمه پیدا کنم، چیزی به ذهنم نرسید) یک پروژه که بر روی صدها فایل تاثیر بگذارد، باشد. با هر تغییر در vcs، اطلاعاتی مانند زمان تغییر، نام تغییر دهنده، متن کوتاهی برای توضیح و … ذخیره می شود.
سیستم های کنترل نسخه دارای دو نوع متمرکز مانند SVN و توزیع شده مانند Git هستند که تفاوت آن ها در نحوه ی ذخیره اطلاعات می باشد و همین قضیه باعث معایب و مزایای آنها نسبت به یکدیگر می شود. برای مثال در نوع متمرکز تمام اطلاعات بر روی یک سرور ذخیره شده و همه افراد برای ثبت هرگونه تغییر در فایل ها باید به سرور متصل باشند و اگر سرور در دسترس نباشد نمی توان تغییری را ثبت کرد. اما در مدل توزیع شده هر نفر دیتابیس کاملی از همه ی اطلاعات را در اختیار دارد و هر زمان که کار ویرایشش با فایل تمام شد، آن را با سرور همگان سازی می کند. این قابلیت کمک می کند اگر سرور هم دسترس نبود اطلاعات در دیتابیس محلی ذخیره شده تا در زمانی که ارتباط با سرور برقرار شد اطلاعات به هنگام شوند. ادامه …
به رسم یک قانون نانوشته اما اجرایی در آموزش برنامه نویسی، ما هم آموزش خود را با hello world! ها آغاز می کنیم. اما به جای معرفی چند دستور برای چاپ این عبارت بر روی مانیتور، این عبارت را تبدیل به hello programming world! کرده و درباره اش حرف می زنیم.
سلام دنیای برنامه نویسی!
نمی دانم شما چه فکر می کنید ولی از نظر من واژه ی دنیا کاملا برای برنامه نویسی مناسب است. دنیایی که در هر شاخه از آن فعالیت کنید به انتها نمی رسید و هر چه جلوتر بروید بیشتر در آن غرق می شوید و لذت می برید.
ورود به این دنیا بسیار راحت است. با یاد گرفتن یک زبان مانند سی شارپ در عرض یکی دو ماه و یادگیری اطلاعات پایه ای در مورد پایگاه داده ها می توانید برنامه های تجاری درست کنید و حتی به درآمدی هم برسید. این دقیقا همان کاری است که ایرانی ها در آن به شدت استاد هستند و اثراتش هم در صنعت نرم افزار ایران کاملا قابل مشاهده است. ادامه …
سلام به همه ی خوانندگان عزیز!
احتمالا واژه ی “همه” کمی اغراق دارد چون با توجه به تیتر این بخش که “مقدمه” می باشد و اصولا مقدمه هم برای ما جزئی از بخش های اضافی و قابل حذف از مقاله ها، کتاب هاو … است و عده ی زیادی این بخش را مطالعه نمی کنند. البته این تیتر را نیز با نیت قبلی انتخاب کردم تا اگر کسی عجله دارد، وقتش با صحبت های من تلف نشود.
این مقدمه که شما در حال مطالعه ی آن می باشید، مقدمه ی یک سری از مقالات آموزشی به نام “مفاهیم برنامه نویسی” می باشد. ذکر لغت “مفاهیم” فقط برای زیبایی تیتر این آموزش ها نبوده و نشان می دهد که تمرکز اصلی این مقالات “مفاهیم برنامه نویسی” است و فقط ساختار دستورات برنامه نویسی نیست. در طول آموزش ها تاکید خاصی بر روی هیچ یک از زبان های برنامه نویسی وجود ندارد، چون همه ی آن ها موضوعاتی را که ما به آنها می پردازیم را شامل می شوند، اما به علت آشنایی بیشتر من با زبان سی شارپ، اگر در جایی نیاز به مثال بود، مثال ها با زبان سی شارپ پیاده سازی می شوند.
تمام مطالب این سری از مقالات، تجربه و برداشت شخصی من از برنامه نویسی بوده و امکان اشتباه در آن وجود دارد. پس با آغوش باز اصلاحیه های شما را برای تصحیح و یا حتی گویاتر شدن توضیحات پذیرا هستم.
این آموزش ها برای افراد زیر مفید نیستند:
- برنامه نویسی را به طور کامل بلد هستند.
- برنامه نویسی بلد نیستند، اما فقط می خواهند برای انجام یک پروژه ی خاص سریعا یاد بگیرند.
- برنامه نویسی بلد نیستند و نمی خواهند هم یاد بگیرند.
این آموزش ها برای افراد زیر مفید هستند:
- برنامه نویسی بلد نیستند و می خواهند از صفر شروع کنند.
- برنامه نویسی را به طور اجبار در مدت اندکی یاد گرفته اند (اشاره غیر مستقیم به دانشگاه ها)، اما چیزی بلد نیستند.
دلیل نوشتن این مقالات آموزشی ربطی به جمع آوری بازدیدکننده، درآمدزایی و شهرت نداشته است (که اگر هم داشت عمرا به هدفم می رسیدم!) و صرفا برای لذتی که از این کار می برم شروع به نوشتن کرده ام. امیدوارم بتوانم این لذت را به شما عزیزان منتقل کنم.