C How to Program, 9th Edition
به کتاب C How to Program, Ninth Edition (چگونگی برنامه نویسی با سی، ویرایش نهم)، خوش آمدید. ما در این کتاب مقدمهای دوستانه، امروزی، متمرکز بر کد و مورد مطالعاتی محور برای C ارائه میکنیم که یکی از محبوبترین زبانهای برنامهنویسی در جهان است. چه دانشجو باشید، چه یک مربی یا یک برنامه نویس حرفه ای، این کتاب چیزهای زیادی برای ارائه به شما دارد. در این پیشگفتار، «روح کتاب» را معرفی میکنیم.
در قلب این کتاب، رویکرد live-code که امضای Deitel است وجود دارد که ما به طور کلی مفاهیم را در چارچوب 147 برنامهی سی کامل و کارا و واقعی ارائه میکنیم نه در قالب تکه کد ها. شما باید هر برنامه را به موازات خواندن متن اجرا کنید تا تجربه یادگیری خود را «زنده کنید». ما در مورد این روندهای مهم بیشتر خواهیم گفت. اینترنت اشیا (IoT) در حال حاضر دهها میلیارد دستگاه کامپیوتری از هر نوع قابل تصوری را به هم متصل میکند. اینها حجم عظیمی از داده (یک شکلی از «کلان داده») را با سرعت و کمیت به سرعت در حال افزایش تولید میکنند. در نتیجه بیشتر محاسبات در نهایت به صورت آنلاین در «ابر» انجام خواهد شد؛ یعنی با استفاده از خدمات محاسباتی قابل دسترس از طریق اینترنت.
برای مبتدیان، فصلهای ابتدایی کتاب، پایه ای محکم در مبانی برنامه نویسی ایجاد میکند. فصلهای میانرده تا سطح بالا و بیش از 20 مورد مطالعاتی، ورود تازهکاران را به دنیای چالشها و شیوههای حرفهای توسعه نرمافزار آسان میکند. با توجه به نیازهای عملکردی خارقالعادهای که برنامههای امروزی از سختافزار کامپیوتر، نرمافزار و اینترنت انتظار دارند، متخصصان اغلب زبان C را برای ساختن بخشهای نیازمند کارایی بالا در این برنامهها انتخاب میکنند. در سراسر کتاب، ما بر مسائل مربوط به کارایی تاکید میکنیم تا به شما برای آماده شدن برای صنعت کمک کنند.
ویژگیهای ویرایش نهم کتاب چگونگی برنامه نویسی با سی دایتل عبارتند از:
- ما یک نمودار فهرست مطالب تک صفحه ای رنگی را به کاور ابتدایی کتاب اضافه کردیم که دیدن کتاب را از ارتفاع «۴۰۰۰۰ پایی» هم راحت میکند. این چارت بر معماری ماژولار کتاب تاکید میکند و بیشتر موارد مطالعاتی را فهرست میکند.
- برخی از موارد مطالعاتی، بخش هایی از کتاب هستند که سورس کد کاملی را بررسی میکنند؛ اینها توسط تمرینهای پایان فصل پشتیبانی میشوند که ممکن است از شما بخواهند که کد ارائهشده در متن را تغییر دهید یا چالشهای مرتبط را انجام دهید. برخی از آنها تمرین هایی با مشخصات دقیق هستند که باید بتوانید راه حل کد را به تنهایی توسعه دهید. برخی نیز تمرینهایی هستند که از شما میخواهند تا از وبسایتهایی که حاوی آموزشهای خوبی هستند بازدید کنید. همچنین تمرینهایی هم هستند که از شما میخواهند تا از وبسایتهای توسعهدهنده بازدید کنید، جایی که ممکن است کدی برای مطالعه وجود داشته باشد، اما آموزشی وجود ندارد و حتی ممکن است کد به خوبی توضیح داده نشده باشد. مربیان تصمیم خواهند گرفت که کدام یک از این موارد مطالعاتی برای مخاطبان خاص خودشان مناسب است.
- ما به استانداردهای C11/C18 پایبند هستیم.
- ما تمام کدها را از نظر صحت در سیستمعاملهای Windows، macOS و Linux با استفاده از آخرین نسخههای کامپایلرهای Visual C++، Xcode و GNU gcc تک تک آزمایش کردیم و تفاوتهای بین پلتفرمها را ذکر کردیم.
- ما از ابزار تجزیه و تحلیل کد ایستا clang-tidy استفاده کردیم تا تمام کدهای موجود در مثالهای کتاب را برای پیشنهادات بهبود بررسی کنیم، از موارد ساده مانند اطمینان از مقداردهی اولیه متغیرها تا هشدارهای مربوط به نقصهای امنیتی احتمالی.
- کامپایلر GNU gcc سازگارترین کامپایلر C است. برای قادر ساختن کاربران macOS و Windows برای استفاده از gcc در صورت تمایل، فصل 1 شامل یک test-drive است که نحوه کامپایل برنامهها و اجرای آنها را با استفاده از gcc در container چند پلتفرمی GNU Compiler Collection Docker نشان میدهد.
- ما بیش از 350 تمرین یکپارچه Self-Check را اضافه کردهایم که هر کدام بلافاصله پاسخ خود را به دنبال دارند.
- برای اطمینان از موضوعی بودن محتوای کتاب، تحقیقات اینترنتی گسترده ای به طور خاص در مورد C و به طور کلی دنیای محاسبات انجام دادیم که بر انتخاب موارد مطالعاتی ما تأثیر گذاشت. ما C را طوری نشان میدهیم که قرار است با مجموعهای غنی از برنامهنویسی برنامهها و موارد مطالعاتی برنامهنویسی سیستمها، با تمرکز بر علوم رایانه، هوش مصنوعی، علوم داده و سایر زمینهها مورد استفاده قرار گیرد.
- در متن، مثالهای کدی، تمرینها و موارد مطالعاتی، دانشجویان را با موضوعات فعلی مورد علاقه توسعهدهندگان از جمله نرمافزار متن باز، مجازیسازی، شبیهسازی، وب سرویس ها، چند نخی، معماری سختافزار چند هستهای، برنامهنویسی سیستم، برنامهنویسی بازی، انیمیشن، تجسم، گرافیک دو بعدی و سه بعدی، هوش مصنوعی، پردازش زبان طبیعی، یادگیری ماشین، رباتیک، علم داده، برنامه نویسی ایمن، رمزنگاری، Docker، GitHub، StackOverflow، انجمنها و موارد دیگر آشنا میکنیم.
- ما به آخرین توصیههای برنامه درسی محاسباتی ACM/IEEE، که شامل پوشش مفاهیم امنیت، علم داده، اخلاق، حریم خصوصی و عملکرد و استفاده از دادههای دنیای واقعی در سراسر برنامه درسی است، پایبند هستیم.
- بیشتر فصلهای ویرایشهای اخیر این کتاب با بخشهای برنامهنویسی سی امن پایان مییابد که بر استاندارد کد نویسی SEI CERT C از گروه CERT موسسه مهندسی نرمافزار دانشگاه کارنگی ملون (SEI) تمرکز دارد.
- مطابق با رفتار غنیتر ما در زمینه امنیت، یک سری موارد مطالعاتی را در مورد رمزنگاری کلید مخفی و کلید عمومی اضافه کردهایم. مورد دوم شامل شرح مفصلی از مراحل الگوریتم بسیار محبوب RSA است که نکاتی را برای کمک به شما در ایجاد یک پیادهسازی ساده و در مقیاس کوچک ارائه میدهد.
- ما موارد مطالعاتی موجود را بهبود بخشیدهایم و موارد جدیدی را با تمرکز بر هوش مصنوعی و علم داده اضافه کردهایم، از جمله شبیهسازی با تولید اعداد تصادفی، تجزیه و تحلیل دادههای نظرسنجی، پردازش زبان طبیعی (NLP) و هوش مصنوعی (یادگیری ماشینی با رگرسیون خطی ساده).
- تمرینهایی اضافه کردهایم که در آنها دانشجویان از اینترنت برای تحقیق در مورد مسائل اخلاقی و حریم خصوصی در محاسبات استفاده میکنند.
- ما مورد مطالعاتی عملکرد چند نخی و چند هسته ای خود را ارتقا دادیم. همچنین هر زمان که در مورد یک موضوع مربوط به عملکرد در متن بحث میکنیم، نماد عملکرد را در حاشیه نشان میدهیم.
- ما صدها نکته توسعه نرمافزار ویرایش قبلی را مستقیماً در متن ادغام کردیم تا تجربه خواندن روانتری ارائه دهیم. ما خطاهای رایج و شیوههای خوب مهندسی نرم افزار را با نمادهای حاشیه جدیدی نشان داده ایم.
- ما پیوست خود را در مورد الگوریتمهای مرتبسازی اضافی و تجزیه و تحلیل الگوریتمهای دارای Big O را تبدیل به یک فصل کامل کرده ایم.
- برنامه نویسان C اغلب متعاقباً یک یا چند زبان شی گرا مبتنی بر C را یاد میگیرند. ما یک پیوست اضافه کردیم که مقدمه ای دوستانه برای مفاهیم و اصطلاحات برنامه نویسی شی گرا ارائه میکند. C یک زبان برنامهنویسی رویهای است، بنابراین این ضمیمه به دانشجویان کمک میکند تا تفاوتهای تفکر بین توسعهدهندگان C و افرادی را که به زبانهایی مانند C++، Java، C#، Objective-C، Swift و دیگر زبانهای شیگرا برنامهنویسی میکنند، درک کنند. ما کارهای زیادی مانند این را در کتاب انجام میدهیم تا دانشجویان را برای صنعت آماده کنیم.
- در حال حاضر چندین مورد مطالعاتی شما را به استفاده از کتابخانهها و ابزارهای متن باز وادار میکنند.
- ما یک مطالعه موردی اضافه کردیم که تجسم را با gnuplot انجام میدهد.