موضوع مقاله: پرل | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # پرل | مقدمه: پرل به پرل نسخه ۵ اشاره دارد، اما از سال ۲۰۰۰ تا ۲۰۱۹ به زبان پرل نسخه ۶ که زبان خواهر پرل است نیز اشاره دارد، این زبان بازطراحی ای از پرل ۵ است. | ## بخش 1: پرل | اگر چه واژه پرل یک مخفف واقعی نیست ولی مخففهای معکوس متعددی برای آن ساخته شده‌اند. پرل در سال ۱۹۸۷ توسط لری وال به عنوان یک زبان اسکریپت‌نویسی همه منظوره ساخته شد و هدف اصلی آن آسان کردن پروسه فرستادن گزارش بود. راکو، که کار خود را به عنوان طراحی دوباره پرل ۵ در سال ۲۰۰۰ آغاز کرده بود، به سرعت به یک زبان جداگانه تبدیل شد. هر دو زبان به گسترش خود به صورت جداگانه و با تیم‌های توسعه دهنده جدا ادامه دادند و گاهی آزادانه از یک دیگر ایده‌هایی را قرض می‌گرفتند. زبان پرل امکانات خود را از زبان‌های دیگر از جمله سی، یونیکس شل، AWK, Sed اتخاذ کرده است. در ابتدا لاری وال در سال ۱۹۸۷ پرل را به عنوان یک زبان همه منظوره بر پایه اسکریپت نویسی در یونیکس ابداع کرد تا فرایند گزارش‌گیری را آسان‌تر سازد. امروزه می‌توان پرل را در بیش از ۴۰ سیستم‌عامل بکار گرفت، و کتابخانه CPAN تاکنون ۱۰۰٬۹۹۹ ماژول‌های پرل در ۲۳٬۶۵۹ توزیع، نوشته شده توسط ۹٬۳۰۸ نویسنده، بر روی ۲۷۰ سرور میرور با کد منبع در اختیارتان می‌گذارد که روز به روز بر تعداد آن افزوده می‌شود. در سال ۱۹۸۸ لری وال زبان برنامه‌نویسی پرل را به همگان معرفی کرد که می‌توانست به جای awk و sed به کار رود. نسخه شماره ۲ برنامه در همان سال و چند ماه بعد از آن ارائه شد که شبیه نسخه‌های فعلی پرل بود و پیشرفت‌های بسیار خوبی داشت. تا جایی که زبان پرل را برابر با زبان C می‌دانستند، چون ساختار زبان پرل شبیه زبان C می‌باشد. پرل نسخه ۶ که در سال ۲۰۰۰ ابتدا به عنوان بازسازی نسخه پرل ۵ شروع شد، تقریباً منجر به توسعه زبان جدیدی گشت. فرایند توسعه هر دو زبان به شکل جداگانه و توسط تیم‌های توسعه دهنده متفاوتی ادامه یافت که گاهی به شکل آزادانه ایده‌هایی را از همدیگر وام می‌گرفتند. Perl 4 از طریق مجموعه‌ای از نسخه‌های تعمیر و نگهداری منتشر شد که به ترتیب در Perl 4.036 در سال ۱۹۹۳ به پایان رسید. این تقریباً نسخه کامل بازنویسی مترجم بود و بسیاری از ویژگی‌های جدید را به زبان اضافه کرد، از جمله اشیاء، مراجع، متغیرهای واژگانی (من) و ماژول‌ها. مهم‌تر از همه، ماژولها مکانیسمی برای گسترش زبان را بدون اصلاح مترجم ارائه دادند. حتی بسیاری از برنامه نویسان معمولی Perl را قادر به اضافه کردن ویژگی‌های جدید به زبان ساخت. یکی از مهم‌ترین رویدادهای تاریخ Perl 5 که خارج از زبان مناسب بود و ناشی از حمایت ماژول آن بود. در ۲۶ اکتبر ۱۹۹۵، شبکه جامع پرل آرشیو (CPAN) به عنوان مخزن برای ماژول‌های Perl و خود Perl ایجاد شد؛ از ماه مه سال ۲۰۱۷، بیش از ۱۸۵۱۷۸ ماژول در ۳۵۱۹۰ توزیع منتشر شده است که توسط بیش از ۱۳۷۱۷۱ نوشتار نوشته شده است و در بیش از ۲۴۵ مکان در سراسر جهان بازتاب یافته است. یکی دیگر از پیشرفت‌های مهم، شامل قرار دادن ماژول CGI.pm بود که به محبوبیت پرل به عنوان یک زبان برنامه‌نویسی CGI کمک کرد. پونی پونی(انگلیسی PONIE) یک کلمه مخفف برای کلمات " پرل در روی موتور داخلی جدید " است. پروژه پونی از سال ۲۰۰۳ تا سال ۲۰۰۶ و به عنوان پلی بین پرل نسخه ۵ و پرل نسخه ۶ وجود داشت. این پروژه تلاشی بود برای بازنویسی مفسر نسخه ۵ به شکلی که بتوان آن را بر روی پاروت، ماشین مجازی نسخه ۶ اجرا کرد. هدف از پروژه تضمین آینده‌ای برای میلیون‌ها خط برنامه موجود نسخه ۵ بود که در اختیاران هزاران شرکت مختلف در سراسر جهان قرار داشت. Wall می‌خواست زبان را به عنوان یک نام کوتاه با مفاهیم مثبت معرفی کند؛ او ادعا می‌کند که هر واژه سه و چهار حرف را در فرهنگ لغت در نظر می‌گیرد. هنگامی که به مترجم خود برنامه مراجعه می‌کنید، اغلب نام غیرقابل پذیرش (perl)است، زیرا اکثر سیستم‌های فایل یونیکس حساس به حروف هستند. قبل از انتشار اولین نسخه زبان برنامه‌نویسی Perl، معمولاً به زبان به عنوان perl اشاره شد؛ با این حال، رندال الکس شوارتز، نام زبان را در این کتاب بزرگتر کرد تا آن را در هنگام تایپ بهتر بیان کند. این تصویر شتر به نماد غیررسمی پرل تبدیل شده است و همچنین یک نشان هکر عمومی است که در تی شرت و دیگر اقلام لباس ظاهر می‌شود.O'Reilly تصویر را به عنوان علامت تجاری اداره می‌کند، اما مجوز آن را برای استفاده غیر تجاری می‌دهد، و فقط نیاز به تأیید و پیوند به دارد. Perl در طبیعت، با متغیرها، عبارت‌ها، بلوک‌های جدا شده برش، ساختارهای کنترل و سابروتین‌ها است. | ## بخش 2: پرل | همه متغیرها با sigilهای پیشرو مشخص شده‌اند، که به متغیرها اجازه می‌دهد به صورت مستقیم در رشته‌ها تکرار شوند. پرل همچنین دارای بسیاری از توابع ساخته شده است که ابزارهایی هستند که اغلب در برنامه‌نویسی پوسته استفاده می‌شوند (اگر چه بسیاری از این ابزارها توسط برنامه‌های خارجی از پوسته اجرا می‌شوند) مانند مرتب‌سازی و فراخوانی امکانات سیستم عامل. طراحی طراحی پرل می‌تواند به عنوان یک پاسخ به سه رشته گسترده در صنعت رایانه شناخته شود: هزینه‌های سخت‌افزاری سقوط، افزایش هزینه‌های کار و بهبود تکنولوژی کامپایلر. بسیاری از زبان‌های رایج قبلی مانند Fortran و C به منظور استفاده کارآمد از سخت‌افزار رایانه‌های گرانقیمت استفاده می‌شود. در مقابل، Perl طراحی شده بود تا برنامه نویسان کامپیوتر بتوانند برنامه‌ها را سریع تر و راحت‌تر بنویسند. پیاده‌سازی پرل به عنوان یک مترجم اصلی، نوشته شده در C، همراه با مجموعه‌ای بزرگ از ماژول‌ها، نوشته شده در Perl و C اجرا می‌شود. تقریباً ۵۰۰ ماژول در توزیع وجود دارد که شامل ۲۰۰٬۰۰۰ خط Perl و ۳۵۰٬۰۰۰ خط دیگر از کد C است (بسیاری از کد C در ماژول‌ها شامل جداول رمزگذاری کاراکتر هستند). عملیات در این ساختارها توسط مجموعه‌ای بزرگ از ماکرو، تایپدیف و توابع تعریف شده است. اغلب آنچه در فرایند کامپیوتر پرل اتفاق می‌افتد کامپیوتر است و اکثر آنچه که در مرحله اجرا در پرو رخ می‌دهد اعدام است اما استثنائاً قابل توجهی وجود دارد. Perl در زمان کامپایل بیشترین امتیاز را در طی مرحله کامپایل دارد، اما زمان کامپایل نیز می‌تواند در طول مرحله اجرا وارد شود. زمان کامپایل برای کد در یک آرگومان رشته به داخل eval ساخته شده است که در مرحله اجرا رخ می‌دهد. Perl اغلب در زمان اجرا در مرحله فشرده‌سازی قرار دارد و بیشترین دوره اجرا را در زمان اجرا صرف می‌کند. متن فقط یک بار تجزیه می‌شود و درخت نحوی برای بهینه‌سازی از قبل اجرا می‌شود، به‌طوری‌که اجرا نسبتاً کارآمد است. بهینه‌سازی زمان‌بندی کامپایل در درخت نحو شامل انتشار ثابت و لغزش است، اما بهینه‌سازی peephole نیز انجام می‌شود. در عوض، مترجم لکسور خود را اجرا می‌کند، که با یک اصلاح‌کننده گنو اصلاح شده و برای حل ابهامات در زبان هماهنگ شده است. از آنجا که مترجم پرل می‌تواند یک ماشین تورینگ را در فاز کامپایل خود شبیه‌سازی کند، باید به منظور تکمیل تجزیه در هر مورد، مشکل تصمیم‌گیری را حل کند. این یک نتیجه طولانی مدت است که مشکل متوقف کردن غیرقابل تشخیص است و بنابراین حتی Perl هم همیشه می‌تواند Perl را تجزیه کند. Perl گزینه غیرمعمولی برای دسترسی کاربر به قدرت برنامه‌نویسی کامل خود را در فاز کامپایل خود می‌دهد. برنامه‌های دیگری که به تجزیه Perl پرداخته‌اند، مانند تجزیه و تحلیل‌های منبع کد و تکرار خودکار، باید نه تنها با ساختارهای مبهم نحو، بلکه با عدم پذیرفتگی تجزیه Perl در مورد کلی بحث می‌کنند. پرل با بیش از ۲۵۰٬۰۰۰ آزمون عملکردی برای زبان اصلی Perl و بیش از ۲۵۰٬۰۰۰ آزمون عملکردی برای ماژول‌های اصلی توزیع شده است. اینها به عنوان بخشی از فرایند ساخت و ساز طبیعی عمل می‌کنند و تمرین مترجم و ماژول‌های اصلی آن را به‌طور گسترده‌ای انجام می‌دهند. توسعه دهندگان پرل بر تست‌های عملکردی تکیه می‌کنند تا اطمینان حاصل شود که تغییرات به مترجم، اشکالات نرم‌افزاری را ارائه نمی‌دهند؛ علاوه بر این، کاربران پرل که می‌بینند که مترجم آزمون‌های عملکردی خود را بر روی سیستم خود می‌گذارد می‌تواند سطح بالایی از اعتماد به نفس داشته باشد که به درستی کار می‌کند. دسترسی Perl دو مجوز تحت هر دو مجوز هنری و مجوز عمومی GNU دارد که برای اکثر سیستم عامل‌ها در دسترس است. به دلیل تغییرهای غیرمعمول مورد نیاز برای محیط سیستم عامل مک، یک پورت خاص به نام MacPerl به‌طور مستقل حمل می‌شود. شبکه جامع پرل آرشیو فهرست کاملی از سیستم عامل‌های پشتیبانی شده با لینک‌های مربوط به توزیع‌هایی که در هر یک از آن‌ها موجود است، می‌باشد. CPAN همچنین منبع برای ماژول‌های پرل قابل دسترس است که بخشی از توزیع هسته پرل نیستند. کامپایل Perl از کد منبع در ویندوز امکان‌پذیر است، اما اکثر تأسیسات کامپایلر C مورد نیاز و ابزار ایجاد نمی‌کنند. این باعث می‌شود که ماژول‌های CPAN نصب شود، مخصوصاً آنهایی که در C نوشته شده‌اند. | ## بخش 3: پرل | توزیع همچنین شامل مدیریت بسته‌های پرل (PPM), یک ابزار محبوب برای نصب، حذف، ارتقاء و مدیریت استفاده از ماژول‌های پرل معمولی است. این نسخه از ماه ژانویه سال ۲۰۰۸ به صورت منظم، سه‌ماهه منتشر شده است، از جملهای یونیکس و یونیکس شایع است، اما آن را به اکثر سیستم عامل مدرن (و بسیاری از منسوخ) منتقل کرده است. با استفاده از تنها شش استثناء گزارش شده، Perl را می‌توان از کد منبع در تمامی پلتفرم‌های سازگار با ه ماژول‌های جدید به عنوان بازخورد و درخواست‌های وارد شده است. آرایه‌ها، هش‌ها و مدیریت حافظه خودکار، جمع‌آوری و پردازش داده‌های بازگشتی را آسان می‌کند. مشخص کردن آرایه‌ها یا هش‌های پرل به عنوان ساختارهایی که به‌طور برنامه‌ریزی شده مجموعه داده‌های حاصل از هر پرس و جو SQL را نگه دارند، اجازه می‌دهد تا یک مکانیزم سطح بالا برای رسیدگی به مقادیر زیاد داده‌ها برای پردازش پس از یک زیر برنامه پرل ایجاد شود. در نسخه‌های اولیه پرل، رابط‌های پایگاه داده توسط ارتباط مجدد مترجم با یک کتابخانه پایگاه داده مشتری ایجاد می‌شد. این به اندازهای دشوار بود که فقط برای بعضی از پایگاه‌های مهم مورد استفاده قرار می‌گرفت، و این باعث محدود شدن اجرای perl در نتیجهٔ استفاده از یک رابط پایگاه داده، یک زمان شود. ماژول DBI (رابط پایگاه داده) یک رابط مستقل از پایگاه داده را به برنامه‌های پرل ارائه می‌دهد، در حالی که ماژول DBD (راننده پایگاه داده) اطلاعات مربوط به دسترسی به حدود ۵۰ پایگاه داده متفاوت را اداره می‌کند؛ رانندگان DBD برای اکثر پایگاه‌های ANSI SQL وجود دارد. DBI ذخیره‌سازی برای دسته‌های پایگاه داده و نمایش داده‌ها را فراهم می‌کند، که می‌تواند عملکرد بسیار زیادی را در محیط‌های اجرای طولانی مدت مانند mod perl بهبود بخشد، کمک به سیستم‌های با حجم بالا، به عنوان یک اثر Slashdot، باعث جلوگیری از حمل بار می‌شود. بهینه‌سازی از آنجا که Perl یک زبان تفسیر است، می‌تواند مشکل‌ها را هنگامی که کارایی بسیار مهم است، ارائه دهد. در چنین شرایطی، مهم‌ترین برنامه‌ها می‌توانند در زبان‌های دیگر (مانند C) نوشته شوند، که می‌توانند از طریق ماژول‌های ساده Inline یا مکانیسم XS پیچیده‌تر، اما انعطاف‌پذیرتر به Perl متصل شوند. پیشنهادها مربوط به ویژگی‌های جدید زبان از جامعه پرل به‌طور گسترده درخواست شد که بیش از 300 RFC را ارائه می‌داد. Perl 6 در نظر گرفته نشده که با نسخه‌های قبلی سازگار باشد، اگر چه یک حالت سازگاری وجود خواهد داشت. کوهن تحت نظارت لری وال، امکان استفاده از ماشین مجازی جاوا را به عنوان زمان اجرا برای Perl در نظر گرفت. این بدان معنی است که زبانهای دیگر که با هدف قرار دادن Parrot دسترسی پیدا می‌کنند به CPAN دسترسی پیدا می‌کنند و اجازه می‌دهند سطح پیشرفته زبان را افزایش دهند. این عمل به عنوان یک پلت فرم آزمون برای زبان پرل ۶ (به غیر از توسعه اجرای واقعی) عمل می‌کند و به طراحان زبان اجازه می‌دهد تا آن‌ها را کشف کند. پرل ۵٫۱۲٫۰ در آوریل ۲۰۱۰ با برخی از ویژگی‌های جدید تحت تأثیر طراحی Perl 6 و به دنبال آن Perl 5.14.1 (منتشر شد در تاریخ ۱۷ ژوئن ۲۰۱۱)، Perl 5.16.1 منتشر شد(در ماه اوت منتشر شد) و Perl 5.18.0 (منتشر شده در تاریخ ۱۸ مه ۲۰۱۳). نسخه‌های توسعه پرل ۵ به‌طور ماهانه منتشر می‌شوند و انتشارهای عمده یکبار در سال ارائه می‌شوند. برنامه‌های آینده برای پرل ۵ شامل ساخت زبان اصلی برای گسترش از ماژول‌ها و ارائه یک پروتکل متادیت کوچک کوچک و گسترده در هسته است. نسبت نسبی جستجوهای اینترنتی برای برنامه‌نویسی Perl نسبت به جستجوهای مشابه برای زبان‌های برنامه‌نویسی دیگر، به‌طور پیوسته از حدود ۱۰ درصد در سال ۲۰۰۵ به حدود ۲ درصد در سال ۲۰۱۱ کاهش یافته است و از سال گذشته در حدود ۲ درصد بوده است. قابلیت‌ها یکی از کاربردهای مهم زبان برنامه‌نویسی پرل در نوشتن اکسپلوییت‌ها و کدهای مخرب است. کاربرد پرل پرل امروزه در زمینه‌های هوش مصنوعی، ژنتیک، نظامی، تحقیقاتی، صنعتی به‌طور گسترده‌ای کاربرد دارد. نوشتن یک بانک اطلاعاتی، صفحه‌گسترده یا یک وب‌سرور شاید با پرل کار عاقلانه‌ای به نظر نرسد، ولی امکانپذیر است. به‌طور مثال می‌توان در برنامه‌های چارچوب دات‌نت از پرل برای پردازش متن یا هر چیز دیگری استفاده کرد. این قابلیت تنها به.NET محدود نمی‌شود و پرل را می‌توان در زبان‌های دیگر برنامه‌نویسی بدون در نظر گرفتن پلتفرم ان استفاده کرد. پرل به عنوان یک زبان کراس پلتفرم (Cross Platform) نرم‌افزاری که با زبان پرل تحت سیستم‌عامل لینوکس یا مک اواس نوشته شده، روی سیستم‌عامل مایکروسافت ویندوز و یونیکس هم اجرا می‌شود. در اینصورت یک سیستم برنامه‌نویسی پویای تحت وب و با استفاده از تکنولوژی CGI پیاده‌سازی می‌شود. | ## جمع‌بندی | نکته‌ای که باعث محبوبیت زبان پرل در میان برنامه نویسان شده است متن‌باز بودن این زبان می‌باشد.