স্থানীয়ভাবে 8th ইনস্টল করা

নিজের মেশিনে Exercism-এর অনুশীলনী সমাধান করতে স্থানীয়ভাবে 8th ইনস্টল করার উপায় জানুন


8th ইনস্টল করা

8th একটি ZIP ফাইলে বিতরণ করা হয় যাতে সবকিছুই অন্তর্ভুক্ত থাকে; এতে আপনি যে সংস্করণটি ডাউনলোড করেছেন, সেটি যেসব প্ল্যাটফর্ম সমর্থন করে, তাদের সবার জন্য 8th-এর সংস্করণ থাকে। 8th-এর আপনার সংস্করণগুলো কেবল আপনার জন্যই লাইসেন্স করা, এবং সেগুলো শেয়ার করা যাবে না।

zip ফাইলটি সংগ্রহ করুন

8th সংগ্রহ করুন পেজ থেকে শুরু করে,

  • ফর্মে আপনার নাম ও ইমেইল লিখুন, এবং Free সংস্করণটি নির্বাচন করুন। 8th-এর লাইসেন্স আপনাকে অবশ্যই মেনে নিতে হবে।
  • 8th-dev আপনাকে যাচাই করার জন্য একটি ইমেইল পাঠাবে। রেজিস্ট্রেশন ইমেইলের লিঙ্কে ক্লিক করুন।
  • 8th-dev আপনার জন্য একটি ইউনিক zip ফাইল তৈরি করে সেটি সম্পর্কে আপনাকে একটি ইমেইল পাঠাবে। সেই ইমেইলে "download here" লিঙ্কটি খুঁজুন।

ইনস্টল করা

8th ব্যবহার করতে হলে, আপনার কাছে অ্যাক্সেসযোগ্য যেকোনো ফোল্ডারে zip ফাইলটি আনপ্যাক করতে হবে।

zip ফাইলে বেশ কয়েকটি ফোল্ডার অন্তর্ভুক্ত থাকে:

folder description
bin সমর্থিত সব প্ল্যাটফর্মের জন্য 8th-এর এক্সিকিউটেবল
docs ম্যানুয়াল ও টিউটোরিয়াল
libs 8th-এর সাপোর্ট লাইব্রেরি (8th কোড)
samples টিউটোরিয়াল ও ম্যানুয়ালের সম্পূরক হিসেবে নমুনা কোড
keys আপনার কী ও রেজিস্ট্রেশনের তথ্য ধারণ করা 'id.blob'

Pro+ ব্যবহারকারীরা: মনে রাখবেন, id.blob-এ থাকা এনক্রিপশন কী আপনার ডাউনলোড করা 8th-এর প্রতিটি নির্দিষ্ট সংস্করণের জন্য আলাদা, এবং এনক্রিপ্টেড, ডিপ্লয়যোগ্য অ্যাপ্লিকেশন তৈরির জন্য এগুলো গুরুত্বপূর্ণ। আপনি যদি 8th-কে তার ডিস্ট্রিবিউশন প্যাকেজের বাইরে সরিয়ে নেন এবং এটি id.blob খুঁজে না পায়, তাহলে আপনি 8th -v করলে এটি custid: id.blob? রিপোর্ট করবে, এই মনে করিয়ে দিতে যে এটি আইডেন্টিফিকেশন তথ্য খুঁজে পাচ্ছে না।

আপনি যে প্ল্যাটফর্মেই ডেভেলপ করুন না কেন, 8th যে সব প্ল্যাটফর্ম সমর্থন করে, তার যেকোনোটির জন্য অ্যাপ্লিকেশন তৈরি করতে পারবেন।

zip ফাইলটি আনপ্যাক করার পর, আপনি সরাসরি 8th রান করতে পারবেন। উদাহরণস্বরূপ, আপনি যদি এটি ৬৪-বিট Linux-এ /opt/8th ফোল্ডারে ইনস্টল করেন, তাহলে আপনার ইচ্ছেমতো প্যারামিটার দিয়ে /opt/8th/bin/lin64/8th টাইপ করলেই এটি সঠিকভাবে কাজ করবে। macOS বা Windows-এও একইভাবে করুন।

আপনার সিস্টেমের PATH এনভায়রনমেন্ট ভ্যারিয়েবলে 8th বাইনারির ফোল্ডারটি যোগ করলে, এর পুরো পাথ টাইপ না করে শুধু 8th টাইপ করলেই চলবে।

8th ব্যবহার করা

8th নিজেই একটি কমান্ড-লাইন প্রোগ্রাম, এটি ডেস্কটপ আইকনে ক্লিক করে চালু করার জন্য নয়। এটি দিয়ে আপনি সাধারণ GUI প্রোগ্রাম তৈরি করতে পারেন, যেগুলো ওইভাবে চালু করা যায়; কিন্তু 8th কম্পাইলার নিজে একটি CLI (কমান্ড-লাইন ইন্টারফেস) প্রোগ্রাম।

আপনি যদি Windows-এ চালান এবং MSys বা Cygwin শেল ব্যবহার করেন, তাহলে আপনার কনসোল মোড প্রোগ্রামগুলো ঠিকভাবে কাজ করার জন্য বিনামূল্যে পাওয়া যায় এমন winpty প্রোগ্রামটিও আপনার লাগতে পারে। Windows 10-এর সাম্প্রতিক সংস্করণগুলোতে এটির প্রয়োজন হয় বলে মনে হয় না।

আপনি যদি MacOS-এ চালান, তবে 8th ফোরামের এই থ্রেডটি পড়ুন।

8th-এর কমান্ড-লাইন দেখতে এমন:

8th [options] [[-f] file...] [-e 'code'...]

এখানে [-f] file অপশনের অর্থ "ফাইলের বিষয়বস্তু ইন্টারপ্রেট করা", আর -e code-এর অর্থ "ওই নির্দিষ্ট 8th কোডটি ইন্টারপ্রেট করা"। কমান্ড-লাইনে দুটি অপশনই একাধিকবার দেওয়া যেতে পারে, এবং এর প্রভাব ক্রমসঞ্চিত হয়। অন্য কথায়:

8th -f first.8th -f second.8th

এটি first.8th ফাইলটির বিষয়বস্তু ইন্টারপ্রেট করবে, তারপর second.8th ফাইলটির বিষয়বস্তু ইন্টারপ্রেট করবে। মনে রাখবেন, আপনি যদি শুধু একটি 8th ফাইল রান করতে চান, তাহলে 8th -f first.8th লিখতে হবে না, বরং শুধু 8th first.8th টাইপ করলেই হবে।

8th যেসব CLI অপশন বোঝে, সেগুলোর সবই এখানে:

option description
-b bin/build ইউটিলিটি চালু করে
-D dir homedir-কে dir হিসেবে সেট করে (ডিফল্ট OS-এর উপর নির্ভর করে)
-e str str স্ট্রিংটিকে 8th কোড হিসেবে ইন্টারপ্রেট করে
-ee str str স্ট্রিংটিকে 8th কোড হিসেবে ইন্টারপ্রেট করে এবং এরপর বন্ধ হয়ে যায়
-f nm nm নামের ফাইলটি ইন্টারপ্রেট করে
-g SED debug/চেকিং চালু করে
-G প্রয়োজনীয় GL সংস্করণ সেট করে (যেমন 3.1)
-h হেল্প দেখায়
-H N কনসোল ইতিহাসের আকার N লাইনে সেট করে (ডিফল্ট: ১০০)
-k N ডেটা- ও r-স্ট্যাকের আকার N আইটেমে সেট করে (ডিফল্ট: ১২৮K)
-l আরও debug তথ্য
-r N কলব্যাক ডেটা-স্ট্যাকের আকার N আইটেমে সেট করে (ডিফল্ট: ২৫৬)
-s N রিকার্সন স্ট্যাকের আকার N বাইটে সেট করে (ডিফল্ট: ০, অর্থাৎ সিস্টেম-ডিফল্ট)
-S শনাক্ত করা SDL ড্রাইভারগুলো তালিকাভুক্ত করে এবং বন্ধ হয়ে যায়
-v 8th-এর সংস্করণ প্রিন্ট করে এবং বন্ধ হয়ে যায়
-vv -v-এর মতোই, তবে debug করার জন্য অতিরিক্ত তথ্যসহ
-x স্ট্যাকের টাইপ ও সীমা চেকিং বন্ধ করে
-z ডেটা-আইটেম গণনা চালু করে
-Z -z-এর মতো, তবে 'debug/allocs' লাইব্রেরিটিও অন্তর্ভুক্ত করে
-? nm 'nm' আইটেমের জন্য হেল্প প্রিন্ট করে
-- 8th-এর অপশনের সমাপ্তি বোঝায়

সাধারণভাবে আপনার -k, -r বা -s অপশনগুলো ব্যবহারের দরকার পড়ার কথা নয়; আপনি যদি সেগুলো কাজে লাগাতে পারেন বলে মনে করেন, যেমন একসাথে স্ট্যাকে ১২৮K আইটেম যথেষ্ট কম হয়, তার জন্য এগুলো দেওয়া আছে (সত্যি বলতে, এমন হলে আপনার অ্যালগরিদম বদলে ফেলা উচিত...)।

আপনার যদি মনে হয় আপনি প্রায়ই কমান্ড-লাইন সুইচ ব্যবহার করছেন, তাহলে আপনি যে অপশনগুলো পছন্দ করেন সেগুলো দিয়ে 8th চালু করতে সহজেই একটি "শেল স্ক্রিপ্ট" (macOS বা Linux-এ), অথবা একটি "ব্যাচ ফাইল" (Windows-এ; এটিকে "কমান্ড ফাইল"-ও বলা হয়) ব্যবহার করতে পারেন।

আপনি app:datadir ফোল্ডারে settings.8th নামে একটি 8th সোর্স ফাইলও তৈরি করতে পারেন। এটি থাকলে, 8th REPL চালু হওয়ার সময় এটি লোড করবে এবং সেটি সম্পর্কে একটি বার্তা প্রিন্ট করবে। নিরাপত্তার কারণে, প্যাকেজ করা অ্যাপে ওই ফাইলটি খোঁজা বা লোড করা হবে না।

8th থেকে বের হতে, নিচের যেকোনো একটি কাজ করুন:

  • bye টাইপ করে ENTER চাপুন। এতে 8th স্বাভাবিকভাবে বন্ধ হবে
  • 1 die টাইপ করে ENTER চাপুন। এতে 8th অস্বাভাবিকভাবে বন্ধ হবে এবং অপারেটিং সিস্টেমকে status-code 1 ফেরত দেবে
  • Ctrl+C কীটি দ্রুত পরপর দুবার চাপুন, অথবা Ctrl+D একবার চাপুন। যেকোনোটিই 8th-কে সাথে সাথে বন্ধ হতে বলবে
  • চলমান কোনো অ্যাপ্লিকেশনে throw কল করলে একটি এক্সেপশন ঘটবে। আপনি যদি 8th কনসোল থেকে চালান, বেশিরভাগ ক্ষেত্রেই আপনাকে সেখানে ফিরিয়ে দেওয়া হবে; আর আপনি যদি কোনো ফাইল বা প্যাকেজ করা অ্যাপ্লিকেশন চালান, তাহলে একটি বার্তা প্রিন্ট হবে এবং অ্যাপটি বন্ধ হয়ে যাবে।

8th প্রোগ্রাম রান করা

8th আপনার প্রোগ্রামগুলো বেশ কয়েকটি মোডে রান করতে পারে:

mode description
interactive শুধু 8th চালু করুন এবং কনসোলে আপনার কোড টাইপ করুন
script আপনার কোড একটি টেক্সট ফাইলে রাখুন এবং 8th mycode.8th দিয়ে (উদাহরণস্বরূপ) সেটি রান করুন। নিচের টিপটি দেখুন...
app build স্ক্রিপ্ট (বা -b CLI অপশন) ব্যবহার করে আপনার কোডকে একটি প্যাকেজ করা অ্যাপ্লিকেশনে রূপান্তর করুন

Pro+ ব্যবহারকারীরা: হ্যাকার ও অন্যান্য দুস্কৃতিকারী পক্ষকে নিরুৎসাহিত করতে আপনি এনক্রিপ্টেড অ্যাপ্লিকেশন তৈরি করতে পারেন।

শেষের দুটি ক্ষেত্রে, আপনার কোড প্লেইন-টেক্সট ফাইলে থাকতে হবে (যেমন ওয়ার্ড-প্রসেসিং ফরম্যাটে নয়)। সহায়ক যেকোনো ফাইল আপনার কোডের মতো একই ফোল্ডারে, বা তার কোনো সাব-ফোল্ডারে রাখা উচিত। 8th-এ app:asset কল করে ওই অন্য ফাইলগুলোতে অ্যাক্সেস করতে পারেন।

একটি "app" হলো একটি স্ট্যান্ডঅ্যালোন প্রোগ্রাম, যা টার্গেট প্ল্যাটফর্মের অন্য যেকোনো প্রোগ্রামের মতো নিজে নিজেই চলে, এবং এটি কমান্ড-লাইনের মাধ্যমে 8th দিয়ে রান করার দরকার হয় না। উপরে বলা হয়েছে, হ্যাকারদের নিরুৎসাহিত করতে এর বিষয়বস্তু এনক্রিপ্ট করা থাকতে পারে। স্ট্যান্ডঅ্যালোন অ্যাপ্লিকেশন তৈরির বিস্তারিত build টুল ব্যবহারের অংশে পাওয়া যাবে।

টিপ: আপনি যদি macOS, Linux বা RPI সিস্টেমে চালান, তাহলে নিচের উপায়ে আপনার স্ক্রিপ্টকে একটি সাধারণ সিস্টেম কমান্ডের মতো চালাতে পারেন:

  • ফাইলটিকে এক্সিকিউটেবল করা: chmod +x scriptname
  • আপনার কোডের প্রথম লাইনটি করা: #! /usr/bin/env 8th
  • PATH-এ একটি প্রাসঙ্গিক 8th এক্সিকিউটেবল আছে কিনা নিশ্চিত করা

এটি প্যাকেজ করা appdata নিয়েও কাজ করবে, তাই আপনি যদি একটি এক্সিকিউটেবল তৈরি করতে bin/build ব্যবহার করেন, তাহলে নিচের মতো করে এর তৈরি করা appdata একইভাবে ব্যবহার করতে পারেন:

cat - path/to/appdata > newappdata
#! /usr/bin/env 8th<ENTER><CTRL+D>
chmod +x newappdata