- عنوان کتاب: Why Learn C
- نویسنده: Paul J. Lucas
- حوزه: برنامهنویسی C
- سال انتشار: 2025
- تعداد صفحه: 414
- زبان اصلی: انگلیسی
- نوع فایل: pdf
- حجم فایل: 11.3 مگابایت
این سوالی است که میبینم بسیاری از برنامهنویسان مبتدی (و برخی از برنامهنویسان متوسط) میپرسند. از آنجایی که شما در حال خواندن این مقدمه هستید، شاید شما هم همین سوال را داشته باشید. با توجه به اینکه زبان C در سال ۱۹۷۲ ایجاد شد و از آن زمان زبانهای مدرن بسیار بیشتری ایجاد شدهاند، این سوال منصفانهای است. تا حدودی بدیهی است (از آنجایی که این کتاب وجود دارد)، من معتقدم که پاسخ “بله” است. چرا؟ چند دلیل: ۱. زبانهای مدرن ویژگیهای زیادی برای مواردی مانند ساختارهای داده (مثلاً آرایههای پویا، لیستها، نقشهها)، کنترل جریان (اعمال پویا، استثنائات) و الگوریتمها (مثلاً شمارش، تکرار، جستجو، انتخاب، مرتبسازی) به عنوان بخشی از زبان دارند (چه مستقیماً داخلی باشند و چه به راحتی از طریق کتابخانههای استاندارد آنها در دسترس باشند). اگرچه راحت هستند، اما نحوه پیادهسازی این ویژگیها “پشت پرده” باید به طور کلی انجام شود تا برای طیف گستردهای از برنامهها قابل اجرا باشد. اغلب اوقات، آنها به خوبی کار میکنند. با این حال، گاهی اوقات، C یک زبان نسبتاً مینیمال است و تقریباً هیچ یک از این موارد را ندارد. اگر هر یک از آنها را میخواهید، احتمالاً باید خودتان آنها را پیادهسازی کنید. اگرچه این کار دشوار است، اما میتوانید پیادهسازیهای خود را با شرایط خود تطبیق دهید. دانش نحوه پیادهسازی چنین ویژگیهایی از ابتدا و درک بدهبستانها حتی هنگام برنامهنویسی به زبانهای دیگر نیز به شما کمک خواهد کرد، زیرا در مورد نحوه پیادهسازی ویژگیهای آنها بینش خواهید داشت. 2. بسیاری از سیستمها و برخی از زبانهای اسکریپتنویسی (به عنوان مثال، پایتون) APIهای C را برای پیادهسازی افزونهها ارائه میدهند. اگر میخواهید خودتان API بنویسید، باید C را بدانید. 3. بسیاری از بستههای نرمافزاری متنباز که رایانههای مدرن و اینترنت هنوز به آنها وابسته هستند، با C نوشته شدهاند، از جمله Apache، cURL، Exim، Git، مجموعه کامپایلر GNU، لینوکس، OpenSSL، Postfix، PostgreSQL، پایتون، Sendmail، Wireshark، Zlib و بسیاری دیگر. اگر میخواهید بفهمید که این موارد چگونه کار میکنند یا به آنها کمک میکنند، باید C را بدانید. 4. سیستمهای تعبیهشده عمدتاً با C (یا C++، اما با محدودیتهایی) توسعه داده میشوند. اگر میخواهید روی سیستمهای تعبیهشده کار کنید، احتمالاً باید زبان C را بدانید. ۵. زبان C بیش از هر زبان دیگری (به جز ALGOL) بر زبانهای دیگر تأثیر گذاشته است. اگر علاوه بر برنامهنویسی، به زبانهای برنامهنویسی به طور کلی یا از منظر تاریخی نیز علاقه دارید، باید C را بدانید. من پیشنهاد نمیکنم که شما باید C را به قصد تغییر به عنوان زبان برنامهنویسی اصلی خود یاد بگیرید و یا اینکه پروژه بزرگ بعدی خود را در C پیادهسازی کنید. زبانهای برنامهنویسی ابزار هستند و بهترین ابزار همیشه باید برای یک کار خاص استفاده شود. اگر نیاز به انجام هر یک از موارد ذکر شده در دلایل ۲ تا ۴ بالا دارید، C احتمالاً بهترین ابزار برای این کار خواهد بود.
That’s a question I see asked by many beginning (and some intermediate) program- mers. Since you’re reading this preface, perhaps you have the same question. Con- sidering that C was created in 1972 and that many more modern languages have been created since, it’s a fair question. Somewhat obviously (since this book exists), I believe the answer is “Yes.” Why? A few reasons: 1. Modern languages have many features for things like data structures (e.g., dy- namic arrays, lists, maps), flow control (dynamic dispatch, exceptions), and al- gorithms (e.g., counting, iteration, searching, selection, sorting) as part of the language (either directly built-in or readily available via their standard libraries). While convenient, the way in which those features are implemented “behind the curtain” has to be done in a general way to be applicable to a wide variety of programs. Most of the time, they work just fine. However, occasionally, they C is a fairly minimal language and has almost none of those things. If you want any of them, you’re likely going to have to implement them yourself. While onerous, you’ll be able to tailor your implementations to your circumstances. Knowledge of how to implement such features from scratch and understanding the trade-offs will serve you well even when programming in other languages because you’ll have insight as to how their features are implemented. 2. Many systems and some scripting languages (e.g., Python) provide C APIs for implementing extensions. If you ever want to write your own, you’ll need to know C. 3. Many open-source software packages upon which modern computers and the In- ternet still depend are written in C including Apache, cURL, Exim, Git, the GNU compiler collection, Linux, OpenSSL, Postfix, PostgreSQL, Python, Sendmail, Wireshark, Zlib, and many others. If you ever want either to understand how those work or contribute to them, you’ll need to know C. 4. Embedded systems are largely developed in C (or C++, but with restrictions). If you ever want to work on embedded systems, you’ll likely need to know C. 5. C has influenced more languages than any other (except ALGOL). If, in addition to programming, you also have an interest in programming languages in general or from a historical perspective, you should know C. I’m not suggesting that you should learn C intending to switch to it as your pri- mary programming language nor that you should implement your next big project in C. Programming languages are tools and the best tool should always be used for a given job. If you need to do any of the things listed in reasons 2–4 above, C will likely be the best tool for the job.
این کتاب را میتوانید از لینک زیر بصورت رایگان دانلود کنید:
Download: Why Learn C
نظرات کاربران