خانه تکنولوژی

معرفی تکنولوژی روز دنیا

خانه تکنولوژی

معرفی تکنولوژی روز دنیا

نحوه کار رایانه ها را بیاموزید

نحوه کار رایانه ها را بیاموزید

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

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

چرا این را بیاموزید؟

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

ثانیاً ، نوشتن نرم افزار سریع بدون درک نحوه دسترسی به داده ها و اجرای کد غیرممکن است. این امر به ویژه در حال حاضر اهمیت دارد که دسترسی به حافظه اصلی صدها برابر کندتر از اجرای یک دستورالعمل است ... بی توجهی به سلسله مراتب حافظه به احتمال زیاد علت مشکلات عملکرد است ، همانطور که مایک اکتون در صحبت cppcon خود به طور قانع کننده استدلال کرد.

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

اهداف شما

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

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

آنچه خواهید آموخت

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

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

یک دوره واحد

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

یادداشت ها و آزمایشگاه های سخنرانی به صورت آنلاین در دسترس هستند ، و سخنرانی های گذشته در YouTube هستند. به متن همراه پیشنهادی سازمان و طراحی رایانه ای پترسون و هنسی است که هم عالی است و هم معمولاً مورد استفاده قرار می گیرد. همه مطالب عالی است ؛ هیچ سخنرانی ای وجود ندارد که ما پیشنهاد کنیم آن را کنار بگذارید. سیستم های محاسباتی ، که با نام "Nand2Tetris" نیز شناخته می شود ، کتابی بلندپروازانه است که سعی می کند درک منسجمی از نحوه عملکرد همه چیز در رایانه از منطق بولی تا برنامه های کوچک به شما ارائه دهد. هر فصل شامل ساختن قطعه کوچکی از سیستم کلی ، از نوشتن دروازه های منطقی ابتدایی در HDL ، از طریق CPU و اسمبلر ، تا برنامه ای به اندازه بازی Tetris است.

این نیمه اول این کتاب و همه پروژه ها به صورت رایگان از وب سایت Nand2Tetris موجود است. همچنین به عنوان یک دوره Coursera همراه با ویدئوهای موجود در دسترس است.

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

به نظر ما نیمه دوم کتاب به اندازه کتاب اول قانع کننده نیست. حتی در نیمه اول ، Nand2Tetris با مبادله عمق به انسجام خود می رسد. به طور خاص ، دو مفهوم بسیار مهم در معماری رایانه ای مدرن خط لوله و سلسله مراتب حافظه هستند ، اما هر دو بیشتر در متن وجود ندارند. پیشنهاد می کنیم به جای ادامه فرایند مونتاژ به 61 درجه روی بیاورید.

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

منابع متفرقه

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

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

در نهایت ، ما یک مسیر مونتاژ MIPS را به exerciseism.io اضافه کرده ایم. برای سهولت تمرین نوشتن مجمع برای مردم. انجام این کار یک راه ارزشمند برای کشف رابط سخت افزار/نرم افزار است و یادگیری مجموعه MIPS به طور خاص یک یا دو هفته از محتوای 61C را تشکیل می دهد.

به غواصی عمیق تر علاقه دارید؟ بردفیلد هر 2-3 ماه یک دوره معماری کامپیوتر و رابط سخت افزار/نرم افزار را اجرا می کند.

نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد