بیاموزید که چطور 8th را بهصورت محلی نصب کنید تا تمرینهای Exercism را روی دستگاه خودتان حل کنید
8th در قالب یک فایل ZIP همهچیز-شامل توزیع میشود که نسخههایی از 8th را برای همهی پلتفرمهایی که نسخهی دانلودشدهی شما پشتیبانی میکند در بر میگیرد. نسخههای 8th شما بهطور اختصاصی به خودتان مجوز داده شدهاند و نمیتوان آنها را به اشتراک گذاشت.
از صفحهی دریافت 8th شروع کنید،
برای استفاده از 8th باید فایل zip را در پوشهای که به آن دسترسی دارید از حالت فشرده خارج کنید.
چند پوشه در فایل zip گنجانده شده است:
| پوشه | توضیح |
|---|---|
| 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 را مستقیم اجرا کنید. برای نمونه، اگر آن را در /opt/8th روی لینوکس ۶۴بیتی نصب کرده باشید، باید بتوانید /opt/8th/bin/lin64/8th را با هر پارامتری که میخواهید تایپ کنید و باید درست کار کند. روی macOS یا Windows هم کار مشابهی انجام دهید.
افزودن پوشهی فایل اجرایی 8th به متغیر محیطی PATH سیستم باعث میشود بهجای تایپ کل مسیر آن، بهسادگی 8th را تایپ کنید.
خود 8th یک برنامهی خط فرمان است و قرار نیست با کلیک روی یک آیکون دسکتاپ اجرا شود. میتوانید با آن برنامههای گرافیکی معمولی بسازید که به آن شکل اجرا شوند، اما خود کامپایلر 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 را تایپ کنید.
در ادامه همهی گزینههای CLI که 8th میشناسد آمده است:
| گزینه | توضیح |
|---|---|
| -b | ابزار bin/build را فراخوانی میکند |
| -D dir | دایرکتوری خانه را روی dir تنظیم میکند (پیشفرض به سیستمعامل بستگی دارد) |
| -e str | رشتهی str را بهعنوان کد 8th تفسیر میکند |
| -ee str | رشتهی str را بهعنوان کد 8th تفسیر میکند و سپس خارج میشود |
| -f nm | فایلی به نام nm را تفسیر میکند |
| -g | اشکالزدایی/بررسی SED را فعال میکند |
| -G | نسخهی موردنیاز GL را تنظیم میکند (مثلاً ۳.۱) |
| -h | راهنما را نمایش میدهد |
| -H N | اندازهی تاریخچهی کنسول را روی N خط تنظیم میکند (پیشفرض: ۱۰۰) |
| -k N | اندازهی پشتهی داده و پشتهی r را روی N عنصر تنظیم میکند (پیشفرض: ۱۲۸K) |
| -l | اطلاعات اشکالزدایی بیشتر |
| -r N | اندازهی پشتهی دادهی callback را روی N عنصر تنظیم میکند (پیشفرض: ۲۵۶) |
| -s N | اندازهی پشتهی بازگشت را روی N بایت تنظیم میکند (پیشفرض: ۰، یعنی پیشفرض سیستم) |
| -S | درایورهای SDL شناساییشده را فهرست میکند و خارج میشود |
| -v | نسخهی 8th را چاپ میکند و خارج میشود |
| -vv | مانند -v است، اما با اطلاعات بیشتری برای اشکالزدایی |
| -x | بررسی نوع و مرزهای پشته را خاموش میکند |
| -z | شمارش عناصر داده را روشن میکند |
| -Z | مانند -z است، اما کتابخانهی «debug/allocs» را هم شامل میشود |
| -? nm | راهنمای مورد «nm» را چاپ میکند |
| -- | پایان گزینههای 8th را علامت میدهد |
بهطور کلی نباید نیازی به استفاده از گزینههای -k، -r یا -s داشته باشید؛ اینها در اختیار شما گذاشته شدهاند تا اگر به کارتان آمد از آنها استفاده کنید، مثلاً اگر ۱۲۸K عنصر روی پشته در یک زمان خیلی کم باشد (راستش اگر چنین باشد، باید الگوریتمتان را عوض کنید...).
اگر دیدید که اغلب از سوییچهای خط فرمان استفاده میکنید، میتوانید بهسادگی از یک «شل اسکریپت» (روی macOS یا Linux)، یا یک «فایل دستهای» (روی Windows؛ به آن «فایل فرمان» هم میگویند) برای اجرای 8th با گزینههایی که ترجیح میدهید استفاده کنید.
همچنین میتوانید یک فایل مبدأ 8th در پوشهی app:datadir به نام settings.8th بسازید. اگر وجود داشته باشد، 8th REPL آن را هنگام راهاندازی بارگذاری میکند و پیامی در این باره چاپ میکند. به دلایل امنیتی، آن فایل در یک برنامهی بستهبندیشده جستوجو یا بارگذاری نمیشود.
برای خارج شدن از 8th، هر یک از کارهای زیر را انجام دهید:
bye را تایپ کنید و ENTER را بزنید. این کار به 8th میگوید که بهطور عادی خارج شود1 die را تایپ کنید و ENTER را بزنید. این کار به 8th میگوید که بهطور غیرعادی خارج شود و کد وضعیت ۱ را به سیستمعامل برگرداندthrow باعث یک استثنا میشود. اگر از کنسول 8th اجرا میکنید، در بیشتر موارد به همانجا برگردانده میشوید؛ اگر یک فایل یا یک برنامهی بستهبندیشده را اجرا میکنید، پیامی چاپ و برنامه خاتمه مییابد.8th میتواند برنامههای شما را در چند حالت اجرا کند:
| حالت | توضیح |
|---|---|
| تعاملی | فقط 8th را اجرا کنید و کدتان را در کنسول تایپ کنید |
| اسکریپت | کدتان را در یک فایل متنی بگذارید و آن را مثلاً با 8th mycode.8th اجرا کنید. نکتهی زیر را ببینید... |
| برنامه | کدتان را با استفاده از اسکریپت build (یا گزینهی -b در CLI) به یک برنامهی بستهبندیشده تبدیل کنید |
کاربران Pro+: میتوانید برنامههای رمزنگاریشده بسازید تا به دور نگه داشتن هکرها و دیگر افراد بدخواه کمک کنید
در دو حالت آخر، کد شما باید در فایلهای متنی ساده باشد (مثلاً نه در قالب یک برنامهی واژهپرداز). هر فایل پشتیبانی باید در همان پوشهی کد شما یا در زیرپوشهای از آن قرار گیرد. میتوانید با فراخوانی app:asset به آن فایلهای دیگر در 8th دسترسی داشته باشید.
یک «برنامه» برنامهای مستقل است که مثل هر برنامهی دیگری برای پلتفرم مقصد بهتنهایی اجرا میشود و نیازی نیست 8th آن را از طریق خط فرمان اجرا کند. محتوای آن میتواند، همانطور که در بالا گفته شد، برای کمک به دور نگه داشتن هکرها رمزنگاری شود. جزئیات ساخت برنامههای مستقل را میتوانید در بخش استفاده از ابزار build پیدا کنید.
نکته: اگر روی سیستمهای macOS، Linux یا RPI اجرا میکنید، میتوانید با روشهای زیر اسکریپتتان را مثل یک فرمان معمولی سیستم اجرا کنید:
chmod +x scriptname
#! /usr/bin/env 8th
این روش با appdata بستهبندیشده هم کار میکند؛ بنابراین اگر از bin/build برای ساختن یک فایل اجرایی استفاده کردهاید، میتوانید appdataای را که ساخته است به همین روش به کار ببرید:
cat - path/to/appdata > newappdata
#! /usr/bin/env 8th<ENTER><CTRL+D>
chmod +x newappdata