کتاب C++ Programming for Linux Systems: Create robust enterprise software for Linux and Unix-based operating systems (برنامهنویسی C++ برای سیستمهای لینوکس: نرمافزار سازمانی قوی برای سیستم عاملهای لینوکس و یونیکس ایجاد کنید) به صورت کاربردی و عملیاتی راهنمای برنامهنویسی زبان قدرتمند C++ برای سیستمهای لینوکس است.
در ادامه مقدمهای از کتاب C++ Programming for Linux Systems را از زبان نویسنده شرح خواهیم داد.
مقدمهای بر کتاب C++ Programming for Linux Systems:
با سلام، خواننده عزیز! شما در میان دوستان هستید. به این سفر مهارت های پیشرفته، شگفتی های غیرمنتظره، دانش حیله گر و ابزارهای برنامهنویسی جدید خوش آمدید. فرض کنید شما یک مهندس نرم افزار باتجربه هستید که نحوه نوشتن کدهای با کیفیت را بلد هستید و از برخی سیستم های ساخت و ساز آگاه هستید.
شما همچنین با چندین معماری کامپیوتر آشنا شده اید و یک یا دو باگ را برطرف کرده اید. و در مورد موارد زیر چطور: شما دانشجویی هستید که به تازگی یاد میگیرید که چگونه کار یک مهندس نرم افزار را انجام دهید. شما میخواهید روزی یک حرفه ای خوب شوید و هر زمان که نرمافزار غیرقابل پیشبینی رفتار میکند، متخصصی باشید که دیگران با او تماس میگیرند. یا فقط از روی علاقه اولیه کتاب C++ Programming for Linux Systems را انتخاب کرده اید، هنوز نمیدانید چه انتظاری دارید. سپس کامل!
ما شما را به یاد میآوریم که هر موقعیتی را در تمرین خود به خاطر بسپارید، جایی که تا به امروز هیچ توضیحی درباره آنچه اتفاق افتاده است ندارید. نه، منظور ما فراطبیعی نیست – اگرچه این موضوع نسبتاً محرمانه است. ما در مورد سیستم و نحوه رفتار آن به عنوان مهندسان حرفهای صحبت میکنیم.
کد ما فقط ابزاری است که به ماشین می گوید چه کاری انجام دهد. بنابراین، بیایید بگوییم که شما آن یک باگ را به خاطر آورده اید که مدتی است شما را آزار میدهد – چگونه ادامه دهید؟ چه میشود اگر بین شما و تبلیغ بعدی شما قرار گیرد؟ وقتی مشتری را که برای شما مهم است ناامید میکند چطور؟ یا فقط می خواهید معلم خود را تحت تأثیر قرار دهید. ما شما را درک می کنیم! ما هم آنجا هستیم
هر چند فریب نخورید. ما به شما این فرصت را میدهیم که روش مهندسی خود را از طریق برخی از نکات اساسی غنی کنید، اما همه پاسخها را نداریم. ما قویاً معتقدیم که تغییر نحوه عملکرد کد، شما را به یک متخصص قویتر تبدیل میکند، صرف نظر از رشته حرفهایتان و باید مراقب باشید زیرا دنیای فناوری به سرعت در حال پیشرفت است.
همگام شدن با هر نوآوری، الگوریتم، زبان، سیستم عامل و معماری غیرممکن است. اما میتوانید در لحظه مناسب شروع به پرسیدن سوالات درست از خود کنید. شما این امکان را دارید که بدانید چگونه بیشتر بهینهسازی کنید، بهتر طراحی کنید، محیط خود را تأیید کنید و خودتان را تشویق کنید که کار خود را به طور کامل درک کنید.
ما دوباره شما را به چالش میکشیم. این بار با تجربه و تخصص خود خودآگاهتر و کارآمدتر باشیم. چالشهای پیچیدهای در دنیای واقعی وجود دارد که ما بیصبرانه میخواهیم با شما به اشتراک بگذاریم. لطفاً به یاد داشته باشید، مدتی طول میکشد. به عنوان دوستان، امیدواریم از کتاب C++ Programming for Linux Systems لذت ببرید و قسمتهای هیجانانگیز آن را با دیگران به اشتراک بگذارید.
بیشتر بخوانید: کتاب Test-Driven Development with C++
کتاب C++ Programming for Linux Systems برای چه کسی است؟
این کتاب برای برنامه نویسان و توسعهدهندگانی است که میخواهند دانش برنامهنویسی خود را در C++ برای سیستم عاملهای مبتنی بر لینوکس و یونیکس تقویت کنند. چه یک مبتدی باشید که به دنبال یادگیری نحوه استفاده از ++C در چنین محیطی هستید یا یک برنامه نویس با تجربه که به دنبال کشف آخرین ویژگی های C++20 قابل استفاده در برنامهنویسی سیستم است، این کتاب برای شما مفید خواهد بود.
آنچه کتاب C++ Programming for Linux Systems پوشش میدهد:
فصل 1 کتاب C++ Programming for Linux Systems، شروع به کار با سیستمهای لینوکس و استاندارد POSIX، خواننده را با استدلال پشت وجود سیستم عاملهای مختلف آشنا میکند. ویژگیهای لینوکس مورد بحث قرار میگیرد و خواننده به سراغ اصول برنامهنویسی سیستمعامل مبتنی بر یونیکس میرود. فضای هسته و فضاهای کاربر ذکر شده است زیرا رابط تماس سیستم به طور کامل توضیح داده شده است. پس از آن، ما از این فرصت برای ارائه POSIX و برخی فراخوانی های تابع استاندارد استفاده می کنیم تا به خواننده اجازه دهیم مزایای برنامهنویسی سیستم را درک کند.
فصل 2 کتاب C++ Programming for Linux Systems، یادگیری بیشتر در مورد مدیریت فرآیند، آموختههای فصل قبل را بسط میدهد و بیان میکند که اگر سیستم عامل مدیر اصلی منبع باشد، پس فرآیند کاربر اصلی منبع است. این کار را از طریق یک روال انجام میدهد، که می تواند پیچیده شود و باید به خوبی تجزیه و تحلیل شود. بنابراین، فصل از طریق چرخه حیات فرآیند اصلی – راه اندازی، اجرا، و حالتهای نهایی آن می گذرد. ماهیت موضوع نیز ارائه شده است.
ما الگوریتمهای زمان بندی سیستم عامل را نیز بررسی میکنیم. یک نمونه برنامه ++C معرفی شده و تابع main() آن به عنوان نقطه ورودی مورد بحث قرار میگیرد. علاوه بر این، راههای مختلفی برای شروع یک فرآیند ارائه شده است: fork()، vfork() و exec(). سایر توابع اساسی مانند wait()، exit()، pthread_create() و pthread_join() نیز مورد بحث قرار گرفتهاند.
فصل 3 کتاب C++ Programming for Linux Systems، پیمایش در میان فایلسیستمها، نشان میدهد که چگونه فایل بازنمایی منبع اصلی در لینوکس است – هم برای دادهها و هم برای دسترسی به دستگاههای ورودی/خروجی. این انتزاع به کاربر اجازه میدهد تا جریان ها را دستکاری کند یا دادهها را به روشی مشابه، از طریق رابط های سیستمی یکسان ذخیره کند. ساختار سیستم فایل – فراداده و inodes مورد بحث قرار گرفته است. نمونه هایی از عملیات سیستم فایل C++ به خواننده ارائه میشود.
ما از این فرصت برای معرفی لولهها به عنوان ابزار اولیه برای ارتباطات بین فرآیندی استفاده میکنیم. شی string_view C++20 نیز ارائه شده است. در پایان، ما به مدیریت سیگنال اشاره میکنیم که برای فصلهای بعدی مورد نیاز خواهد بود.
فصل 4 کتاب C++ Programming for Linux Systems، غواصی عمیق در شیء C++، خواننده را از طریق برخی از ویژگیهای اصلی C++ مانند فرآیند ایجاد شی و مقداردهی اولیه آن راهنمایی میکند. ما مشکلات شی مادام العمر، موقت، RVO، الگوی RAII و C++20 را مورد بحث قرار می دهیم. ما همچنین اشیاء تابع و عبارات لامبدا را همراه با مشخصات آنها و راهنمایی در مورد نحوه استفاده از آنها پوشش می دهیم. در مرحله بعد، ما عمیق تر به لامبدا خواهیم رفت. در پایان، ما بر روی چند نمونه خاص از نحوه استفاده از لامبدا در STL و multithreading تمرکز خواهیم کرد.
فصل 5 کتاب C++ Programming for Linux Systems، مدیریت خطاها با C++، انواع مختلف گزارش خطا در برنامهنویسی C++ را برای سیستم عامل های مبتنی بر یونیکس، مانند کدهای خطا، استثناها، و ادعاها بررسی میکند. ما در مورد بهترین شیوهها در رسیدگی به استثناها و دستکاری استثناها و آنچه با استثناهای کشف نشده در سیستم اتفاق می افتد بحث خواهیم کرد. ما در مورد مشخصات استثنا و اینکه چرا کلمه کلیدی noexcept را ترجیح می دهیم صحبت خواهیم کرد.
ما در هنگام استفاده از استثناها و مکانیک پشت آنها، تأثیر عملکرد را بررسی خواهیم کرد. در ادامه، نحوه استفاده از std::option را برای مدیریت خطاها مورد بحث قرار خواهیم داد. در پایان، ما در مورد آنچه که عملکرد std::uncaught_exceptions ارائه میدهد بحث خواهیم کرد.
فصل 6 کتاب C++ Programming for Linux Systems، برنامهنویسی سیستم همزمان با C++، به مبانی و تئوری پشت فرآیندها و رشته ها در سیستم عامل های مبتنی بر یونیکس می پردازد. ما تغییرات مدل حافظه ++C را برای پشتیبانی از همزمانی به صورت بومی مرور خواهیم کرد. ما با C++ های اولیه آشنا می شویم که پشتیبانی چند رشته ای را امکانپذیر میکند – thread، jthread و task. در مرحله بعد، نحوه همگام سازی اجرای کدهای موازی با استفاده از C++ را یاد خواهیم گرفت. ما همچنین آنچه را که STL در جهت الگوریتمهای موازی ارائه میدهد را بررسی خواهیم کرد. در پایان با نحوه نوشتن کد بدون قفل آشنا می شویم.
فصل 7 کتاب C++ Programming for Linux Systems، ادامه با ارتباطات بین فرآیندی، خوانندگان را از طریق مکانیسمهای اساسی IPC در محیط لینوکس راهنمایی میکند (زیرا آنها قبلاً تصوری از چالشهای چند رشتهای دارند). مهم است که فرآیندها بتوانند به راحتی با یکدیگر ارتباط برقرار کنند، بنابراین، ما به سرعت از صفهای پیام عبور می کنیم.
آنها امکان تبادل دادهها را بدون مسدود کردن فرآیندها فراهم می کنند. ما مدتی را صرف بحث در مورد مکانیسمهای همگام سازی خواهیم کرد – سمافور و mutex – و سپس با حافظه مشترک ادامه خواهیم داد. دسترسی سریع به برخی از دادهها را فراهم میکند و در عین حال به سیستمهای ناهمگن اجازه میدهد تا نقطه مشترکی برای تبادل داده داشته باشند. در نهایت، سوکتها اغلب مورد استفاده قرار می گیرند، اما عمدتاً به دلیل امکان ارتباط بین سیستمهای رایانه ای در شبکه.
فصل 8 کتاب C++ Programming for Linux Systems، استفاده از ساعتها، تایمرها و سیگنالها در لینوکس، سیگنالها و تایمرها را در سیستمعاملهای مبتنی بر یونیکس معرفی میکند. در ابتدا نحوه عملکرد سیستم سیگنالینگ و نحوه مدیریت موثر زمان عملیات توسط کاربر را ارائه خواهیم داد. ما آنچه را که زبان C++ به عنوان عملکردی برای کنترل ساعتها و تایمرها ارائه میدهد را پوشش خواهیم داد. ما API زمان استاندارد، std::chrono، ساعتها و زمانهای از پیش تعریف شده را معرفی خواهیم کرد.
در ادامه به نحوه استفاده صحیح از آنها و انتظارات از آنها خواهیم پرداخت. در مرحله بعد، ما بر روی قابلیتهای مدت زمانی که استاندارد ارائه میدهد و ساعتهای تعریف شده توسط کاربر تمرکز خواهیم کرد. در نهایت، کتابخانههای تقویم و منطقه زمانی معرفی شده در C++20 را پوشش خواهیم داد.
فصل 9 کتاب C++ Programming for Linux Systems، درک مدل حافظه C++، برخی از ویژگیهای جدید C++20 را بررسی میکند. خواننده را از طریق برخی از نکات مهم در مورد چگونگی و چرایی مدیریت منابع پویا راهنمایی میکند. این با بحث در مورد متغیرهای شرطی و موارد استفاده mutex، و همچنین مقداردهی اولیه تنبل و سازگاری با حافظه پنهان ادامه مییابد. مقدمهای بر ترتیب حافظه C++ در ادامه با بحث در مورد راههای انتخاب از بین مکانیسمهای مختلف همگامسازی ارائه میشود. تکنیکهای spinlock/ticketlock نیز ارائه شدهاند.
فصل 10 کتاب C++ Programming for Linux Systems، استفاده از کوروتینها در سیپلاسپلاس برای برنامهنویسی سیستم، در مورد کوروتین ها صحبت میکند، اصطلاحی که قبلاً در برخی از زبانهای برنامهنویسی پیاده سازی شده است، اما اکنون در C++20 معرفی شده اند. آنها به عنوان عملکردهای بدون پشته توصیف می شوند که در طول اجرا به حالت تعلیق درآمده و بعداً از سر گرفته می شوند.
این فصل از کتاب C++ Programming for Linux Systems دقیقاً آن ویژگیهای ارزشمند را در زمینه برنامهنویسی سیستم مورد بحث قرار میدهد. معایب آنها نیز مورد بحث قرار میگیرد، برای مثال، نگه داشتن حالت معلق در پشته. برخی از کاربردهای عملی ارائه شده است.
سرفصلهای کتاب C++ Programming for Linux Systems:
- C++ Programming for Linux Systems
- Foreword
- Contributors
- About the author(s)
- About the reviewer(s)
- Preface
- Part 1:Securing the Fundamentals
- Chapter 1: Getting Started with Linux Systems and the POSIX Standard
- Chapter 2: Learning More about Process Management
- Chapter 3: Navigating through the Filesystems
- Chapter 4: Diving Deep into the C++ Object
- Chapter 5: Handling Errors with C++
- Part 2:Advanced Techniques for System Programming
- Chapter 6: Concurrent System Programming with C++
- Chapter 7: Proceeding with Inter-Process Communication
- Chapter 8: Using Clocks, Timers, and Signals in Linux
- Chapter 9: Understanding the C++ Memory Model
- Chapter 10: Using Coroutines in C++ for System Programming
- Index
- Other Books You May Enjoy
جهت دانلود کتاب C++ Programming for Linux Systems میتوانید پس از پرداخت، دریافت کنید.
دیدگاهها
هیچ دیدگاهی برای این محصول نوشته نشده است.