واضح آرشیو وب فارسی:همشهری: دانش - راز كثيف كوچك
دانش - راز كثيف كوچك
كيوان فيضاللهي:بيشتر آنهايي كه وبگردي ميكنند، با گوشي موبايل حرف ميزنند و امور بانكيشان را با استفاده از دستگاههاي خودپرداز به راحتي انجام ميدهند، آنقدر همه چيز برايشان عادي به نظر ميرسد كه هرگز به اين فكر نميافتند اين دستگاهها چگونه ميتوانند چنين كارهاي فوقالعادهاي انجام دهند. در واقع بيشتر افراد بر اين باورند كه اين دستگاهها به راحتي و با فشار دادن يك تكمه به كار ميافتند. اما به خاطر داشته باشيد كه اين دستگاهها بدون نرمافزارهايي كه به كامپيوترها ياد ميدهند با شبكه اينترنت ارتباط برقرار كنند، موبايلها سيگنالهاي مخابراتي را بيابند و دستگاههاي خودپرداز تشخيص دهند كدام مشتري بايد پول نقد بگيرد و كدام ميخواهد سپردهگذاري كند، به كلي غيرقابل استفاده خواهند بود. به بيان ديگر نرمافزار، قلب و روح دستگاههاي كامپيوتري است و نحوه نوشتن نرمافزار در چگونگي عملكرد اين دستگاهها بسيار حياتي خواهد بود. به هرحال مشكل اينجا است كه هيچ كتابچه راهنمايي وجود ندارد كه چگونگي نوشتن نرمافزارها را ديكته كند. اساسا ماجرا به اين شكل است كه برنامهنويسها مجموعهاي از دستورها را دنبال هم رديف ميكنند، تا در نهايت دستگاه آن چيزي را انجام دهد كه مشتري انتظار دارد. اما در اينجا برخلاف ديگر رشتههاي مهندسي، هيچگونه قوانيني وجود ندارد كه طراحان نرمافزار و برنامهنويسان از آنها تبعيت كنند. حتي در اين مورد مبناي سنجش تاريخياي نيز در كار نيست كه برنامهنويسان بتوانند براي تشخيص درست كار كردن يا نكردن شيوههايشان، به آنها رجوع كنند. گرادي بوچ (G. Booch)، از كمپاني IBM كه خودش را «باستانشناس نرمافزار» معرفي ميكند، معتقد است ادامه اين روند امكانپذير نخواهد بود. بوچ در مصاحبهاي كه به تازگي با مجله Scientific American انجام داد، علت نياز به اين تغيير و نيز چگونگي پيامدهاي آن در نرمافزارنويسي قرن 21 را مورد بررسي قرار داد.
شما ميگوييد كه در نوشتن نرمافزار «راز كثيف كوچكي» وجود دارد، اشكالي ندارد ما هم از آن آگاه شويم؟
در ديگر رشتهها به ويژه در مهندسي، قواعد و اصولي براي معماري وجود دارد. اما در زمينه نرمافزار كه اساسا تنها در چند دهه اخير توسعه يافته است، اين مسئله به چشم نميخورد. البته تمام سيستمهاي به شدت وابسته به نرمافزار، از نوعي معماري برخوردارند كه در بيشتر اوقات تصادفي است، نه تعمدي. در واقع اين مسئله باعث شده است تا بخش بزرگي از دانش نرمافزارنويسي قبيلهاي شود و بيشتر در سر برنامهنويسها باشد تا در كتابهاي راهنما و مرجع يا منابع قابل دستيابي براي عموم.
با توجه به نبود يك شيوه مدون در نرمافزارنويسي، ما داريم با آتشبازي ميكنيم. اينطور فكر نميكنيد؟
جامعه ما امروز روي نرمافزار ميچرخد. با يك حساب سرانگشتي نرمافزارنويسان در سراسر جهان در هر سال 33 ميليارد خط كد جديد يا اصلاح شده مينويسند كه با توجه به تقاضاهاي جديد در زمينه نرمافزار، به سرعت منسوخ و از رده خارج ميشوند. اگر من دركي از اين معماري نداشته باشم و به تلمبار كردن كدها ادامه دهم، سرانجام به آشفته بازار متعفني تبديل خواهد شد. در واقع خطر اين ركود براي شركتهاي بزرگ ميتواند با پيدا شدن سروكله رقباي كوچكتر و زرنگتري نمود پيدا كند كه براي انجام چيزهاي مختلف روشهاي بهتري ارائه ميدهند. به اين ترتيب شركتهاي بزرگي كه نتوانند با شرايط جديد سازگاري پيدا كنند به راحتي موقعيت پيشتازيشان را در آن بازار خاص از دست خواهند داد. بنابراين، اين مسئله ميتواند يك دليل اقتصادي بنيادي براي معماري نرمافزار باشد. اين مسئله بيش از هر چيز ميتواند براي شركتهاي در حال رشدي مثل گوگل و اي بي(eBay) مشكلآفرين باشد كه كاملا بر نرمافزار مبتنياند، شركتهايي كه در واقع هيچ چيز ملموسي توليد نميكنند و با اين حال نرمافزار در كسب و كارشان نقشي مركزي و اساسي دارد.
مشكل تصادفي بودن نرمافزارنويسي، چقدر بزرگ است؟
توده تراكمي نرمافزار در دنياي امروز بسيار بزرگ است. در واقع با وجود سرمايهگذاريهاي جدي در زمينه نرمافزاري كه در حال حاضر نيز وجود دارد، به راحتي نميتوان اين وضعيت را تغيير داد. براي مثال كمپاني مايكروسافت در برهههايي به اين نتيجه رسيد كه نرمافزار Word آن صلابت لازم را ندارد و تلاش كرد تا آن را از ابتدا مورد بازنويسي قرار دهد. در واقع مشكل اين شيوه عملكرد اينجا است كه آنها به راستي هرگز به نرمافزار Word جديدشان كه با نرمافزار ابتدايي مطابقت داشته باشد، دست نمييابند. به بيان ديگر آنها مجبوراند به عقب برگردند و با همان كدهايي كار كنند كه پيش از اين نيز داشتند.
وب چه تاثيري بر معماري نرمافزار گذاشت؟
وب، ايده بنيادي معماري نرمافزار را تغيير نداد. در واقع وب، بيشتر از آنكه تعيين كند چه سيستمهايي ميتوانند ساخته شوند، نمايانگر ژانر خاصي در معماري نرمافزار است. البته گفته ميشود كه برخي نقيصههاي طراحي نيز در وب وجود دارد كه چندان هم مضر نيستند. نمايش وب و لايههاي معنايي آن به درستي از هم تفكيك نشدهاند كه بايد امكان تغيير آنها بهطور مستقل فراهم شود. يكي ديگر از چالشهاي امروز وب، پروتكل زيربنايي TCP/IP (پروتكل كنترل انتقال/ پروتكل اينترنت) است. در واقع اين پروتكل هرگز براي پشتيباني جريان تصاوير در اينترنت طراحي نشده است، تصاوير بسيار پرطرفداري كه در برخي سايتها مثل يوتيوب به شدت مورد استقبال قرار ميگيرد. زماني كه TCP/IP درخواستي را دريافت و در پي آن پاسخي را آماده ميكند، باعث ايجاد وقفه در جريان اطلاعات ميشود كه اين مسئله موقع نمايش تصاوير به صورت آنلاين مشكلاتي را به وجود خواهد آورد.
براي بهبود نرمافزار چه ميشود كرد؟
بايد روش يكساني در نوشتن نرمافزار وجود داشته باشد كه بتواند روي سيستمهاي مختلف و در شرايط متفاوت كه هريك عوامل متفاوتي را در برميگيرند، اجرا شود. در حال حاضر نوشتن نرمافزار تحت تاثير عوامل فراواني قرار دارد: آيا قرار است نرمافزار روي يك ماشين منفرد با پردازشگرهاي چندگانه كار كند يا روي خوشهاي از ماشينهاي تك پردازشگر؟ آيا تمام كدهاي منبع نرمافزار به يك فايل منفرد روي كامپيوتر ميرود يا شكسته ميشود و به شكل فايلهاي آغازكننده چندگانه، اجرا خواهد شد؟ نرمافزار، اطلاعات متفاوتي كه با آنها سر و كار خواهد داشت را چگونه تعريف ميكند و به كار ميگيرد؟ در واقع اينها پرسشهايي هستند كه پيش از نوشتن هر برنامهاي بايد نخست به آنها پاسخ داده شود. در مهندسي عمران، اگر از كسي بخواهيد خانهاي به سبك عصر ويكتوريا بسازد، نوعي درك ذاتي از آنچه ساخته خواهد شد وجود دارد. اما اگر از برنامهنويسهاي متفاوتي بخواهيد كه براي سيستمي با توان عملياتي بالا مثل آنهايي كه تراكنشهاي مالي را پردازش ميكنند، نرمافزار طراحي كنند، در ميان آنها هيچ توافقي بر سر چگونگي ساخت نرمافزار وجود نخواهد داشت.
آمادگي نسل بعدي دانشمندان علوم كامپيوتر براي اتخاد شيوهاي فراگيرتر در نرمافزارنويسي چگونه خواهد بود؟
با توجه به اينكه شركتها بدون نياز به زمان زيادي، همواره پيشرفت در عرصه نرمافزار را رقم زدهاند، بهتر است كه دانشگاهها به جاي آموزش و بنا نهادن معماري نرمافزار براي استفاده نسلهاي بعدي، نسبت به جبران عقب ماندگيشان اقدام كنند. يكي از بهترين راهها براي رسيدن به اين منظور آموزش برنامهنويسان جوان از طريق خودآموزهايي مثل «آليس» (Alice) است. آليس برنامهاي سه بعدي براي نرمافزارنويسي است كه توسط رندي پاوش (R. Pausch)، استاد علوم كامپيوتر و متخصص طراحي و برهمكنش انسان-كامپيوتر در دانشگاه كارنگي ملون، طراحي و ساخته شده است. اين نرمافزار يك ابزار آموزشي رايگان است كه ميتواند راه آشنايي دانشجوها با مفاهيم پايه در برنامهنويسي را باز كند.
شما به عنوان باستانشناس نرمافزار شهرت داريد. آيا اين عنوان به اين معني است كه مثل اينديانا جونز تكنولوژي اطلاعات، شلاق چرمي به دست به دنبال اشياء ساخته شده به دست بشر ميگرديد؟
من از نزديك با اعضاي هيات امناي موزه تاريخ كامپيوتر برخورد داشتم و به آنها گفتم كه بايد براي نرمافزار نيز موزهاي داير كنند. اگر ما به كد منبع اصلي نرمافزارهايي مثل Word دسترسي نداشته باشيم، بهطور قطع براي نسلهاي آينده مايوسكننده خواهد بود. براي مثال من نميتوانم كد منبع اوليه سيستم عامل مينفريم (پردازنده مركزي) IBM را پيدا كنم، حتي خود كمپاني IBM هم آن را ندارد. در برخي موارد نيز با توجه به مالكيت اختصاصي نرمافزارها و عدمتمايل شركتهاي سازنده به قرار گرفتن آنها در اختيار رقبا، دستيابي به بسياري از نرمافزارها دشوار خواهد بود. اما به هرحال با وجود تمام اين محدوديتها ما مشغول حفاريهاي باستانشناسانه در زمينه نرمافزارها هستيم تا نسلهاي بعد بتوانند آنها را مورد بررسي و اصلاح قرار دهند.
Scientific American, Jun. 18, 2008
سه شنبه 18 تير 1387
این صفحه را در گوگل محبوب کنید
[ارسال شده از: همشهری]
[تعداد بازديد از اين مطلب: 66]