الگوریتم ها و مدل ها را فراموش کنید - ابتدا یاد بگیرید که چگونه مسائل را حل کنید
تقریباً هر هفته یکی از دوستان یا آشنایان از من میپرسد: «میخواهم کدنویسی را یاد بگیرم. با کدام زبان شروع کنم؟» کم و بیش هر دو هفته یک DM در لینکدین دریافت می کنم که با این جمله شروع می شود: «پسرم باید برنامه نویسی را شروع کند. بهترین زبان برای او چیست؟»
این فقط افرادی نیستند که قبلاً هرگز کدنویسی نکرده اند. اغلب من این پیام ها را از افرادی دریافت می کنم که چندین سال تجربه کدنویسی دارند.
این را برای شکایت نمی گویم.
من نیمی از گذران زندگیام را از برانگیختن مزایا و معایب زبانهای برنامهنویسی مختلف، چارچوبها و مدلهای هوش مصنوعی در اینجا در Medium در میآورم. من از افرادی که چنین سوالاتی دارند سود زیادی می برم.
سوالات کاملا شهودی هستند. از این گذشته، همه دوست دارند با بهترین ابزارهای ممکن کار کنند و مهارت های نرم افزاری خود را در سریع ترین زمان ممکن ایجاد کنند.
و وقتی مشاهده می کنید که به نظر می رسد هر توسعه دهنده از یک پشته فناوری متفاوت استفاده می کند، کاملاً منطقی است که تعجب کنید که کدام یک از آنها مناسب است.
مسئله این است که همه چیز به مشکل موجود بستگی دارد.
هیچ فناوری به تنهایی خوب یا بد نیست. این فقط به نوع مشکلی که می خواهید حل کنید بستگی دارد. در پایان، برنامه نویسی دقیقاً همین است: حل مسئله با استفاده از رایانه.
بنابراین، برای افرادی که می خواهند برنامه نویسی را شروع کنند یا مهارت های خود را در توسعه نرم افزار یا علم داده افزایش دهند، این سوال نباید این باشد که "از چه چیزی استفاده کنم، پایتون یا جولیا؟" سوال باید این باشد: "چگونه می توانم مشکلات نرم افزاری را بهتر حل کنم؟"
چگونه مشکلات را حل کنیم
برای افشای کامل، من یک دانشمند کامپیوتر نیستم. من یک فیزیکدان ذرهای هستم که اتفاقاً از مفاهیم برنامهنویسی و علم داده استفاده میکنم، زیرا با حجم عظیمی از دادههای برخورد دهندههای ذرات سروکار دارم.
همانطور که گفته شد، فیزیکدانان به طور مشابه به عنوان دانشمندان کامپیوتر مورد توجه هستند. این به خاطر دانش آنها در مورد نوترینوها یا سیاهچاله ها نیست. این به خاطر قابلیت حل مسئله آنهاست.
از آبراهام لینکلن نقل شده است که گفت: «شش ساعت به من فرصت دهید تا یک درخت را قطع کنم و من چهار ساعت اول را صرف تیز کردن تبر خواهم کرد.»
برای برنامه نویسان و دانشمندان داده، این به معنای صرف زمان برای درک مشکل و یافتن راه حل های سطح بالا قبل از شروع کدنویسی است. انتظار میرود که در مصاحبههای کدنویسی متوسط، داوطلبان کمتر از نیمی از زمان خود را صرف نوشتن کد کنند و بقیه زمان را صرف درک مشکل کنند.
1. درک مسئله
هرگز این مرحله را نادیده نگیرید!
نکته کلیدی برای دانستن اینکه آیا یک مشکل را درک می کنید این است که آیا می توانید آن را به کسی که با آن آشنایی ندارد توضیح دهید. سعی کنید آن را به زبان انگلیسی ساده یا زبان مادری خود بنویسید. یک نمودار کوچک بکشید؛ یا به یک دوست در مورد آن بگویید. اگر دوستتان متوجه منظور شما نشد، باید به بیان مشکل برگردید.
سوالات کلیدی برای پرسیدن عبارتند از:
ورودی چیست؟ خروجی مورد نظر چیست؟
به عنوان مثال، ورودی می تواند آرایه ای از داده ها باشد، و خروجی ممکن است یک رگرسیون خطی روی داده ها باشد.
کدام فرضیات زیربنای مشکل هستند؟
به عنوان مثال، ممکن است فرض کنید (تقریبا) هیچ خطای اندازه گیری در داده های شما وجود ندارد.
چه چیزی این مشکل را پیچیده می کند؟
برای مثال، ممکن است دادههایی که در اختیار دارید ناقص باشند یا مجموعه دادهها برای نتیجهگیری واضح بسیار کوچک باشد.
2. مشکل را حل کنید
هر مشکل بزرگی شامل بسیاری از مشکلات کوچکتر است. با توجه به مثال قبلی ما با رگرسیون خطی، ممکن است بخواهید مسائل فرعی زیر را در نظر بگیرید:
پاک کردن داده ها
یافتن اینکه کدام متغیرها در داده ها برای رگرسیون معنی دار هستند و کدام یک را می توان با خیال راحت نادیده گرفت
جستجوی ابزار مناسب برای انجام رگرسیون (این جایی است که سوال قدیمی در مورد زبانهای برنامهنویسی و چارچوبها مطرح میشود)
ارزیابی نتایج و بررسی اشکال
شکستن مشکل به شما کمک می کند تا یک برنامه ریزی مناسب برای کار خود داشته باشید.
همچنین انگیزه بیشتری دارد، زیرا در طول مسیر به نقاط عطف کوچک اما مهمی دست خواهید یافت. این بسیار رضایتبخشتر از نشستن در مقابل کوهی از کار است و احساس میکنید که جلو نمیروید.
3. با یک مثال شروع کنید
شیطان همیشه در جزئیات است.
به جای شروع با کل پروژه، یک تکه کوچک از آن را بردارید. سعی کنید آیا برنامه شما کار می کند یا اینکه به دلیل مشکلات غیرقابل پیش بینی مجبور به تطبیق با آن هستید.
این به شما کمک می کند سر خود را در اطراف قسمت های سخت قرار دهید. بسیاری از مشکلات ساده به نظر می رسند، اما وقتی شروع به ساختن آنها می کنید، موانعی یکی پس از دیگری وجود دارد.
در مثال ما، به جای استفاده از همه متغیرهای مرتبط، میتوان ابتدا یک رگرسیون خطی روی چند متغیر انجام داد. این به شما امتیازی برای تکمیل پروژه نمی دهد. با این حال، پیدا کردن اشکالات در اسکریپت های خود زمانی که هنوز با حجم کمی از داده ها سر و کار دارید، می تواند زندگی شما را نجات دهد.
وقتی تمام دادههای خود را روی دستگاه پرتاب میکنید، ساعتها آن را اجرا میکنید، و سپس برمیگردید و متوجه میشوید که اسکریپت در میانه راه متوقف شده است، بسیار ناامید خواهید شد.
به من اعتماد کنید، این خیلی اتفاق می افتد!
ابتدا تست های کوچکی را اجرا کنید و مطمئن شوید که راه حل شما همانطور که تصور می کردید کار می کند.
4. اجرا کنید
اکنون می توانید راه حلی برای مشکل بزرگ خود بسازید.
تمام داده های خود را روی کد قرار دهید. یک مدل فانتزی اجرا کنید. هر کاری میخوای بکن
پس از تکمیل سه مرحله قبلی، این باید کاملاً هموار اجرا شود!
اگر خطایی وجود دارد، ممکن است لازم باشد به مراحل 1 تا 3 برگردید تا ببینید آیا قبلاً همه چیز را فهمیدهاید و هیچ اشکالی را نادیده نگرفتهاید.
5. منعکس کنید
فقط به این دلیل که یک راه حل پیدا کردید به این معنی نیست که بهترین راه حل را پیدا کرده اید.
هارد 500 وسترن بنفش مدل WD05PURX ظرفیت 500 گیگابایت
در انبار
قیمت 350,000 تومان – 449,000 تومانهارد اینترنال وسترن دیجیتال سری آبی مدل WD BLUE WD5000AAKX ظرفیت 500 گیگابایت
در انبار
قیمت 378,000 تومان – 440,000 تومان