انجمنهای فارسی اوبونتو
کمک و پشتیبانی => انجمن عمومی => نویسنده: 🇬🇧بریتانیای کبیر🇬🇧 در 29 شهریور 1404، 01:54 قظ
-
درود
متاسفانه چند وقتی هست که روند یادگیری من مختل شده.
من از هر چیزی تقریبا یه ناخونکی زدم.
پایه های زبان سی رو بلدم و در حد متوسط به پایین هم کارکردن با سامانهی عامل گنو رو.
من از الگوریتم اون قدری بلد هستم که بتونم الگوریتم هایی که پیچیدگی ریاضی خاصی ندارنو یاد بگیرم، مثلا الگوریتم های مرتب سازی، تبدیل عبارت های میانوندی به پیشوندی و ...
از ساختمان داده و شبکه هم یه ناخونکایی زدم
و همینطور Glibc رو هم تا حدودی یادگرفتم ولی کاملش نکردم.
این شاخه به خاشه شدن برام خیلی گرون تموم شد و حالا از شما چنتا سوال دارم. متاسفانه متوجه شدم نمیتونم یکی از اینارو در کنار دیگری ادامه بدم و باید روی یکیشون تمرکز کنم. موارد بالا مهم تریناش هست، چیزای زیاد دیگهای هم بودن که من اونارو حذف کردم، چون زیاد مهم نبودن، مثلا یادگیری بیشتر از سامانهی عامل گنو و ابزار های دیگه اصلا در اولویت من نیست، چون فعلا کارم با سطح دانش فعلیم از اونا راه میوفته. یکی از مواردی که باعث شد من خیلی شاخه به شاخه بشم روند طولانی یادگیری هر کدوم از اینا بود، منظور من از طولانی بودن روند یادگیری کامل خوندن و تمرین کردن منابع اونهاست, این از اول تا آخر خوندن باعث شده که فقط بتونم چنتا کتاب معدودو اونم توی زمان بسیار زیاد تموم کنم. یه مشکل دیگهی من هم این وابستگی حوزه ها بود، مثلا ساختمان داده و تمرین برنامه های سی نیاز به الگوریتم داره و ... این تو در تو بودن هم خودش برای یه مشکل بوده. البته این تو درتویی بیشتر برای حوزههایی بوده که من حذفشون کردم.
منابعی که من ازشون استفاده میکنم به شرح زیره:
الگوریتم: برای الگوریتم کتاب الگوریتم و فلوچارت آقای بهرام غلامی رو کامل خواندم.
شبکه: دو جلدی تننبام (ویرایش چهار) فصل اول
ساختمان داده: ساختمان داده با زبان C جعفرنژاد قمی(ترجمه کتاب تننبام) دو فصل اول
Glibc: همون مستندات خود glibc، تا فصل ۱۳ که میشه ورودی و خروجی سطح پایینو خواندم.
حالا سوالاتم:
مشکلات روش من چیه؟
پیشنهاد شما برای ادامه روند یادگیری من چیه؟
روش پیشنهادیتون چیه؟
اصلا این روش خوب هست که من یه منبعو تا آخر پیش برم؟
اولویت با کدوم یکی از ایناست؟
منبع پیشنهادیتون چیه؟
چجوری هم آموزش های قبلیمو تمرین کنم و هم آموزش های در حال یادگیریمو؟ چجوری ساختمان داده، الگوریتم و .. رو تمرین کنم؟ هر کدومو چجوری؟ منظور من از نحوهی تمرین اینا، روش تمرین کردنشون در روند نوشتن یک برنامهی C هست.
مثلا من برای تمرین میرم توی وبگاه کوئرا و یکی از سوال هاشو انتخاب میکنم. حالا چجوری این حوزه هارو با این سوا تمرین کنم.
تمرین الگوریتم رو میدونم ولی خب اگه بخوام الگوریتم تمام برنامه رو از اول تا آخر بنویسم فرایندش خیلی طولانی میشه. اگرم از اول تا آخر ننویسم، وسط حل سوال گیر میکنم و راه و چاهو گم میکنم ؛/
برای تمرین ساختمان داده باز وضعم بهتره.
خلاصه ممنون میشم منو برای رهایی از این گرفتاری راهنمایی کنید. لازم نیست حتما جواب سوالات منو بدید، هر پیشنهاد کاملی که دارید بگید.
اعتراف میکنم تنبل هم هستم.
-
شاید بهتر باشه به این پرسشها پاسخ دهید.
هدف شما از یادگیری این مباحث چیه؟
به چه انگیزهای دارید برای این مطالب وقت صرف میکنید؟
دلیل عجله کردن چیه؟
چرا فکر میکنید طول کشیدن یادگیری مطالب نکتهٔ منفی است؟
چطوری از فرایند یادگیری خروجی گرفتید که فکر میکنید مختل شده؟
-
دقیق متوجه نشدم ولی هگل یک مثال خوبی دربارهی این کار تو دارد و کسی را مثال میزند که میخواهد شنا یاد بگیرد. طرف انواع کتابها دربارهی شنا را میخواند، قوانین را مطالعه میکند، مثلا اینکه چه باعث میشود انسان غرق نشود و محاسبات علمی در این خصوص و... اما هیچگاه شناگر نمیشود. چرا؟ چون اصلا نمیپرد داخل آب و در آن دستوپا نمیزند. اینکه مدام بخواهی بخوانی و مطالعه کنی و یادبگیری خیلی نتیجهی مفیدی ندارد. کلا چیزهایی که اسمشان را آوردی یکباره درست نشدهاند، اول یک نمونهی ساده بودهاند و بعد مدام درشان باگ پیدا کردهاند و بسته به نیاز و اوضاع زمانه و... قابلیت بهشان اضافه شده. شاید در پاسخ به این
پیشنهاد شما برای ادامه روند یادگیری من چیه؟
باید گفت که یک مدت ادامه نده. یک پروژهی عملی شروع کن یا مثلا ایدهای یا چیزی را درست کن و... اگر صرفا رو یک چیز تمرکز کنی و مدام آن را ادامه بدهی، انگار مغز قفل میشود و گیرپاژ میکند. در تاریخ کم نیست دانشمندان و نویسندگان و... که وقتی ایدهی اصلی به ذهنشان خطور کرده که چند وقت به موضوع یا دغدغهشان فکر نکردهاند.
-
۱ )
هر چه سریع تر برید سر کار , مدیر شبکه ای , ISP شهرتون و ...
۲ )
تحصیلات دانشگاهی در رشته کامپیوتر رو ادامه بدید و حتی دکتری بگیرید
۳ )
تو ایران آدمهایی که پراکنده خوندن بسیارند , آدمهایی که یک اقیانوس دانش دارند به عمق ده سانت
۴ )
مجانی آموزش ندید و کار فنی نکنید این چیزها برای جوامع پیشرفتست که آینده مالی مشخص و درامد مشخص برای فرد موجوده
۵ )
بیشتر تمرکزتون رو بزارید که چی بخونم که پول توشه , از یه سنی به بعد پول حرف اول رو میزنه , اگر آدم فرهنگی هستید چیزی بخونید که بتونید پول درست حسابی ازش دربیارید .
۶ )
۳۵ سال در دنیای نرم افزار ده ها میلیون نخبه کد نویسی کردن , Nmap حتی کتاب مفصل داره ولی تقریبا دونستنش بدرد نمیخوره , خلاصه این یه مثال برای اینه که چیز میز فرهنگی برای وقت تلف کردن بسیاره !
-
هدف شما از یادگیری این مباحث چیه؟
به چه انگیزهای دارید برای این مطالب وقت صرف میکنید؟
مهندسی رایانه
دلیل عجله کردن چیه؟
مشکل من اینکه هم نمیتونم چنتا چیزو باهم یادبگیرم و هم اینکه خیلی کندم. منظور من از کند دو سه ماه نیست. ۶ ۷ ماهه.
یه مکشل دیگه ای هم که هست اینکه توی علوم رایانه همه چیز به هم وصله(الگوریتم، ساختمان داده، خود کتابخانه ها و ...)
چطوری از فرایند یادگیری خروجی گرفتید که فکر میکنید مختل شده؟
همین پیشرفت بسیار کند.
باید گفت که یک مدت ادامه نده. یک پروژهی عملی شروع کن یا مثلا ایدهای یا چیزی را درست کن و... اگر صرفا رو یک چیز تمرکز کنی و مدام آن را ادامه بدهی، انگار مغز قفل میشود و گیرپاژ میکند. در تاریخ کم نیست دانشمندان و نویسندگان و... که وقتی ایدهی اصلی به ذهنشان خطور کرده که چند وقت به موضوع یا دغدغهشان فکر نکردهاند.
فعلا توی همین مرحله هستم.
هر چه سریع تر برید سر کار , مدیر شبکه ای , ISP شهرتون و ...
برای کار باید دانشی باشه، با کدوم دانش؟ تازه من بیشتر میخوام روی یادگیر تمرکز کنم تا کار فعلا.
خیلی خوب میشه اگه ترتیب یادگیری موارد بالا رو بگید.
مثلا اول glibc رو تموم کنم و بعد برم برای ساختمان داده یا مثلا توی الگریتم عمق تر بشم.
-
یک تحصیل معقول در مقطع کارشناسی رشته مهندسی کامپیوتر حدود چهار سال طول میکشه.
هر یک از این مطالبی که گفتید مثل طراحی الگوریتمها، ساختمان دادهها و برنامهنویسی کامپیوتر در یک ترم که حداقل پنج ماه هست آموزش داده میشه.
پس اینکه یادگیری زمان ببرد چیزی طبیعی است و از این نظر جای نگرانی ندارد. باید مشکل را درجای دیگری جستجو کنید.
اگر میخواهید پیش از شروع دانشگاه نگاهی به مطالب داشته باشید دورههای دانشگاهی مکتب خونه شروع خوبی هستند.
مثلا درسهای پایهای مثل دادهساختارها از استاد شریفی زارچی و مدارمنطقی از استاد نوابی
https://maktabkhooneh.org/learn/computer-engineering/?types=MAKTAB
عجله شما بی مورد است.عجله نکنید گاهی عمدا وقت تلف کنید. چیزهای خوب زمانبر هستند.
از اینجا به بعد کمی باید نباید دارد که دستوری نیست پیشنهادی و توصیفی است.
اگر شروع به پیش مطالعه و یادگیری دروس رایانه کردید پیشنهاد میکنم سعی کنید
از کارهایی که انجام میدهید خروجی تهیه کنید.
مثلا تمرینهایی را که حل میکنید یا برنامههایی که نوشتهاید را در یک مخزن گیت منتشر کنید.
درباره آنها بنویسید و منتشر کنید.
پیش از هر چیزی یک زبان و دادهساختارهایش را به خوبی بیاموزید و تمرین کنید.
مثلا در زبان سی مباحثی مثل متغیرها، struct، تابع و تخصیص حافظه پویا
یا در پایتون متغیر تابع لیست دیکشنری کلاس اساسی هستند.
برای درسی مثل ساختمان داده لازم است تک تک الگوریتمها را با یک زبان برنامهنویسی خودتان دستی پیادهسازی کنید.
زبانهایی مثل C یا پایتون برای اینکار مناسب هستند.
دادهساختارهایی مثل لیست، لیست پیوندی، درخت، انواع جستجو و درج. اینکه هریک از این ساختارها و الگوریتمها با چه ابزارهایی از زبان پیادهسازی میشوند.
پیادهسازی همینها تمرین بسیار خوبی در بهبود مهارتهای برنامهنویسی است.
مثلا برای پیادهسازی پشته در زبان سی باید از struct تابع و اشارهگرها استفاده کنید.
در انجام این کارها مداومت به خرج دهید. و حداقل الگوریتم و ساختمان داده را به اتمام برسانید.
یک روش را انتخاب کنید منابعی محدود مثل یک دوره ویدیویی و یک کتاب تهیه کنید تنها با همان پیش بروید. دنبال بهترین گزینه هم نباشید. دردسترسترینها مناسب هستند.
یادگیری را از حالت غیر فعال خارج کنید. مثلا اگر امروز مبحث لیست پیوندی را آموزش دیدید روز بعد شروع به پیادهسازی آن با زبان برنامهنویسی کنید و تا وقتی تمام نشده به سراغ مبحث دیگری نروید.
وقتی گام به گام پیش بروید کارها کم کم ساده میشوند. مثلا تا پیش از پیاده سازی لیست پیوندی شما پشته را پیادهسازی کردید. از ساختار structure و توابعی که برای درج و حذف پیشتر پیادهسازی کردید میتوانید اینجا بهره ببرید.
در هر گام سعی نکنید با پریدن گامها میانبر بزنید. یا با دیدن راهحلها موجود تقلب کنید به دانش و توانایی خودتون اتکا کنید.
اگر همراهی پیدا کنید که با هم تمرینها را پیش ببرید شاید در از بین بردن حالت بیانگیزگی مفید باشد.