سال‌ها پیش که فیلم پلیس آهنی را می‌دیدم، با خودم فکر می‌کردم چه خوب می‌شد اگر می‌توانستیم آدم‌هایی که مثل سرکار الکس مرفی در پلیس آهنی می‌میرند را تبدیل به انسان-ماشین‌ کنیم و از آن‌ها در انجام کارهای سخت بهره بگیریم.

RoboCop

امروز اما می‌بینم خودم و بسیاری از مردم عملاً بدون آنکه از پیوندهای مکانیکی عضو به بدنمان خبری باشد تبدیل به انسان-ماشین شده‌ایم. دانش ما اکنون به صورت گسترده‌ای وابسته به حافظه‌هایی غیر از حافظه طبیعی‌مان شده است. چند تا شماره تلفن را بدون مراجعه به دفترچه تلفن گوشی همراهتان می‌توانید بگویید؟ من برنامه‌نویس هستم، برنامه‌نویس‌ها به خاطر شغلشان مجبورند چیزهای زیادی را به خاطر بسپارند، اما حالا با کمک اینترنت یا مثلاً نصب MSDN دیگر لازم نیست زحمت به خاطرسپردن را متحمل شوم: هر جا گیرکردم، یک جستجوی کوچک راهگشاست.
این مساله در واقع بد نیست، ما به کمک پایگاه‌های داده‌ای که در حافظه‌‌های الکترونیکی قرار دارند (چه کامپیوتر، چه موبایل، چه اینترنت و …) توانسته‌ایم به شکل غیرقابل باوری توانایی‌هایمان را افزایش دهیم: جستجوی سریع در میان انبوهی از داده‌ها در کمترین زمان ممکن، امکان ذخیره دائم دانش به صورت نامحدود بدون وابستگی به زمان و مکان. این‌ها عالی هستند اما سوالی که پیش می‌آید این است که امروز ما از توانایی‌های ذهنی‌مان در چه جهتی استفاده می‌کنیم؟ ما دیگر مثل پدربزرگ‌هایمان شاهنامه و گلستان را حفظ نیستیم، شاید نیازی هم نباشد چون امروز نرم‌افزار می‌تواند به ما بگوید حافظ چند بار از کلمه” باده” در اشعارش استفاده کرده، کاری که پدربزرگ با همه تجربه‌اش نمی‌توانست انجام بدهد.

وقتی چنین امکانات فوق‌العاده‌ای در اختیار ما قرار می‌گیرد به طور طبیعی ما قادر خواهیم بود از ذهنم و حافظه‌مان برای مسائل مهمتری استفاده کنیم، ولی این مسائل چی هستند؟ اگر تصمیم‌گیری‌های عادی و روزمره را کنار بگذاریم، می‌بینیم مردم دیگر تمایلی به استفاده کردن از مغزشان ندارند. آیا ما داریم تبدیل به آدم‌های چاق و تنبل wall-e می‌شویم؟

wall-e human

ادامه دارد…

پ.ن: این روزها در هیاهوی میکروبلاگ‌ها، مردم می‌خواهند اطلاعات را در کمترین زمان ممکن بدست بیاورند و دیگر پست‌های طولانی خواننده ندارد. به همین خاطر مدتی است نوشته‌هایم در این وبلاگ کوتاه و دنباله‌دار هستند.

محاسبات ابری

ژانویه 7, 2009

پیشتر مطلبی نوشته بودم درباره سیستم عامل وبی (قسمت اول، قسمت دوم). امروز می‌خواهم  آن مطلب را از دید بالاتری با بیان مفهوم محاسبات ابری پیگیری کنم.

cloud

چیزی فراتر از نرم‌افزارهای آنلاین وب2
سیستم عامل وبی، به همراه چند مثال معرفی کردم در واقع یک جور نرم‌افزار آنلاین است. نمونه ساده و ملموس‌تر این جور نرم‌افزارهای آنلاین Google Docs است که به کمک آن یک نسخه آنلاین خوب آفیس در اختیار دارید و می‌توانید فایل‌های متنی، صفحه گسترده و پرزنت‌ها و فرمهای خودتان را بسازید و ویرایش و مدیریت کنید. همه این نرم‌افزارها آنلاین که به کمک فناوری‌های مرتبط با وب 2 پدید آمده‌اند بخشی از یک ایده گسترده‌تر به نام SaaS یا Sofware as a service‌ هستند.

اگر از یک نرم‌افزار به عنوان سرویس استفاده کنید بسیاری از مشکلات نرم‌افزارهای سنتی را نخواهید داشت. Microsoft Office را در نظر بگیرید. فرض کنید شما در سازمان خودتان از آفیس روی کامپیوتر‌های شبکه استفاده می‌کنید. علاوه بر مشکلات نگهداری و به روزرسانی، در دسترس بودن اطلاعات هم مسأله بزرگی است. مایکروسافت دارد در نسخه بعدی آفیس امکانات آنلاین در نظر می‌گیرد. به کمک چنین امکانی، یا با استفاده از سرویسی مثل Google Docs شما دیگر لازم نیست نگران نگهداری و به روزرسانی نرم‌افزار روی کلاینت‌ها یا شبکه خود باشید. در واقع شما سرویس آفیس آنلاین (حالا از هر ارائه کننده‌ای که مایل باشید) را می‌خرید و از آن استفاده می‌کنید، نه نرم‌افزار آفیس را.

مشابه SaaS، ایده‌ای برای بهره برداری از توان سخت‌افزاری به صورت سرویس وجود دارد که آن را HaaS می‌خوانیم. نمونه امروزی چنین سرویسی EC2‌ شرکت آمازون است. توجه کنید که وب هاستینگ‌های امروزی بخشی از HaaS‌ هستند، بخشی که تنها به توان ذخیره‌سازی (و نه لزوماً پردازشی) مربوط است.

به کمک SaaS و Haas‌ و جادوی مجازی سازی محاسبات ابری شکل می‌گیرد. در چنین حالتی شرکت و سازمان‌ها و افراد لازم نیست برای کارهایشان هزینه تأمین سخت‌افزار و نرم‌افزار و شبکه را متحمل شوند.

درست مثل برق
شما برای اینکه از وسایل و تجهیزات برقی در خانه یا محل کارتان استفاده کنید لازم نیست یک ژنراتور یا کارخانه برق در خانه‌تان داشته باشید، بلکه به ازای هزینه مشخصی برق را اجاره می‌کنید. حالا اگر مصارف برقی شما بیشتر و متفاوت‌‌تر باشند مثلاً‌ می‌روید و از خدمات برق صنعتی استفاده می‌کنید.

در محاسبات ابری هم شرکت‌ها و سازمان‌ها و افراد دیگر برای نرم‌افزار، سخت‌افزار یا شبکه پولی پرداخت نمی‌کنند، بلکه توان محاسباتی و سرویس‌های نرم‌افزاری مورد نیازشان را خریداری می‌کنند. این ایده در واقع صرفه‌جویی بزرگ و بهره‌وری زیادی در منابع IT  را به همراه خواهد داشت.

cloud-computing

بدین ترتیب کافی است وسیله شما (پی‌سی، موبایل، تلویزیون، حتی یخچال!) یک رابط نرم‌افزاری (مرورگر) برای استفاده از سرویس‌های آنلاین و یک دسترسی به اینترنت داشته باشد،‌ خواهید دید که قادر هستید به راحتی از توان محاسباتی برای انجام کارهای دیجیتالی خود بهره بگیرید. آن وقت مثال‌هایی که در یادداشت سیستم عامل وبی زدم را بهتر می‌شود درک کرد:

در چنین شرایطی مساله دیگر این نیست که از راه دور لامپ‌های منزلتان را روشن و خاموش کنید، ساعت دیجیتال شما که با یک ارتباط بی‌سیم به شبکه متصل است می‌تواند خودش را با نرم‌افزار قرار ملاقات‌های شما روی سرور سیستم عامل وبی‌تان هماهنگ کند تا به خاطر خواب ماندن قرارتان را از دست ندهید!

چالش‌های محاسبات ابری

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

مایکروسافت و محاسبات ابری

مایکروسافت هم به عنوان یکی از رهبران نرم‌افزاری دنیا به محاسبات ابری نگاه ویژه‌ای دارد.شکل زیر ارتباط محصولات مختلف مایکروسافت با محاسبات ابری را نشان می‌دهد.

خانواده ماسبات ابری مایکروسافت

همچنین مایکروسافت  با معرفی Azure Services Platform در PDC 2008 عزم خود برای حضور جدی در این حوزه را نشان داد:

Azure Services Platform

و دیگر؟
در یادداشت‌های بعدی سعی می‌کنم درباره تفاوت شبکه‌های گرید و محاسبات ابری، مبحث PaaS و همچنین مباحث امنیت و حریم خصوصی در نرم‌افزارهای آنلاین و محاسبات ابری بیشتر بنویسم.

 

wixiدر قسمت قبل اشاره کردم که توسعه ایده سیستم عامل وبی نهایتا به این منجر می‌شود که سیستم عامل‌های دسکتاپی که امروز می‌شناسیم به یک واسطه برای ارتباط با شبکه تبدیل شوند و کاربر بتواند تمام نیازهای خود را از طریق سیستم عامل وبی برطرف کند. کاهش پیچیدگی سیستم عامل‌های دسکتاپ یک مزیت دیگر هم دارد: می‌توان آن را روی هر وسیله‌ای نصب کرد. اگر کارکرد سیستم عامل دسکتاپ در حد ارتباط با شبکه کاهش پیدا کند می‌توان هر وسیله‌ای (device) را به شبکه متصل کرد. در چنین شرایطی مساله دیگر این نیست که از راه دور لامپ‌های منزلتان را روشن و خاموش کنید، ساعت دیجیتال شما که با یک ارتباط بی‌سیم به شبکه متصل است می‌تواند خودش را با نرم‌افزار قرار ملاقات‌های شما روی سرور سیستم عامل وبی‌تان هماهنگ کند تا به خاطر خواب ماندن قرارتان را از دست ندهید!
این مساله همچنین می‌تواند مدل رسانه‌ای فعلی را به کلی دگرگون کند. در واقع یک شبکه تلویزیونی می‌تواند برنامه‌های خود را  به شکل یک ویدئو بلاگ 24 ساعته  روی سیستم عامل وبی شما پخش کند (که هر کاربر متصل امکان تعامل مستقیم با محتوا را داشته باشد) و تلویزیون شما به عنوان وسیله‌ای که قابلیت اتصال به شبکه را دارد، آن برنامه‌ها را دریافت کند و نمایش بدهد.

جستجوپذیری چالش بزرگ سیستم عامل‌های وبی است، در یک سیستم عامل وبی شما می‌توانید هر محتوایی اعم از متن، ویدئو، تصویر، موسیقی، لینک و … را به اشتراک بگذارید. یک نمونه خوب فعلی سرویس wixi است که قبلا در موردش مطلبی نوشته بودم، این اشتراک محتوا، در واقع یک نسخه جهان شمول‌تر از سیستم‌های P2P فعلی. در چنین شرایطی، به دلیل افزونگی اطلاعات، تگ گذاری دیگر جوابگو نیست و باید دنبال روش‌های بهتر و سریعتری برای جستجوپذیر کردن داده‌ها بگردیم.

قسمت بعدی این یادداشت، به بررسی مسائل پیرامون امنیت و حریم خصوصی کاربران در سیستم عامل وبی اختصاص خواهد داشت.

سیستم عامل وبی

ژانویه 23, 2008

Desktoptwoبرنامه‌نویسی وب روز به روز اهمیت بیشتری پیدا می‌کند. این روزها دیگر وقتی از برنامه‌نویسی وب صحبت می‌کنیم، منظور فقط درست کردن یک وب‌سایت نیست. امروز ما تولید کننده برنامه‌های تحت وب هستیم. به عنوان مثال من در یاهو، جیمیل و لایو اکانت دارم. می‌توانم برای ارتباط نرم‌افزارهای مسنجر هر یک از این سه سرویس را جداگانه روی سیستم عامل دسکتاپم نصب کنم ولی راه بهتری هست: استفاده از سرویس‌هایی مثل meebo که به کمکشان خیلی راحت می‌شود به اکانت‌های مختلف دسترسی پیدا کرد. نمونه خوب دیگر desktop two هست. با جادوی ای‌جکس و فلش در این سیستم عامل وبی می‌توانید فایل‌هایتان را آپلود کنید، موسیقی گوش کنید، ایمیل‌هایتان را بخوانید، چت کنید، وبلاگ بنویسید یا فیدهایتان را مرور کنید و … به این نمونه‌ها اضافه کنید ابزارهای آنلاین ویرایش و خلق تصاویر یا نرم‌افزارهای وبی آفیس برای ساخت سندهای مختلف متنی یا ارائه‌ها و صفحه گسترده‌ها. 

نتیجه؟ روزی را خواهیم دید که سیستم عامل کامپیوترهای شخصی صرفا به یک واسط برای اتصال به شبکه تبدیل شده و همه سرویس‌ها و احتیاجات کاربران از طریق سیستم عامل‌های تحت وب تامین شوند. البته در این راه مشکلاتی هم وجود دارند. سرعت اتصال یکی از مهم‌ترین آنهاست. مسلما تحقق چنین رویایی با dial up یا ADSL 128K امکان‌پذیر نیست، ضمن اینکه قطع احتمالی ارتباط می‌تواند باعث بروز مشکلات زیادی برای کاربران شود. مشکل بعدی که البته بیشتر یک چالش فنی است این است که اصولا قابلیت اعتماد و ظرفیت سرویس‌دهی سرورهای موجود چقدر است؟ اگر قرار باشد میلیون‌ها نفر تمامی کارهای دیجیتالی‌شان را از طریق سیستم عامل‌هایی که تحت وب هستند انجام بدهند تا چه اندازه می‌توان روی سرورها حساب باز کرد؟ خوشبختانه معماری موجود شبکه به گونه‌ای است که می‌توان از توان پردازشی میلیون‌ها کامپیوتر برای انجام چنین کارهایی استفاده کرد. نکته مهم دیگر تضمین امنیت اطلاعات و حریم خصوصی کاربران است، حتی اگر بتوان روزی را متصور شد که مشکل ارتباط و نیز قابلیت اطمینان حل شده باشد، امنیت داده‌ها و نیز حریم خصوصی کاربران همچنان به عنوان یک مشکل بزرگ باقی می‌ماند.
این بحث ادامه خواهد داشت.

 

Silverlight

جولای 2, 2007

Microsoft Silverlight دنیای برنامه‌نویسی مایکروسافت با آمدن ویستا و معرفی دات نت فریم ورک 3 تغییر کرده است. یکی از فناوری‌های جدید مرتبط با این دنیای جدید Silverlight است که چیزی در مایه‌های Adobe Flash هست.

نسخه 1.1 این فناوری CLR دات‌نت را هم به همراه دارد که باعث می‌شود که برنامه‌نویسان قادر باشند برنامه‌های Silverlight خودشان را به هر زبان دات‌نتی بنویسند.

Silverlight 1.1 برای ویندوز در نسخه‌های XP SP2 , Server 2003, Vista و همین طور برای MAC OS X 10.4 عرضه شده است و افزونه‌هایی برای IE 6, IE 7 و Firefox 1.5, Firefox 2 و همین‌طور Safari 2.0 دارد.

به کمک Sliverlight می‌توانید با صدا و گرافیک و ویدئو به خوبی کار کنید. برنامه‌های مختلفی تا به حال با Silverlight نوشته شده است. مثلا این بازی که با Silverlight و زبان سی‌شارپ نوشته شده است.

برای نوشتن برنامه‌های Silverlight می‌توانید از Expression Blend یا نسخه بعدی ویژوال استودیو که بتا آن عرضه شده است استفاده کنید.

اگر اهل لینوکس هستید خبر خوب این است که توسعه دهنده‌های پروژه Mono (یک پروژه رایگان و اپن سورس معادل دات نت فریم ورک که به شما امکان نوشتن برنامه‌های دات نت روی لینوکس را می‌دهد) پروژه مشابه Silverlight برای لینوکس را شروع کرده‌اند که فعلا اسمش Moonlight است.

Silverlight 1.1 را از این آدرس می‌توانید دریافت کنید.

به زودی سعی می‌کنم چند پست درباره برنامه‌نویسی با دات‌نت 3 بنویسم.

این روزها در هیاهوی عرضه iPhone یک خبر گم شد آن هم خبر شکسته شدن مجدد سرعت ابر رایانه‌ها توسط محصول جدید IBM یعنی Blue Gene/P.

وقتی در 11 می 1997 کامپیوتر Deep Blue، توانست گری کاسپاروف قهرمان شطرنج جهان را شکست دهد سرعتش 11.38 گیگافلاپ بود. امروز بعد از گذشت ده سال جدیدترین ساخته IBM سرعت ثابتی برابر یک پیتافلاپ دارد!

 P11_kasparov_breakout
گرچه کاسپاروف در سال 96 سه مسابقه را برده بود
ولی بالاخره در می 1997 بازی را به رقیب دیجیتالی‌اش واگذار کرد

یک ابر رایانه می‌تواند به کمک تعداد زیادی پردازشگر محاسبات بسیار بسیار زیادی را در زمان بسیار بسیار اندکی انجام دهد. به عنوان مثال سریعترین ابر رایانه فعلی دنیا یعنی Blue Gene/P می‌تواند در هر ثانیه هزار تریلیون محاسبه را به کمک 294 هزار پردازشگر انجام دهد که تقریبا 100 هزار بار قدرتمندتر از PC های ماست! البته ناامید نباشید چون اصلی هست که می‌گوید ابر رایانه‌های امروز کامپیوترهای معمولی فردا خواهند بود.

کاربردها و محدودیت‌ها

شاید کنجکاو باشید بدانید که چنین توان پردازشی به درد چه نوع کاربردهایی می‌خورد. چون ابر رایانه‌ها دستگاه‌های گرانی هستند (مثلا Blue Gene/P بیش از 93 میلیون دلار قیمت دارد)، دولت‌ها و سازمان‌های خاصی امکان خریداری و استفاده از چنین پدیده‌هایی را دارند و استفاده‌های آن‌ها کاملا مشخص است. ابر رایانه‌ها با توجه به توان بسیار بالای محاسباتی‌شان در فیزیک کوانتوم، پیش‌بینی وضع هوا، تحقیقات جوی (مثلا پدیده گرم شدن جهانی)، انواع شبیه‌سازی‌ها (مثلا شبیه‌سازی انفجار سلاح‌های اتمی) و موارد مشابه که حجم زیاد پردازش داده دارند استفاده می‌شود. البته ابر رایانه‌های ویژه‌ای هم هستند که برای مقاصد خاصی طراحی می‌شوند مثل Deep Blue که برای شطرنج آماده شده بود یا Deep Crack که برای شکستن الگوریتم رمزنگاری DES ساخته شده بود.

 300px-Columbia_Nasa
تصویری از ابر رایانه کلمبیا در سازمان فضایی ناسا

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

برنامه‌نویسی و سیستم عامل ابر رایانه‌ها

یک مورد جالب دیگر در ابر رایانه‌هابحث برنامه‌نویسی و سیستم عامل آن‌هاست. جالب است بدانید برنامه شطرنج Deep Blue که توانست گری کاسپاروف را شکست دهد به زبان C‌ نوشته شده بود. سیستم عامل ابر رایانه‌ها به خصوص در سال‌های اخیر لینوکس بوده است. نمودار زیر میزان استفاده از سیستم عامل‌های مختلف را در 500 ابر رایانه اول دنیا تا سال 2005 نشان می‌دهد. همان طور که می‌بینید سهم ویندوز و مک تقریبا صفر است!

 500px-Top500_OS

در مورد برنامه‌نویسی به دلیل معماری موازی در ابر رایانه و نیاز به تکنیک‌های ویژه برای افزایش سرعت اجرای برنامه هنوز از فرترن (زبان برنامه‌نویسی علمی) بیشتر استفاده می‌شود چرا که بعضی کامپایلرهای فرترن می‌توانند کدی سریعتر از کدهای C++, C تولید کنند.

جنبه دیگر تولید ابر رایانه‌ها بحث رقابت یا بهتر بگویم کل کل تکنولوژیکی بین کشورهاست. مهمترین رقبای این بازار چند شرکت از امریکا و ژاپن هستند.سال 2004 آخرین باری که ژاپنی‌ها اول بودند، ابر رایانه شبیه‌ساز زمین (Earth Simulator) در یوکوهاما سرعتی برابر 35.86 ترافلاپ داشت.

توضیح: ابر رایانه را به جای Supercomputer به کار بردم از ترس اینکه به کار بردن بخش اولش موجب قیلطر شدن اینجا بشود!

پی نوشت: در ایران هم کارهایی در زمینه ابر رایانه شده است. مرکز تحقیقات پردازش‌های فوق سریع در دانشگاه امیرکبیر کارهای تحقیقاتی در این زمینه انجام می‌دهد.

USB Cell

سپتامبر 28, 2006

 این باتری‌های قابل شارژ از طریق USB خیلی جالبند.
در هر وسیله‌ای قابل استفاده هستند و با اتصال به دسکتاپ یا لپ‌تاپ می‌توانید چند صد بار آن‌ها را شارژ مجدد کنید. البته پک آن‌ها 12.99 یورو قیمت دارد که گران به نظر می‌رسد.
واقعیت این است که بازار محصولات USB این روزها بدجوری داغ است طوری که دیگر کسی زحمت فکر کردن برای پشتیبانی از پورت‌های قدیمی‌تر را به خود نمی‌دهد!

پ.ن: اگر علاقمند هستید بیشتر در مورد USB‌ بدانید،‌ USB در چند کلمه را که دوست خوبم مهندس سفیدگران نوشته بخوانید.