آی آر نی نی
‏نمایش پست‌ها با برچسب برنامه نویسی. نمایش همه پست‌ها
‏نمایش پست‌ها با برچسب برنامه نویسی. نمایش همه پست‌ها

۱۳۸۸ اسفند ۳, دوشنبه

Ajax چيست؟


اگر برنامه نويس وب هستيد، لابد خبر داريد كه اين روزها همه درباره Ajax صحبت مي‌كنند. بعضي معتقدند Ajax يكي از اركان فني موج جديدي است كه به Web 2.0 معروف شده است و انجمن‌ها و تريبون‌هاي آنلاين مملو از مقالات و اظهارنظرهاي مربوط بهAjax است اگر برنامه نويس وب هستيد، لابد خبر داريد كه اين روزها همه درباره Ajax صحبت مي‌كنند. بعضي معتقدند Ajax يكي از اركان فني موج جديدي است كه به Web 2.0 معروف شده است. بعضي از سايت‌هاي بزرگ مانند ياهو و گوگل هم‌اكنون Ajax را به خدمت گرفته‌اند، انجمن‌ها و تريبون‌هاي آنلاين مملو از مقالات و اظهارنظرهاي مربوط بهAjax است و همزمان تلاش‌هاي وسيعي در جريان است تا اين فناوري جديد همچنان به صورت اپن سورس باقي بماند و انحصاري نشود.

Ajax چيست؟
واژه Ajax با تلفظ <اي‌جكس> يا <اي‌ژاكس> سرنام عبارت Asynchronous JavaScript and XML و به معني <تركيب نامتقارن جاوا اسكريپت و>XML است. ماهيت صفحات وب و پروتكل HTTP به گونه‌اي است كه به طور معمول وقتي درحال وب‌گردي هستيم، به ازاي هر كنش و واكنش ميان ما و سايتي كه در حال كار با آن هستيم، كل يك صفحه وب از نو بارگذاري و تازه‌سازي (refresh) مي‌شود.

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

جادوي اي‌جاكس چيزي نيست جز يك فكر بكر و آن هم تركيب كردن جاوا اسكريپت و XML در قالب يك موجود ‌نرم‌افزاري جديد.

اصطلاح Ajax را اولين بار كارشناسي از شركت Adaptive Path به نام جسي جيمزگرت در مقاله‌اي با عنوان <اي‌جكس؛ رهيافت جديدي در برنامه‌هاي تحت وب> مطرح كرد و خيلي سريع مورد استقبال گسترده برنامه نويسان وب در سراسر جهان قرارگرفت. اعتقاد عمومي اين است كه تاريخچه به‌كارگيري تكنيك مذكور به پيدايش نرم‌افزار Outlook WebAccess و استفاده از فرمان XMLHttpRequest كه مايكروسافت ابداع كرده و در نرم‌افزار اينترنت اكسپلور به‌كار رفته است، برمي‌گردد. اما امروزه اغلب مرورگرهاي مهم و شناخته‌شده (از جمله فايرفاكس) از آن پشتيباني مي‌كنند و ديگر يك فناوري محدود به اينترنت اكسپلورر نيست.

چرا Ajax اين قدر اهميت‌دارد؟
فناوري اي‌جكس جديد است و شگفت‌انگيز به‌نظر مي‌رسد. ولي در حقيقت كل اين شعبده بر اساس فناوري‌هايي بنا شده است كه هم‌اكنون موجودند: جاوا اسكريپت و XML. هر دوي اين فناوري‌ها تا حد زيادي باز هستند و منحصر به شركت خاصي نيستند. به همين دليل اين روزها تمام محافل دنياي برنامه نويسي مملو از مقالات و تحليل‌هايي درباره Ajax است. به عنوان نمونه مي‌توانيد صفحه نخست سايت موسوم به <كانال شبكه برنامه نويسان سان> را بازكنيد.

بيشتر اين صفحه (در زمان نگارش اين يادداشت) به مقالات و مطالب متنوعي درباره Ajax اختصاص يافته است. مجلات برنامه‌نويسي نيز مقالات متعددي در اين زمينه منتشر كرده‌اند و سايت‌هاي معروفي مانند
O' Reilly و xml.com نيز در اين باره مطلب دارند.

بنابراين ظرفيت بالايي براي تبديل اي‌جكس به يك استاندارد جهاني وجود دارد. از اين رو قرار است در تاريخ سيزدهم مارس سمينار مهمي در زمينه Ajax برگزار شود. اگر همين الان به سايت ajaxseminar.com مراجعه كنيد، متوجه مي‌شويد كه علاوه بر طراح اين تكنيك، چندين برنامه‌نويس شاخص از شركت‌هاي بزرگي همچون ياهو در آن شركت خواهند داشت.

اين فناوري از يك جنبه ديگر نيز اهميت دارد. به‌دليل عدم نياز به بارگذاري مجدد كل يك صفحه وب، مقدار داده‌هايي كه لازم است براي تكميل يك Interaction ميان كاربر و سايت مبادله شود، به شدت كاهش مي‌يابد و اين به معني افزايش محسوس سرعت نرم‌افزارهاي تحت وب، سهولت به‌كارگيري اينترفيس‌هاي مبتني بر اي‌جكس و كاربرپسندترشدن آن‌ها مي‌شود. به همين دليل اين روزها اكثر پورتال‌هاي بزرگ (مانند ياهو) مشغول طراحي اينترفيس‌هاي مبتني بر Ajax هستند.

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

حال تصور كنيد اگر فناوري اي‌جكس در مقياس گسترده‌اي مورد استفاده نرم‌افزارهاي تحت وب قرارگيرد. آنگاه افزايش سرعت كار با اينترنت چند برابر خواهد شد. چنين تحولي مي‌تواند اينترنت را به كامپيوتر دوم كاربران تبديل كند. به گونه‌اي كه براي آن‌ها اجراي يك نرم‌افزار از روي وب تفاوت محسوسي با اجراي آن از روي كامپيوتر دسكتاپ نداشته باشد. در اين صورت ممكن است واقعا بخش مهمي از توان پردازشي نرم‌افزارها، چه از نوع دسكتاپ و چه از نوع تحت وب به سيستم‌هاي موسوم به Web Service واگذار شود. از اين رو كساني كه مبتكر و مشوق ايده وب سرويس بوده‌اند، اين روزها انگيزه تازه‌اي براي سرعت بخشيدن به اين فناوري پيدا كرده‌اند و تلاش مي‌كنند دو فناوري اي‌جكس و وب سرويس‌ را به‌يكديگر پيوند دهند و راهكارهاي تازه‌اي بيافرينند.

كدام سايت‌ها از اي‌جكس استفاده كرده‌اند؟
دنياي برنامه‌نويسي وب هنوز درگير هيجانات مربوط به آشنايي با اين پديده است و در حال بررسي مشكلات تكنيكي و هضم و جذب آن در بافت برنامه‌هاي تحت وب مي‌باشد. به همين دليل ميزان استفاده عملي از آن چندان گسترده نيست. اما چون كارايي اي‌جكس ديگر براي همه ثابت شده است، حركت‌هاي بزرگي در سراسر اينترنت به سمت استفاده از اين فناوري در جريان است. از جمله اينترفيس نسخه دوم Yahoo Mail كه به نسخه بتا معروف است و فعلا در دسترس كاربران سرويس غير رايگان ياهو قراردارد، از همين فناوري استفاده مي‌كند كه به زودي اينترفيس جديد در دسترس عموم قرار مي‌گيرد. سرويس Gmail و Google Map نيز از اين فناوري استفاده مي‌كنند.

۱۳۸۸ بهمن ۲۷, سه‌شنبه

برنامه نویسی رایانه


ماهیت كار

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

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

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

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

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

*

محیط كار

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

*

فرصتهای شغلی

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

*

آموزش و ادامه تحصیل

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

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

*

چشم انداز آینده

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