# Native Code > برنامه نویسی با C > بحث و گفتگوی فنی - خانواده C > گفتگو: ابعاد علمی و اقتصادی کار با ++C/C در ایران

## Nima_NF

*تذکر 1 : لطفا دوستان قبل از اینکه هیچ پست یا نظر دیگری بدهند، ابتدا مطالب زیر را به طور کامل مطالعه کنند، تا بحث تاپیک منحرف نشود. سپس اگر نظری دارند مطرح کنند.*

*تذکر 2* *: این تاپیک را به مکانی مانند تاپیک "چرا* *#**C محبوب شده" تبدیل نکنید، چرا که هدف این مطالب علاقه مند کردن فقط 1% از برنامه نویسان است نه کل آن ها.

**تذکر 3* *:**پس در صورتی که کسی مطلبی خارج از* *مطالب مطرح شده بگوید یا* *به برتری زبان خاصی یا دفاع از علایق شخصی بپردازد، پست او پاک می شود.
*

در پی مقایسه آمار تالارهای گفتگوی مطرح دنیا با آمار بخش های مختلف سایت برنامه نویس اهدافی مد نظر بود که دوستان همچنان برداشت های غلط و غیر علمی خود را به آن اضافه کردند. لذا تصمصم گرفته شد، این موضوع از ابعاد مختلف بررسی شود و در کنار بعد علمی بعد اقتصادی نیز در نظر گرفته شود. (برای توضیحات علمی می توانید از مقاله "برنامه نویسی ++C/C از نوع Native یا managed" در همین بخش فنی استفاده کنید)

*ابهامات* * و توضیحات:*

1- ابتدا اینکه، لطفا دوستان این تاپیک را به مکانی برای اثبات برتری یا مقایسه زبان های برنامه نویسی یا اینکه کدام برتر هست تبدیل *نکنند*. 
هدف از ارائه آن آمار چیز دیگری بوده است که توضیح می دهم.

من شدیدا با مباحث این چنینی مخالفم و با توجه به احساساتی برخورد کردن طرفداران زبان ها همیشه در تمامی فروم های دنیا بحث به بیراهه کشیده می شود و جواب قطعی هم در پی ندارد.
دوستی گفت در سایر کشور ها چنین مباحثی مطرح نمی شود، که برعکس، حتی بیشتر از اینجا مطرح می شود اما معمولا در فروم ها مطرح کردن این چنین مباحث ممنوع هستند و فورا قفل می شوند.

2- چیزی که هدف من در این تاپیک است، ایجاد حس علاقه و آگاه کردن برنامه نویسان هست تا شاید بتوانم *تعداد اندکی* برنامه نویس در ایران را علاقه مند به سایر زبان های مورد نیاز کشورمان کنم که یک سری کارفرما شدیدا دنبال این دست از برنامه نویسان هستند. (مثلا حداقل 1 نفر در ازای هر 100 برنامه نویس که فقط به سمت #C یا دلفی می روند)

3- هدف این نیست که از فردا همه مثلا #C را کنار بگذارند و با ++C همان برنامه ها بنویسند، خیر.
هر زبانی برای خود حوزه کاربردی مشخصی دارد، پس قبل از هر چیزی باید حوزه کاری مورد نظر شما مشخص شود بعد بخواهیم در مورد انتخاب زبان برنامه نویسی صحبت کنیم.


 وقتی می گویم 1 نفر از این 100 نفر به سمت ++C یا java یا ... بیاید، به این دلیل است که متاسفانه برخلاف تفکرات اشتباه برنامه نویسان ما (و شاید شما !)، کشور ما با تمامی موانع سر راهش به این تعداد اندک برنامه نویس در سایر حوزه ها نیازمند است و کارفرما هم با توجه به نیاز شدید، شما را تامین مالی خواهد کرد، که لیستی در پایین آورده شده است.

*نکته:* متاسفانه 99% برنامه نویسان ما از مبتدی گرفته تا حرفه ای تصور می کنید در ایران فقط برای کار با پایگاه داده برنامه می نویسند و استخدام می کنند (!) که این طور نیست، لذا به نمونه هایی اشاره می کنم تا شاید تغییری در همان 1% رخ دهد:

================================

*بعد اقتصادی و استخدام های موجود در ایران:*

1- اگر روزنامه های امسال را نگاهی می کردید، بانک پارسان و بانک سامان تعداد زیادی برنامه نویس ++C می خواستند. احتمالا از بعد اقتصادی کار تمام وقت در بانک آگاهید.

2- سایر بانک ها برای دستگاه های POS و ATM خود همواره دنبال برنامه نویس ++C/C با تجربه هستند. با توجه به اینکه SDK ها با ++C و در برخی موارد java است. (اتفاقا در برخی موارد با پایگاه داده نیز کار خواهید کرد) 

3- شرکت های سخت افزاری و همین طور صنایع بزرگ برای سیستم های خود مانند کوره های حرارتی با حقوق چند میلیون تومان دنبال برنامه نویسان ++C/C هستند که البته اکثرا به صورت رابطه ای (با معرفی آشنایان شما، مثلا از طریق اساتید) استخدام ها را انجام می دهند.

4- شرکت های توسعه نرم افزارهای گوشی های تلفن همراه که در کشور زیاد شده اند (و برخی بین المللی)، همواره در حال استخدام برنامه نویسان تمام وقت  ++C برای windows CE یا windows mobile و همین طور java برای سایر گوشی ها هستند.

جدیدا نیز شروع به استخدام برنامه نویسی C و ++C برای گوشی های *iPhone* کرده اند. (بله اینجا ایران است)

5- شرکت های مختلفی دنبال برنامه نویس ++C برای لینوکس و همین طور برنامه نویسی سطح پایین (low level) برای نوشتن Driver هستند. (برای نمونه به بخش آگهی های همین سایت مراجعه کنید)

6- مخابرات در 2 سال گذشته علاوه بر سایر زبان های برنامه نویسی، برای سیستم های خود در محیط های windows و Unix برنامه نویس ++Visual C استخدام کرده است.

7- شرکت ها مختلفی همواره برنامه نویسانی تمام وقت ++C/C برای سیستم Unix جهت مباحث امنیت شبکه استخدام می کنند که تبلیغاتشان در اینترنت نیز به فراوانی وجود دارد. در برخی نیز دانش UML یک برتری محسوب می شود.

8- برخی شرکت ها در حال استخدام برنامه نویسان ++Visual C یا C#‎.net برای ساخت نرم افزارهای صوتی و تصویری (با حقوق عالی به گفته خودشان) هستند. (در هر دو مورد از کار با پایگاه داده هم خبری نیست)

9- برخی شرکت ها برای ساخت سیستم ها هوش مصنوعی / تقلید صدا و امثال آن برنامه نویسی ++C مسلط بر AI استخدام می کنند.

10- تیم های بازی سازی 3D ایران و برنامه نویسان نرم افزارهای گرافیکی (مانند نرم افزارهای طراحی بافت قالی، کاشی و ... در ایران) نیازمند برنامه نویسان ++C هستند،
شاید در ظاهر فکر کنید که اصلا این صنعت در ایران وجود ندارد ولی باز هم این از همان تفکرهای سطحی هست، این شرکت ها اکثرا به صورت مخفیانه مشغول به فعالیت هستند و با داشتن ناشران بین المللی بازی خود را حتی در آمریکا منتشر می کنند و آن نسخه ها را نیز در ایران منتشر نمی کنند!

11- شما اکثر شرکت های بین المللی را که نمایندگی در ایران دارند را چندان نمی بینید. این شرکت ها معمولا استخدام در آن ها به صورت رابطه ای است و همه جا فریاد نمی زنند.


*پس در یک نگاه*: دوستان گرامی، در اینجا نظر شما هیچ اهمیتی ندارد که این کار با فلان زبان راحت تر انجام می شود یا ارزان تر می شود و یا ... بلکه این تصمیم کارفرما هست که می خواهد شما را استخدام کند، این چنین پروژه هایی از دید علمی هستند نه بر اساس علایق شخصی؛ و حقوق هم که شما به عنوان کارمند تمام وقت دریافت می کنید بعد اقتصادی.

*شاید برای آخرین مطلب* برایتان جالب باشد که بدانید در طی 6 ماه اخیر 4 نفر آگهی استخدام برنامه نویس ++Visual C برایم ارسال کردند و خواستند که اگر کسی مسلط را در سایت می شناسم به آن ها معرفی کنم، جالب اینکه *حتی 1 نفر* وجود نداشت تا معرفی کنم!
اگر در این سایت *حداقل* نسبت *1* برنامه نویس مسلط ++C به *1000* برنامه نویسی #C نیز وجود داشت، باز جای خوشحالی بود که برنامه نویسان ما راه درستی می روند!

این ها همه فرصت هستند فقط کافیست دید و دانش خود را وسیع تر کنیم...
فکر می کنم حالا بیشتر متوجه هدف ارائه آن آمار مقایسه ای شده اید.

*تذکر*: آگهی تمامی این موارد و تبلیغات در سایت های مختلف و مجلات و روزنامه ها موجود است، برخی مانند استخدام های بانکی ذکر شده در طول همین سال 87 بوده اند و بقیه موارد همچنان جدید هستند و در حال استخدام کردن.

با آرزوی موفقیت

----------


## anubis_ir

بله. زمانيكه صحبت از رابطه است و صحبت از رانت است، سرمايه گذاري زماني روي چيزي كه ممكن است هيچگاه نصيب شما نشود شايد زياد منطقي نباشد. به همين جهت برنامه نويس‌ها روي مواردي كه بازار كار بيشتري دارد وقت خواهند گذاشت.

----------


## SamaPic

با سلام خدمت دوستان عزيز به خصوص *Nima_NF* 
 

 لطفا مطالبم را ابتدا بطور كامل مطالعه فرماييد و سپس هر نظر و تصميمي كه خواستيد اتخاذ كنيد.

 من مطالب شما را بطور كامل مطالعه كردم و واقعا اميد وار شدم .تا كنون از هر كسي كه مي پرسيدم من را از ادامه كار با سي باز مي داشت و لي نوشته هاي شما اميد را در من تازه كرد و باعث شد تا با دلگرمي بيشتري به ادامه ي راه نظر داشته باشم. ولي در اين راه موانعي پيش راه ما و بنده وجود دارد:

 1. بعضي از دوستان با نهايت دل سردي با ما ترم اولي ها و بطور كلي با ما كه در اين بخش فعاليت مي كنيم (چه ترم اولي و چه ترم هاي بالاتر.) رفتار كرده و ما را به مسخره مي كنند (كه بطور حتم آنها را مي شناسيد و بيان نامشان درست نيست.) و آنان با اين كارشان علاقه ي مارا براي ادامه ي مسير كاهش مي دهند. 2. اين بخش بسيار ضعيف است(از نظر من ) چرا كه من سوالات بسياري از دوستان را بي پاسخ ديده ام( نيازي به آدرس دهي نيست ) اين نشان از آن دارد كه دوستان ترم بالايي پس از ترم 3 واگر خيلي بمانند تا ترم 5 ديگر به سراغ اين برنامه (يا بهتر بگويم بخش) نمي ايند و به اين دليل ما بخش زيادي از نيروي با تجربه را از دست مي دهيم كه باعث بي پاسخ ماندن بسياري از سوالات مي شود.وقتي ما كه ترم اولي هستيم از همين اول وضعيت اين بخش را ببينيم مسلما مايل به ادامه كار با اين نرم افزار برنامه نويسي نيستيم و ما نيز آن و كوچكتر ها را به فراموشي مي سپاريم. 3. تعدادي از دوستان براي بدست آوردن پست بيشتر در پاسخ به دوستان سوال كننده، دوستان ديگري كه قبلا پاسخ داده اند را تخريب مي كنند و اگر چنين نكنند هم  با بردن بحث به مطالب حاشيه اي دوست سوال كننده را از ادامه كار نا اميد مي كنند و وي به طلب يافتن جايي بهتر براي طرح سوالاتش به دنبال سايت ديگري مي رود. 4. يكي از مهمترين مشكلات بخش پاك كردن سوالات (معروف به پروژه ي دانشجويي ) است با اين كار اگر خودتان هم باشيد از دل سردمي شويد. 5. نبود مثال هاي متنوع براي راه افتادن دوستان تازه وارد به اين زبان(تازه كار ها) چراكه فقط با حل مثال هاي متنوع است كه انسان با شرايط متفاوت آشنا مي شود و مورد شماره ي 4 هم تعداد معدود مثال مناسب را از بين مي برد. 6. تعدادي از دوستان كه سوال مطرح مي كنند توضيح مناسبي از سوال نمي دهند و فقط خودشان و افراد سطح بالاتر متوجه سوال مي شوند و اگر همين سوال در جايي مطرح شود ما قادر به حل نيستيم و باعث پايين آمدن روحيه ميشود. از طرفي فردي چنين سوالي را به شكلي ديگر بيان مي كند و در پاسخ مي گويند : "سوال تكراري است."البته اگر نيما قبل از آن به همين دليل آن را پاك نكرده باشد. 7. نبود يك مرجع مناسب براي فراگيري اين زبان. همان طور مي دانيد كتاب هاي موجود در بازار كه اكثرا (بهتر بگويم همه) ترجمه ي نسخه ي انگليسي كتاب ديتل يا كتاب ديگري هستند و مترجمان لطف كرده و بخش هايي را به دلخواه خود حذف كرده و با اين كار لطمه ي جبران ناپذيري به ما ترم اولي ها مي زند.براي مثال من با وجود تلاش زيادي كه داشتم هنوز موفق به يادگيري مبحث بازگشتي نشده ام اين در حالي است كه من مباحث مشكل تر را به راحتي فراگرفته ام ولي اين يكي ........  . دليل آن اين است كه به اين مبحث در كتاب ها آنطور كه بايد نپرداخته اند به عنوان مثال در كتاب جعفر نژاد 4 ،ديتل 4 و ....... صفحه به اين موضوع پرداخته اند.اگر اين بحث مربوط به برنامه نويسي پيشرفته است چرا در درس مباني آموزش مي دهند. 8. تبليغات سايت ضعيف است به عنوان مثال در كلاس 25 نفري ما 2 نفر عضو اين سايت هستند  كه يكي از آنان به توصيه ي من خود را عضو كرد و سالي يك بار سري مي زند . 9. جدا نبودن مباحث مباني از برنامه نويسي پيشرفته .من اوايل وقتي وارد اين بخش مي شدم با سوالات سنگين روبرو مي شدم و اين سوالات روحيه ي من را تضعيف مي كرد(هنوز كه هنوزه چنين است) اين دو بخش بايد از هم جدا باشند تا افراد ترم اولي( همچون من) تراز و ميزان پيشرفت خود را نسبت به سايرين(هم ترمي ها ي خود در دانشگاه هاي ديگر) بسنجند. 10. نبود پستي براي بيان ايراد هاي احتمالي سايت . اين موضوع را بنده هر جا كه فرصتي پيش آمده بيان كرده ام ولي نيما(و ديگران) با نهايت بي توجهي از آن به راحتي گذشته در حالي كه اين كار به نفع بخش است. 
اين مواردي بود كه از نظر من لازم به ذكر بود و در راستاي اين موارد راه حل هاي پيشنهادي را بيان مي كنم شايد حتي اگر شده تاثير كمي داشته باشد. به ترتيب: 1.اين افراد شناسايي (هر چند كه مي دانم آنها را مي شناسيد) و پس از ايجاد پست،پست آنها بررسي شود .يا حداقل يك بار يطور جدي به آنان تذكر داده شود.متاسفانه بسياري از دوستان به جاي طرفداري از عده اي كه با آنان مخالفت مي كنند به تحسين و موافقت با آنان مي پردازند. 2.هر ماه انتخاباتي در بخش برگذار كنيد تا بهترين فرد از دوستان(كسي كه بهتر و بييشتر رضايت دوستان موجود در بخش را كسب كرده است)انتخاب شود .اين كار نتنها باعث بازگشتن افراد ترم بالايي مي شود بلكه حس رقابت بين حرفه اي هاي بخش نيز بيشتر مي شود.(البته در صورتي امكان پذير است كه در بخش هاي ديگر چنين چيزي موجود نباشد.) 3. يك منشور اخلاقي ميان دوستان قرار دهيد يا متخلفين را با دادن تذكر متوجه كار نادرستشان كنيد. 4.من خودم هر گاه چنين چيزي مي بينم سعي مي كنم با دادن يك پاسخ مناسب و قانع كننده وي را از خواسته اش منصرف كنم . شما بهتر است پست دوستاني را كه پاسخ مستقيم مي دهند را پاك كنيد. 5.يك تاپيك براي بيان مثال ها بگذاريد تا هر كس مثال خوبي داشت در آن بگذارد تا مشكل مثال حل شود(مثال ها  درجه بندي شود) .البته بدون پاسخ. 6.از دوستان كسي كه مي تواند سوالي را توضيح دهد توضيح آن را بگذارد.من خودم وقتي اولين بار سوال 8 وزير را ديدم از تعجب نزديك بود شاخ در بياورم ولي وقتي دوستي مثال را برايم بازكرد(تشريح كرد) به راحتي آن مثال را حل كردم. 7.بخشي را در سايت بگذاريد تا هر كس تجربيات خود را در آن بگذارد تا ضعف كتاب ها به اين طريق جبران شود.اين كار باعث مي شود تا سوالات ساده و مشكلات كوچك كمتر مطرح شوند. 8،9،10.در اين موارد نظري نمي دهم چرا كه به خودتان مربوط مي شود. يك مورد ديگر كه يادم آمد اين است كه در سايت جايي وجود ندارد كه مشكلات كامپيوتر را در آن مطرح كنيم(اگر هم هست اطلاع رساني ضعيف است چون من هنوز از وجود چنين بخشي بي اطلاعم).به عنوان مثال شايد ديده باشيد كه من يك پاسخ را چند بار ارسال كرده ام چراكه در كامپيوتر من نمايش نمي دهد.مواردي را متوجه شده ام و سريع حذف كرده ام ولي چند باري از دستم در رفته است. اگر در اين مطالب بي احترامي به كسي شد مرا ببخشد چرا كه منظوري نداشتم. اميد وارم ايراد ها به جا و راهكار ها مناسب باشد. اگر نظري داريد خوشحال مي شوم . خدانگهدار.

----------


## Nima_NF

هر چند که همه موارد به این تاپیک مربوط نیست و بهتر بود در بخش خودش و با عنوان مثلا گفتگو مطرح می شد، اما:

1و 3- این کار همیشه انجام می شود،در هر حال همیشه پست این افراد را گزارش کنید و دلیل آن را بنویسید تا بررسی شود.

4- در مورد *تمرینات دانشجویی* در تمامی تالار های تخصصی دنیا قوانین به همین شکل است که در این سایت است. و به شدت با آن برخورد می شود، هرگاه روزی در سایر تالار تخصصی دنیا فعالیت کردید متوجه موضوع خواهید شد:
 برای مثال لینک قانون سایت codeguru



> - Generally, members of this forum will be reluctant to do your homework for you. Here are some reasons ...
> 
> - The bottom line: Feel free to ask homework questions here, but only if you have already put some significant effort into solving it yourself and are stuck on specific details. Don't expect to lean back and have others do the work for you ...



تالار گفتگو مکانی برای رفع مشکلاتی هست که به راحتی در کتاب ها یا مراجع دیگر پیدا نمی شود و نیازمند استفاده از تجربیات دیگران است.(متاسفانه این فرهنگ در این بخش جا نیافتاده است)
پس پرسیدن سوالات بسیار ساده برنامه نویسی جایی در این سایت و سایر سایت های تخصصی برنامه نویسی ندارد چرا که با خواندن و تهیه کتاب می توان به آن ها رسید.

ما باید یاد بگیریم که سوالات ساده را خودمان با مطالعه و خلاقیت خودمان حل کنیم، وقتی وارد مباحث پیشرفته تر  شدیم (و البته تاجای ممکن کاربردی) از تالار های گفتگو استفاده کنیم. 

همین موضوع از دلایل ضعیف شدن بخش و ایجاد دید منفی کاربران نسبت به این زبان است.

5- موضوع پیچیده ای نیست، شما می توانید یک تاپیک با عنوان مناسب برای مثال ها، تکنیک ها، و ... ایجاد کنید و این کار را آغاز کنید، من هم هر وقت دیدم تاپیک ارزشمند شده است آن را به اعلان تبدیل می کنم.

6- برای درخواست توضیحات کلی که ربطی به زبان ++C/C ندارند باید از *بخش الگوریتم ها و ساختمان داده* استفاده کرد و مطرح کردن آن ها در بخش C خلاف است. (مگر اینکه در ادامه مبحث خاصی توضیح خواسته شده باشد و کل سوال فقط توضیح الگوریتم نباشد مثلا الگوریتم 8 وزير یا اینکه چطور لیست پیوندی بسازم نباشد...)




> نبود يك مرجع مناسب براي فراگيري اين زبان


7- این مورد به هیچ عنوان پذیرفته نمی شود، خوشبختانه برای یادگیری ++C/C در سطح کنسولی تا دلتان بخواهد کتاب فارسی وجود دارد، من در آغاز کارم از 4 کتاب فارسی (جمعا 2 هزار صفحه)،  صدها مقاله و MSDN استفاده کردم. سپس مشکلات پیشرفته را از کتاب های زبان اصلی مطالعه کردم. هزینه خرید چند کتاب فارسی حتی با هزینه خرید یک نسخه کتاب زبان اصلی قابل مقایسه نیست، پس از این موقعیت استفاده کنید.

اما اگر بحث بر سر مسائل پیشرفته تر مانند کتابخانه STL یا کلا  API ها، MFC یا سایر تولکیت های GUI هست آنوقت می توان گفت مراجع کامل کم هست. به حق هر وقت وارد این مباحث شدید می توانید بگویید مرجع کم است یا سوالات پیشرفته است.

موفق باشید

----------


## shervin_agh67

به نظر من یک نکته مهمی که در این زبان مطرحه اینه که باید بهترین باشی . در غیر اینصورت بهتره دنبالش رو نگیری. درصد استخدامی که در کشور برای این زبان وجود داره نسبت به سایر زبانها بسیار پائینه . با توجه به سختی بسیار بالای نوشتن برنامه ها به این زبان شرکتها در صدد استخدام برنامه نویس فوق حرفه ای c/C++‎ بر می آیند . من خودم مدتها برنامه c می نوشتم ولی دوتا مشکل داشتم که باعث شد ادامه ندم : 
1. عدم وجود منابع قوی و افراد خبره :
همینطور که می بینید اگر یک نفر یک سوال در بخش سی شارپ مطرح کنه در بیشتر مواقع به نتیجه میرسه ولی تالار سی چطور . حتی بعضی از برنامه نویسان حرفه ای هم تو بعضی از سوالاتش می مونن . زمانی هم که به برنامه نویسان حرفه ای مراجعه می کنی حاضر نیستن مجانی کار شما رو راه بندازن ( که البته منطقی هم هست) . 
2 . پروژه شما زمانی تمام می شه که کار از کار گذشته :
اصولا برنامه نویسان حرفه ای سی بیشتر از برنامه نویسان سطح بالا به ماژولهای نوشته شده پیشین خود وابسته اند در صورتی که این کار رو نکنن ... ( خدا می دونه پروژه کی تموم می شه) . حالا حساب کنید منی که تازه وارد این زبان شدم چند سال باید وقت بگذارم تا یک کتابخانه کامل برای خودم بنویسم ؟ (درسته که API و MFC درزبان وجود داره ولی یک کارهای پیش و پا افتاده ای مثل تبدیلات رو نمی تونن انجام بدن )در بعضی موارد افرادی می شناسم که با فروش این کتابخانه ها درآمد کسب می کنند.

اما برای دانشجویان یک پیشنهاد دارم که استادم به من کرد . اگر می خواید در زبان سی خیلی قوی بشید سعی کنید بعد علمی اون رو ادامه بدید . چطور ؟
همه ما دروسی مثل معادلات دیفرانسیل ، ریاضیات مهندسی ، مدارهای الکتریکی رو پاس کردیم . سعی کنید مبحث دروس معادلات و ریاضیات مهندسی رو در سی چه به صورت گرافیکی و عادی پیاده سازی کنید .
در موقع استخدام هم از شما همین ها رو می خوان ، یعنی از شما می خوان تبدیل لاپلاس یک معادله رو با سی محاسبه کنید و یا تابع فوریه رو با سی رسم کنید . بعدا توی حین کار هم از این موارد خیلی استفاده می شه ( سیستم دستگاههای کنترلی و پیچیده کارخانجات با همین روش ها نوشته می شه).
راستش حرف در این مورد زیاده ولی فکر می کنم اگر ادامه بدم از بحث اصلی خارج بشم .
این تفکر من در مورد زبان سی بود حالا اگر غلط بود . لطفا اصلاح بفرمائید.

----------


## Mehdi Asgari

> عدم وجود منابع قوی و افراد خبره


کتاب + مقاله + مطالعۀ کد (+ تجربه به مرور زمان)



> اصولا برنامه نویسان حرفه ای سی بیشتر از برنامه نویسان سطح بالا به ماژولهای نوشته شده پیشین خود وابسته اند در صورتی که این کار رو نکنن ... ( خدا می دونه پروژه کی تموم می شه) . حالا حساب کنید منی که تازه وارد این زبان شدم چند سال باید وقت بگذارم تا یک کتابخانه کامل برای خودم بنویسم


رو چه اصلی این حرفو می زنی ؟
پس کتابخانۀ استاندارد و بقیۀ کتابخانه های موجود در دنیا رو برای کی نوشتن ؟ (البته این حرف رو با این فرض زدم که منظورتون C/C++‎ هست.)



> با توجه به سختی بسیار بالای نوشتن برنامه ها به این زبان شرکتها در صدد استخدام برنامه نویس فوق حرفه ای c/C++‎ بر می آیند


فوق حرفه ای یعنی چی ؟
یکی ممکنه همین نیما رو بگه حرفه ای ، اما اون یکی به زیر Herb Sutter و Stan Lipman نمیگه حرفه ای

پ ن: بحث های اخیر در مورد سی/سی پی پی با نیما ، آقای کشاورز و دوستانی در شرکت من رو به سمت برنامه نویسی native توسط سی پی پی کشید(keep on your good work)

----------


## shervin_agh67

نمی گم کتاب نداره ولی خیلی کمه . یعنی همه مطالب رو پوشش نمی ده . خیلی ریزه کاری وجود داره که توی کتابها وجود نداره و همانطور که شما اشاره کردید باید توی مقاله ها به دنبال اون گشت . 
اشاره کردم که کتابخانه های استاندارد زیادی در دنیا وجود داره ولی نیازهای ما رو برطرف نمی کنه . نیازهای برنامه نویسی هر شخصی با شخص دیگری هم تفاوت داره مثلا من ممکنه یک فرد مبتدی باشم و به توابع بیشتری واسه کارم نیاز داشته باشم در حالیکه شما ممکنه حرفه ای تر باشید و نیازی پیدا نکیند. البته این مربوط به زمانیست که زمان رو در نظر نگیریم وقتی که فاکتور زمان به میان میاد برنامه نویس به هر روشی سعی می کنه که از توابع آماده و قبلی خود و دیگران استفاده کنه . آیا تاحلا برای خودتون پیش نیومده ؟ مثلا روشهای اعتبار سنجی و درهم سازی رو خودتون شاید نوشته باشید که کدش رو به کدهای موجود در اینترنت ترجیح بدید (حالا یا مشکل پیچیدگی در کد وجود داره و یا احتمال باگ رو می دید)
برنامه نویس حرفه ای و فوق حرفه ای رو هم ما تعیین نمی کنیم . کارفرمای ما تعیین می کنه . شما ممکنه در یک شرکتی کار کنید که ساده ترین کارها با OLE ها براشون سخت باشه اونوقت به شما می گن *فوق حرفه ای* . ولی به نظر من کسی که می خواد برنامه نویسی ویژوال سی++ رو کار بکنه چون مفاهیمش با زبان ماشین خیلی درگیره بهتره که از زبان ماشین شروع کنه و به بررسی معماری ماشین هم بپردازه . به همین دلیله که منهدسین نرم افزار ما زیاد در این زمینه فعال نیستن و به قول دوستمون از ترم 5 به بعد تغییر گرایش می دن ، چون مباحث رشته نرم افزار تاکید زیادی بر برنامه نویسی سطح پائین نداره ( نمی گم نداره ولی گرایش دانشجو کمتر به سمت این نوع برنامه نویسی میره) و دقیقا به همین دلیله مهندسین سخت افزار خیلی در این حوزه قویتر عمل می کنن ( خوب هر کسی یک تخصصی داره دیگه).

----------


## shervin_agh67

> پ ن: بحث های اخیر در مورد سی/سی پی پی با نیما ، آقای کشاورز و دوستانی در شرکت من رو به سمت برنامه نویسی native توسط سی پی پی کشید(keep on your good work)


راستش منم دوباره می خوام سی پی پی رو شروع کنم ولی ایندفعه خیلی حرفه ای تر و با پشتکار بیشتر . دفعه قبل هم مشکل زبان انگلیسی داشتم و هم پس زمینه برنامه نویسی سطح پائین رو نداشتم ( واسه همینه که میگم حتما زبان ماشین رو مطالعه کنید ) دلیلم هم برای شروع دوباره اینه که الان هرچی نگاه می کنم میبینم تا چشم کار می کنه برنامه نویس سطح بالا خبره وجود داره ولی در عرصه زبانهای سطح پائین مثل سی++ خیلی کم هست . همیشه شانس و پول خوب هم در زمینه هایی هست که کمتر کسی طرفش رفته ( البته دردسر هم هست).

----------


## Nima_NF

جناب shervin_agh67 حرف های شما را به نوعی تقریبا تایید می کنم، به جز نکات زیر که باید در نظر گرفته شود، لذا توضیحاتی می دهم:



> 1. عدم وجود منابع قوی و افراد خبره :


دقیقا برعکس... طبق آمارهای رسمی قوی ترین و بیشترین کتاب ها و مقالات با زبان ++C/C است، بیشترین  پست های فروم های دنیا و کتابخانه های جانبی نیز برای زبان ++C/C هست.
حتی شما اسناد و مقالات فنی MSDN برای بخش ++C/C را نمی توانید به هیچ عنوانی با مثلا اسناد .Net مقایسه کنید.

پس اگر کسی بگوید منابع کم است، دقیقا می رساند که در حال صحبت کردن در مورد منابع به زبان فارسی هست. یکی از دلایل سخت جلوه کردن این زبان در قسمت مطالب پیشرفته همین مشکل هست، مثلا با توجه به تجربه ام 98% دانشجویان (98 از 100 نفر!) تا پایان تحصیلات هنوز نمی توانند حتی در ارائه مقالات خودشان از مطالب انگلیسی به درستی استفاده کنند و این برایشان مفهموم کمبود منبع است در حالی که حقیقتا این طور نیست!

اینجاست که حرف شما را تایید می کنم، اگر کسی واقعا همت تحمل کردن سختی این راه را ندارد و به ویژه از دانش متوسط زبان انگلیسی برخوردار نیستند، بهتر هست وارد این حوزه نشود...
مخصوصا کسانی که حتی با مطالعه کتاب های فارسی این زبان، برای مسائل ساده کنسولی کم می آورند یا خودشان به تنهایی با این همه مرجع نمی توانند آن را حل کنند.




> اصولا برنامه نویسان حرفه ای سی بیشتر از برنامه نویسان سطح بالا به ماژولهای نوشته شده پیشین خود وابسته اند در صورتی که این کار رو نکنن ... ( خدا می دونه پروژه کی تموم می شه) . حالا حساب کنید منی که تازه وارد این زبان شدم چند سال باید وقت بگذارم تا یک کتابخانه کامل برای خودم بنویسم ؟


این موضوع هم بر می گردد به عدم اطلاع دقیق از کتابخانه های استاندارد این زبان و هزاران کتابخانه کد باز و رایگان آن، مخصوصا در کشور ما.

حدود سال 1995 کتابخانه STL به صورت استاندارد به زبان ++C اضافه شد و تقریبا اکثر اگوریتم های مهم در ساختمان داده و ریاضیات به آن اضافه شد (لیست پیوندی، انواع مرتب سازی ها، درخت ها، معادلات برای دستگاه مختلط (complex) و اعمال ریاضی قابل انجام روی آن و اکثر مواردی که دانشجویان خودشان دستی می نویسند و در این فروم سوال می کنند). در نسخه بعدی ++C نیز تعداد زیادی توابع ریاضی مانند bessel و  وLegendre و غیره نیز اضافه خواهد شد.

صدها تابع ریاضی پیشرفته دیگر در طرح استاندارد جدید مطرح شد که موافقت نشد، چرا؟
چون همه مردم دنیا به این موارد نیاز ندارند.

به هر حال تمام این ها جدا از این مطلب هست که به دلیل محبوبیت آن در سیستم های UNIX ده ها کتابخانه open Source و رایگان (مانند GMP ، apfloat و ..) برای مباحث پیشرفته محاسبات بر روی ارقام برزگ نیز وجود دارد.
و البته این موارد نیز در سایر زبان ها و تکنولوژی ها فراتر از این نیست!



> خیلی ریزه کاری وجود داره که توی کتابها وجود نداره و همانطور که شما اشاره کردید باید توی مقاله ها به دنبال اون گشت .


 اگر نگاهی به تبلیغات استخدامی بکنید ،هیچ کجا از شما نمی خواهد همه چیز را بدانید و در تمام زمینه ها خبره باشید، چون مطالب وسیع هست. 
به همین خاطر هست که در مقاطع بالاتر تحصیلی در دنیا برای کامپیوتر بیش از 10 گرایش وجود دارد، گرافیک، هوش مصنوعی، روبوتیک، کامپایلر، شبیه سازی، محیط چند رسانه ای، پردازش تصویری، محاسبات، شبکه، پردازش موازی ، سیستم عامل، زبان های برنامه نویسی، پایگاه داده و ...

(داخل پرانتز: یک سوال هوش، حال با این همه وسعت برنامه نویسان .Net ما در کدام حوزه فعالیت می کنند؟!)

پس بهتر هست افراد قبل از اینکه شروع به انتخاب این زبان کنند قبل از هر چیز، فیلد کاری خودشان را مشخص کنند و فقط روی آن به صورت تخصصی کار کنند و حتما روی سایر موارد نیز دانش داشته باشند اما می تواند کمتر از تخصص اصلی باشد. 
من به این افراد می گویم حرفه ای ، یعنی حوزه اش باید مشخص باشد.




> ولی به نظر من کسی که می خواد برنامه نویسی ویژوال سی++ رو کار بکنه چون مفاهیمش با زبان ماشین خیلی درگیره بهتره که از زبان ماشین شروع کنه و به بررسی معماری ماشین هم بپردازه .


به هر حال دانش اسمبلی یک نیاز هست، نه لزوما به خاطر استفاده از آن، بلکه بیشتر هدف آشنایی با مفاهیم کار ماشین یا اشکال زدایی فوق حرفه ای است.
اما در نظر داشته باشید که منظور از برنامه نویسی سطح پایین در ++Visual C یا کلا ++C و کتابخانه های دیگر بحثی کاملا متفاوت از اسمبلی یا کلا زبان ماشین است و سختی این دو را به هیچ عنوان با هم مقایسه نکنید که هیچ شباهتی ندارند.
معمولا افراد تا زمانی که وارد این حوزه نشوند تفکرات خیلی ترسناکی می کنند!

امروزه با توجه به شیوه ها و تکنولوژی های جدید حتی در بحث ارتباط با سخت افزار نیز معمولا به استفاده مستقیم از اسمبلی نیاز نخواهید داشت.

** پس در یک کلام چیزی که شما با آن درگیر هستید مفاهیم کارکرد سیستم عامل مورد نظر هست نه زبان ماشین یا اسمبلی.




> دلیلم هم برای شروع دوباره اینه که الان هرچی نگاه می کنم میبینم تا چشم کار می کنه برنامه نویس سطح بالا خبره وجود داره ولی در عرصه زبانهای سطح پائین مثل سی++ خیلی کم هست . همیشه شانس و پول خوب هم در زمینه هایی هست که کمتر کسی طرفش رفته ( البته دردسر هم هست).


جای خوشحالی است، تفسیر خوبی بود .

----------


## shervin_agh67

با تشکر فراوان از شما مدیر محترم که مطالب بنده را به دقت مطالعه فرمودید و نکات اشتباه کار من رو به من یادآوری می کنید.
راستش همانطور که اشاره کردم ما در این زمینه کتاب کم نداریم ، ولی به دلیل وسعت بیش از حد مطلب تا الان کتاب خوبی رو ندیدم که همه مطالب رو پوشش بده، هر کتابی رو که می خوندم مقداری کمی از هر مبحث رو توضیح می داد . این شد که خودم شروع به نوشتن مقاله و تحقیق در زمینه های توضیح نداده شدم که واقعا برام سنگین بود . اون زمان که من سی رو شروع کردم ، با کتاب هربرت شیلد شروع کردم و سی++ را با دیتل خوندم و ویژوال اون رو با یک کتاب جامع از انتشارات McGrawHill ادامه دادم (اسم دقیقش یادم نیست) خوب الان که نگاه می کنم می بینم دلیل شکست من توی این زبان این بود که اولا راهنمای درستی نداشتم :
توی دانشگاه تمام اساتید ما سی ++ رو تا سطح متوسط کا کرده بودن و از هر کسی که سوال می پرسیدم کسی بلد نبود.
دوم : منبع خوبی رو نمی شناختم :
شما الان از هر کسی که بپرسی برای شروع زبان سی چه کتابی کار کنم میگه یا هربرت شیلد و یا دیتل رو بخون ( لااقل این کتابهایی هست که در دانشگاههای ایران تدریس میشه). اما اگر بگی میخوام ویژوال سی++ کار کنم هر کسی یک منبع رو معرفی می کنه و نظرهای متفاوتی وجود داره . این رو هم بگم یکی از دلایلی که اینقدر نسخه ویژوال این زبان برای دانشجو سخت جلوه می کنه و در حالیکه با نسخه کنسولش براحتی کار می کنه اینه که کار با win32 و MFC رو تحت سی تجربه نکردن و از یک زبان تقریبا قابل فهم به یک محیط نا آشنا وارد می شوند. کتابهای خودآموز و ... شیوه درس دانشون معمولا به این صورته که در مورد کدهای نوشته شده توسط wizard برنامه به هیچ وجه توضیح نمی دن و فقط می گن که در فلان قسمت، کد مورد نظرت رو درج کن تا موقع لود برنامه اجرا بشه . 
توضیح بعضی از این کدها نیاز به کمی دانش اسمبلی دارد مثلا اصلاح کننده ها و دستورات پیش پردازنده ای موجود رو اگر بخواید به طور عمقی بررسی کنید باید کد زبان ماشین اون رو بررسی کنید .اما منظور من از دانستن دانش اسمبلی نتنها یادگیری خود زبان بود بلکه بعدها در حین کار نیز به این دانش نیاز خواهید داشت . بطور مثال شما برای برنامه نویسی یک سیستم کنترل کیفی روغن در یک کارخانه مواد غذایی استخدام شده اید(مثالش نمی دنم از کجا به ذهنم رسید) ، سیستم در ابتدا نیاز به یک پشته نرم افزاری جهت بررسی سیکل دستورات و .. دارد جدای از اینکه برنامه نویسی سخت افزار این سیستم را خود شما باید انجام دهید یا برنامه نویس مخصوص ، زمانیکه شما قصد نوشتن یک سیستم کنترل نرم افزاری برای این سیستم را دارید باید دانش خوبی از معماری و زبان ماشین داشته باشید . برنامه نویسی سطح پائین همیشه برنامه نویسی برای سیستمهای پنتیوم یا اینتل نیست گاهی وقتها باید برای کامپیوتر پایه ای که خود طراحی کردید برنامه بنویسید ، کارفرما در این مرحله ترجیح می دهد شخصی را استخدام کند که هم معماری سیستم را طراحی و اجرا کند و هم برنامه نویسی آن را ، چون در موقع نقص فنی فقط با یک نفر سر و کار دارد . دقت کنید که از نظر من بدست آوردن آدرسهای حافظه ای و تبدیل آدرسها به مبناهای متفاوت هم جزئی از یادگیری اسمبلی به حساب میآید.
اما در خصوص کتابخانه های استاندارد هم همه ما با STL آشنایی داریم . اما بگذارید یک مثال برای شما بزنم :
فرض کنید شما در حال نوشتن سیستم حسابداری برای شرکت B هستید ، شما قبلا سیستمی مشابه رو برای شرکت A نوشتید و در نوشتن دوباره این برنامه تنها کافیست که از کدهای اولی به همراه مقداری تغییرات استفاده کنید . درسته که در نوشتن سیستم اول ممکنه که از STL استفاده کرده باشیم و ماهها وقت صرف کرده باشیم ولی آیا به نظر شما عاقلانه بود که در طراحی سیستم دوم هم از پایه شروع می کردیم . درسته که در طراحی برنامه های ما کتابخانه های استاندارد و رایگان کمک بزرگی به ما می کنن ولی قبول کنید که تا تجربه کسب نکنید نوشتن برنامه های بزرگتر برای شما آسانتر نمی شود . 

در خصوص سطح دانشجویان کشور هم که اشاره کردید واقعا حق با شماست شاید 98% دانشجویان ما به دلیل ضعف در زبان قادر به مطالعه منابع قوی در این زمینه نیستند ( تازه من که دانشجوی آزاد هستم وضع رو در دانشگاه خودمون رو خیلی خرابتر می بینم ) ، ولی مشکلی که از جمله خود من با اون درگیر بودم writing محاوره ای بود . قبلا که توی سایت topcoder سوال می پرسیدم، من خودم خیلی سعی می کردم قوانین نوشتاری رو رعایت کنم ولی در دست آخر می دیدم که طرف باز هم حرف من رو نفهمید و یا به یک زبان محاوره ای مشکلی صحبت می کرد که من متوجه نمی شدم (خودمو کشتم آخرم نفهمیدم اینا چی می گفتن) تازه تالارهای برنامه نویسی خیلی خوبه وقتی وارد تالارهای امنیت شبکه میشی فکر می کنی اینا واقعا انگلیسی صحبت می کنن؟ توصیه من به دانشجویان عزیز مطالعه عمیق تر در زبان انگلسیی و از آن مهمتر گرفتن مدرک IELTS یا تافل هست که بعدا در حین کار و ادامه تحصیل شدیدا به اون نیاز دارید . 
سخن رو کوتاه می کنم . فکر میکنم حرفهایی که زدم با تفکر خیلی از دوستان چندان تطابقی نداشته باشه خوشحال می شم نظر شما رو هم بشنوم .

----------


## Mohammad_Mnt

به نظر من چند دلیل مهم وجود دارد که برنامه‌نویس‌ها کمتر به سمت سی می‌روند:
1) مشکل بودن و منحنی کم‌شیب سطح یادگیری به زمان
2) رویکرد شرکت‌های موجود در ایران
3) نوع غالب پروژه‌های موجود در ایران و درخواست زیاد برنامه‌نویس با تخصص‌های دیگر به ویژه دیتابیس

تجربه‌ی شخصی:
من یک زمانی شروع به یادگیری سی کردم ولی برای انجام پروژه‌ای با سختی زیاد و منابع کم فارسی (اون زمان زبانم خوب نبود) مواجه شدم و به دلفی سوییچ کردم. الان با این‌که از دلفی بسیار راضی‌ام ولی در حال بازگشت به سی هستم. چون الان شرایطش را دارم : مقداری تجربه در برنامه‌نویسی + کمی تسلط به انگلیسی. در حال حاضر هم آمادگی لازم دار دارم و هم منابع به مقدار کافی (انگلیسی). گرچه، هنوز هم برای درصد بالایی از پروژه‌ها از دلفی (یا احتمالا" سی‌شارپ ) استفاده خواهم کرد، با این تفاوت که تمرکز اصلی‌ام کم‌کم به طرف DirectX خواهد رفت.

درکل، برای بسیاری از برنامه‌نویس‌های ایران به‌صرفه نیست که روی سی تمرکز کنند و با سی‌شارپ و دلفی بهتر می‌تونند به هدف‌هایی که دارند برسند. جدا از مسلسل‌های تبلیغاتی مایکروسافت که باعث شده سی‌شارپ محبوبیت زیادی پیدا کنه، قسما اعظم پروژه‌های سودده در ایران با سی‌شارپ و دلفی به خوبی قابل پیاده‌سازی است؛ پس، در بسیاری از موارد منطق حکم می‌کند که از این ابزارها استفاده شود. در ضمن، بازار، بازارِ عرضه و تقاضا است و چون تقاضا برای برنامه‌نویس سی کم است (در ایران) بنابراین کمتر کسی هم حاضر می‌شود روی سی تمرکز کند.

----------


## linux

> (داخل پرانتز: یک سوال هوش، حال با این همه وسعت برنامه نویسان .Net ما در کدام حوزه فعالیت می کنند؟!)
>   .


در ایران نه تنها دات نت کارها بلکه 99 درصد بقیه برنامه نویس ها کارشان با دیتابیس هست ، یعنی نوشتن برنامه هایی که کارشان
Insert,Update,Delete,Select و گزاش گرفتن از داده ها هست، همین.

----------


## h.jaza

با توجه به صحبت های گفته شده توسط دوستان، من به این نتیجه رسیدم که:

به خاطر خشنی که زبان سی پلاس پلاس در ابتدا از خودش به برنامه نویسان تازه کار و مبتدی دنیای برنامه نویسی ارائه می کنه، عموما این افراد بعد از مدت کمی از اون دل زده می شن و میرن سراغ یه زبون جذاب دیگه مثل سی شارپ یا وی بی یا دلفی و امثال اینها.

منظورم از خشن بودن اینهاست:
1- پیشبرد برنامه هایی که می خواد با این زبون نوشته بشه، برای تازه کار ها خیلی طول می کشه و باید صد ها خط کد بنویسن تا مثلا تازه یه فرم ساده ی ساده طراحی بکنن؛
2- سطح علمی ای که نیاز هست برای پیشبرد کد ها و برنامه ها در این زبان، *باید* بالا باشه. یعنی باید فرد اصول بنیادی مثل شئ گرایی و غیره رو واقعا بلد باشه و کاملا با اونها در حد بالایی آشنا باشه و معماری های متفاوت رو قشنگ بلد باشه و متوجه طرز رفتار اونها باشه. در واقع نمیشه مثل سی شارپ برنامه نویسان آب نمکی ای داشت که کلی هم ادعا دارن و ... (به کسی بر نخوره، من خودم سی شارپ کارم)
3- از اونجایی که در مملکت ما خیلی آداما می خوان راحت باشن و همه چیز مثل هلو وسشون باشه، این میشه که سختی هایی که در یاد گیری اصول این زبان خودش رو نشون میده، باعث میشه تا سست عنصران راحت طلب، از این زبون گریزان بشن و اونرو ترک کنن.

خوب، با توجه به اینها پس می فهمیم که برای یه برنامه نویس که می خواد تازه شروع به یاد گیری بکنه، اگر واقعا سخت کوش نباشه و راحت طلبی بخواد پیشه بکنه، خیلی واضحه که بعد از مدتی اگر از سی / سی پلاس پلاس شروع کرده باشه، اون رو ول می کنه و میره سراغ یه زبون دیگه.

ولی بعد از مدتی که اومد و مثلا با سی شارپ کد نویسی های کوتاه و خفن کرد و به تبع باهاش هال کرد، اون موقع زمانیست که فرد می تونه درک مفاهیم رو در خودش زیاد کنه چرا که نحوی که باعث خستگی و دل زدگیش نمیشه. به این خاطر که در یه فضای ویژوال داره کار می کنه و محیط پیرامونش(GUI)، براش جذابه و کشش داره و خشکی مفاهیم رو براش کاهش میده و مثل محیط سی نیست که فقط بخواد با کد ها سر و کله بزنه. در واقع به خاطر زیبایی های دور اطرافش، گول می خوره و ...

اینجاست که فرد کمی تجربه در زمینه ی برنامه نویسی پیدا می کنه و دیگه نوشتن صد ها و هزاران خط کد براش خسته کننده و آزار دهنده نیست. در چنین برهه ای فرد پتانسیل سوئیچ رو به سی پیدا می کنه.

پ ن 1: مطالب بالا نظر شخصیه و در نتیجه ی مباحث مطرح شده توسط دوستان بیان شده. 
پ ن 2:در صورت اشتباه بودن، خوشحال می شم مطرح کنید.
پ ن 3: اینکه چند بار از سی شارپ اسم بردم به این خاطر بود که خودم سی شارپ کار هستم و تبع با توجه به اون مسائلی مطرح شد.

----------


## Mehdi Asgari

موافقم باهات
به همین دلیل Stroustrup (خالق سی پلاس پلاس) تاکید می کنه یکی از مواردی که در کمیتۀ ISO خیلی روش کار می کنن ، آسونتر کردن یادگیری سی پلاس پلاسه)
(خودشم یه کتاب نوشته برای آموزش این زبان به افراد تازه کار: http://www.research.att.com/~bs/programming.html)

----------


## Nima_NF

> به این خاطر که در یه فضای *ویژوال* داره کار می کنه و محیط پیرامونش(*GUI*)، براش جذابه و کشش داره و خشکی مفاهیم رو براش کاهش میده و مثل محیط سی نیست که *فقط* بخواد *با کد* *ها* سر و کله بزنه.


با تمام مطالب شما موافقم به جز مورد بالا.

نمی دانم از این مطالب اطلاع دارید یا نه، اگر مطلع هستید (!) برای سایر دوستان تازه کار که در بخش C صد بار این اشتباه را کرده اند و در آینده این تاپیک را نیز خواهند دید مفید هست:

محیط برنامه نویسی کنسولی ++C/C فقط یک شروع هست. (این محیط را در #C نیز دارید)
برنامه نویسی C++‎/C با کتابخانه های MFC و تولکیت های GUI مانند Qt ، wxwidgets ، GTK و حتی API های win32 در محیطی visual نوشته می شوند و محیطی برای طراحی دیالوگ دارید، فقط در برخی موارد باید حتی برخی از قابلیت های ساده را پیاده سازی کنید که سختی آن در اینجاست نه اینکه کلا محیط GUI ندارید. (البته فقط از بعد GUI جدا از سایر سختی ها و پیچیدگی ها)

مثلا در MFC اضافه کردن یک عکس به یک button باید توسط کدها نوشته شود ولی در .NET به راحتی در همان طراحی فرم این کار امکان وجود دارد.

در مورد سایر کتابخانه های GUI در ++C مانند Qt که نام برده شد، تقریبا در قسمت GUI همه آن موارد به صورت Visual همانند .NET امکان پذیر است و محیطی بسیار قوی و سفارشی همانند Form ها در .NET دارید که اکثر این امکانات را بدون نیاز به کدنویسی فراهم می کنند.

یک خاطره:
2 سال قبل سمیناری 1 ساعته برای دانشجویان سال آخر کامپیوتر در مورد Qt داشتم که بعد از آن همه توضیحات و مثال و اتمام سمینار، دانشجویی قوی در #C که برنامه های بسیاری از سازمان ها و هتل ها را نوشته بود، پرسید: 
مگه ++C هم محیط Visual داره !!!   (_پیدا کنید پرتقال فروش را_)


تذکر: _موارد بالا فقط برای حالت GUI که عنوان کردید مطرح شده است و همچنان مطالب شما در مورد سختی و پیچیدگی این زبان نسبت به سایر زبان ها کاملا صحیح است._

----------


## h.jaza

نیما جان حرف شما کاملا درسته و من هم منظورم تقریبا همون سادگی ای بود که شما هم بهش اشاره کردین.  با تشکر

----------


## Saeed_m_Farid

سلام




> تبليغات سايت ضعيف است به عنوان مثال در كلاس 25 نفري ما 2 نفر عضو اين سايت هستند كه يكي از آنان به توصيه ي من خود را عضو كرد و سالي يك بار سري مي زند .


ميخواستم از آقا نيما بپرسم غير از اين بخش كجا در مورد سايت برنامه نويس اينطور تصور ميشه؟ من كه تو هيچ قسمتي از مانيفست سايت نديدم نوشته باشه حتي مربوط به دانشجويان! ما همه عضو يه جامعه برنامه نويس هستيم نبايد خودمون رو جدا كنيم كه دانشجو ،ترم بالايي ،كارمند ،حرفه اي و ...




> اين نشان از آن دارد كه دوستان ترم بالايي پس از ترم 3 واگر خيلي بمانند تا ترم 5 ديگر به سراغ اين برنامه (يا بهتر بگويم بخش) نمي ايند و به اين دليل ما بخش زيادي از نيروي با تجربه را از دست مي دهيم


بنده هم زمان دانشجويي عضو سايت بودم و طبق گفته دوستمون ترم بالا كه شدم اصلا نام كاربريم يادم رفت! و پارسال مجبور شدم يه نام كاربري جديد ايجاد كنم ولي تفاوتي تو وضعيت سايت ايجاد شد؟ نيروي باتجربه تو كار باتجربه ميشه نه تو دانشگاه؛ دانشگاه يه بستر واسه يافتن مسير و علاقه فرد و آشنايي كلي با مسائل نرم افزار و الا هيچكس نميتونه تو محيط كاري تو همه مواردي كه خونده استاد باشه و به كسي حرفه اي ميگن كه تو زمينه خودش مسلط باشه نه حلال مشكلات.




> تعدادي از دوستان براي بدست آوردن پست بيشتر در پاسخ به دوستان سوال كننده، دوستان ديگري كه قبلا پاسخ داده اند را تخريب مي كنند





> تعدادي از دوستان كه سوال مطرح مي كنند توضيح مناسبي از سوال نمي دهند و فقط خودشان و افراد سطح بالاتر متوجه سوال مي شوند و اگر همين سوال در جايي مطرح شود ما قادر به حل نيستيم و باعث پايين آمدن روحيه ميشود.


نميدونم منظورتون چيه ولي فكر كنم شما يه بار به من تو يكي از تاپيكها اين مورد رو گوشزد كردين در حاليكه جوابي كه شما به سوال دوستمون داده بوديد با عرض معذرت كاملا بيربط بود و من هم محترمانه عرض كردم چه ربطي داشت؟! تا دوستاني كه سوال ميپرسن گمراه نشن و مثل خود شما كه ميفرماييد مايوس نشن؛ ضمنا من از طرف خودم ميگم مطمئن باشين اين پستها به هيچ درد من نميخورن چون حتي يكبار هم نه كسي از بچه هاي اين سايت چه مدير و چه حرفه اي و... رو ديدم و نه اينكه سود خاصي واسه من داره. تنها دليل اينجا بودنم اين بود كه بعد 7و8 سال تجربه كاري مشكلي تو يه قسمت از يكي پروژه هامون پيش اومد كه هيچ جوري نتونستيم حلش كنيم و من اين سايت رو يادم افتاد اونم واسه اينكه مسائل پيشرفته و غير دانشجويي توش ديده بودم و از دوستان اوراكل كار و توسعه دهنده وب تونستم يه سر نخي از مشكل پيدا كنم و به اين ترتيب خودم رو مديون اين سايت دونستم و تنها سعي ام اينه كه بتونم با كمك دوستان اين بخش رو بالا بكشم و ديگر هيچ.

==================================================  =======




> (داخل پرانتز: یک سوال هوش، حال با این همه وسعت برنامه نویسان .Net ما در کدام حوزه فعالیت می کنند؟!)


ميدونم نبايد رو نقاط حساس دست بذاريم ولي خوب نتونستم تحمل كنم :  ايول ايول داش نيما رو ايول!!!




> توضیح بعضی از این کدها نیاز به کمی دانش اسمبلی دارد مثلا اصلاح کننده ها و دستورات پیش پردازنده ای موجود رو اگر بخواید به طور عمقی بررسی کنید باید کد زبان ماشین اون رو بررسی کنید .


اولا حداقل در اين مواردي كه ذكر كردين كه اينطوري نيست از طرف ديگه تا اونجايي كه من ميدونم تو سيستم عاملهاي جديد اصلا نميشه از اسمبلي استفاده كرد!




> سیستم در ابتدا نیاز به یک پشته نرم افزاری جهت بررسی سیکل دستورات و .. دارد جدای از اینکه برنامه نویسی سخت افزار این سیستم را خود شما باید انجام دهید یا برنامه نویس مخصوص ، زمانیکه شما قصد نوشتن یک سیستم کنترل نرم افزاری برای این سیستم را دارید باید دانش خوبی از معماری و زبان ماشین داشته باشید . برنامه نویسی سطح پائین همیشه برنامه نویسی برای سیستمهای پنتیوم یا اینتل نیست گاهی وقتها باید برای کامپیوتر پایه ای که خود طراحی کردید برنامه بنویسید


همچين سيستم embeded اي حتما يه سيستم عاملي داره كه يه زبان مخصوص به خودش داره و در حد كار با ثبات ها و ساير منابع سيستمي معمولا شما رو محدود ميكنن و يه سري دستورات خاص دارن مثل دستگاههاي CNC و ساير ماشينهاي صنعتي و معمولا با يه رابط مثل پورت سريال RS232 يا موازي و يا رابطهاي ديگه كه به اون وسيله شما ميتونين باهاشون كار كنين. در اينكه بايد دانش خوبي در زمينه معماري (و اصولا دانش خوبي معلومه كه خوبه!) و يا زبان ماشين داشته باشين شكي نيست ولي نه شرط لازمه نه كافي!
چون من تو اينجا تا حالا نديدم كه يه ترانزيستور داخلي توليد بشه چه برسه به كامپيوتري كه خودمون طراحي كرده باشيم، معمولا توليدات با چيپ ست ها ي توليد شده خارجي پياده سازي ميشن كه اونا هم manual و دستورات خودشون رو بطور كامل ارائه ميكنن و بازم شما فقط نيازه كه با يه واسط برنامه ريزيشون كنيد و در صورتيكه كارتي رو شكافهاي PCI و ... هم طراحي و پياده سازي كنيد بايد بازم با API هاي native كه چيپ ست بهتون داده كار كنيد و نيازي به زبان ماشين نيست ولي اصولا بايد از معماريش اطلاع داشته باشيد.
ضمنا زبان ماشين ربطي به پنتيوم اينتل يا AMD نداره و نحوه تركيب و تعداد ثباتهاشون فرق ميكنه ولي اگه منظورتون مكينتاش اپل و ساير سيستمهاي محدود هست كه تو كشور ما زياد مورد كاربردي ندارن و محدود ميشن به چند نوع لب تاپ و ...




> ولی در عرصه زبانهای سطح پائین مثل سی++ خیلی کم هست


واقعا تا جا داره بايد اين مطلب تكرار بشه تا شايد دوستان به ذوق بيان و تو اين حوزه هم شاهد افراد بيشتري باشيم. طوريكه رقابت سر كار باشه نه كاريابي! 
بازم از طرف خودم ميگم :‌ چون افرادي مثل بنده از 24 ساعتشون 10 ساعت به خودشون تعلق پيدا نميكنه كه تو اين مدت هم بايد بخوابيم هم به خانواده برسيم هم ... و در نهايت از فرط كار و مشغله و مسئوليت سرخورده بشم و بيام تو همچين سايتي كه يكي از معتبرترين سايتهاي برنامه نيسيمونه و با معدود دوستان سعي كنيم نحوه تفكر به سي رو ببريم بالا درحاليكه ميتونستيم تو يه تيم گروهي خلاق و اميدوار سعي در رسيدن به قله ها بكنيم...

البته اين يه شكايت نيست فقط يه خواهشه كه دوستان فكر نكن خيلي سخته كه تو زمينه سي مشغول به كار بشن، شما يه قدم بردارين و فقط به نتيجه سريع فكر نكنين مطمئن باشين بنده و امثال بنده اينقدر كشيديم كه نخواهيم تو اين حوزه كاري انحصاري كار كنيم فقط اگه قبول كنين تمرين دانشجويي هم ميتونه يه دريچه به اين حوزه باشه كافيه، ممنون از توجه تمام افراد جامعه برنامه نويس.

با تشكر.

----------


## Mehdi Asgari

> تا اونجايي كه من ميدونم تو سيستم عاملهاي جديد اصلا نميشه از اسمبلي استفاده كرد!


اگه Vista SP1 جدید محسوب میشه از نظر تو ، من می تونم روی ویستای خودم برنامۀ اسمبلی بنویسم.
یعنی چی ؟ مگه میشه روی یه ماشین نتونیم از زبان اون ماشین استفاده کنیم ؟
{ با توجه به این که این کاره ای خیلی از حرفت متعحب شدم. سریع یه Hello World با اسمبلی نوشته و اسمبل و اجرا کردم بعد خیالم راحت شد }

----------


## Saeed_m_Farid

> اگه Vista SP1 جدید محسوب میشه از نظر تو ، من می تونم روی ویستای خودم برنامۀ اسمبلی بنویسم.


كاملا حق با شماست، مشكل از بنده است كه جديدترين سيستم عاملي كه توش كد نوشتم  XP بوده و خوب عرض كردم كه تا اونجايي كه ميدونم! بله من هم تو ويستا دو تا عدد رو جمع كردم و با شرمندگي تمام نتيجه هم گرفتم، از دوستان ديگه هم عذر ميخوام.
خودم تست نكرده بودم و همون چيزي كه از دوستان شنيده بودم بدون علم انتقال دادم چون گفتم شايد مثل اشاره گرها سطح دسترسي به اين موارد نيز تو مايكروسافت محدود شده باشه ...
بگذريم آقا mehdi311ggg بد مچ ميگيري ها! يكم آرومتر خوب اشتباه كرديم Excuse me !

----------


## حامد مصافی

خب، مشکلات که به حمدالله مشخص شد (هر چند تا حد زیادی مشخص بود) اما بعنوان راه حل کسی نظری نداره؟؟

----------


## shervin_agh67

حرف آقا سعید تا حدودی درست بود . شما توی ویندوز با اسمبلی با سخت افزارتون نمی تونید ارتباط برقرار کنید (به صورت مستقیم) مثلا سکتورهای هارد رو بدون اجازه ویندوز دست بزنید . ویندوز هم برای این کار دلایلی داره که خودتون بهتر می دونید . ولی نه اینکه کلا نشه برنامه نوشت .

----------


## Nima_NF

> *شاید برای آخرین مطلب* برایتان جالب باشد که بدانید در طی 6 ماه اخیر 4 نفر آگهی استخدام برنامه نویس ++Visual C برایم ارسال کردند و خواستند که اگر کسی مسلط را در سایت می شناسم به آن ها معرفی کنم، جالب اینکه *حتی 1 نفر* وجود نداشت تا معرفی کنم!
> اگر در این سایت *حداقل* نسبت *1* برنامه نویس مسلط ++C به *1000* برنامه نویسی #C نیز وجود داشت، باز جای خوشحالی بود که برنامه نویسان ما راه درستی می روند!


تا کنون چند تا از دوستان، تماس گرفتند و مطلب فوق را مورد انتقاد قرار دادند که شما چطور گشتید و گفتید کسی وجود ندارد! و مطرح کردند که آن ها ++C کار زیادی را می شناسند.

هدف از ذکر این مطلب این نبود که واقعا در کل کشور و جامع برنامه نویسی کشور ما کسی وجود ندارد، بلکه منظورم کسانی بود که در طی این 1 سال، خبری از فعالیت آن ها در این بخش نبود و بنده نیز شخصا با آن ها آشنایی چندانی پیدا نکردم.
(حداقل به نسبت صدها برنامه نویسی که در سایر بخش های این سایت فعالیت دارند و با آن ها آشنایی پیدا کرده ام)

تا من کسی را نشناسم و حداقل فعالیت چندانی هم از او نبینم ، چطور می توانم آن ها را شناسایی یا مثلا معرفی کنم!
یا بالعکس تا سایر کاربران حضور آن ها را در بخش های C نبینند، چطور می توانند آن ها را شناسایی کنند!

*تذکر*: یکی از هدف های ذکر این مطلب در این تاپیک پیدا کردن کاربران پنهانی هست که در این امر فعالیت دارند یا داشتند و ما (به علاوه سایر کاربران) از آن ها بی خبریم. و یا حتی  ایجاد این میل در افرادی که در این سایت حضور ندارند تا در آینده با دیدن آن خود را به دیگران معرفی کنند.

پس فکر چندان بدی نیست که حداقل در این تاپیک خود را به دیگران معرفی کنند و باقی ملت نیز کمی از تفکرات اشتباه خود بیرون بیایند.

----------


## حامد مصافی

> تا من کسی را نشناسم و حداقل فعالیت چندانی هم از او نبینم ، چطور می توانم آن ها را شناسایی یا مثلا معرفی کنم!
> یا بالعکس تا سایر کاربران حضور آن ها را در بخش های C نبینند، چطور می توانند آن ها را شناسایی کنند!


فاروم برنامه نویس مثل سایر فاروم ها به آموزش نمی پردازی (منظورم این نیست که باید بپردازه) که این مسئله ناشی از پر مشغله بودن کاربران این فاروم است. این مسئله باعث میشه تا این فاروم فقط جایی برای دریافت پاسخ باشه و علی القاعده کاربران جایی سوال می پرسند که از لحاظ علمی فعال باشه. اکثر برنامه نویسان ++C (حداقل در این فاروم) برنامه نویسانی هستند که در یک یا چند زبان دیگر قبلاً به حد تخصص رسیده اند. شاید این مسئله (شخصیت کاذب) قسمتی از علت فعال نبودن این بخش در زمینه نپرسیدن سوالات باشه.

----------


## !EHSAN!

> این آمار را گذاشتم که دقیقا برداشتی خلاف مطالب فوق کنید!
> این حرف را قبلا چند مرتبه زده بودید که لازم دیدم توضیحی بدم.
> 
> این فروم هایی که نامشان برده شده است از کشور هایی مختلف در آن فعالیت می کنند: از هند، پاکستان و ایران گرفته تا استرالیا و کشورهای متمدن غربی.
> 
> چرا به این شکل فکر نمی کنید که مردم دنیا با دقت ابتدا همه چیز را بررسی می کنند و هر چیز را در جای خود استفاده می کنند و فقط دنبال راحتی نیستند؟
> به جای اینکه بگید چون تو ایران اکثرا دنبال #C رفتند پس ما هم بقیه زبان ها را نابود کنیم یا کنار بگذاریم و بچسبیم به همین، چرا با دیدن آمار نمی گید که هر روز متخصصان ما دارند از روال عادی برنامه نویسان دنیا فاصله می گیرند؟!
> 
> در حالی که نیاز برنامه نویسی دنیا به سمت cross-platform شدن پیش رفته است، ما اصلا وارد آن نشده ایم!
> ...


من خودم عشق C دارم و هیچ جوره نیستم C#‎ کار شم! 
اما شما نیما جان یک چیزی را در نظر بگیرید ، توی ایران کپی رایت نیست! بجز برنامه حسابداری چیزی نمیشه تولید کرد ، یعنی میشه تولید کرد اما وقتی فروش نره ، اون برنامه نویس و شرکتی که هزینه کرده چطوری بقا خودشو تضمین کنه ؟
توی ایران برنامه نویسی به سبکی شده که سفارش داده میشه و برنامه نویس ها انجام می دن. من اگه مثلا برنامه ای تولید کنم مثل Photoshop اگه بتونم از لحاظ برتری روی دست Photoshop را بیارم نمی تونم توی ایران بفروشم! چون یک نفر می خره و در عرض 10 روز بصورت رایت شده و کرک شده به فروش می ره . شاید شما بگی خارج از ایران به فروش برسونیم ؛ اما بحث سده این هست که بتونیم توی کشور خودمون فروش کنیم.
به نظر من تمام مشکلات برنامه نویسان ما این که ما کپی رایت نداریم.

----------


## SamaPic

با سلام.
در ایران قانون کپی رایت وجود دارد ولی مرجع رسیدگی به آن وجود ندارد.
پس نگویید قانون کپی رایت نیست.
از چند جنبه گفته ی شما درست است، ولی از چند جنبه ی دیگر گفته ی شما کاملا غلط است.
در ایران مهم نیست که برنامه ای که می نویسی چه است یا چه قابلیت هایی دارد.فقط مهم این است که به کار فرد بیاید .بخصوص در مشهد که تقریبا تمامی بازاریان آن قدیمی فکر می کنند.مثلا به هیچ عنوان حاضر نیستند به یک نرم افزار که در حدود 3 ماه روی آن کار شده حتی 100 هزار تومان بدهند.
مشکل ما فکر ماست که هنوز همان تفکر قدیمی است.من به عنوان یک کاربر وقتی وارد مغازه می شوم و با قیمت نجومی یک نرم افزار روبرو می شوم 100 درصد به دنبال نرم افزار رایت شده ی آن می گردم .حتی اگر لازم باشد حاضر می شوم تا چند ساعت پشت کامپیوتر ، اینترنت را زیر و رو کنم و چند ساعت دیگر وقت برای دانلود آن بگذارم.(شاید باور نکنید ولی یکی از دوستان من با دایل آپپ 100 مگ نرم افزار را دانلود کرد.)
مشکل در ایران ما هم نخواهیم بود.
نمی دانم این مطلب درست است یا نه ولی شما اساتید تصحیحش کنید :
در کشور های خارجی مسئولیت پخش یک نرم افزار ، یک شرکت که مسئول پخش آن محصول خاص در آن کشور یا سایر کشور ها می شود.ولی در ایران چنین شرکتی وجود ندارد یا اگر وجود دارد خیلی ضعیف یا حتی بسیار سختگیر هستند.
اگر چنین شرکت هایی با پشتیبانی حقوقی اقدام به پخش یک محصول نمایند مطمئنا این مشکلات موجود پیش نخواهد آمد.
از شما و سایر دوستان تقاضا دارم تا بوجود آمدن چنین شرکت هایی خود مجری خویش بوده و قانون کپی رایت را رعایت نمایید.(هرچند که محال می باشد.)
با تشکر.
خدانگهدار.

----------


## !EHSAN!

پس ایران کپی رایت داره ؟؟؟ برا همین ویندور مایکروسافت بدبختو 200 تومان میخریم ؟؟
اسم اون که مشا میگی کپی رایت نیست!! ثبته!

----------


## SamaPic

با سلام.
دوست من ، من خودم یک زمانی دنبال کپی رایت بودم و این موارد را پیدا کردم.ولی با شرایطی که در پست قبلی توضیح دادم.
حق باشماست.این دیگه اسمش کپی رایت نیست ، بلکه نامش می شود ثبت.ولی با نام کپی رایت است.
خدانگهدار.

----------


## begnner

سلام

اگر میشه دوستانی که دستشون تو کاره، بیان و این تاپیکو آپ تو دیت کنند
فکر میکنم که خیلی مفید باشه برای همه ما تازه کارها

ممنون

----------


## vasilopita

سلام به همه ی دوستان. راستش و بخواید من با توربو سی شروع کردم. فک می کردم تمام سی همین محیط کنسوله. بعد از اینکه چشمم به سی شارپ باز شد ، سی رو یه تیکه آشغال می دونستم. بعدها اتفاقات زیادی افتاد که منجر به این شد که در مورد زبان برنامه نوسی مورد علاقه ام و در واقع زبانی که بکارم بیاد تحقیق کنم. تحقیقاتم منجر به سی ++ شد. که اتفاقا همین مقالاتی که تو برنامه نویس هست خیلی بهم کمک کردن. (از همه اساتید ممنونم) الان تقریبا حدود 2،3 ماه ای میشه که شروع کردم به برنامه نویسی win32 ولی واقعا به یه سری مشکل برخوردم. اول اینکه اون زمانی که شروع کردم بحث های زیادی سر این بود که ویندوز 8 دیگه قرار نیست به این شیوه ادامه بده و در واقع برنامه نویس win32/win64 تغییر خواهد کرد به winRT. که این باعث شد با شک و تردید به کارم ادامه بدم. مطلب دیگه این هست که واقعا نمی دونم این شیوه ای که برای یادگیری در پیش گرفتم مناسبه یا نه. من یه مدت شروع کردم به مطالعه ی کتاب windows programing by Charles Petzold ولی بعد از یه مدت هم بدلیل اینکه سرعت مطالعه ام یه مقدار پایین بود و هم احساس می کردم زیاد از این کتاب نتیجه نخواهم گرفت ، شروع کردم به تعریف پروژه های کوچیک و انجام دادن اونها. تو این شیوه خیلی موفق تر بودم و چیزای زیادی یاد گرفتم ولی همیشه عذاب این رو دارم که انگار از پایه باید یه مسائل رو یاد می گرفتم و یادنگرفتم. یه مشککل دیگه این هست که من الان تقریبا تو سال های آخر دانشگاهم. نمی دونم این قدر فرصت می کنم تو این زبان مسلط بشم که توانایی استخدام در یک شرکت رو داشته باشم یا نه؟ مطمئنن اگه این زمان رو صرف سی شارپ کنم فرصت های شغلی بیشتری خواهم داشت، ولی علاقه ام واقعا به این زبانه! (Just CPP)

----------


## emadfa

> سلام به همه ی دوستان. راستش و بخواید من با توربو سی شروع کردم. فک می کردم تمام سی همین محیط کنسوله. بعد از اینکه چشمم به سی شارپ باز شد ، سی رو یه تیکه آشغال می دونستم. بعدها اتفاقات زیادی افتاد که منجر به این شد که در مورد زبان برنامه نوسی مورد علاقه ام و در واقع زبانی که بکارم بیاد تحقیق کنم. تحقیقاتم منجر به سی ++ شد. که اتفاقا همین مقالاتی که تو برنامه نویس هست خیلی بهم کمک کردن. (از همه اساتید ممنونم) الان تقریبا حدود 2،3 ماه ای میشه که شروع کردم به برنامه نویسی win32 ولی واقعا به یه سری مشکل برخوردم. اول اینکه اون زمانی که شروع کردم بحث های زیادی سر این بود که ویندوز 8 دیگه قرار نیست به این شیوه ادامه بده و در واقع برنامه نویس win32/win64 تغییر خواهد کرد به winRT. که این باعث شد با شک و تردید به کارم ادامه بدم. مطلب دیگه این هست که واقعا نمی دونم این شیوه ای که برای یادگیری در پیش گرفتم مناسبه یا نه. من یه مدت شروع کردم به مطالعه ی کتاب windows programing by Charles Petzold ولی بعد از یه مدت هم بدلیل اینکه سرعت مطالعه ام یه مقدار پایین بود و هم احساس می کردم زیاد از این کتاب نتیجه نخواهم گرفت ، شروع کردم به تعریف پروژه های کوچیک و انجام دادن اونها. تو این شیوه خیلی موفق تر بودم و چیزای زیادی یاد گرفتم ولی همیشه عذاب این رو دارم که انگار از پایه باید یه مسائل رو یاد می گرفتم و یادنگرفتم. یه مشککل دیگه این هست که من الان تقریبا تو سال های آخر دانشگاهم. نمی دونم این قدر فرصت می کنم تو این زبان مسلط بشم که توانایی استخدام در یک شرکت رو داشته باشم یا نه؟ مطمئنن اگه این زمان رو صرف سی شارپ کنم فرصت های شغلی بیشتری خواهم داشت، ولی علاقه ام واقعا به این زبانه! (Just CPP)



دوست عزیز.

ورود شما به دنیای برنامه نویسی حرفه ای در ++C رو تبریک می گم. 
اولین این که win32 از بین نرفته. شما در windows 8 هم چنان می تونید با این API برنامه نویسی کنید و مایکروسافت به شکلی قدرتمند تا سالیان سال به پشتیبانی از اون ادامه خواهد داد. در مورد قدرت winRT هنوز ابهاماتی هست و نکته مهم این که هیچ application با این زبان نوشته نشده. بنابراین نگران نباشید. 

در مورد روند فعالیت شما, اینو بگم که پاسخ هر برنامه نویسی در دنیا میتونه متفاوت باشه. (با توجه به استراتژی, علایق و اهداف) اما از دیدگاه من بهترین Framework برای زبان ++C در حال حاضر QT هست که واقعا قدرتمند هست. بنابراین در آینده حتما روی این framework سرمایه گذاری کنید. (در صورتی که هدف شما از زبان ++C دو حیطه برنامه های Cross-platform و Multimedia هست.)

در مورد زبان #C هم نگران نباشید. یک برنامه نویس حرفه ای ++C در مورد بسیار کوتاهی این زبان رو یاد می گیره و با کمی تجربه و برنامه نویسی با شیب یادگیری بسیار کمتری نسبت به سایر برنامه نویسان به اون مسلط می شه. 

فقط یادتون باشه. در بازار نرم افزار ایران (که متاسفانه هنوز تبدیل به صنعت نشده.) برای برنامه نویسان ++C هم کار مناسب و درآمد بسیتری (حتی نسبت به سایر برنامه نویسان) هست.  اما برای موفقیت باید به چند اصل توجه کنید:

1) حرفه ای باشید.
2) از این شاخه به اون شاخه نپرید. مثلا بگید Win32 یا Qt یا هر شاخه دیگه و کاملا تو اون حیطه حرفه ای بشید.
3) با پشتیبانی یا عدم پشتیبانی یک تکنولوژی دلسرد نشید. حتی اگه فقط 0.01% اون زبان پشتیبانی نشه در آینده, باعث میشه شما اطلاعاتتون افزایش پیدا می کنه و با یک دید جدید بتونید با سرعت بسیار بالاتری هر تکنولوژی جدیدی رو یاد بگیرید. 
4) نصف وقتتون رو صرف یادگیری (کتاب و فیلم و ...) کنید. نصف دیگه فقط کد نوشتن!

5) پشتکار...
پشتکار
پشتکار

----------


## Beginner2013

با سلام خدمت دوستان.با تشکر از همه دوستان همه پست هارو خوندم و استفاده کردم.



> از این شاخه به اون شاخه نپرید. مثلا بگید Win32 یا Qt یا هر شاخه دیگه و تا کاملا تو اون حیطه حرفه ای بشید.


شاید من در این زمینه زیاد صاحب نظر نباشم،چون من رشته تحصیلیم کامپیوتر نیست.اما به عنوان کسی که از اهداف نهاییش در کامپیوتر تسلط به C++‎(یا شایدم D)
هست باید بگم با این حرف شما مخالفم.من تقریبا با بیش تر زبانای معروف حداقل یه چند خطی کد زدم،یکی از اهدافم از پریدن از این شاخه به شاخه دیگه رسیدن به هدف دراز مدتم،که هون C++‎ بوده،بوده!.همونطور که دوستان دیگه هم گفتم برنامه نویسی دات نت به یادگیری خیلی چیزا کمک میکنه.برای مثال من یه زمانی با خوندن یه مقاله در مورد php به کلمه "عبارات با قاعده" برخوردم،وبلا فاصله همین کلمه رو همراه با نام زبانی به غیر از php که در اون ایام بیش تر کار میکردم سرچ کردم.و این قضیه بار ها بهم برای کشف چیزای جدید کمک کرده.

----------


## emadfa

> با سلام خدمت دوستان.با تشکر از همه دوستان همه پست هارو خوندم و استفاده کردم.
> 
> شاید من در این زمینه زیاد صاحب نظر نباشم،چون من رشته تحصیلیم کامپیوتر نیست.اما به عنوان کسی که از اهداف نهاییش در کامپیوتر تسلط به C++‎‎‎(یا شایدم D)
> هست باید بگم با این حرف شما مخالفم.من تقریبا با بیش تر زبانای معروف حداقل یه چند خطی کد زدم،یکی از اهدافم از پریدن از این شاخه به شاخه دیگه رسیدن به هدف دراز مدتم،که هون C++‎‎‎ بوده،بوده!.همونطور که دوستان دیگه هم گفتم برنامه نویسی دات نت به یادگیری خیلی چیزا کمک میکنه.برای مثال من یه زمانی با خوندن یه مقاله در مورد php به کلمه "عبارات با قاعده" برخوردم،وبلا فاصله همین کلمه رو همراه با نام زبانی به غیر از php که در اون ایام بیش تر کار میکردم سرچ کردم.و این قضیه بار ها بهم برای کشف چیزای جدید کمک کرده.


چند سال پیش یک استاد در دانشگاه داشتیم. حرفی زد که هرگز تا پایان زندگیم فراموش نمی کنم. این که:
"متاسفانه اکثر دانشجویان رشته کامپیوتر و به بیان کلی تر برنامه نویسان *مبتدی* دریایی هستند به عمق یک متر. همون ضرب المثل معروف در فارسی که همه کاره - هیچ کاره"

متاسفانه در ایران الان شرایط این گونه هست. بیشتر از سایر نقاط دنیا.
برای این که شما بتونید درآمد اقتصادی خوبی داشته باشید *باید* در یک تکنولوژی یا حیطه خاص متخصص باشید. مثلا ++C. نهایتا این که با تسلط با ++C اگه خواستید به #C یا تکنولوژی های مشابه هم مسلط می شید خیلی راحت. اما این که از هر چیزی یک مقدار یاد بگیرید هیچ فایده ای نداره.

به طور کلی چون موضوع این تاپیک ابعاد اقتصادی زبان ++C هست به این نکته اشاره کنم برای این که شما بتونید از هر تکنولوژی و به طور خاص تر از هر concept پول در بیارید باید مسلط باشید به اون. البته خیلی خوب هستید شما هرگز به یک زبان یا تکنولوژی وابسته نشید چون اون وقت حرفه ای می شید. 
باید اون قدر حرفه ای کار کرد که برحسب نیاز هر زمان که خواستیم هر زبان یا تکنولوژی جدیدی که نیاز داشتیم ترسی نداشته باشیم و از اون در فرآیند پروژه استفاده کنیم. البته این حرف مطالب بالا را نقض نمی کنه.

به طور کلی بابت نظرتون راجع به دیدگاهم ممنونم.

----------


## scofield007

درود بر شما.
من دانشجوی کامپیوترم.الان دارن تو محیط win32 برنامه کنسول مینویسم.حالا به نظر شما اساتید همین روندو ادامه بدم یا برم دنبال محیط QT ؟
ممنون از دوستان

----------


## scofield007

> با سلام خدمت دوستان.با تشکر از همه دوستان همه پست هارو خوندم و استفاده کردم.
> 
> شاید من در این زمینه زیاد صاحب نظر نباشم،چون من رشته تحصیلیم کامپیوتر نیست.اما به عنوان کسی که از اهداف نهاییش در کامپیوتر تسلط به C++‎(یا شایدم D)
> هست باید بگم با این حرف شما مخالفم.من تقریبا با بیش تر زبانای معروف حداقل یه چند خطی کد زدم،یکی از اهدافم از پریدن از این شاخه به شاخه دیگه رسیدن به هدف دراز مدتم،که هون C++‎ بوده،بوده!.همونطور که دوستان دیگه هم گفتم برنامه نویسی دات نت به یادگیری خیلی چیزا کمک میکنه.برای مثال من یه زمانی با خوندن یه مقاله در مورد php به کلمه "عبارات با قاعده" برخوردم،وبلا فاصله همین کلمه رو همراه با نام زبانی به غیر از php که در اون ایام بیش تر کار میکردم سرچ کردم.و این قضیه بار ها بهم برای کشف چیزای جدید کمک کرده.


 دوست عزیز مطمئن باشید با چند خط کد نوشتن متوجه نمیشید که اون کامپیلر چه امکاناتی داره.نه شما بلکه همه ما
با تشکر

----------


## scofield007

کسی از دوستان جواب ما رو نمیدن؟

----------


## prince0fpersia

با سلام به همه مهندسها و علاقه مندای به سی++

دوستان منم خیلی دوست دارم برنامه نویسی رو به صورت پایه ای و ریشه ای یاد بگیرم و خیلی هم در این مورد تحقیق کردم و بهترین زبون رو همین سی++ یافتم
*
رشته ام سخت افزاره و شدیدا علاقه مند به مباحث هوش مصنوعی - پردازش تصویر و رباتیک و ایمبدد سیستمز*

فکر نمیکنم زبانی بهتر از سی++ واسه این کار موجود باشه ... هرچند بعد از اون فکر کنم نوبت جاوا باشه که علاقه و آشنایی نسبی با اون هم دارم

گرچه توفیقات اجباری دانشگاه مارو با اسمبلی - سی - سی++ - جاوا - سی شارپ - VHDL و حتی php و html هم آشنا کرده و ما همه اینهارو پاس نموده ایم

اما به قول دوستمون ، شدیم دریایی به عمق یک متر!!

البته این هم خوبه و هم بد ... خوبه که تقریبا اکثریت فضای برنامه نویسی و زبون هارو دیدیم و آشنا شدیم و شاید بهتر میتونیم انتخاب کنیم اما بده که فعلا همه کاره هیچکاره ایم!

خلاصه مطلب اینکه برای آخرین بار برای یقین کردن دلم میپرسم

*آیا سی++ هنوز زبانی زنده و پویا و در حال رشد هست؟ آیا میشه گفت هنوز و درآینده هم حرف اول در برنامه های زیرساختی و اصلی رو خواهد زد؟
من قصد ادامه تحصیل در آمریکارو دارم ، آیا این زبون و داشتن تخصص در اون ، در آمریکا هم به کار من خواهد آمد (البته خودم که فکر میکنم بیشتر از ایران به کار بیاد!!)*

و سوال آخر اینکه با تحقیقاتی که کردم بهترین IDE رو برای این زبون netbeans یافتم ... همچنین که با جاوا هم سازگار هست ... نظر دوستان متخصص هم همین هست؟

من محدوده کاریم رو بالا عرض کردم ... نظر شما هم برای اون کارها رو سی++ هست؟

الان من با مفاهیم کلی زبان آشنا هستم اما تو حوزه تخصصی مخصوصا پردازش تصویر یا برنامه نویسی پورت های کامپیوتر ( فرضا از برد اینتل به عنوان هسته مرکزی ربات استفاده بشه) منبع کاملی پیدا نمیکنم ... اگر میشناسید این بیسواد رو راهنمایی کنید

آرزوی موفقیت برای همگی

----------


## networker

شرکت های امنیتی در ایران همواره به دنبال برنامه نویس خوب C++‎ هستنتد که در پست اول ذکر نکردید. ضمن اینکه بازار کار در دنیا هم هنوز نشون میده C++‎ قابل اعتماد ترین زبان برنامه نویسی هست برای کسانی که روی کار وسواس زیادی داشته باشند. بیشتر از نظر قدرت و کارایی محصول.

----------


## saman2

ضمن تشکر از همه دوستانی که در این بحث شرکت کردن، میخواستم بپرسم با توجه به اینکه در اکثر جاها C , ++C همراه هم ذکر میشن، آیا این مواردی که درباره موقعیتهای کاری زبان ++C ذکر شد، C رو هم شامل میشه؟ مثلا فرض کنید که من فقط با کامپایلر اولیه زبان C و در محیط غیرویژوال کار کنم و نه ++C و یا محیطهای جدید و ویژوال...

----------


## saman2

یعنی اینجا از بخش اسمبلی هم پرت تره؟! یکی نیست جواب بده بگه آیا همه این حرفایی که تو این تاپیک درباره سی پلاس زده شد درباره خود سی هم صدق میکنه؟

----------


## saied_hacker

بله عزیز دل کاملا صدق میکنه بخصوص اونایی که تو زمینه سخت افزار هستند + لینوکس

البته بهتره که شما در کنار c دارای اطلاعاتی در زمینه gtk یا wxwidgets هم داشته باشید تا بتونید به راحتی نیازهای خودتون رو در زمینه GUI برطرف کنید.
یا Windows API programming برای محیط ویندوز

( بزرگان ببخشید این جسارت ما رو )

----------


## saina2006

فقط یه نکته واسه اون دوستانی که میگن برای این زبان مقاله کمه یا نمونه کد، همیشه دنبال چیزهای آماده نباشید نمونه کدی بهتر از کد Linux یا gcc پیدا نمیکنید که بتونه خیلی چیزها بهتون آموزش بده

----------


## immortalsoull

سلام به همگی ...

بدبختانه خود من درست قدر زبان ++C رو نفهمیدم ! و رفتم سراغ سی شارپ زمانی که 16 سالم بود اما الان که 1 سال گذشته می فهمم که هر زبانی ویژگی های خودشو داره هیچوقت نمی تونی یک زبانی پیدا کنی که همه کار های تو را پوشش بده و ساپورت کنه !

متاستفانه اکسر برنامه نویسان در ایران فکرشون خیلی محدوده !! و فقط به دنباله این هستند که در یک شرکتی استخدام بشن و ماهیانه حقوق بگیرند ! اما من اینطور فکر نمی کنم ! دنیای برنامه نویسی من محدود بر این نیست که حتی تو شرکت های غولی مثل Microsoft به عنوان یک Developer استخدام بشم نه ! دنیای برنامه نویسی من یعنی یک زبان برنامه نویسی که چیزی کم و کسر نداشته باشه ! یعنی یک شرکت که به دسته خودم ساخته مشه و جایگاهش سطر جدوله !! بلاخره یک روز من این زبان را می نویسم و مطمئنم موفق می شم !

ایکاش برنامه نویس های ما هم فکرشون باز تر بود !! ولی همش در مورده رویداد هایی حرف می زنند که 100 ها بار بررسی شده اند ...

شاید بگین این یارو رو باش دیونست تو رویا زندگی می کنه ! آره من دیونه هستم و دیونه ها هم دوست دارم اما تو رویا زندگی نمی کنم ولی سعی می کنم رویامو تبدیل به واقعیت کنم ...

دیدار ما اون بالا بالا ها ...

----------


## immortalsoull

> *تذکر 1 : لطفا دوستان قبل از اینکه هیچ پست یا نظر دیگری بدهند، ابتدا مطالب زیر را به طور کامل مطالعه کنند، تا بحث تاپیک منحرف نشود. سپس اگر نظری دارند مطرح کنند.*
> 
> *تذکر 2* *: این تاپیک را به مکانی مانند تاپیک "چرا* *#**C محبوب شده" تبدیل نکنید، چرا که هدف این مطالب علاقه مند کردن فقط 1% از برنامه نویسان است نه کل آن ها.
> 
> **تذکر 3* *:**پس در صورتی که کسی مطلبی خارج از* *مطالب مطرح شده بگوید یا* *به برتری زبان خاصی یا دفاع از علایق شخصی بپردازد، پست او پاک می شود.
> *
> 
> در پی مقایسه آمار تالارهای گفتگوی مطرح دنیا با آمار بخش های مختلف سایت برنامه نویس اهدافی مد نظر بود که دوستان همچنان برداشت های غلط و غیر علمی خود را به آن اضافه کردند. لذا تصمصم گرفته شد، این موضوع از ابعاد مختلف بررسی شود و در کنار بعد علمی بعد اقتصادی نیز در نظر گرفته شود. (برای توضیحات علمی می توانید از مقاله "برنامه نویسی ++C/C از نوع Native یا managed" در همین بخش فنی استفاده کنید)
> 
> ...



سلام به همگی ...

بدبختانه خود من درست قدر زبان ++C رو نفهمیدم ! و رفتم سراغ سی شارپ زمانی که 16 سالم بود اما الان که 1 سال گذشته می فهمم که هر زبانی ویژگی های خودشو داره هیچوقت نمی تونی یک زبانی پیدا کنی که همه کار های تو را پوشش بده و ساپورت کنه !

متاستفانه اکسر برنامه نویسان در ایران فکرشون خیلی محدوده !! و فقط به دنباله این هستند که در یک شرکتی استخدام بشن و ماهیانه حقوق بگیرند ! اما من اینطور فکر نمی کنم ! دنیای برنامه نویسی من محدود بر این نیست که حتی تو شرکت های غولی مثل Microsoft به عنوان یک Developer استخدام بشم نه ! دنیای برنامه نویسی من یعنی یک زبان برنامه نویسی که چیزی کم و کسر نداشته باشه ! یعنی یک شرکت که به دسته خودم ساخته مشه و جایگاهش سطر جدوله !! بلاخره یک روز من این زبان را می نویسم و مطمئنم موفق می شم !

ایکاش برنامه نویس های ما هم فکرشون باز تر بود !! ولی همش در مورده رویداد هایی حرف می زنند که 100 ها بار بررسی شده اند ...

شاید بگین این یارو رو باش دیونست تو رویا زندگی می کنه ! آره من دیونه هستم و دیونه ها هم دوست دارم اما تو رویا زندگی نمی کنم ولی سعی می کنم رویامو تبدیل به واقعیت کنم ...

دیدار ما اون بالا بالا ها ...

----------


## کامبیز اسدزاده

یه برنامه نویس واقعی به قدری قدرتمند هست که بتونه خودش یه شرکت بزنه و پروژه های غولی رو تولید کنه و نیازیم به کارفرما نداره :) متاسفم برا این سری برنامه نویس ها که انتظار دارن 2 خط کد نویسی یاد بگیرن اونم با زبان های ساده ای مثل C#‎‎‎‎ که با دو کلمه انگلیسی فهمیدن میشه یاد گرفتش !!! برای موفقیت باید هدف بزرگ باشه مثل افراد بزرگ برنامه نویس های معروفی از جمله بیل گیدس...

برین سراغ C++‎‎‎‎ که لااقل بتونید سینتونو بدین جلو و وقتیم قرار شد شرکتی ازتون کار بخواد جرات نکنه بگه استخدامت میکنم !!! یه برنامه نویس واقعی هیچوقت برا استخدام دس دس نمیزنه :) نرخ و زمان رو برنامه نویس مشخص میکنه نه کارفرما !!!

----------


## (while(c=1) printf(cpp=0

سلام.
کسی که کله اش کار کنه، در راهش موفق میشه.

*پایان حرفهای من.*

----------


## StepUp

سلام 
واقعا چه تاپیک خوبیه  :بامزه: 
بنده هم در زمینه ++C کمی دست دارم ، ولی چون هدفم نوشتن اپلیکیشن های Ios و اندروید هست هم نیازمند یادگیری #C و هم جاوا هستم ..
پس به نظرم دنیای یک برنامه نویس نباید در یک یا دو برنامه مثل سی و سی پلاس پلاس خلاصه بشه!
در مورد بازار کار سی پلاس پلاس تو ایرانم باید بگم که فکر نکنم بازار کارش بهتر از سی شارپ باشه!
شما همین الان به بنرهای بالای انجمن دقت کنید  :لبخند گشاده!:  اکثر آگهی های شغلی توشون سی شارپ هم هست ، اما آیا سی یا سی پلاس پلاس تنها میبینید توشون ؟ 
قطعا نه!
به نظرم سی و سی پلاس پلاس خیلی نقطه ضعف دارن که نمیشه تنها به یادگیری این دو بسنده کرد و بخوایم معیشت آینده رو با این دو تضمین کنیم ..
الان بورس توی سی شارپ و جاوا ، طراحی وب ، فروش هاست و دامین ، انجمن ساز ویبولتین و اس ام اف و .. اینا هست  :بامزه: 
به نظرم سی پلاس پلاس و سی تنها کمکی که به ما میکنند اینه که ریشه‌ی برنامه نویسی رو در ما قوی میکنن ، همین!
اما برای بازار کار کافی نیستند ، مگه اینکه استثنایی وجود داشته باشه !
اساتید نظرشونو در مورد نظر بنده بگن  :لبخند:

----------


## StepUp

یعنی اساتید هیچ نظر در مورد پست قبلی من ندارن ؟

----------


## کامبیز اسدزاده

> سلام 
> واقعا چه تاپیک خوبیه 
> بنده هم در زمینه ++C کمی دست دارم ، ولی چون هدفم نوشتن اپلیکیشن های Ios و اندروید هست هم نیازمند یادگیری #C و هم جاوا هستم ..
> پس به نظرم دنیای یک برنامه نویس نباید در یک یا دو برنامه مثل سی و سی پلاس پلاس خلاصه بشه!


یک برنامه نویس در دنیای خودش همونطور که خودتون اشاره کردین نباید محدود باشه با این موافق هستم ولی طوری که بتونه پاسخ گوی نیاز باشه منظورم اینه نیازی نیست از همه زبان ها استفاده کنه مگر در موارد خاص که نتونه با زبانی که ک زده مشکلش رو حل کنه.




> در مورد بازار کار سی پلاس پلاس تو ایرانم باید بگم که فکر نکنم بازار کارش بهتر از سی شارپ باشه!
> شما همین الان به بنرهای بالای انجمن دقت کنید  اکثر آگهی های شغلی توشون سی شارپ هم هست ، اما آیا سی یا سی پلاس پلاس تنها میبینید توشون ؟ 
> قطعا نه!


به یک چیزی اشاره کنم : شعار C++‎‎‎‎‎ اینه که آقا جان آزادانه برنامه نویسی کن برای خودت برنامه نویسی کن قیمت و همه چیز رو خودت مشخص کن و زیر بار هیچ شرکتی نرو.

بازار کار رو چه کسی ایجاد میکنه ؟ ببینید فرض کنید تو ایران خودروی پراید بیشترین محصولی هست که شرکت های داخلی تولیدش میکنند حالا چون کشش پراید در ایران زیاد هست و همه میخرنش حال اگه ما بریم سراغ یک خودرویی که شرکت Porsche تولید کرده و تجربش کنیم مطمئنان متوجه کیفیت و امکاناتی که در اختیارمون میزاره خواهیم شد   :لبخند گشاده!:  منظقی فکر کنیم اینطوریه دقیقا حالا فرض کن تو ایران همه میرن سراغ زبان هایی به جز  C++‎‎‎‎‎ کاری که خود من هم یک عمر انجام دادم و کاملا حرفه ای هستم تو زبان های دات نتی ولی وقتی یه چیز برتر دیدم اومدم سراغش ! امتحانش کردم و درکش کردم! میدونی یه مشکلی ما ایرانی ها داریم اینه که با دیدن و شنیدن میریم سراغ یک چیزی و اون رو دنبال میکنیم هیچوقت نمیریم عملا وارد گزینه هایی بشیم که در دنیا مطرح هست و مورد بررسی قرار بدیم تا احساسش کنیم و تجربش کنیم ببینیم واقعا چیزی هست که ما میخواییم یا خیر ! این طرز فکر باعث شده بنر های تبلیغاتی و شرکت ها و همه برنامه نویسان برن سراغ همچین زبان هایی که بیشتر تبلیغ میشوند نمونش گفتم خود من سالها تحت دات نت کار میکردم خیلیم راضی بودم  :چشمک:  ولی این یعنی هم رنگ شدن! این یعنی متفاوت کار نکردن ! مسلما این رو هم قبول دارید که وقتی محصولی در کنار هم نوعش تفاوتی نداشته باشه رقابت فقط با تبلیغات جواب میده  :لبخند:  ولی بخوای متفاوت کار کنی باید یک راه متفاوت انتخاب کنی یعنی یک زبان متفاوت انتخاب کنی تصمیمو گرفتیم رفتیم سراغش کلی بدبختی کشیدیم یاد گرفتیم حالا میبینیم ارزشش رو داشت بعد از اونهمه سال بریم سراغ چیزی که متفاوت باشه یک عمر در زیر شاخه ترین شاخه ها برای مایکروسافت کار کردیم برای خودمون نه !

با انتخاب این زبان شدیم خودمون ! شدیم صاحب کار و محصولات خودمون ! کارها و پروژه ها متفاوت شده مشتری زیاد شده بازدهی بیشتر شده بدون تبلیغات و کمترین هزینه و بنر و و و ...  :لبخند گشاده!:   یک عمر حمالی مایکروسافت رو میکردیم الان آزاد برنامه نویسی میکنیم خوشم میاد برای همه سیستم عامل ها چه دسکتاپ ، چه موبایل ، چه وب و چه صنعتی و ... محصول تولید میکنیم اونم با نام برند خودمون هیچ اثری از شرکت هایی نیست که ما براشون کار میکنیم.

هم رنگ کار کردن چه نتیجه ای میتونه داشته باشه ؟ فرض کن من یه برنامه ای بنویسم با همین C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎‎‎‎‎‎ من بخوام یک قیمت روی برنامم بزارم فردا یک برنامه نویس C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎‎‎‎‎‎ دیگه ای میاد یه قیمتی  زیر اون رو میده و در این میان مشتری یا شرکتی که از ما محصول رو میخواد میره سراغ کمترین هزینه چرا ؟ چون هر جفتشم از یک زبان و یک خروجی بهره مند هستند.

حالا در نظر بگیریم یک پروژه ای رو با دو زبان در اختیار مشتری قرار بدیم با ذکر تمامی مزیت ها و معایبی که تقریبا در زیر اشاره میکنم کدوم مورد پسند هست ؟ من به عنوان مشتری حاضرم دو برابر قیمت رو بدم و از قابلیت هایی که در اختیارم گذاشته خواهد شد استفاده کنم که این نظر شخصیه بنده هست.

*در رابطه با C#‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎  ‎‎‎‎‎‎‎‎ :
*
*مزیت ها* 
طراحی و توسعه سریع پروژهامکان استفاده از کامپوننت های آماده برای سرعت بخشیدن در طراحی رابط کاربریدرک راحت کد و سادگی آن (دلیل سطح بالا بودن)قابلیت مدیریت خود کار حافظه
*معایب*
وابستگی کامل به سیستم عامل ویندوزعدم دسترسی به لایه های زیرین و ارتباط مستقیم با سخت افزارپشتیبانی نشدن توسط تمامی پلتفرم ها (این مشکل توسط مجازی سازی حل میگردد ولی کیفیت مطلوبی نخواهد داشت)عدم آزاد گذاشتن برنامه نویسعدم سرعت بالا نسبت به برنامه های نوشته شده توسط Cعدم قابلیت استفاده از زبان های برنامه نویسی گرافیکی مانند JS , CSS , HTML و ... که البته این مورد توسط فناوری هایی چون WPF و Modern حل میگردد.عدم وجود کتابخانه های وسیعپشتیبانی و انحصار در دست مایکروسافت



*در رابطه با C++‎‎ :
*
*مزیت ها* 
طراحی و توسعه سریعوجود بانک عظیمی از کتابخانه های قدرتمند و استانداردآزادانه برنامه نویسی کردنقابلیت کد نویسی در سه سطح پایین ، متوسط و بالاپشتیبانی از تمامی پلتفرم های موجود مانند (Windows , Linux , Mac , Android , iOS و غیره) به این قابلیت Cross Platform میگویند.پشتیبانی از تمامی سخت افزار هاوجود انواع API هااستفاده در صنعت بازی سازی ، سه بعدی و گرافیک های سنگین ، خودرو ، انواع صنایع دیگر مانند رباتیک ، پزشکی و ...انحصاری نبودن زبان ، قابل استفاده در تمامی شرکت ها که به عنوان یک زبان مادر از آن یاد میشودامکان برنامه نویسی به صورت مدیریت شده و بومی (Managed و Native)سرعت خارق العاده در برنامه های تولید شدهپشتیبانی از زبان های طراحی رابط کاربری همچون HTML , JS , CSS , QML و غیره که امکان تولید رابط های گرافیکی بالا و خلاقانه را میدهد.پشتیبانی توسط شمار عظیمی از شرکت ها و برنامه نویسان مطرح در جهان
*معایب*
سخت بودنسرعت پایین در توسعه طراحی رابط و دیباگ گیری آن (این مشکل نیز توسط کتابخانه های برتر این زبان رفع گردید است)عدم وجود کامپوننت های آماده (برنامه نویس خود باید در صورت نیاز کامپوننت مورد نیاز را طراحی کند) که البته این کار سخت نیست.




> به نظرم سی و سی پلاس پلاس خیلی نقطه ضعف دارن که نمیشه تنها به یادگیری این دو بسنده کرد و بخوایم معیشت آینده رو با این دو تضمین کنیم ..
> الان بورس توی سی شارپ و جاوا ، طراحی وب ، فروش هاست و دامین ، انجمن ساز ویبولتین و اس ام اف و .. اینا هست 
> به نظرم سی پلاس پلاس و سی تنها کمکی که به ما میکنند اینه که ریشه‌ی برنامه نویسی رو در ما قوی میکنن ، همین!
> اما برای بازار کار کافی نیستند ، مگه اینکه استثنایی وجود داشته باشه !
> اساتید نظرشونو در مورد نظر بنده بگن


در این زبان ها نقطه ضعف وجود داره اونم سخت بودنشه ! دلیلش هم قبلا اشاره شده پیچیده هست چون برنامه نویس رو به چالش میکشه و البته بسیار عاقلانه هستش چون خروجی که میده هیچوقت قابل مقایسه با زبان های دیگه نیست.
اینکه بازار کار کمتر هست برای این زبان همونطور که گفتم عدم استقبال برنامه نویسان هست که دلیلش عدم شناخت کافی و صحیح از قابلیت های این زبان هاست.
شناخت زبان ، انتخاب کتابخانه های مورد نظر بر اساس هدف و محصولی که ارائه خواهد شد خیلی مهمه.

در نهایت شناخت زبان توسط تجربه به دست میاد و ربطی به تبلیغ و بنر و اینجور چیزا نداره چرا تبلیغات C++‎‎‎‎‎ نمیکنند ؟ چون برنامه نویسش زیاد نیست هرکسم میره سراغش مغزش سوت میکشه عقب گرد میکنه  :لبخند گشاده!: دلیل اینکه هیچ محصول جهانی و مطرح درجه یک ساخته شده توسط ایران نداریم همین هستش همه به فکر در آمد شخصی با چهار خط کد زدن هستند خب مملکت میشه این دیگه پیشرفتی در کار نخواهد بود.

----------


## StepUp

> یک برنامه نویس در دنیای خودش همونطور که خودتون اشاره کردین نباید محدود باشه با این موافق هستم ولی طوری که بتونه پاسخ گوی نیاز باشه منظورم اینه نیازی نیست از همه زبان ها استفاده کنه مگر در موارد خاص که نتونه با زبانی که ک زده مشکلش رو حل کنه.
> 
> 
> 
> به یک چیزی اشاره کنم : شعار C++‎‎‎‎‎‎ اینه که آقا جان آزادانه برنامه نویسی کن برای خودت برنامه نویسی کن قیمت و همه چیز رو خودت مشخص کن و زیر بار هیچ شرکتی نرو.
> 
> بازار کار رو چه کسی ایجاد میکنه ؟ ببینید فرض کنید تو ایران خودروی پراید بیشترین محصولی هست که شرکت های داخلی تولیدش میکنند حالا چون کشش پراید در ایران زیاد هست و همه میخرنش حال اگه ما بریم سراغ یک خودرویی که شرکت Porsche تولید کرده و تجربش کنیم مطمئنان متوجه کیفیت و امکاناتی که در اختیارمون میزاره خواهیم شد   منظقی فکر کنیم اینطوریه دقیقا حالا فرض کن تو ایران همه میرن سراغ زبان هایی به جز  C++‎‎‎‎‎‎ کاری که خود من هم یک عمر انجام دادم و کاملا حرفه ای هستم تو زبان های دات نتی ولی وقتی یه چیز برتر دیدم اومدم سراغش ! امتحانش کردم و درکش کردم! میدونی یه مشکلی ما ایرانی ها داریم اینه که با دیدن و شنیدن میریم سراغ یک چیزی و اون رو دنبال میکنیم هیچوقت نمیریم عملا وارد گزینه هایی بشیم که در دنیا مطرح هست و مورد بررسی قرار بدیم تا احساسش کنیم و تجربش کنیم ببینیم واقعا چیزی هست که ما میخواییم یا خیر ! این طرز فکر باعث شده بنر های تبلیغاتی و شرکت ها و همه برنامه نویسان برن سراغ همچین زبان هایی که بیشتر تبلیغ میشوند نمونش گفتم خود من سالها تحت دات نت کار میکردم خیلیم راضی بودم  ولی این یعنی هم رنگ شدن! این یعنی متفاوت کار نکردن ! مسلما این رو هم قبول دارید که وقتی محصولی در کنار هم نوعش تفاوتی نداشته باشه رقابت فقط با تبلیغات جواب میده  ولی بخوای متفاوت کار کنی باید یک راه متفاوت انتخاب کنی یعنی یک زبان متفاوت انتخاب کنی تصمیمو گرفتیم رفتیم سراغش کلی بدبختی کشیدیم یاد گرفتیم حالا میبینیم ارزشش رو داشت بعد از اونهمه سال بریم سراغ چیزی که متفاوت باشه یک عمر در زیر شاخه ترین شاخه ها برای مایکروسافت کار کردیم برای خودمون نه !
> 
> با انتخاب این زبان شدیم خودمون ! شدیم صاحب کار و محصولات خودمون ! کارها و پروژه ها متفاوت شده مشتری زیاد شده بازدهی بیشتر شده بدون تبلیغات و کمترین هزینه و بنر و و و ...   یک عمر حمالی مایکروسافت رو میکردیم الان آزاد برنامه نویسی میکنیم خوشم میاد برای همه سیستم عامل ها چه دسکتاپ ، چه موبایل ، چه وب و چه صنعتی و ... محصول تولید میکنیم اونم با نام برند خودمون هیچ اثری از شرکت هایی نیست که ما براشون کار میکنیم.
> ...


حرفهای شمارو با دقت خوندم ، با خیلیاش موافقم ولی با بعضیاش نه!



> شعار C++‎‎‎‎‎‎ اینه که آقا جان آزادانه برنامه نویسی کن برای خودت برنامه نویولسی کن قیمت و همه چیز رو خودت مشخص کن و زیر بار هیچ شرکتی نرو[/RIGHT]


این خیلی خوبه ، همین که بتونی تو زمینه کدنویسی آقایی کنی و زیر بار شرکتی مثل ماکروسافت نباشی  :لبخند گشاده!: 
ولی بازم میگم ، یک برنامه نویس هیچوقت نباید خودشو به یه برنامه (حالا هرچه قدرم اون برنامه کامل و جامع باشه) محدود کنه!
همه ی زبانهای برنامه نویسی یه جورایی مکمل همدیگن ، شاید سی پلاس پلاس خیلی قویو مرجع بشه ولی به نظرم تو پروژه‌های بزرگ و کارهای Team Work زیاد نمیشه ازش بهره برد !
مثلا ما بیایم با جاوا اپلیکیشن اندروید بنویسیم بهتره یا سی و سی پلاس پلاس ؟
قطعا هرچیزی برنامه مخصوص خودشو داره!
پس میبینیم که ++C مارو تو همینه ی زمینه ها نمیتونه بی نیاز کنه!
پس باید به فکر زبونای دیگه هم باشیم
 :بامزه:

----------

