برای تولد ده سالگیم، پدر و مادرم هدیه عجیبی برایم خریدند: یک کلاس برنامهنویسی کامپیوتر.
سال ۱۹۸۰ بود، و بهراحتی میتوان گفت برنامهنویسی چیزی نبود که اکثر مردم سراغش بروند، چه رسد به بیشتر دانشآموزان مقطع ابتدایی. پدر و مادرم هم خیلی درباره کامپیوتر چیزی نمیدانستند؛ اما فکر میکردند از آن خوشم خواهد آمد — و همینطور هم شد.
کلاس در اتاق پشتی یک فروشگاه محلی کامپیوتر برگزار میشد. هر هفته، مدرس یک یا دو ساعت را صرف آموزش مقدماتی برنامهنویسی با استفاده از یک کامپیوتر اپل ۲ در جلوی اتاق میکرد. تا آنجا که به خاطر دارم، شاگردان، افراد شاغل در دهه ۳۰ و ۴۰ زندگیشان بودند که باور داشتند کامپیوترها راه آینده هستند و یادگیری برنامهنویسی، راه موفقیت در آن آینده است.
آن کلاس نه تنها مرا با برنامهنویسی آشنا کرد، بلکه کاری کرد که تا پایان عمر شیفتهاش شوم. توانایی تایپ کردن متنی درون یک ماشین و سپس دیدن اجرای دستوراتمان توسط آن ماشین، چیزی جادویی در خود دارد. البته که برنامهنویسی میتواند ناامیدکننده و حتی دیوانهکننده باشد — اما لذت آدرنالینی که وقتی برنامهای کار میکند حس میکنید، تقریبا بینظیر است. و این حقیقت که برخی از ما میتوانیم از طریق نوشتن چنین کدهایی امرار معاش کنیم؟ حتی از آن هم بهتر است.
در طول ۴۰ سالی که از شرکت من در آن کلاس میگذرد، صنعت فناوری از جنبههای گوناگون تغییر کرده است: کامپیوترها به طور چشمگیری سریعتر شدهاند و حافظه و فضای ذخیرهسازی بسیار بیشتری نسبت به آنچه میتوانستیم تصور کنیم دارند. کامپیوترها نه تنها در شبکههای محلی، بلکه به اینترنت به یکدیگر متصل شدهاند. دستگاههای تلفن همراه قدرت محاسباتی شگفتانگیزی را در جیبهایمان قرار دادهاند و به ما اجازه میدهند با خیالی آسوده ارتباط برقرار کنیم، یاد بگیریم، پرداخت انجام دهیم و سفر کنیم. و در همین چند سال گذشته، هوش مصنوعی از یک پروژه تحقیقاتی به یک صنعت تریلیون دلاری تبدیل شده است، با پیامدهایی برای تجارت و جامعه که هنوز نمیتوانیم پیشبینیشان کنیم.
با این حال، یک چیز که تغییر نکرده، محوریت برنامهنویسی در تمام این ماجراست. توانایی کدنویسی — مشخص کردن، نوشتن، رفع اشکال و تکرار — همچنان مهارتی پرمخاطب است. و این مهارتی است که هر کسی میتواند آن را یاد بگیرد.
از یک طرف، تعداد کتابها، دورهها، ویدئوها و آموزشهای برنامهنویسی آنقدر زیاد است که به راحتی میتوان باور کرد هر کسی میتواند برنامهنویسی را یاد بگیرد. اما بعد کلاس شروع میشود و جای تعجب نیست که چرا ناامید شدهاید: مدرس ممکن است فکر کند در حال ارائه یک دوره مقدماتی است، اما در واقع او دارد یک دوره مقدماتی برای افرادی ارائه میدهد که از قبل برنامهنویسی بلدند.
شرکت در چنین کسی میتواند بسیار ناامیدکننده باشد. اینجاست که میبینید تماموکمال آماده یادگیری یک مهارت جدید هستید — اما ناگهان متوجه میشوید که کلاسِ به اصطلاح مقدماتی اصلا برای تازهکارها نیست.
یادگیری برنامهنویسی شامل حداقل دو مهارت مختلف است:
باید مفاهیم مرتبط با برنامهنویسی را یاد بگیرید، مفاهیمی که در تمام زبانهای برنامهنویسی وجود دارند. مقادیر (Values) چیستند؟ متغیرها (Variables) چیستند؟ توابع (Functions) چیستند؟ حلقهها (Loops) چیستند؟
همزمان، باید جزئیات یک زبان برنامهنویسی خاص را هم یاد بگیرید — مثل سی (C)، جاوا (Java)، یا (در مورد این کتاب) پایتون (Python).
بسیاری از کلاسهای به اصطلاح مقدماتی، دومی را آموزش میدهند اما اولی را نادیده میگیرند. تعجبی ندارد که خیلیها اینگونه دورهها را به پایان نمیبرند و میگویند برنامهنویسی خیلی سخت است و به درد نابغههای ریاضیِ گوشهگیر میخورد.
علاوه بر این، کسی که تازه دارد برنامهنویسی را شروع میکند به تمرین و دستگیری (راهنمایی قدمبهقدم) بیشتری نیاز دارد. بیشتر مدرسان نمیتوانند یا نمیخواهند وقتی را که تازهکارها نیاز دارند صرف کنند تا صبورانه به آنها کمک کنند از پس چالشهای اجتنابناپذیر مفهومی، نحوی (سینتکسی) و لجستیکی برآیند.
من یک مربی حرفهای پایتون هستم و از سال ۱۹۹۵ در این کار فعالیت میکنم. بسیاری از کلاسهایی که تدریس میکنم برای توسعهدهندگان باتجربهای است که میخواهند پایتون را یاد بگیرند، یا برای توسعهدهندگان باتجربه پایتون است که میخواهند مهارتهای خود را بهبود ببخشند. اما یکی از کلاسهای مورد علاقه من برای تدریس، یعنی «پایتون برای افراد غیربرنامهنویس»، الهامبخش کتاب AI-Assisted Python for Nonprogrammers بود. دلیلش این است که من عاشق دیدن ذوقزدگی آدمها هستم، درست همانطور که خودم در سال ۱۹۸۰ هیجانزده شدم، از اینکه میبینیم چه کارهایی را میتوانیم به کامپیوتر دیکته کنیم. کار همیشه آسانی نیست و قطعاً نیاز به تمرین دارد، اما در نهایت، برنامهنویسی میتواند هیجانانگیز و سرگرمکننده باشد.
برنامهنویسی همچنین شکلی از سواد است — چیزی که دانشمندان علوم یادگیری مانند استاد راهنمای دکترای من، اوری ویلنسکی (Uri Wilensky)، با تکیه بر کارهای پیشین سیمور پاپرت (Seymour Papert)، آن را «سواد محاسباتی» نامیدهاند. مسلماً میتوانید یک برنامهنویس تماموقت شوید. اما اگر خوب بنویسید یا خوب صحبت کنید، لازم نیست نویسنده حرفهای شوید؛ بلکه فقط میتوانید در شغل فعلی خود ارتباطدهنده بهتری شوید. به همین ترتیب، دانستن نحوه برنامهنویسی صرفاً شما را در شغل فعلیتان بهتر میکند و قادرتان میسازد به کامپیوتر بگویید چگونه کارها را خودکارسازی کند، با سایر سیستمها ارتباط برقرار کند و دادهها را تحلیل نماید.
کتاب AI-Assisted Python for Nonprogrammers شما را به آرامی اما با اطمینان به دنیای برنامهنویسی معرفی خواهد کرد. مفاهیم بنیادین را یاد خواهید گرفت. همچنین پایتون را یاد خواهید گرفت؛ یکی از محبوبترین زبانهای برنامهنویسی در جهان — و البته یکی از سادهترینها برای یادگیری. وقتی این کتاب را به پایان رسوب دهید، آماده خواهید بود تا از پایتون برای حل برخی از مشکلات خود استفاده کنید، یا حتی در کلاسهای پیشرفتهتر پایتون شرکت کنید.
یکی از کلیدهای کتاب AI-Assisted Python for Nonprogrammers، تمرینها هستند: درست همانطور که نمیتوانید یک زبان خارجی را فقط با خواندن مقدمهای بر دستور زبان آن یاد بگیرید، نمیتوانید برنامهنویسی در پایتون را هم صرفاً با خواندن این کتاب یاد بگیرید. بخشی از فرایند یادگیری شامل تلاش کردن، اشتباه کردن، یادگیری از آن اشتباهات و سپس عملکرد بهتر در دفعات بعدی است. اگر نتوانستید یک تمرین را به تنهایی حل کنید و برای درک مسائل به توضیح من نیاز داشتید، هیچ اشکالی ندارد! یادگیری و هضم بسیاری از این مفاهیم زمان زیادی میبرد.
با این حال، کلید دوم کتاب AI-Assisted Python for Nonprogrammers، هوش مصنوعی است. انقلاب هوش مصنوعی از هماکنون چندین سال است که در جریان است و محصولاتی مانند چتجیپتی (ChatGPT) و کلود (Claude) نحوه تفکر ما درباره کار، تحصیل و حتی برنامهنویسی را زیر و رو کردهاند. خیلیها بر این باورند که هوش مصنوعی یعنی هیچکس نیازی به یادگیری کدنویسی ندارد، زیرا محصولات هوش مصنوعی میتوانند برای ما برنامه بنویسند. من حرفهای زیادی درباره این موضوع جنجالی در فصل ۱۵ کتاب AI-Assisted Python for Nonprogrammers دارم — اما تردیدی وجود ندارد که هوش مصنوعی میتواند به شما کمک کند تا بهتر و مؤثرتر یاد بگیرید.
این دقیقا همان چیزی است که برنامهنویسان تازهکار به آن نیاز دارند و مدرسان انسانیشان اغلب از عهده فراهم کردنش برنمیآیند: هوش مصنوعی راهنمایی بینهایت صبور به ما ارائه میدهد که میتواند به سوالاتمان پاسخ دهد و کنجکاویمان را سیراب کند. اما فراتر از صرفِ پاسخ دادن به سوالات، هوش مصنوعی همچنین میتواند به ما کمک کند تا پیشفرضهایمان را به چالش بکشیم، ایدههای مهم را تثبیت کنیم و تفکرمان را شفاف سازیم. هر تمرین در کتاب AI-Assisted Python for Nonprogrammers شما را تشویق میکند که نه تنها خودتان مسئله را حل کنید، بلکه از هوش مصنوعی برای ارتقای بیشتر درک خود از موضوعی که تازه یاد گرفتهاید بهره ببرید. این تکنیکها فراتر از این کتاب نیز قابل استفادهاند؛ یعنی حتی پس از اتمام کتاب AI-Assisted Python for Nonprogrammers، میتوانید از هوش مصنوعی برای تقویت درک خود در طول مسیر حرفهای پایتون استفاده کنید.
همچنین: من یک سیستم تمرینی ایجاد کردهام که در مرورگر شما اجرا میشود و نیازی به نصب هیچ نرمافزار خارجی ندارد. این سیستم نه تنها به شما اجازه میدهد کدهای پایتون را بنویسید، ویرایش کنید و اجرا کنید، بلکه شامل یک مربی هوش مصنوعی است که در حین تلاش برای رسیدن به راهحل، به شما بازخورد و دلگرمی میدهد. با کلیک کردن روی لینک مربوطه در هر تمرین، به سیستم تمرینی من هدایت خواهید شد. امیدوارم این سیستم، در کنار تمرین و تفکر مکرر، به شما کمک کند تا پایتون را حتی بهتر درونیسازی کرده و درک کنید.
امیدوارم کتاب AI-Assisted Python for Nonprogrammers پیش از هر چیز به شما نشان دهد که بله، با وجود تلاشهای ناامیدکننده قبلی، حتی خودِ شما هم میتوانید برنامهنویسی را یاد بگیرید. دوم اینکه، امیدوارم بینشهایی درباره نحوه کارکرد نرمافزار و نحوه نوشته شدن آن به شما بدهد — بینشهایی که میتوانید در شغل خود به کار ببرید، حتی اگر هرگز هیچ کدی ننویسید. و اگر برنامهنویسی را چنان هیجانانگیز و اعتیادآور یافتید که خواستید کلاسهای بیشتری بروید و پروژههای بیشتری را امتحان کنید؟ من کاملاً با شما همعقیدهام — و نسخه ۱۰ ساله خودم نیز همینطور خواهد بود.