سه شنبه, 18 ارديبهشت 1403

 



برنامه توسعه نرم افزاری برنامه نویسان

برنامه‌نویسی رایانه در فرهنگ واژه غیر متخصصین ممکن است به تمام پروژه ساخت نرم‌افزار یا برنامهٔ رایانه‌ای گفته شود. با این همه برنامه‌نویسی تنها بخشی از فرآیند توسعه نرم‌افزار یا برنامه رایانه‌ای است. اهمیت، توجه و منابع اختصاص داده شده به برنامه‌نویسی، بسته به ویژگی‌های مشخص شده محصول و خواست افراد درگیر در پروژه و کاربران و در نهایت شیوهٔ انتخاب شده مهندسی نرم‌افزار متغیر است.
برنامه‌نویسی کامپیوتر (که اغلب در انگلیسی programming یا coding گفته می‌شود) فرآیند نوشتن، اشکال زدایی(debug) و نگهداری کد منبع (source code) برنامه کامپیوتر می‌باشد. این کد منبع با یک زبان برنامه نویسی نوشته شده است. این کد منبع ممکن است تغییر داده شده یک کد قبلی و یا یک کد کاملا جدید باشد. هدف برنامه نویسی ساختن یک برنامه می‌باشد که یک رفتار خواسته شده را به نمایش بگذارد.
نقش آنها به این صورت است که مسیول تبدیل جزییات و گزارش تمام مسایل و رویه ها به نمودارهای جریان منطقی میباشند،به این منظور که آنها را به زبان کامپیوتر تبدیل کنند.آنها همچنین برنامه های کامپیوتری را توسعه می دهند و مسیولیت نوشتن برنامه ها را هم به عهده دارند.اما برنامه نویسان کامپیوتر چه وظایفی به عهده دارند؟

وظایف:
1-
تصحیح خطاها با ایجاد تغییرات مناسب و بعد،چک کردن مجدد برنامه برای اطمینان از عدم وجود خطا.
2-
کار کردن با نسخه های آزمایشی برنامه ها برای اطمینان از اینکه درست طراحی شدند و ساختار صحیح دارند.
3-
نوشتن نسخه های اولیه و مستندسازی اولیه ی برنامه ها و بررسی های پی در پی به منظور اینکه برای همه قابل فهم باشد.
4-
نوشتن،به روز رسانی و نگهداری برنامه های کامپیوتری یا بسته های نرم افزاری برای به عهده گرفتن مشاغل خاص نظیر:ردیابی موجودی ها،ذخیره سازی داده ها و یا کنترل کردن هر نوع تجهیزات دیگری.
5-
ملاقات با مدیرعامل،مهندسین و پرسنل فنی برای توضیح دادن هدف برنامه،تشخیص مسایل و مشکلات و پیشنهادهایی برای تغییرات در صورت لزوم به آنها.
6-
گسترش دادن برنامه های موجود برای هرچه بیشتر کارا کار کردن.
7-
نوشتن،تجزیه و تحلیل،بازبینی و بازنویسی برنامه ها،استفاده از جدول جریان کار، و نمودارها و به کارگیری دانش کامپیوتری و استفاده از منطق نمادی و موضوعات گوناگون.
8-
نوشتن راهنما و دستورالعمل برای کاربران نهایی.
9-
تحقیق در مورد اینکه آیا شبکه ها،ایستگاه های کاری،واحد پردازش مرکزی سیستم و یا تجهیزات جانبی با دستورالعمل های برنامه ها هماهنگ هستند یا نه؟
10-
آماده کردن نمودارهای جریان کار که ورودی ها و خروجی ها و عملیات منطقی را توصیف کند و آنها را به مجموعه ای از دستورالعمل ها که به زبان کامپیوتری نوشته شدند تبدیل نماید.
11-
تجزیه و تحلیل سیستم ها برای نگه داری و کنترل نرم افزارهای سیستم کامپیوتری.
12-
با مشورت و کمک به اپراتورهای کامپیوتری یا تحلیل گران سیستم به رفع مشکلات در نرم افزارهای کامپیوتری کمک می کند.
13-
انتساب،هماهنگی و بررسی کار و فعالیت های کارکنان.
14-
همکاری با تولیدکنندگان کامپیوتر و سایر کاربرها برای توسعه و ارتقای نرم افزارهای جدید.
15-
آموزش زیردستان در مواردی مانند برنامه نویسی و کد کردن برنامه ها.
زبانهای برنامه نویسی:
زبان‌های برنامه‌نویسی ساختارهای زبانی دستورمداری در رایانه‌ها هستند که به‌وسیلهٔ آنها می‌توان یک الگوریتم را به‌وسیلهٔ ساختارهای دستوری متفاوت برای اجرای رایانه توصیف کرد و با این روش امکان نوشتن برنامه جهت تولید نرم‌افزارهای جدید بوجود می‌آید. معمولاً هر زبان برنامه‌نویسی دارای یک محیط نرم‌افزاری برای وارد کردن متن برنامه، اجرا، همگردانی و رفع اشکال آن هستند.
یک زبان برنامه نویسی یک زبان مصنوعی است که برای بیان محاسباتی که توسط یک ماشین (مخصوصا رایانه) قابل انجام است، طراحی شده‌است.زبان‌های برنامه نویسی برای ایجاد برنامه‌هایی به کار می‌روند که رفتار یک ماشین را مشخص می‌کنند، الگوریتم دقیق را بیان می‌کنند، و یا روشی برای ارتباط انسانند.
اولین زبان برنامه نویسی به قبل از اختراع رایانه باز می‌گردد، و برای هدایت رفتار ماشین‌هایی مانند دستگاه‌های نساجی اتوماتیک و نوازنده‌های پیانو به کار می‌رفت. هزاران زبان برنامه نویسی خلق شده‌اند، بیشتر در زمینهٔ رایانه، زمینه‌ای که هر ساله بسیاری دیگر ایجاد می‌شوند.
تعدادی از زبان‌های برنامه‌نویسی به شمار زیر هستند :
اسمبلی (Assembly)
لیسپ (LISP)
بی (B)
بی سی پی ال (BCPL)
سی (C)
سی‌پلاس‌پلاس (++C)
سی پلاس پلاس/سی ال آی(C++/CLI)
پاسکال (Pascal)
جاوا (Java)
سی‌شارپ (#C)
جی شارپ (#j)
جی پلاس پلاس (++j)
اف شارپ (#f)
بیسیک (Basic)
پایتون (Python)
پرل (Perl)
پی‌اچ‌پی (PHP)
ای اس پی (ASP)
ای اس پی دات نت (ASP.Net)
وی بی دات نت (VB .Net)
دلفی (Delphi)
ویژوال بیسیک (visual basic)
لینگو (Lingo)
محیط کار
محیط کاری برنامه نویسان معمولا دفاتر کار راحت میباشد. بسیاری از برنامه نویسان برای تحویل به موقع پروژه ها وحل کردن مسائل مهم کاری ، مجبور به کار برای ساعتهای طولانی و اضافه کاری هستند. باتوجه به فن آوریهای روز ، ارتباط از راه دور برای بسیاری از متخصصین رایانه از جمله برنامه نویسان به صورت یک امر عادی در آمده است. با گسترش شبکه های رایانه ای ، برنامه نویسان بیشتری توانائی ارتباط با رایانه ی مشتری از راه دور را برای برطرف کردن ایرادها و مشکلات پیش آمده بدست آورده اند.
همانند بسیاری مشاغل دیگر ، برنامه نویسان نیز باید ساعتهای زیادی را جلو رایانه به تایپ کردن مشغول باشند که این کار آنها را مستعد خستگی چشم ،‌ کمردرد و مشکلات دست و مچ دست مانند سندروم تونل کارپال میکند.
برنامه نویس مستقل به فردی گفته می‌شود که بصورت انفرادی اقدام به انجام پروژه‌های کامپیوتری و نرم افزاری بصورت قرار دادهای کوتاه مدت انجام می‌دهد. با توجه به رشد روز افزون صنعت نرم افزار و تکنولوژیهای مربوطه، نیاز به برنامه نویسان، طراحان و مشاغل مربوط به این صنعت و تکنولوژی هر روز بیشتر می‌شود. این تقاضا به قدری است که امروزه هر فردی برای انجام کارهای روزمره خود نیاز به کامپیوتر را احساس می‌کند. دیگر اجرا و انجام پروژه‌ها و برنامه‌ها مختص به سازمانها و ارگانهای بزرگ نیست! امروزه حتی یک فرد عادی نیز، برای انجام محاسبات کاری روزمره احتیاج به کامپیوتر و برنامه نویسی دارد. بطور مثال ممکن است مهندسی نیاز به برنامه مخصوصی داشته باشد که مقادیری را محسابه و تجزیه تحلیل نماید و این برنامه را در بین برنامه‌های تجاری ارائه شده در بازار پیدا نکند و یا مثال بسیار ساده تر پروژه‌های دانشجویی می‌باشد که یک دانشجو برای موفقیت در دروس خود باید انجام دهد اما در اکثر مواقع بخاطر کم تجربگی نیاز به کمک در انجام پروژه دارد... با توجه به این رشد و تقاضا، نیاز به ساختار جدیدی حس می‌شود که پاسخگوی درخواست برنامه نویسی بصورت تخصصی یا مستقل باشد.

فرصت ها:
برنامه نویسان در هر صنعتی ممکن است به کار گرفته شوند اما بیشترین فرصتهای شغلی در صنعت خدمات رایانه و تحلیل داده ها که وظیفه نوشتن و فروش نرم افزارها را به عهده دارند میباشد. تعداد زیادی از برنامه نویسان نیز در شرکتهای ارائه کننده خدمات مهندسی و مدیریتی ، شرکتهای مخابراتی ، تولید کننده های رایانه و تجهیزات دفتری ، مؤسسات مالی ، شرکتهای بیمه ، مؤسسات آموزشی و ادارات دولتی به کار مشغولند.
بسیاری از برنامه نویسان رایانه به صورت موقتی و قراردادی و یا برای ارائه خدمات مشاوره ای به خدمت گرفته میشوند. مثلا یک شرکت خرید و فروش ممکن است برای راه اندازی یک سیستم جدید مدیریت سرویس دهی به مشتریان به کار چندین برنامه نویس به صورت موقت نیاز داشته باشد. این نحوه کار کردن به شرکتها اجازه میدهد تا برحسب نیاز کاریشان افرادی با تخصصهای خاص و معمولا آشنا به آخرین فن آوریها را بدون نیاز به باز آموزی کارکنان خود شرکت به کار گیرند. این قراردادها ممکن است چند هفته ای یا حتی چند ساله باشند.
آموزش و ادامه تحصیل
آموزش برنامه نویسی در سطوح مختلفی از کلاسها ی آموزشی گرفته تا تحصیلا ت دانشگاهی انجام میشود . استخدام کنندگان معمولا به میزان دانش فرد در زبانهای برنامه نویسی توجه دارند و برنامه نویسان نیز میتوانند در یکی یا چندین زبان برنامه نویسی مانند جاوا یا سی مدرک بگیرند. برای کار یابی در صورتی که فرد مدرک نداشته باشد ، باید از تجربه کاری زیادی برخوردار باشد. حتی در مورد کسانی که مدرک برنامه نویسی دارند ،‌ استخدام کنندگان تاکید اصلی را بر روی تجربه قبلی میگذارند.
با وجود اینکه برنامه نویسان باید با زبانهای سنتی برنامه نویسی آشنا باشند ، اما تاکید اصلی امروزه بر روی زبانهای جدید شیء گرا و نسل چهارم و پنجم زبانها که از رابط گرافیکی کاربر استفاده میکنند میباشد. استخدام کنندگان افرادی را که با تجارت و زمینه کاری آنها آشنا باشند را ترجیح میدهند.
برای برنامه نویسی سیستم که در بالا به آن اشاره شد ، دانش وسیع درباره سیستمهای عامل مختلف ضروری است. این شامل توانائی طراحی سیستم عامل برای کار با انواع مختلف سخت افزار و سازگار سازی سیستم برای برآوردن نیازهای خاص یک شرکت نیز میباشد. این برنامه نویسان باید با کار با سیستمهای پایگاه داده ها مانند اوراکل نیز آشنائی لازم را داشته باشند.
یک برنامه نویس باید توانائی تفکر به روش منطقی و توجه به جزئیات را داشته باشد. این کار نیاز به شکیبائی ، مداومت و توانائی کار تحلیلی دقیق بخصوص تحت شرایط فشار دارد. ابتکار و قدرت تخیل نیزبرای طراحی راه حلها و پیشگیری از خطاها از شروط لازم میباشند. برنامه نویسان سیستم باید توانائی کار بر روی مفاهیم انتزاعی و تحلیل فنی را داشته باشند. از انجائیکه در بسیاری موارد برنامه نویسان به صورت تیمی کار میکنند و با کاربرها سروکار دارند ،‌ باید قادر به ارتباط برقرار کردن با کارمندان غیر فنی نیز باشند.
تازه کارها ممکن است به تنهائی بر روی یک برنامه اولیه کار کنند ویا به همراه برنامه نویسان با تجربه و به صورت تیمی به کار گرفته شوند. درهر صورت این افراد تازه کار باید تحت نظارت مستقیم حرفه ایها قرارگیرند. به علت رشد سریع فن آوری ، برنامه نویسان مجبور به شرکت در دوره های مکرر باز آموزی میباشند.
چشم انداز آینده
بیشترین رشد در زمینه برنامه نویسی سیستم و اجرائی درآینده درزمینه های تجزیه و تحلیل داده ها ، تهیه نرم افزار و خدمات مشاوره ای رایانه خواهد بود. اما رشد برنامه نویسی نسبت به دیگر رشته های تخصصی رایانه کند تر است . با رشد سریع فن آوری ، نرم افزارهای پیچیده رایانه ای امروزه قادر به نوشتن بسیاری از کدهای پایه ای برنامه میباشند واین مسئله نیاز به برنامه نویسهای بیشتر را برای انجام اینگونه کارهای تکراری از بین برده است . پیشرفت در تولید بسته های نرم افزاری ، ابزارها و زبانهای برنامه نویسی پیشرفته و رشد توانائی کاربرها در طراحی ، نوشتن و اجرای برنامه های خاص خودشان بدین معناست که بسیاری از کارهای عملیاتی برنامه نویسی قابل انتقال به دیگر مشاغل میباشند. با بالا رفتن سطح نوآوری و پیچیدگی فنی ، برنامه نویسان با رقابت بیشتری در سطح بین المللی روبرو میشوند ،‌ چرا که شرکتها قادر به سفارش دادن برنامه نویسی با قیمت کمتر به کشورهای دیگر میباشند.
با اهمیتی که امروزه شبکه ها و محیطهای اینترنتی پیدا کرده اند ، شرکتها به دنبال برنامه نویسانی هستند که قادر به تبادل داده ها و پیاده سازی تجارت الکترونیک و استراتژیهای اینترانت باشند. از دیگر زمینه های مورد توجه ، مولتی مدیا و برنامه نویسی مشتری/ سرویس دهنده میباشند. راز موفقیت یک برنامه نویس در آینده پیش رفتن با فن آوری روز، تبحر دربرنامه نویسی پایگاه داده ها و اینترنت و تلفیق مدرک دانشگاهی با تجربه کاری میباشد.

مهارتهای نرم افزاری/کسب و کاری:
در بيشتر مواقع كارفرمايان كارجوياني را براي استخدام ترجيح مي‌دهند كه واجد مهارتهاي عمومي كسب و كاري و تجربه مربوط به عمليات‌هاي شركت باشند. از طرف ديگر هنگام استخدام و بكارگيري برنامه‌نويسان،كارفرمايان بيشتر به دنبال افرادي هستند كه علاوه بر تسلط بر مهارتهاي ضروري برنامه‌نويسي،از قدرت تفكر منطقي و توجه ويژه به جزئيات نيز برخوردار باشند. در حقيقت اين زمينه شغلي مستلزم صبر فراوان،مقاومت و فعاليت در محيط‌هاي پرفشار و پراسترس است. براي نوشتن يك برنامه نرم‌افزاري و تست آن به منظور يافتن محدوديتها و مشكلات احتمالي برنامه،دارا بودن قوه تخيل قوي و ذكاوت فراوان از اهميت زيادي برخوردار مي‌باشد. در اين ميان توانايي كار با مفاهيم مبهم و انتزاعي و قوه تجزيه و تحليل فني و تكنيكي نيز از موارد بسياري حائز اهميت براي برنامه‌نويسان سيستم‌هاي عامل به شمار مي‌رود. زيرا آنها نرم‌افزاري را تهيه و طراحي مي‌كنند كه عمليات رايانه در كنترل آن مي‌باشد. مضاف بر اين از آنجايي كه از برنامه‌نويسان انتظار مي‌رود تا در يك تيم پروژه به فعاليت مشغول شده و مستقيماً در تعامل با كاربران باشند،به همين خاطر كارفرمايان بيشتر در پي بكارگيري افرادي از اين گروه برمي‌آيند كه قادر به برقراري ارتباط و مكاتبه و مذاكره با افراد غيرفني و ناوارد هستند.

زمینه های اشتغال مهارت آموختگان رشته برنامه نویسی:
منشی کامپیوتر، مسئول کارگاههای آموزشی، کمک مربی آموزش کامپیوتر، راهبر سیستمهای کاربردی کامپیوتر، مسئول آرشیو های نرم افزاری، کمک برنامه ساز سیستمهای کاربری کامپیوتر،برنامه ساز سیستمهای کاربردی کامپیوتر، مربی آموزشی کامپیوتر،دستیار تولید کننده سیستمهای کامپیوتری ،مستند ساز سیستمهای کامپیوتری، نصب کننده وراهبر دستگاههای ریز کامپیوتری، سرپرست اتاق ریز کامپیوتر، سرپرست راهبری شبکه های محلی کامپیوتر و راهبر روند های کنترل فرایند های صنعتی
آموزش های رسمی مورد نیاز:
بازار به دنبال برنامه نویسانی است که سطح آموزش و تجربه ی بالاتری داشته باشند.
كارفرماياني كه براي مقاصد مهندسي يا علمي از رايانه استفاده مي‌كنند بيشتر متقاضي استخدام فارغ التحصیلان دانشگاهی هستند که در رشته های کامپیوتر،علوم اطلاعاتی،ریاضیات،فیزیک و علوم مهندسی فارغ التحصیل شده اند.در حالی که کارفرمایان دیگر که برای کاربردهای بازرگانی و تجاری از رایانه استفاده می کنند، فارغ التحصیلانی را می خواهند که علاوه بر تسلط به برنامه نویسی،فارغ التحصیل رشته های بازرگانی یا سیستم های اطلاعاتی باشند.
نحوه ی کسب تجربه:
در صورت نداشتن مدرک تحصیلی مربوط،افراد متقاضی این پست باید از تجربه و مهارت کافی برخوردار باشند.البته با وجود مدرک تحصیلی،کارفرمایان همچنان بر تجربه تاکید بیشتری می ورزند.در هر صورت فارغ التحصیلان می توانند با شرکت در دوره های کارآموزی و آموزشی فوق العاده،چشم انداز شغلی خود را بهبود بخشند.
نحوه ی کسب مهارت های فنی مورد نیاز:
از آنجايي كه تكنولوژي به سرعت در حال تغيير و تحول مي‌باشدبه همين خاطر برنامه‌نويسان بايد به طور مرتب و مستمراز طريق شركت در كلاسها و دوره‌هاي آموزشي مختلف مهارتهاي خود را روزآمد نمايند. در بيشتر مواقع دوره‌هاي مذكور توسط كارفرمايان و يا شركتهاي نرم‌افزاري براي برنامه‌نويسان ترتيب داده مي‌شوند. در هر صورت شركت در دوره‌هاي آموزشي فوق‌العاده و ضمن خدمت براي برنامه‌نويسان يك ضرورت هميشگي به شمار مي‌رود. علاوه بر آن با وجودي كه تسلط بر زبانهاي سنتي برنامه‌نويسي همچنان يك امر اجتناب‌ناپذير براي برنامه‌نويسان محسوب مي‌شود ولي اين افراد بايد با زبانها و ابزارهاي برنامه‌نويسي جديد و هدفمند كه مستلزم تسلط بر برنامه‌نويسي سيستمي و واسط‌هاي كاربري گرافيكي هستند، آشنايي كافي داشته باشند.
در اين ميان دارا بودن گواهينامه فني يا حرفه‌اي ساده‌ترين روش اثبات سطح مهارت یک برنامه نویس به شمار می رود. در زمينه برنامه‌نويسي سيستم هم افراد واجد صلاحيت بايد علاوه بر تسلط كامل بر سيستم‌هاي عامل قادر باشند با سيستم‌هاي ويژه پايگاه داده‌ها نيز كار نمايند.
آینده ی شغلی:
به طور كلي برنامه‌نويسان تازه كار بايد حتماً تحت نظارت يك فرد باتجربه به كار مشغول شوند. در حالي كه افراد با تجربه و ماهر اين گروه،كه خود را با نوآوريهاي روز فناوري روزآمد نگاه مي‌دارند،از چشم‌انداز شغلي بسيار خوبي برخوردار بوده و به راحتي مي‌توانند به تنهايي و يا در قالب يك تيم پروژه به فعاليت برنامه‌نويسي بپردازند. اين قبيل افراد در شركتهاي بزرگ معمولاً به كار نظارت و يا رهبري تيم پروژه گمارده مي شوند. برنامه‌نويسان نرم‌افزارهاي كاربردي مي‌توانند بعد از كسب مقداري تجربه و شركت در دوره‌هاي آموزشي مربوطه به برنامه‌نويسي سيستم‌هاي عامل نيز مشغول شوند. اين افراد همچنين مي‌توانند با كسب تجربه كسب و كاري و بازرگاني كافي به پست‌هاي شغلي تحليل‌گر برنامه‌نويسي،تحليل‌گر سيستم‌هاي عامل و يا مشاغل مديريتي ارتقاء يابند. در صورت كسب دانش و تجربه با زبانهاي پيشرفته برنامه‌نويسي و سيستم‌هاي عامل،برخي از افراد اين گروه وارد زمينه‌هاي تحقيقي و توسعه‌اي نظير مولتي‌مديا يا فناوري اينترنت مي‌شوند. علاوه بر اين به خاطر اين كه كارفرمايان بيشتر مايل به مناقصه گذاشتن فعاليتهاي برنامه‌نويسي خود هستند،به همين خاطر برنامه‌نويسان ماهر و خبره از فرصتهاي بسيار خوب درآمدي نسبت به بقيه برخوردار مي‌باشند.

نرم افزارها:


تجارب:
چگونه برنامه نویس موفقی شویم؟
اگر از آن دسته افرادى هستيد كه به دنبال آينده و كسب و كارى پر از انرژى و خلاقيت هستند و اگر شديداً از انجام كارهاى روتين و كارمند بانك بودن تنفر داريد(!) و اگر دوست داريد كسب و كارى را برگزينيد كه بدون شك در سال هاى آينده بازار پررونقى داشته باشد، حتماً به برنامه نويسى به عنوان يك شانس مهم توجه داشته باشيد. همواره وقتى به صدر رده بندى پول دارترين مردان دنيا نگاه مي كرديم عادت كرده بوديم نام كسى جز بيل گيتس را نبينيم! برنامه نويس نوجوان و جسور آنقدر در كار خودش پشتكار به خرج مى داد كه گاهى وقت ها به خاطر دستكارى زياد در كامپيوتر دبيرستان شان تهديد به اخراج مى شد و بعد از ورود به دانشگاه هاروارد، طولى نيانجاميد كه دانست آنجا هم نمي تواند يك برنامه نويس ماورايى را ارضا كند، پس به سمت بازار كار رفت و مايكروسافت را با همكلاسى سابقش (استيو بالمر) تاسيس كرد و شبانه روز در آنجا مشغول برنامه نويسى شد و حتى هفته ها خانه نمى رفت تا مايكروسافت، مايكروسافت شد و بيل جوان به بيل گيتس معروف و موفق تبديل شد! سرگذشت بيل گيتس هميشه مي تواند بهترين الگو براى موفقيت برنامه نويسان جوان وآماتور باشد و در نگاهى كلي تر شايد الگويى براى همه جويندگان جوان موفقيت!از اين دست برنامه نويسان موفق، كم نيست و جالب اينكه بسيارى از آنها همگام با موفقيت در برنامه نويسى در زمينه هاى ديگر از جمله تجارت، مديريت، خلاقيت، فضانوردى و غيره نيز موفق ظاهر شده اند. برنامه نويسى را مي توان شغل قرن بيست و يكم ناميد. شغلى كه سراسر تخيل، نوآورى، ايده پردازى، تحقيق، خلاقيت و پشتكار را شامل مي شود. حال، با اين تعاريف، شايد دهان خيلي ها آب افتاده باشد كه از همين امروز سراغ برنامه نويسى بروند تا آينده شغلى خود را حسابى تضمين كنند. اما برنامه نويسى شايد در ظاهر شيك و با كلاس باشد اما در باطن گاو نر مي خواهد و مرد عمل(!)با بررسى چند توضيح ساده بر ما عيان مي شود كه برنامه نويسى بعد از كار كردن در معدن يكى از مشكل ترين و در عين حال، پيچيده ترين مشاغل است!! پس از توضيحات بيشتر به چند جمله كوتاه توجه كنيد : برنامه نويسى كه پشتكار نداشته باشد، هيچ وقت نخواهد توانست از پس خطاهاى پى در پى بر آيد و ميدان را خالى خواهد كرد، پس هيچ گاه به موفقيت نخواهد رسيد. برنامه نويسى كه به روز نباشد، با دانش پايه و آكادميك قبلي اش بدون شك پس از مدتى اندك متوقف خواهد شد. هيچ برنامه نويسى به صرف داشتن ليسانس يا فوق ليسانس سر كار نخواهد رفت! بسيارى از برنامه نويسان موفق پس از مدتى درخشش سمت هاي کلان مديريتي را در اکثر شرکت هاي آی تی به دست می آورند که خود گوياى اهميت شغلى آنهاست. گرو ه ها و برنامه نويسان كد باز پس از اينكه ما ه ها وقت خود را روى يك پروژه صرف مي كنند تا آن را به محصولى درخور و ارزشمند تبديل كنند، در پايان، نتيجه تمامى تلاش خود را به صورت كاملاً رايگان در اختيار ديگران قرار مي دهند! • بسيارى از برنامه نويسان، پس از مدتى به علت ركود خلاقيت و دانش روز، کار خود را از دست مي دهند. متاسفانه، معمولاً افراد در مواجهه با علوم كامپيوتر و علي الخصوص برنامه نويسى بسيار عجول هستند و شايد رونق كتاب هاى آموزشى تحت عنوان هاى آموزش برنامه نويسى در 24 ساعت و غيره از همين جا نشات گرفته است. پتر نورويج يكى از مدرسان معروف علوم كامپيوتر در همين مورد، جملات معروفى دارد: « مردم خيلي عجله دارند كه در مورد كامپيوترها چيز ياد بگيرند خيال هم مي کنند كه يادگيري كامپيوتر خيلي آسان تر از يادگيري مسائل ديگر است. وگرنه هيچ كتابي در مورد بتهوون، يا فيزيك كوانتوم يا حتي تربيت سگ، در چند روز وجود ندارد» براى اينكه ما بتوانيم يك برنامه نويس موفق شويم و به درآمد بالا دست پيدا كنيم، بايد بدانيم كه با خواندن چند كتاب و مقايسه و بررسى چند نمونه كد نمي شود ظرف چند ماه به يك برنامه نويس موفق كه درآمد خوبى هم دارد و صاحب شغل و پست مطمئن در شرکت در خوري هم هست تبديل شد. يك برنامه نويس موفق هميشه بايد خود را عقب بداند و در كسب تجربيات ديگران و تكنيك هاى روز كوشا باشد. از زبان و به نقل قول بسيارى از برنامه نويسان حرفه اى شنيده و خوانده ام كه به روزترين و سريع ترين دانش و كسب و كار دنيا برنامه نويسى است. پس يك برنامه نويس موفق هيچ گاه نبايد به داشته هاى هر چند پربارش غره شود و از تكاپوى روزانه باز ايستد. يك مشكل ديگر كه غالباً برنامه نويسان نوجوان و يا كم تجربه تر را درگير مي کند، اين است كه آنها بعد از اينكه در توسعه يك نرم افزار، وب سايت و غيره به خطايي برخورد كردند، پس از چند بار تلاش و كوشش از كوره درمي روند و عطاى موفقيت را به لقايش مي بخشند و كلاً يا پروژه را بي خيال مي شوند يا در صورت امكان، بخش مورد نظر را از پروژه حذف مي كنند و غالباً فكر مي كنند گذاشتن زمان هاى بسيار براى حل يك مشكل اتلاف وقت است، در صورتي كه نتيجه شكست تا هميشه در ذهن شما خواهد ماند و در روند و زمان كلى انجام پروژه باز هم تاثير خود را خواهد گذاشت. نكته عملى اينكه يك برنامه نويس براى موفقيت بايد حداقل روزانه بيش از يك ساعت از وقت خود را در وب براى جستجو در مورد تازه هاى زمينه تخصصى خود صرف كند. يك فرق نامحسوس ديگر كه بين برنامه نويسى حرفه اى و موفق با شكست خوردگان اين راه وجود دارد اين است كه دسته موفق معمولاً از خلاقيت و نوآورى زيادى در كارشان استفاده مي كنند و اين در حالى است كه دسته ديگر با آنكه شايد از بار دانش بيشترى نيز برخوردار باشند، اما به دليل نداشتن تفكر خلاقانه هيچ وقت نمي توانند نمونه محصولات جديدتر، متنوع تر و با كيفيت ترى خلق كنند. بسيارى از برنامه نويسان از حل مسائل الگو ريتمى و رياضيات گريزانند و احساس مي كنند حل مسائل رياضى و الگوريتمى هيچ كمكى به پيشرفت و كسب درآمد بيشتر آنها در آينده نخواهد كرد اما نبايد فراموش كنيم كه يكى از مهم ترين صفات يك برنامه نويس موفق توانايى او در حل مسئله مي باشد و در واقع، اگر برنامه نويسى از حل مسائل گريزان باشد، عملاً نمي توان نام برنامه نويس بر او گذاشت. البته براى فرا گرفتن تمامى اين تكنيك ها يك كليد اصلى و ساده وجود دارد و آن چيزى نيست جز علاقه! اگر سعى كنيد با علاقه كد بزنيد، مطمئن باشيد هيچ گاه دغدغه سختي هاى بالا را نخواهيد داشت. به برنامه نويسي علاقه داشته باشيد. اطمينان حاصل كنيد كه آن قدر از برنامه نويسي لذت مي بريد كه حاضر باشيد 10 سال از عمرتان را صرفش كنيد. در پايان، مي توان گفت عليرغم اينكه برنامه نويسى يك شغل پر درآمد، خلاقانه، پر تنوع و باثباتى است اما نبايد فراموش كرد در اين عرصه تنها كسانى موفق هستند كه تكنيك هاى مطروحه را خوب كسب كرده و به كار گيرند و الباقى متاسفانه در كمال صرف هزينه هاى مالى و زمانى بسيار بايد به داشتن شغل هاى نامربوط و غيرمستقيم و يا پست هاى پايين تر بسنده كنند.

تجربه ی دو:
یک برنامه‌نويس، حدود ده الی بيست درصد زمان خود را به کد‌نویسی مشغول است و بيشتر برنامه‌نویس‌ها بدون توجه به تجربه و مهارت، در هر روز حدود ده الی دوازده خط کد‌برنامه که در محصول نهایی به‌کار گرفته خواهد شد، می‌نویسند.
برنامه‌نويس‌های حرفه‌ای نود درصد زمان خود را صرف‌ فکر‌کردن، تحقیق و آزمایش برای پیدا‌کردن بهترین طراحی می‌کنند، اما برنامه‌نويسان بد، نود‌ ‌درصد زمان خود را صرف تغییر تصادفی کد، مشاهده نتیجه و اشکال‌زدایی آن می‌كنند. بیل گیتس در‌این‌باره می‌گوید‌‌:‌یک تراشکار ماهر و شایسته حقوقی چندین برابر یک تراشکار معمولی دريافت مي‌كند، اما ارزش یک برنامه‌نويس خیلی خوب و ماهر ده هزار برابر یک برنامه‌نويس معمولی است.
یک برنامه‌نويس خوب، ده برابر بیشتر از یک برنامه‌نويس ساده تولید‌کننده، مولد و مفید است و یک برنامه‌نويس حرفه‌ای و ماهر بيست تا صد برابر بیشتر از یک برنامه‌نويس ساده مفید خواهد بود. این یک اغراق نیست. مطالعات از دهه 1960 تاکنون بدون تناقض مؤید این امر است. یک برنامه‌نويس بد، تنها بی‌فایده نیست. او نه تنها هیچ کاری را انجام نمی‌دهد، بلکه کارهای بسیاری ایجاد کرده و برای حل آن‌ها برای دیگران دردسر ایجاد می کند.
برنامه‌نويسان حرفه‌ای زمان خیلی کمی را به کد‌نویسی (کدی که در محصول نهایی به‌کار خواهد رفت) اختصاص می‌دهند. افرادی که بيشتر‌ زمان خود را صرف کد‌نویسی می‌کنند بسیار تنبل، سهل انگار و متکبر هستند و زمانی برای پیدا کردن راه حل قدیمی برای مسئله پیش روی خود اختصاص نمی‌دهند. برنامه‌نويسان حرفه‌ای استاد تشخیص و استفاده دوباره از الگوهای برنامه‌نويسی هستند.
آن‌ها از بازنویسی و استفاده دوباره کد خود برای دستیابی به بهترین طراحی نمی‌ترسند و تا دست‌یابی به نتیجه مطلوب، دست از تلاش بر نمی‌دارند. در مقابل، یک برنامه‌نويس بد کدهایی می‌نویسد که از عدم وجود یکپارچگی مفهومی رنج می‌برند، قوانین و قواعد تکرار، بازنویسی و وراثت در آن‌ها رعایت نشده و از هیچ الگویی پیروی نمی‌کنند و به همین دلیل، بازنویسی و ایجاد تغییر در آن‌ها بسیار مشکل است. همیشه، کنار گذاشتن کد نامناسب و شروع اصولی همه چیز، بسیار بهتر از تغییر و دست و پا زدن در انواع مشکلات است.
نرم افزارها نیز مانند مفاهیم دیگر از قوانین بی نظمی پیروی می‌کنند. تغییرات پی در پی به خرابی و فرسایش کد منجر شده و در نهایت یکپارچگی طراحی اصلی را از بین می‌برند. با این‌که تغییرات و به تبع آن فرسایش کد امری اجتناب‌ناپذیر است، اما برنامه‌نويسی که در به‌کارگیری یکپارچگی مفهومی طرح خود خوب عمل نمی‌كند، نرم‌افزاری تولید می‌کند که خیلی خیلی سریع دچار فرسایش کد شده و قبل از اتمام، از ارزش و اعتبار مناسب ساقط ‌مي‌شود.
به همین دلیل، مهم‌ترین دلیل مشترک شکست پروژه‌های نرم‌افزاری، شکست درزمینه حفظ نظم در یکپارچگی مفهومی طرح نرم‌افزار به شمار می‌رود. دومین دلیل مهم مشترک در زمینه شکست پروژه‌های نرم‌افزار، ارائه محصولی غیر از آنچه مشتری خواسته است،به حساب مي‌آيد.نکته قابل توجه دیگر آن‌ است که فرسایش کد، سرعت پروژه‌های برنامه‌نويسی را به شدت و به صورت نمایی کاهش می‌دهد و به همین دلیل، بسیاری از پروژه‌ها در زمان برنامه‌ریزی شده به اتمام نمی‌رسند و هزینه‌های بسیاری به سیستم تحمیل می‌كنند و در نهایت نیز کنار گذاشته می‌شوند.
براساس تحقیقي كه در سال 2004 انجام شده حدود 51 درصد از پروژه‌های نرم‌افزاری در وضعیت حیاتی خود دچار شکست شده و حدود پانزده درصد از آن‌ها به‌طور کلی به شکست منتهی می‌شوند. با این حال، این آمار حکایت از پیشرفت شرکت‌ها و توسعه‌دهندگان در رابطه با برنامه‌ریزی و طراحی نسبت به ده سال قبل از آن دارد. در سال 1994 آمار گویای آن بودند که 31 درصد پروژه‌های نرم‌افزار به شکست منجر شده‌اند.
برنامه‌نويسی یک کار بسیار دشوار، تمام وقت و یک فعالیت ذهنی سنگین است. برنامه‌نويسان حرفه‌ای در تمام مدت روز و هفت روز هفته به کار خود فکر می‌کنند. آن‌ها به‌طور معمول حجم بسیاری از کد برنامه خود را در حمام یا در تخت‌خواب می‌نویسند و به این دلیل که حجم بسیاری از کار برنامه‌نويسی جایی غیر از روبه‌روی صفحه‌كليد انجام می‌شود، افزایش ساعت کاری افراد در دفتر اداری یا افزایش افراد پروژه کمکی به افزایش سرعت پیشرفت پروژه نخواهد كرد.
تجربه ی سه:
دستورالعملی برای موفقیت در برنامه نویسی:
o
به برنامه نویسی علاقه داشته باشید. اطمینان حاصل کنید که انقدر از برنامه نویسی لذت می برید که حاضر باشید 10 سال از عمرتان را صرفش کنید.
o
با برنامه نویسان دیگر ارتباط داشته باشید. کد برنامه های دیگر را مطالعه کنید. این خیلی مهم تر از هر کتاب یا دوره ی آموزشی است.
o
برنامه بنویسید. بهترین نوع آموزش ، انجام دادن است. در واقع حداکثر سطح کارایی برای افراد در هر رشته ای ، به طور خودکار با تجربه ی بیشتر حاصل نمی شود بلکه نیاز به تلاش تعمدی برای بهبود دارد.
o
می توانید تحصیلاتتان را در دانشگاه هم ادامه بدهید. این کار باعث می شود از رشته تان درک عمیق تری به دست آورده و همچنین به کارهایی مشغول شوید که نیاز به مدرک دانشگاهی دارند. البته اگر از مدرسه و درس لذت نمی برید ، می توانید تجربه ی مشابهی را در کار کسب کنید (البته با تلاش بیشتر) Eric Raymond در دیکشنری هکر ها می گوید: "مطالعه و تحصیلات آکادمیک در رشته ی کامپیوتر یک شخص را تبدیل به یک برنامه نویس حرفه ای نمی کند ، همانطور که یک فرد فقط با مطالعه ی رنگ و قلم مو نمی تواند نقاش شود". یکی از بهترین افرادی که در عمرم استخدام کردم (Jamie Zawinski) ، فقط تا دبیرستان درس را ادامه داده بود؛ با این وجود این شخص نرم افزار های خیلی خوبی تولید کرده (موزیلا و xemacs) و گروه خودش را در googlegroups دارد و حتی انقدر پول دراورد که بتواند یک کلوب شبانه بخرد.
o
روی پروژه های تیمی کار کنید. در بعضی از پروژه ها بهترین و در بعضی دیگر بدترین برنامه نویس باشید. وقتی بهترین هستید توانایی های خودتان به عنوان یک رهبر گروه را تست کرده و به دیگر افراد الهام می دهید. وقتی هم که بدترین باشید یاد می گیرید که حرفه ای ها چه کار می کنند و همچنین چه کارهایی را دوست ندارند انجام دهند (چون این کارها را می سپارند به شما!)
o
روی پروژه های دیگران کار کنید. برنامه هایی که دیگران نوشتند را مطالعه کنید. سعی کنید باگ های برنامه های دیگران را رفع کنید. به این فکر کنید که چطور برنامه هایتان را طراحی کنید که کار کسانی که می خواهند ان را نگهداری کنند آسان تر شود.
o
کلی زبان برنامه نویسی یاد بگیرید. یک زبان که از شی گرایی و کلاس ها پشتیبانی کند (مثل جاوا یا سی پلاس پلاس) ، یک زبان تابعی (مثل لیسپ یا ML) (م: یا Haskell) ، یک زبان اعلانی (مثل پرولوگ یا قالب ها در سی پلاس پلاس) ، یک زبان که از coroutine ها پشتیبانی کند (مثل Scheme یا Icon) (م: امروزه زبان های دیگری از جمله سی شارپ هم coroutine را دارند) و یک زبان که از برنامه نویسی موازی پشتیبانی کند (مثل Sisal) (م: و Erlang)
o
یادتان باشد که ما با کامپیوتر سر و کار داریم. بدانید که چقدر طول می کشد تا کامپیوترتان یک دستورالعمل را اجرا کند، یک کلمه را از حافظه واکشی کند (در هر دو حالت وجود و نبودش در کش) ، کلماتی متوالی را از دیسک بخواند ، یا به یک مکان از دیسک برود (seek) (م: منظور نویسنده آشنایی با معماری کامپیوتر است. آقای Stroustrup خالق سی پلاس پلاس هم روی این نکته تاکید دارند)
o
درگیر استاندارد سازی یک زبان شوید. حالا می تواند کمیته ی ANSI C++ باشد یا استاندارد شخصی تان برای کدنویسی (مثلا این که برای تورفتگی از 2 فاصله استفاده کنید یا 4 تا) در هر حال یاد می گیرید که بقیه چه چیزهایی را در یک زبان دوست دارند و همینطور علت این دوست داشتن را.
تجربه ی چهارم:
چگونه برنامه نویسی را شروع کنیم ؟
چه زبانی را برای برنامه نویسی انتخاب کنیم؟
بهترین زبان برنامه نویسی چیست؟
چگونه برنامه نویسی را یاد بگیریم؟
دلفی بهتر است یا C++ ؟
دات نت بهتر است یا جاوا ؟
php
بهتر است یا ASP.net یا JSP؟
C#
بهتر است یا C++ ؟
ویژوال بیسیک بهتر است یا دلفی؟
و بالاخره J# بهتر است یا C# ؟
اینها سوالاتی است که هر برنامه نویسی در شروع کارش با آنها کلنجار می‌رود. خیلی ها ممکن است سالها فقط روی اینکه چه زبانی را انتخاب کنند وقت بگذارند و هیچگاه برنامه نویسی را شروع نکنند! مثلا خودم حدود یک سال طول کشید تا تصمیم بگیرم روی چه زبانی بیشتر کار کنم ولی خوشبختانه بالاخره شروع کردم. واقعیت این است که همان طور که هر کسی را بهر کاری ساختند، هر زبانی را برایی ساختند! هر زبان برنامه نویسی برای کار خاصی مناسبتر است و باید بسته به نیاز خودمان، زبان مناسب را انتخاب کنیم. واقعیت مهمتر این است که آنچه اهمیت دارد، یادگرفتن یک زبان برنامه نویسی است، چرا که وقتی یک زبان را خوب یاد گرفتید، یادگیری سایر زبانها، به یک سرگرمی مفرح تبدیل می‌شود!
کلا زبانهای برنامه نویسی را به دو دسته مهم می‌توان تقسیم کرد: زبانهای برنامه نویسی دسکتاپ و زبانهای برنامه نویسی وب؛ زبانهای برنامه نویسی دسک تاپ برای تولید نرم افزارهای کاربردی مثل برنامه های آفیس، نرم افزارهای اتوماسیون اداری، نرم افزارهای چند رسانه ای و هر چیزی دیگری که فکرش را بکنید! و بتوان روی کامپیوتر شخصی اجرا کرد، استفاده می شوند. از سوی دیگر زبانهای برنامه نویسی وب به طور خاص برای تولید وب سایتهای پویا و نرم افزارهای تحت وب استفاده می شوند. در هر دو گروه زبانهای متعددی وجود دارد که هر کدام مزایا و معایبی دارد:
زبانهای برنامه نویسی وب
زبانهای برنامه نویسی وب خود به دو دسته سمت خدمتگزار (یا سرور) و سمت کاربر (یا کلاینت) تقسیم می‌شوند. زبانهای HTML، CSS و جاوا اسکریپت زبانهایی هستند که برای طراحی صفحات وب استفاده می شوند و تمام کدها در سمت کاربر اجرا می شود. از سوی دیگر زبانهایی مثل ASP.net، PHP و JSP برای پویا ساختن صفحات وب (مثلا تعامل با کاربر) استفاده شده و به منظور امنیت و سرعت بهتر، در سمت سرور اجرا می‌شوند. برای کسی که قصد دارد برنامه نویسی وب را یاد بگیرد، یاد داشتن CSS و HTML الزامی است ، جاوا اسکریپت مستحب موکد است و یاد داشتن یکی از زبانهای سمت سرور واجب عینی است. از میان زبانهای سمت سرور، مشهورترین، محبوب ترین و امن ترین آنها PHP است، آسانترین آنها ASP.net میکروسافت است و JSP هم که مبتنی بر جاوا است جزء زبانهای حرفه ای به حساب می‌آید! فعلا قصد پرداختن به زبانهای تحت وب نداریم.
زبانهای برنامه نویسی دسک تاپ
در زمینه برنامه نویسی دسکتاپ، زبانهای ++C، دلفی، #C (سی شارپ)، ویژوال بیسیک، جاوا و زبان جدید التاسیس #J مهمترین زبانهای قابل ذکر هستند. در این میان زبانی مثل ویژوال بیسیک شاید از همه ساده تر باشد و برای بسیاری از برنامه های کاربردی مناسب است. لیکن اگر برنامه شما نیاز به سرعت و کارایی بالایی دارد گزینه مناسبی نیست.
دلفی نیز که بر پایه زبان پاسکال شیءگرا بنا شده است، ساده و در عین حال کارآمد است. مهمترین ویژگی دلفی وجود کامپوننتهای متعددی است که روند برنامه نویسی را تسریع و تسهیل می کند. لیکن دلفی محدودیتهایی برای کار با پوینترها دارد که اگر نیاز به انجام کارهای پردازشی سنگین و کار زیاد با حافظه دارید کارتان را با مشکل روبه رو می کند. مشکل دیگر دلفی عدم پشتیبانی از یونیکد است که برای ما فارسی زبانان از نان شب هم واجبتر است.
جاوا یک زبان قدرتمند و کاملا شیءگراست. معمولا نرم افزاریها سراغ این زبان می روند (شاید به دلیل اینکه جزء دروس دانشگاهی آنهاست). مهمترین ویژگی این زبان این است که مستقل از سیستم عامل است و فایلهای خروجی آن روی لینوکس و ویندوز کار می کند. امروزه بسیاری از نرم افزارهای موبایل نیز با J2ME نوشته می شود. فایلهای خروجی جاوا برای اجرا نیازمند سکوی J2RE هستند.
#C
و سکوی دات نت: می توان گفت تقلید بزرگی از جاوا است، چرا که همانند جاوا کاملا شیءگرا بوده و فایلهای خروجی آنها برای اجرا نیازمند سکوی دات نت هستند. #C که امروزه گل سرسبد زبانهای تحت دات نت است در تولید برنامه های تحت ویندوز و ارتباط با پایگاههای داده جزء زبانهای پیشرو است.
و اما C++: فرزند خلف C، زبانی شیءگرا، سریع، حرفه‌ای و سخت. بیشتر برای کارهای پردازشی استفاده می‌شود و غالبا سیستم عاملها توسط C و ++C نوشته می‌شوند، چرا که بر خلاف سی شارپ و جاوا نیازمند سکوی خاصی نیستند و خروجی آنها کد ماشین خالص است. ++C تقریبا قابل حمل (پرتابل) است! یعنی از آنجا که در تمام سیستم عاملها پشتیبانی می‌شود کدهای ++C را می توانیم با اندک تغییراتی (البته گاهی وقتها بیش از اندکی) در هر سیستم عاملی کامپایل کنیم.
از چه سنی برنامه نویسی را شروع کنیم ؟

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

نويسنده : عفت قلعه نوئي

این کاربر 7 مطلب منتشر شده دارد.

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