AdGuru

Monday, February 2, 2015

Guideline for learning javascripts in Bengali

Guideline for learning javascripts in Bengali

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


জাভাস্ক্রিপ্ট শেখার কয়েকটা টিপস নিচে পয়েন্ট আকারে দেয়া হল
## জাভাস্ক্রিপ্ট শেখা শুরু করার আগে HTML আর CSS সম্পর্কে কিছুটা ধারণা নিয়ে রাখা ভালো, আসলে নিয়ে রাখাই উচিত। কারও কারও মনে প্রশ্ন জাগতে পারে জাভাস্ক্রিপ্ট একটা স্বতন্ত্র প্রোগ্রামিং ল্যাঙ্গুয়েজ( আসলে স্ক্রিপ্টিং ল্যাঙ্গুয়েজ )হওয়া সত্ত্বেও এটা শিখতে হলে কেন আগে HTML, CSS শিখতে হবে। প্রশ্নটা হয়তোবা যুক্তিসঙ্গত কিন্তু যারা জানেন জাভাস্ক্রিপ্ট শেখার প্রয়োজনীয়তা কি অর্থাৎ কেন তারা এটা শিখবেন তাদেরকে আর এই বিষয়ে কোনো ব্যখ্যা দেয়ার প্রয়োজন হবে না, তাছাড়া যেহেতু আমি এখানে জাভাস্ক্রিপ্ট শেখার গাইড লাইন নিয়ে লিখতে বসেছি তাই আমি HTML, CSS নিয়ে বিস্তারিত লিখতে যাব না। তবে জাভাস্ক্রিপ্ট শিখতে হলে যে HTML, CSS এর মাস্টার হতে হবে এমন কোনো কথা নেই, এই দুটি বিষয় সম্পর্কে খুব অল্প জ্ঞান থাকলেই চলবে। কিন্তু কেউ যদি চায় যে সে জাভাস্ক্রিপ্ট এর মাস্টার হবে তখন অবশ্যই তার HTML, CSS এর মোটামুটি সকল ট্যাগ( আশা করি ট্যাগ কি তা আপনারা জানেন)নাড়াছাড়া করার মতো দক্ষতা থাকতে হবে। কেউ কেউ হয়তো এই কথায় বিরক্ত হতে পারেন, হওয়াটাই স্বাভাবিক, নাড়াছাড়া করার মতো দক্ষতা আবার কি? আসলে HTML, CSS এর মোট ট্যাগ সংখ্যা অনেক, সঠিক সংখ্যা আমি নিজেও জানি না। এতগুলো ট্যাগ সম্পর্কে বিস্তারিত তথ্য মানুষের নিউরন সেলে ধরে রাখা অসম্ভব। তাছাড়া প্রত্যেকটা ট্যাগের( বেশিরভাগ ) অনেকগুলো property, method এবং value থাকেযাদেরকে একই ট্যাগের সাথে বসালেও ভিন্ন ফলাফল পাওয়া যায়। আবার কিছু ট্যাগ আছে যাদের কাজ প্রায় একইরকম, সেক্ষেত্রে উপযুক্ত ট্যাগ নির্বাচন করা জরুরি হয়ে পরে কারণ আপাত দৃষ্টিতে একইমনে হলেও প্রকৃত অর্থে তাদের কাজ করার প্রক্রিয়া ভিন্ন, তাছাড়া তখন আপনাকে SEO( Search Engine Optimization ) এর ব্যপারটিও মাথায় রাখতে হবে কারণ অনেক ট্যাগ আছে যেগুলোSEO এর জন্য মোটেই ভালো নয়,একজন ভালো ডেভেলপার হতে চাইলে আপনাকে অবশ্যই প্রত্যেকটি বিষয় মাথায় রেখেই কাজ করতে হবে।
## HTML, CSS যেমন অসংখ্য ট্যাগ নিয়ে কাজ করে তেমনি জাভাস্ক্রিপ্টেরও অসংখ্য function, method, property ইত্যাদি আছে যার কারণে HTML, CSS এর মতোই একে reference language হিসেবে শিখতে হবে, আসলে এভাবে শিখলে ব্যপারটা অনেক সহজ হয়ে আসে। যারা C ল্যাঙ্গুয়েজ এর সাথে পরিচিত অর্থাৎ যারা C এর একটু-আধটু শিখেছেন তাদের জন্য জাভাস্ক্রিপ্ট এর প্রাথমিক ব্যপারগুলো শেখা পান্তাভাত ছাড়া আর কিছুই না। তাই আমি বলব যেকোনো প্রোগ্রামিং ল্যাঙ্গুয়েজ অথবা স্ক্রিপ্টিং ল্যাঙ্গুয়েজ শেখার আগে C এর অন্তত প্রাথমিক অর্থাৎ মৌলিক বিষয়গুলো সম্পর্কে ধারণা নেয়া উচিত। একে অযথাই “Mother of all Programming Language” বলা হয় না। জাভাস্ক্রিপ্ট শেখা শুরু করেছেন মানে আপনি প্রোগ্রামিং এর দুনিয়ায় পদার্পণ করেছেন অথচ প্রোগ্রামিং কি তাও যদি আপনি ভালোভাবেবুঝতে না পারেন তাহলে পদে পদে আপনাকে ক্ষান্তহতে হবে, সেক্ষেত্রে বিরক্ত হয়ে পরে শেখাটাই বাদ দিয়ে দিবেন, এটাই স্বাভাবিক( আমি নিজেও একই পরিস্তিতির শিকার )। শুধু প্রোগ্রামিং এর সংজ্ঞা জানলেই হবে না, প্রোগ্রামিং জিনিসটা কি তা ভালোভাবে নিজ থেকেই বুঝতে হবে আর এর জন্য শ্রেষ্ঠ উপায় হল অন্তত এক মাস C নিয়ে ঘাটাঘাটি করা। এভাবে শিখতে থাকলে বা প্রাকটিস করতে থাকলে আপনার নিজের ভিতরেই প্রোগ্রামিং এর একটা সহজ, ত্রিমাত্রিক সংজ্ঞা তৈরি হবে আর তখনই আপনি বুঝতে পারবেন প্রোগ্রামিং এর মৌলিক ব্যপারটা আপনি বুঝে ফেলেছেন। তাছাড়া জাভাস্ক্রিপ্ট হচ্ছে একটি Object Oriented Programming Language( OOP ), যেসকল ল্যাঙ্গুয়েজ object নিয়ে কাজ করে তাদেরকে Object Oriented বলা হয়। প্রোগ্রামিং বা স্ক্রিপ্টিং ল্যাঙ্গুয়েজ সাধারণত দুই প্রকার- action বা function oriented( C, Fortran ইত্যাদি ) আর object oriented( C++, Java, Javascript, Python, PHP, Ruby, Objective C, C# ইত্যাদি ) । শেষেরটা function কে নিয়ে কাজ করে। যেকোনো OOP ল্যাঙ্গুয়েজ শেখার আগেই AOP ল্যাঙ্গুয়েজ শিখে নেয়া উচিত কারণ প্রথমেই OOP শিখতে গেলে আপনার কাছে ব্যপারটা অনেক জটিল মনে হবে আর প্রত্যেকটা কোডের অর্থও কখনো শতভাগ বুঝতে পারবেন না, কন্সেপ্টটা ভাসা ভাসাই থেকে যাবে। এটা নিশ্চয়ই আপনার জানা আছে যে ভাসা ভাসা জ্ঞানের স্থায়িত্ব কখনোই দীর্ঘ হয় না আর তা ব্যক্তির আত্মবিশ্বাসও অনেকটা কমিয়ে দেয়।
এখানে দুটি কথা অবশ্যই বলে রাখা বাঞ্ছনীয়, প্রথমতC ভালোভাবে শিখতে হলে আপনাকে কমপক্ষে ছয়মাস সময় দিতে হবে, যেহেতু আপনি জাভাস্ক্রিপ্ট শিখতে চাচ্ছেন আর এটাই আপনার মুখ্য উদ্দেশ্য তাই আপনার C ল্যাঙ্গুয়েজ এর উপর বেসিকধারণা থাকেলই চলবে আর এর জন্য এক মাসের বেশি লাগার কথা নয়। দ্বিতীয়ত HTML, CSS কে দয়া করে প্রোগ্রামিং ল্যাঙ্গুয়েজ এর দলে ফেলবেন না কারণ এদের প্রথমটি হচ্ছে markup ল্যাঙ্গুয়েজ আর দ্বিতীয়টি হচ্ছে markup করার পর এর স্টাইল দেয়ার জন্য, যদিও তাদেরকে সার্বজনীনভাবে“স্ক্রিপ্টিং ল্যাঙ্গুয়েজ” এর দলে ফেলা হয়।
আর হে C শিখতে আপনি যতটুকু আনন্দ পাবেন জাভাস্ক্রিপ্ট শিখতে তার সিকিভাগও পাবেন না বরং বিরক্ত হবার কথা। তাই প্রথমে C শিখে জাভাস্ক্রিপ্ট শেখার সময়টাকে রিডিউস করে নেয়াই ভালো। C শেখাটা আপনার হবিও হতে পারে কিন্তু জাভাস্ক্রিপ্টআপনি শিখবেন প্রফেশনাল কাজ করার উদ্দেশে।
## একেবারে প্রথমেই আমি HTML, CSS কে কিভাবে reference এর ভিত্তিতে সহজে ব্যবহার করা যায় তা বলার চেষ্টা করেছি, যদিও আমার জাভাস্ক্রিপ্ট নিয়ে লেখার কথা। এর কারণ Document Object Model ( DOM ) নামের একটা ব্যপার আছে যেটা স্ক্রিপ্টিং ল্যাঙ্গুয়েজ( জাভাস্ক্রিপ্ট হতে হবে এমন কোনো কথা নাই )এর সাথে যুগপৎ হয়ে কাজ করে। এর সাহায্যে HTML এর যেকোনো ট্যাগ কে object হিসেবে ধরে নিয়ে কাজ করা যায়, এভাবে করলে অনেক জটিল কাজ সহজে হয়ে যায়। Object কি তা আমি আগেই বলেছি, যেহেতু এটা কোনো টিউটরিয়াল নয় তাই আমি এখানে object বা action এর কোনো ব্যাখা বা উদাহারণ দেবনা।
## প্রথম থেকেই আমি referenceশব্দটি অনেকবার ব্যবহার করে আসছি কিন্তু আসল রেফারেন্সই এতক্ষণ ধরে দেয়া হয়নি, আমি বলেছিলাম reference এর ভিত্তিতে জাভাস্ক্রিপ্ট শিখলে শেখাটা অনেক সহজ হয়ে যায়। এখন আসি আসল reference এর কথায়। প্রথমেই বলে নেই reference শব্দটির দ্বারা আমি আসলে কি বুঝাতে চেয়েছি। জাভাস্ক্রিপ্ট কিংবা অন্য যেকোনো কিছুশেখার সময় আপনি অবশ্যই বিভিন্নরকম বই পড়বেন বা অনলাইনে বিভিন্ন ওয়েবসাইটের শরণাপন্ন হবেন?এখানেreference বলতে আমি এইসব বই কিংবা ওয়েবসাইটকেই বুঝাচ্ছি। এরকম অনেক বই( হার্ডকপি বা সফটকপি) বা ওয়েবসাইট রয়েছে যেখান থেকে আপনি জাভাস্ক্রিপ্ট শেখা শুরু করে দিতে পারেন। তবে বাংলা টিউটরিয়ালের শরণাপন্ন না হয়ে ইংরেজি বই বা ওয়েব টিউটরিয়ালের দিকে ঝুঁকাই ভালো কারণ ইংরেজিতে আপনিজাভাস্ক্রিপ্টের আগাগুড়া সবকিছুই পাবেন যেমন- http://www.w3schools, http://www.developphp.com কিংবা জাভাস্ক্রিপ্টের অফিসিয়াল ডকুমেন্টেশনে আপনি এর সবকিছুই পাবেন, এরকম কোনো একটি সাইট কিংবা কয়েকটা বইকে জাভাস্ক্রিপ্টের টিউটরিয়াল+রেফারেন্স দুটি হিসেবেই কাজে লাগাতে পারবেন। তাছাড়া এরকম সাইট এ আপনি জাভাস্ক্রিপ্টের সকল আপডেট তথ্যও পাবেন। এখানে আরেকটা কথা যোগ করা প্রয়োজন- অনেকেই আছেন যারা ভিডিওটিউটরিয়াল দেখে শিখতে বা কাজ করতে বেশি পছন্দ করেন কিন্তু জাভাস্ক্রিপ্টশেখার ক্ষেত্রে ভিডিও টিউটরিয়াল উপযুক্ত নয় কারণ জাভাস্ক্রিপ্টের পাল্লা অনেক দীর্ঘ, কোনো ভিডিওটিউটরিয়ালই এর সম্পূর্ণটা কাভার করতে পারবে না। তবে ভালোভাবে এর বেসিকটা শেখার পর বিভিন্ন ধরণের ওয়েব অ্যাপ্লিকেশান তৈরি করার সময় কিংবা বিভিন্ন ধরণের ফ্রেমওয়ার্ক নিয়ে কাজ করার সময় ভিডিওটিউটরিয়ালের( lynda, tutplus, infiniteskills, youtube ইত্যাদি)সাহায্য নেয়া যেতে পারে।
## ফ্রেমওয়ার্ক: যারা CSS ভালোভাবে শিখেছেন তারা ফ্রেমওয়ার্ক শব্দরটিত সাথে পরিচিত। আপনারা হয়তো CSS এর দু-চারটা ফ্রেমওয়ার্ক নিয়ে কাজও করে থাকবেন। আসলে ফ্রেমওয়ার্ক হচ্ছে বিশেষ বা নির্দিষ্ট কোনো কাজের জন্য একটা স্বয়ংসম্পূর্ণ প্লাটফর্ম যাতে করে কাজটা সহজে, অল্প সময়ে এবং শতভাগ কার্যকরভাবে করা যায়। জাভাস্ক্রিপ্ট হোক, CSS হোক বা অন্য কিছুই হোকফ্রেমওয়ার্কের সংজ্ঞা একই। কয়েকটা উদাহারণ দিলে হয়তো ব্যপারটা সহজেই বুঝতে পারবেন-- CSS নিয়ে ওয়েবসাইট ডিজাইন করার সময় সাইটটিকে রেস্পনসিভ করার কাজে Less Framework খুব বেশি ব্যবহৃত হয়, আবার একটি উৎকৃষ্ট মানের এবং রেস্পনসিভ ওয়েবসাইট ডিজাইন করতে Bootstrap নামক একটি ওপেন সোর্স ফ্রেমওয়ার্ক অনেক কাজের। এখন কথা হচ্ছে ওয়েবসাইট ডিজাইন তো HTML, CSS দিয়ে এমনিতেই করা যায় তাহলে অযথা ফ্রেমওয়ার্কের ঝামেলা করার দরকার কি? এর উত্তর অবশ্য আমি আগেই দিয়েছিলাম, আপনি যদি এই ওয়েবসাইট ডিজাইনের ক্ষেত্রে Bootstrap ব্যবহার করেন তাহলে একসাথে অনেক সুবিধা পাবেন আর তা হল- (১) আপনার অনেক সময় বাঁচবে আপনি যদি প্রফেশনাল হয়ে থাকেন তাহলে সময়টা আপনার কাছে অনেক বড় একটা ফ্যাক্ট। (২) আপনার ডিজাইনটি নিট অ্যান্ড ক্লিন থাকবে এবং এর কার্যকারিতা থাকবে শতভাগ। (৩) আপনার ওয়েবসাইট একই সাথে রেস্পনসিভ( এক সাথে অনেক ডিভাইসের জন্য কার্যকরী ) হয়ে যাবে। (৪) আর সবচেয়ে বড় সুবিধা হচ্ছে আপনার কাছে কাজটা অনেক সহজ হয়ে উঠবে, আপনি যদি CSS ভালোভাবে নাও জানে তারপরও প্রফেশনালদের মত কাজ করতে পারবেন।
আমি Bootstrap ফ্রেমওয়ার্কের মাধ্যমে আপনাদেরকে ফ্রেমওয়ার্ক সম্পর্কে একটা ধারনা দিতে চেয়েছি। এক-এক ফ্রেমওয়ার্কের সুবিধা, কাজের ধরণ এবং উদ্দেশ্য একেক রকম।
এখন আসি জাভাস্ক্রিপ্টের ফ্রেমওয়ার্কের কথায়। এতক্ষণ ফ্রেমওয়ার্ক নিয়ে যা যা বলেছি তা জাভাস্ক্রিপ্টফ্রেমওয়ার্কের ক্ষেত্রেও প্রযোজ্য।
জাভাস্ক্রিপ্টের ফ্রেমওয়ার্কগুলা যে জাভাস্ক্রিপ্ট দিয়েই তৈরি হতে হবে এমন কোনো নেই, তবে সাধারণত কোর পার্টটা জাভাস্ক্রিপ্ট দিয়েই হয়ে থাকে, যার কারণে আপনি ভালোভাবে জাভাস্ক্রিপ্ট পারলেও ফ্রেমওয়ার্ক আবার নতুন করে শিখতে হবে। তবে ফ্রেমওয়ার্ক শেখার ক্ষেত্রেও আপনি একই পন্থা অবলম্বন করবেন অর্থাৎ রেফারেন্স হিসেবে শিখবেন আর এর জন্য ফ্রেমওয়ার্ক এর অফিসিয়াল ডকুমেন্টেশনই হচ্ছে বেস্ট। জাভাস্ক্রিপ্টের অধিক ব্যবহৃত কয়েকটা ফ্রেমওয়ার্কসম্পর্কে নিচে কিছু তথ্য দেয়া হল--
jQuery: সাধারণত animation, slider ইত্যাদি নিয়ে কাজ করার জন্য ব্যবহৃত হয়, এটাকে javascript library বলা হয়। jQuery Mobile দিয়ে স্মার্টফোন, ট্যাবলেট ইত্যাদির জন্য বিভিন্ন ধরণের অ্যাপ্লিকেশান তৈরি করা হয়।
AJAX( Asynchronous JavaScript and XML ): এটাও জাভাস্ক্রিপ্টের একটি অতি পরিচিত ফ্রেমওয়ার্ক। AJAX এর মূল কাজ হচ্ছে সার্ভারে ডাটা আদান-প্রদান করা, কোনো একটি ওয়েব পেজের সম্পূর্ণ লোড না করে নির্দিষ্ট অংশ আপডেট করা।
AngularJS: Single Page Application( SPA ) এর জন্য এটি অত্যন্ত কার্যকরী। এটা শেখাও খুব সহজ।
JSON( JavaScript Object Notation ): এটা XML এর পরিবর্তে শেখা যেতে পারে, এটাও syntex-এর ভিত্তিতে ডাটা বিনিময়ের কাজ করে থাকে।
তাছাড়াও Encoder, Meteor ইত্যাদি জাভাস্ক্রিপ্টের আরও অনেক ফ্রেমওয়ার্ক আছে।
Google Maps API( Application Programming Interface ) নিয়ে কাজ করার জন্যও জাভাস্ক্রিপ্ট অতুলনীয়।
শেষবেলা এসে আমি এই কথাটাই বলব যে কম্পিউটার প্রোগ্রামিং শুধুমাত্র কয়টা লজিক এর ভিত্তিতে কাজ করে অর্থাৎ যত ভালোভাবে এলগরিদম ডিজাইন করতে পারবেন আপনি ততোই ভালো প্রোগ্রামার হতে পারবেন। জাভাস্ক্রিপ্ট যেহেতু প্রোগ্রামিং ল্যাঙ্গুয়েজের অন্তর্ভুক্ত এটির বেলায়ও তাই কথাগুলো প্রযোজ্য। আপনি যদি এলগরিদমের ব্যপারটা বাদ দিতে চান তাতেও কোনো সমস্যা নেই কিন্তু সেক্ষেত্রে আপনি স্বনির্ভরতা হারাবেন অর্থাৎ আপনি ওয়েব অ্যাপ্লিকেশান তৈরি করতে পারবেন ঠিকই কিন্তু নিজের তৈরি লজিক আর এলগরিদমের সাহায্যে কোনো অ্যাপ্লিকেশান বা সফটওয়্যার তৈরি করার যে আনন্দ তা থেকে অবশ্যই বঞ্চিত হবেন। এলগরিদমের ব্যপারটা নিজের কাছে স্পষ্ট করার জন্য সবচেয়ে উত্তম ল্যাঙ্গুয়েজ হচ্ছে C.

Please stay with this blog

0 comments:

Post a Comment