12-31-2011، 08:57 PM
یکی از ابهامات و سؤالاتی که ممکن است حتی سالها انسان در انتخاب یکی از آنها دچار سردرگمی شود، برای یک دانشجوی رشته کامپیوتر و یا علاقهمند به مباحث کامپیوتری، بحث «انتخاب زبان برنامه نویسی» است. تقریباً هر هفته دانشجویانی هستند که ایمیل میزنند و یا حضوراً در مورد اینکه روی چه زبانی کار کنند، سؤال میکنند. بنابراین، نظر شخصیام را در این مطلب مینویسم که بعداً فقط لینک بدهم:
- پیشنیاز: الگوریتم
پیش از هر چیز باید بگویم که مشکل اصلی در برنامهنویسی، کدنویسی نیست بلکه روش حل مسأله است! من به دانشجویان زیادی کدنویسی به زبانهای مختلف برنامهنویسی را تدریس کردهام، اما از بین آنها، فقط افرادی که توانایی حل مسأله و تشخیص راه حل (الگوریتم) را داشتهاند توانستهاند پروژههای کاملی تحویل دهند.
شما باید بتوانید ذهن الگوریتمیک به دست آورید. سریعاً برای پیچیدهترین مسائل راه حل ارائه کنید و اگر اشتباه بود، روی راه حل خود کار کنید تا به نتیجه برسید.
برای یادگیری و یا تقویت این مبحث فکر میکنم کتاب الگوریتم کار و دانش بهترین منبع باشد: از اینجا دانلود کنید. (این لینک را هم ببینید)
شاید لازم باشد برای تقویت ذهن خود در این زمینه، برخی بازیهای کامپیوتری که با همین هدف ساخته شده است را بازی کنید که ما پیش از این برخی از آنها را در مطلب «بازیهایی برای تقویت ذهن دانشجویانی که دوست دارند برنامه نویس حرفهای شوند» معرفی کردهایم.
- نکته 1: یک زبان کافی نیست:
این روزها اینطور نیست که شما اگر بگویید من فقط یک زبان برنامهنویسی خاص را بلد هستم، برای شما کاراییای تصور کنند! پس باید خود را به چندین زبان مجهز کنید. البته به مرور متوجه میشوید که همه زبانها شبیه به هم هستند. شما به جایی خواهید رسید که میتوانید در مدت کوتاهی (شاید یک هفته) خیلی راحت از یک زبان به زبان دیگر سوئیچ کنید. چون خواهید فهمید که همه زبانها ساختار تقریباً مشابهی دارند، فقط اسمهای توابع با هم فرق میکند. کمی طول میکشد تا با اسامی جدید در آن زبان آشنا شوید.
- نکته 2: یک زبان کافی است!
اگر این دو نکته را با هم جمع کنید، نتیجه این میشود: سیاست کلی شما باید این باشد: از همه زبانها تا جایی که لازم است، بدانید، اما یک زبان را به طور تخصصی و حرفهای بدانید. به طور مثال، من تقریباً با بیش از 10 زبان برنامهنویسی آشنایی دارم. مثلاً «پارسخوان» را با C# نوشتهام، «تستا» را با PHP، وyouRL را با Ajax، «پخشکننده صدای آفتابگردان» را با پاسکال و ... که در همین پروژهها، زبانهای دیگری (مثل HTML، CSS، Javascript، Action Script و...) کاربرد داشتهاند. شما اگر از من هر چه به این زبانها بخواهید بالاخره گلیمم را بیرون میکشم، اما تمرکز و تخصص اصلی من روی زبان PHP است.
- اولین زبان برنامهنویسی: زبان C
پس، حالا که متوجه شدید که باید چندین زبان را یاد بگیرید، اولین زبانی که باید یاد بگیرید زبان C است. زبان C را میتوان پایه بسیاری از زبانهای برنامهنویسی پیشرفته دانست. اگر با ساختارهای مختلف در این زبان آشنا باشید خیلی راحت میتوانید زبانهایی مثل سی شارپ، جاوا، پی.اچ.پی، جاوا اسکریپت و ... خیلیهای دیگر را یاد بگیرید.
توجه: در حد مقدماتی، زبان C با C++ تفاوت خاصی ندارد. پس اگر خواستید میتوانید با C++ شروع کنید. اما من فکر میکنم همان C بهتر است.
تصویر زیر میزان عمومیت زبانهای برنامهنویسی در بین برنامه نویسان را نشان میدهد که از سایت LangPop.com اخذ شده است:
توجه: لازم نیست بیش از حد روی زبان C وقت بگذارید. فقط در حدی که ساختارهای کلی برنامهنویسی را درک کنید. اگر به مرحلهای رسیدید که این مباحث برایتان ساده شده بود، به گام بعد بروید:
- متغیرها
- اصول دریافت مقدار از و نمایش آن به کاربر
- ساختارهای تصمیمگیری (if و switch)
- حلقههای تکرار (for، while، foreach و do..while)
- آرایهها
- کار با فایلهای متنی (باز کردن، نمایش و درج)
- اشارهگرها
- مبحث Struct
- اگر C++ را یاد میگیرید، مبحث کلاسها و شیئگرایی را هم تا حدودی یاد بگیرید.
همینها کافیست.
- انتخاب مهم: انتخاب کنید: زبان برنامهنویسی وب یا دسکتاپ یا موبایل؟
بعد از اینکه زبان C یا C++ را در حد مقدماتی یاد گرفتید، حالا باید تصمیم اصلی زندگی برنامهنویسیای خود را بگیرید!
آیا میخواهید نرم افزاری که طراحی میکنید تحت وب اجرا شود؟ یا در قالب یک برنامه روی سیستم کاربر نصب شود و یا اینکه روی موبایل کاربر اجرا شود؟
--- کدام یک بهتر است؟
انتخاب یکی از این سه زمینه، انصافاً مشکل است و بستگی به این دارد که در محیط زندگی شما کدام یک بیشتر کاربرد دارد.
-- در شهرستانهای کوچک زندگی میکنید یا در شهرهای بزرگ مثل تهران؟
من یک ایده برای خودم دارم که البته ممکن است مخالفان و موافقان خاص خودش را داشته باشد: من میگویم اگر در شهرستان زندگی میکنید و مثل من دوست ندارید تا آخر عمر، یک گام هم بیرون از شهرتان بگذارید، قید برنامهنویسی موبایل و دسکتاپ را بزنید. کمتر کسی پیدا میشود در شهرستان به شما پیشنهاد برنامهنویسی موبایل را بدهد و در ازای آن از چند صد تا چند میلیون تومان پول بدهد!
برنامههای دسکتاپ سازمانها و شرکتها همگی از مراکز اصلی ارسال میشوند و هیچ وقت به یک مؤسسه شهرستانی نخواهند گفت مثلاً برنامه دفتر پستی ما را بنویس!
-- برنامهنویسی وب: با یک تیر سه نشان را بزنید!
اگر شما برنامهنویسی وب را یاد بگیرید، برنامههایی که خواهید نوشت بر روی هر سه Platform (بستر) یعنی وب، دسکتاپ و موبایل به یک صورت اجرا خواهند شد!
مثل تستا (سیستم مدیریت آزمون آنلاین)، که هم با یک دابل کلیک، بر روی ویندوز مربی در یک شبکه محلی اجرا خواهد شد و هم اینکه روی یک سایت نصب میشود و تحت وب اجرا میشود.
-- دنیا دنیای وب است:
بخواهید یا نخواهید دنیا دارد به سمت آنلاین کردن تمام برنامهها پیش میرود. همه نرم افزارها، حتی سنگینترین برنامهها مثل فتوشاپ، دارند نسخه آنلاین تهیه میکنند. به زودی Nettopها و Netbookها فراگیر میشوند.
- چیزی لذتبخشتر از طراحی وب نیست!
تجربه من نشان میدهد که کاربرانی که قبلاً با زبان C کار کردهاند وقتی اولین برنامههایشان به زبانهای تحت وب را مینویسند، گل از گلشان میشکفد! لذت میبرند از اینکه بر خلاف C که همیشه برنامههایشان Error میداد و اجرا نمیشد، اینجا با اینکه کلی غلط دارند، اما بالاخره برنامهشان اجرا میشود و یک خروجی شیک تحویل میدهد من در کلاسهایم میگویم که: زبانهای طراحی وب، سخاوتمند هستند و بالاخره با اینکه خطا دارید، با شما راه میآیند.
پس من فکر میکنم اولویت اول شما باید وب باشد مگر اینکه خلاف آن ثابت شود!!
تأکید میکنم که این بستگی به محیط کاری و زندگی شما دارد.
ادامه توضیحات را در «ادامه متن...» مطالعه نمایید.
- در برنامهنویسی وب، HTML یا CSS یا Javascript یا PHP یا ASP یا JSP؟
اگر برنامهنویسی وب را انتخاب کردید، حالا باید زبانهای آن زمینه را بشناسید و انتخاب کنید که کدام زبان بیشتر به درد شما میخورد:
-- انتخاب کنید: برنامهنویسی ایستا یا پویا؟
سایتهای اینترنتی در کل دو دسته هستند: ایستا و پویا. سایتهای ایستا آنهایی هستند که تبادل داده چندانی با کاربر ندارند. مثل سایتهای معرفی شرکتهای یک شهرک صنعتی. فقط محصولات را در چند صفحه ثابت معرفی میکنند و شما میبینید و تمام. اما سایتهای پویا آنهایی هستند که بر اساس دادههایی که از کاربر میگیرند محتوای متفاوتی به او نشان میدهند. به طور مثال سایتهای شبکههای اجتماعی، انجمنهای گفتگو، در کل سرویسهایی که کاربر در آنها ثبت نام و لاگین و لاگ آوت میکند.
شما در هر دو صورت، بخواهید یا نخواهید باید HTML و CSS و Javascript را یاد بگیرید. بدون این زبانها هرگز نخواهید توانست سایتی باب طبع مشتری و خودتان طراحی کنید.
HTML و CSS را به صورت حرفهای یاد بگیرید و با Javascript یک آشنایی اجمالی پیدا کنید. طوری که بتوانید کدهایی که لازم دارید را با جستجو در اینترنت پیدا کنید و طوری تغییر دهید که آن چیزی بشود که میخواهید.
دورههای آموزشی طراحی وب مقدماتی معمولاً این سه مبحث را کاور میکنند. کتابهای آموزشی فارسی هم تا دلتان بخواهد روی اینترنت هست.
تا اینجا شما برنامهنویسی مقدماتی را آموحتهاید، اما اگر بخواهید پای فرمها و تبادلات داده با بانک اطلاعاتی و لاگین و لاگآوت را به میان بیاورید (که طبیعتاً برای کارهای حرفهای باید بیاورید)، باید به سراغ زبانهای پویا بروید.
-- از بین زبانهای برنامهنویسی پویا، کدامیک؟ ASP یا PHP یا JSP؟ یا Rubby on Rail و غیره؟
یکی دیگر از درگیریها و ابهامات بین دانشجویان رشته کامپیوتر همین مسأله است! این یک جنگ تاریخی بوده و هست! کافیست در اینترنت جستجو کنید "PHP یا ASP" تا ببینید که چه درگیریهایی بین کاربران وجود دارد!
-- در شهرستانهای کوچک زندگی میکنید یا در شهرهای بزرگ مثل تهران؟
مجدداً این سؤال را از شما پرسیدم، چون واقعاً سؤال تعیین کنندهای است. چرا؟
در کل، افرادی که به سراغ PHP میروند، معمولاً روحیه Open Source دارند و کدهایشان را به رایگان منتشر میکنند. اما افرادی که سراغ ASP میروند، معمولاً مثل اربابشان مایکروسافت، روحیه تجاری و انحصاری دارند. بنابراین، شما بسیار کم میبینید که یک CMS (سیستم مدیریت محتوا) و یا حتی یک کامپوننت به زبان ASP منتشر شود. (البته کم نیست، اما بلا شک کمتر از PHP است)
بنابراین، میشود گفت:
- برنامهنویسی به زبان ASP یعنی نوشتن برنامه از صفر:
یعنی چون سیستم آماده وجود ندارد، شما باید خودتان آستین بالا بزنید و یک برنامه را بنویسید. مثلاً یک مشتری به شما میگوید من یک سایت معرفی مؤسسهام یا یک انجمن گفتگو یا یک گالری عکس و یا مدیریت کاربران و امثالهم را میخواهم. شما شروع میکنید از صفر برنامهاش را مینویسید. تأمین امنیت، خطایابی و ... همه به عهده شماست.
- نوشتن از صفر یعنی صدها هزار تا چند میلیون تومان هزینه!
به مرور متوجه میشوید که نوشتن یک برنامه از صفر یعنی یک عمر پای برنامه گذاشتن. حالا شما برنامهای که عمرتان را پایش میگذارید، چند میفروشید؟ مطمئناً دلتان نمیآید در سادهترین شکل ممکن، زیر یک میلیون تومان قیمت بدهید.
- کدام مؤسسه شهرستانی بیش از یک میلیون تومان صرف سایت خود خواهد کرد؟
تجربه من نشان میدهد که تقریباً هیچ مؤسسه و سازمان و شرکتی در شهرستان به یک شرکت طراحی وب یا به شخص شما، این مقدار پول نمیدهد.
من حدود 8 سال است که درگیر طراحی وب هستم و با مؤسسات مختلف شهرستانی وارد مذاکره برای داشتن یک سایت شدهام و این را به جرأت و از روی تجربهام میگویم که در شهرستان، این مبالغ، بسیار بالاست.
(بگذریم که گاهی برخی مؤسسات بیشتر از این هزینه را به یک شرکت طراحی وب تهرانی میدهند، چون به شرکتهای شهرستانی اعتماد ندارند)
- برنامهنویسی به زبان PHP یعنی در اختیار داشتن صدها سیستم و کامپوننت آماده:
شما اگر یاد بگیرید که به زبان PHP برنامه بنویسید متوجه خواهید شد که این روزها تقریباً برای هر کاری که مشتری از شما بخواهد، یک سیستم آماده وجود دارد! شما با مهارتی که کسب کردهاید، در مدت کوتاهی، سیستم را باب میل او تغییر میدهید و روی سایتش نصب میکنید و تمام!! یک قیمت اندک (زیر یک میلیون تومان. حتی گاهی زیر 100 هزار تومان) به او اعلام میکنید. هم او راضی است و هم شما و معامله به خوبی جوش میخورد و در کمترین زمان کار را تحویل میدهید.
البته اگر احیاناً جایی لازم به طراحی یک سیستم سفارشی بود، شما مهارت کافی کسب کردهاید و میتوانید به راحتی با ترکیب کامپوننتهای آماده، کار را تمام کنید.
به خیلی از شاگردانم در کلاسهای طراحی وب یاد دادهام که چطور CMSهایی مثل PHP-Nuke، WordPress و امثالهم را نصب کنند. مثلاً این روزها که انتخابات است، میبینم که چند نفرشان سایتهای افراد کاندید انتخابات را با WordPress بالا آوردهاند! تصور کنید، با تمام مطالب و تغییراتش، کمتر از یک هفته زمان میگیرد و بالای پانصد هزار تومان از آن کاندید میگیرند.
- اگر در تهران یا مراکز استان هستید، به سمت ASP یا در بهترین حالت، JSP بروید:
در تهران و مراکز استان، طبیعتاً دفاتر مرکزی مؤسسات، شرکتها و ادارات قرار گرفتهاند و طبق یک قرارداد چند میلیونی تا چند ده میلیونی (که برای آنها واقعاً چیزی به حساب نمیآید) هسته اصلی سیستم یا سایت خود را سفارش میدهند و در شعبههای خود منتشر میکنند. از طرفی شما به عنوان برنامهنویس به زبان ASP، احتمالاً در مراکزی استخدام خواهید شد که نبض این سازمانها را در دست دارند. این مراکز، به دلیل امکانات جذابی که Visual Studio در سادگی کد نویسی و کار گروهی و مدیریت پروژهها فراهم میکند، ترجیح میدهند با ASP و یا Java کار کنند. پس در آن شهرها برعکس شهرستانها، به نوعی شاید عاقلانه نباشد که به سمت PHP بروید. (مگر اینکه بخواهید برای خودتان کار کنید که پیشنهاد نمیکنم)
- بین جاوا و ASP کدام؟
در آگهیهای استخدام، خیلی کم دیدهام بنویسند برنامهنویس JSP استخدام میکنند. معمولاً ASP در اولویت است. دلیل آن هم بلاشک قدرت بسیار بالای Visual Studio در خلق پروژه است.
توجه: زبانهای جدیدتر مثل Python و Rubby on rails و ... هم اینطور که مشخص است دارند جا باز میکنند. بد نیست اگر در تهران زندگی میکنید روی این موارد هم تحقیق کنید. من فعلاً فرصت نکردهام روی این زبانها وقت بگذارم، پس، ایدهای ندارم.
خوب، این از برنامهنویسی تحت وب.
- در برنامهنویسی دسکتاپ، C# یا VB یا Java یا Delphi؟
این هم از آن بحثهای داغ بین برنامهنویسان است! باور کنید من با ترس و لرز دارم نظرم را مینویسم. میترسم یکی از طرفداران مخالف نظر من بیاید در بخش نظرات حساب من را بکوبد!
- ویژوال بیسیک خواهد مرد!
من شخصاً معتقدم VB همان اوائل و فقط برای بچه دبیرستانیها خوب بود. همانطور که در آمار بالا هم میبینید، روز به روز از آمار کسانی که به سمت آن میروند، کمتر خواهد شد. دلیل آن مثل آفتاب واضح است: همه زبانها ساختاری شبیه به C دارند، اما VB ندارد!
شما اگر C را بلد باشید و بخواهید VB یاد بگیرید، تقریباً باید C را فراموش کنید و دوباره VB را یاد بگیرید. بر فرض هم که VB را یاد گرفتید، تمام زبانهای دیگری که سر و کار دارید، ساختار مشابه C دارند. پس به نظر شما عاقلانهتر نیست که شما C# را یاد بگیرید که اگر یک روز خواستید به سراغ PHP یا هر زبان دیگری بروید، تمام ساختارهای آن شبیه به C# باشد و راحتتر سوئیچ کنید؟
با توجه به اینکه تمام زبانهای مایکروسافتی تحت .NET شدهاند، فرقی ندارد که شما VB بلد باشید یا C#. پس سی شارپ را یاد بگیرید که شبیهتر به زبانهای دیگر باشد.
دقت کنید که گاهی VB هم کار راه انداز میشود. پس نیم نگاهی به آن هم داشته باشید. مثلاً من خودم VB مقدماتی را تدریس کردهام، اما هرگز روی پیشرفته وقت نخواهم گذاشت، چون ارزش ندارد.
- بین C# و جاوا و دلفی کدام؟
دلفی هم با توجه به حضور سی شارپ یک مرده به حساب میآید. اما جاوا جای بحث دارد.
شما اگر جاوا را یاد بگیرید، برنامه شما به راحتی بر روی بسترهای مختلفی (از جمله گوشیها، وب، دسکتاپ و ...) اجرا خواهد شد. من فکر میکنم این روزها بیشترین کاربرد جاوا در برنامهنویسی موبایل است.
برای برنامهنویسی دسکتاپ، جاوا را چندان پیشنهاد نمیکنم.
- در برنامهنویسی موبایل، کدام پلتفرم؟ Android یا iOS یا Windows Phone یا Java؟
خیلی با احتیاط وارد بازار کار برنامهنویسی برای موبایل شوید چون در ایران بازار کار قویای ندارد و ممکن است بعداً به این نتیجه برسید که اگر وقت خود را روی وب یا دسکتاپ میگذاشتید بهتر بود. بیشتر افرادی که من میبینم که برنامهنویسی موبایل انجام میدهند، شغل دیگری دارند و برای تفریح کار میکنند.
- اپل ما را خط زده است، پس ما هم iOS را خط میزنیم:
احتمالاً میدانید که اپل همه چیزش را برای ایران تحریم کرده است. از طرفی برنامههای اپل باید حتماً توسط اپل و در App Store تأیید شوند و قرار بگیرند وگرنه قابل استفاده روی گوشی کاربر نیستند (مگر اینکه Jail Break شده باشد که خوب، عاقلانه نیست روی گوشیهای جیل.بریک شده برنامهریزی کنید). به همین راحتیها نمیتوانید برنامهای که نوشتهاید را به دست کاربر برسانید. من تعداد معدودی ایرانی دیدهام که برای اپل برنامهنویسی میکنند که آنها هم اکثرشان در خارج از کشور زندگی میکنند و محدودیت قانونی ندارند.
به هر حال، اگر بخواهید برای iOS کدنویسی کنید، باید به زبان C++ مسلط باشید. Xcode SDK را از سایت اپل دانلود کنید و روی سیستم عامل مک خود نصب کنید و شروع کنید. البته میتوانید از پروژه مونو هم استفاده کنید تا کدهای C# شما روی iOS اجرا شوند.
- آندروید دنیای گوشیها را فتح خواهد کرد:
گوگل روی هر چیزی دست بگذارد، دیر یا زود به صدر لیست منتقل میشود و این طبیعیست.
آندروید با اینکه مدت کمی از عمرش میگذرد، اما در صدر لیست سیستم عاملهای موبایل است و به زودی همه جا دیده خواهد شد حتی روی یخچال فریزر شما!!
بنابراین، پیشنهاد اول من این است که به سمت آندروید بروید.
برای برنامهنویسی ویژه آندروید، باید زبان Java را بلد باشید. فکر میکنم حالا متوجه میشوید که چرا جاوا در رتبه دوم زبانهای محبوب است!
خیلیها معتقدند دنیا دارد به سمت موبایل و تبلت میرود. "اینترنت بدون وب" عنوانی است که این روزها مطرح است. همه سایتها برای خود یک اپلیکیشن ارائه کردهاند که روی گوشی اجرا میشود و نیازی نیست وارد وبسایت خاصی شوید!
- ویندوز فون، جان خواهد گرفت:
ویندوز فون هم به زودی جا باز خواهد کرد. روی آن هم میتوانید برنامهریزی کنید، اما اولویت اولتان، جاوا و آندروید باشد.
برای ویندوز فون میتوانید به زبان C# برنامه بنویسید.
خوب، این هم یک اظهار نظر شخصی در مورد زبانهای برنامهنویسی.
تأکید میکنم که باید نظرهای مختلف را بخوانید و بعد تصمیم بگیرید.
اما،
معطل نکنید! یکی را انتخاب و اقدام کنید!
به یکی گفتند: 30 سالت شده است، چرا نماز نمیخوانی؟ گفت: هنوز دارم تحقیق میکنم که اسلام برتر است یا مسیحیت یا یهودیت!!
زمانی که دانشجو بودم، گروهی از دوستان بودند که هر وقت در جمعشان قرار میگرفتم، بحث سر این بود که: کدام زبان بهتر است که برویم سراغش؟ از ترم یک تا هشت، از اساتید سؤال میکردند که: استاد! کدام زبان بهتر است!؟ دانشگاه تمام شد و آن دوستان در نهایت انتخاب نکردند که کدام زبان بهتر است و تا جایی که میشناسمشان، هیچ کدام برنامهنویس نشدند!!
شما باید یک دین را که فعلاً فکر میکنید برتر است، انتخاب کنید و طبق آن پیش بروید، اگر بعداً به این نتیجه رسیدید که فلان دین بهتر است، مشکلی نیست، به آن دین سوئیچ میکنید! (محتوای تمام ادیان تقریباً یکیست، فقط نامها تغییر کرده است) مهم این است که فعلاً بلاتکلیف (گمراه) نباشید
سریعاً یک زبان (مثلاً C++) را انتخاب کنید و وقت را تلف نکنید. روی آن وقت بگذارید... در حین کار، به این نتیجه میرسید که فلان زبان بهتر است و به سراغ آن زبان میروید.
آخرین مطلب:
واقعاً هر که در شهرستان است، محکوم به انتخاب زبانهایی که شما گفتید است؟
خیر، این روزها اینترنت، محدودیتهای جغرافیایی (یا به قول این ویدئو، Geographical Boundaries) را شکسته است. شما میتوانید در شهرستان باشید، اما محدوده کاریتان کل ایران و حتی دنیا باشد. فقط باید بتوانید خودتان را روی اینترنت مطرح کنید که این یک تسلط کافی روی بحث طراحی وب را میطلبد.
به طور مثال، من در شهرستان هستم، اما پس از ارائه تستا، بسیاری از سازمانها و دانشگاهها و امثالهم تماس گرفتهاند و پیشنهاد سفارشیسازی تستا را دادهاند. چندین مؤسسه مطرح در تهران پیشنهاد همکاری در زمینه تبدیل متن به صدا (مربوط به پروژه پارسخوان) را داشتهاند. برخلاف من که حال و حوصله و وقت کار گروهی و سفارشات سنگین را ندارم، شما اگر بخواهید از این راه کسب درآمد کنید، هیچ محدودیتی در محل سکونت و کار شما وجود ندارد.
از دوستانی که احتمالاً اظهار نظر خواهند کرد، خواهش میکنم به تأکیدات بنده دقت کنند که اینها فقط اظهار نظر شخصی بود و نه یک وحی منزل! من نظرم را گفتم. شما هم نظرتان را بدون هیچ تعصب (و احیاناً لحن تند نسبت به دوستان دیگری که نظر میدهند) بیان کنید.
در نهایت این عکس را هم ببینید:
موفق باشید؛
حمید رضا نیرومند
منبع:http://aftab.cc/article/994
- پیشنیاز: الگوریتم
پیش از هر چیز باید بگویم که مشکل اصلی در برنامهنویسی، کدنویسی نیست بلکه روش حل مسأله است! من به دانشجویان زیادی کدنویسی به زبانهای مختلف برنامهنویسی را تدریس کردهام، اما از بین آنها، فقط افرادی که توانایی حل مسأله و تشخیص راه حل (الگوریتم) را داشتهاند توانستهاند پروژههای کاملی تحویل دهند.
شما باید بتوانید ذهن الگوریتمیک به دست آورید. سریعاً برای پیچیدهترین مسائل راه حل ارائه کنید و اگر اشتباه بود، روی راه حل خود کار کنید تا به نتیجه برسید.
برای یادگیری و یا تقویت این مبحث فکر میکنم کتاب الگوریتم کار و دانش بهترین منبع باشد: از اینجا دانلود کنید. (این لینک را هم ببینید)
شاید لازم باشد برای تقویت ذهن خود در این زمینه، برخی بازیهای کامپیوتری که با همین هدف ساخته شده است را بازی کنید که ما پیش از این برخی از آنها را در مطلب «بازیهایی برای تقویت ذهن دانشجویانی که دوست دارند برنامه نویس حرفهای شوند» معرفی کردهایم.
- نکته 1: یک زبان کافی نیست:
این روزها اینطور نیست که شما اگر بگویید من فقط یک زبان برنامهنویسی خاص را بلد هستم، برای شما کاراییای تصور کنند! پس باید خود را به چندین زبان مجهز کنید. البته به مرور متوجه میشوید که همه زبانها شبیه به هم هستند. شما به جایی خواهید رسید که میتوانید در مدت کوتاهی (شاید یک هفته) خیلی راحت از یک زبان به زبان دیگر سوئیچ کنید. چون خواهید فهمید که همه زبانها ساختار تقریباً مشابهی دارند، فقط اسمهای توابع با هم فرق میکند. کمی طول میکشد تا با اسامی جدید در آن زبان آشنا شوید.
- نکته 2: یک زبان کافی است!
اگر این دو نکته را با هم جمع کنید، نتیجه این میشود: سیاست کلی شما باید این باشد: از همه زبانها تا جایی که لازم است، بدانید، اما یک زبان را به طور تخصصی و حرفهای بدانید. به طور مثال، من تقریباً با بیش از 10 زبان برنامهنویسی آشنایی دارم. مثلاً «پارسخوان» را با C# نوشتهام، «تستا» را با PHP، وyouRL را با Ajax، «پخشکننده صدای آفتابگردان» را با پاسکال و ... که در همین پروژهها، زبانهای دیگری (مثل HTML، CSS، Javascript، Action Script و...) کاربرد داشتهاند. شما اگر از من هر چه به این زبانها بخواهید بالاخره گلیمم را بیرون میکشم، اما تمرکز و تخصص اصلی من روی زبان PHP است.
- اولین زبان برنامهنویسی: زبان C
پس، حالا که متوجه شدید که باید چندین زبان را یاد بگیرید، اولین زبانی که باید یاد بگیرید زبان C است. زبان C را میتوان پایه بسیاری از زبانهای برنامهنویسی پیشرفته دانست. اگر با ساختارهای مختلف در این زبان آشنا باشید خیلی راحت میتوانید زبانهایی مثل سی شارپ، جاوا، پی.اچ.پی، جاوا اسکریپت و ... خیلیهای دیگر را یاد بگیرید.
توجه: در حد مقدماتی، زبان C با C++ تفاوت خاصی ندارد. پس اگر خواستید میتوانید با C++ شروع کنید. اما من فکر میکنم همان C بهتر است.
تصویر زیر میزان عمومیت زبانهای برنامهنویسی در بین برنامه نویسان را نشان میدهد که از سایت LangPop.com اخذ شده است:
توجه: لازم نیست بیش از حد روی زبان C وقت بگذارید. فقط در حدی که ساختارهای کلی برنامهنویسی را درک کنید. اگر به مرحلهای رسیدید که این مباحث برایتان ساده شده بود، به گام بعد بروید:
- متغیرها
- اصول دریافت مقدار از و نمایش آن به کاربر
- ساختارهای تصمیمگیری (if و switch)
- حلقههای تکرار (for، while، foreach و do..while)
- آرایهها
- کار با فایلهای متنی (باز کردن، نمایش و درج)
- اشارهگرها
- مبحث Struct
- اگر C++ را یاد میگیرید، مبحث کلاسها و شیئگرایی را هم تا حدودی یاد بگیرید.
همینها کافیست.
- انتخاب مهم: انتخاب کنید: زبان برنامهنویسی وب یا دسکتاپ یا موبایل؟
بعد از اینکه زبان C یا C++ را در حد مقدماتی یاد گرفتید، حالا باید تصمیم اصلی زندگی برنامهنویسیای خود را بگیرید!
آیا میخواهید نرم افزاری که طراحی میکنید تحت وب اجرا شود؟ یا در قالب یک برنامه روی سیستم کاربر نصب شود و یا اینکه روی موبایل کاربر اجرا شود؟
--- کدام یک بهتر است؟
انتخاب یکی از این سه زمینه، انصافاً مشکل است و بستگی به این دارد که در محیط زندگی شما کدام یک بیشتر کاربرد دارد.
-- در شهرستانهای کوچک زندگی میکنید یا در شهرهای بزرگ مثل تهران؟
من یک ایده برای خودم دارم که البته ممکن است مخالفان و موافقان خاص خودش را داشته باشد: من میگویم اگر در شهرستان زندگی میکنید و مثل من دوست ندارید تا آخر عمر، یک گام هم بیرون از شهرتان بگذارید، قید برنامهنویسی موبایل و دسکتاپ را بزنید. کمتر کسی پیدا میشود در شهرستان به شما پیشنهاد برنامهنویسی موبایل را بدهد و در ازای آن از چند صد تا چند میلیون تومان پول بدهد!
برنامههای دسکتاپ سازمانها و شرکتها همگی از مراکز اصلی ارسال میشوند و هیچ وقت به یک مؤسسه شهرستانی نخواهند گفت مثلاً برنامه دفتر پستی ما را بنویس!
-- برنامهنویسی وب: با یک تیر سه نشان را بزنید!
اگر شما برنامهنویسی وب را یاد بگیرید، برنامههایی که خواهید نوشت بر روی هر سه Platform (بستر) یعنی وب، دسکتاپ و موبایل به یک صورت اجرا خواهند شد!
مثل تستا (سیستم مدیریت آزمون آنلاین)، که هم با یک دابل کلیک، بر روی ویندوز مربی در یک شبکه محلی اجرا خواهد شد و هم اینکه روی یک سایت نصب میشود و تحت وب اجرا میشود.
-- دنیا دنیای وب است:
بخواهید یا نخواهید دنیا دارد به سمت آنلاین کردن تمام برنامهها پیش میرود. همه نرم افزارها، حتی سنگینترین برنامهها مثل فتوشاپ، دارند نسخه آنلاین تهیه میکنند. به زودی Nettopها و Netbookها فراگیر میشوند.
- چیزی لذتبخشتر از طراحی وب نیست!
تجربه من نشان میدهد که کاربرانی که قبلاً با زبان C کار کردهاند وقتی اولین برنامههایشان به زبانهای تحت وب را مینویسند، گل از گلشان میشکفد! لذت میبرند از اینکه بر خلاف C که همیشه برنامههایشان Error میداد و اجرا نمیشد، اینجا با اینکه کلی غلط دارند، اما بالاخره برنامهشان اجرا میشود و یک خروجی شیک تحویل میدهد من در کلاسهایم میگویم که: زبانهای طراحی وب، سخاوتمند هستند و بالاخره با اینکه خطا دارید، با شما راه میآیند.
پس من فکر میکنم اولویت اول شما باید وب باشد مگر اینکه خلاف آن ثابت شود!!
تأکید میکنم که این بستگی به محیط کاری و زندگی شما دارد.
ادامه توضیحات را در «ادامه متن...» مطالعه نمایید.
- در برنامهنویسی وب، HTML یا CSS یا Javascript یا PHP یا ASP یا JSP؟
اگر برنامهنویسی وب را انتخاب کردید، حالا باید زبانهای آن زمینه را بشناسید و انتخاب کنید که کدام زبان بیشتر به درد شما میخورد:
-- انتخاب کنید: برنامهنویسی ایستا یا پویا؟
سایتهای اینترنتی در کل دو دسته هستند: ایستا و پویا. سایتهای ایستا آنهایی هستند که تبادل داده چندانی با کاربر ندارند. مثل سایتهای معرفی شرکتهای یک شهرک صنعتی. فقط محصولات را در چند صفحه ثابت معرفی میکنند و شما میبینید و تمام. اما سایتهای پویا آنهایی هستند که بر اساس دادههایی که از کاربر میگیرند محتوای متفاوتی به او نشان میدهند. به طور مثال سایتهای شبکههای اجتماعی، انجمنهای گفتگو، در کل سرویسهایی که کاربر در آنها ثبت نام و لاگین و لاگ آوت میکند.
شما در هر دو صورت، بخواهید یا نخواهید باید HTML و CSS و Javascript را یاد بگیرید. بدون این زبانها هرگز نخواهید توانست سایتی باب طبع مشتری و خودتان طراحی کنید.
HTML و CSS را به صورت حرفهای یاد بگیرید و با Javascript یک آشنایی اجمالی پیدا کنید. طوری که بتوانید کدهایی که لازم دارید را با جستجو در اینترنت پیدا کنید و طوری تغییر دهید که آن چیزی بشود که میخواهید.
دورههای آموزشی طراحی وب مقدماتی معمولاً این سه مبحث را کاور میکنند. کتابهای آموزشی فارسی هم تا دلتان بخواهد روی اینترنت هست.
تا اینجا شما برنامهنویسی مقدماتی را آموحتهاید، اما اگر بخواهید پای فرمها و تبادلات داده با بانک اطلاعاتی و لاگین و لاگآوت را به میان بیاورید (که طبیعتاً برای کارهای حرفهای باید بیاورید)، باید به سراغ زبانهای پویا بروید.
-- از بین زبانهای برنامهنویسی پویا، کدامیک؟ ASP یا PHP یا JSP؟ یا Rubby on Rail و غیره؟
یکی دیگر از درگیریها و ابهامات بین دانشجویان رشته کامپیوتر همین مسأله است! این یک جنگ تاریخی بوده و هست! کافیست در اینترنت جستجو کنید "PHP یا ASP" تا ببینید که چه درگیریهایی بین کاربران وجود دارد!
-- در شهرستانهای کوچک زندگی میکنید یا در شهرهای بزرگ مثل تهران؟
مجدداً این سؤال را از شما پرسیدم، چون واقعاً سؤال تعیین کنندهای است. چرا؟
در کل، افرادی که به سراغ PHP میروند، معمولاً روحیه Open Source دارند و کدهایشان را به رایگان منتشر میکنند. اما افرادی که سراغ ASP میروند، معمولاً مثل اربابشان مایکروسافت، روحیه تجاری و انحصاری دارند. بنابراین، شما بسیار کم میبینید که یک CMS (سیستم مدیریت محتوا) و یا حتی یک کامپوننت به زبان ASP منتشر شود. (البته کم نیست، اما بلا شک کمتر از PHP است)
بنابراین، میشود گفت:
- برنامهنویسی به زبان ASP یعنی نوشتن برنامه از صفر:
یعنی چون سیستم آماده وجود ندارد، شما باید خودتان آستین بالا بزنید و یک برنامه را بنویسید. مثلاً یک مشتری به شما میگوید من یک سایت معرفی مؤسسهام یا یک انجمن گفتگو یا یک گالری عکس و یا مدیریت کاربران و امثالهم را میخواهم. شما شروع میکنید از صفر برنامهاش را مینویسید. تأمین امنیت، خطایابی و ... همه به عهده شماست.
- نوشتن از صفر یعنی صدها هزار تا چند میلیون تومان هزینه!
به مرور متوجه میشوید که نوشتن یک برنامه از صفر یعنی یک عمر پای برنامه گذاشتن. حالا شما برنامهای که عمرتان را پایش میگذارید، چند میفروشید؟ مطمئناً دلتان نمیآید در سادهترین شکل ممکن، زیر یک میلیون تومان قیمت بدهید.
- کدام مؤسسه شهرستانی بیش از یک میلیون تومان صرف سایت خود خواهد کرد؟
تجربه من نشان میدهد که تقریباً هیچ مؤسسه و سازمان و شرکتی در شهرستان به یک شرکت طراحی وب یا به شخص شما، این مقدار پول نمیدهد.
من حدود 8 سال است که درگیر طراحی وب هستم و با مؤسسات مختلف شهرستانی وارد مذاکره برای داشتن یک سایت شدهام و این را به جرأت و از روی تجربهام میگویم که در شهرستان، این مبالغ، بسیار بالاست.
(بگذریم که گاهی برخی مؤسسات بیشتر از این هزینه را به یک شرکت طراحی وب تهرانی میدهند، چون به شرکتهای شهرستانی اعتماد ندارند)
- برنامهنویسی به زبان PHP یعنی در اختیار داشتن صدها سیستم و کامپوننت آماده:
شما اگر یاد بگیرید که به زبان PHP برنامه بنویسید متوجه خواهید شد که این روزها تقریباً برای هر کاری که مشتری از شما بخواهد، یک سیستم آماده وجود دارد! شما با مهارتی که کسب کردهاید، در مدت کوتاهی، سیستم را باب میل او تغییر میدهید و روی سایتش نصب میکنید و تمام!! یک قیمت اندک (زیر یک میلیون تومان. حتی گاهی زیر 100 هزار تومان) به او اعلام میکنید. هم او راضی است و هم شما و معامله به خوبی جوش میخورد و در کمترین زمان کار را تحویل میدهید.
البته اگر احیاناً جایی لازم به طراحی یک سیستم سفارشی بود، شما مهارت کافی کسب کردهاید و میتوانید به راحتی با ترکیب کامپوننتهای آماده، کار را تمام کنید.
به خیلی از شاگردانم در کلاسهای طراحی وب یاد دادهام که چطور CMSهایی مثل PHP-Nuke، WordPress و امثالهم را نصب کنند. مثلاً این روزها که انتخابات است، میبینم که چند نفرشان سایتهای افراد کاندید انتخابات را با WordPress بالا آوردهاند! تصور کنید، با تمام مطالب و تغییراتش، کمتر از یک هفته زمان میگیرد و بالای پانصد هزار تومان از آن کاندید میگیرند.
- اگر در تهران یا مراکز استان هستید، به سمت ASP یا در بهترین حالت، JSP بروید:
در تهران و مراکز استان، طبیعتاً دفاتر مرکزی مؤسسات، شرکتها و ادارات قرار گرفتهاند و طبق یک قرارداد چند میلیونی تا چند ده میلیونی (که برای آنها واقعاً چیزی به حساب نمیآید) هسته اصلی سیستم یا سایت خود را سفارش میدهند و در شعبههای خود منتشر میکنند. از طرفی شما به عنوان برنامهنویس به زبان ASP، احتمالاً در مراکزی استخدام خواهید شد که نبض این سازمانها را در دست دارند. این مراکز، به دلیل امکانات جذابی که Visual Studio در سادگی کد نویسی و کار گروهی و مدیریت پروژهها فراهم میکند، ترجیح میدهند با ASP و یا Java کار کنند. پس در آن شهرها برعکس شهرستانها، به نوعی شاید عاقلانه نباشد که به سمت PHP بروید. (مگر اینکه بخواهید برای خودتان کار کنید که پیشنهاد نمیکنم)
- بین جاوا و ASP کدام؟
در آگهیهای استخدام، خیلی کم دیدهام بنویسند برنامهنویس JSP استخدام میکنند. معمولاً ASP در اولویت است. دلیل آن هم بلاشک قدرت بسیار بالای Visual Studio در خلق پروژه است.
توجه: زبانهای جدیدتر مثل Python و Rubby on rails و ... هم اینطور که مشخص است دارند جا باز میکنند. بد نیست اگر در تهران زندگی میکنید روی این موارد هم تحقیق کنید. من فعلاً فرصت نکردهام روی این زبانها وقت بگذارم، پس، ایدهای ندارم.
خوب، این از برنامهنویسی تحت وب.
- در برنامهنویسی دسکتاپ، C# یا VB یا Java یا Delphi؟
این هم از آن بحثهای داغ بین برنامهنویسان است! باور کنید من با ترس و لرز دارم نظرم را مینویسم. میترسم یکی از طرفداران مخالف نظر من بیاید در بخش نظرات حساب من را بکوبد!
- ویژوال بیسیک خواهد مرد!
من شخصاً معتقدم VB همان اوائل و فقط برای بچه دبیرستانیها خوب بود. همانطور که در آمار بالا هم میبینید، روز به روز از آمار کسانی که به سمت آن میروند، کمتر خواهد شد. دلیل آن مثل آفتاب واضح است: همه زبانها ساختاری شبیه به C دارند، اما VB ندارد!
شما اگر C را بلد باشید و بخواهید VB یاد بگیرید، تقریباً باید C را فراموش کنید و دوباره VB را یاد بگیرید. بر فرض هم که VB را یاد گرفتید، تمام زبانهای دیگری که سر و کار دارید، ساختار مشابه C دارند. پس به نظر شما عاقلانهتر نیست که شما C# را یاد بگیرید که اگر یک روز خواستید به سراغ PHP یا هر زبان دیگری بروید، تمام ساختارهای آن شبیه به C# باشد و راحتتر سوئیچ کنید؟
با توجه به اینکه تمام زبانهای مایکروسافتی تحت .NET شدهاند، فرقی ندارد که شما VB بلد باشید یا C#. پس سی شارپ را یاد بگیرید که شبیهتر به زبانهای دیگر باشد.
دقت کنید که گاهی VB هم کار راه انداز میشود. پس نیم نگاهی به آن هم داشته باشید. مثلاً من خودم VB مقدماتی را تدریس کردهام، اما هرگز روی پیشرفته وقت نخواهم گذاشت، چون ارزش ندارد.
- بین C# و جاوا و دلفی کدام؟
دلفی هم با توجه به حضور سی شارپ یک مرده به حساب میآید. اما جاوا جای بحث دارد.
شما اگر جاوا را یاد بگیرید، برنامه شما به راحتی بر روی بسترهای مختلفی (از جمله گوشیها، وب، دسکتاپ و ...) اجرا خواهد شد. من فکر میکنم این روزها بیشترین کاربرد جاوا در برنامهنویسی موبایل است.
برای برنامهنویسی دسکتاپ، جاوا را چندان پیشنهاد نمیکنم.
- در برنامهنویسی موبایل، کدام پلتفرم؟ Android یا iOS یا Windows Phone یا Java؟
خیلی با احتیاط وارد بازار کار برنامهنویسی برای موبایل شوید چون در ایران بازار کار قویای ندارد و ممکن است بعداً به این نتیجه برسید که اگر وقت خود را روی وب یا دسکتاپ میگذاشتید بهتر بود. بیشتر افرادی که من میبینم که برنامهنویسی موبایل انجام میدهند، شغل دیگری دارند و برای تفریح کار میکنند.
- اپل ما را خط زده است، پس ما هم iOS را خط میزنیم:
احتمالاً میدانید که اپل همه چیزش را برای ایران تحریم کرده است. از طرفی برنامههای اپل باید حتماً توسط اپل و در App Store تأیید شوند و قرار بگیرند وگرنه قابل استفاده روی گوشی کاربر نیستند (مگر اینکه Jail Break شده باشد که خوب، عاقلانه نیست روی گوشیهای جیل.بریک شده برنامهریزی کنید). به همین راحتیها نمیتوانید برنامهای که نوشتهاید را به دست کاربر برسانید. من تعداد معدودی ایرانی دیدهام که برای اپل برنامهنویسی میکنند که آنها هم اکثرشان در خارج از کشور زندگی میکنند و محدودیت قانونی ندارند.
به هر حال، اگر بخواهید برای iOS کدنویسی کنید، باید به زبان C++ مسلط باشید. Xcode SDK را از سایت اپل دانلود کنید و روی سیستم عامل مک خود نصب کنید و شروع کنید. البته میتوانید از پروژه مونو هم استفاده کنید تا کدهای C# شما روی iOS اجرا شوند.
- آندروید دنیای گوشیها را فتح خواهد کرد:
گوگل روی هر چیزی دست بگذارد، دیر یا زود به صدر لیست منتقل میشود و این طبیعیست.
آندروید با اینکه مدت کمی از عمرش میگذرد، اما در صدر لیست سیستم عاملهای موبایل است و به زودی همه جا دیده خواهد شد حتی روی یخچال فریزر شما!!
بنابراین، پیشنهاد اول من این است که به سمت آندروید بروید.
برای برنامهنویسی ویژه آندروید، باید زبان Java را بلد باشید. فکر میکنم حالا متوجه میشوید که چرا جاوا در رتبه دوم زبانهای محبوب است!
خیلیها معتقدند دنیا دارد به سمت موبایل و تبلت میرود. "اینترنت بدون وب" عنوانی است که این روزها مطرح است. همه سایتها برای خود یک اپلیکیشن ارائه کردهاند که روی گوشی اجرا میشود و نیازی نیست وارد وبسایت خاصی شوید!
- ویندوز فون، جان خواهد گرفت:
ویندوز فون هم به زودی جا باز خواهد کرد. روی آن هم میتوانید برنامهریزی کنید، اما اولویت اولتان، جاوا و آندروید باشد.
برای ویندوز فون میتوانید به زبان C# برنامه بنویسید.
خوب، این هم یک اظهار نظر شخصی در مورد زبانهای برنامهنویسی.
تأکید میکنم که باید نظرهای مختلف را بخوانید و بعد تصمیم بگیرید.
اما،
معطل نکنید! یکی را انتخاب و اقدام کنید!
به یکی گفتند: 30 سالت شده است، چرا نماز نمیخوانی؟ گفت: هنوز دارم تحقیق میکنم که اسلام برتر است یا مسیحیت یا یهودیت!!
زمانی که دانشجو بودم، گروهی از دوستان بودند که هر وقت در جمعشان قرار میگرفتم، بحث سر این بود که: کدام زبان بهتر است که برویم سراغش؟ از ترم یک تا هشت، از اساتید سؤال میکردند که: استاد! کدام زبان بهتر است!؟ دانشگاه تمام شد و آن دوستان در نهایت انتخاب نکردند که کدام زبان بهتر است و تا جایی که میشناسمشان، هیچ کدام برنامهنویس نشدند!!
شما باید یک دین را که فعلاً فکر میکنید برتر است، انتخاب کنید و طبق آن پیش بروید، اگر بعداً به این نتیجه رسیدید که فلان دین بهتر است، مشکلی نیست، به آن دین سوئیچ میکنید! (محتوای تمام ادیان تقریباً یکیست، فقط نامها تغییر کرده است) مهم این است که فعلاً بلاتکلیف (گمراه) نباشید
سریعاً یک زبان (مثلاً C++) را انتخاب کنید و وقت را تلف نکنید. روی آن وقت بگذارید... در حین کار، به این نتیجه میرسید که فلان زبان بهتر است و به سراغ آن زبان میروید.
آخرین مطلب:
واقعاً هر که در شهرستان است، محکوم به انتخاب زبانهایی که شما گفتید است؟
خیر، این روزها اینترنت، محدودیتهای جغرافیایی (یا به قول این ویدئو، Geographical Boundaries) را شکسته است. شما میتوانید در شهرستان باشید، اما محدوده کاریتان کل ایران و حتی دنیا باشد. فقط باید بتوانید خودتان را روی اینترنت مطرح کنید که این یک تسلط کافی روی بحث طراحی وب را میطلبد.
به طور مثال، من در شهرستان هستم، اما پس از ارائه تستا، بسیاری از سازمانها و دانشگاهها و امثالهم تماس گرفتهاند و پیشنهاد سفارشیسازی تستا را دادهاند. چندین مؤسسه مطرح در تهران پیشنهاد همکاری در زمینه تبدیل متن به صدا (مربوط به پروژه پارسخوان) را داشتهاند. برخلاف من که حال و حوصله و وقت کار گروهی و سفارشات سنگین را ندارم، شما اگر بخواهید از این راه کسب درآمد کنید، هیچ محدودیتی در محل سکونت و کار شما وجود ندارد.
از دوستانی که احتمالاً اظهار نظر خواهند کرد، خواهش میکنم به تأکیدات بنده دقت کنند که اینها فقط اظهار نظر شخصی بود و نه یک وحی منزل! من نظرم را گفتم. شما هم نظرتان را بدون هیچ تعصب (و احیاناً لحن تند نسبت به دوستان دیگری که نظر میدهند) بیان کنید.
در نهایت این عکس را هم ببینید:
موفق باشید؛
حمید رضا نیرومند
منبع:http://aftab.cc/article/994