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

উদ্দেশ্য
--------

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

এছাড়াও কম্পিউটারের কম্পাইলার এবং একটি প্রোগ্রামিং ভাষা নিয়ে কাজ করার জন্য কম্পিউটারটির সবকিছু ঠিকঠাকমত কাজ করছে কিনা সেটা জানার জন্যেও "হ্যালো, ওয়ার্ল্ড!" প্রোগ্রামটি ব্যবহার করা হয়। কোন একটি কম্পিউটারে নতুন একটি প্রোগ্রামিং ভাষার জটিল জটিল প্রোগ্রামগুলো ঠিকমত কাজ করতে পারবে কিনা সেটা জানার জন্যেও এটি ব্যবহৃত হয়। এই কারণেই কোন নতুন টুল চেইন পরীক্ষা করার জন্য এই সহজ প্রোগ্রামটি ব্যবহার করা হয়।

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

২০১৬ সালে যুক্তরাজ্যের যোগাযোগ সংস্থার গোপন হেডকোয়ার্টার থেকে তাদের প্রথম টুইট হিসেবে "হ্যালো, ওয়ার্ল্ড!" প্রোগ্রামটি ব্যবহার করেছিল।

ইতিহাস
------

"দ্যা সি প্রোগ্রামিং ল্যাঙ্গুয়েজ" নামক একটি বইয়ে উদাহরণ হিসেবে "হ্যালো, ওয়ার্ল্ড!" প্রোগ্রামটি ব্যবহার করা হয়েছিল।তার প্রভাবেই ছোটো ছোটো টেস্ট প্রোগ্রাম দ্বারা কম্পিউটার পরীক্ষা করার জন্য পরীক্ষামূলক ভাবে "হ্যালো, ওয়ার্ল্ড!" প্রোগ্রামটি ব্যবহারের প্রচলন চলে আসছে। বইটিতে প্রকাশিত "হ্যালো, ওয়ার্ল্ড!" প্রোগ্রামটি  "`hello, world`" (বিস্ময়বোধক চিহ্ন ব্যতীত) লিখাটি প্রকাশ করে। ১৯৭৪ সালে ব্রায়ান কার্নিংটন বেল ল্যাবরেটরীর অভ্যন্তরীণ স্মারকলিপি থেকে উত্তরাধিকারসূত্রে এই কোডটি পান। কোডটি হচ্ছে -

```
#include <stdio.h>

main( )
{
 printf("hello, world\n");
}

```

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

```
main(){
  extrn a,b,c;
  putchar(a); putchar(b); putchar(c); putchar('!*n');
  }

a 'hell';
b 'o, w';
c 'orld';

```
এই প্রোগ্রামটি টার্মিনালে *hello, world!* লেখাটি একটি নতুন লাইনসহ প্রদর্শন করত। বি ল্যাঙ্গুয়েজে এই শব্দদুটো কয়েকটি চলকে রাখতে হত। কেননা, বি ল্যাঙ্গুয়েজে ক্যারেক্টার ধ্রুবক কেবল চারটি "আসকি" অক্ষর রাখতে পারত। পূর্ববর্তী টিউটোরিয়ালের উদাহরণটি টার্মিনালে *hi!* শব্দটি প্রিন্ট করে এবং *hello, world!* শব্দদুইটি প্রদর্শন করার জন্য কিছু বেশি ক্যারেক্টার ধ্রুবকের দরকার হয়। 

কিন্তু দাবী করা হয় যে hello, world শব্দদুইটি ১৯৬৭ সালে বিসিপিএল থেকে এসেছে।[*অনির্ভরযোগ্য উৎস?*] প্রিন্সটন বিশ্ববিদ্যালয়ের অধ্যাপক ব্রায়ান কার্নিংটন এবং ক্যামব্রিজ বিশ্ববিদ্যালয়ের অধ্যাপক মার্টিন রিচার্ডসের কাছ থেকে এই দাবীটির পক্ষে সমর্থন পাওয়া যায়।

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

প্রকারভেদ
---------

এই প্রোগ্রামটির বিভিন্ন প্রকারভেদ রয়েছে। প্রকারভেদগুলো হল কমার (,) উপস্থিতি কিংবা অনুপস্থিতি, "H" এবং "W" এর মধ্যে যেকোনো একটি কিংবা উভয়টি বড়হাতের নাকি ছোটহাতের অক্ষরে লেখা। কিছু কিছু প্রোগ্রামিং ভাষা সম্পূর্ণ বাক্যটিকে ভিন্নভাবে আউটপুটে দেখায়, যেমন "HELLO WORLD!"। এই পদ্ধতিতে কেবল বড়হাতের অক্ষর লেখা যায়। একইভাবে কোন কোন পদ্ধতিতে স্ট্রিং-এর সাহায্যে কেবল ছোটহাতের অক্ষর লেখা যায়। উদাহরণস্বরূপ, ম্যালবগ প্রোগ্রামিং ভাষায় লিখা সর্বপ্রথম "HEllO WORld" মোটামুটি ভালো হিসেবে ধরা হয় 

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

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

আরও দেখুন
---------

* ফুবার (কম্পিউটার প্রোগ্রামিং)

তথ্যসূত্র
---------

1. ↑  @GCHQ (১৬ মে ২০১৬)। "Hello, world." (টুইট) – টুইটার-এর মাধ্যমে।
2. ↑  "Hello, world: GCHQ joins Twitter"। *BBC News Online*। ১৬ মে ২০১৬।
3. ↑  "The Programming Language B"।
4. ↑  BCPL, *Jargon File*
5. ↑  A Tutorial for the Go Programming Language.
6. ↑  Jolif, Christophe (জানুয়ারি ২০০৩)। "Bringing SVG Power to Java Applications"। *Sun Developer Network*।
7. ↑  "Teaching the Nintendo Generation to Program" (পিডিএফ)। ৫ মে ২০১৬ তারিখে মূল (পিডিএফ) থেকে আর্কাইভ করা। সংগ্রহের তারিখ ৩১ জানুয়ারি ২০১৭।
8. ↑  "Malbolge"। *Esolang*। esolangs-wiki। সংগ্রহের তারিখ ২৮ অক্টোবর ২০১৬।
9. ↑  Silva, Mike (১১ সেপ্টেম্বর ২০১৩)। "Introduction to Microcontrollers - Hello World"। *EmbeddedRelated.com*। সংগ্রহের তারিখ ১৯ মে ২০১৫।
10. ↑  George, Ligo। "Blinking LED using Atmega32 Microcontroller and Atmel Studio"। *electroSome*। সংগ্রহের তারিখ ১৯ মে ২০১৫।
11. ↑  PT, Ranjeeth। "2. AVR Microcontrollers in Linux HOWTO"। *The Linux Documentation Project*। সংগ্রহের তারিখ ১৯ মে ২০১৫।
12. ↑  Andersson, Sven-Åke (২ এপ্রিল ২০১২)। "3.2 The first Altera FPGA design"। *RTE*। Realtime Embedded AB। ২১ মে ২০১৫ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ১৯ মে ২০১৫।
13. ↑  Fabio, Adam (৬ এপ্রিল ২০১৪)। "CPLD Tutorial: Learn programmable logic the easy way"। *Hackaday*। সংগ্রহের তারিখ ১৯ মে ২০১৫।

বহিঃসংযোগ
---------

* Rösler, Wolfram। "Hello World Collection"। *helloworldcollection.de*।
* "Hello world/Text"। *Rosetta Code*।
* "Unsung Heroes of IT / Part One: Brian Kernighan"। *TheUnsungHeroesOfIT.com*। ২৬ মার্চ ২০১৬ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ৩১ জানুয়ারি ২০১৭।