برنامه نویس کیه و علم برنامه نویسی چیه؟

2018-11-29
10 دقیقه مطالعه

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

programmer

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

یک برنامه نویس هم کسی هست که در مرحله‌ی اول بدونه می‌خواد چیکار کنه و بعدش کار رو شروع کنه و در حین کار توانایی حل مسائلی که براش پیش میاد رو داشته باشه. زبان برنامه نویسی هم اینجا حکم همون آچاره رو داره یعنی براش یک ابزاره که بتونه با اون کارش رو انجام بده. پس لزوما بلد بودن یک زبان برنامه نویسی دلیل بر برنامه نویس بودن نیست.

حالا برسیم به نکته‌ای که برای خیلیایی که از دور به قضیه نگاه می‌کنن یه چیز ترسناک به نظر می‌رسه و اون مبحث “توانایی حل مسئله”‌ست. در این مورد باید دو تا موضوع مهم رو در نظر بگیریم:

اولیش اینه که برای حل یک مسئله لازمه که اطلاعات و دانش کافی در مورد موضوعش داشته باشیم. بدون دانش در زمینه‌ی موضوعِ مسئله، تقریبا حل کردنش غیر ممکنه! پس قبل از هر چیز باید دنبال دانش در مورد کاری که می‌خواین انجام بدین باشین. هر چند ممکنه این کلمه‌ی علم یا دانش یه مقدار خیلی سنگین به نظر بیاد و پیش خودتون فکر کنین کار خیلی سختیه‌! اما میشه گفت اینطور نیست. شما لازم نیست تمام مباحث راجع به یه موضوعی رو که مسئله بهش مربوط میشه برای حل کردنش یاد بگیرین. توی بیشتر شرایط کافیه فقط قسمت‌های خاصی که دقیقا به همون مسئله‌ی خاص شما مربوط میشه رو به همراه پیش نیازهاش‌ یاد بگیرین.

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

وقتی یه مسئله‌ی نسبتا جدی دارین و علم حل کردنش رو هم دارین اما نمی‌تونین مستقیم اون رو از مغزتون به برنامه تبدیل کنین، کافیه بیاین شروع کنین روش حل کردنش رو به صورت مرحله به مرحله بنویسین. بعد از این مرحله شما الگوریتم رو دارین و کافیه با زبان برنامه نویسی مورد نظرتون اون رو به برنامه تبدیل کنین.

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

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

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

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

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

پس تا اینجا فهمیدیم زبان‌های برنامه نویسی صرفا یک ابزار هستن و نمیشه به عنوان علم برنامه نویسی ازشون یاد کرد. علم برنامه نویسی به صورت خیلی خلاصه، توانایی حل مسئله و اجرا کردنشه و برنامه نویس کسی هست که این توانایی رو داره و در این مسیر با استفاده از ابزارهایی مثل زبان برنامه نویسی، کتابخونه‌ها و … کارش رو انجام میده و یا راحت‌تر می‌کنه. البته این به معنا نیست که بلد بودن یک زبان برنامه نویسی علم حساب نشه، اما در واقع علم برنامه نویسی حساب نمیشه و همون‌طور که گفتم عموما علم استفاده از ابزار محسوب میشه.


سورس این پست رو می‌تونین از اینجا ببینین :)