چرا (و چگونه) کد می نویسم با مداد و کاغذ با هوش داده PlatoBlockchain. جستجوی عمودی Ai.

چرا (و چگونه) با مداد و کاغذ کد می نویسم

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

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

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

بنابراین چه دانشجوی امتحانی باشید، چه مصاحبه‌شونده شغلی بالقوه، یا کسی که می‌خواهد بن‌بست‌های برنامه‌نویسی خود را حل کند، امیدوارم این مقاله زمانی که قلم خود را روی کاغذ برای کدنویسی می‌گذارید به شما کمک کند.

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

چرا آن را بنویسید؟

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

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

تلاش برای کشف اینکه چگونه می توان با یک کلیک بر روی موارد اطراف تأثیر گذاشت (از من آخرین مقاله)

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

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

سوال خود را بدانید

در سال آخر تحصیلم در کالج، به دلایل سلامتی نتوانستم دوره کارآموزی انجام دهم یا حتی در مصاحبه های دانشگاه شرکت کنم. در نتیجه، اولین مصاحبه شغلی من کاملاً تحت اللفظی بود و ریسک بالایی داشت.

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

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

من ابتدا یک مثلث معکوس از ستاره ترسیم کردم. اینطوری پاهایم را روی زمین پیدا کردم تا شروع کنم به پاسخ دادن به سوال آنها.

من دیده‌ام که توسعه‌دهندگان باهوش اشتباه می‌کنند، به این دلیل که آنها هرگز به طور کامل متوجه نمی‌شوند که چه چیزی حل می‌کنند.

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

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

اما وقتی کسی از شما سوالی می پرسد و به شما نتیجه ای می دهد که باید روی آن کار کنید، آیا بهتر نیست ابتدا آن را کنار بگذارید؟ این سوال/نتیجه نه تنها نقطه شروع شماست، بلکه نقطه مرجع شما نیز هست. در هر مرحله از کدنویسی خود، می توانید به آن نگاه کنید تا مطمئن شوید که در جهت آن کار می کنید و در مسیر درستی قرار دارید.

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

کد خود را مشخص کنید

این مرحله مانند یک شمشیر دولبه است. می تواند نقشه راه برنامه تان را برای شما به ارمغان بیاورد یا وقتتان را تلف کند. وظیفه من این است که مطمئن شوم اولی است.

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

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

  1. UI برای گرفتن امضا - HTML Canvas؟ WebGL؟
  2. هنگام امضای کاربر، رویدادهای اشاره گر را در بقیه صفحه وب غیرفعال کنید
  3. تصویر گرفته شده را به یک فایل PNG - JS تبدیل و ذخیره کنید
  4. سپس آن را به blob (شاید) تبدیل کنید و آن را در جدول داده های گزارش بازدید کننده ذخیره کنید.

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

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

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

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

اگر نمی‌دانید از کجا شروع کنید، فقط سه تابع ضروری را که باید در برنامه‌تان کدنویسی کنید، یادداشت کنید، و اگر زمان دارید، آن را پنج کنید.

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

بلندنویسی در مقابل کوتاه نویسی

کاغذ خط‌دار سفید با یادداشت‌های خط شکسته با جوهر سیاه.
یک مرجع سریع برای غیرفعال کردن انتخاب متن

زمان شروع کدنویسی است. پس چی مینویسی؟ "Bdrs" یا "border-radius"؛ "div -> p" یا "<div><p></div></p>"؛ "pl()" یا "println()"؛ "q()" یا "querySelector()

اگر شخص دیگری کد شما را درجه بندی می کند، چاره ای نیست. اختصارات، شبه کدها، میانبرهای Emmet و هر شکل دیگری از کوتاه نویسی را کنار بگذارید. در غیر این صورت، دلیلی وجود ندارد که فرض کنیم هر کسی که این مطلب را می‌خواند معنی اختصارات شما را می‌داند.

این واقعا به شما بستگی دارد.

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

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

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

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

جریان غیر ترتیبی کد

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

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

همانطور که از همان ابتدا گفتم، هدف از دست‌نویسی این است که منطق هر برنامه‌ای را که شما برنامه‌ریزی می‌کنید بررسی یا آزمایش کنید. زمانی بهتر است که ابتدا روی حل آن تمرکز کنید.

بیایید یک مثال کتاب درسی کلاسیک را در نظر بگیریم - برنامه ای برای پیدا کردن عدد n شماره فیبوناچی. اگر بخواهم یک طرح کلی ساده برای آن بنویسم، چیزی شبیه به این خواهد بود:

  1. ورودی را دریافت کنید.
  2. عدد فیبوناچی را محاسبه کنید.
  3. خروجی را خلاصه کنید
  4. خروجی را چاپ کنید.

تمام مراحل در آن طرح کلی ضروری است. اما 1 و 3 و 4 واجب ترند. آنها ضروری هستند اما به اندازه کافی مهم نیستند که فوراً روی آنها تمرکز کنیم.

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

وقت خود را صرف نوشتن کدی کنید که بر قلب مشکل تمرکز دارد.

حرفه ای های واقعی می توانند جلوتر بگذرند. فرض کنید من یک پروژه مشتری دارم، و باید با هندسه مثلث کار کنم - دو ضلع، زاویه مخالف، و باید طول ضلع سوم را پیدا کنم. و من تصمیم گرفتم برای شروع به جای باز کردن کارم، روی کاغذ خط بکشم IDE.

اول، من مثلث را می کشم، البته (این چیزی است که من در آن بسیار تجربه دارم، همانطور که می توانید بگویید). چند طول و زوایای نمونه را یادداشت می کنم. سپس فرمول را می‌نویسم (مطمئن از جستجوی آنلاین، مطمئنا)، و سپس به سمت کد تابع می‌رفتم.

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

شبه کد

کریس قبلاً یک نوشته است مقاله مفید در مورد شبه کد که من به شدت توصیه می کنم به طور کامل بخوانید.

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

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

در اینجا چند شبه کد سریع برای یک طرح شبکه CSS آمده است:

Grid
5 60px rows
6 100px columns

چیز زیادی برای نوشتن وجود ندارد! بنابراین، حتی اگر قرار دادن یک مداد روی کاغذ برای این نوع کارها عالی است، به همان اندازه مؤثر، سریع و ارزان است که مقداری شبه کد را در هر برنامه ای که استفاده می کنید، یادداشت کنید.

فضا و نظرات

من معتقدم کد 90٪ کلمات کلیدی و 10٪ زبانه ها است. بدون فاصله قابل فهم بودن کلمات کاهش می یابد. تورفتگی برای کد دست نویس نیز ضروری است. با این حال، لطفا از آن برای هر سطح استفاده نکنید زیرا عرض کاغذ شما را محدود می کند. از فضاها عاقلانه استفاده کنید، اما از آنها استفاده کنید.

کاغذ بدون خط زرد با کد دست نویس با خط شکسته با جوهر سیاه.
قطعه OG ارزشمند، با TLC اضافی نوشته شده است

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

با این حال، اگر قضاوت شما می گوید که یکی را کنار بگذارید، آن را انجام دهید. آن را به سمت راست کد اضافه کنید (زیرا نمی توانید آن را بین خطوط از قبل نوشته شده به روشی که می توانید مثلاً در VS Code قرار دهید) وارد کنید. از اسلیدهای رو به جلو، براکت ها یا فلش ها برای نشان دادن اینکه آنها نظر هستند استفاده کنید.

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

آنالوگ در مقابل دیجیتال

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

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

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

ابزار مورد علاقه من برای کد دست خط

هر مداد و کاغذی انجام خواهد داد! اما گزینه های زیادی وجود دارد، و اینها چند ابزار انتخابی هستند که من استفاده می کنم:

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

امیدوارم، اگر هیچ چیز دیگری، روش کوچک من برای دست نویسی کد با مداد و کاغذ، شما را به ارزیابی روشی که قبلاً برنامه ریزی و کدنویسی می کنید، بپردازد. من دوست دارم بدانم توسعه‌دهندگان دیگر چگونه به کارشان برخورد می‌کنند، و این روشی است که می‌توانم به شما نگاهی به نحوه انجام کارها بیاندازم.

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

  1. با نوشتن (در صورت نیاز با داده های نمونه) خروجی کد خود را شروع کنید.
  2. یک طرح کلی برای کد بنویسید. لطفاً برای پروژه‌های کوچک یا پروژه‌هایی که پیچیدگی کمتری دارند، آن را به سه مرحله ادامه دهید.
  3. از نمادهای بلند استفاده کنید. توسعه دهندگانی که برای خودشان می نویسند می توانند از نمادهای کوتاه استفاده کنند تا زمانی که نوشته خوانا باشد و وقتی بعداً به آن مراجعه کنید برای شما منطقی باشد.
  4. زمانی که تحت محدودیت زمانی هستید، ابتدا کدی را بنویسید که به قلب مشکل رسیدگی کند. بعداً، یک تماس با آن کد را در جای مناسب در کد ترتیبی خود یادداشت کنید.
  5. اگر احساس اعتماد به نفس دارید، سعی کنید شبه کدی را بنویسید که به ایده اصلی می پردازد.
  6. از تورفتگی ها و فاصله های مناسب استفاده کنید - و حواستان به عرض کاغذ باشد.

خودشه! وقتی آماده هستید که کد را با دست بنویسید، امیدوارم این مقاله شروع را برای شما آسان کند. و اگر برای امتحان یا مصاحبه می نشینید، امیدوارم این به شما کمک کند روی درست کردن سؤالات تمرکز کنید.

تمبر زمان:

بیشتر از ترفندهای CSS