کتاب Computer Science From Scratch: Building Interpreters, Art, Emulators and ML in Python (علوم کامپیوتر از پایه: ساخت مفسرها، هنر، شبیهسازها و یادگیری ماشین با پایتون) یک راهنمای عملی و پروژه محور است که به خوانندگان کمک میکند مفاهیم اساسی علوم کامپیوتر را از طریق ساخت برنامههای کاربردی درک کنند. این کتاب با استفاده از زبان برنامهنویسی پایتون، به صورت گام به گام نحوه ساخت یک مفسر (مانند یک زبان برنامهنویسی ساده)، یک شبیهساز (مانند یک کنسول بازی قدیمی)، پروژههای مرتبط با هنر دیجیتال و همچنین پروژههای یادگیری ماشین را آموزش میدهد.
هدف اصلی کتاب Computer Science From Scratch این است که به جای تمرکز بر نظریههای انتزاعی، به خواننده نشان دهد که چگونه اصول علوم کامپیوتر در پروژههای واقعی پیادهسازی میشوند و به این ترتیب، درکی عمیق و ملموس از این رشته به دست آورند.
در ادامه مقدمهای از کتاب Computer Science From Scratch را از زبان نویسنده شرح خواهیم داد.
مقدمهای بر کتاب Computer Science From Scratch:
یک زبان برنامهنویسی چگونه کار میکند؟ یک کامپیوتر ساده چگونه سازماندهی شده است؟ من از آن دسته افرادی هستم که دوست دارم موضوعات جدید را از اصول اولیه و به صورت عملی یاد بگیرم. من به دنبال چیزی فراتر از یک مرور کلی در سطح بالا هستم. اگر شما هم اینطور یاد میگیرید، پس منبع درستی را پیدا کردهاید. با انجام هفت پروژه پایتون در این کتاب، شما درک عمیقی از برخی ایدههای بنیادین در دنیای علوم کامپیوتر پیدا خواهید کرد.
کتاب Computer Science From Scratch برای چه کسانی مناسب است؟
این کتاب برای برنامهنویسان پایتون در سطح متوسط و پیشرفته است. اگر یک برنامهنویس مبتدی هستید، احتمالا بهتر است بعدا به این کتاب برگردید. در سراسر متن، فرض بر این است که خواننده با دستور و معنای پایتون آشنایی دارد، میتواند برنامههای با پیچیدگی متوسط بنویسد، میداند چگونه کتابخانههای پایتون را نصب کند و با ساختارهای دادهای اصلی مانند لیستها، مجموعهها و دیکشنریها آشناست.
در حالی که من فرض میکنم خوانندگان تجربه برنامهنویسی دارند، اما هیچ دانشی از علوم کامپیوتر یا ریاضیات پیشرفته فرض نمیشود. کتاب Computer Science From Scratch برای کسانی طراحی شده است که یا تحصیلات رسمی در علوم کامپیوتر ندارند یا میخواهند برخی از خلاءهای دانش خود را پر کنند.
به عنوان مثال، اگر علاقهمند به نوشتن زبان برنامهنویسی خود هستید اما هرگز دورهای در مورد کامپایلرها نگذراندهاید، این کتاب یک نقطه شروع عالی است. اگر میخواهید یک شبیهساز کنسول بازی ویدیویی بسازید، این کتاب به شما نشان خواهد داد که چگونه. حتی یک مقدمه بسیار قابل فهم در مورد یادگیری ماشین نیز دارد.
پروژههای دقیق موجود در کتاب ممکن است هدف نهایی شما نباشند، اما نکته این نیست. به آنها به عنوان وسیلهای برای دستیابی به دانش عمیقتر در مورد تفکر الگوریتمی و نحوه عملکرد نرمافزار نگاه کنید، و به عنوان یک نقطه شروع برای کاوشهای شخصی خود.
محتوای کتاب Computer Science From Scratch
هر فصل یک پروژه کامل را تشکیل میدهد، به استثنای فصلهای 7 و 8 که در مجموع یک پروژه را تشکیل میدهند. هفت پروژه موجود در کتاب از آسان (مفسر Brainfuck در فصل 1) تا دشوار (شبیهساز NES در فصل 6) متغیر هستند، اما از آنجا که تمام کد منبع ارائه شده است، هرگز گیر نخواهید کرد و قادر به ادامه نخواهید بود.
هر پروژه با مقداری تئوری شروع میشود—به اندازهای که بتوانیم بفهمیم چه چیزی را پیادهسازی خواهیم کرد، بدون اینکه در جزئیات غرق شویم—و سپس به توضیح کد میپردازد. هر فصل کتاب Computer Science From Scratch همچنین شامل داستانهایی از چگونگی علاقهمندی شخصی من به موضوع، بحثی در مورد نحوه استفاده از الگوریتمها یا تکنیکهای محاسباتی پیادهسازی شده در دنیای واقعی و چالشهایی برای خواننده به منظور گسترش کد ارائه شده است.
کتاب Computer Science From Scratch به چهار بخش تقسیم شده است. در بخش اول، با ایجاد پیادهسازیهایی از دو زبان برنامهنویسی ساده، دنیای مفسرها را کاوش خواهیم کرد.
فصل 1: سادهترین زبان برنامهنویسی ممکن
Brainfuck یک زبان برنامهنویسی حداقلی است که به دلیل سادگیاش اغلب برای اهداف آموزشی استفاده میشود—تمام زبان تنها از هشت کاراکتر تشکیل شده است. ما با پیادهسازی یک مفسر که میتواند هر برنامه Brainfuck را اجرا کند، یاد خواهیم گرفت که یک مفسر بسیار ساده چگونه کار میکند. همچنین یاد خواهیم گرفت که «کامل بودن تورینگ» برای یک زبان به چه معناست.
فصل 2: نوشتن یک مفسر BASIC
زبان برنامهنویسی BASIC و لهجه سادهشده آن، Tiny BASIC، در طول انقلاب کامپیوترهای شخصی در اواخر دهه 1970 محبوب بودند. ما یک مفسر برای یک نوع کمی سادهشده از Tiny BASIC به نام NanoBASIC پیادهسازی خواهیم کرد. انجام این کار اجزای تشکیلدهنده مفسرهای پیچیدهتر، از جمله یک توکنایزر، پارسر و محیط زمان اجرا را نشان خواهد داد.
در بخش دوم کتاب Computer Science From Scratch، وارد دنیای پر جنب و جوش هنر محاسباتی خواهیم شد.
فصل 3: پردازش تصویر به سبک رترو
زمانی که فناوری نمایشگر سادهتر بود، الگوریتمهای دیترینگ برای تطبیق تصاویر با دستگاههایی که از پالت رنگی محدودی استفاده میکردند، ضروری بودند. ما یک الگوریتم دیترینگ را پیادهسازی خواهیم کرد که قادر به نمایش عکسهای رنگی مدرن بر روی صفحه نمایش سیاه و سفید یک Macintosh اصلی باشد. سپس، تصاویر دیتر شده را با استفاده از الگوریتم فشردهسازی run-length encoding به فرمتی سازگار با برنامه کلاسیک MacPaint تبدیل خواهیم کرد. تصاویری که ما تولید میکنیم میتوانند بر روی سختافزار واقعی Macintosh دهه 1980 نمایش داده شوند.
فصل 4: یک الگوریتم نقاشی تصادفی
آیا یک الگوریتم نسبتا ساده میتواند هنر انتزاعی پیچیده ایجاد کند؟ ما از یک تکنیک تصادفی برای تولید “برداشتهایی” از تصاویر موجود با تطبیق اشکال تصادفی با تصویر اصلی استفاده خواهیم کرد و خواهیم دید که چگونه یک الگوریتم کوهنوردی میتواند به بهینهسازی نتایج کمک کند.
بخش سوم کتاب Computer Science From Scratch تماماً در مورد شبیهسازها است—برنامههایی که به یک نوع کامپیوتر اجازه میدهند وانمود کند یک نوع کامپیوتر دیگر است.
فصل 5: ساخت یک ماشین مجازی CHIP-8
CHIP-8 یک مشخصات ماشین مجازی (VM) است که در اصل برای توسعه بازیهای ویدیویی در دهه 1970 استفاده میشد. ساخت یک VM CHIP-8 اغلب بهترین اولین قدم برای ورود به دنیای شبیهسازی در نظر گرفته میشود: نسبتا ساده است اما هنوز شامل تمام مراحل لازم برای ایجاد یک شبیهساز است. VM CHIP-8 ما قادر به اجرای تمام بازیهای CHIP-8 خواهد بود که در دهه 1970 بر روی ماشینها اجرا میشدند.
فصل 6: شبیهسازی کنسول بازی NES
NES یکی از پرفروشترین کنسولهای بازی ویدیویی در تمام دورانها بود. ما یک شبیهساز ایجاد خواهیم کرد که میتواند بازیهای واقعی NES را اجرا کند. این شبیهساز صدا نخواهد داشت، نسبتا کند خواهد بود و کاملا دقیق یا به طور جهانی سازگار نخواهد بود، اما همچنان یک راه عالی برای یادگیری نه تنها در مورد شبیهسازها بلکه در مورد نحوه عملکرد کامپیوترها در سطح پایین است.
در نهایت، بخش چهارم کتاب Computer Science From Scratch، یک مقدمه بسیار ملایم به دنیای یادگیری ماشین با استفاده از الگوریتم k-نزدیکترین همسایه (KNN) است.
فصل 7: طبقهبندی با K-نزدیکترین همسایه
ما KNN، شاید سادهترین الگوریتم در یادگیری ماشین (ML)، را یاد خواهیم گرفت و از آن به عنوان دروازهای برای درک برخی موضوعات مقدماتی ML استفاده میکنیم. ما از KNN برای طبقهبندی ماهیها و همچنین تصاویر ارقام دستنویس استفاده خواهیم کرد. به طرز شگفتانگیزی، این کار را با دقت 98 درصد انجام خواهد داد.
فصل 8: رگرسیون با K-نزدیکترین همسایه
ما KNN را با استفاده از آن نه تنها برای طبقهبندی موارد به دستهها بلکه برای پیشبینی ویژگیهای ناشناخته نقاط داده، به سطح بعدی خواهیم برد. در پایان فصل، از آن برای پیشبینی پیکسلهای گمشده از تصویری از یک رقم که کاربر ترسیم میکند، استفاده خواهیم کرد.
علاوه بر فصول اصلی، بخش پایانی کتاب Computer Science From Scratch برخی منابع پیشنهادی برای یادگیری بیشتر در مورد موضوعات این کتاب را ارائه میدهد و پیوست اصول اولیه دستکاری بیت در سطح پایین در پایتون، که یک جزء ضروری در چندین پروژه است، را پوشش میدهد.
رویکرد کتاب Computer Science From Scratch
من سعی میکنم کتابهایم را تا حد امکان مختصر نگه دارم. برای وقت شما ارزش قائلم. من از یک قالب آموزشی و کد محور برای تدریس استفاده میکنم و در صورت امکان، اجازه میدهم کد خودش صحبت کند.
کتاب Computer Science From Scratch یک کتاب درسی نیست. مقداری تئوری، به ویژه در ابتدای هر فصل، پیدا خواهید کرد، اما هرگز خیلی طولانی نخواهد بود تا به کد برسیم. اطلاعات کافی برای کمک به شما در درک نحوه کار هر یک از پروژهها وجود دارد و نکات کافی برای اینکه بدانید اگر میخواهید عمیقتر به هر یک از موضوعات پوشش داده شده بپردازید، کجا باید جستجو کنید.
من ادعا نمیکنم که یک متخصص در مفسرها، هنر محاسباتی، شبیهسازها یا یادگیری ماشین هستم. این ممکن است از زبان نویسنده یک کتاب در مورد این موضوعات عجیب به نظر برسد، اما حقیقت دارد. من یک متخصص نیستم؛ من یک معلم هستم.
من به عنوان یک توسعهدهنده نرمافزار کار کردهام و به عنوان هیئت علمی علوم کامپیوتر در یک کالج تدریس کار کردهام. ادعای من این است که میتوانم کد تمیز بنویسم و آن کد را به شکلی استثنائاً قابل فهم برای شما توضیح دهم. و از آنجا که من یک متخصص نیستم، با شما از بالا صحبت نخواهم کرد.
من با شما مانند یک همسفر رفتار خواهم کرد، همانطور که این سفر را با هم طی میکنیم. این راهنمایی است که آرزو داشتم زمانی که خودم سعی در انجام پروژههایی در این زمینهها داشتم، آن را داشتم.
سرفصلهای کتاب Computer Science From Scratch:
- Title Page
- Copyright
- Dedication
- About the Author and the Technical Reviewers
- Acknowledgments
- Introduction
- Who This Book Is For
- What’s in the Book
- This Book’s Approach
- About the Code
- Corrections and Comments
- Part I: Interpreters
- 1. The Smallest Possible Programming Language
- 2. Writing a Basic Interpreter
- Part II: Computational Art
- 3. Retro Image Processing
- 4. A Stochastic Painting Algorithm
- Part III: Emulators
- 5. Building a Chip-8 Virtual Machine
- 6. Emulating the NES Game Console
- Part IV: Super-Simple Machine Learning
- 7. Classification with K-Nearest Neighbors
- 8. Regression with K-Nearest Neighbors
- Afterword
- What We Did and What’s Next
- On Learning Computer Science
- Interpreters
- Computational Art
- Emulators
- Machine Learning
- Appendix: Bitwise Operations
- A Review of Binary
- Common Bitwise Operations
- Index
جهت دانلود کتاب Computer Science From Scratch میتوانید پس از پرداخت، دریافت کنید.
دیدگاهها
هیچ دیدگاهی برای این محصول نوشته نشده است.