اگه تازه میخوای وارد دنیای برنامهنویسی بشی، احتمالاً این سوال یه جایی تو ذهنت هست: «من که تو مدرسه از ریاضی خوشم نمی اومد، آیا اصلاً میتونم برنامهنویس بشم؟» این سوال آنقدر رایجه که تقریباً هر سایت آموزش برنامهنویسی یه صفحهی جداگانه براش داره — و جواب اکثرشون هم یه چیز کلیه: «نه لازم نیست، ولی به کارت میاد.»
بهجای اینکه همین جواب کلیشهای رو تکرار کنیم، رفتیم سراغ چندتا برنامهنویس واقعی که سالها تو این حرفه کار کردن و ازشون پرسیدیم: واقعاً ریاضی چقدر تو کارتون به دردتون خورده؟
بهزاد خداپناه: «ریاضی مستقیم لازم نمیشه، ولی پایهش کمک میکنه بهینهسازی کنی»
بهزاد میگه وقتی کارش رو شروع کرد، سطح ریاضیش فقط در حد دبیرستان و کمی تابع و مشتق سادهی دانشگاهی بود — چون هیچ وقت مجبور نشده بود عمیقتر بره. به گفتهی او، تو کار روزمرهی برنامهنویسی، ریاضی معمولاً بهطور مستقیم استفاده نمیشه، چون اکثر نیازمندی های ریاضی از قبل داخل خودِ زبان برنامهنویسی یا کتابخانه ها و ماژول های آماده پیادهسازی شدن. اما یه نکتهی مهم اضافه میکنه: دونستن ریاضی همیشه این امکان رو بهت میده که وقتی به یه کاربرد خاص و پیچیده نیاز داری، بتونی رفتار همون ماژولهای آماده رو تغییر بدی و بهینهترش کنی — کاری که بدون درک ریاضی پشتش، عملاً غیرممکنه.
جایی که ریاضی واقعاً به کار بهزاد اومد؟ دیتابیس. به گفتهی او، یادگیری دیتابیس از هر نظر یه مهارت لازم و مهمه، و چون مبنای مستقیم ریاضی داره، داشتن پایهی ریاضی خوب کمک کرد سریعتر یادش بگیره.
توصیهی نهایی او به تازهکارها: «اگه خودم صفر بودم، قطعاً نگران ریاضی نمیشدم، چون یادگیری ریاضی بدون کاربرد مستقیم، هم زمانبره هم زود فراموش میشه. کارم رو با همون سطح ریاضی دبیرستانی شروع میکردم و روز به روز، بسته به نیاز واقعی کارم، ریاضیاتم رو اضافه میکردم.»

آریا نادری: «هر چیزی که لازم داشتم، سرچ کردم و یاد گرفتم»
آریا (که قبلاً هم تو چندتا پست دیگه تجربه شو بهاشتراک گذاشته) دیدگاه کمی متفاوتی داره. از نظر او، فهم ریاضی — یعنی فهمیدن اینکه فرمولها از کجا میان و چطور ساخته میشن — به فهم بهتر منطق برنامه کمک میکنه، اما ضروری نیست. به گفتهی او، اینطور نیست که همهی برنامهنویسها ریاضیدان باشن یا از پس همهی مسائل ریاضی بربیان؛ چون اکثر فرمولها از قبل نوشته شدن و کار ما فقط استفاده از اوناست.
آریا میگه شخصاً ریاضیات کمک بزرگی به کارش نکرده — هر جا که فکر میکرد چیزی رو متوجه نمیشه، سرچ میکرد و همونجا یاد میگرفت. از نظر او، فهم ریاضی مفیده، اما نبودنش هیچوقت باعث توقف کار نمیشه.
توصیهی او به تازهکارها: «اگه فکر میکنی واقعاً به برنامهنویسی علاقه داری، فقط بیا وارد مسیر شو و یادش بگیر. به این فکر نکن که تو ریاضی خوبی یا نه. خیلیها بدون دانش ریاضی برنامهنویس شدن و الان دارن تو شرکتهای خوب کارشون رو ادامه میدن.»

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

پس کجاها واقعاً ریاضی مهم میشه؟
بر اساس تجربهی این دو برنامهنویس و جستوجوی گستردهتر تو این حوزه، یه الگوی کلی وجود داره:
توسعهی وب معمولی (فرانتاند، بکاند پایه): نیاز به ریاضی خیلی کمه — جمع، تفریق، منطق ساده کافیه
دیتابیس و ساختارهای داده: پایهی ریاضی مشخصی داره (دقیقاً همون چیزی که بهزاد بهش اشاره کرد)
یادگیری ماشین و هوش مصنوعی: اینجا ریاضی (بهخصوص جبر خطی و آمار — که قبلاً یه پست جداگانه هم دربارش نوشتیم) واقعاً نقش پررنگ و حیاتی داره
بهینهسازی و کارهای تخصصی سطح پایین: دقیقاً همونجایی که بهزاد گفت، برای تغییر رفتار ابزارهای آماده، درک ریاضی عمیقتر لازم میشه
چند مثال مشخص و فنی (برای کسایی که کنجکاون)
اگه بخوایم دقیقتر بشیم و از کلیگویی خارج بشیم، اینها چندتا نمونهی مشخص هستن که ریاضی پشتشون واقعاً کار میکنه — حتی اگه خودتون مستقیم فرمولش رو ننویسید:
پیچیدگی الگوریتمها (Big O): وقتی میگیم یه الگوریتم جست و جوی دودویی «لگاریتمی» (O(log n)) هست در برابر یه جستوجوی خطی «O(n)»، این یه مفهوم مستقیم از ریاضیات گسسته ست. نفهمیدن این تفاوت باعث میشه ندونید چرا یه کد رو ۱۰۰۰ آیتم تند اجرا میشه ولی رو ۱۰ میلیون آیتم کند میشه.
گرافیک و بازیسازی: حرکت دادن یه شیء رو صفحه، چرخوندنش، یا تشخیص برخورد بین دو شیء، مستقیماً از مثلثات (سینوس، کسینوس) و جبر برداری استفاده میکنه. اینجا دقیقاً همونجاییه که ریاضی از حالت «پسزمینهی پنهان» به یه ابزار روزمره تبدیل میشه.
هشینگ و رمزنگاری: توابع هش (که مثلاً پسورد کاربرها رو ذخیره میکنن) و الگوریتمهای رمزنگاری، بر پایهی نظریهی اعداد و ریاضیات مدولار ساخته شدن. برنامهنویس معمولی لازم نیست خودش این توابع رو از صفر بسازه (دقیقاً همون نکتهای که آریا گفت — از ماژولهای آماده استفاده میکنیم)، اما فهم سطحی از چرایی کارشون کمک میکنه تصمیمات امنیتی بهتری بگیرید.
صفحهبندی و منطق کسبوکار (Pagination, Business Logic): حتی یه کار بهظاهر ساده مثل تقسیم ۱۰۰۰ نتیجه به صفحات ۲۰تایی، یا محاسبهی تخفیف و مالیات تو یه فروشگاه آنلاین، ریاضی پایهست — دقیقاً همون سطحی که بهزاد و آریا هر دو گفتن از اول لازمه.
نکتهی مهم اینه که تو ۹۰ درصد این موارد (بهجز یادگیری ماشین و کارهای تخصصی گرافیک/رمزنگاری)، شما خودتون فرمول رو نمینویسید — فقط باید بفهمید پشت صحنه چه اتفاقی میافته تا بتونید تصمیم درست بگیرید یا مشکل رو دیباگ کنید. این دقیقاً همون تفاوتییه که بهزاد بهش اشاره کرد: نیازی به «تسلط» نیست، نیاز به «درک کافی برای بهینهسازی وقتی لازم شد» هست.

حرف آخر
اگه نگران این هستید که چون تو ریاضی مدرسه عالی نبودید نمیتونید برنامهنویس خوبی بشید، جواب دو برنامهنویس واقعی که سالها تو این حرفه کار کردن، روشنه: نه. شروع کنید با همون چیزی که بلدید، و بذارید نیاز واقعی کارتون، تعیین کنه کِی و چقدر باید ریاضی یاد بگیرید — نه برعکس.

