Uncategorized

অ্যাসেম্বলি ল্যাঙ্গুয়েজ / যান্ত্রিক ভাষা

asm_program_hello_world

 বিস্তারিতঃ

কম্পিউটার বিজ্ঞানে অ্যাসেম্বলি   ল্যাঙ্গুয়েজ/যান্ত্রিক ভাষা (ইংরেজি: Machine code বা machine language) হচ্ছে এক ধরনের নিম্ন-স্তরের প্রোগ্রামিং ভাষা যা কোন কম্পিউটারের কেন্দ্রীয় প্রক্রিয়াকরণ ইউনিট বা সিপিইউ সরাসরি বুঝতে পারে। যান্ত্রিক ভাষা দ্বিমিক বা বাইনারি কোডে লেখা হয়, অর্থাৎ ০ ও ১-এর সমন্বয়ে যান্ত্রিক ভাষার বিভিন্ন নির্দেশগুলি লেখা হয়। এই নির্দেশগুলি কী হবে তা সিপিইউ-এর প্রস্তুতকারক কোম্পানি ও মডেলের উপর নির্ভর করে, যেমন- এএমডি প্রসেসরের জন্য যান্ত্রিক ভাষা ইন্টেল প্রসেসরের যান্ত্রিক ভাষার চেয়ে আলাদা।

যান্ত্রিক ভাষায় প্রোগ্রাম লেখা অত্যন্ত দুরূহ। প্রোগ্রামারকে প্রতিটি বিটের হিসাব রাখতে হয়। কেবল ০ ও ১-এ লেখা বলে প্রোগ্রামের ভুলত্রুটি ধরতেও অসুবিধা হয়। মার্কিন গণিতবিদ গ্রেস মারি হপার ১৯৫২ সালে এই সমস্যাগুলি দূর করার লক্ষ্যে অ্যাসেম্বলি ভাষা উদ্ভাবন করেন। অ্যাসেম্বলি ভাষা থেকে যান্ত্রিক ভাষায় অনুবাদের জন্য বিশেষ ধরনের অনুবাদক প্রোগ্রাম ব্যবহার করা হয়, যাদের নাম দেয়া হয়েছে অ্যাসেম্বলার। অ্যাসেম্বিলি ভাষায় যান্ত্রিক ভাষার কিছু কিছু নির্দেশ বাইনারী সংখ্যায় প্যদারে বদলে সরাসরি ইঙরেজী ভাষায় প্রদান করা হত যেমন যোগ করার নির্দেশ প্রদান করতে হলে যান্ত্রিক ভাষায় 100010 লিখতে হত কিন্তু অ্যাসেম্বলি ভাষায় সরাসরি ADD লিখলেই চলত ।

বাইনারী সংখ্যা অর্থাৎ শুধুমাত্র 0 এবং 1 এর মাধ্যমে রচিত যে কম্পিউটার প্রোগ্রাম সরাসরি প্রথম প্রজন্মের ভাষা বলতে যান্ত্রিক ভাষাকে বোঝানো হয়। সেন্ট্রাল প্রসেসিং ইউনিট কর্তৃক নির্বাহিত হতে পারে তাকে যান্ত্রিক ভাষা বলে। কম্পিউটারে মৌলিক ভাষা বলতেই যান্ত্রিক ভাষাকে বোঝানো হয়। কম্পিউটারকে প্রদত্ত যে কোন নির্দেশনা যান্ত্রিক ভাষায় পরিবর্তন ব্যতীত নির্বাহ সম্ভব নয়। এ প্রেক্ষিতে এসেম্বলী ভাষা অথবা যে কোন উচ্চতর ভাষায় রচিত কম্পিউটার প্রোগ্রাম যান্ত্রিক ভাষায় রূপান্তরিত হবার মাধ্যমেই নির্বাহ করা হয়। যান্ত্রিক ভাষায় রচিত প্রোগ্রামকে অবজেক্ট প্রোগ্রাম (Object Program) এবং অন্যভাষায় রচিত প্রোগ্রামকে উৎস প্রোগ্রাম (Source Program) বলা হয়। কম্পিউটারের প্রোগ্রামিং ভাষার সূচনাতে বাইনারী কোডের মাধ্যমে এই যান্ত্রিক ভাষায় কম্পিউটারকে নির্দেশনা প্রদান করা হলেও এই প্রক্রিয়াটি ছিলো অত্যন্ত কষ্টকর, সময়সাপেক্ষ, ও ত্রুটিপূর্ণ। বাইনারী সংখ্যা মনে রাখা যেহেতু অনেকটা অসম্ভব, সেহেতু প্রোগ্রামিং এর ত্রুটির সম্ভাবনাও বেশি ছিল এবং ত্রুটি সনাক্তকরণও ছিলো অসম্ভব। মেশিন ভাষা এবং এসেম্বলী ভাষা যন্ত্রনির্ভর। অর্থাৎ, এক কোম্পানির কম্পিউটারের জন্য মেশিন ভাষা বা মেশিন নির্দেশ ও এসেম্বলী নির্দেশ এক নাও হতে পারে। উদাহরণস্বরূপ মেশিন কোড 00000101 দ্বারা সিপিইউ এর নামের প্রসেসর রেজিস্টার এর মান একক হ্রাস করার নির্দেশনা প্রদান করা হয়, যেটি এসেম্বলী ভাষায় DEC B নির্দেশের মাধ্যমে নির্দেশিত হয়। সাধারণত যান্ত্রিক ভাষার নির্দেশ অপারেশন কোড ফিল্ড, J-type (jump), I-type (immediate), R-type (register) এবং function এর সমন্বয়ে গঠিত হতে পারে। MIPS (32 Bit) আর্কিটেকচার অনুযায়ী register 1 এবং register 2 এ বিদ্যমান মান যোগ করে register 6 এ স্থাপনের জন্য মেশিন ভাষায় 000000 00001 00010 00110 00000 100000 নির্দেশ ব্যবহৃত হয়। রেজিস্টার register 3 এ যে মান বিদ্যমান রয়েছে সেটি থেকে থেকে 68 মেমরী সেল (Memory Cell) দূরতে বিদ্যমান মেমরী সেলে রক্ষিত মানটিকে register 8 এ load (সঞ্চালন) করার জন্য মেশিন ভাষায় 100011 00011 01000 00000 00001 000100 নির্দেশ প্রদান করা হয়। মেমরীর 1024 এড্রেসে Jump করার জন্য ব্যবহৃত মেশিন কোড হল 000010 00000 00000 00000 10000 000000। মেশিন ভাষা এবং এসেম্বলী ভাষায় প্রদত্ত নির্দেশগুলিকে মূলত চারটি ভাগে ভাগ করা যায়-

  • গাণিতিক নির্দেশ (Arithmetic Instructions) – যেমন, যোগ (Addition/Summation), বিয়োগ (Subtraction), গুণ (Multiplication), ভাগ (Division)
  • নিয়ন্ত্রণমূলক নির্দেশ (Control Instructions) – যেমন, লোড (Load), স্টোর (Store) ও জাম্প (Jump)
  • ইনপুট-আউটপুট নির্দেশ (Input-Output Instructions) – যেমন পড় (Read), লেখ (Write)
  • প্রত্যক্ষ/সরাসরি ব্যবহারমূলক নির্দেশ (Direct Use/Instructions) – যেমন শুরু করা (Start), স্থগিত করা (Halt), সমাপ্ত করা (End) ইত্যাদি।

যান্ত্রিক ভাষার সুবিধা:

  • যেহেতু কম্পিউটার শুধুমাত্র বাইনারী ভাষা বোঝে এবং বাইনারী নির্দেশ সরাসরি নির্বাহ করতে পারে সেজন্য মেশিন ভাষায় রচিত প্রোগ্রাম নির্বাহ সর্বাপেক্ষা দ্রুত।
  • সরাসরি বাইনারীতে লিখিত হওয়ায় মেশিন ভাষায় রচিত প্রোগ্রামের জন্য কোনরূপ পৃথক অনুবাদক (Compiler/Interpreter) প্রয়োজন হয় না।
  • যান্ত্রিক ভাষায় রচিত প্রোগ্রাম সরাসরি বাইনারীতে রচিত হওয়ায় এটি সংরক্ষণে যেমন স্বল্প মেমরী প্রয়োজন তেমনি এটির জন্য পৃথক কোন অনুবাদকের প্রয়োজন না থাকার প্রেক্ষিতে অতিরিক্ত কোন স্মৃতির প্রয়োজন হয় না।
  • কম্পিউটার সিস্টেমের ইলেকট্রনিক সংগঠনের সাথে একমাত্র যান্ত্রিক ভাষা সরাসরি সংযোগ স্থাপন করে বলে কম্পিউটার সিস্টেমের নবতর উদ্ভাবনের ও উৎকর্ষতার জন্য যান্ত্রিক ভাষা অপরিহার্য।
  • কম্পিউটার সিস্টেমের সাথে এর peripheral systems এর সংযোগ বিধানের জন্য যান্ত্রিক ভাষা অত্যাবশ্যকীয়।

যান্ত্রিক ভাষার অসুবিধা/সীমাবদ্ধতা

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

প্রোগ্রামিং এর ইতিকথা

c-prog

 

স্বাগতম সবাইকে !!

সিএসই,আইটি,আইসিটি স্টুডেন্টদের জন্য ঃ

বছরের শুরুতে সবার মধেই একটা কিউরিসিটি থাকে প্রোগ্রামিং নিয়ে।এক/দুই সপ্তাহ পর আর সেটা খুব কম মানুষ বাদে সবাই ভুলে যায়। প্রোগ্রামিং এর নাম শুনলেই বিরক্তি লাগে।কেন যে এই সাবজেক্ট এ ভর্তি হলাম।ধুর্‌…………  😦
এটা অনেকটা ভার্সিটির আর বাকিটা টিচার/সিনিওর দের উপর নির্ভর করে। এটা কেন বললাম সেটা কয়েকটা ভার্সিটির(sust,buet,ju,du) উপর গবেষণা করলেই বুঝবেন। তারা কেন ভালো,কেন এতো নাম করতেসে,কে তাদেরকে সাপোর্ট দিচ্ছে এইসব বুঝতে পারবেন।
যাক, কাজের কথায় আসি।যাদের মধ্যে ৫% ও আগ্রহ আছে তাদের জন্যই আমার এইটা লিখা 🙂

অনেক ভালো ভালো ইন্সপাইরেসনাল কথাবার্তা শুইনা যখনি চিন্তা করলেন  যে না সব বাদ আজকে থেকে শুধুই প্রোগ্রামিং। কিন্তু কোনটা শিখবেন  সেইটা বুঝতেসেননা । ব্যাস ওই ৫% ইচ্ছাও শেষ। ধুর বাদ দে , প্রোগ্রামিং আমার জন্য না।সব বাদ এখন শুধু মুভি হবে ম্যান ,চিল হবে চিল ,জিবনে আছে আর কি? !!
শেষ সবকিছু  😦  😦  এই ইমো ছাড়া আপনাকে  দেয়ার মতো আর কিছু নাই আমার কাছে।
যাই হোক অনেক কস্টে ডিসিশন নিলেন  যে সি শিখবেন । কারন ভার্সিটি  তে সি শিখায় ।
প্রথম এক মাস পর বুঝলেন  যে আপনি  “হেলো ওয়ার্ল্ড” প্রিন্ট ছাড়া আর কিছুই  পারেন না। কারন টিচার কিচ্ছু শিখায় নাই। আপনি  কেন শিখতে যাবেন?
এই চিন্তা ভাবনা থাকলে প্রোগ্রামিং শুধু আপনার কাছে একটা নাউন ছাড়া আর কিছুই মনে হবে না ।

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

তাইলে আর দেরি না কইরা এখনি শুরু কর।হুম এখনি 🙂

যারা সি শিখতে চানঃ

আপনি সি ল্যাঙ্গুয়েজ শিখতে চান। বেশ ভাল কথা! তারজন্য আপনি নিচের কাজগুলো করতে পারেন:

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

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

(২) বইয়ের নাম: Programming in ANSI C (4th Edition)

লেখক: E. Balagurusamy

রিভিউ: সি প্রোগ্রামিং শেখার জন্য এর চেয়ে সহজ, স্বাভাবিক ও সাবলীল ভাষায় লেখা আর কোন বই আছে কিনা আমার জানা নাই।

(৩) বইয়ের নাম: Let Us C (5th Edition)

লেখক: Yashwant Kanetkar

রিভিউ: প্রথমটার পর এটা আমার হট ফেভারিট। এটাও বিগিনারদের জন্য লেখা সেরা বইগুলোর একটা।

(৪) বইয়ের নাম: C The Complete Reference (4th Edition)

লেখক: Herbert Schildt

রিভিউ: হার্বার্ট শীল্ডের বইয়ের নাম শোনে নাই এমন প্রোগ্রামার পাওয়া যাবে না। এই বইটা বেশ ভাল, তবে বিগিনারদের জন্য তেমন নয়। রেফারেন্স হিসেবে বিশেষত সি এর এডভান্স লেভেলের প্রোগ্রামিং শেখার জন্য বেশ ভাল বই একটা।
(৫) বইয়ের নাম: C

লেখক: Tutorialspoint.Com

রিভিউ: TutorialsPoint এর অন্যসব টিউটোরিয়ালের মত এটাও বেশ ভাল। বিগিনারদের বেশ কাজে দেবে।

(খ)

৬।শরিফ ভাইয়ের বাংলা টিউটোরিয়াল গুলা আমার  কাছে অনেক ভালো মনে হয়েছে !!

৭।সুবিন ভাইয়ের টিউটোরিয়াল গুলাও ভালো। তবে উনার বইটা দয়া করে কেও পরবন  না । আগ্রহ হারাইয়া ফেলবেন।
https://www.youtube.com/channel/UCFsbfRphhQfPFJrwKb7s3JA

৮।অনলাইন জাজঃ
https://uva.onlinejudge.org/
https://www.urionlinejudge.com.br/judge/en/login
৯। অনলাইন কোড লেখা/কম্পাইল করার জন্য ঃ
http://ideone.com/

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

আর ছোটখাট যেসব সমস্যা হবে তার জন্য আমি তো রয়েছেই আপনাদের পাশে। হ্যাপি কোডিং!!!

 

Computer Networks

মদ্যপানকারীদের জন্যে নতুন অ্যাপ!

technology-news-limon_44768

অনেকে আছেন যারা রাতে মদ্যপান করে বাসায় ফিরে মাতাল অবস্থায় যে কাউকে অবাঞ্ছিত এসএমস পাঠিয়ে দেয়। পরে দেখা যায়, এসএমএসটি এমন কারও কাছে যায় যার জন্যে নিজের বড় ধরনের ক্ষতি হওয়ার সম্ভাবনা রয়েছে।

এমন হতে পারে যে, আপনি আপনার সাবেক প্রেমিকা, অফিসের উর্ধ্বতন কর্মকর্তা বা নিজের বাবা মায়ের ফোনে কোনও অবাঞ্ছিত এসএমএস পাঠিয়েছেন। এমন মানুষকে বিপদের হাত থেকে রক্ষা করতে এবার বাজারে আসছে নতুন অ্যাপ।

নতুন এই অ্যাপে ‘ড্রাঙ্ক মোড’ থাকবে। যেটি আপনাকে মদ্যপ অবস্থায় ফোন বা এসএমএস করতে দেবে না। মদ্যপান শুরুর আগে এই মোড অন করে রাখুন। ৩ থেকে ১২ ঘণ্টা পর্যন্ত এই মোড অন রাখা যাবে।

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

 

Computer Networks

Why Is Localhost’s IP Address 127.0.0.1? It’s Meaning And Use:

there_s_no_place_like_127_0_0_1_by_jokkaboler-d70v5ax

Have you wondered what is local host’s IP and 127.0.0.1 what it actually is?

If you are on Internet 24×7 you might have definitely heard or seen an IP address 127.0.0.1 during your time on the net. The geeky nerds among you might know that 127.0.0.1 points to localhost. But do you know why is localhost‘s IP address 127.0.0.1 and not something else?

The basic logic behind this address is that it is used to establish a connection to the same computer used by the end-user. Below is a detailed answer by a user on Super User forum.

How does 127.0.0.1 work? Why is it called so?

Here is a geeky answer from a techie :

127 is the last network number in a class A network with a subnet mask of 255.0.0.0127.0.0.1 is the first assignable address in the subnet. 127.0.0.0 cannot be used because that would be the wire number. But using any other numbers for the host portion should work fine and revert to using127.0.0.1. You can try it yourself by pinging 127.1.1.1 if you’d like. Why they waited until the last network number to implement this? I don’t think it’s documented.

Most developers use local host 127.0.0.1 to test their applications before actually deploying it. When you try to establish a network connection to the 127.0.0.1 loopback address, it works in the same manner as making a connection with any remote device. However, it avoids connection to the local network interface hardware.

But, why does the localhost IP address starts with 127? Well, 127 is the last network number in a class A network. It has a subnet mask of 255.0.0.0. So, the first assignable address in the subnet is 127.0.0.1.

However, if you use any other numbers from the host portions, it should work fine and revert to 127.0.0.1. So, you can ping 127.1.0.1 if you like.

You might also ask why the last network number was chosen to implement this. Well, the earliest mention of 127 as loopback dates back to November 1986 RFC 990. And, by 1981, 0 and 127 were the only reserved Class A networks.

The class A network number 127 is assigned the “loopback” function, that is, a datagram sent by a higher level protocol to a network 127 address should loop back inside the host. No datagram “sent” to a network 127 address should ever appear on any network anywhere. Even as early as September 1981 RFC 790, 0 and 127 were already reserved:
000.rrr.rrr.rrr                 Reserved                     [JBP]
...
127.rrr.rrr.rrr                 Reserved                     [JBP]

0 and 127 were the only reserved Class A networks by 1981. Out of the two available localhosts, 0 was used for pointing to a specific host and that left 127. So all developers testing their apps and websites have to use 127  for loopback. Some would also call it more sensible to choose 1.0.0.0 for loopback, but that was already given to BBC Packet Radio Network.

Uncategorized

About Me

11

Hello,

This is Revel Yusuf, from dhaka, Bangladesh.I am Currently studying  in B.S Information and Communications Technology at Bangladesh University of Professionals as 3rd year Student .

Python is my Passion,my dream,my fantasy.I passing my maximum time by writing Python scripts and solving the online judge problems.I wanna build my carrier on Python. I know some basic Programming languages also like C,C++,Java,JavaScript,html,css etc.

Now I am busy with Django Projects.I did learn Django from 6 months ago.Now I am doing some opensource Django Projects from GitHub.I wanna be a good web developer.

This is All about me 🙂 .

Contact Me

revelyusuf.blogspot.com

Facebook_id

gmail_account