Searching...
فارسی
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
Computer Science Distilled

Computer Science Distilled

Learn the Art of Solving Computational Problems
توسط Wladston Ferreira Filho 2017
4.07
1k+ امتیازها
گوش دادن
Try Full Access for 7 Days
Unlock listening & more!
Continue

نکات کلیدی

۱. علوم کامپیوتر: ضرورتی برای حل مؤثر مسائل

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

کاربرد عملی. علوم کامپیوتر صرفاً نظریه‌ای انتزاعی نیست؛ بلکه پایه‌ای اساسی برای برنامه‌نویسی مؤثر و حل مسائل در دنیای واقعی است. بسیاری از برنامه‌نویسان آموزش رسمی در علوم کامپیوتر ندارند و این موضوع به راه‌حل‌های ناکارآمد منجر می‌شود. این کتاب با ارائه مفاهیم علوم کامپیوتر به شکلی ساده و قابل فهم، قصد دارد این خلأ را پر کند.

تفکر محاسباتی. جوهره علوم کامپیوتر در تفکر محاسباتی نهفته است؛ رویکردی که مسائل را به سیستم‌های قابل محاسبه تقسیم می‌کند. این روش محدود به برنامه‌نویسی نیست و می‌توان آن را در موقعیت‌های روزمره مانند بهینه‌سازی بسته‌بندی یا تسریع پخت‌وپز با انجام موازی کارها به‌کار برد.

قدرت فراوان، مهارت اندک. قدرت محاسباتی به‌وفور در دسترس است، اما توانایی استفاده بهینه از آن کمیاب است. با تسلط بر اصول علوم کامپیوتر، افراد می‌توانند پتانسیل کامل ماشین‌ها را آزاد کنند و راه‌حل‌های نوآورانه و مؤثری برای مسائل پیچیده بیابند.

۲. منطق: پایه‌ی تفکر محاسباتی

برنامه‌نویسان آن‌قدر با منطق سر و کار دارند که ذهنشان را به هم می‌ریزد.

منطق رسمی. منطق اساس علوم کامپیوتر است و به برنامه‌نویسان امکان می‌دهد مسائل را به‌صورت هدفمند حل کنند. منطق رسمی چارچوبی برای استدلال درباره صحت گزاره‌ها و روابط فراهم می‌کند و از عملگرهایی مانند AND، OR، NOT و شرطی‌ها بهره می‌برد.

جبر بولی. جبر بولی عبارات منطقی را ساده می‌کند، همان‌طور که جبر ابتدایی عبارات عددی را ساده می‌سازد. قوانین دمورگان، به‌عنوان مثال، امکان تبدیل AND به OR و بالعکس را فراهم می‌کنند و در ساده‌سازی مدل‌های منطقی پیچیده کمک می‌کنند.

جدول‌های درستی. جدول‌های درستی روشی نظام‌مند برای تحلیل مدل‌های منطقی هستند که تمام ترکیب‌های ممکن متغیرها را بررسی می‌کنند. با ساخت جدول درستی می‌توان شرایط عملکرد صحیح یک سیستم را تعیین کرد، همان‌طور که در مثال «سیستم شکننده» نشان داده شده است.

۳. شمارش: تسلط بر هنر شمارش

شمارش صحیح اهمیت دارد؛ در حل مسائل محاسباتی بارها باید این کار را انجام دهید.

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

فاکتوریل و جایگشت‌ها. تابع فاکتوریل (n!) تعداد روش‌های مرتب‌کردن n عنصر را محاسبه می‌کند. جایگشت‌ها که ترتیب انتخاب را در نظر می‌گیرند، برای شمارش تعداد روش‌های مرتب‌کردن m عنصر از میان n عنصر به‌کار می‌روند.

ترکیب‌ها و جمع‌ها. ترکیب‌ها که با «n انتخاب m» نشان داده می‌شوند، تعداد روش‌های انتخاب m عنصر از n عنصر بدون توجه به ترتیب را محاسبه می‌کنند. جمع‌ها که با نماد سیگما (Σ) بیان می‌شوند، برای محاسبه مجموع احتمالات در رویدادهای متوالی استفاده می‌شوند، همان‌طور که در مثال «پرواز ارزان» توضیح داده شده است.

۴. احتمال: راهنمایی در دنیای شانس

اصول تصادفی بودن به شما کمک می‌کند قمار را بفهمید، پیش‌بینی هوا را انجام دهید یا سیستم پشتیبان با ریسک پایین طراحی کنید.

محاسبه احتمال. اصول احتمال به کمّی‌سازی احتمال وقوع رویدادها کمک می‌کنند و امکان تصمیم‌گیری آگاهانه در موقعیت‌های مختلف را فراهم می‌آورند. احتمال یک رویداد برابر است با نسبت تعداد حالات ممکن وقوع آن به کل حالات ممکن.

رویدادهای مستقل و ناسازگار. رویدادهای مستقل نتایجی دارند که بر یکدیگر تأثیر نمی‌گذارند و احتمال وقوع همزمان آن‌ها با ضرب احتمال‌هایشان محاسبه می‌شود. رویدادهای ناسازگار نمی‌توانند همزمان رخ دهند و احتمال وقوع هر یک با جمع احتمال‌هایشان به‌دست می‌آید.

رویدادهای مکمل و خطای قمارباز. رویدادهای مکمل تمام حالات ممکن را پوشش می‌دهند و مجموع احتمال‌های آن‌ها برابر با ۱۰۰٪ است. باید از خطای قمارباز که به اشتباه فرض می‌کند رویدادهای گذشته بر نتایج مستقل آینده تأثیر دارند، اجتناب کرد.

۵. تحلیل پیچیدگی: سنجش کارایی الگوریتم‌ها

در تقریباً هر محاسبه، ترتیب‌های مختلفی برای انجام فرایندها وجود دارد.

پیچیدگی زمانی. پیچیدگی زمانی، با نماد T(n)، تعداد عملیات انجام‌شده توسط الگوریتم برای ورودی به اندازه n را اندازه‌گیری می‌کند. تحلیل پیچیدگی زمانی کمک می‌کند پیش‌بینی کنیم زمان اجرا چگونه با افزایش اندازه ورودی تغییر می‌کند.

نماد بزرگ-او. نماد بزرگ-او، عبارت غالب تابع هزینه الگوریتم را در بدترین حالت نشان می‌دهد و روشی استاندارد برای بیان پیچیدگی زمانی است. الگوریتم‌هایی با پیچیدگی کمتر مانند O(n log n) معمولاً برای ورودی‌های بزرگ بهتر از الگوریتم‌هایی با پیچیدگی بالاتر مانند O(n²) عمل می‌کنند.

الگوریتم‌های نمایی. الگوریتم‌های با پیچیدگی نمایی مانند O(2^n) به‌دلیل رشد انفجاری زمان اجرا، «غیرقابل اجرا» محسوب می‌شوند. این الگوریتم‌ها برای ورودی‌های بزرگ عملی نیستند و باید تنها برای مسائل بسیار کوچک استفاده شوند.

۶. استراتژی‌های طراحی الگوریتم: جعبه‌ابزاری برای حل مسئله

اگر حرکت خوبی پیدا کردی، دنبال حرکت بهتر باش.

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

نیروی بی‌رحم و بازگشت به عقب. نیروی بی‌رحم با بررسی تمام گزینه‌های ممکن مسئله را حل می‌کند، در حالی که بازگشت به عقب جستجو را با رد گزینه‌های نامناسب و بازگشت به مرحله قبل بهینه می‌کند. بازگشت به عقب زمانی مؤثر است که انتخاب‌ها محدودیت‌هایی برای انتخاب‌های بعدی ایجاد کنند.

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

۷. ساختارهای داده: سازماندهی اطلاعات برای دسترسی بهینه

برنامه‌نویسان خوب به ساختارهای داده و روابط آن‌ها اهمیت می‌دهند.

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

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

درخت‌ها و جدول‌های هش. درخت‌ها داده‌ها را به‌صورت سلسله‌مراتبی سازماندهی می‌کنند و درخت جستجوی دودویی جستجوی مؤثر را ممکن می‌سازد. جدول‌های هش با استفاده از تابع هش داده‌ها را به مکان‌های حافظه نگاشت می‌کنند و دسترسی با زمان ثابت (O(1)) فراهم می‌آورند، اما نیازمند مدیریت برخوردها هستند.

۸. الگوریتم‌ها: بهره‌گیری از راه‌حل‌های پیشین

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

الگوریتم‌های مرتب‌سازی. الگوریتم‌های مرتب‌سازی داده‌ها را به ترتیب خاصی می‌آرایند؛ الگوریتم‌های ساده‌تر مانند مرتب‌سازی انتخابی و درج دارای پیچیدگی O(n²) و الگوریتم‌های کارآمدتر مانند مرتب‌سازی ادغامی و سریع دارای پیچیدگی O(n log n) هستند. مرتب‌سازی درج برای داده‌های تقریباً مرتب بسیار کارآمد است.

الگوریتم‌های جستجو. الگوریتم‌های جستجو اطلاعات خاصی را در حافظه پیدا می‌کنند؛ جستجوی ترتیبی دارای پیچیدگی O(n) و جستجوی دودویی برای داده‌های مرتب دارای پیچیدگی O(log n) است. جدول‌های هش زمان جستجوی O(1) را فراهم می‌کنند.

الگوریتم‌های گراف. الگوریتم‌های گراف روی داده‌های نمایانده‌شده به‌صورت گره‌ها و یال‌ها عمل می‌کنند؛ جستجوی عمق‌اول (DFS) و جستجوی سطح‌اول (BFS) گراف را به روش‌های متفاوت پیمایش می‌کنند. الگوریتم دیکسترا کوتاه‌ترین مسیر بین گره‌ها را می‌یابد.

۹. پایگاه‌های داده: مدیریت مجموعه‌های عظیم داده

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

پایگاه‌های داده رابطه‌ای. پایگاه‌های داده رابطه‌ای داده‌ها را در جداولی با سطرها و ستون‌ها سازماندهی می‌کنند و با کلیدهای اصلی و خارجی روابط را برقرار می‌سازند. SQL زبان استاندارد پرس‌وجو برای پایگاه‌های داده رابطه‌ای است.

پایگاه‌های داده غیررابطه‌ای (NoSQL). پایگاه‌های داده غیررابطه‌ای با کنار گذاشتن روابط جدولی و طرحواره‌های ثابت، انعطاف بیشتری ارائه می‌دهند. فروشگاه‌های سندی، فروشگاه‌های کلید-مقدار و پایگاه‌های داده گراف نمونه‌هایی از NoSQL هستند.

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

۱۰. معماری کامپیوتر: کشف سازوکارهای درونی

هر فناوری به اندازه کافی پیشرفته، از جادو قابل تشخیص نیست.

پردازنده و حافظه. کامپیوتر از پردازنده (CPU) و حافظه (RAM) تشکیل شده است. حافظه دستورالعمل‌ها و داده‌ها را ذخیره می‌کند و پردازنده دستورالعمل‌ها را واکشی و محاسبات را انجام می‌دهد.

عملیات CPU. CPU عملیات ریاضی ساده انجام می‌دهد و داده‌ها را بین RAM و ثبات‌های داخلی منتقل می‌کند. مجموعه دستورالعمل‌ها عملیات قابل اجرا توسط CPU را تعریف می‌کند.

سلسله‌مراتب حافظه. سلسله‌مراتب حافظه شامل ثبات‌های CPU، کش‌های L1/L2/L3، RAM و حافظه ثانویه (هارد دیسک) است. کش‌ها با بهره‌گیری از محلی بودن زمانی و مکانی، زمان دسترسی به RAM را کاهش می‌دهند.

۱۱. زبان‌های برنامه‌نویسی: پل ارتباطی میان انسان و ماشین

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

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

متغیرها و نوع‌دهی. متغیرها نام‌ها را به مقادیر مرتبط می‌کنند و نوع‌دهی نوع داده را به متغیرها اختصاص می‌دهد. نوع‌دهی ایستا نیازمند اعلام صریح نوع است، در حالی که نوع‌دهی پویا نوع‌ها را در زمان اجرا بررسی می‌کند.

پارادایم‌های برنامه‌نویسی. پارادایم‌های برنامه‌نویسی رویکردهای مختلفی برای حل مسئله ارائه می‌دهند، از جمله برنامه‌نویسی دستوری، شیءگرا و تابعی. هر پارادایم نقاط قوت و ضعف خود را دارد و ساختار و سازمان کد را تحت تأثیر قرار می‌دهد.

آخرین به‌روزرسانی::

نقد و بررسی

4.07 از 5
میانگین از 1k+ امتیازات از Goodreads و Amazon.

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

Your rating:
4.56
15 امتیازها

درباره نویسنده

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

Listen to Summary
0:00
-0:00
1x
Dan
Andrew
Michelle
Lauren
Select Speed
1.0×
+
200 words per minute
Home
Library
Get App
Create a free account to unlock:
Requests: Request new book summaries
Bookmarks: Save your favorite books
History: Revisit books later
Recommendations: Personalized for you
Ratings: Rate books & see your ratings
100,000+ readers
Try Full Access for 7 Days
Listen, bookmark, and more
Compare Features Free Pro
📖 Read Summaries
All summaries are free to read in 40 languages
🎧 Listen to Summaries
Listen to unlimited summaries in 40 languages
❤️ Unlimited Bookmarks
Free users are limited to 4
📜 Unlimited History
Free users are limited to 4
📥 Unlimited Downloads
Free users are limited to 1
Risk-Free Timeline
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on May 23,
cancel anytime before.
Consume 2.8x More Books
2.8x more books Listening Reading
Our users love us
100,000+ readers
"...I can 10x the number of books I can read..."
"...exceptionally accurate, engaging, and beautifully presented..."
"...better than any amazon review when I'm making a book-buying decision..."
Save 62%
Yearly
$119.88 $44.99/year
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.
Scanner
Find a barcode to scan

Settings
General
Widget
Loading...