سلام
من چند ساله که ++c کار می کنم و تجربه ی من نشون میده که کد درست حسابی زدن در این زبان کار واقعا سختیه منظورم کدی هست که بعدها با تلاش معقولانه قابل توسعه و نگهداری باشه ولی به هر حال مزایای خودش رو هم داره مثل crossplatform بودن، سرعت بالا و قابلیته اجرا روی سخت افزارهای ضعیف،مثلا آخرین برنامه ای که روی اون کار می کردم که قرار بود روی ویندوز xp با رم 256 مگ اجرا بشه و بر پایه Qt و تعدادی از کتابخونه های boost و sqlite و ... بود به همراه dllهای vc_redist که برای اجرای برنامه های native روی ویندوز مورد نیازه و به اضافه embedded کردن مفسر پایتون منهای داکیومنتهاش در یک فایل setup به حجم تقریبی 7 مگابایت رسیدم که اگه پایتون از اون حذف میشد تقریبا 2 مگابایت کل فایلهای مورد نیاز برای اجرای برنامه مستقل از هر نوع وابستگی دیگه بود،حالا اینو مقایسه کنین با مثلا نیاز به نصب دات نت فریمورک 50 مگی یا jre برای جاوا که نیازه تا برنامه های نوشته شده به این زبانها امکان اجرا پیدا کنن. در مجموع منظورم اینه که این زبان جایگاه خودش رو داره ولی اگه کسی بخواد بره دنبالش دقیقا باید بدونه دنبال چه چیزی هست.به نظر من حداقل یک سال طول میکشه یه نفر در این زبان به یک برنامه نویس متوسط تبدیل بشه و حدود دو سال دیگه طول میکشه که به یک برنامه نویس خوب ++c تبدیل بشه و نهایتا دو سال دیگه هم زمان نیازه که به یک برنامه نویس حرفه ای تبدیل بشه یعنی برنامه نویسی که اگه نتونه کدهایی شبیه کتابخانه های boost بزنه حداقل از 80 درصد اونها سر دربیاره.اگه کتابخونه های boost رو بررسی کنین می بینین که خیلی از مفاهیم سعی شده به صورت generic و توسط templateها پیاده بشه، جایی که نقطه قوت این زبان هست و میشه گفت وجود همین یک قابلیت باعث شد که استاندارد قبلی سال 2003 ارائه بشه و استاندارد فعلی سال 2011 یعنی طی این سالها بدون نیاز به تغییر زیرساختهای زبان امکان توسعه موارد مختلف وجود داشت طوری که همین کتابخانه های boost طی این سالها رشد کردند و جالب اینجاست که نصف استاندارهای 2011 برپایه ی مفاهیمیه که از این مجموعه کتابخونه ها گرفته شده مثل smart pointer, regex, bind, lambda و ... حالا شما اینو مقایسه کنین با چیزی که از ++c در ذهن بعضیها هست منظورم افرادی هست که مثلا حتی اسم STL به گوششون نخورده و میان در مورد این زبان نظر میدن یا مثل بعضی از استادنماها میان در دانشگاهها تدریس می کنن!
البته اینها رو به این دلیل نگفتم که کسی رو منصرف کنم ولی هر کی می خواد وارد این وادی بشه باید بدونه با چه چیزی طرفه و با تمام توان قدم در این راه بزاره وگرنه بعد از یه مدت قضیه رو رها می کنه میره دنبال دات نت!
البته بد نیست به این اشاره کنم که فریمورکهایی مثل Qt و کتابخونه های مثل boost خیلی مفاهیم رو abstract کردن که استفاده از این زبان رو ساده تر کرده ولی وای به حال برنامه نویسی که در این زبان از جزییات سر درنیاره چون ممکنه به خطایی در کامپایل بربخوره که شاید ظرف چند روز هم حتی با کمک گرفتن از گوگل و stack overflow هم نتونه حلش کنه.
توصیه دیگه من به شما و البته همه دوستانی هست که میخوان برنامه نویسی یاد بگیرن: بی خیال یادگیری برنامه نویسی به زبان فارسی بشین وگرنه وقت زیادی تلف خواهید کرد.به نظر من حتی اگه یک سال وقت بزارین و زبان یاد بگیرین خیلی بهتر از اینه که وقتتون رو با منابع فارسی هدر بدین.
من خودم فکر کنم 3 کتاب رو تقریبا کامل خوندم و البته بیشتر کدهاشون رو هم موقع خوندن اجرا و تست کردم(اگه موقع خوندن کتابها کد نزنین مثل این میمونه که کتابهای هری پاتر رو خوندین و انتظار داشتین با جادوگری برنامه نویسی یاد بگیرین!)
c++ complete reference نوشته Herb Schildt
++Exploring C++ The Programmer’s Introduction to C نوشته Ray Lischner
Beyond The C++ Standard Library: An Introduction to Boost نوشته Bjorn Karlsson
و البته گوگل، ویکیپدیا و خیلی سایتهای دیگه هم که دوستان اشاره کردن برای یادگیری و رفع مشکلات می تونه راهگشا باشه.
با تجربیاتی که تا امروز از زبانهای مختلف مثل delphi, c++, java و python داشتم الان به این نتیجه رسیدم که در وهله اول اگه امکان داشته باشه(با توجه به پلتفرم،سخت افزار و ...) سعی کنم برنامه رو با پایتون بنویسم و اگه این امکان وجود نداشت زبانهای دیگه رو استفاده کنم، مثلا الان در حال نوشتن یه برنامه هستم که روی موبایل قراره اجرا بشه و چون میخوام مالتی پلفرم باشه روی موبایل از ++c استفاده می کنم و در سمت سرور پایتون(البته برای بخش سرور در حال بررسی زبان Go هم هستم،اگه خیلی سریع بتونم اونو یاد بگیرم و مزایاش از معایبش بیشتر باشه(سرعت بالا در مقابل کتابخانه های کم به دلیل جدید بودن زبان) شاید به خاطر محدودیتهای سرعت در پایتون مجبور بشم ازش استفاده کنم)