نود و هفت چیزی که هر برنامه‌نویسی باید بداند: یادگیری هم‌زمان بیش از یک زبان برنامه‌نویسی


فلسفه ی برنامه نویسی حاکی از آن است که «مهارت برنامه نویسی مستقیماً وابسته به پارادایم های مختلف برنامه نویسی که یک برنامه نویس برای کدنویسی مورد استفاده قرار می‌دهد و با آن‌ها احساس راحتی می‌کند است نه دانش اندکی که وی ممکن است از یک زبان برنامه نویسی دیگر داشته باشد!»

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

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

در‌ واقع پارادایم های برنامه نویسی مختلف من جمله Procedural یا رویه یی، Object-oriented یا شیء گرا، Functional یا تابعی و … وجود دارند که از لحاظ ساختاری دارای تفاوت‌هایی با یکدیگر هستند و در صورت مهاجرت در میان این پارادایم ها، می بایست منتظر چالش های فراوانی هم باشیم!

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

به طور کلی، برنامه نویسان حرفه یی از یادگیری زبان‌های جدید اصلاً واهمه یی به خود راه نمی‌دهند و علاقمند به یادگیری زبان‌های جدید هستند؛ حتی اگر در کدنویسی روزمره ی خود، صرفاً از یک زبان برنامه نویسی استفاده کنند باز هم مشتاق به یادگیری زبان‌های دیگر هستند چرا که می‌دانند سایر زبان‌ها -مخصوصا اگر از پارادایم متفاوتی نسبت به آنچه زبان فعلی شان ارائه می‌کند- نگرش متفاوتی برای حل مسأله در اختیار ایشان قرار می‌دهند.

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

در پایان هم می بایست این نکته را یادآور شد که یادگیری یک زبان صرفاً به یادگیری سینتکس اش و نوشتن یک برنامه ی Hello World خلاصه نمی‌شود بلکه نیاز به ماه ها کار مستمر و نوشتن پروژه های مختلف با آن زبان و درگیر شدن با بخش‌های مختلف زبان دارد.

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
Nirvana
Nirvana
این قسمت واقعا عالی بود. دوستان در مورد فلسفه برنامه نویسی منبعی سراغ دارین معرفی کنین؟ ممنون
محسن
محسن
به نظر من
برنامه نویسی مثل رانندگی می مونه، یک سری اصول اولیه و پایه ای هست که در هر ماشینی وجود داره
و وقتی ماشین عوض میشه شما یک مدتی رو طبیعتا باید صرف یادگیری آپشن های ماشین جدید بکنید ولی به نسبت کسی که از صفر شروع می کنه حتما سریعتر پیش میرید
نکته دیگه اینکه ممکنه اگر کسی چند زبان بلد باشه و مجبور بشه مثلا در فاصله زمانی کوتاه از زبان های مختلف در پروژه استفاده کند، بعد از هربار سوییچ یه مقدار کمی اشتباه سینتکسی و ... داشته باشه اما اگر واقعا مسلط باشه سریع آداپته می کنه خودش رو
و نکته آخر اینکه خیلی از برنامه نویس ها تعصب بی مورد روی زبان های برنامه نویسی دارن و این موضوع باعث میشه تا سمت یادگیری زبان های دیگه به خصوص اونایی که متفاوت هستن نرن،اما نگاه افراد حرفه ای اینه هست که این زبان ها و IDE ها و... همه ابزار هستن و ما باید متناسب با نیاز از ابزار سودمند استفاده کنیم نه تعصب بیجا که نشون دهنده بی تجربگی و ناپختگی طرف هست
Insight
Insight
به طور کلی یادگیری بیش از یک زبان برنامه نویسی به صورت همزمان یک سری مزایا و معایبی رو به همراه داره. خب ما اینو میدونیم که عموما برکه ای به عمق چند متر بهتر از اقیانوسی به عمق چند سانتی‌متر هست پس بهتره فقط روی یک زبان برنامه نویسی تمرکز کنیم.
اما این همه ی ماجرا نیست. یادگیری زبان های دیگه، شما رو با اکوسیستم مختلف، طرز تفکر متفاوت،‌ اصطلاحات جدید و مفاهیم گوناگون آشنا میکنه. دقت کنید که این یادگیری موجب دور شدن شما از زبان اصلی‌تون نشه.
به طور کلی توصیه میکنم، در حوزه یا زبان برنامه نویسی موردعلاقه خودتون حرفه ای بشید اما نیم نگاهی به سایر زبان ها و ابزارهای دیگه هم داشته باشین.
کاربر میهمان
محمدمن یک کاربر مهمان هستم
خیلی جالب بود ممنون ولی منظور شما اینکه مثلا من سی شارپ کار میکنم پی اچ پی هم یاد بگیرم خوبه؟