Wednesday, December 9, 2015

অ্যাবস্ট্রাকশান ঝামেলা

“অ্যাবস্ট্রাক্ট” কথাটি শুনলে আমার বেশ কয়েকটি অ্যাবস্ট্রাক্ট-এর কথা মাথায় আসে। এর মধ্যে প্রথমটা হল- পেপারের অ্যাবস্ট্রাক্ট। ভেঙে বললে, বিভিন্ন বিষয়ে স্নাতক এবং স্নাতকোত্তর পর্যায়ে যেসব গবেষণা পত্র(reserch paper) লেখা হয়, সেগুলোর প্রথমে একটা প্যারা থাকে। যার নাম অ্যাবস্ট্রাক্ট। তো কী থাকে এই অ্যাবস্ট্রাক্ট-এ? সোজা কথায় পেপারটার সার-সংক্ষেপ। পুরো পেপার লেখার পর এর সার-সংক্ষেপ হিসেবে প্রথম প্যারাটি লেখা হয়। এতে ঐ পেপারের বিষয়বস্তু, পটভূমি, ক্ষেত্র ইত্যাদি ব্যাপার নিয়ে একটা ধারণা দেওয়া থাকে।
দ্বিতীয় অ্যাবস্ট্রাক্ট-টি হল শিল্পকলার অ্যাবস্ট্রাক্ট। অনেক ধরণের শিল্প আছে, যেমন আঁকা ছবি থেকে শুরু করে কবিতা হয়ে গল্প-উপন্যাস পর্যন্ত। কখন একটা ছবি বা কবিতাকে অ্যাবস্ট্রাক্ট বলা হয়? যখন ওটার বিষয়বস্তু ঠিক সহজে বোঝা যায় না(মাথার উপর দিয়ে যায়)। অনেক সময় আমাদের মত অজ্ঞরা শেষ পর্যন্ত এর মাথা-মুন্ডু কিছুই না বুঝে বলি “ভাই মাফ চাই।” আবার অনেক বিশেষজ্ঞরা সেখান থেকে মূল শিল্পী যা বোঝাতে চেয়েছেন, তার থেকেও বেশি বুঝে ফেলতে পারেন! শুনেছিলাম রবীন্দ্রনাথের “সোনার তরী” কবিতাটা নিয়েও নাকি এমন হয়েছিল।
শেষ অ্যাবস্ট্রাক্ট-টি একটু টেকি। এটা কম্প্যুটার সায়েন্সের বা আরও ভাল করে বললে প্রোগ্রামিং ল্যাঙ্গুয়েজের বিষয়। তাও একটু সহজভাবে বলার চেষ্টা করি। Object oriented programming-এ আমরা কোন বস্তু(object)-এর কিছু বৈশিষ্ট্য এবং কাজ নির্ধারণ করে তার একটা সাধারণ নাম দেওয়া যায়। ব্যাপারটাকে বলে একটা class-কে সংজ্ঞায়িত(define) করা। তখন ঐ জাতীয় সব বস্তুকে ঐ নির্দিষ্ট ক্লাস(class)-এর অন্তুর্ভুক্ত ধরা হবে। একই ক্লাসের সব অবজেক্টেরi ঐসব সাধারণ বৈশিষ্ট্য এবং কাজ করার ক্ষমতা থাকবে। যেমন আমি “মানুষ” ক্লাসের একটা object। সুতরাং মানুষ হিসেবে আমার কিছু বৈশিষ্ট্য এবং কাজ করার ক্ষমতা থাকবে। এখন কিছু কিছু class আছে যাদের বলা হয় abstract class। ক্ষেত্রবিশেষে যাকে interface-ও বলা হয়। এই অ্যাবস্ট্রাক্ট ক্লাসের বেলায় কী হয়? ক্লাসের সমস্ত বৈশিষ্ট্য বিস্তারিত ভাবে নির্ধারণ করা থাকে না। অল্প কিছু বৈশিষ্ট্য দেওয়া থাকে। সেটাও বিস্তারিত ভাবে থাকে না। সেজন্য কোন অবজেক্ট বা বস্তু শুধুমাত্র এই ক্লাসের সদস্য হতে পারে না। যেমন ধরুন- “জলজ”। এটা থেকে বুঝা গেল যে জিনিসটা পানিতে থাকে। কিন্তু আর কিছুই জানা গেল না যে সেটা- প্রাণী না উদ্ভিদ, ছোট না বড়, এমনকি জীব না জড়, এসব কিছুই না। সেজন্যই শুধুমাত্র জলজ বলে কিছু নাই। সেটা অবশ্যই “জলজ আগাছা” বা “জলজ স্তন্যপায়ী” ইত্যাদি।
এই হল বিভিন্ন ধরণের অ্যাবস্ট্রাক্ট। যা যা এখন মাথায় আসল। সবার কাছে ক্ষমা চেয়ে নিচ্ছি এমন খটমটে বিষয় নিয়ে লিখছি বলে। আর ইংরেজি শব্দটাই ব্যবহার করছি। কারণ বাংলা প্রতিশব্দ- “বিমূর্ত” আমার কাছে কেমন জানি আরও বেশি “বিমূর্ত বিমূর্ত” মনে হয় :s। কেমন যেন ধোঁয়াশার মত শব্দটা, মানেটা ঠিক ধরা যায় না। আশা করি এখন আমি অ্যাবস্ট্রাক্ট শব্দের অর্থটা খানিকটা হলেও বুঝাতে পেরেছি। তবে যারা আগে থেকেই জানতেন তারা তো জানতেনই! অ্যাবস্ট্রাক্ট শব্দের মানেটা অনেকটা এমন- কোন কিছুটে একদম ভেঙে ভেঙে না বলে, অণু-পরমানূ, ইলেকট্রন-ফোটন পর্যন্ত বিস্তারিত পর্যায়ে না গিয়ে, মোটামুটি একটা সারসংক্ষেপ ধারণা দিয়ে দেওয়া। এটারও নির্দিষ্ট কোন পর্যায় নেই। অনেকটা মাইক্রোস্কোপের ফোকাস ঠিক করার মত। আপনি যত গভীরে ফোকাস সেটা করবেন, ততখানি গভীরে দেখতে পারবেন। অর্থাৎ অ্যাবস্ট্রাকশান কমে গেল। অন্যদিকে আপনি যদি ফোকাস অতটা গভীরে সেট না করেন, তাহলেই অ্যাবস্ট্রাকশান বেড়ে গেল।
আরেকটা উদাহরণ দিই। ধরুন আমি পৃথিবীর মানচিত্রে “ঢাকা” খুঁজলাম। পেলাম না। কোনরকমে “বাংলাদেশ” লেখাটা দেখা যায়। এরপর দক্ষিণ এশিয়ার মানচিত্রে আসলাম। ঢাকা খুঁজে পাওয়া গেল। মোটামুটি আইডিয়া পাওয়া গেল যে ঢাকা বাংলাদেশের মাঝামাঝি একটা জায়গায়। এরপর বাংলাদেশের মানচিত্রে এসে ঢাকার সীমানা দেখা গেল। জায়গাটা কত বড় বোঝা গেল। এরপর ঢাকার মানচিত্রে এলে এর বিভিন্ন এলাকা রাস্তাঘাট ইত্যাদি সম্পর্কেও আইডিয়া পাওয়া যাবে। প্রথমে “ঢাকা” কিন্তু একটা নাম অথবা শব্দ ছিল মাত্র। কিন্তু প্রত্যেকটা ধাপে আমরা ঢাকা সম্পর্কে আরেকটু বেশি তথ্য জানতে পেরেছি। এতে ঢাকা ব্যাপারটার অ্যাবস্ট্রাকশান কমে গেছে। বা অন্যভাবে বললে “ঢাকা” ধাপে ধাপে আমাদের কাছে একটা “কংক্রিট”(concrete-অ্যাবস্ট্রাক্ট এর বিপরীত শব্দ) বা মূর্ত আইডিয়া হয়ে উঠেছে। আরও বেশি কংক্রিট হবে যখন আমি ঢাকায় থাকছি, ঢাকার রাস্তায় চলছি, ঢাকার বাতাসে শ্বাস নিচ্ছি। ঢাকা তখন আমার কাছে পুরোপুরি বাস্তব বা কংক্রিট একটা ব্যাপার।
আমাদের বাস্তব জীবনেও অ্যাবস্ট্রাকশান একটি অতি প্রয়োজনীয় ব্যাপার। আমরা প্রায় সব ক্ষেত্রেই এটা ব্যবহারও করি। আবার সেই মাইক্রোস্কোপের কথাতেই ফেরত আসি। আমি যদি কোন একটা বস্তু, ধরুন একটা কোষ তার একদম গভীরে ফোকাস করি, যে অংশটায় ফোকাস করা হবে, সে অংশটা আমি খুব ভালভাবে দেখতে পারব। সেই অংশের গঠন বেশি বুঝতেও পারব। কিন্তু পাশের অন্য কিছু অংশ আমার ফোকাস থেকে হারিয়ে যাবে। আমি নিউক্লিয়াস আর মাইট্রোকন্ডিয়া একইসাথে নিখুঁতভাবে দেখতে পারব না। যেকোন একটা দেখতে হবে। অথবা ফোকাসটা এমনভাবে করতে হবে যে, দুটোই দেখতে পাব, কিন্তু কোনটাই গভীরভাবে না। আমাদের মানে এক একজন ব্যক্তি মানুষের জ্ঞান জগতটাও কিন্তু এরকম। আমরা সবাই সবকিছুর উপর একটা মোটামুটি অ্যাবস্ট্রাক্ট ধারণা রাখি। তবে সবাই কোন না কোন বিশেষ ক্ষেত্রে বিস্তারিত জানি। আমি হয়ত কম্প্যুটার নিয়ে বেশি জানি। কিন্তু ধান চাষ, মানব শরীরের গঠন-প্রকৃতি বা মহাশুণ্য নিয়ে খুব বেশি কিছু জানি না। যতটুকু জানি, সেটাই হল অ্যাবস্ট্রাক্ট জ্ঞান। এটাই হল বিভিন্ন ক্ষেত্রে অ্যাবস্ট্রাকশান এর ব্যবহার। বিভিন্ন ক্ষেত্রে মোটামুটি একটা অ্যাবস্ট্রাক্ট জ্ঞান রেখে আমরা চলি। দরকারমত অন্যদের থেকে সাহায্য নিই, আবার অন্যদের সাহায্যও করি।
লেখাটার নাম দিয়েছিলাম, অ্যাবস্ট্রাকশান ঝামেলা। তা এর মধ্যে ঝামেলা আসল কোথা থেকে? ঝামেলা তখনই হবে যখন কোন জিনিস বা ধারণা প্রয়োজনের তুলনায় বেশি অ্যাবস্ট্রাক্ট হয়ে যায়। বা আরেকটু স্পষ্ট করে বললে, যেসব অ্যাবস্ট্রাক্ট ধারণাকে বিভিন্নভাবে রিয়ালাইজেশনের(অ্যাবস্ট্রাক্ট থেকে কংক্রিট হওয়ার প্রক্রিয়া) মাধ্যেম ভিন্ন ভিন্ন ধারণা দাঁড় করানো যায়, সমস্যা সেখানেই। আমার কাছে মনে হয়েছে, এমন সমস্যা অনেক জায়গাতেই আছে। একটা উদাহরণ দিই। কয়েকদিন আগে “ফতোয়া” শব্দটা নিয়ে অনেক তর্ক-বিতর্ক হয়ে গেল। পক্ষে-বিপক্ষে নানা প্রবান্ধ-বিবৃতি-মিছিল-মিটিং। কিন্তু আমার যেটা মনে হয়েছে, এই বিরোধের মূল কারণ হল “ফতোয়া” একটি অ্যাবস্ট্রাক্ট শব্দ। এবং এর পক্ষ-বিপক্ষ দুই দল একে দুইভাবে রিয়ালাইজেশন করে দুই অর্থ দাঁড় করিয়েছেন। এবং দুই পক্ষ নিজেদের দাঁড় করানো অর্থের কারণেই এর পক্ষে বা বিপক্ষে অবস্থান নিয়েছেন।
আসুন দেখা যাক, দুই পক্ষ শব্দটির কী কী অর্থ দাঁড় করিয়েছেন। যারা ফতোয়ার পক্ষে ছিলেন তাদের মতে ফতোয়া হল-“ধর্মীয় কোন ব্যাপারে কোন আলেমের কাছে কিছু জানতে চাওয়া।” সেটা যেকোন কিছু সম্পর্কে হতে পারে। এবং জানার পর সেটা প্রশ্নকর্তা নিজ দায়িত্বে মানবেন। তাদের মতে প্রশ্ন করার এবং উত্তর জানাটা সবার অধিকার। সুতরাং ফতোয়া নিষিদ্ধের কোন অর্থ নাই। আর অন্য পক্ষের মতে ফতোয়া হল-“দেশের প্রচলিত আইন এবং বিচার ব্যবস্থার বাইরে বিচার এবং দন্ড। যার বেশির ভাগই হয় কোন মোল্লা-মৌলবীর কথা অনুসারে।” দেখাই যাচ্ছে যে, দুই পক্ষ শব্দটিকে যেভাবে দেখছেন তার মধ্যে মিল খুব সামান্যই। এবং আমি কোন পক্ষকেই আপর পক্ষের গৃহীত অর্থকে বিবেচনায় নিতে দেখিনি। শুধু একটা লেখা দেখেছিলাম যেখানে একজন আলেম বলেছেন, একমাত্র রাষ্ট্র বা শাসকই বিচার ব্যবস্থার মাধ্যমে দন্ড প্রয়োগ করতে পারবে। অন্য কেউ নয়। সেটা ইসলামী নিয়মানুসারে হলেও। এখানে ফতোয়া বিরোধী পক্ষ যদি “ফতোয়া” শব্দটি ব্যবহার না করে, “দেশের আইন বহির্ভূত বিচার ও দন্ড” নিষিদ্ধের কথা বলতেন, তাহলে ফতোয়ার পক্ষাবলম্বনকারী গোষ্ঠীর আন্দোলনের কোন ক্ষেত্রই তৈরি হত না। কারণ এর বিরুদ্ধে আন্দোলনের তো সুযোগ নেই। আলেমদের কথা অনুসারেই। এত ঝামেলাও হত না। আর যারা ফতোয়ার পক্ষে আন্দোলন করছেন, তারাও শুধু “ফতোয়া” শব্দটিকে না দেখে, কেন ফতোয়ার বিরুদ্ধে আন্দোলন হচ্ছে সেদিকে খেয়াল করতেন তাহলেও ঝামেলা অনেকটা কমত। আমার কাছে পুরো ব্যাপারটাকেই মনে হয়েছে অতিরিক্ত অ্যাবস্ট্রাক্ট শব্দ ব্যবহারজনিত একটি সমস্যা। :-B
এমন আরেকটি সমস্যায় আসি। কিছুদিন আগে সংবিধান সংশোধন হল। সেটা নিয়ে নানা হই-চই আন্দোলন ইত্যাদি হল। তার অনেকগুলো কারণের মধ্যে বড় একটা কারণ হল সংবিধানের মূলনীতিগুলো- গণতন্ত্র, সমাজতন্ত্র, ধর্মনিরপেক্ষতা এবং জাতীয়তাবাদ। আমার কাছে মনে হয়েছে সবগুলোই বেশ অ্যাবস্ট্রাক্ট শব্দ। এবং বিভিন্ন গোষ্ঠী এসব শব্দের বিভিন্ন অর্থ দাঁড় করিয়ে তার পক্ষে-বিপক্ষে আন্দোলন করে গেলেন। নানা ধরণের কথা বললেন। আমার আগের একটা পোস্টে এজন্য আমি এমন সব অ্যাবস্ট্রাক্ট শব্দের একটা কংক্রিট ব্যাখ্যাও সংবিধানের অন্তর্ভুক্ত করার পক্ষে মত দিয়েছিলাম। যেন আমাদের মধ্যে শব্দগুলোর অর্থ নিয়ে কোন দ্বিধা না থাকে। আর কেউ সেগুলোর সুযোগ নিতে না পারে।
লিখতে লিখতে অনেক কথাই লেখা হয়ে গেল। জানি না কথাগুলো ঠিকমত বলতে পারলাম কিনা। তবে আমি চাইব, আমাদের সব ক্ষেত্রে পরিমিত পরিমাণ অ্যাবস্ট্রাকশান ব্যবহার করা হোক। আর আমরা সবাই এমন কিছু নিয়ে কথা বলার সময় নিজের কথাগুলোকে আরও স্পষ্ট করে বলি। আর কিছু শব্দ নিয়ে না থেকে শব্দ দ্বারা কী বুঝানো হচ্ছে, অন্যরা কী বুঝছে, সেই “ভাব” বিবেচনায় রাখি।
অ্যাবস্ট্রাকশান নিয়ে আরও পড়তে চাইলে উইকিপিডিয়াতে যেতে পারেন। তবে আমি এইখানেও যেতে বলব। এখানে প্রশ্ন করা হয়েছে অ্যাবস্ট্রাকশান কী? তার অনেকগুলো উত্তর আছে। আমার লেখা একটা উত্তরও আছে।


মুল লেখক এবং লিংক
http://www.cadetcollegeblog.com/gulshan/31901

Saturday, June 27, 2015

Problem #1: "Prolog-Interpreter /bin/plwin.exe not found. Please configure correctly."

Description

While trying to use SWI-Prolog-Editor the following error appears in the bottom pane:
Prolog-Interpreter /bin/plwin.exe not found. Please configure correctly.

Solution

You should double check to see which version of swi-prolog you installed (32-bit or 64-bit), because swi-prolog editor only works with the 32-bit version. If you tried using the editor with the 64-bit version, you'll get the error described above

Sunday, February 9, 2014

ABC for Dynamic Web Developer

Connection with Database...(name it as connection.php)

<?php
$servername="localhost";
$username="root";
$password="";
$databasename="actual_db";
?>



For Delete an Entity... (delete.php)


<?php
include ("connection.php");
$connect=mysql_connect($servername,$username,$password);
$select_db=mysql_select_db($databasename);

$strquery=" DELETE from records_table where id = '" . $_GET['id'] . "' ";
$results=mysql_query ($strquery);
echo 'Delete Successfull!!';
header ('location: https://127.0.0.1/ACTUAL/MAIN.php ');
?>



Edit....(edit.php)


<?php
include ("connection.php");
$connect=mysql_connect($servername,$username,$password);
$select_db=mysql_select_db($databasename);

$strquery = "SELECT * from records_table where id= '" . $_GET["id"] . "' ";
$results = mysql_query ($strquery);
$row = mysql_fetch_array($results);

?>
<body>

<form id="form1" name="form1" method="get" action="update.php">
<label>Name:
<input name="name" type="text" id="name" value=" <?php echo $row["name"]; ?>" />
</label>
<p>
<label>Section:
<input name="section" type="text" id="section" value=" <?php echo $row["section"]; ?>" />
</label>
<input name="id" type="hidden" id="section2"  value=" <?php echo $row["id"]; ?>" />
</p>
<p>
<label></label>
</p>
<p>
<label>
<input type="submit" name="Submit" value="Update" />
</label>
</p>
</form>


Main Page...... (main.php)


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Actual PHP</title>
</head>

<body>
<form id="add" name="add" method="get" action="SAVE.php">
<label>NAME:
<input name="name" type="text" id="name" />
</label>
<p>
<label>SECTION:
<input name="section" type="text" id="section" />
</label>
</p>
<p>
<label>
<input type="submit" name="Submit" value="SAVE" />
</label>
</p>
</form>

<table width="749" border="1">
<tr>
<td width="289">Name</td>
<td width="214">Section</td>
<td width="57"> ID </td>
<td width="161"> Actions </td>
</tr>

<?php
include ("connection.php");
$connect=mysql_connect($servername,$username,$password);
$select_db=mysql_select_db($databasename);

$strquery="SELECT * from records_table";
$results=mysql_query($strquery);
$num=mysql_numrows($results);

$i=0;
while ($i< $num)

{

$f1=mysql_result($results,$i,"name");
$f2=mysql_result($results,$i,"section");
$f3=mysql_result($results,$i,"id");

?>

<tr>
<td><?php echo $f1 ; ?></td>
<td><?php echo $f2 ; ?></td>
<td><?php echo $f3 ; ?></td>
<td><?php echo " <a href='edit.php?do=edit&id=" . $f3 . "'> edit </a> "; ?> | <?php echo " <a href='delete.php?id=" . $f3 . "'> delete </a> "; ?></td>
</tr>

<?php

  $i++;
  }
  ?>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
<form id="form1" name="form1" method="get" action="search.php">
<label>Search:
<input name="search" type="text" id="search" />
</label>
<p>
<label>
<input name="do" type="submit" id="do" value="Search" />
</label>
</p>
</form>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>

</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp; </p>
</body>
</html>



Save  (save.php)


<?php
include ("connection.php");
$connect=mysql_connect($servername,$username,$password);
$select_db=mysql_select_db($databasename);

$strquery="INSERT INTO records_table SET name= '" . $_GET['name'] . "', section= '". $_GET['section'] ."' ";
$results=mysql_query ($strquery);
header( 'Location: https://127.0.0.1/ACTUAL/MAIN.php' ) ;
?>


For Update...(update.php)


<?php
include ("connection.php");
$connect=mysql_connect($servername,$username,$password);
$select_db=mysql_select_db($databasename);

$strquery="UPDATE records_table SET name= '" . $_GET['name'] . "', section= '". $_GET['section'] ."' WHERE id='". $_GET['id'] ."' ";
$results=mysql_query ($strquery);

header ('location: https://127.0.0.1/ACTUAL/MAIN.php '); 

?>

$strquery="UPDATE s_info SET SName= '" . $_GET['SName'] . "', SReg= '". $_GET['SReg'] ."',SAge='". $_GET['SAge'] ."',SHouse= '" 
. $_GET['SHouse'] . "',STransport= '" . $_GET['STransport'] . "',SQuality= '" . $_GET['SQuality'] . "',SHome_City= '" . $_GET['SHome_City'] . "',
SPh_Number= '" . $_GET['SPh_Number'] . "',SE_Mail= '" . $_GET['SE_Mail'] . "',SB_of_Date= '" . $_GET['SB_of_Date'] . "',
SPortrait= '" . $_GET['SPortrait'] . "' where SRoll='".$_GET['SRoll']."'";


Monday, April 29, 2013

insertion sort in C++

#include<stdio.h>
int main(){

  int m,n,s,temp,a[20];

  printf("Enter how many elements you want to sort? ");
  printf ("\n\n");
  scanf("%d",&s);

  printf("Enter that %d elements: ",s);
  printf ("\n");
  for(m=0;m<s;m++)
      scanf("%d",&a[m]);

  for(m=1;m<s;m++){
      temp=a[m];
      n=m-1;
      while((temp<a[n])&&(n>=0)){
      a[n+1]=a[n];
          n=n-1;
      }
      a[n+1]=temp;
  }

  printf("The elements are sorted : ");
  for(m=0;m<s;m++)
      printf(" %d\n\n",a[m]);

  return 0;
}


Sunday, March 10, 2013



C++ Code For Linear Search


#include<iostream.h>

class searching
{
private:
double *array;
int n;
public:
void input();
void linearsearch();
};

void searching::input()
{
cout<<”*********************************…
<<”This program is to implement linear search algorithm\n”
<<”*************************************…
cout<<”Enter how many numbers you are going to enter::”;
cin>>n;
array=new double[n+1];
cout<<”Now enter your elements ::\n”;
for(int i=1;i<=n;i++)
cin>>array[i];
}

void searching::linearsearch()
{
cout<<”Enter the number to be searched ::”;
double x;
cin>>x;
int i;
for(i=1;i<=n;i++)
{
if(array[i]==x)
{
cout<<”found at position ::”<<i<<endl;
break;
}
}
if(i>n)
cout<<”Not found\n”;
}

int main()
{
searching obj;
obj.input();
obj.linearsearch();
return 0;
}