مسیر یادگیری

برنامه نویسی

برنامه نویسی در یک دوره تمام نمی شود؛ با ساختن چیزهای کوچک و خراب کردنشان جا می افتد. هوش مصنوعی این مسیر را کوتاه کرده، اما نه به آن شکلی که تبلیغ می شود: نوشتن کد ارزان شده و خواندن کد گران تر.

  • ۱۴ درس
  • رایگان، بدون ثبت نام

پنج پله، از هیچ تا برنامه ای که کار می کند

بدون هیچ پیش زمینهبرنامه ای که واقعا کار می کند
  1. پایه

    برنامه چیست و کد چطور اجرا می شود

    دو درس اول همین مسیر. بدون این دو، بقیه حفظ کردن است نه فهمیدن.

  2. شروع

    یک زبان، و اولین برنامه ای که کار می کند

    انتخاب زبان کمتر از چیزی که فکر می کنید اهمیت دارد؛ عوض نکردنش هر دو هفته بیشتر.

  3. ساختار

    متغیر، شرط، حلقه، تابع

    چهار چیزی که در هر زبانی تکرار می شوند. بعد از اینها زبان دوم چند روزه است، نه چند ماهه.

  4. کار واقعی

    داده، گیت و ای پی آی

    جایی که برنامه از یک فایل تک نفره به چیزی تبدیل می شود که با بقیه دنیا حرف می زند.

  5. حرفه ای شدن

    دیباگ کردن و کار با هوش مصنوعی

    سریع ترین بخش مسیر، به شرطی که چهار پله قبلی را واقعا رفته باشید.

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

مسیر، قدم به قدم

درس ها به ترتیبی چیده شده اند که هر کدام روی قبلی می ایستد. از هر جایی هم می شود وارد شد.

  1. ۱برنامه نویسی چیستبرنامه نویسی یعنی نوشتن فهرستی از دستورها که کامپیوتر آنها را به همان ترتیب و دقیقا به همان شکلی که نوشته اید اجرا می کند، بدون اینکه منظورتان را حدس بزند. کار اصلی هم خود نوشتن نیست: تبدیل چیزی که در ذهنتان مبهم است به جمله هایی که هیچ جای تفسیر باقی نمی گذارند.مقدماتی
  2. ۲کد چگونه اجرا می شودکدی که می نویسید فقط متن است و پردازنده متن نمی خواند؛ قبل از هر اتفاقی باید به شکلی ترجمه شود که ماشین بتواند اجرایش کند. زبان ها در اینکه این ترجمه کی انجام می شود و نتیجه اش کجا نگه داشته می شود با هم فرق دارند، و بیشتر خطاهای گیج کننده دقیقا سر همین تفاوت پیش می آیند.مقدماتی
  3. ۳کدام زبان برنامه نویسی را یاد بگیریمزبان اول را از روی چیزی که می خواهید بسازید انتخاب کنید نه از روی فهرست محبوبیت: برای سایت و کار آزاد پی اچ پی و جاوااسکریپت، برای داده و هوش مصنوعی پایتون، و برای موبایل کاتلین و سوییفت یا فلاتر. زبان دوم خیلی زودتر از اولی یاد گرفته می شود، پس این تصمیم آنقدر که به نظر می رسد سرنوشت ساز نیست.مقدماتی
  4. ۴آموزش پایتون مقدماتیپایتون را از python.org نصب می کنید، یک فایل با پسوند py می سازید، و با یک دستور در ترمینال اجرایش می کنید. تا آخر این درس یک برنامه واقعی نوشته اید که طول متن را می سنجد، و یاد گرفته اید خطای پایتون را از پایین به بالا بخوانید.مقدماتی
  5. ۵متغیر و انواع دادهمتغیر اسمی است که به یک مقدار می دهید تا بعدا بتوانید صدایش کنید، و نوع آن مقدار تعیین می کند چه کاری با آن می شود کرد: عدد جمع می شود، رشته به هم می چسبد، و جمع کردن این دو با هم خطا می دهد. سخت ترین باگ های نوع داده آنهایی نیستند که خطا می دهند، آنهایی هستند که بی صدا رد می شوند و یک عدد غلط چاپ می کنند.مقدماتی
  6. ۶شرط و حلقه در برنامه نویسیشرط پرسشی است با جواب بله یا خیر که برنامه سر دوراهی از خودش می پرسد، و حلقه کاری است که تا وقتی شرطی برقرار باشد تکرار می شود. تقریبا هر برنامه ای که تا آخر عمر بنویسید ترکیبی از همین دوتاست، و سخت ترین خطاها دقیقا جایی می افتند که این دو به هم می رسند.مقدماتی
  7. ۷تابع در برنامه نویسی چیستتابع یعنی چند خط کد را یک جا جمع کنید، رویش اسم بگذارید، و از آن به بعد به جای تکرار آن خط ها فقط اسمش را صدا بزنید. ارزش واقعی اش هم صرفه جویی در تایپ نیست؛ این است که هر تصمیمی که داخل آن گرفته اید، از آن به بعد فقط در یک جا زندگی می کند.مقدماتی
  8. ۸ساختمان داده مقدماتیساختمان داده یعنی شکلی که چند چیز را کنار هم در آن نگه می دارید، و انتخابش در واقع انتخاب این است که بعدا چه سوالی از این داده سریع جواب بگیرد. سه شکلی که نود درصد کار روزمره را می پوشانند فهرست، دیکشنری و مجموعه اند و تفاوتشان در آنچه ذخیره می کنند نیست، در آنچه ارزان پیدا می کنند است.مقدماتی
  9. ۹آموزش گیت و گیتهابگیت برنامه ای روی کامپیوتر خود شماست که هر وقت بگویید، از وضعیت پروژه یک عکس تاریخ دار با یک یادداشت نگه می دارد و بعدا اجازه می دهد به هر کدام از آن عکس ها برگردید. گیتهاب یکی از جاهایی است که می شود نسخه ای از این تاریخچه را رویش گذاشت؛ خود گیت بدون اینترنت و بدون هیچ حسابی هم کامل کار می کند.مقدماتی
  10. ۱۰پایگاه داده و SQL مقدماتیپایگاه داده برنامه ای است که داده های شما را در جدول هایی با سطر و ستون نگه می دارد و اجازه می دهد چند برنامه همزمان و بدون خراب کردن کار همدیگر از آن بخوانند و در آن بنویسند. SQL هم زبانی است که با آن می گویید چه چیزی می خواهید: <code>SELECT</code> برای خواندن، <code>INSERT</code> برای افزودن و <code>UPDATE</code> برای تغییر.مقدماتی
  11. ۱۱ای پی آی (API) چیستای پی آی قراردادی است که دو برنامه از طریق آن با هم حرف می زنند: یکی درخواستی با شکل مشخص می فرستد و دیگری پاسخی با شکل مشخص برمی گرداند، بدون اینکه هیچ کدام لازم باشد بداند آن یکی داخلش چطور کار می کند. تقریبا هر چیزی که در وب دکمه اش را می زنید و داده ای از جای دیگر می آورد، پشتش یک API است.مقدماتی
  12. ۱۲آموزش دیباگ کردندیباگ کردن یعنی «کار نمی کند» را قدم به قدم کوچک کنید تا به یک خط برسید؛ اصلاح خودش معمولا کار چند ثانیه است و آنچه وقت می برد رسیدن به آن خط است. چیزی که این کوچک کردن را ممکن می کند نه ابزار است و نه تجربه، بلکه یک تکرار مطمئن است: تا وقتی نتوانید خطا را هر بار که خواستید تولید کنید، هر تغییری حدس است.مقدماتی
  13. ۱۳کدنویسی با هوش مصنوعیمدل های امروز کد کار کن می نویسند، ولی کد کار کن با کد درست یکی نیست و فاصله این دو همان چیزی است که به شما می ماند. کاری که واقعا حرفه ای است این نیست که بهتر بپرسید؛ این است که گردش کارتان طوری باشد که هر تکه کد پیش از رسیدن به شاخه اصلی، کوچک و قابل بازبینی و آزمایش شده باشد.میانی
  14. ۱۴وایب کدینگ؛ مزایا و خطرها<dfn>وایب کدینگ</dfn> یعنی نرم افزار را از روی پرامپت بسازید و کدی را که تولید می شود نخوانید؛ نتیجه را می بینید، اگر آن چیزی نبود که می خواستید دوباره می گویید، و کد خودش یک جعبه سیاه می ماند. برای نمونه اولیه و ابزار داخلی و یاد گرفتن، این معامله خوبی است؛ برای چیزی که کاربر واقعی و داده واقعی دارد، هزینه اش را جای دیگری می پردازید و معمولا دیرتر.میانی
ماشین شیشه ای سفید نیمه ساخته روی میز کار سیاه با قطعات قرمز و سبز پراکنده و یک نمونه ترک خورده قبلی

ترتیب این درس ها یک انتخاب است و دلیلش را می گوییم. بیشتر دوره های فارسی از نصب پایتون و چاپ یک جمله شروع می کنند، و یادگیرنده سه هفته بعد جایی گیر می کند که هیچ کس به او یاد نداده: خواندن یک پیام خطا. پس ما اول می گوییم برنامه اصلا چیست و کدی که می نویسید تا رسیدن به پردازنده از چه مسیری رد می شود، بعد سراغ زبان و نحو می رویم.

هدف این مسیر شغل نیست، توانایی است: اینکه بتوانید یک کار تکراری را به کامپیوتر بسپارید، کد کسی دیگر را بخوانید، و وقتی چیزی کار نکرد بدانید کدام لایه را باید نگاه کنید. اگر بعدش دنبال کار بگردید مسیرش هست، ولی این مسیر آن قول را نمی دهد و هیچ کس هم نباید بدهد.

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

سوال هایی که واقعا پرسیده می شوند

برای برنامه نویسی باید ریاضی قوی داشته باشم؟

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

با وجود هوش مصنوعی هنوز ارزش دارد برنامه نویسی یاد بگیریم؟

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

چقدر طول می کشد تا بتوانم با برنامه نویسی کار بگیرم؟

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

این مسیر برای کسی نوشته شده که می خواهد خودش بسازد. اگر چیزی که لازم دارید یک نرم افزار کاری است و وقت ساختنش را ندارید، صفحه طراحی اپلیکیشن را ببینید