Friday, December 14, 2012

সমঝতা

নিজের সাথে সমঝতায় আসতে চাচ্ছি। তার জন্য কী কী স্কিল দরকার ভাবি-

১)  টাস্ক সুইচিং দ্রুত করতে পারতে হবে।
২) মিউজিক, ওয়াটারকালার, ফ্রেঞ্চ। এই তিনটা জিনিস শিখতে চাই। সমস্যা হলো, আজকাল চিন্তা কম করছি বলে মনে হচ্ছে। গরুর মত খেটে লাভ নেই।
৩) লেখালিখি, নিয়মিত বিরতিতে চলতে থাকবে। তবে ফিকশন লেখা হয়ে উঠছে না। কিশোরসাহিত্য লেখা দরকার। দেখি কী করা যায়। আমার মনে হয়, টাস্ক সুইচিং এর ইফিসিয়েন্সি বেড়ে গেলে এসব করার সময় মিলে যাবে হাতে।
৪) বেশ কিছুদিন বইটার নতুন কোনো চ্যাপ্টার লেখা হয়নি। প্রোগ্রামিং নিয়ে চ্যাপ্টারটা শেষ করে ফেলবো।
৫) আমি বুঝতে পেরেছি, আমার সব সৃষ্টিশীল চিন্তাভাবনাগুলো আসে এক ধরনের নীরবতা থেকে। পাঠকদের সাথে বেশি ইন্টারঅ্যাকশন এতে বিঘ্ন ঘটায়। এছাড়াও লেখা সম্পর্কে পাঠকের মন্তব্য নিয়ে বেশী অ্যাটাচ্ড হয়ে পড়লে পরবর্তী সৃষ্টি বিঘ্নিত, বা বিলম্বিত হয়।
৬) আমাকে বুঝতে হবে আমি একজন ব্যস্ত মানুষ।
৭) কোনো একটা কিছু ঠিকঠাক সম্পন্ন করার পরে সে বিষয়ে অন্যদের মন্তব্য কনসিডার করতে হবে। কিন্তু ইমিডিয়েটলি নয়। এক মাস পরে (শুরুতে এই বিলম্ব ১ সপ্তাহ রাখার চেষ্টা করবো)। কারণ তাৎক্ষণিক ভাবে ফিরে তাকালে, নিজের দৃষ্টিতেও লেখাটাকে নিরপেক্ষভাবে যাচাই করা সম্ভব হয় না। পাঠকের যুক্তিপূর্ণ সমালোচনাও তখন খুব একটা ফলপ্রসু হয় না বলে মনে করি।
৮) একটা দিন অনেক অনেক বড় সময়। কিন্তু দিনের দৈর্ঘ্য সময়ের এককে মাপা বোকামি।
৯) লেখার গতি বাড়াতে হবে। আমি "দুই হাতে লেখা" নামে যে সিরিজটি চালাতাম সেটা অনেক সাহায্য করেছে। দ্রুত লিখলে লেখায় কোহেরেন্স থাকে। লেখায় কৃত্রিমতা ঠাই নেওয়ার সুযোগ পায় না। গল্প তার নিজের প্রাণের টানেই নানান মোড় নেয়। লেখাটা তখন আর খাটুনির কাজ মনে হয় না। দারুণ একটা অভিজানের মত হয়। কারণ নেক্সট কী আসছে সেটা হয়তো আমি নিজেও জানি না।
১০) "আবজাব" সিরিজটা আমাকে খুব সাহায্য করেছে এক সময়। মনটাকে মুক্ত করতে আবজাব যা মনে আসে, নির্দিধায় লিখে ফেলার বিকল্প নেই।
১১) গণিত। গণিতে পিছিয়ে পড়ছি। এরও মূল কারণ আমি যথেষ্ট ভাবছি না, তাই। ভাবলে ভাবনার ক্যাপাসিটিও বাড়ে।
১২) আর কোয়ান্টাম জগৎএ এখনো নিজের পরিচয় স্পষ্ট করতে পারিনি। আমার সুপারভাইজর মনে হয় কনফিউজড। এই কনফিউশন অনতিবিলম্বে দূর করতে হবে।

এই তালিকার টিপ্সগুলো ভালো লাগলো, এখানে যোগ করে রাখি
http://writersalmanac.publicradio.org/index.php?date=2012/05/30

Monday, November 19, 2012

প্রতিটি শব্দ থেকে চিহ্নিত করার উপযুক্ত বর্ণ, বর্ণাংশ বা বর্ণসমস্টি পৃথকীকরণ

বাংলার ক্ষেত্রে আমাদের চ্যালেঞ্জ ছিলো মাত্রা নিয়ে। আমাদের স্ক্যান করা পাতাটি দেখি,


এভাবে মাত্রা দিয়ে শব্দের অক্ষরগুলো যুক্ত থাকে বলে তাদেরকে কম্পিউটারের পক্ষে আলাদা করা খুবই মুশকিল হয়ে যায়। ইংরেজী বা ল্যাটিন হরফে লেখা ভাষায় সে সমস্যা নেই। তো এই সমস্যা থেকে উত্তরণের জন্য গত পর্বে আমরা দারুণ একটা বুদ্ধি করে শব্দের মাত্রাগুলো নির্ণয় করে ফেলেছি। কিন্তু গত ধাপে প্রাথমিক ভাবে পাওয়া মাত্রাগুলোতে তখনও খুত ছিলো। ছবিতে দেখি 

এ পর্বে আমরা সেই খুত দূর করতে পেরেছি। ব্যাপারটা এক ধরনের বাছাই এবং শূন্যস্থান পূরণ এর মিশ্র প্রক্রিয়া। ফলাফল হিসাবে একেবারে সলিড মাত্রাগুলো পেয়েগেলাম। নিচের ছবিতে বক্স দিয়ে শব্দগুলো অবস্থান আর মোটা দাগ দিয়ে তাদের মাত্রার অবস্থান দেখানো হয়েছে। 

এখন যেহেতু কম্পিউটার প্রতিটি শব্দের মাত্রা চিনে গেছে। সেহেতু স্রেফ সেগুলো মুছে ফেললেই মাত্রা সঙ্ক্রান্ত জটিলতা কাটিয়ে ওটা যাবে। দেখা যাক, মাত্রা মুছে ফেলার পরে কম্পিউটার পৃষ্ঠাটিকে কেমন দেখছে। 


আমরা যেহেতু আগেই প্রতিটি শব্দের অবস্থান সুনির্দিষ্টভাবে নির্ণয় করে ফেলেছি। সেহেতু এখন, এই মাত্রা মুছে ফেলা প্রতিটি শব্দ ধরে ধরে সেখান থেকে চিহ্নিতকরণের উপযুক্ত চিহ্ন (মানে ফিচার) গুলো আলাদা করতে পারবো। দেখুন ফলাফল আসলো কেমন। 



চমৎকার! এবার স্রেফ এই খুদে খুদে টুকরোগুলোকে, আর্টিফিশিয়াল নিউরাল নেটওয়ার্ক, অথবা সাপোর্ট ভেক্টর মেশিন অথবা আমার নিজস্ব একটা অ্যালগরিদম এর মধ্যে ছেড়ে দিলেই হবে। তবে একেবারে নতুন কোনো অ্যালগরিদমও আবিষ্কার করার প্রয়োজনীয়তা দেখা দিতে পারে। ইন ফ্যাক্ট আমার পরিকল্পনা হচ্ছে একই সঙ্গে এসবের একটা মিশ্র পদ্ধতি প্রয়োগ করা। এখন আর সে সব বর্ণনায় না যাই।

খেয়াল করলে দেখা যাবে। ই-কার বা ঈ- কার কে চিহ্নিত করা হয়নি। আসলে ওগুলোও করা হয়ে গেছে। স্রেফ অনেক রাত (আসলে ভোর) হয়ে যাওয়ায় ওসব আর গুছিয়ে পোস্টে দিচ্ছি না। এ ছাড়াও "তে",  "দৃ" এর মত কিছু বর্ণ সমষ্টি এক সঙ্গে রয়ে গেছে। এতে কোনোই সমস্যা নেই। কম্পিউটারকে শিখিয়ে দিতে হবে। যে ঐ ধরনের আকার দেখলেই সেটাকে সে একক বর্ণ না ভেবে নির্দিষ্ট বর্ণসমস্টি হিসাবেই ভাববে। 

যাই হোক, কাজটা সহজ হবে না। অবশ্য সহজ হলে করে মজা পেতাম না। 

Sunday, November 18, 2012

শব্দের মাত্রা নির্ণয়

আগের ধাপে আমরা স্ক্যান করা পাতা থেকে শব্দগুলোকে আলাদা করতে পেরেছি। বাংলা শব্দে বর্ণগুলো যেহেতু মাত্রা দিয়ে যুক্ত থাকে, সেহেতু বর্ণগুলোকে সহজেই আলাদা করা যায় না। ইংরেজী বা ল্যাটিন হরফের ক্ষেত্রে এই ঝামেলা নেই। এখন আমরা যদি শব্দ থেকে কোন দাগটি মাত্রা তা নির্ণয় করতে পারি তাহলে পরে বর্ণগুলোকে আলাদাভাবে চিহ্নিত করতে সুবিধা হয়। কারণ মাত্রাটা বাদ দিয়ে ফেললে, ইংরেজীর মত করেই বর্ণগুলোকে আলাদা করা সম্ভব হবে!

তো এই মাত্রা নির্ণয় করতে কি করলাম একটু আগে, সেটাই এখানে লিখি।

আমাদের স্ক্যান করা পাতাটা এমন

এখান থেকে আগের পর্বে আমরা কিছু ঘসা মাজা করে একটা ইনভার্টেড সাদাকালো ছবি তৈরি করেছিলাম। ঐ ছবিটাই এই ধাপের ইনপুট।


মাত্রা নির্ণয়ের অপারেশনটা পরে প্রতিটি শব্দের জন্য আলাদা আলাদা ভাবে করবো। আপাতত দ্রুত প্রোটোটাইপ বানানোর জনে। পুরো ছবিতেই এক সঙ্গে করছি। ব্যাপারটা স্রেফ একটু চালাকি। যেমন এই ছবিটাকে যদি ধরে ডানেবামে ঘসাঘসি করি তাহলে মাত্রার অংশটা নিজের সাদার উপরেই থাকবে। তাই তার গাড়ত্ব কমবে বাড়বে না। ওদিকে মাত্রা ব্যতিত অন্য দাগগুলো যেহেতু আনুভূমিক নয়, এরা ডানেবামে ঘসা খেলে ঝাপসা হয়ে যাবে। আমরা এখানে আনুভুমিক ভাবে ৯ পিক্সেল পর্যন্ত ঘসাঘসি করলাম ফলে ছবিটা দাঁড়ালো অনেকটা এমন,


ছবিটার উপর ক্লিক করে বড় করে দেখলে লক্ষ্য করবেন যে মাত্রার অংশ অন্য অংশের তুলনায় বেশি সাদা। এখন একটা নির্দিষ্ট থ্রেশহোল্ডের নিচে সবকিছুকে কালো করে দিলে পাবো


কী চমৎকার ভাবে মাত্রাগুলো পেয়ে গেছি! এখন বোঝার জন্য আমাদের আগের ইনপুটের ছবির উপর এই মাত্রাগুলো ভিন্ন রঙএ আঁকি।


বাস! হয়ে গেলো। আমরা আগের ধাপে প্রতিটি শব্দকে লাল বাক্স দিয়ে ঘিরে দিয়েছিলাম। এখন এই পার্পল দাগগুলো পেয়ে যাওয়ায়, পুরো মাত্রা ঠিক ঠিক বের করে ফেলবো। টুকি টাকি খুত এখানে কোনো বাধাই সৃষ্টি করবে না।

তার মানে এখন এই মাত্রাজ্ঞান ব্যবহার করে শব্দের বর্ণগুলোকে কেটে ফেলতে হবে। আর তার পর সেই কাটা অংশগুলো চিহ্নিত করতে পারলেই হয়ে গেল! আমাদের "দৃশ্যমান অক্ষর চিহ্নিতকরণ প্রকল্প" তার প্রোটো টাইপ স্তর পারকরবে তখন। 

তবে সাধারণ ব্যবহারকারীদের জন্য সফ্টওয়্যার হিসাবে তৈরি করতে যেতে হবে অনেকদূর। অত দূর আমি ভাবতে পারি না। 

এখন শুধু একটাই চিন্তা। পরের ধাপে কী করা যায়! 

Saturday, November 17, 2012

স্ক্যান করা বইয়ের পাতা থেকে শব্দগুলোর অবস্থান নির্ণয়

আগের পোস্টে দেখেছি কীভাবে স্ক্যান করা পাতাকে ঘুরিয়ে লাইনগুলোকে আনুভূমিক করা যায়। আজকের ধাপে আমরা প্রতিটি শব্দকে আলাদা আলাদাভাবে কেটে ফেলতে চাই। পরে একটা একটা করে শব্দ নিয়ে কাজ করা যাবে।

এ কাজে ইনপুট হিসাবে আমরা ব্যবহার করছি একটা সত্যিকারের বইয়ের স্ক্যান করা পাতা। শাহরিয়ার কবিরের লেখা জাহানারা ইমামের শেষ দিনগুলি বইটির ৬১ তম পৃষ্ঠার প্রথম প্যারা।

পাতাটি দেখতে বেশ ঝক ঝকে হলেও আসলে এর মধ্যে অনেক রকম খুত আছে, যেটা আমাদের কম্পিউটারকে বোকা বানিয়ে দিতে পারে। সেগুলো কেমন? একটু হিস্টোগ্রাম ইকুয়ালাইজ করে দেখি।


এটা করার ফলে, যদিও অনেক রকম খুত চোখে পড়ছে, একই সঙ্গে মূল লেখাটা আরো গাড় হয়ে গেছে। তাই আমরা এর থেকে শুধু গাড় পিক্সেলগুলো রেখে বাকি সব ফেলে দেব। কাজটা করব থ্রেশহোল্ড ফাংশনের সাহায্যে। একই সংগে ছবিটির রঙও উল্টে করে ফেলবো। 


সবকিছু একেবারে সাদা কালোয় নিয়ে এলাম। এখানে পিক্সেলগুলোর মান হয় ২৫৫ (সাদা) অথবা ০ (কালো)। এখন লাইনগুলো আলাদা করা একেবারে সহজ।

এই ছবিতে প্রতিটি লাইনের উপরে আর নীচে একটা করে দাগ দেওয়া হয়েছে। কাজটা করতে পুরো ছবিটাকে একটা ম্যাট্রিক্স ভেবে নিয়ে সেটাকে এর প্রস্থের সমান একটা বিশেষ ভেক্টরের সাথে গুন দিইয়েছি। ভেক্টরটির প্রতিটি ইলিমেন্ট ১। ফলে আমরা আউটপুটে এই ছবির উচ্চতার সমান একটা ভেক্টর পাবো, যার প্রতিটি ইলিমেন্ট ঐ লাইন বরাবর কত্টি পিক্সেল সাদা সেটা নির্দেশ করে। সেখান থেকে লাইনগুলো বোঝা যায়। একইভাবে শব্দগুলোও নির্ণয় করে ফেলি।


এখন কোথাথেকে কতটুকুর মধ্যে শব্দগুলো আছে তা আমরা পেয়ে গেছি। এখন মূল ছবিতে শব্দগুলোকে লাল রঙের বক্সে বন্দী করে ফেলি। 

চমৎকার! সহজ কাজগুলো মোটামুটি ভালোভাবেই হয়ে গেল। এখন ইন্টারেস্টিং ব্যাপার স্যাপার শুরু হবে। মানে প্রতিটি শব্দ থেকে বর্ণগুলো আলাদা করতে হবে। এবং নির্ণয় করতে হবে কোন বর্ণটি আসলে কী। আমরা ইংরেজী তে এ ধরনের প্রোগ্রাম দেখেছি। ওদের লেটারগুলো আলাদা আলাদা থাকে বলে কাজ অনেক সহজ হয়ে যায়। আমাদের শব্দে বর্ণগুলো মাত্রা দ্বারা যুক্ত। ফলে এদেরকে আলাদা করতে কম্পিউটারের কৃত্রিম বুদ্ধিমত্তাকেও অনেক বেশি বুদ্ধিমান হতে হবে।

ভাবতেই ভালো লাগছে যে সেই বুদ্ধিটা দিতে হবে আমাকেই!

সংযুক্তি: থ্রেশহোল্ডের মান পালটে একই কোড দিয়ে বর্ণগুলোকেও আলাদা করা যায়। যদিও তখন খুব একটা রোবাস্ট হয় না। এখানে তেমন একটা টেস্ট কেসের রেজাল্ট টাঙ্গিয়ে রাখি।

Wednesday, November 14, 2012

আঁকা-বাঁকা ভাবে স্ল্যান করা পাতা সোজা করার পদ্ধতি

স্ক্যান করার সময় পাতা একটু এদিক ওদিক কাত হয়ে  যেতেই পারে।
মনে করি আমাদের স্ক্যান করা পাতাটি এমন।

এখন, এই অবস্থায় স্ক্যান করা পাতা থেকে টেক্স্ট রিকগনিশন করা মুশকিল হয়ে যাবে। ওদিকে কম্পিউটারের কাছে একটা ছবি কিছু কালো আর সাদা ফোটার সমষ্টি ছাড়া কিছুই নয়। সে কীভাবে বুঝবে কোন দিকে কতটুকু ঘোরালে লেখাগুলো সোজা হবে?

এটা করতে আমরা ব্যবহার করবো ডিস্ক্রিট ফুরিয়ার ট্রান্সফর্ম। তখন যে ফলাফল পাওয়া যাবে সেটা দেখতে এমন।
দেখুন মাঝ খানে একটা সাদা দাগ দেখা যাচ্ছে। ওর মানে হলো ঐ বরাবর হাটলে বারবার সাদা থেকে কালোতে বদলায় পিক্সেলগুলো। এই দাগটা কতডিগ্রি কোনে আছে বের করতে পারলেই ততটুকু উলটো ঘুরিয়ে নিলে কাজ হয়ে যাবে। কিন্তু এই ছবিতে নানান রকম হিজিবিজি ঝিরিঝিরি। এতকিছুর মধ্যে কোন সাদা বিন্দুগুলো কাজের সেটা কম্পিউটারের পক্ষে বোঝা মুশকিল। বাড়তি বিন্দু গুলো দূর করতে তাই, আমরা একটা এজ ডিটেকশন অ্যালগরিদম চালাবো। এই অ্যালগরিদম ছবির যেসব অংশ বেশি বেশি সাদা সেগুলোকে দাগ দিয়ে ঘিরে ফেলে, আর বাকি অংশ মুছে কালো করে দেয়। ফলাফল দাঁড়ায় এমন।  অনেকটা ফটোশপের ম্যাজিক সিলেক্টর টুলের মত। এখানে বলে রাখি, ফুরিয়ার ট্রান্সফর্ম করার সুবিধা হলো, ছবিতে যদি কাটা ছেড়া, পোকামাকড়, কাগজে চায়ের কাপের দাগ, ইত্যাদি থাকে তার পরেও, ঠিকই আমাদের উদ্দিষ্ট সাদা দাগটা আমরা পেয়ে যাবো!
 এখন অন্যসব হিজিবিজির মধ্যে মাঝের দাগটা বেশ ফুটে উঠেছে! কিন্তু ছবিটাকে স্রেফ একটা কালো গ্রাফ কাগজে সাদা সাদা অনেকগুলো বিন্দু ভাবা যেতে পারে। এদের কোন বিন্দুগুলোকে যোগ করলে সবচেয়ে প্রকট রেখাটা পাওয়া যাবে সেটা সুক্ষ্মরূপে নির্নয় করতে। আমরা ব্যবহার করব হাফ ট্রান্সফর্ম। ফলাফল পাওয়া যাবে এমন।
চিত্রের এই লাল রেখাটা পোলার ফর্মে পাওয়া যায়। ফলে সে কতরেডিয়ান কোনে আছে সেটাও আমরা পেয়ে যাবো একটা ভেরিয়েবলের মধ্যে। এখন মূল ছবিটাকে স্রেফ তত খানি উলটো দিকে ঘুরিয়ে নিলেই হলো।
বাহ! কেমন সোজা হয়ে গেছে। কোনার দিকে একটু কাটা পড়েছে অবশ্য। ওসব অংশ ছবিটার আকার বাড়িয়ে কমিয়ে ধরে ফেলা যাবে।   প্রোগ্রামটা যেহেতু একবার লিখে ফেলেছি। এখন যে কোনো পাতা যেভাবেই, স্ক্যান করে দেওয়া হোক না কেন। এই প্রোগ্রামের হাতে পড়লে ঠিক ঠিক সোজা হয়ে যাবে।

পাইথন আর ওপেনসিভি লাইব্রেরী ব্যবহার করার কারণে এসব করতে তেমন কোনো কষ্টই হয়নি। তবে, এই ডিস্ক্রিট ফুরিয়ার ট্রান্সফর্ম, হাফ-ট্রান্সরর্ম, এবং এজ ডিটেকশন অ্যালগরিদমগুলোর গাণিতিক সৌন্দর্য অতুলনীয়। হায়, এই লেখায় যদি সেগুলো নিয়ে বলতে পারতাম।


Tuesday, November 13, 2012

Installing OpenCV with Python on mac osx

There are many ways to do it and I have tried most of them but got only troubles. Only one worked for me. Lo and behold, here it is

For the record, I have Mac OS X 10.7.4

The recipe.

  1. Install Xcode from apple app store then install command line tools from xcode preference
  2. Install macports from here http://www.macports.org/install.php
  3. Open terminal put the command: sudo port selfupdate
  4. Install python26 by: sudo port install python26
  5. then: sudo port install py26-numpy
  6. (probably you don't need this step but I am recording it just because I have done it) then: sudo port install python_select 
  7. then: sudo port -v install opencv +python26
  8. it will take several hours. and install opencv-2.4.3
  9. then: sudo port select python python26
  10. this will select the newly installed python as your default. Which is absolutely necessary
  11. note, that IDLE will not work at this point. But python + opencv will. 
  12. now: sudo port install py26-tkinter
  13. this will make idle work
  14. to check it, run python from terminal and put: import cv2
  15. this should work smoothly. 
  16. do it step by step in the order stated in this recipe. Otherwise there is a high chance of falling in trouble. 
  17. now do amazing projects :) 
I have failed trying to use opencv-2.4.3 with python27. It simply does not work. If you don't want to take extra pain do it with python26 as I did. But If you really want to figure out how to use python27 check this link http://opencv.willowgarage.com/wiki/Mac_OS_X_OpenCV_Port 
And please let me know how you made it work. 


Monday, November 12, 2012

OCR Notes - 1

There are people who only appreciates the end result. Then there are people who appreciates the struggle. 

FFT can help figuring out the text orientation.

http://homepages.inf.ed.ac.uk/rbf/HIPR2/fourier.htm

I wil first try to implement this.

Next step will be filters http://homepages.inf.ed.ac.uk/rbf/HIPR2/filtops.htm

tesseract-ocr looks great
http://code.google.com/p/tesseract-ocr/

This python implementation looks promising http://code.google.com/p/ocropus/

Page layout analysis

a good book on OCR problems
 Optical character recognition : an illustrated guide to the frontier / by Stephen V. Rice, George Nagy, Thomas A. Nartker.



http://libencore.nus.edu.sg/iii/encore/record/C%7CRb2109828%7CSoptical+character+recognition%7COrightresult%7CX5?lang=eng&suite=def

Installation of opencv on mac
http://www.youtube.com/watch?v=i9hYiMXLZRs

http://www.opencvpython.blogspot.sg/2011/04/welcome-to-opencv-python.html

http://opencv.willowgarage.com/wiki/InstallGuide

opencv+python+mac nightmare 

Nice blog with many functionality implemented 
http://felix.abecassis.me/2011/10/opencv-rotation-deskewing/

ওসিআর প্রোজেক্ট

ওসিআর প্রোজেক্টের প্রটোটাইপ তৈরি করার কাজ শুরু করা দরকার। এই প্রোজেক্টের আইডিয়া মাথায় আসার পরে গত দেড় বছরে দারুণ কিছু জিনিস শিখেছি। মূলত হিউম্যান রিসোর্স ম্যানেজমেন্ট সংক্রান্ত। আশাকরি ভবিষ্যতেও ঐ শিক্ষা কাজে লাগাতে পারবো।

আজকাল প্রোগ্রামিং করার জন্য হাত নিশ-পিশ করছে। প্রোটোটাইপটা তৈরি করে ফেলার তাই এখনই শ্রেষ্ঠ সময়। 

Tuesday, November 6, 2012

correlation vs. causation

Data will provide you with correlations. But figuring out the causal chain requires originality and creative thinking. 

Sunday, November 4, 2012

One thing I have learned

One thing I have learned and I don't want to forget is- you must have brave people around you. You might not meet them 'just out of luck'. You have to search for them, spot them and take action to get acquainted.

All the human difference we see, be it in brilliance or in depth of thought, be it in creativity or in throughput, boils down to who is a coward and who is not.

When something is important enough you do it even thought the odds are not in your favor.  -Elon Musk
You need people who have a mindset like this around you.

যারা নিজেকে দুর্বল ভাবে, তারা সেটা ভাবে কারণ তারা আসলেই তাই। কাউয়ার্ডদের সাথে কথা বলে তাদের কিছুতেই উদ্বুদ্ধ করা যায় না। মনে রেখ, যে তোমাকে দেখে শিখবে না, সে তোমার কথা শুনেও শিখবে না। অনর্থক মানুষকে "বুঝিয়ে" সময় নষ্ট কোরো না। তবে এই দেখার সুযোগটা করে দিতে হবে। এ যুগে সেটা কঠিন কিছু নয়।

I look for good-hearted people which is always very very important. But goodhearted cowards amounts to nothing.



এই ভিডিওটা এখানে রেখে দিই।

Saturday, November 3, 2012

Dreams and Actions

I must not control my dreams. Dreams are meant to be free. Everything else, I must be in perfect control of. 

HOW to BECOME a GOOD THEORETICAL PHYSICIST

a nice index of resources on internet that I have found. thanks to Saeed Siam

This is a web site (still under construction) for young students - and anyone else - who are (like me) thrilled by the challenges posed by real science, and who are - like me - determined to use their brains to discover new things about the physical world that we are living in. In short, it is for all those who decided to study theoretical physics, in their own time.
http://www.staff.science.uu.nl/~hooft101/theorist.html

Friday, November 2, 2012

একটুখানি প্রোগ্রামিং (দ্বিতীয় প্রচেষ্টা) -2

Computer programming is an art form, like the creation of poetry or music. -Donald Knuth
গসাগু বের করার একটা সিউডো কোড লেখা হলো আজকে। বার বার ইংরেজী থেকে বাংলায় শিফ্ট করা মুশকিল হয়ে যাচ্ছে। ভাবছি বাংলাতেই লিখে ফেলবো। পরে পুরো অধ্যায় শেষ হলে বাংলাগুলোকে ইংরেজীতে বদলে দিতে হবে। 

১) এখন ফ্লো চার্ট। কিভাবে করা যায় সেটা দেখাবো। 
২) প্রথমে সিম্পল ডিসিশন। এর পরে লুপ দেখবো। লুপের উদাহরণে জোড় সংখ্যার যোগফল বের করা দেখাতে হবে। এটা করতে গিয়ে এ=এ+১ ধরনের লাইনের সঙ্গে পাঠককে পরিচিত করে তুলবো। লুপ কি বোঝাতে হবে। 
৩) আধুনিক প্রোগ্রামিং ভাষায় গো টু বলার বদলে কেন লুপ ব্যবহার করা হয় সেটাও বলতে হবে। 
৪) গো টুর বদলে লুপ আকারে কিভাবে জোড় সংখ্যাদের যোগ করার প্রোগ্রামটি লেখা যেত সেটা লিখতে হবে। 
৫) আমাদের গসাগু বের করার প্রোগ্রামটির ফ্লো চার্টটি দেখতে হবে। এখানে লুপ কোথায় আছে সেটা খুঁজে বের করতে হবে। তারপরে গো-টু কে লুপ আকারে লেখার উপায়টা দেখতে হবে। 
৬) কোনো সংখ্যা প্রাইম কি না সেটা পরীক্ষা করার প্রোগ্রাম দেখতে হবে। 
৭) এটাকে ফাংশন হিসাবে ব্যবহার করে, প্রথম এন টি মৌলিক সংখ্যার যোগফল বের করার প্রোগ্রাম লিখতে শেখাতে হবে।
৮) ফ্লো চার্টকে গো-টু ফর্মালিজমে না লিখে লুপ ফর্মালিজমে লেখার উপায় বের করতে হবে। সেখান থেকে কেন, লুপই সেরা বুদ্ধি সেটা বুঝিয়ে দিতে হবে। 
৯) একটা অতিরিক্ত অধ্যায় করতে হবে যেখানে পাইথন ভাষায় আমাদের এইসব সুডোকোড গুলো লিখতে শেখাতে হবে। কোনো নির্দিষ্ট প্রোগ্রামিং ভাষা শেখার সময় কি কি জিনিশ খেয়াল করতে হয় সেটা এই আলোচনায় থাকবে। অর্থাত, ঐ ভাষায় ভেরিয়েবল কিভাবে লেখে, লুপ কিভাবে লেখে অ্যারে, ফাংশন ইত্যাদি কিভাবে লেখে এসব। তবে আপাতত এই টেকনিক্যালিটি নিয়ে ভাবব না। 

১০) প্রোগ্রামিং চ্যাপ্টারটা শেষ হলে, কম্পিউটার বিজ্ঞান কী, কম্পিউতার ইঞ্জিনিয়ারিং কী, এসবের নানান শাখা প্রশাখা আর কোনটাতে কী কূল জিনিশ করা জায় সেসব লিখতে হবে। এটা হবে শুরুর দিকের চ্যাপ্টার। 

১১) নানান রকম গবেষণায় কম্পিউটার নামক চ্যাপ্টারটা প্রোগ্রামিং চ্যাপ্টারের পরে লিখতে হবে। টুকিটাকি সিমুলেশন দেখানো যেতে পারে। 

১২) কমিউনিকেশন ইনরমেশন থিওরী। 

১৩) প্রোসেসরের গঠন। লজিক। 

 ১৪) বাবা-মাদের জন্য কম্পিউটার! 




এখন আসি আমাদের কাল্পনিক কম্পিউটারটির কাছে। 
[ নীচে নোট] 

গণিতের ফাংশনের কথা আমরা জানি। $f(x,y)=x^2+xy$ যেমন একটা গাণিতিক ফাংশন। f(2,3) এর মান হবে এখানে $2^2+2*3=10$ তাই $f(2,3)=10$ মনে করি আমাদের কাল্পনিক কম্পিউটারে এরকম একটা ফাংশন আছে তার নাম rem এই rem ফাংশন দুইটি সংখ্যা ভাগ করলে কত অবশিষ্ট থাকে সেটা বের করে। অর্থাৎ $rem(16,6)$ এর মান 4। কারণ ১৬ কে ৬ দিয়ে ভাগ করলে অবশিষ্ট থাকে 4। আগের f ফাংশনটির ক্ষেত্রে হিসাবটা কিভাবে করা হয় সেটা আমরা দেখেছি। এই রেম ফাংশন গণনারও তেমন কোনো হিসাব আছে যেটা আমাদের কম্পিউটার জানে। আমরা স্রেফ জানি  $rem(a,b)$ লিখলে কম্পিউটার a কে b দিয়ে ভাগ দেবে এবং ভাগশেষ টি আমাদের জানিয়ে দেবে। 
এখন এই লাইনটা দেখি,
$c \leftarrow rem(a,b)$ 
এর মানে হলো $rem(a,b)$ মান গণনা করে c এর মধ্যে রাখ। ব্যাপারটার সাথে আমাদের প্রথম বানরের গল্পের একটা মিল দেখতে পাই। প্রহম বানরকে লাল আর সবুজ কার্ডে কোনো সংখ্যা লিখে দিলে সে তাদের ভাগশেষ জানিয়ে দিতো। এই কাজে সবুজকে ভাগ দিতো লাল কার্ডের সংখ্যা দিয়ে। আমাদের রেম ফাংশনটাও তাই করছে। প্রথম সংখ্যাটিকে ভাগ দিচ্ছে দ্বিতীয় সংখ্যা দিয়ে। তাই এখানে প্রথমটি মানে এ হচ্ছে সবুজ কার্ড। বি হচ্ছে লাল কার্ড আর সি হচ্ছে হলুদ কার্ড যেখানে ফলাফল লিখিত হয়। রেম কে আমাদের বানর ভাবতে পারি। 

অর্থাৎ কম্পিউটারের ভাষায় লিখলে
হলুদকার্ড <- nbsp="nbsp" span="span">
এই হলো আমাদের প্রথম বানরের গাণিতিক বর্ণনা! কম্পিউটার অবশ্য লাল হলুদ দিয়ে মনে রাখে না। সে মনে রাখে ফাংশনে কোন অবস্থানে কি লেখা হচ্ছে। 

যেমন আমি যদি পি <- nbsp="nbsp" span="span">

এখন মনে করুণ আমরা জিসিডি নামক একটি ফাংশন বানাতে চাই। যার কাজ ইনপুটের দুইটি সংখ্যার গসাগু (গ্রেটএস্ট কমন ডিভিজর) বের করে আমাদের জানানো। 

অর্থাৎ, 
জিসিডি(১৬, ৬) এর মান হবে ২ 
সি <- nbsp="nbsp" span="span">
এর অর্থ কম্পিউটারকে বলা, ১৬ ও ৬ এর জিসিডি বের করে সি নামক ভেরিয়েবলে লেখ। কিন্তু কম্পিউটারের মত বোকা একটা প্রাণী সেই কাজ পারবে কিভাবে? সেটাও আগে থেকে তাকে লিখে দিতে হবে। 

নিচে সেই কাজের তালিকা কম্পিউটারের ভাষায় লেখার চেষ্টা করি। 

gcd(a,b)              //returns the gcd of a and b
  1. red <- a="a" nbsp="nbsp" span="span">
  2. green <- b="b" nbsp="nbsp" span="span">
  3. clear(yellow)   //হলুদ কার্ডটি মুছে পরিষ্কার করে রাখ। 
  4. yellow <- green="green" nbsp="nbsp" red="red" rem="rem" span="span">
  5. if yellow is equal to 0. output green and stop.  //ভাগশেষ শূন্য পাওয়ার অর্থ গসাগু পেয়ে গেছি। এখানেই থামতে হবে।
  6. (else) green<-red nbsp="nbsp" span="span">
  7. red<- nbsp="nbsp" span="span" yellow="yellow">
  8. goback to step 4      //এই নতুন সংখ্যাগুলো নিয়ে আবার চতুর্থ ধাপে রেম বানরের কাছে ফিরে যাও। 

এইতো আমরা আমাদের প্রথম কম্পিউটার প্রোগ্রাম লিখে ফেলেছি! ৫ নাম্বার লাইনে অবশ্য এখনো একটা ইংরেজী বাক্য আছে। বেশিরভাগ প্রচলিত কম্পিউটার ভাষায় ঐ লাইনটা লেখা হবে, 
if (yellow == 0) return green 

এভাবে। অর্থাৎ, ব্রাকেটের মাঝখানে যে কথাটি লেখা সেটা সত্যি হলে ব্রাকেটের পরের কাজটি করো। 

চিত্র-৪ এ জিসিডি(২৪,১৫) ফাংশনটা হিসাব করার ধাপগুলো দেখানো হলো। 

Thursday, November 1, 2012

একটুখানি প্রোগ্রামিং (দ্বিতীয় প্রচেষ্টা)



But though this book does not presuppose on the part of the reader a mathematical education, it presupposes something just as rare; a capacity for absorbing and apprising ideas. -Tobias Dantzig

কম্পিউটার প্রোগ্রামিং শিখতে আগ্রহীদের প্রায়ই যে প্রশ্নগুলো করতে শোনা যায় তা হচ্ছে, "কোন ভাষাটি শিখবো? সি, জাভা, পাইথন, নাকি অন্য কিছু।" এটা ঠিক কম্পিউটারকে সফল ভাবে কোনো সমস্যা সমাধানের অ্যালগরিদম শিখিয়ে দিতে প্রোগ্রামিং ভাষা জানতেই হবে। কিন্তু কম্পিউটার প্রোগ্রামিং ব্যাপারটা ঠিক ভাষা নির্ভর নয়। অর্থাৎ কোনো ব্যক্তি যদি সি++ এ দারুণ প্রোগ্রামিং করতে পারে, সে যদি জীবনে পাইথন ভাষায় কোনো প্রোগ্রাম কখনো না লিখে থাকে, তার পরেও ঘন্টা খানেক চেষ্টা করলেই কাজ চালিয়ে নেওয়ার মত ছোটো খাট প্রোগ্রাম লিখতে পারবে। কয়েক দিনের প্রচেষ্টাতেই বড় বড় সফ্টওয়ার বানানোর প্রোজেক্টে ঐ ভাষাটি ব্যবহার করতে পারবে। কম্পিউটার ভাষা না হয়ে মানুষের মুখের ভাষা হলে ব্যাপারটা এত সহজ হতো না। তাই দেখা যাচ্ছে, কম্পিউটার প্রোগ্রামিং এর ভাষা যাই হোক না কেন এদের মধ্যে একটা অন্তর্নিহীত মিল আছে আর আছে এক ধরনের সারল্য। তাই হঠাৎ দেখায় প্রোগ্রামিং এর কোড যতই বিদঘুটে লাগুক একবার মূল ব্যাপারটা ধরে ফেললে, যে কোনো কম্পিউটার ভাষাই শিখে ফেলা যায় নিমেষে!

ব্যাপারটাকে তুলনা করতে পারি সাতার শেখার সাথে। আমরা জানি সাতার অনেক রকম হয়। ফ্রি-হ্যান্ড, বাটারফ্লাই, ব্যাক-স্ট্রোক... ইত্যাদি। কেউ যদি কোনো সুইমিংপুলে সাতার কাটতে পারে। তার পক্ষে নতুন কোনো স্টাইল শেখা তেমন কোনো সমস্যাই নয়। একটু লক্ষ্য করলে কয়েক মিনিটের মধ্যে অন্যভাবে সাতার কাটতে পারবে। ভালো ভাবে আয়ত্ব করতে অবশ্য প্র্যাকটিস করতে হবে কয়েক দিন। আবার কেউ একটা সুইমিং পুলে সাতার কাটতে শিখলে, কোনো পুকুরে গিয়েও সাতার কাটতে পারবে। চাই কি নদীতেও। নদীর স্রোত একটু বেশি হলে তাকে সেখানে সাতারের কৌশল আয়ত্ব করতে হয়তো কিছুক্ষণ বেগ পেতে হবে। কিন্তু পনের বিশ মিনিটের বেশি নয়। এর পর উচু উচু ঢেউয়ের সমূদ্রে গেলেও, হয়তো দুয়েকদিনের প্রচেষ্টাতেই সেখানেও দুর্দান্ত সাতার দেবে সে। এই ফ্রি-হ্যান্ড, বাটারফ্লাই, ব্যাক-স্ট্রোক... ইত্যাদিকে আমরা একেক রকম প্রোগ্রামিং ভাষার সাথে তুলনা করতে পারি। আর এই নদী, পুকুর, পুল বা সাগরকে তুলনা করতে পারি নানান রকম কম্পিউটারের সাথে (সুপারকম্পিউটার থেকে শুরু করে, স্মার্ট ফোনের কম্পিউটার)। এখানে ভেসে থাকার মৌলিক কৌশল আয়ত্ব করাটাই মূল কঠিন ধাপ। ওটা জানলে কোথায় কিভাবে সাতরাচ্ছি তা কোনো ব্যাপারই না।   একই কারণে কোনো নির্দিষ্ট প্রোগ্রামিং ভাষার অচেনা সব প্রতীক, চিহ্ন, নিয়ম এসবের মধ্যে হারিয়ে না গিয়ে শুরুতে আমরা প্রোগ্রামারের মত চিন্তা করতে শিখবো। একবার এটা আয়ত্ব হয়ে গেলে, যে কোনো প্রোগ্রামিং ভাষাতে লেখা ছোটখাট প্রোগ্রাম বুঝতে (বা এমন কি লিখতেও) আমাদের কয়েক মিনিটের বেশি লাগবে না!

তাহলে শুরু করা যাক। মনে করুণ আপনি কোনো গবেষণাগারে শিক্ষাণবিশ হিসাবে যোগ দিয়েছেন। এই গবেষণাগারে নানান রকম প্রাণীর বুদ্ধিমত্তার উপর পরীক্ষা নিরীক্ষা করা হয়। আপনার দল গবেষণা করে বানরের বুদ্ধিমত্তা নিয়ে। তো যোগ দেওয়ার পরে আপনি দেখলেন আপনার দল একটা বানরকে ভাগশেষ বের করার ট্রেনিং দিয়েছে। একটা লাল কার্ডে ভাজক আর সবুজ কার্ডে ভাজ্য লিখে দিলে, বানরটা মনে মনে হিসাব করে একটা হলুদ কার্ডে ভাগশেষ লিখে দেয়।

ভাজক) ভাজ্য (ভাগফল
          .......
          ভাগশেষ

নিঃসন্দেহে বানর বেশ বুদ্ধিমান। তো আপনি ভাবলেন, এতটুকু যেহেতু পারে একে তাহলে গসাগু বের করার নিয়মও শিখিয়ে দেওয়া যায়। তেমন কিছুই না, স্রেফ ভাগশেষ যেটা পাবে, সেটা দিয়ে আগেরবারের ভাজককে ভাগ করবে। নতুন ভাগশেষ ০ হলে গসাগু পেয়ে গেল। আর না হলে একই কাজ করতে থাকবে বার বার। [চিত্র -১] এক সময় গসাগু বের হবেই। তো মুখে বললে তো বানর শিখবে না। তাকে প্র্যাক্টিস করাতে হবে। সে জন্য আপনি লাল সবুজ আর হলুদ তিন রঙের তিনটি কার্ড, একটা পেনসিল আর ইরেজার নিয়ে বসলেন।

তো প্রথমে লাল কাগজে ভাজক (ধরিরি ৬) লিখে আর আর সবুজ কাগজে ভাজ্য (ধরি ১৬) লিখে বানরটিকে দেওয়া হলো। ধরি বানরের নাম ক! তো, ক তখন, হলুদ কাগজে লিখে দেবে ৪ যেটা কিনা আগের সংখ্যা দুটির ভাগশেষ। গসাগু নির্ণয়ের জন্য এই নতুন ভাগশেষকে দিয়ে ভাগ করতে হবে আগের ভাজক কে। তো বানরটিকে দিয়ে নতুন ভাগ করানোর জন্য সবুজ কাগজের আগের লেখা মুছে আপনি লিখে দিলেন

---------------------


তাহলে শুরু করা যাক। মনে করুণ আপনি কোনো গবেষণাগারে শিক্ষাণবিশ হিসাবে যোগ দিয়েছেন। এই গবেষণাগারে নানান রকম প্রাণীর বুদ্ধিমত্তার উপর পরীক্ষা নিরীক্ষা করা হয়। আপনার দল গবেষণা করে বানরের বুদ্ধিমত্তা নিয়ে। তো যোগ দেওয়ার পরে আপনি দেখলেন আপনার দল একটা বানরকে ভাগশেষ বের করার ট্রেনিং দিয়েছে। একটা লাল কার্ডে ভাজক আর সবুজ কার্ডে ভাজ্য লিখে দিলে, বানরটা একটা হলুদ কার্ডে ভাগশেষ লিখে দেয়। নিঃসন্দেহে বানর

ভাজক) ভাজ্য (ভাগফল
          .......
          ভাগশেষ
[চিত্র-১]

মনে করুন কোনো গবেষণাগারে নানান প্রাণীর বুদ্ধিমত্তা নিয়ে গবেষণা করা হয়। এবং সেখানে একটি দল অনেক কষ্ট করে একটা বানরকে ভাগশেষ বের করতে শিখিয়েছে। বানরটিকে একটা লাল কাগজে ভাজক আর সবুজ কাগজে ভাজ্য লিখে দিলে সে একটা হলুদ কাগজে ভাগফল লিখে ফেরত দেয়। খুবই ইন্টারেস্টিং ব্যাপার। তো আমরা জানি, ভাগশেষ বের করার নিয়ম জানা থাকলে এর সাহায্যে গসাগু নির্ণয় করা সম্ভব। [চিত্র-২] এর মত করে প্রতিবার পাওয়া ভাগশেষটা দিয়ে আগের বারের ভাজক কে ভাগ করতে হয়। এবং এভাবে যখন ভাগশেষ শূন্য পাওয়া যায় তখন আগের বারের ভাজকটাই নির্ণেয় গসাগু। তো আমরা এই বুদ্ধিটাও আমাদের বানরটিকে শিখয়ে দিতে চাই। তার জন্য শুরুতে কিছু প্র্যাক্টিস করতে হবে।

এর জন্য লাগবে লাল সবুজ হলুদ তিন রঙের তিনটি কার্ড, একটা পেনসিল আর ইরেজার।
প্রথমে মনে করুন লাল কার্ডে ৬ আর সবুজ কার্ডে ১৬ লিখে বানরটিকে দেওয়া হলো। সে হলুদ কার্ডে উত্তর দিলো ৪। আমরা জানি  ১৬ কে ৬ দিয়ে ভাগ করলে ভাগশেষ থাকে ৪। অর্থাৎ বানরটই ঠিক উত্তরই দিয়েছে। কিন্তু আমরা গসাগু বের করতে চাই, তাই এখানে থেমে গেলেই হবে না। কারণ ভাগশেষ ০ হয়নি। অর্থাৎ পরের ধাপে ৪ দিয়ে ৬ কে ভাগ করতে হবে। আর বানরকে দিয়ে সেটা করাতে হলে লাল কার্ডে ৪ ও সবুজ কার্ডে ৬ লিখে দিতে হবে। হলুদ কার্ডটিও মুছে পরিষ্কার করে দিতে হবে আমাদের। আগের কোন সংখ্যাটি মুছে পরের কোন কার্ডে লিখতে হবে সেটা [চিত্র-৩] এ দেখা যাচ্ছে। এরকম করলে এবার হলুদ কার্ডে সে ভাগশেষ লিখবে ২। যেটা অশূন্য। অর্থাৎ আরেক ধাপ করতে হবে আমাদের। এবারে, লাল<- nbsp="nbsp" p="p">
সমস্যা হলো, যে বানর ভাগ করতে শিখেছে (ধরি ওর নাম ক), ঐ কাজেই তার মানসিক ক্ষমতা সব খরচ করে ফেলেছে। ফলে আবার কখন কোন সংখ্যা, কোন কার্ড থেকে মুছে নতুন কোন কার্ডে লিখে দিতে হবে, এত সব নতুন নিয়ম শেখা তার পক্ষে প্রায় অসম্ভব। কিন্তু চাইলে আমরা এই মোছা/লেখার নিয়মটা আরেকটা বানরকে (ধরি ওর নাম খ) শিখিয়ে দিতে পারি। তখন আর আমাদের খাটাখাটি করতে হবে না। তো দ্বিতীয় বানরটিকে এক্সাক্টলি কি ট্রেনিং দেব সেটা আমরা আমাদের গবেষণা খাতায় লিখে রাখতে পারি। এখানে // দাগের পরে লেখাগুলো হচ্ছে আগে কি লিখলাম সেটা বুঝিয়ে বলার জন্য মন্তব্য। এর ফলে আমরা উপস্থিত না থাকলেও, অন্যকেউ এই গবেষণাগারে এসে বানরটিকে ঠিক কি ট্রেনিং দেওয়া হয়েছে পরিষ্কার বুঝতে পারবে।

গসাগু ট্রেইনিং
১. লাল <- nbsp="nbsp" p="p">২. সবুজ <- nbsp="nbsp" p="p">৩. হলুদ<- nbsp="nbsp" p="p">৪. কার্ডতিনটি ক বানরকে দাও।           // এই ধাপের পরে ক বানরটা ভাগশেষটা লিখে দেবে হলুদ কার্ডে। বাকিগুলোও ফেরত দেবে।
৫. হলুদ কার্ডে কি ০ লেখা? তাহলে লাল কার্ডের সংখ্যাটই নির্ণেয় গসাগু।     // কাজ শেষ।
৬. নাহলে,  সবুজ<- nbsp="nbsp" p="p">                                                   সংখ্যাটি লিখতে হবে।

৭. লাল<- nbsp="nbsp" p="p">৮. হলুদ<- nbsp="nbsp" p="p">৯. ৪ নাম্বার ধাপে যাও।                     // অর্থাৎ আবারো ক বানরকে দিয়ে ভাগ করাও। এবং পরবর্তী কাজগুলো একইভাবে
                                                     করতে থাকো। ভাগশেষ শূন্য পাওয়া গেলে ৫ নাম্বার ধাপেই পুরো প্রক্রিয়াটি থেমে যাবে। 

এরকম তালিকা দেখে মনে রাখা মানুষের পক্ষেই বেশ কঠিন। তাই মনে হতে পারে খ বানরকে পুরো নিয়মটা শেখানো খুব মুশকিল হয়ে যাবে। কিন্তু ভেবে দেখুন। তেমন কোনো কাজ আসলে নেই। প্রতিবার ক বানর উত্তর ফেরত দিলে দেখতে হবে শূন্য কি না। ০ হলে তাহলে কাজ শেষ। আর নাহলে সবুজটা মুছে তাতে লালের সংখ্যা, লালটা মুছে সেখানে হলুদের সংখ্যা লিখতে হবে। আর হলুদটা মুছে ফেলতে হবে। সব শেষে আবারও কার্ডগুলো ক বানরকে দিয়ে দিলেই হলো।

পুরো ব্যাপারটাতে ক্রিটিক্যাল হলো ৬, ৭, ৮ নাম্বার ধাপেরর ক্রম। যেমন, ধাপ ৬ এর আগে যদি ৭ করা হয়। তাহলে লাল সংখ্যাটি হারিয়ে যাবে। কারণ সেটাকে আর কোথাও লিখে রাখা হয়নি। ফলে গসাগু বের করা অসম্ভব হয়ে পড়বে। ৭ এর আগে আট বা ৬ এর আগে ৮ করলেও সমস্যা সৃষ্টি হবে। কিন্তু বানরটিকে হাজার হাজার বার এই কাজগুলো সঠিক ক্রমে করিয়ে পুরো ব্যাপারটার ট্রেনিং দিয়ে ফেলা সমভব! অর্থাৎ ক বানরের ভাগশেষ বের করার সীমিত ক্ষমতাকে কাজে লাগিয়ে খ বানরটি গসাগুবের করতে পারবে।

ব্যাপারটা দারুণ কারন, আমাদের যদি, যোগ, বিয়োগ, গুণ ভাগ করার ট্রেনিং প্রাপ্ত একদল বানর থাকে। সেগুলোকে কাজে লাগিয়ে আমরা আরো একদল বানরকে ট্রেইন করতে পারি আরেকটু জটিল কিছু করার জন্য। এইভাবে, সেই বানরগুলোকে কাজে লাগিয়ে আরো আরেকদল বানরকে ট্রেইনিং করাতে হবে আরো জটিল সব কাজ কর্ম করাতে। যেখানে প্রতিটি বানর হয়তো ঐ গসাগু ট্রেইনিং এর মত খুব সহজ কিছু করার ট্রেইনিং পেয়েছে। কিন্তু সবাই মিলে তারা অসাধ্য সাধন করে ফেলবে। সমস্যা হলো, এত শত শত বানর জোগাড় করা, আর সেগুলোকে বাদরামি ভুলিয়ে লক্ষী বানরের মত নিয়ম মেনে এইসব টুকি টাকি কাজ করতে শেখানো প্রায় অসম্ভব।


আর এখানেই আসছে কম্পিউটার। কম্পিউটারের মধ্যে এরকম ছোট ছোট কাজ করতে পারে, তেমন অসংখ্য বানর আছে! মানে কল্পিত  বানর আরকি। এসব বানরকে বলে প্রসিডিউর বা ফাংশন। এসব ফাংশানের সাহায্যে খুব সরল, আর ছোট ছোট কাজ কম্পিউটার করতে পারে অসম্ভব দ্রুততায়। বাজার থেকে কিনে আনা কম্পিউটারে, শুরুতে আমাদের ঐ ক বানরের মত অল্প কিছু কাজ করতে পারে তেমন ফাংশন দেওয়া থাকে। ফলে আমাদের যদি গসাগু বের করার মত জটিল কিছু করতে হয় তাহলে খ বানরকে শিখিয়ে দেওয়া ঐ নিয়মগুলোর মত নিয়ম লিখে দিতে হয় নতুন ফাংশনকে। শুধু গসাগু নয়, জটিলতর যে কোনো কাজের জন্যই সহজ ফাংশনকে নানান রকম বুদ্ধি করে ব্যবহার করতে হয়। আর এই ঘুরিয়ে ফিরিয়ে ব্যবহার করার উপায় লিখে ফেলাকেই বলে প্রোগ্রামিং। এই প্রক্রিয়ায় অল্প কিছু ফাংশনের সাহায্যে নতুন নতুন অসংখ্য ফাংশন তৈরি করা হয়। আমরা কম্পিউটারে যেসব সফ্টওয়ার বা প্রোগ্রাম দেখি, যেমন ফটোশপ, ওয়ার্ড প্রসেসর, ইন্টারনেট ব্রাউজার। এগুলো হচ্ছে, এমন অসংখ্য ফাংশনের সমষ্টি। যার প্রতিটি ফাংশনই কোনো না কোনো মানুষ লিখেছে! মজার ব্যাপার হলো সব কিছুর ফাংশন প্রতিবার শুরু থেকে লিখতে হয় না। লাইব্রেরী আকারে পাওয়া যায়। বেশিরভাগ সময়ই ঐ লাইব্রেরীতে থাকা ফাংশনগুলো নিজের প্রয়োজন অনুযায়ী পরিবর্তন  করে আমরা ব্যবহার করতে পারি। একেকটা প্রোগ্রামিং ভাষার লাইব্রেরীতে একেক ধরনের কাজের ক্ষমতা বেশি থাকে। কিন্তু সে আলোচনা পরে। আগে কম্পিউটার প্রোগ্রামিং ব্যাপারটা বোঝার জন্য আমরা এই বানরের প্রোগ্রামটি একটা কল্পিত কম্পিউটারের জন্য লিখতে শিখব। তারপর সেই কল্পিত কোড কিভাবে খুব সহজেই সি, জাভা বা পাইথনে মত ভাষায় পরিবর্তন করে ফেলা যায় সেটাও দেখব। আর এভাবেই শিখে ফেলবো প্রোগ্রামিং!


এখন আসি আমাদের কাল্পনিক কম্পিউটারটির কাছে।
[ নীচে নোট]

ক বানরটি যেমন নানান রঙের কার্ড চেনে। তেমনি কম্পিউটারও নানান রকম ভেরিয়েবল চেনে, ঐসব ভেরিয়েবলে আমাদের হিসাবের জন্য প্রয়োজনীয় সংখ্যাটি সে লিখে রাখে। ওগুলোকে কম্পিউটারের মধ্যে ছোট ছোট কার্ড ভেবে নিতে পারি আমরা। এইসব মেমরীকে, a, b, c এরকম নানান নাম দেওয়া যায়।

মনে করুন a, b দুইটি ভেরিয়েবল। অর্থাৎ কম্পিউটারের ভিতরে a, b নামক দুইটি যায়গায় দুইটি সংখ্যা লেখা আছে।
এখন কম্পিউটারের সাহায্যে এদের ভাগশেষ নির্নয় করে হলে লিখতে হবে a%b।

Monday, October 29, 2012

The message I needed


Reaching a wider audience is not worth sacrificing your content.  - Edmund Carpenter 
May be more people will hear you but what you actually want to say will be lost.  - Vi Hart


Saturday, October 27, 2012

Quantum Teleportation

Physicists passed a milestone in the development of a 'quantum internet' by transmitting quantum states between telescopes on La Palma and Tenerife – a record distance of 143km. The visible laser beam was used to stabilise the telescopes sending and receiving the quantum signal. In theory, 'quantum teleportation' will enable the exchange of messages with greater security, and allow calculations to be performed much more efficiently than is currently possible source:

http://www.guardian.co.uk/science/gallery/2012/oct/26/month-space-quantum-teleportation-pictures#/?picture=398163891&index=9

সময় নষ্ট এবং...

১) কথায় আছে, স্বভাব যায় না মলে। আমার হয়েছে সেই দশা। এতবার করে কানে ধরে নাকে খত দিয়ে প্রতিজ্ঞা করেছি। যা করার একাই করবো। লোক ডাকাডাকি একটা অপচয়। তার পরেও সেই একই ভুল করলাম। বাল্টা!
২) গণিত শেখা দরকার। রিপ্রেজেন্টেশন থিওরী, ফাংশনাল অ্যানালাইসিস, টপোলজি। এই তিনটা জিনিশ না শিখলেই নয়। গণিত জানার সাথে আত্মবিশ্মাস সরাসরি সমানুপাতিক। 
৩) "বিষয় পরিবর্তন" বিষয়ক লেখাটা লেখা হলো না। প্রোগ্রামিং নিয়েও লেখাটা শেষ হলো না। স্টেট ডিস্ক্রিমিনেশন এর উপর নতুন পেপারটাও লিখতে হবে। এক্সপ্যান্ডার গ্রাফ এর উপর এক্সপার্ট হয়ে যাওয়া দরকার। হাতে সময় দুই সপ্তাহ। প্রিন্স্টনের আইএএস এর প্রফেসর আভি উইগডারসনের লেখা পড়ে ভালো লাগলো। তার সঙ্গে কখনো যোগাযোগ হবে হয়তো। 
৪) বুড়োদের দিয়ে হবে না। মুফতি, সিয়াম, এরা আমাকে হতাশ করেছে। ওদের কোনো দোষ নেই। অহেতুক বেশি, বেশি এক্সপেক্ট করার অপরাধটা আমারই। আমার শিক্ষা হওয়া দরকার। আনাম ভাইও কি পারবে? আশাবাদী হতে পারছি না। 
৫) হাতের বড় প্রোজেক্টগুলো শেষ হওয়ার আগে আর কাউকে কিছু বলবো না। তবে "বাবা-মাদের জন্য কম্পিউটার বিজ্ঞান" আর কম্পিউটার প্রোগ্রামিং কেন "লিখ্তে-পড়তে" পারার মত জরুরী একটা স্কিল বিশেষ করে, নানান বিষয়ের গবেষক এবং ইঞ্জিনিয়ারদের জন্য, সেটা নিয়ে লিখলে মুক্তমনায় পোস্ট করবো। এগুলো যে কোনো বুক-চ্যাপ্টার সেটা চেপে যেতে হবে। 
৬) আমি বুঝে গেছি, প্রোবাবিলিটি থিওরী নিয়ে বইটাও আমাকে লিখতে হবে। 
৭) প্রতিদিন চাইলেই দুই ঘন্টা লেখালিখি করা যায়। আর উইকেন্ডে একটা দিন।
৮) বাচ্চাদের জন্য কিছু করা দরকার। কী করা যায় ভাবতে হবে। 
৯) তাত্তিক পদার্থ বিজ্ঞান, তাত্তিক কম্পিউটার বিজ্ঞান বা গণিতের কোনো পেপার পড়তে গেলে, প্রতি পৃষ্ঠা ১ ঘন্টা করে লাগে। এ নিয়ে আগে মন খারাপ হতো। তবে রিসেন্টলি কয়েকজনকে জিজ্ঞেস করলাম। ওরাও বললো, ওদের এমন সময়ই লাগে। অতয়েব চিন্তার কিছু নেই। নিবিড় পাঠের ক্ষেত্রে ব্যাপারটা নরমাল। 
১০) আজকাল বেশ পরিশ্রম করতে পারছি। পরিশ্রম আমাকে সুখী করছে... 

Wednesday, October 24, 2012

একটুখানি প্রোগ্রামিং (দ্বিতীয় প্রচেষ্টার নীলনকশা)

আগেরবার অনেকখানি লিখে বাদ দিতে হয়েছে। এবার সেই ভুল কাটিয়ে ওঠার জন্য প্রথমেই একটা আউটলাইন লিখে ফেলি। (ইন ফ্যাক্ট আগেরবার আউটলাইন লিখতে বসেই পুরো বর্ণনায় চলে গেছিলাম। কাজটা ঠিক হয়নি)

১) মানুষের মত কম্পিউটারেরও নানান রকম ভাষা হয়।
২) কিন্তু মানুষের ভাষার সাথে কম্পিউটার ভাষার পার্থক্য হলো, একবার কোনো কম্পিউটার ভাষা শিখে ফেললে, নতুন কোনো ভাষা শেখা স্রেফ কয়েক দিনের প্রচেষ্টার ব্যাপার। এ যেন সাতার শেখার মত। একবার কোনো একটা পুকুরে শিখে ফেললেই হয়। অন্য পুকুরে বা নদীতে অন্য রকম কোনো স্টাইলে সাতার কাটতে শেখা বেশ ট্রিভিয়াল। কিন্তু প্রথমবার ভাসতে শেখাটা আসলে সহজ নয়। ক্রমাগত চেষ্টা করে যেতে হয়। হঠাৎ ক্লিক করে যায়। একেক জনের একেক সময়ে।
৩) এই লেখাটাটাতে তাই নানান রকম প্রোগ্রামিং ভাষার বাহারি সব প্রতিক চিহ্ন কিওয়ার্ড এসব নিয়ে শুরতেই মাথা না ঘামিয়ে। সেই মৌলিক ব্যাপারটা নিয়ে আমরা মাথা ঘামাবো। যাকে বলে "প্রোগ্রামিং"।
৪) কার্ডে লিখে দেওয়ার পরে কেউ একজন আমাকে ভাগ করে উত্তর দেয়। এরকম একটা সেটিং, এ ঐ ওরাকলকে দিয়ে গসাগু বের করিয়ে নিতে আমাদের কী করা লাগবে? এ থেকে আমরা গসাগুর অ্যালগরিদম শিখবো।
৫) এর পর কার্ডগুলোকে ভেরিয়েবলের নাম দিয়ে পরিবর্তন করে দেব। আর কিছু সিউডো ইন্স্ট্রাকশন লিখবো।
৬) মূলত সিউডোকোড লিখতে পারতে শেখাটাই এখানে আসল। এর পরেই সহজ উদাহরণে চলে যেতে হবে। সিদ্ধান্ত নেওয়া (রোদের ছাতা নেওয়া, আর টেস্ট টিউব বেবির, কোন ভ্রুনটাকে ইম্প্লান্ট করা হবে সেটা নির্ধারণ করার উদাহরণ দিতে হবে।)  সিরিজের যোগফল বের করা। ইত্যাদির অ্যালগরদিম দেখবো।
৭) কোনো একটা কোড থেকে ফ্লো চার্ট বানাতে শিখবো।
৮) এরপর কোনো একটা প্রোগ্রামিং ল্যাঙ্গুয়েজ শেখার সময় কি কি জিনিশ খেয়াল করতে হবে সেটা দেখবো।
৯) তারপর পাইথন বা সি তে  একটা প্রোগ্রাম লিখে দেখবো।
১০) প্রোগ্রামিং ল্যাঙ্গুয়েজের হাইরাক্কি নিয়ে বল্তে হতে পারে। শুরুতে কোনো প্রোগ্রামিং ভাষা কম্পিউটার কিভাবে বোঝে। সেই প্রশ্ন অ্যাড্রেস করব এখানে এসে। (চাই কি আগের বাতিল করে দেওয়া টেক্সট এর একাংশ এখানে জুড়ে দিতে পারি!)

লিখতে শেখা, আর লেখক হয়ে যাওয়ার মধ্যে যেমন পার্থক্য তেমন প্রোগ্রামিং করতে পারা, আর বড় প্রোগ্রামার হয়ে যাওয়াটাও তেমন। অদিকে বড় লেখক হতে না চাইলেও, লিখতে আপনাকে জানতেই হবে। প্রোগ্রামিং ও তাই। 

একটু খানি প্রোগ্রামিং (প্রথম প্রচেষ্টা)

প্রায় হাজার খানেক শব্দ লেখার পরে সিদ্ধান্ত নিলাম এভাবে এগোব না। অতয়েব নিচের আর্টিকেলটা বাতিল করতেই হচ্ছে।

(নিচের লেখায় সিদ্ধান্ত নেওয়ার ব্যাপারটা লেখা জাবে না। বলতে হবে কম্পিউটার যাচাই করতে পারে কোনো সংখ্যা সহজ কোনো  শর্ত পূরণ করছে কি না। )

প্রোগ্রামিং হলো কম্পিউটারকে কোনো কাজ করার অ্যালগরিদম শিখিয়ে দেওয়া। আর মানুষের মত কম্পিউটারেরও ভাষা আছে, মানুষের ভাষার মত এই ভাষাও অনেক রকম হয়। যেগুলোকে আমরা বলি প্রোগ্রামিং ভাষা। তাই একজন প্রোগ্রামার চাইলে তার পছন্দের ভাষায় কোনো কম্পিউটারকে কিছু করতে শিখিয়ে দিতে পারেন। এমন নানান ভাষা আছে, সি, সি প্লাস প্লাস, জাভা, প্যাসকেল... ইত্যাদি। মানুষের ক্ষেত্রে যেমন ভাষা ভিন্ন হলেও ভিতরে সবাই একই রকম মানুষ। কম্পিউটারের ক্ষেত্রেও তাই। নানান কম্পিউটারের প্রোগ্রামিং ভাষা বাইরে নানান রকম হলেও ভিতরে তারা একই নিয়ম নীতি মেনে কাজ করে। কৌতূহলি পাঠক হয়তো ভাবছেন কম্পিউটারকে কিছু শেখাতে যদি কম্পিউটারের ভাষাই ব্যবহার করতে হয়, তাহলে শুরুতে সেই ভাষা কম্পিউটারকে শেখায় কিভাবে? তখন আবার কোন ভাষা ব্যবহার করে ? এই অধ্যায় পড়তে পড়তে আমরা সে ব্যাপারে কিছুটা ধারণা পাবো। এবং পরবর্তীতে কম্পিউটারের অন্তর্বর্তী গঠন দেখার সময় পুরোপুরি জানতে পারবো কিভাবে পুরো কাজটা হয়।

মানুষের ভাষার কথা ভাবুন। আমরা এই ভাষার সাহায্যে রান্নাবান্নার রেসিপি থেকে শুরু করে কোনো গাণিতিক সমস্যা সমাধানের নিয়ম সব কিছুই লিখে দিতে পারি। কিন্তু কম্পিউটার সরাসরি এই ভাষা বোঝে না। আপনি হয়তো শুনে থাকবেন কম্পিউটার আসলে ১ আর ০ ছাড়া বোঝে না কিছুই! তাহলে কম্পিউটারকে কিছু শেখাতে হলে মানুষকেও সেই ১ আর ০ দিয়ে কম্পিউটারের সাথে কথা বলতে জানতে হবে। তাও কি সম্ভব? আসলে দুঃসাধ্য হলেও সম্ভব! কম্পিউটার প্রোসেসর যারা ডিজাইন করেন বা বানান, তারা এই ভাষাও বানান। কিন্তু তারা শুধু কম্পিউটার বানিয়েই থেমে যান না। কম্পিউটার ব্যবহারকারী ও প্রোগ্রামারদের জীবন সহজ করতে তারা বাড়তি কিছু কষ্ট করেন। সেটা হলো সারি সারি, ১ আর ০ দিয়েই তারা কম্পিউটারকে অল্প কিছু কাজ (হয়তো মাত্র গোটা দশেক)  করতে শিখিয়ে দেন। ধরুণ যোগ, বিয়োগ, গুণ, ভাগ বা আগের কোনো কাজ করার পরে প্রাপ্ত ফলাফল ধনাত্বক, ঋণাত্বক বা শূন্য কি না তার উপর নির্ভর করে পরবর্তী কোন কাজ করবে সেই সিদ্ধান্ত নেওয়া (কম্পিউটারের মত একটা জড় বস্তুকে এ ধরণের সিদ্ধান্ত নিতে শেখানো মোটেই সহজ নয়! তবে মানুষ এই অসাধ্য সাধন করেছে।) ইত্যাদি। একবার কম্পিউটার এগুলো শিখে ফেলার পরে প্রোগ্রামারের কাজ একটু সহজ হয়ে যায়। কারণ তখন ঐ "শূন্য-এক" এর ভাষা ছাড়াও একটা দুইটা শব্দ বুঝতে শেখে। এই অল্পকিছু শব্দওয়ালা ভাষাতাকে আমরা বলি অ্যাসেম্ব্লি ল্যাঙ্গুয়েজ।

পরবর্তীতে এই অ্যাসেম্ব্লী ল্যাঙ্গুয়েজ ব্যবহার করে তাকে শিখিয়ে দেওয়া হয় আরেকটু বড় বড় কিছু কাজ করার উপায়। এবং সেইসব কাজের নামও তাকে শিখিয়ে দেওয়া হয়। ফলে কম্পিউটারের ভোকাবুলারি বা জানা শব্দ সংখ্যা বাড়তে থাকে। কিন্তু কোনো ভাষায় শুধু শব্দ বাড়লেই তার শক্তি বাড়ে না। তার জন্য সেই সব শব্দ ব্যবহার কারার নতুন গ্রামার বা ব্যাকরণও কম্পিউটারকে শেখানো হয়। এর ফলে কম্পিউটারটির ভাষা আরো পরিণত রূপ পায়। একে আমরা বলি হাই লেভেল প্রোগ্রামিং ল্যাঙ্গুয়েজ বা উচ্চতর প্রোগ্রামিং ভাষা। সি, সি প্লাস প্লাস, জাভা, প্যাসকেল, ইত্যাদি এ ধরণের ভাষা।

আসুন আমরা একট উদাহরণের মাধ্যমে পুরো ব্যাপারটা বুঝতে চেষ্টা করি।
ধরা যাক অনেক কষ্টে একটা কম্পিউটার বানানো হলো এবং ১ আর ০ ব্যবহার করেই তাকে শিখিয়ে দেওয়া হলো মাত্র চারটা কাজ,
১) যোগ করা,
২) বিয়োগ করা,
৩) আর সিদ্ধান্ত নেওয়া!

আর আগেই বলেছি, কম্পিউটারের মত জড় বস্তুকে কোনো সিদ্ধান্ত নিতে শেখানো খুবই কঠিন। তার উপরে শুধু ১ আর ০ ব্যবহার করে সেটা করা আরো অনেক কঠিন। এখন মানুষ যখন কোনো সিদ্ধান্ত নেয় তখন সে কিছু শর্তের কথা চিন্তা করে। যেমন-  ও যদি আমাকে শুভজন্মদিন বলে, তাহলে আমি ওকে আমার বার্থডে পার্টিতে দাওয়াত দেব,... ইত্যাদি। কিন্তু কম্পিউটারকে এত জটিল সব শর্ত শেখানো খুবই মুশকিল। তাই শুরুতে সে কোনো সংখ্যার ব্যাপারে শুধু তিনটা শর্ত বুঝতে পারে!

১) প্রাপ্ত সংখ্যাটি ধনাত্বক হলে আমি ক কাজটি করবো।
২) ঋণাত্বক হলে আমি খ কাজটি করবো।
৩) আর শূন্য হলে আমি গ কাজটি করবো।

এই ক, খ, গ কাজগুলো তার জানা কাজ হতে হবে। যেগুলো হতে পারে, কম্পিউটারের মনিটরে কিছু একটা লেখা,  নতুন কোনো যোগ বা বিয়োগ করা, অথবা নতুন কোনো সিদ্ধান্ত নেওয়া!

ধনাত্বক ঋণাত্বক বোঝা সহজ কারণ কোনো সংখ্যার সামনে বিয়োগ চিহ্ন "-" আছে কি নেই, সেটা দেখেই ব্যাপারটা বুঝে ফেলা যায়। আর কোনো সংখ্যা শুন্য হলেও সেটা বোঝা সহজ।

একন এই কটি কাজের মাধ্যমে কম্পিউটারকে আরেকটু জটিল কোনো কাজ করতে শেখাতে চাই আমরা। মনে করি কাজটা হচ্ছে, দুইটি সংখ্যার মধ্যে প্রথমটা দ্বিতীয়টার চেয়ে বড় কি না সেটা বের করা।

সেটা খুবই সহজ। কম্পিউটারকে শিখিয়ে দিতে হবে।

১) ক বিয়োগ খ  (// ধরি ক আর খ হচ্ছে, আমাদের সংখ্যা দুটি। এই লাইনে এদেরকে বিয়োগ করতে বলা হচ্ছে।)
২)  যদি শূন্য হয় উত্তর "না"। (// এখানে একটা সিদ্ধান্ত গ্রহন করছি। বিয়োগফল শূন্য হবার অর্থ সংখ্যাদুটি সমান, প্রথমটা তাই দ্বিতীয়টার বড় হতে পারে না। )
৩) যদি বিয়োগফল ঋণাত্বক হয় উত্তর "না"। (// বিয়োগফল ঋণাতক হবার অর্থ দ্বিতীয় সংখ্যাটি বড়। )
৪) যদি বিয়োগভল ধনাত্বক হয় উত্তর "হ্যা"। (//ক খ -এর চেয়ে বড় হলে বিয়োগ ফল অবশ্যই ধনাত্বক হবে)

বোঝাই যাচ্ছে এই তিনটি কাজ কম্পিউটার করতে পারবে। কারণ এগুলো তাকে বানানোর সময়ই শিখিয়ে দেওয়া হয়েছে।


http://plus.maths.org/content/lagrange-and-interplanetary-superhighway
http://www.bbc.co.uk/news/science-environment-20033940

















মৌলিক গবেষণায় কম্পিউটার (note)

গণিতে ফোর কালার থিওরেম, কেপলার"স কনজেকচার ইত্যাদি প্রমাণে কম্পিউটারকে ব্যবহার করা হয়েছে। এমনকি গাণিতিক প্রমাণকে ফরমাল লজিকের মাধ্যমে অটোমেটেড করার গবেষণাও অনেকদূর এগিয়ে গেছে। কিন্তু এ তো গেল গণিত। ভৌত বিজ্ঞানের মৌলিক আবিষ্কারেও কম্পিউটার গুরুত্বপূর্ণ অবদান রাখছে আজকাল। যেমন লার্জ হেড্রন কলাইডারের কথাই ধরা যাক।

এখনো পর্যন্ত, আমাদের জানা সকল ভৌত পর্য্বেক্ষণকে ব্যাখ্যা করার জন্য যে গাণিতিক মডেলের আশ্রয় নেওয়া হয় তাকে বলে "স্টান্ডার্ড মডেল"। এই মডেল হচ্ছে, কিছু সমীকরণের
avi wigderson

Let’s go back to Q1, and to what is perhaps the largest (the budget is several billion dollars) experiment, designed to further our understanding of time, space, energy, mass and more generally the physical laws of nature. We refer to the LHC (Large Hardon Collider) at CERN, Geneva, which should be operational in about one year. The outcomes of its experiments are awaited eagerly by numerous physicists. If these do confirm (or refute) such theories like supersymmetry, or the existence of the elusive Higgs particle (responsible for mass in the current prevailing theory, the standard model), this excitement will be shared with the public at large.
But how would they know? The LHC bombards protons against each other at enormous energies, and detectors of all kinds attempt to record the debris of these collisions. There are billions of collisions per second (and the LHC will operate for several years), so the total data detected is much, much larger than what can be kept. Moreover, only a few of these collisions (less than 1 in a million) provide new information relevant to the searches above (most information was already picked up by previous, less sensitive colliders, and helped build up the current theories). So ultrafast on-line computer decisions have to be made to decide which few information bits to keep! The people who wrote these programs have designed and implemented an efficient recognition device for new knowledge! Needless to say, the programs that would search and analyze the kept data (20-mile high stack of cd’s of it), would have to be designed to efficiently find something new. Ultimately, we would like programs that would analyze the data and suggest new models and theories explaining it directly.
But clearly, such huge investment of resources would never take place if we were not convinced that new phenomena, if observed, could be efficiently recognized. 

Tuesday, October 23, 2012

Hearing the shape of a drum

একেক ধরনের বস্তুতে টোকা দিলে একেক রকম শব্দ হয়। গাণিতিকভাবে দেখলে, শব্দের এই ভিন্নতাটাকে ব্যাখ্যা করা যায় তাদের স্পেক্ট্রাম বা ফুরিয়ার কোইফিশিয়েন্টের পার্থক্য থেকে। (এই ব্যাপারটার কারণেই একেকজনের কন্ঠ একেক রকম হয়, এবং আমরা কন্ঠ শুনেই তাদের পার্থক্য করতে পারি)। তো প্রশ্নটা হলো, কোনো বস্তুর স্রেফ এই শব্দ শুনেই কি বস্তুটির আকার পুরোপুরি অনুমান করা সম্ভব? জ্ঞানের এই শাখাকে বলে "স্পেক্ট্রাল জিওমেট্রি"।

মজার ব্যাপার হলো, ভ্যাকুয়াম ফ্লাক্সুয়েশনকে কোয়ান্টাম ফিল্ডের একরকম শব্দ ভাবা যেতে পারে। এবং শেই শব্দ শুনে, পুরো স্পেসটাইমের শেইপটা অনুমান করা "হয়তো" সম্ভব। আর গ্রাভিটি হচ্ছে, বিভিন্ন বস্তুর প্রভাবে কিভাবে স্পেসটাইম কার্ভ হচ্ছে, তার হিসাব নিকাশ। ওদিকে ভ্যাকুয়াম ফ্লাক্সুয়েশনকে সহজেই (ইন প্রিন্সিপ্যাল) কোয়ান্টাম কম্পিউটারে মডেল করা সম্ভব। এবং এভাবে কোয়ান্টাম গ্রাভিটিকে ট্যাক্ল করা যেতে পারে।

সমীকরণগুলো স্বভাবতই বেশ জটিল। কিন্তু ছোট খাট অবজেক্টের ক্ষেত্রে পার্টারবেটিভ মেথডে, শব্দ শুনে মূল আকৃতি খুঁজে বের প্রোগ্রাম করা হয়েছে। এবং এখনও পর্যন্ত করা সকল নিউমেরিক্যাল সিমুলেশনেই বস্তুর মূল আকৃতি খুঁজে পাওয়া সম্ভব হয়েছে। এসব বিষয়ে পরে লিখবো। 

Thursday, October 18, 2012

একটু খানি কম্পিউটার বিজ্ঞান

এখন বেশ রাত হয়ে গেছে, এমন সময় আমার মাথায় সাধারণত চমৎকার কোনো আইডিয়া আসে না। নিচের লেখাগুলো আসলে লিখেছি এই লাইনটা লেখার আগেই। একটা বই যদি এই রেসিপি অনুযায়ী লেখা হয়। তাহলে খুবই বোরিং হবে। অন্যরকম ভাবে ভাবতে হবে। মূল কথা হলো, কম্পিউটার বিজ্ঞান সম্পর্কে হাই স্কুল লেভেলের শিক্ষার্থীদের একটা ধারণা দেওয়া। কম্পিউটার বিজ্ঞান নিয়ে আমি যতটা উদ্দিপনা বোধ করি, সেটা পাঠকের সাথে শেয়ার করে নেওয়া। যাই হোক, নাই মামার চেয়ে কানামামা যেহেতু ভালো সেহেতু, নিচের লেখাগুলো রেখে দিচ্ছি। আমার বই টা "কি নয়" অন্তত সেটার একটা তালিকা হয়ে থাক! হা হা হা .....

কম্পিউটার ও কম্পিউটার বিজ্ঞান
এই অধ্যায়টা এমন ভাবে লিখতে হবে যেন কম্পিউটার সম্পর্কে মৃদু কৌতুহল আছে কিন্তু কোনো রকম ব্যাকগ্রাউন্ড নেই তেমন পাঠক এটাকে বুঝতে পারে। এবং কম্পিউটারের জগত সম্পর্কে আগ্রহী ও কৌতূহলি হয়ে ওঠে।
আলোচ্য বিষয়ে থাকতে পারে
১) কম্পিউটার ইঞ্জিনিয়ারিং কি
২) তাত্তবিক কম্পিউটার বিজ্ঞান ও কম্পিউটার ইঞ্জিনিয়ারিং এর পার্থক্য।
৩) কম্পিউটার বিজ্ঞানের নানান শাখা ও বাস্তবজীবনে তাদের অবদান।
৪) এ বিষয়ে গবেষণার সুযোগ। দেশ বিদেশে সুপরিচিত আমাদের দেশের কম্পিউটার গবেষকরা।
৫) ক্যারিয়ার পাথ।

প্রোগ্রামিং
প্রোগ্রামিং বোঝাতে একটা গেইম এর কথা ভাবা যেতে পারে।
দুই বন্ধুর মধ্যে একজন শুধু ভাগ করতে জানে। অন্য বন্ধুটি তাকে লাল আর সবুজ কার্ডে লিখে দুইটি নাম্বার (ভাজ্য ও ভাজক) দেবে। দিলেই সে এদের ভাগশেষ জানিয়ে দেবে। পরে বন্ধুটি লাল কার্ডে সবুজ কার্ডের নাম্বারটা লিখে আর সবুক কার্ডে নতুন নাম্বারটা দিয়ে আবার আগের বন্ধুর হাতে দেবে। এভ্য এক সময় আগের বন্ধুটি ভাগশেষ শূন্য জানাবে। তখন অ্যালগরিদম টার্মিনেট করেছে বলে ধরে নেওয়া হবে ।

এই অ্যালগরিদমের সঠিকথার প্রমাণ দেওয়া হবে অধ্যায়টির লেখাটির শেষে।
অধ্যায়ের শুরুতে আমাদের অ্যালগরিদম চ্যাপ্টারের মত ক্রে ধাপে ধাপে অ্যালগরিদম।
এর পরে একটা ফ্লো চার্টের মাধ্যমে সেটা দেখানো হবে।
এর পর সুডোকোড লিখে দেখানো হবে।
এর পর এই প্রোগ্রাম সি, বা পাইথনে করে দেখানো হবে।

কম্পিউটারের ভাষা
এখানে প্রসেসরের গঠন। তথ্য কিভাবে এক আর শুন্যের সাহায্যে প্রকাশ করা হয় ইত্যাদি দেখানো হবে। এবং এই কম্পিউটারকে দিয়ে কাজ করানোর জন্য কিভাবে বাইনারি মেশিন ল্যাংগুয়েজ ব্যবহৃত হয়। সেখান থেকে কিভাবে অ্যাসেম্ব্লি ল্যাংগুয়েজ হয়ে হাইলেভেল প্রোগ্রামিং ল্যাংগুয়েজ তৈরি করা হয় সেসব।




Monday, October 15, 2012

ছয় ধাপে অ্যালগরিদম


অ্যালগরিদম চারিদিকে,

যোগের অ্যালগরিদম
গুণ, ভাগ, ইন্টিগ্রেশন, ডিফারেন্সিয়েশন ইত্যাদির অ্যালগরিদম।

ছবি এঁকে অ্যালগরিদম। (ফ্লো চার্ট)

কার্ডে লিখে লিখে গসাগু গণনা। যেখানে এক বন্ধুকে লাল কার্ড আর সবুজ কার্ডে সংখ্যা দুটি লিখে দিলে সে ভাগ করে অবশিষ্ট জানিয়ে দেয়।

গুণ করতে পারলে একটা সংখ্যা তালিকা থেকে বলে দেওয়া কিছু সংখ্যা বাদ দিয়ে বাকি সংখ্যাগুলো দ্রুত গুণ করে বলতে পারা।

একাধিক অ্যালগরিদমের মধ্যে কোনটি সেরা। 

Monday, October 1, 2012

এখনই যা করা দরকার


অনেক কিছুর টানাপেড়নে দ্বিভগ্ন-ত্রিভগ্ন হয়ে আছি। এই মুহুর্তে কি কি করা দরকার ভাবি।
১ এনট্রপি নিয়ে নিলসেন চুয়াং এর  চ্যাপ্টারটা পড়া দরকার।
২ পিসিপি থিওরেমটা পড়া দরকার
৩ পি আর এল এ প্রকাশিত স্টেট ডিস্ক্রিমিনেশন পেপারটা পড়া দরকার
৪ ফাইনম্যানের বই থেকে পরবর্তি চ্যাপ্টার পড়া দরকার
৫ আমার পেপারটার ফাইনাল প্রুফ জমা দেওয়া দরকার
৬ বিচ্ছিন্ন গণিতের অন্তত দুটো অনুচ্ছেদ লেখা দরকার
৭ গেমথিওরির উপর লেখা বইটা পড়ে শেষ করা দরকার
৮ কোয়ান্টাম কম্পিউটিং নিয়ে আর্টিকেলটা শেষ করা দরকার
৯ দেশে পোলাপাইনদের খোঁজ নেওয়া দরকার।

বাঙালি - হুমায়ূন আজাদ

ছেলেবেলায় ছড়া শুনেছিলাম, বাঙালি মানুষ নয়, জন্তু। শুনে নিজের জাতি সম্পর্কে সন্দেহ জেগেছিলো; তবে বিশ্বাস হারাই নি। মানুষের ওপর বিশ্বাস হারানো নাকি পাপ; আর একটা পুরো জাতির ওপর বিশ্বাস হারানো তো মহাপাপ। ছেলেবেলায় অতো বড়ো পাপের সাহস হয় নি। রবীন্দ্রনাথ লিখেছিলেন, ‘সপ্তকোটি সন্তানেরে হে মুগ্ধ জননী/রেখেছ বাঙালি ক’রে মানুষ করো নি।’ এখানে ‘বাঙালি’ শব্দটির অর্থ কী? অন্নপায়ী বঙ্গবাসী স্তন্যপায়ী জীবদের জ্বালায় কি অত্যন্ত অতিষ্ঠ হয়েছিলেন বাঙালির মহাকবি? শেষ জীবনে কেনো তিনি জানিয়ে গেলেন, বাঙলায় আর নয়? যদি আবার জন্ম নিতে হয়, তাহলে হেথা নয়, হেথা নয়, অন্য কোথা, অন্য কোনোখানে। বাঙলায় নয়। বাঙালির চরিত্র দেখে দেখে ঘেন্না ধ’রে গিয়েছিলো তাঁর মনে। জীবনানন্দ শালিকটালিক হয়ে জন্মাতে চেয়েছিলেন, বাঙালি হিশেবে নয়। বিদ্যাসাগর শেষ জীবনে বাঙালির ওপর বিশ্বাস হারাতে হারাতে মানুষের ওপরেই বিশ্বাস হারিয়ে ফেলেছিলেন। বঙ্কিমচন্দ্র ঈশ্বর গুপ্তকে বলেছিলেন ‘খাঁটি বাঙালি’ কবি। খাঁটি হওয়া খুব ভালো, তবে তিনি এও জানিয়ে দিয়েছিলেন, বাঙলার অবস্থা আবার অধঃপতনের দিকে না গেলে খাঁটি বাঙালি কবি ‘জন্মাবে না, জন্মিয়া কাজ নাই’। দেখতে পাচ্ছি প্রধান বাঙালিরা সবাই বিরূপ বাঙালির ওপর। নিশ্চয়ই বাঙালির কোনো অসামান্য প্রতিভা রয়েছে, যা এমনভাবে হতাশ, বিরূপ, অবিশ্বাসী করে মহৎদের। মিলটনের স্বর্গচ্যুতি মহাকাব্যে স্বর্গ থেকে বহিস্কৃত শয়তান বঙ্গোপসাগর এলাকা দিয়েই নেমেছিলো পৃথিবীতে। ওই প্রথম পতনের সংস্পর্শ কি বাঙালিকে চির অধঃপতিত করে রেখেছে? মালার্মে একটি কবিতায় এমন একটি পাখির কথা বলেছেন, যার বিলুপ্তি আসন্ন। ওই পাখিকে তিনি তুলনা করেছেন বাঙালির সাথে। বাঙালি কি তবে সেই নিয়তিদণ্ডিত জাতি, যার ভাগ্যে রয়েছে শুধু নিন্দা, আর অবলুপ্তি?


পৃথিবীর প্রতিটি জাতিরই কোনো-না-কোনো সদগুণ রয়েছে। স্বাতন্ত্রিক বৈশিষ্ট্য রয়েছে। ওই বৈশিষ্ট্য তাকে পৃথক ক’রে রাখে অন্যান্য জাতি থেকে, ক’রে রাখে বিশিষ্ট। বাঙালির কি অমন কোনো বৈশিষ্ট্য রয়েছে? রয়েছে কোনো সদগুণ? তেমন কোনো বৈশিষ্ট্য সম্ভবত বাঙালির নেই। বাঙালির চরিত্রে গুণের থেকে দোষের পরিমাণ যে অনেক বেশি তাতে সন্দেহ নেই। এ জন্যেই তার প্রধান পুরুষেরা বিরূপ তার ওপর। মধুসূদন কি বাঙালি ছিলেন, বাঙালি ছিলেন বঙ্কিমচন্দ্র, রবীন্দ্রনাথ? বিদ্যাসাগর কি বাঙালি ছিলেন, বাঙালি ছিলেন বাঙলার অন্যান্য মহাপুরুষ? মনে হয় তাঁরা বাঙালি ছিলেন না। বাঙালি জাতির প্রধান পুরুষ বা মনীষী তাঁরাই, যাঁরা পেরিয়ে যেতে পেরেছিলেন বাঙালিত্বকে। তাই প্রধান বাঙালি হ’তে হ’লে হ’তে হবে অবাঙালি। হয়তো চরিত্র অর্জন করতে হবে জর্মনের, বা ইংরেজের, জাপানির বা চীনের, ফরাশির বা মার্কিনের বা রুশির। খাঁটি বাঙালি হয়ে মহৎ বাঙালি হওয়া অসম্ভব। বাঙালি বলতে বোঝায় সামান্যতা, হীনতা, তুচ্ছতা। তার চরিত্রের বদগুণের বীজ কিলবিল করে।


কী কী মুক্তোয় খচিত সোনার বাঙালির সোনার চরিত্রটি? বাঙালির চরিত্রমুকুটের কোহিনূর কোনটি বলা মুশকিল, প্রতিটিই রঙে শোভায় আকারে হারিয়ে দিতে চায় প্রতিটিকে। তাই ঐসব মণিমুক্তোর তালিকা ক্রম রেখে তৈরি করা কঠিন। খুব বড়ো ধরনের গবেষণাপ্রকল্প দরকার। বাঙালি মিথ্যুক। মিথ্যা ব’লে চালিয়ে দিতে পারলে সত্য বলার কষ্টটুকু করবে না। বাঙালি প্রতারক। প্রতারণা করতে পারলে বাঙালি বিশেষ তৃপ্তি পায়। আরেকটি প্রতারককে ঠকাতে পারা কি অসামান্য সুখ আর গৌরবের কথা নয়? ব্যবসায় তো প্রতারণাই ধর্ম। দলবেধে ব্যবসায় নেমে বাঙাল এবং একজন অন্যদের ঠকিয়ে বাড়িগাড়ি করে। দু-দিন আগে মুদি দোকান থেকে বাসায় একটি ঠোঙা আসে। তাতে লেখা একটি চিঠি। পত্রলেখক লিখেছেন, ‘আপনার সঙ্গে আর ব্যবসা করিব না। নামাজ-রোজা করেন দেখিয়া ভাবিয়াছিলাম আপনি সৎ। এখন দেখিলাম আপনি অসৎ। আগামী কাল আমার মালগুলি ফিরত দিবেন। নইলে ভালো হইবে না’। প্রতারণা চলছে দিকে দিকে, প্রতারণা ছাড়া বাঙালির ঘরে আলো জ্বলে না। বাঙালি ভণ্ড। ভণ্ডামোতে একশো নম্বর দিতে হবে তাকে। যা বিশ্বাস করে না, তা অবলীলায় ব’লে যাবে। আমলা কবিদের কবিতা প’ড়ে দেখুন। কী দারুণ বিপ্লবী আর প্রগতিশীল তারা। স্যার, স্যার বলতে বলতে থুতু উপচে পড়ছে; কিন্তু কবিতা লিখতে বসলেই বিদ্রোহী, প্রতিবাদী। জনগণের সাথে একাত্ম। বাঙালি চিন্তা করে, চিৎকার করে। আসুন বিশ্ববিদ্যালয়ের বারান্দায়, দেখবেন ইলশের বাজারকে ছাড়িয়ে গেছে জ্ঞানকেন্দ্রের করিডোর। অফিসে যান, দেখবেন নিজের টেবিলে কেউ নেই; দোস্তের টেবিলে ব’সে গলা ফুলিয়ে চিৎকার ক’রে চলেছে দায়িত্বশীল বাঙ্গালিগণ।


বাঙালি অলস; বাঙালি ফাঁকি দিতে পারলে ধন্য বোধ করে। কাউকে একটা কাজ দিয়ে চ’লে আসুন, দেখবেন সেটির ওপর কেমন দায়িত্ব পালন চলছে। তাড়া না দিলে এ-গাধা চলে না। লোভের কথা বলবো? লোভে তো লকলক করে বাঙালির সমস্ত শরীর। শরীরটাই একটা বড়ো জিভ হয়ে ওঠে। বাঙালি স্বৈরাচারী ও ক্রীতদাস। ওপরে যে আছে, তার মতো শক্তিমান আর কেউ নেই। তার কথাই শেষ। সে সব জানে, সব বোঝে। নিয়মগুলো তৈরি হয়েছে শুধু সে খানখান ক’রে ভেঙে ফেলবে ব’লে। যাচ্ছেতাই না করতে পারলে শক্তির প্রকাশ কোথায়? প্রতিটি অফিসে একেকজন অসামরিক জেনারেল ব’সে আছেন। বাহুতে বুকে শেলাইকরা তারাটারা নেই, কিন্তু শতোশতো তারা জ্বলছে ব্যক্তিত্বে। অফিসের বড়োবাবুকে সম্মান জানাতে হয়; ‘স্যার’ বলতে হয়। আজকার তার তাতে চলছে না, তাই ‘শ্রদ্ধেয় স্যার’ বলতে হয়। না ব’লে উপায় নেই, নিচের সবাই দাস। জনগণের পয়সায় কেনা দাস। আবেদনপত্র লিখতে হ’লেই সম্বোধন করতে হয় ‘মাননীয়’, ‘মহামান্য’। যে-কোনো অফিসের বড়োসাহের সচিবালয়ের বড়োসাহেবের কাছে গেলেই আবার ক্রীতদাস। লেজ নড়তে থাকে, লেজ নড়তে থাকে। ডারউইনি লেজটি তার মুখগহ্বরে। অন্যরা বানরের বংশধর হ’তে পারে, বাঙালি প্রভুভক্ত জীবের বংশধর; তবে বাঙালি প্রভুভক্ত নয়। বাঙালি মিথ্যুক প্রতারক, ভণ্ড, অলস, স্বৈরাচারী, ক্রীতদাস, চিৎকারপরায়ণ, কাপুরুষ, লোভী, পরশ্রীকাতর, নিন্দুক, গোপনে কামুক প্রকাশ্যে সন্ত, নির্লজ্জ, অসুস্থ, চক্রান্তপরায়ণ, বিশ্বাসঘাতক, দায়িত্বহীন, সময়জ্ঞানহীন, অবিবেচক, নির্মম, অমানবিক, অনুদার, অসৎ, পরপীড়ক, অগণতান্ত্রিক, বিলাসী, খল, যুক্তিহীন বাচাল এবং আরো একশো একটি মুক্তোর সমষ্টি। এ-জন্যেই হয়তো পরাধীন থেকেছে শতাব্দীর পর শতাব্দী। যে-ই বিদেশ থেকে হানা দিয়েছে, তার কাছে আত্মসমর্পণ করেছে বাঙালি। মধ্যযুগে খুব বড়ো বাঙালির পরিচয় বিশেষ পাওয়া যায় না। বড়ো বাঙালিরা আবির্ভূত হতে থাকে উনিশশতকে।


উনিশশতকই হচ্ছে মহৎ বাঙালিদের শতাব্দী। এই মহতেরা কীভাবে জন্মালেন? এর একটা কারণ সম্ভবত ইংরেজদের সংস্পর্শ। ইংরেজের চরিত্রের যে-প্রচণ্ড শক্তি, তার কিছুটা সংক্রামিত হয়েছিলো বিদ্যাসাগর, রামমোহন, মধুসূদন, রবীন্দ্রনাথ ও আরো কারো কারো চরিত্রে। খাঁটি বাঙালিরা মহৎ বাঙালি নয়, বাঙলার বিবর্তনে তাদের কোনো অবদান নেই। বিশশতকেও যাঁরা প্রধান হয়েছেন, তাঁরা খাঁটি বাঙালি নন, তাঁদের মধ্যেও ইউরোপীয় চরিত্রের মিশেল রয়েছে। সুভাষ বসু বাঙালি? মনে হয় জাপানি বা জর্মন। সুনীতিকুমার চট্টোপাধ্যায় বাঙালি? বাঙালি হ’লে তো দু’একটি ছিঁচকে বই লিখেই শিষ্যদের মুখে মুখে অমর মনীষী হয়ে যেতেন। তিনি যে-বিশাল বই লেখার দুঃসাহস দেখালেন, এতে তাঁকে জর্মন না মনে ক’রে উপায় নেই। এমন উচ্চাভিলাষ কি বাঙালির আছে! বাঙালি ক্ষুদ্র এবং চারপাশের সবকিছুকে ক্ষুদ্র ক’রে রাখতে চায়। এর প্রমাণ পাই বাঙালির প্রিয় প্রবাদে। ভূয়োদর্শী প্রবাদপ্রণেতা পরামর্শ দিয়েছেন, বেশি বড়ো হয়ো না ঝড়ে ভেঙে পড়বে, বেশি ছোটো হয়ো না ছাগলে খেয়ে ফেলবে। বাঙালি আকাশচুম্বী হবে না, তার দর্শন ছাগলের নাগালের ওপরে ওঠা। কিন্তু অধিকাংশই উঠতে পারে না। বাঙালি, তুমি কবে তোমার চরিত্রের মুক্তোগুলো খুইয়ে মানুষ হবে?

হুমায়ূন আজাদের এই লেখাটি সংগ্রহ করেছি Anik Andalib-এর ফেসবুক পাতা থেকে। 

Wednesday, September 5, 2012

বিচ্ছিন্ন গণিত - ৩

আস্তে আস্তে লিখে ফেলার পরিকল্পনা করেছি। সমস্যা হচ্ছিলো লেখার মাধ্যম নিয়ে। পুরাতন ল্যাপটপটা অকেজো হয়ে পড়ে আছে কিছুদিন। আমার আলস্যেই ঠিক করা হচ্ছে না। এদিকে ম্যাক এ বাংলা অঙ্কুর ব্যবহার করি। এটা বাংলা থেকে ইংরেজীতে সুইচ করার কীবোর্ড শর্টকাট খুঁজে পাইনি। ফলে গণিত টেক্সটে ফর্মূলা গুলো কিভাবে বসাবো তাই নিয়ে বিপদে পড়ে গেছিলাম। বাক্যের মধ্যে অনেকবার ইংরেজী কীবোর্ডে যেতে হবে।
কিন্তু সমাধানটা হাতের কাছেই ছিলো। উইকিপিডিয়া। বাংলা উইকিপিডিয়ার ওয়েব ফর্মে নানান রকম কীবোর্ড আছে। এবং সেখানে কীবোর্ড শর্টকাট ব্যবহার করে বাংলা/ইংরেজি টগল করা যায়। এমনকি ল্যাটেক ফরম্যাটে লিখলে ইকুয়েশনও রেন্ডার করতে পারে। ভাবছি ঐ ওয়েব ফর্মকেই আমার এডিটর হিসাবে ব্যবহার করবো।

একটা জিনিস বুঝতে পারছি। গণিত বই সাহিত্যের মত করে লিখলে হবে না। মানে গল্প লেখার সময় যেমন, একটা ফ্লোর মধ্যে লিখে ফেলে মানুষ পরে মাইনর পরিবর্তন করে। গণিতে এটা করা যাবে না। প্রথম ইটারেশনে এসেনশিয়াল জিনিসগুলো লিখতে হবে। মানে, একেবারে কাঠখোট্টা একটা পূর্ণাঙ্গ বর্ণনা। এভাবে একটা অধ্যায়ের ফ্রেমওয়ার্ক দাড়িয়ে গেলে, নিজিস্ব চিন্তা, উদাহরণ, ব্যাখ্যা বিশ্লেষণ যোগ ককরতে হবে।

যাইহোক, লেখা নিয়ে আমার থিওরীস্ট বনাম এক্স্পেরিমেন্টালিস্ট ধরণের এক রকম খেলা চলবে মনে হচ্ছে। হয়তো লিখতে বসে আবিষ্কার করবো এই পদ্ধতি ভালো মত কাজ করছে না। তখন নতুন প্ল্যান অফ অ্যাকশন বের করতে হবে। দেখা যাক। 

Monday, August 27, 2012

বিচ্ছিন্ন গণিত - ২

একটা সময় পর্যন্ত আমি খুব আগ্রহ করে পাবলিক ব্লগে লিখেছি। এখনো ইচ্ছাটা আছে, কিন্তু নানা কারনে আগ্রহটা কমে গেছে। যাকগে সে আলাপ পরে। আপাতত এই পোস্টটা লিখছি, ভাবনা গুছিয়ে নেওয়ার জন্য। কারণ, " লেখা হচ্ছে গুছিয়ে ভাবা"। বইয়ের অধ্যয়ায় গুলো যেভাবে সাজানো হবে সেই ক্রমেই লিখতে হবে তেমন কোনো কথা নেই। বই লেখাটা হচ্ছে সিনেমা বানানোর মত। যখন যে শট নিলে অপটিমাল হয় সেটা নিয়ে রাখতে হবে। পরে সাজিয়ে গুছিয়ে কেটে ছিড়ে মিলিয়ে একটা সুন্দর বই বানিয়ে ফেললেই হলো। ইনফ্যাক্ট সিনেমাকে অনেকে ব- ই বলে। হা হা হা!

শুরু করতে হবে সেট দিয়ে। তারপর রিলেশন, ফাংশন, ওয়েল অর্ডারিং প্রিনসিপাল, ইনডাকশন, ক্লোজার, ইকুইভ্যালেন্স ক্লাস এভাবে এগোবে।

সেট- সেটকে ফান্ডামেন্টাল ম্যাথমেটিক্যাল অবজেক্ট হিসাবে বর্ণনা করতে হবে। সেট নিয়ে মজার মজার, প্রবলেম দেওয়া যেতে পারে। টাইপ-সেট আপাতত এম এস ওয়ার্ডেই করবো। ইকুয়েশনগুলো হাতে একটা ডায়েরীতে লিখে রাখতে হবে। বইয়ের লেখায় স্রেফ কথাগুলো থাকবে। ইকুয়েশনগুলোর জন্য প্লেস হোল্ডার রেখে দেব। পরে হয়তো ল্যাটেকে টাইপসেট করবো। এই পোস্টে যে বিষয়গুলোর কথা লিখলাম সেগুলো লেখা শেষ হলে বন্ধুদেরকে কপি দেওয়া যেতে পারে। একটা ব্যক্তিগত ওয়েবসাইট ও চালু করতে হবে। কিন্তু এখন ওসব নিয়ে ভাবতে চাচ্ছি না।

একটা সময় পর্যন্ত ভাবতাম এমন বই লিখতে হবে যেটা সবার কাজে লাগবে। কিন্তু পৃথিবীর কোনো বইই "সবার" কাজে লাগে না। এমন কি সব কম্পিউটার বিজ্ঞানী-ইঞ্জিনিয়ার-প্রোগ্রামার হতে ইচ্ছুকরাও উপকৃত হবে সেটা ভাবারো কারণ নেই। একটা পার্টিকুলার বিষয়ের জন্য প্রস্তুত মাইন্ডসেটের পার্টিকুলার শতাংশ মানুষ থাকে। আমাদের দেশে কোটি কোটি মানুষ হওয়ার সুবিধা হলো, এই পারসেণ্টেজ যতই কম হোক, মোট সংখ্যাটা কম নয়। এবং এদের অনেকেই হয়তো রিসোর্সের অভাবে এগোতে পারছে না। তাদের লক্ষ্য করেই লেখা হবে বইঅটা। সব কিছু শিখিয়ে ফেলার বদলে, একটা স্মুথ স্টার্টিং পয়েন্ট দেওয়াটাই লক্ষ্য। এগুলো ভালো লাগলে, এবন শিখতে পারলে "ধারণার" অংশটা কিছুটা পরিণত হবে। তখন তারা বড় বড় এবং আরো সুন্দর সব বই নিজে থেকেই পড়তে পারবে বলে মনে করি। শুধু এটুকু কন্ট্রিবিউট করাটাই উদ্দেশ্য। 

বিচ্ছিন্ন গণিত - ১

বিচ্ছিন্ন গণিতের (ডিস্ক্রিট ম্যাথ) একটা বই লেখা যেতে পারে। ইংরেজীতে এত এত সুন্দর বই আছে এই বিষয়ে। কিন্তু বাংলায় নেই। এই ব্যাপারটা দুর্ভাগ্য জনক। আমার যদি অনেক বড় প্রতিষ্ঠান থাকতো। তাহলে আমি কিছু মানুষকে নিয়ে রোজেনের ডিস্ক্রিট ম্যাথ বইটা অফিসিয়ালি অনুবাদ করার প্রোজেক্ট হাতে নিতাম। কিন্তু সেটা সম্ভব না। আর এসব বই অনুবাদ করার পরে প্রকাশ করা নিয়ে ঝামেলায় পড়তে হয়। আমাদের দেশে প্রকাশকরা প্রফেশনাল না। স্টিফেন হকিং এর দ্য গ্রান্ড ডিজাইন অনুবাদ করার পরে প্রকাশ করতে পারিনি। কপিরাইট ব্লা ব্লা, এসবের যে আইনগত জটিলতা সেটাও যদি লেখক/অনুবাদককে সামলাতে হয় তাহলে আর প্রকাশনা সংস্থার কাজটা কি হলো? বিজ্ঞান এর বই এর জন্য ভালো এডিটর ও তারা জোগাড় করে দিতে পারে না। বাংলাদেশে বিজ্ঞান, বা টেকনিক্যাল বিষয়ের বই ছাপানো একটা নিঃসঙ্গ জার্নি। ঘরের খেয়ে বা না খেয়ে, বনের মোষ, সিংহ, হাতি, শিয়াল সব কিছু এক সঙ্গে তাড়ানোর তুল্য। যাকগে এসব কথা রাখি।

এখন এই যেহেতু অবস্থা, সেহেতু ঐসব সুন্দর বই এর অনুবাদ করা সম্ভব হবে না। নিজেকেই কিছু মিছু লিখতে হবে। ইন ফ্যাক্ট একটা ইম্প্যাক্টফুল বই লেখার জন্য রোজেনের মত এত বড় কলেবরে বই লেখার দরকারও নেই। বেসিক বিষয়গুলো কভার করলেই হবে। আমরা আজকাল ইংরেজী মুভি দেখে দেখে অনেক ইংরেজী শিখেছি। আমি জখন স্কুল কলেজে পড়তাম তখন এতটা ইংরেজী জানতাম না, আশেপাশেও অত ইংরেজী জানা ছেলেমেয়ে দেখিনি। কিন্তু ইংরেজ দেশেও লেখাপড়া না করলে ঠিকই মানুষ মূর্খ হয়। এমন কি বই এর সাথে সম্পর্ক না থাকলে ইংরেজীতে এত শত কোটি ইন্টারেস্টিং বই থাকা সত্তেও তারা পড়তে ব্যর্থ হয়। যেখানে ইংরেজী পড়তে জানা আর ইংরেজী বই পড়তে জানার মধ্যেই যোজন যোজন তফাত, সেখানে ইংরেজী মুভি দেখে শেখা ইংরেজী নিয়ে ডিস্ক্রিট ম্যাথের বই পড়া দুধের শিশুকে খাশির রেজালা খাওয়ানোর মত ব্যাপার। বদ হজম জার একমাত্র গন্তব্য। এবং তা-ই হচ্ছে।

যাকগে এসব ভাষা-রাজনৈতিক আলাপ রাখি। মূল কথা যেটা বলতে চাচ্ছিলাম, আমাদের দেশের ছেলেমেয়েরা অনেকটা ইংরেজী শিখে ফেললেও, ইংরেজীতে ডিস্ক্রিট ম্যাথ এর মত বই পড়তে শিখেনি। এবং কম্পিউটার বিজ্ঞান পড়তে গেলে যেহেতু খুব শুরুর দিকেই তাকে এই বিষয় শিখতে হয়, সেহেতু অপরিণত মনের উপর চাপ পড়ে যায়। কারণ বিষয়টা বেশ কনসেপচুয়াল। অনেকটা খুড়িয়ে খুড়িয়ে হিমালয় পড়া দেওয়ার মত হয়। হিমালয় যতই সুন্দর হোক, হিমালয় পাড়ি দেওয়া যতই রিওয়ার্ডিং হোক, খুড়িয়ে হিমালয় পাড়ি দেওয়া সহজ কথা নয়। অতয়েব, বাংলায় বিচ্ছিন্ন গণিতের মূল ও মৌলিক বিষয়গুলো নিয়ে লিখতেই হচ্ছে। দেখা যাক এর কোনো উপকারিতা আছে কি না। এই বই লেখার সিদ্ধান্ত কেন নিলাম, বা ইত্যাদি পিছনের ব্যাপার স্যাপার নিয়ে তাই আমি আর মাথা ঘামাবো না। এই ব্লগে বইটা কিভাবে তিলে তিলে গড়ে তুলছি তার একটা ক্রোনলজি সংরক্ষণ করার ইচ্ছা। যেমন নেক্স্ট পোস্টে প্রথমে কি বিষয় নিয়ে লিখতে শুরু করবো সেগুলো নিয়ে ভাববো। 

Thursday, August 23, 2012

গাৎচোরেৎশালা বা যে কারণে হচ্ছে না

কোয়ান্টাম তত্বের মূল ব্যাপারটা হলো কোয়ান্টাম লজিকএ। মানে আমাদের ক্লাসিক্যাল যে বৈজ্ঞানিক অভিক্ষা, তার পুরোটাই চলে আমাদের পরিচিত লজিক্যাল সিস্টেম এ বেইজ করে। কোয়ান্টাম লজিক একটু আলাদা। কারণ আর কিছু না, প্রকৃতি ঐ লজিক মেনে চলে। কম্পিউটার হার্ডওয়ার এর ডিজাইন নিয়ে যাদের একটু জানাশোনা আছে তারা যেমন জানেন, ক্লাসিক্যাল কম্পিউটারের পুরো ডিজাইনটাই হয় বুলিয়ান অ্যালজ্যাব্রা, ফার্স্ট অর্ডার সেকেন্ড অর্ডার লজিক এসব খাটিয়ে। কোয়ান্টাম কম্পিউটার ডিজাইন করতে তাই এই কোয়ান্টাম লজিক দরকার। মজার ব্যাপার হলো প্রকৃতিকে বর্ণনা করতেও পুরাতন লজিক আর খাটবে না। এটা এমন এক ধরনের প্যারাডাইম শিফ্ট যে আমাদের মনে যে ভৌত বাস্তবতার চিত্র, সেটাকে কোয়ান্টাম রূপায়নে পরিবর্তন করা বেস সময়, সাধনা ইত্যাদির ব্যাপার হয়ে যায়।

যাই হোক, মনে হচ্ছে এই মূল জিনিশটা ধরতে পেরেছি। এসব ক্ষেত্রে আমার যেটা হয়, সাধারণের বোধগম্য করে কিভাবে কথাটা বলা যায়, তাই নিয়ে মাথা খাটাতে থাকি। করছিলামও তাই। একটা হাইপোথেটিক্যাল দাবার কোর্টে শুধু ঘোড়াগুলো যদি কোয়ান্টাম মেকানিক্স এর নিয়ম মেনে চলে তাহলে খেলাটা কি পরিমান এক্সাইটিং হয়ে যাবে ভাবতে ভাবতে, সাজিয়ে নিচ্ছিলাম তেমন একটা উদাহরণ। এরই ফাকে ফাকে ফাইনম্যানের বইটা থেকে পড়ছি, নতুন নতুন সমীকরণ, সমস্যা এসব নিয়েও মাথা খাটাচ্ছি। কিন্তু আজকাল যেটা হয়, যতোই এক্সাইটিং জিনিস পড়ি না কেন, ঘন্টা তিনেক পরে ঠিকই কেমন একটা ঝিমানি আসে। আজকেও এলো। আর অমনি মাথার মধ্যে বেজে উঠলো একটা শব্দ। "গাৎচোরেৎশালা!" এ কি এই বিদঘুটে শব্দ মাথায় এলো কিভাবে! এমনিতেই মেমরী কম, তার কতগুলো বাইট বেদখ্ল হয়ে গেল এই শব্দে!!

তখনই মনে পড়লো আজ সকালে পুরোনো পাপটা আবার করেছি। সেই নীল আইকনটায় টাচ করেছিলাম। ফেসবুক খুলে যাবার পরে মাত্র কয়েক পলক হয়তো ওপেনও ছিলো। কুলদা রায়ের স্টাটাস থেকে তখন এই ভয়ানক অপ্রয়োজনীয় তথ্যটি আমার মাথায় ঢুকে গেছে। তার কোনো পুরাতন শত্রু নাকি এখন পাগল হয়ে এই শব্দ বলতে বলতে রাস্তায় রাস্তায় ঘোরে।

ততক্ষণে ঝাকি দিয়ে সম্বিত ফিরে পেয়েছি। হাতের সমস্যাটা সমাধান করলাম। কিন্তু কিছুক্ষণ পরে আবারো ঝিমানি এলো! আবারো একগাদা আজেবাজে ইউজলেস নিউরাল পাথ দিয়ে একটা ভ্রমন করে এলো আমার কনশাসনেস অথবা সেমি-কনশাসনেস। আর তখনই মনে পড়ে গেল আগে এমন হতো না।

না, মাঝে মধ্যে ঝিমানি যে আসতো না, তা না। ঝিমানি আসা ব্রেইনের কোনো জরুরি মেকানিজম মনে হয়। তবে অঙ্ক করতে কতে ঝিমানি এলে সেই ঝিমানির মধ্যেও অঙ্কের বাকিটা করে ফেলতাম বেশিরভাগ সময়। এবং স্বাভাবিকের চেয়ে দ্রুততর গতিতেই। আমি নিশ্চিত এই অভিজ্ঞতা সবারই হয়েছে কখনো না কখনো। ব্রেইনের ঐ স্টেটটার চেয়ে মজার কিছু হয় না। এই ব্যাপারটা সম্ভব ব্রেইন থেকে আজাইরা নিউরাল পাথ কম থাকলে। কিন্তু ইন্টারনেট এর কল্যানে অপ্রয়োজনীয় ডিট্যুরের কোনো অভাব নেই আমার মাথায়।

অতয়েব, হচ্ছে না দাদা।

ভাবছি এক ধরণের উপাত্তসংযম চালু করবো। যেখানে, নির্দিষ্ট একটা সময় জুড়ে যে কোনো মূল্যে জাঙ্ক তথ্য থেকে মাথাকে বাঁচাতে হবে।

শরীরের বেলায় অতিপ্রয়োজনীয় খাদ্যের বিপরীতে যেমন আছে মোহনীয় জাঙ্কফুড। তেমনি মনের খোরাক এর বেলায়ও জাঙ্কফুডের অভাব নেই।