تنوع و گسترهی تکنولوژی باعث شده که علم برنامهنویسی به یک علم کاملاً بزرگ و پیچیده تبدیل شده و شاخههای بسیار زیادی را شامل شود. برای نیل به اهداف مختلف، زبانهای برنامهنویسی گوناگونی بهوجود آمدهاند. بسیاری از زبانهای مختلف برنامهنویسی عمر چندان زیادی نداشتند و تنها برخی از آنها توانستهاند نیازهای بشر در تولید نرمافزار را برآورده کنند. در این میان، زبان برنامهنویسی C++/C، یکی از معروفترین و پرکاربردترین زبانهای موجود در دنیا بوده که بسیاری از نرمافزارهای کنونی، بهوسیلهی آن نوشته شده است.
پاراگراف بالا، توضیحی است که در پیشگفتار کتاب «برنامهنویسی شیگرا به زبان ++C» خودنمایی میکند که به خوبی، دلیل نوشتن کتاب را بیان میکند. کتاب «برنامه نویسی شیگرا به زبان ++C» کتابی است که توسط دکتر فرشاد ترابی عضو هیأت علمی دانشگاه صنعتی خواجه نصیرالدین طوسی نوشته شده است. در این کتاب زبان برنامه نویسی ++C به صورت گام به گام آموزش داده شده است. نویسنده فرض کرده است که خوانندگان این کتاب هیچ چیز در مورد کامپیوتر و برنامهنویسی نمیدانند؛ لذا تمامی مطالب را به صورت کاملاً ابتدایی بیان کرده است. همچنین مبانی پایهای که زبان سی بر آن استوار است، به خوبی تشریح شده است.
تأکید اصلی این کتاب روی آموزش برنامهنویسی شیگرا برای رشتههای غیر از مهندسی کامپیوتر است. عموماً در دیگر رشتهها، برنامهنویسی به صورت حرفهای مد نظر نبوده و صرفاً به آموزش مطالب ساده و پایه بسنده میشود؛ اما این کتاب سعی دارد برنامهنویسی حرفهای را برای این دست از رشتهها نیز ارائه دهد.
یکی از موارد جدیدی که در این کتاب معرفی شده است، مدل سادهای از حافظه است که به قول خود نویسنده، اگر چه مدل واقعی نیست، اما در فهم برنامهنویسی کمک شایانی میکند. خود نویسنده در این مورد بیان میکند که: «تجربهی شخصی من در تدریس این کتاب نشان میدهد که وجود این مدل از حافظه برای دانشجویان، جذابترین مطلب آموزشی بوده و دانشجویان اینجانب با یادگیری مدل، قادرند اتفاقهایی که در حافظه رخ میدهد را به خوبی تجزیه و تحلیل کنند».
در این کتاب سعی شده است که مطالبی جمعآوری و ارائه شود که خواننده با خواندن آنها به فهم خوبی از برنامهنویسی برسد. با توجه به تجربه تدریس در طول چندین سال، کتاب به فصلهای کوچکی تقسیم شده و در هر فصل فقط یک موضوع خاص کوچک بیان میشود. همچنین در هر فصل، فرض نویسنده بر آن است که خواننده از مطالب فصلهای دیگر اطلاعی ندارد؛ بنابراین خواننده به صورت قدم به قدم با مفاهیم برنامهنویسی آشنا شده و در نهایت متوجه میشود که تمامی مسائل مربوط به این زبان را آموخته است.
شیوه نگارش این کتاب به صورت آموزش ساده است. به عبارت دیگر از یک مبحث بسیار مفصل، نویسنده سعی کرده است که به کاربردیترین موارد آنها اشاره کرده و از پرداختن به کل جوانب خودداری کند. این کار باعث شده است که مطالب بیان شده به صورت کاملاً ساده و قابل فهم بوده و حس پیچیده بودن موضوع به خواننده دست ندهد؛ لذا علاقه به خواندن و ادامه دادن مطلب در خواننده ایجاد میشود. برای دیدن فصلها و بخشهای مختلف این کتاب، میتوانید پیشگفتار و فهرست مطالب این کتاب را دانلود کنید.
از جمله موارد خوب این کتاب که اهمیت آموزشی آن را بالا میبرد، وجود کتاب حلالمسائل و نمونه مثالهای کاربردی است که در یک جلد تکمیلی به همراه کتاب موجود است. معماری جلد دوم به گونهای است که تشابه کامل با فصلبندی کتاب اول دارد؛ اما در کتاب دوم صرفاً به حل مسائل پرداخته شده است. این مسائل نه فقط مسائل آخر فصل کتاب اول، بلکه مثالهای مختلف دیگری را هم شامل میشود که خود به قوت کتاب دوم انجامیده است. همچنین در حل مسائل مطرح شده، نکات ظریفی بیان شده که در کتاب اول جای بیان آن نبوده است؛ بنابراین کتاب دوم نه فقط یک کتاب حلالمسائل، بلکه تکمیلکننده مطالب آموزشی کتاب اول است.
از جالبترین نکات موجود در مورد کتاب دوم، قرار دادن مثالهایی است که دانشجویان نویسنده به عنوان پروژههای درسی در طول ترمهای مختلف ارائه دادهاند. نویسنده گزیدهای از بهترین آنها را در کتاب دوم جمعآوری کرده است و نکته مثبت در این زمینه آن است که نام و مشخصات این دانشجویان را به منظور رعایت حق کپیرایت در کتاب آورده است. همچنین کار جالبی که نویسنده کتاب انجام داده است، آن است که نام تمامی این دانشجویان را به عنوان همکاران تألیف در شناسنامه کتاب ثبت کرده است؛ کاری که متأسفانه خیلی از استادان در چنین حالت مشابهی انجام نمیدهند و کتاب را به اسم خود تمام میکنند.
علاوه بر تمامی مطالب بیان شده، جهت آموزش عملی برنامهنویسی، مجموعهای از فیلمهای آموزشی توسط نویسنده تهیه شده که در سایت شخصی وی در دانشگاه خواجه نصیر به صورت رایگان قرار گرفته است. علاوه بر این، برای آنکه خواننده بتواند به راحتی برنامهها و مثالهای موجود در کتاب دوم را آزمایش و اجرا کند، نویسنده، سورس تمام برنامهها را نیز به تفکیک فصل و بخش در سایت خود قرار داده است. پیشگفتار و فهرست مطالب این کتاب را نیز میتوانید از سایت نویسنده دانلود کنید.
از دیگر نقاط قوت هر دو کتاب، حروفچینی و صفحهآرایی آنها با نرمافزار قدرتمند زیپرشین است؛ به طوری که خواننده در همان نگاه اول متوجه کیفیت بسیار بالای حروفچینی و صفحهآرایی آن نسبت به دیگر کتابهای مشابه میشود. برای آشنایی با زیپرشین میتوانید این نوشته را بخوانید.
با توجه به توضیحات بالا، اگر دانشجوی مهندسی هستید و یا میخواهید برنامهنویسی شیگرا به زبان ++C را به صورت خودخوان یاد بگیرید، خواندن این کتابها را به شما پیشنهاد میکنم؛ چون علاوه بر توضیحات گفته شده، به نظر من یکی از نشانههای قوی بودن یک کتاب، این بوده و هست که کتاب، حاصل سالها تجربه نویسنده آن در تدریس کتاب در کلاسهای مختلف باشد. خوشبختانه هر دو کتاب، این ویژگی را دارند.
هر دو کتاب را انتشارات دانشگاه خواجه نصیر به ترتیب در ۳۷۲ و ۴۲۷ صفحه و با قیمت ۱۲۵۰۰ و ۱۷۰۰۰ تومان منتشر کرده است. برای تهیه این کتابها میتوانید به فروشگاه این انتشارات مراجعه کنید و یا آن را به صورت اینترنتی از اینجا و اینجا سفارش دهید.
لینک ثابت: https://panevis.ir/?p=1021
نوشتههای مشابه با این نوشته (از جدید به قدیم)
خیلی ممنونم از معرفی این کتاب
عالی بود ببخشید خود شما هم در زمینه برنامهنویسی شیگرا به زبان کلاس برگزار نمیکنید
نه متاسفانه.
با سلام
برای درک این کتاب هیچ پیش نیاز معلومات ریاضی نمیخواد؟
چون شنیده بودم که یادگرفتن برنامه نویسی نیازمند به خواندن ریاضیات گسسته و گراف و … است.
من همیچی از برنامه نویسی نمیدانم اما میخواهم برنامه نویسی تا حد توان مدسازی سیستم های ساده عصبی و درکی از هوش مصنوعی داشته باشم.
یه دانشجوی دکتری کامپیوتر بهم گفت باید ریاضی گسسته و گراف و بعدش طراحی الگوریتم پام نور یا هر ناشر دیگه ای رو بخونی بعد میتونی کتابهای اموزشیه برنامه نویسی رو یاد بگیری اینا پیش نیاز برنامه نویسی و خوندن کتابهای عمومی فهم هوش مصنوعی اند.
خواستم نظر شما رو بدونم ایا توصیه اش درست بوده یا اینکه باید برای شروع همین کتاب رو که معرفی فرموده اید رو بخونم؟
با تشکر فراوان
سلام
این که شما بخواهید یک زبان برنامهنویسی یاد بگیرید، ارتباطی به ریاضیات و پیشنیازهای دیگر نداره. اما اینکه بخواهید کاربرد زبان را در رشتههای خاص پیگیری کنید، باید به علم آن رشته آشنا باشید. بگذارید یک مثال بزنم. فرض کنید شما بخواهید زبان آلمانی یاد بگیرید. قطعا شما بدون هیچ پیشذهنیتی میتوانید به کلاس برید یا با استفاده از خودآموز آنرا فرا بگیرید. اما اگر بخواهید روی ادبیات آلمانی به طور حرفهای کار کنید، قطعا باید اول ادبیات فارسی سپس ادبیات کهن و جهان را یاد بگیرید و سپس با کارهای گونه و … آشنا باشید.
خوب برای آنکه بحث پیچیده نشه، یادگیری زبان برنامهنویسی به هیچ پیششرطی نیاز نداره. شما میتوانید در هر سطحی از علم که باشید آنرا یاد بگیرید. یادگیری آن هم بسیار سادهتر از آن است که تصور میکنید. فقط به تمرین نیاز داره. برای آموزش زبان C++، علاوه بر کتاب فوق، من یک سری فیلمهای آموزشی رایگان هم تهیه کردم که در آدرس http://wp.kntu.ac.ir/ftorabi/onlinecourses.html موجود است. همچنین سایت پرسش و پاسخی درست کردم به آدرس qa.tiel.ir که شما میتونید سوالهای خودتون رو اونجا بپرسید تا پاسخ آنرا دریافت کنید.
مرسی عالی بود
سلام..من دانشجوي مهندسي آي تي هستم..متاسفانه دروس برنامه نويسي رو در حد قبولي گذروندم..و حالا ميخام برنامه نويسي رو از پايه شروع كنم..و در حد صفرم..اما متاسفانه نميدونم از كدوم زبان و از چه منبعي استفاده كنم تا روانتر و بصورت خود آموز ياد بگيرم ..ميشه كمكم كنيد؟!
سلام. به غیر از این دو تا کتابی که در بالا معرفی شده، خوشبختانه توی اینترنت هم میتونید انواع راهنماها رو پیدا کنید و مطالعه کنید. در مورد انتخاب زبان برنامهنویسی، پیشنهاد میکنم که این و این نوشته از وبلاگ جادی رو ببینید.
نکتهای که یادم رفت بگم. اگر تصمیم گرفتید زبان C را بصورت اساسی یاد بگیرید یا حتی تدریس کنید، بهترین منبع، کتاب C Programming Language ویرایش دوم نوشته Brian W. Kernighan, Dennis M. Ritchie است. این کتاب یک انجیل برای هر برنامهنویس به زبان C است. این کتاب توسط خود مولف زبان C نوشته شده است و علاوه بر آموزش زبان C اصول برنامهنویسی را هم آموزش میدهد. بنابراین اگر به برنامهنویسی بصورت جدی فکر میکنید، خواندن این کتاب را به شما توصیه میکنم. کتاب را میتوانید از لینک زیر دریافت کنید:
http://www.cs.ucsb.edu/~buoni/cs16/The_C_Programming_Language.pdf
با تشکر از تمامی دوستان و نقطه نظرات مثبتی که داشتید و لطفی که در حق من نمودید. اما در مورد دیدگاههای شما عزیزان عرض کنم که:
1- صفحهارایی کتاب با استفاده از زیپرشین یکی از زیباترین انتخابهای بود که این امر به خاطر شانس بزرگ من در زندگی است. زیرا از لحاظ زمانی هنگامی این کتاب به بلوغ و پختگی رسید که مرد بزرگی از ایران به نام وفا خلیقی نیز وجود داشت. نمیدانم اگر 7-8 سال پیش چنین اتقاقی افتاده بود، شکل کتاب چگونه میشد.
2- شانس دیگر من نیز در آشنا شدن با دوستان عزیز و با ارزشی چون وحید دامنافشان و دیگر عزیزان تالار بود که زحمت صفحهآرایی و ویراستاری آنرا کشیدند و هرگاه سوالی داشتم ایشان بدون منت جواب دادند.
3- در مورد زبان باید عرض کنم که انتخاب ++C به خاطر تجربیات شخصی خودم بود. بنده به زبانهای زیادی برنامهنویسی کردم و مزایا و معایب هرکدام را در حیطه تخصصی خودم میدانم. به عنوان مثال، اگرچه خیلیها تصور میکنند که فرترن زبان مناسبی نیست، اما باید عرض کرد که این زبان بهترین برای نگارش برنامههای محاسباتی است. کما اینکه بسیاری از برنامههایی که در سازمان ناسا در حیطهی تخصصی اینجانب نوشته میشود، همچنان فرترن است. اگر آشنایی با این برنامه داشته باشید یا اینکه در اینترنت چک کنید، این زبان جزو سریعترین زبانهای محاسباتی است. خود من سالهای سال به عنوان یک برنامهنویس حرفهای فرترن مشغول به کار بودم تا اینکه از طریق دوستی با مفاهیم شیگرایی زبان ++C آشنا شدم. آشنایی اینجانب با زبان ++C باعث شد که سرعت برنامهنویسی بنده شدیدا زیاد شود و خطاهای ناشی از آنهم کم شود. به همین علت، آنچه که در این کتاب آموزش دادم، تنها قسمتی از این زبان است که به درد دانشجویان مهندسی و غیره میخورد. بدیهی است که به قول آقای خلیقی، زبان ++C آنقدر گسترده است که هیچ کس نمیتواند ادعا کند تمامی جوانب و ریزهکاری آنرا بلد است. خود من هم چنین ادعایی ندارم. اما اگر به کتاب دوم اینجانب نگاهی بیاندازید، متوجه میشوید که دانشجویان اینجانب تا چه حد خوبی تسلط روی مسائل شیگرایی و کاربرد آن در زبان ++C پیدا میکنند. بنابراین با توجه به تجربهی شخصی خودم در تدریس این درس در کلاس در طول چندیم ترم گذشته (بیش از 6-7 ترم)، احساس میکنم یکی از بهترین انتخابها را داشته و حداقل اینکه توانایی نشر این قسمت از دانستههای خودم به دیگران را داشتهام.
در انتها بازهم از نظرات مثبت و شایستهی شما و لطفی که در حق اینجانب دارید، سپاسگذارم.
اینکه چه افرادی از چه زبان برنامهنویسی استفاده میکنند، دلیل مناسبی برای استفاده از زبان برنامهنویسی خاصی نیست. بسیاری از نرمافزارهای متنباز برای حفظ ویژگی cross-platform بودن نرمافزار و اینکه نرمافزار قابل کامپایل شدن روی سیستم عاملهای مختلف داشته باشد بدون انجام تغییرات در سورس از C به جای C++ استفاده میکنند. یا همان برنامه کوچک فاکتوریل، ممکن است من ترجیح بدهم آن را در تک برنامهنویسی کنم اما شخص دیگری راحتتر باشد، این کار را در Lua انجام دهد:
زبانهایی مانند C یا C++ یا فرترن زبانهای قدیمی هستند. در حالی که لوا یک زبان برنامهنویسی جدید و بسیار راحت است. خود این زبان (implementation زبان) با زبان برنامهنویسی C انجام شده است. زبان لواذ تنها ۱۵۰ کلیوبایت است و بسیار سریع است. هم سریع در برنامهنوشتن و هم سریع در اجرا. شما میتوانید syntax زبان لوا را با C یا C++ مقایسه کنید و ببینید که برنامه نوشتن با آن چقدر راحتتر و سریعتر است. در مورد سرعت پردازش این زبان همین کافی است که بگویم در چندین سال اخیر بیشتر بازیهای رایانهای، play station و xbox و غیره با این زبان نوشته شدهاند. لوا نه تنها به شما اجازه میدهد که با زبان lua برنامهنویسی کنید شما حتی میتوانید داخل لوا، کد C هم بنویسید یعنی یک زبان برنامهنویسی داخل زبان برنامهنویسی دیگر.
من تمامی مثالهایی که دانشجویان آقای ترابی نوشته بودند رو نگاه کردم. تمامی این مثالها رو شما خیلی راحت میتونید با تک اجرا کنید. به عنوان یک مثال (البته فکر نمیکنم این مثال جز مثالها بود) تابع فاکتوریل را در تک برنامهنویسی کنید:
حالا اگر شما میتونید منطق این برنامه رو بفهمید خیلی راحت میتونید این نمونه رو در عرض کمترین زمان روی C یا هر زبان برنامهنویسی دیگری انتقال بدهید.
جناب آقای خلیقی
با سلام و عرض فروتنی
بنده هم با نظر جنابعالی موافق هستم. اما یک سوال دارم. این که ما چه زبان برنامهنویسی را برای یادگیری انتخاب کنیم آیا به این ارتباط پیدا نمیکند که کاربر با آن زبان چه میخواهد انجام دهد؟ و آیا هدف کاربر در تعیین نوع زبان نقشی ایفا نمیکند؟ مثلاً من هنوز در خیلی از کتابهای عمران و آب رد پای زبان فرترن را میبینم. هنوز خیلی از نرمافزارهای عمران و آب دارای هسته محاسباتی فرترن هستند. اما اگر فردی بخواهد مهندسی نرمافزار بخواند خوب طبیعی است رویکرد متفاوت خواهد بود. دانستن نظر شما در این زمینه برای بنده مغتنم است.
با احترام
درود بر شما آقای موسوی. دو مقوله متفاوت وجود دارد. اینکه ما چه زبان برنامهنویسی را برای چه کاری انتخاب میکنیم یک سوال است و اینکه چه زبان برنامهنویسی را به عنوان اولین زبان برنامهنویسی برای یادگیری برنامهنویسی انتخاب میکنیم سوال دیگری است که جواب این دو سوال همیشه یکی نیست. در مورد اول مسلماً برای هر کاری، زبان برنامهنویسی خاصی مجهزتر است که آن کار را با آن نرمافزار انجام دهیم اما در مورد سوال دوم بسیاری از زبانهای سطح پائین برای یادگیری برنامهنویسی مناسب نیستند اگر یک زبان برنامهنویسی آسان را برای یادگیری اصول برنامهنویسی انتخاب کرد و سپس به دنبال زبان برنامهنویسی دیگری رفت مسلماً روند یادگیری بسیار بهتر خواهد بود. به هر حال این نظر من براساس تجربیات شخصی خودم است و شما و سایرین میةوانید نظر دیگری داشته باشید.
زمانی که در ایران بودم، آقای ترابی نسخهای از این کتاب را به من داد. با اینکه نحوه نگارش این کتاب برای دانشجویانی که از کامپیوتر و برنامهنویسی سررشته چندانی ندارند، مناسب است کاملاً موافقم. اما با انتخاب زبان برنامهنویسی کاملاً مخالفم و آن را انتخاب درستی نمیدانم. زبان C++ زبانی است که هیچ کسی نمیتواند ادعا کند که بر روی آن تسلط کامل دارد چون این زبان آنقدر گسترده است که حتی اگر تمام عمر خود را هم صرف یادگرفتنش کنید، نمیتوانید تمام جزئیاتش را بدانید. مسلماً C برای برنامهنویسی انتخاب بهتری از C++ است. در وحله دوم هیچ کدام از این زبانها برای اشخاصی که تازه با برنامهنویسی آشنا میشوند (مخاطبان این کتاب) مناسب نیست. برای این دسته از افراد زبانهایی مانند lua یا python بسیار مناسبتر است. زمانی که این افراد با این زبانهای برنامهنویسی آشنا شدند، آنگاه میتواند آنها را به C معرفی کرد.
گذشته از این، برای هدف مولف کتاب، زبان برنامهنویسی تک، هم میتواند زبان برنامهنویسی بسیار مناسبی باشد.
با سلام
فکر میکنم که این کتاب، اولین کتاب زبان برنامهنویسی ++C است که در فارسی با لاتک حروفنگاری شده است. مسلما با تسلطی که در آقای دکتر ترابی و شما در امر حروفچینی لاتک سراغ دارم، اثر زیبایی به دست طبع و نشر سپرده شده است. بهر روی به آقای دکتر ترابی و شما تبریک میگویم.
با احترام
سلام
ممنون؛ شما لطف دارید. نمیخوام از این کارم تعریف کنم؛ اما به جرأت میتونم بگم که این کتاب یکی از بهترین کتابهای فارسی از لحاظ حروفچینی و صفحهآرایی است.
راستی شاید دیدن بقیه نمونهکارهام براتون جالب باشه.
ممنونم … خیلی خوبه که در کنار ریاضی برنامه نویسی هم کار میکنید