به نام خدا
کامپیوتر کوانتومی و ادغام زبانهای سطح بالا و سطح پایین
من در این وبلاگ و سایر وبلاگهایم مدام در حال مبارزه با زبانهای برنامه نویسی سطح بالا بودم و مرتبا از زبانهای سطح پایین ( ماشین و اسمبلی) تبلیغ می کردم زیرا به اصالت و ریشه دار بودن زبان ، اهمیت می دادم و معتقد بودم که زبانهای سطح پایین برای تمام اهداف و مقاصد ، کاملا کافی و کاربردی هستند .
اما حالا که از گوشه و کنار فضای مجازی ، اخبار مربوط به ساخته شدن اولین کامپیوترهای کوانتومی تجاری ، به گوش می رسد و شرکتهای آی بی ام و گوگل و یکی دو شرکت چینی موفق به ساخت اولین کامپیوترهای کوانتومی شده اند ، تصمیم گرفته ام استراتژی ام را عوض کنم و بجای کوبیدن زبانهای سطح بالا و غیرت داشتن روی زبانهای سطح پایین ، یک ایده بدهم :
این ایده می گوید که برای آزمایش کارایی زبانهای سطح پایین یعنی ماشین و اسمبلی خصوصا در بحث بیتهای 0 و 1 ، بر روی کامپیوتر کوانتومی که در یک لحظه ی واحد ، علاوه بر 0 و 1 ، حالت ترکیبی از 0 و 1 را نیز بکار می برد ، لازمست که بصورت تئوری تصور کنیم که کامپیوترهای کوانتومی در سطح بسیار وسیعی ساخته شده و در تمام کشورها به کار می روند و حتی مردم عادی نیز می توانند که در کنار کامپیوتر کلاسیک و باینری ( 0 و 1 ) ، حالا از کامپیوتر کوانتومی ( 0 و 1 و ترکیبی از 0 و 1 در یک زمان واحد ) ، نیز استفاده کنند .
اینجا اهمیت زبان ماشین بعنوان زبان 0 و 1 ، صد برابر می شود .
خیلی کنجکاو شده ام ببینم آیا در هنگام سر و کله زدن با میلیونها 0 و 1 در کامپیوتر کوانتومی ، چگونه می توانم با کمک زبان ماشین ، برای ویندوز برنامه بسازم ؟؟؟!!!
آیا چنین کاری ممکن است یا خیر ؟؟
شاید بگویید اینجا دیگه نمی توان روی اصالت زبان ماشین یا اسمبلی تکیه کرد و باید از خوانایی و قابلیت حمل زبانهای سطح بالا نیز استفاده کرد تا شاید بتوانیم بفهمیم که کامپیوتر کوانتومی دقیقا از نظر باینری و معماری و عملکرد ، چه تفاوتی با کامپیوتر کلاسیک دارد .
من نیز تصمیم گرفتم یک آزمایش ذهنی انجام دهم :
فرض می کنم که من یک کامپیوتر کوانتومی دارم که در یک لحظه ی واحد، هر سه حالت یعنی : 0 و 1 و ترکیبی از 0 و 1 را بر روی بیت های انفرادی اعمال می کند.
خب ما در کامپیوتر کلاسیک ، وقتیکه با بیت ها سر و کار داریم این بیتها یا 0 هستند و یا 1 ولی در کامپیوتر کوانتومی ، قضیه پیچیده و گیج کننده می شود زیرا در کامپیوتر کوانتومی ، در یک لحظه ی واحد ، شاهد هر سه حالت هستیم یعنی هم 0 و هم 1 و هم ترکیبی از 0 و 1 اجرا می شود و بجای بیت ، از کیوبیت استفاده می شود و شاید لازم باشد سیستم عاملها و زبانهای برنامه نویسی از اول تا آخر بازنویسی شوند یا اینکه کامپایلرهای جدیدی برای زبان اسمبلی و زبانهای سطح بالا اختراع شود یا اینکه زبان اسمبلی را با زبان های سطح بالا ترکیب و ادغام کنیم .
من در حال تفکر هستم و دارم به این چالش فکر می کنم .
سوال اساسی اینست که آیا کامپیوتر کوانتومی ، با زبانهای ماشین و اسمبلی امروزی ، سازگار است یا اینکه مجبوریم زبانهای اسمبلی و ماشین را از نو بسازیم ؟؟!!!!
مسلما کامپیوتر کوانتومی نیز فقط زبان ماشین را می فهمد و زبانهای اسمبلی و سطح بالا این وسط فقط نقش واسطه را بازی می کنند .
خب حالا زبان ماشین یک کامپیوتر کوانتومی به چه شکلی می تواند باشد ؟؟؟
1- 01010101
2- 11111111
3- 00000000
4- 01؟؟0؟100؟؟
من علامت ؟ را عمدا نوشتم زیرا دقیقا نمی دانم که کیوبیت که قرار است بجای بیت ، به دنیای دیجیتال وارد شود دقیقا چه تفاوتی با بیت دارد .
هرکدام از این 0 ها و 1 ها یک بیت یا کیوبیت محسوب می شوند .
اما کامپیوتر کوانتومی ترکیبی از 0 و 1 و چیز دیگری است که هم 0 است و هم 1 است !!!!!
یعنی در هر کدام از خانه های حافظه که فعلا فقط یک بیت 0 یا یک بیت 1 را داریم ، در کامپیوتر کوانتومی علاوه بر 0 و 1 ، ترکیبی از این دو را نیز داریم که با عقل جور در نمی آید
زیرا 0 یعنی خاموش و 1 یعنی روشن .
حالا این کیوبیت دقیقا چه معنایی دارد ؟؟
هم روشن و هم خاموش ؟؟؟
هم درست و هم غلط ؟؟؟
اینجا خصوصا در رجیسترهای پرچم که در هر زمان واحد فقط یک بیت منفرد و تنها؛ را در خود نگه می دارند به مشکل برخورد می کنیم .
پس ضرورتا باید رجیسترهای پرچم و بطور کلی ، پردازنده ی کامپیوتر از اول طراحی و ساخته شود .
سوال : مگر می شود که یک لامپ برق ، در یک زمان واحد ، هم روشن باشد و هم خاموش باشد و هم ترکیبی از هردو حالت ؟؟؟
کامپیوتر نیز همچون لامپ است .
0 یعنی غلط یعنی False و 1 یعنی درست یعنی True
سوال :
آیا کامپیوتر کوانتومی به حیات زبانهای ماشین و اسمبلی پایان می دهد و زبانهای سطح بالا تا ابد جای این دو زبان را خواهند گرفت ؟؟
آیا کامپیوترهای کوانتومی ، پردازنده های سطج بالا و اسمبلی سطح بالا دارند که خوانایی و قابلیت حمل دارد ؟؟؟!!!
آیا کامپیوترهای کوانتومی ، به جنگ بین زبانهای سطح پایین و زبانهای سطح بالا خاتمه می دهند و این دو گروه را با همدیگر ادغام می کنند ؟؟؟
دقیقا چه اتفاقی رخ می دهد و تکلیف برنامه نویسان چه می شود و برنامه ها به چه شکلی باید نوشته و تولید شوند ؟؟؟
این سوالات باعث شد که من ایده ی جدیدی در ذهنم شکل بگیرد و آن اینکه زبانهای سطح پایین یعنی ماشین و اسمبلی را با زبانهای سطح بالا یعنی از زبان فرترن و کوبول گرفته تا بیسیک و پاسکال و سی و سی پلاس پلاس و سی شارپ و جاوا و پایتون و... را با هم ادغام کنیم و یک زبان جدید بسازیم که تمام مزایای هردو گروه را یکجا داشته باشند .
دقیقا شبیه به ورزشهای رزمی ترکیبی که امروزه طرفداران بسیاری دارد ، شاید زبانهای برنامه نویسی ترکیبی نیز بتوانند در آینده طرفداران فراوانی برای خود دست و پا کنند !!
در بحث زبانهای طبیعی ، ما شاهد هستیم که مثلا زبان فارسی باستان با زبان عربی و زبان انگلیسی و زبان روسی و سایر زبانها ترکیب شد و امروزه زبان فارسی یک زبان ترکیبی و چند منظوره است و بسیاری از لغات زبانهای عربی و انگلیسی و فرانسوی و روسی و چینی و هندی و .... در زبان فارسی وجود دارند و تمام این زبانها ، شناسنامه ی ایرانی دریافت کرده اند و حذف این لغات و به اصطلاح ، پالایش زبان فارسی یا ایجاد زبان پاک یا فارسی سره ، می تواند کاخ عظیم زبان فارسی را در هم بریزد و نابود کند .
خب حالا که فهمیدیم که زبانهای طبیعی و انسانی از یکدیگر الهام و تاثیر می گیرند و همدیگه را کامل می کنند و از همدیگه ، لغات جدید را وام گرفته و به این لغات ، شناسنامه می دهند پس بهتر است که زبانهای برنامه نویسی نیز به همین روش با یکدیگر ترکیب و ادغام شده و لغات و کلمات کلیدی همدیگه را بپذیرند و بکار گیرند .
من قبلا ، اسمبلی سطح بالا را بعنوان راه حل نهایی ، معرفی کرده ام .
بنظر می آید که اسمبلی سطح بالا این توانایی را داشته باشد که همزمان هم زبان ماشین باشد هم زبان اسمبلی و هم زبانهای سطح بالا !
یعنی زبان اسمبلی و زبانهای سطح بالا یا یکدیگر دوست شوند و با یکدیگر تبادل دانش و تبادل فن نمایند و از مزایای همدیگر بهره مند شوند تا بتوانند با کامپیوترهای کوانتومی ، سازگار شوند .
این حرف اصلا به این معنا نیست که زبان اسمبلی در مقابل کامپیوتر کوانتومی ، رنگ می بازد و خودش را بازنشسته می کند !!
خیر . من کماکان معتقدم که زبان اسمبلی هنوز هم این قابلیت را دارد که همچون آب ، در هر ظرفی که ریخته شود شکل همان ظرف را در خود بگیرد . یعنی انعطاف پذیری .
انعطاف پذیری ، مانع از جمود فکری شده و ذهن ما را باز می کند و بر قدرت و بصیرت ما می افزاید .
همانطور که ما انسانها باید تغییر را بپذیریم و انعطاف پذیر باشیم و علم دیگران را به علم خود اضافه کنیم و فنون دیگران را به فنون خودمان بیفزاییم ، زبانهای برنامه نویسی نیز باید همین رفتار را سرلوحه ی خود نمایند و فنون و تاکتیکهای خود را در هم ادغام نمایند و به یک زبان نهایی و قدرتمند و همه منظوره و انعطاف پذیر تبدیل شوند تا بتوانند با معماری عجیب کامپیوترهای کوانتومی ، سازگار شوند .
صرف نظر از اینکه غولهای فناوری ، به زبان اسمبلی اهمیت بدهند یا ندهند ، من کار خودم را انجام می دهم و سعی می کنم در ذهن خودم ، زبان اسمبلی را با زبانهای سطح بالا ترکیب کنم تا ببینم آیا انقلابی بزرگ در دنیای کامپیوترها و محاسبات رخ می دهد یا خیر .
من کماکان معتقدم که اسمبلی از هر نظر برای ما کافیست ولی بحث قابلیت فهم و قابلیت حمل و خصوصا سازگاری با زبان اسمبلی کامپیوتر کوانتومی ، باعث می شود که من این ایده ها را مطرح نمایم :
1- طراحی کامپایلرهای جدید زبان اسمبلی برای سازگاری با کامپیوترهای کوانتومی
2- ادغام زبان اسمبلی کلاسیک با زبان اسمبلی کوانتومی
3- ادغام زبان اسمبلی کلاسیک با زبانهای سطح بالای کلاسیک
4- اسمبلی سطح بالا و قابل حمل
5- پردازنده ی قابل حمل و سطح بالا !!!
بهرحال من خودم خیلی دوست دارم که هرچه سریعتر بتوانم یک کامپیوتر کوانتومی بخرم و زبانهای ماشین و اسمبلی اش را مطالعه کنم و با زبان اسمبلی و ماشین کامپیوترهای کلاسیک ، مقایسه نمایم و شباهتها و تفاوتهای معماری این دو مدل کامپیوتر را کشف نمایم .
البته باید بگویم که اینجا ما با بزرگترین چالش یعنی همان کیوبیت مواجه هستیم که گویا یک نوع خاص از بیت است .
این کیوبیت ، خیلی مبهم و گیج کننده است و معلوم نیست در سطح باینری و زبان ماشین و سخت افزار و پردازنده ، چطوری می توانیم آنرا تفسیر نموده و مستقیما بکار گیریم .
باید بتوانیم شباهتها و تفاوتهای بین بیت و کیوبیت را درک کنیم .
شاید اینطوری بتوانیم بسیاری از ابهامات ذهنی را حل کنیم .
شاید با ورود رسمی کامپیوترهای کوانتومی به دنیای فناوری اطلاعات ، لازم باشد تمام دروس رشته ی مهندسی کامپیوتر ، از اول تا آخر بازطراحی و بازنویسی شوند !!!
علی الحساب که کامپیوترهای کوانتوم در حالت بالقوه و تئوری هستند و هنوز جنبه ی تجاری و کاربردی و بالفعل را بدست نیاورده اند اما باید از همین حالا خودمان را با یک دنیای جدید و مرموز و شگفت انگیز یعنی کوانتوم ، سازگار نماییم .
باید بتوانیم تصور کنیم که حضور کامپیوتر کوانتومی در خانه های مردم یا در ادارات و سازمانها و شرکتها ، باعث بروز چه رخدادهایی می شوند و آینده ی دنیای فناوری اطلاعات به شکلی خواهد بود .
بهرحال من دارم روی ادغام زبانهای برنامه نویسی سطح پایین ( ماشین و اسمبلی ) و زبانهای سطح بالا ، فکر می کنم و به محض اینکه منابع معتبر و رسمی و دقیق از معماری و باینری و زبان ماشین و اسمبلی کامپیوترهای کوانتوم را بدست آوردم مطالعه می کنم و آنوقت باید ببینم که این ایده ی ادغام ، حقیقتا به کار می آید یا خیر ؟؟؟
شاید زبانهای ماشین و اسمبلی کامپیوتر کوانتومی ؛ خودش شخصا مشکلات و ناسازگاریهای بین زبانهای سطح پایین و سطح بالا را رفع کند .
بهرحال تمام وسایل الکتریکی از لامپ ساده گرفته تا سوپرکامپیوترها و حتی کامپیوترهای کوانتومی ، بطور طبیعی دارای زبان ماشین هستند و یعنی همان حالت 0 و 1 همیشگی را بطور پیشفرض در خودشان دارند .
بنابراین ، زبانهای ماشین و اسمبلی عمر جاودانه دارند و فرقی نمی کند که بیت های این زبانها ، کلاسیک باشد یا کوانتومی !!!!
توجه داشته باشید که زبان ماشین ، یک زبان ازلی - ابدی است و هرگز نمی میرد و منسوخ نمی شود و مادر تمام زبانهای برنامه نویسی و انسانی است .
زبان ماشین ، یک فلسفه و ایدئولوژی و جهان بینی است و بسیار فراتر از یک زبان برنامه نویسی می باشد .
بنابراین ، زبان ماشین شامل همه چیز می شود و تمام موضوعات را در بر می گیرد و یک زبان جهانی و بین المللی است .
اگر تمام زبانهای برنامه نویسی و انسانی از بین بروند ، زبان ماشین هرگز از بین نمی رود و عمری جاودانه دارد . فقط ممکن است با ورود کامپیوترهای کوانتومی ، قدری تغییر کند و مدرنیزه و مکانیزه شود!!!
امیدوارم هرچه زودتر شاهد ورود کامپیوترهای کوانتومی به دنیای واقعی باشیم تا بتوانیم معماری و زبان ماشین این نوع کامپیوترهای مبهم و قدرتمند و سریع و هوشمند را تفسیر نموده و بکار گیریم و بسیاری از مشکلات و محدودیتهای کنونی دنیای کامپیوتر و محاسبات ، از بین بروند و کامپیوتر و محاسبات ، آسان و ساده و قابل فهم و عمومی شود .
به امید آن روز