احساس کردم که مطلب "برنامه نویسی را از کجا آغاز کنم؟" به کمی بررسی بیشتر نیاز دارد، لذا تصمیم به بازنویسی این مطلب گرفتم.
لازم است قبل از هر چیز بگویم که من صرفا نظرات خودم را به جهت کمک به برنامه نویسان تازهوارد مطرح می کنم. در این مطلب به بررسی و راهنمایی برنامه نویسان تازهوارد می پردازیم تا علاقه مندان به این هنرِ فنی در رایانه راه خود را بیابند.
بسیاری از دوستان و اطرافیان من می پرسند که برنامه نویسی چیست و باید از کجا شروع کنیم. در واقع همین پرسش های بسیار انگیزهی من برای نوشتن این مطلب بوده است.
برنامهنویسی برای درآمد زایی
شاید هدف شما از آغاز برنامه نویسی درآمد زایی باشد. باید بگویم که برنامه نویسی مانند نویسندگی کتاب (ولی با درآمدی بیشتر نسبت به نویسندگان در ایران با توجه به سرانه مطالعه) درآمد خوبی نسبت به آسودگی شغلی دارد که این خود یکی از بهترین امتیازات این حرفه محسوب می شود. برنامه نویسان عموما نیاز به محیطی خاص و یا امکانات خارق العاده ای ندارند و حتی در محیط خانه و تنها با سیستمی متوسط نیز میتوان برنامه نویسی کرد. به طور کل نمی توانم بگویم که کدام یک از رشته های برنامهنویسی (تحت وب، سیستمی و یا اندروید) درآمد زایی بهتر دارد زیرا باید بگویم که ایده راز اصلی درآمد زایی است چرا که با داشتن ایده هایی ناب می توان در هر رشته ای درآمد زایی کرد ولی با توجه به فراگیر شدن گوشی های اندرویدی میتوان گفت که پتانسیل بهتری برای درآمد زایی دارد.
زبان های برنامه نویسی
اگر ذهنیتی از زبان های برنامه نوسیس ندارید باید بگویم همانطور که ما انسان ها برای صحبت کردن و فرمان دادن و انتقال مفاهیم نیاز به زبان ها داریم برای انقال مفاهی به رایانه ها نیز نیاز داریم زبان این موجودات را بلد باشیم؛ که با توجه به منطقی بودن رایانه ها یعنی استفاده از ریاضیات و جبر های منطقی باید بگویم که زبان ماشین که زبان اصلی ارتباط با انواع رایانه ها است پیچیدگی های خود را دارد که برای همه افراد قابل درک نیست و طرفداران خاص خود را دارد.
ولی در سیر تکامل رایانه ها زبان های دیگری نیز توسط مهندسین و دانشمندان ساخته شدند تا کار را برای برنامهنویسان سادهتر کنند. این زبان ها هر کدام به شکلهای مختلف در نهایت به همان زبان ماشین تبدیل (ترجمه) می شوند که برای این کار برای هر زبان کامپایلر (compiler) هایی ساخته شده تا این چنین زبانها را با استفاده از محاسبات به کد های قابل فهم برای رایانه تبدیل کنند. زبانهای برنامهنویسی بر حسب نزدیکی به زبان انسان ها به سه سطح، بالا، متوسط (میانی) و پایین تقسیم میشوند. زبان ماشین یک زبان سطح پایین است. البته سطوح مختلف تنها از نظر راحتی فهم دسته بندی می شوند.
با یک جست و جو ساده می توان متوجه شد که چندین و چند زبان برنامه نویسی در جهان وجود دارد که هر کدام امتیازات خود را دارند.
ورود به جهان برنامه نویسان
-رایانه را درک کنیم
قبل از هر چیز برنامه نویسان نیاز دارند تا با مبانی رایانه آشنایی پیدا کنند، این مبانی شامل اصول کار رایانه است. این دانش به برنامه نویسان کمک می کند تا درک عمیق تری از چگونگی کارکرد برنامه هایشان داشته باشند. هر چند بودند برنامه نویسانی که در ابتدا بدون دانش از مبانی رایانه صرفا به یادگیری برنامه نویسی پرداختهاند (مثل خودم و آقای کریمی زاده) ولی بعد از گذشت مدتی مجبور به افزایش دانش در مورد مبانی رایانه شدند.
-الگو را درک کنیم
برنامه نویس باید بتواند پدیده ها را به صورت یک الگوی کلی تفسیر کند. به طور مثال برای نوشتن برنامه ای برای وارونه کردن جملات وارد شده باید به جای وارد کردن یک لیست بلند بالا از تمام جملات موجود، باید تنها و تنها یک الگوی صادق برای تمام جملات نوشت، یا برای پیدا کردن اعداد فرد باید از باقی مانده تقسیم اعداد بر دو استفاده کرد؛ البته همه این مثال ها تنها مثال هایی ساده برای درک بهتر بودند ولی این را بدانید که برنامهنویس همواره به دنبال سریع ترین، سبک ترین و بی نقص ترین الگو هاست و اساساً چالش های برنامه نویسی نیز بر همین اساس هستند. البته این موضوع نباید باعث ترسیدن برنامه نویسان تازه وارد شود زیرا بعد ها که وارد دنیای برنامه نویسی شوید یافتن الگو ها و پیاده سازی آن ها ساده تر خواهد بود.
-تعهد
برنامه نویس موفق باید به برنامه نویسی متعهد باشد. یعنی با وجود چالش های فراوان در نوشتن یک نرم افزار با آنها رو به رو شود و به جای کنار گذاشتنآن به دنبال حل مسئله ها باشد.
-همواره به دنبال یادگیری باشد
دنیای برنامه نویسی هیچ حد و مرزی ندارد، همواره سعی کنید در اینترنت یا کتاب به دنبال یادگیری هر چه بیشتر درمورد زبان مورد نظرتان یا الگو (الگوریتم) های جدید باشد. پیشنهاد می کنم هر کدی را که در اینترنت پیدا می کنید در جایی برای خود نگه دارید و سعی کنید آن ها را چند بار تمرین کنید تا به خوبی با چگونگی کارکرد آن ها آشنا شوید و آن ها را درک کنید نه این که حفظ کنید.
-در مورد زبان ها بخوانید
زبان های برنامه نویسی بسیار زیادند ولی سعی کنید در مورد زبان های معروف اطلاعاتی کسب کنید. شاید زبان دیگری باشد که به شما حس بهتری یدهد و با آن راحت تر باشید پس به دنبال یادگیری آن بروید. البته مراقب باشید که از این شاخه به آن شاخه نپرید و بعد از یادگیری یک زبان در حد متوسط یا کامل به سراغ زبان دیگر بروید.
-ابتکار راز موفقیت
سعی کنید همواره مبتکر باشید. ابتکار سبب بهتر شدن کد هایتان می شود. هر کار درستی که فکر می کنید برای افزایش ابتکارتان مناسب است انجام دهید؛ این کار ها می تواند شامل بازی کردن هم بشود. ذهن انسان می تواند با بازی کردن قدرت خود را افزایش دهد.
یک برنامه پیشنهادی برای یادگیری زبان
برای آن که بخواهید برنامه نویس شوید ابتدا نیاز دارید تا زبانی را به عنوان زبان پایه خود در نظر بگیرید تا با استفاده از آن زبان با مفاهیم اولیهی برنامه نویسی آشنا شوید، سپس میتوانید برای یادگیری یک زبان دیگر که می پسندید اقدام کنید. بعد از آن که با مبانی رایانه آشنایی پیدا کردید بسته به سیستم عامل مورد نظرتان می توانید زبان برنامه نویسی خود را انتخاب کنید، چرا که برخی زبانها برای برخی سیستم عامل ها راحتتر است؛ به طور مثال زبان پایتون به طور پیش فرض بر روی اکثر سیستمعاملهای لینوکسی بصورت پیشفرض نصب است.ولی برای سیستمعامل ویندوز باید قبل از اجرای کد به زبان پایتون نرم افزار اجرا کننده آن را نیز نصب کرد؛ این در حالی است که برنامه ها به زبان C می توانند برای هر دو سیستم عامل ساخته شود.
-بدانید که می خواهید چه کار کنید
لازم است ابتدا هدفی برای خود در نظر بگیرید تا با توجه به آن یک زبان را انتخاب کنید. این بهترین راه انتخاب یک زبان است. اگر نمی دانید کدام سیستم عامل برای برنامه نویسی بهتر است باید بگویم که دنیای گنو لینوکس (GNU \ Linux) مخصوص برنامه نویس هاست. تا آنجا که من میدانم همه زبانها در این دنیا رایج است. اگر لینوکسی هستید یا می خواهید لینوکسی شوید پایتون (Python) برای شروع خوب است. اما اگر ویندوزی هستید انتخاب های محدودی برای شروع هست که زبان های خانواده دات نت (Net.) یعنی دو زبان ویژوال بیسیک (Visual Basic .Net) و زبان سی شارپ (C# .Net) است. البته استفاده زبان های دیگر مانند پایتون یا لوآ (Lua) در ویندوز غیر ممکن نیست و با نصب پیش نیاز ها قابل اجرا هستند. به طور کل نمی توان برنامه ای همگانی نوشت که از زبانی شروع و به زبانی ختم شود ولی می توانم به چند نکته اشاره کنم.
- اگر به دنبال برنامه نویسی برای گوشی ها هستید (چه گوشی های هوشمند و چه غیر هوشمند) زبان جاوا را یاد بگیرید.
- جستوجو کنید و در مورد زبان ها اطلاعات کسب کنید.
- اگر نمی توانید فرقی میان زبان ها درک کنید دست کم یک زبان پایتون یا #C را یاد بگیرید. (پیشنهادات شخصی هستند. اگر نظری دارید بگذارید)
- اگر چالش را دوست دارید بعد از آشنایی با برنامه نویسی زبان های چالش بر انگیزی مانند white space و brain f**k شاید برایتان جالب باشد.
- هرگز در برنامه نویسی به دنبال اهدافی زشت و کثیف مانند ساخت بدافزار، کرک (Crack) و ... نباشید چرا که هرگز به مقصود خود نخواهید رسید!(یا خواهید رسید اما عذاب وجدان و ترس از پلیس و ... رهایتان نمیکند!)
- گوشه گیر نباشید. کد های خود را با دیگران به اشتراک بگذارید و کد های دیگران را بخوانید. بگذارید تا دیگران نیز کد های شما را اصلاح کنند؛ شاید چیز های جدید تری یاد بگیرید.
- مسئله حل کنید. مسائل به شما کمک می کنند تا بتوانید بهترین الگو ها را پیدا کنید تا برنامه های بهتر بنویسید. برای حل مسائل روش های گوناگونی هست مثلا سایت Codingame.com
- جستوجوگر باشید. اینترنت منبع بزرگی از کد ها هست. می توانید برای هر چیزی از عمو گوگل کمک بگیرید.
- انگلیسی جست و جو کنید. تجربه ثابت کرده نتایج یافت شده به زبان انگلیسی بسیار کاربردی تر هستند می توانید از مثال زیر استفاده کیند.
(?How to write bubble sorting in c# language)
(?#How to sum all numbers of an integer in c)
- از برنامه نویسی آزاد حمایت کنید و انحصارگری را کنار بگذارید؛ چرا که برنامه نویسی آزاد به بهبود پروژه های شما کمک می کند.
- اگر محصل هستید دست نگه دارید. برنامه نویسی سیاه چاله ای است که شما را به بُعد دیگری می برد و از درس و مشق دور می اندازد. افراد کمی هستند که می توانند جان سالم به در ببرند!
- علاوه بر زبان های هم خانواده با C دست کم یک زبان خارج از این خانواده را تجربه کنید، این را بزرگتر ها یعنی جناب اریک ریموند در مقاله چگونه یک هکر شویم توصیه می کنند.
در انتها باید بگویم که دنیای برنامه نویسی دنیایی با فراز فرود ها و چالش های بسیاری است که برای انسان هایی که در این دنیا زندگی می کنند این چالش ها همان زندگی است. افرادی که می توانند با تلاش کلید ورود به این دنیا را بیابند می توانند با برنامه هایشان سبک زندگی دیگران را تعیین کنند و به زندگی هایشان حد و مرز بدهند. برنامه نویسان درک دیگری از زندگی روزمره دارند که سبب شکل گیری آینده می شوند. پس اگر می خواهید به این جهان بپیوندید، خوش آمدید!
راستی فاروق کجاست؟ خیلی وقته نیست.