برنامه نویسی را چگونه آغاز کنم؟ قسمت اول

آوریل 21, 2008 at 11:58 ب.ظ | In پرسش و پاسخ | 6 Comments

خب ، این سوالیه که بویژه در 10 سال اخیر در ایران ، بسیاری از دوستان مکررا از من پرسیدن.خیلی ها از من می پرسن: آقا شما به چه زبانی برنامه نویسی می کنی؟ و البته منظوزشون از این سوال اینه که بفهمن که مثلا حرفه ای های امروز به چه زبانی برنامه می نویسن که مثلا اونها هم برن دنبال همون و مثلا حرفه ای بشن!
پیش از اینکه پاسخ سوال اول رو بدم ، طبق عادت ، بزارید یه مقدار روده درازی بعنوان مقدمه بکنم.متاسفانه تا چند سال پیش در ایران اصولا کار گروهی و مدیریت تیمهای نرم افزاری و همچنین مدیریت تولید نرم افزار و چرخه حیات اون و مباحثی از این دست ، موضوعاتی از قبیل Software Life Cycle Management و RUP و UML اقلا در عمل ، بسیار مهجور بوده و عمده کسانیکه در حوزه نرم افزار حتی در سطوح حرفه ای (البته بر اساس تعریف متعارف حرفه ای بودن در ایران که اگر کسی پرسید به اون هم پاسخ میگم) با اون بیگانه بودند.و عملا در این چند سال اخیر اونهم به سبک سایر پدیده های نو در ایران مثل موبایل که بیشتر جنبه تجملاتی و تبلیغاتی و …. داشته ، این یکی هم در این چند سال توسط شرکتها و حتی اونهایی که خودشونرو برترین شرکتهای نرم افزاری ایران میدونن ، تنها جهت کلاس گذاشتن بوده که ازش نام میبرن.مثلا شرکت… میگه من نرم افزارمو با UML مستند سازی کردم و بروش RUP تیمم اونرو تولید کرده و ….
بزارید خلاصه بکنم که هنوز هم در ایران کار تیمی عملیاتی نشده و تنها فرقش با چند سال پیش اینه که قبلا اصلا حرفش نبود و کسی نمیدونست ، اما حالا حرفشو میزنن که بگن ما برتریم چون اینو میدونیم و اسمشو و تعریفشو بلدیم.در همین حد!
حالا برگردیم به پاسخ سوال ، در ایران چون عملا کار گروهی به معنای واقعی خودش منطبق با استانداردهای جهانی انجام نمیشه ، خودبخود ، توسعه یه نرم افزار ، قائم به شخص میشه و طبیعیه که یک شخص نمیتونه در چند زبان برنامه سازی بقدر کفایت مسلط باشه.حالا اینکه این قدر کفایت چیه خودش یه سوال دیگه هست که باز هم اگر کسی خواست بدونه ، کامنت بزاره و بپرسه تا بگم منظورم چیه.بهمین دلیل ، هر کی از راه میرسه به من میگه:آقا شما به چه زبانی برنامه می نویسی؟
اما در تیمهای توسعه ، برنامه نویسهای متعددی وجود دارند که هر کدوم در زبان خاصی تسلط در تمامی جوانبش دارن و علاوه بر این برنامه نویسا ، برنامه نویسهای مباحث ویژه داریم ، مثلا برنامه نویس متخصص توسعه سیستمهای امنیتی که بخوبی مباحث امنیتی رو در اغلب زبانها و پلاتفرمها میدونه ، و یا برنامه نویس بانکهای اطلاعاتی که در اغلب بانکهای اطلاعاتی مسلطه و…. در چنین وضعیتی ، همه اعضای تیم پس از چند سال سابقه کار ، بدلیل تعامل نزدیک ، و جلسات مشترک کاری و تبادل نظرها و دیدن و خوندن کدهای اعضای تیم با ویژگیهایی که گفتم ، نسبت به اغلب محیطهای توسعه نرم افزاری ، نوعی از تسلط و یا بهتره بگم ، دید ، و نگرشی پیدا می کنن که بسیار ارزشمند تر از اون نوعی از تسلط برنامه نویسهای انفرادی نسبت به یک یا چند محیطیه که برنامه نویسی می کنن.
تفاوتش با یه مثال ساده قابل فهم تره.مثلا شما در ایران هنوز می بینید که اجبار داریم که شما باید فورمولها را حفظ باشی ، جدول ضرب را حفظ باشی و …. در حالیکه با وجود ابزارهای الکترونیکی موجود ، نیازی به اینکار نیست و اصولا این ابزارها ایجاد شدن تا انسان وقتشو برای ایندست کارها تلف نکنه و در عوض بره بدنبال موضوعات جدید و بویژه عمقی تر کردن مفاهیم و نه افزایش محفوظات بلا استفاده!
خب من شخصا ، با تاریخ کامپیوتر از ابتدا بزرگ شدم و طبیعیه که با ورود فن آوریهای جدید و محیطهای توسعه جدید ، با اونها آشنا شدم و به فراخور زمان و تنوع پروژه های کاری ، و همچنین تجربه کار تیمی به معنای واقعی ، نمیشه که ما رو که عملا پوسیده شدیم با انسانهای امروزی با بهره هوشی البته بالاتر مقایسه کرد.
من تصور می کنم ، برای شروع برنامه نویسی ، ابتدا باید یک مختصر از تاریخ کامپیوتر برای دانش آموز گفته بشه تا اصولا بفهمه که چرا این تنوع بوجود اومده ، و بفهمه که هر کدوم چه کاربردی دارن.جوابی که من به پرسشگرا می دم همینه: می گم که من نمیتونم بگم در چه محیطی برنامه سازی می کنم ، چون وقتی پروژه ای پیش می آید ما ابتدا یکسری مطالعات مقدماتی و امکان سنجی می کنیم و با توجه به نوع کار ، حجم اطلاعات ، امکانات سخت افزاری ، زمان تحویل پروژه ، ملاحظات امنیتی و کارایی و نهایتا توان مالی سفارش دهنده ، محیط توسعه رو انتخاب می کنیم و تیم توسعه کار تولید رو شروع می کنه.
برای نو آموزان ، همانطور که گفتم ، دونستن تاریخ ضروریه تا حتی در صورتیکه انفرادی کار میکنه بتونه تشخیص بده که کدوم محیط مناسب پروژه هست.
پس از اون ، بهتره که یه سیستم عامل رو برای مقصد انتخاب بکنه.مثلا ویندوز سیستم عامل مناسبی هست.سپس پیش از اونکه اقدام به تولید پروژه بکنه ، باید معماری ویندوز Windows Architecture رو از مستندات SDK اون بخونه و طرح کلی از اون در ذهنش باشه.دونستن کلیات API ویندوز و یا هر سیستم عامل که میخاد مقصد تولید باشه از ضروریاته.سپس بهتره با یه محیط غیر ویژوال مثل Turbo Pascal for windows , و یا Microsoft C++ for Windows برخی از نمونه کدهای موجود در Windows SDK و یا سیستم عامل مقصد رو تجربه کنه تا بتونه فهم عمیقتری از معماری سیستم عامل داشته باشه.
پس از اون ، دانش آموز باید یکی از محیطهای بانک اطلاعاتی و برنامه نویسی اونرو تجربه کنه که شخصا در ایران SQL Server میکروسافت رو برای شروع یادگیری توصیه می کنم.
تازه اینجا ، من شخصا ، میتونم به دانش آموز ، اجازه بدم که بیاد سراغ محیطهای ویژوال که شخصا ابتدا Delphi رو توصیه میکنم و سپس Visual Studio .
حالا بسته به اینکه دانش آموز میخاد که یه توسعه گر Desktop Application باشه و یا Web Application ادامه کار تفاوت داره.
اگر بخاد Desktop Application رو انجام بده ، بهتره که با Visual Studio و همزمان J2EE کار بکنه که البته من در پست دیگری راجع به J2EE و محیطهای مناسبش توضیح خواهم داد ، واگر می خاد که Web Application رو ادامه بده ، باید ابتدا PHP یا Perl و سپس Java Jsp Programming و نهایتا مجوز ورود به Visual Studio .Net داده می شه.
روش فوق یک روش موفقیت آمیز خواهد بود در صورتیکه دانش آموز علاقمند باشه و پشتکار داشته باشه و همچنین اگر در ایران هست ، تحت تاثیر اطرافیان نباشه و با اعتقاد و التزام و علاقه ، کار یادگیری و تمرین رو با پشتکار ادامه بده.

تا کنون 6 نظر داده شده »

RSS برای دیدگاه‌های‌ این نوشته. آدرس دنبالک

  1. من یه برنامه نویس تازه وارد هستم و همونطور که گفتید دوست ندارم عقاید و رفطار نادرستی که اطرافیان برنامه نویس نسبت به پروژه های برنامه نویسی دارن روم تاثیر بذاره…
    اگه یکی بخواد پیشتون آموزش ببینه بهش چی میگید…؟! من یکی از اونا هستم…!

    • رفتار !! علاوه بر این که برنامه نویس تازه واردی هستی در املا هم تازه واردی !!

  2. مطالبي كه نوشتيد نشان از تجربه زياد شما دارد. حال بايد از شما سوال كرد هدف از ايجاد اين سايت چيست؟
    يك ايده:
    1_ در سايت خود يك قسمت بنام عضو گروه اضافه كنيد كه هر كس عضو آن گروه شد سوال خود را بپرسد و براي كل اعضا ارسال و عضو هاي ديگر گروه جواب دهند.
    2_ يك زبان برنامه نويسي مثلاً #C‌را شروع به آموزش كنيد. و تكه برنامه هايي براي درك بهتر مفاهيم اضافه كند
    فعلاً باي اتوماسيون اداري دبيرخانه مشكل پيدا كرد رفتم دبيرخانه

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

  4. چرا جواب دوستان رو نمیدید؟

  5. از اینکه مدتی طولانی از نوشتن پست جدید و یا حتی پاسخ به کامنتها معذور بودم عذر میخام و امیدوارم در روزهای آتی مجددا بتونم زمانی رو برای اینکار فراهم کنم.متاسفانه تنها در فاصله بین پروژه ها که برای خود استراحت قایل میشوم امکان به روز کردن وبلاگ وجود دارد.
    در مورد برگزاری آموزش ، متاسفانه اونقدر درگیر کارهای اجرایی مطالعات و نظارت هستم که فرصت برای اونکار نمیمونه.در مورد پرسش دوست دیگر ، در ارتباط با قرار دادن بخش مورد نظر در این سایت ، مدتی پیش گروهی رو تشکیل دادم تا نسبت به راه اندازی سایتی که مشکلاتی از این دست رو مرتفع بکنه اقدام بکنن و بر اساس برنامه اگر کارهاشون پیش بره تصور میکنم طی یکی دو ماه آتی به بهره برداری برسه.
    در مورد پرسش خانم نازنین ، باید عرض کنم که من همواره دلفی رو بعنوان استارتر برای هر برنامه نویس تجاری توصیه میکنم.
    اما نگارش اون ممکنه متفاوت باشه.فعلا به دوستان ، نگارش 7 رو توصیه می کنم برای شروع و زمانیکه به وضعیت نیمه حرفه ای رسیدید ، در صورت تمایل به ادامه کار با دلفی ، توصیه می کنم با CodeGear 2009 ادامه بدید و اگر نه ، بسته به علاقمندی ، به ویژوال استودیو یا Eclipse بپردازید.


دیدگاه‌تان را بنویسید:

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

وبلاگ روی وردپرس.کام. | Theme: Pool by Borja Fernandez.
Entries and comments feeds.