پرل
پارادایم | پارادایم برنامهنویسی: برنامهنویسی تابعی، برنامهنویسی دستوری، برنامهنویسی شیءگرا (class-based), reflective، برنامهنویسی رویهای، برنامهنویسی رویدادمحور، برنامهنویسی جنریک |
---|---|
طراحیشده توسط | لری وال |
توسعهدهنده | Larry Wall |
ظهوریافته در | ۱۸ دسامبر، ۱۹۸۷ |
5.26.0 / ۳۰ مه، ۲۰۱۷ 5.22.4 / ۱۵ ژوئیه، ۲۰۱۷ 5.24.2 / ۱۵ ژوئیه، ۲۰۱۷ |
|
5.27.2 / ۲۱ ژوئیه، ۲۰۱۷ | |
Dynamic | |
زبان پیادهسازی
|
سی (زبان برنامهنویسی) |
سیستمعامل | چندسکویی |
پروانه | Artistic License 1.0 or پروانه عمومی همگانی گنو |
.pl .pm .t .pod | |
وبگاه | www.perl.org |
|
پِرْل (به انگلیسی: Perl) یکی از زبانهای برنامهنویسی سطح بالا، همه منظوره، دارای مفسر و دینامیک است. زبانهای عضو این خانواده شامل پرل نسخه ۵ و نسخه ۶ هستند.[۱]
اگر چه واژه پرل یک مخفف واقعی نیست[۲] ولی مخففهای معکوس متعددی برای ان ساخته شدهاند. یکی از متداولترین این عبارتها " زبان عملی استخراج و گزارش دهی " است.[۳]
پیشینه[ویرایش]
پرل در سال ۱۹۸۷ توسط لری وال منتشر شد. زبان پرل بطور وسیعی ساختار خود را از زبان سی و بسیاری از خصوصیات خود را مدیون زبانهای AWK , LISP , SED , SH میباشد. در ابتدا لاری وال در سال ۱۹۸۷ پرل را به عنوان یک زبان همه منظوره بر پایه اسکریپت نویسی در یونیکس ابداع کرد تا فرایند گزارش گیری را آسان تر سازد.[۴] امروزه میتوان پرل را در بیش از ۴۰ سیستمعامل بکار گرفت، و کتابخانه CPAN تا کنون ۱۰۰٬۹۹۹ ماژولهای پرل در ۲۳٬۶۵۹ توزیع، نوشته شده توسط ۹٬۳۰۸ نویسنده، بر روی ۲۷۰ سرور میرور با کد منبع در اختیارتان میگذارد که روز به روز بر تعداد آن افزوده میشود. در سال ۱۹۸۸ لری وال زبان برنامهنویسی به همگان معرفی کرد که میتوانست به جای awk و sed به کار رود. در واقع پرل زبان مفسر داری است که برای کار بر روی فایلهای متنی مناسب است. نسخه شماره ۲ برنامه در همان سال و چند ماه بعد از آن ارائه شد که شبیه نسخههای فعلی پرل بود و پیشرفتهای بسیار خوبی داشت. تا جائیکه زبان پرل را برابر با زبان C میدانستند، چون ساختار زبان پرل شبیه زبان C میباشد.
از آن موقع تا کنون تغییرات و بازنگریهای زیادی در این زبان انجام شده است. پرل نسخه ۶ که در سال ۲۰۰۰ در ابتدا به عنوان بازسازی نسخه پرل ۵ شروع شد، تقریباً منجر به توسعه زبان جدیدی گشت. فرایند توسعه هر دو زبان به شکل جداگانه و توسط تیمهای توسعه دهنده متفاوتی ادامه یافت که گاهی به شکل آزادانه ایدههایی را از همدیگر وام میگرفتند.
Perl 4 از طریق مجموعهای از نسخههای تعمیر و نگهداری منتشر شد که به ترتیب در Perl 4.036 در سال ۱۹۹۳ به پایان رسید. در آن زمان، Wall از Perl 4 برای شروع کار در Perl 5 استفاده کرد. طراحی اولیه Perl 5 به ۱۹۹۴ ادامه یافت. لیست پستی perl5-porter در ماه مه ۱۹۹۴ برای هماهنگی کار برای انتقال Perl 5 به پلتفرمهای مختلف ایجاد شد. انجمن اولیه برای توسعه، نگهداری و انتقال پرل ۵ است.[۵]
Perl 5.000 در تاریخ ۱۷ اکتبر ۱۹۹۴ منتشر شد.[۶] این تقریباً نسخه کامل بازنویسی مترجم بود و بسیاری از ویژگیهای جدید را به زبان اضافه کرد، از جمله اشیاء، مراجع، متغیرهای واژگانی (من) و ماژولها. مهمتر از همه، ماژولها مکانیسمی برای گسترش زبان را بدون اصلاح مترجم ارائه دادند. این ویژگی اجازه داد به مترجم اصلی برای تثبیت اجازه داد. حتی فعال برنامه نویسان معمولی Perl را قادر به اضافه کردن ویژگیهای جدید زبان ساخت.
Perl 5.001 در تاریخ ۱۳ مارس ۱۹۹۵ منتشر شد. Perl 5.002 در تاریخ ۲۹ فوریه ۱۹۹۶ با ویژگیهای جدید نمونههای اولیه منتشر شد. این به نویسندگان ماژول اجازه میدهد تا سابروتینها را اجرا کنند. پرل ۵٫۰۰۳ در تاریخ ۲۵ ژوئن ۱۹۹۶ منتشر شد.
یکی از مهمترین رویدادهای تاریخ Perl 5 که خارج از زبان مناسب بود و ناشی از حمایت ماژول آن بود. در ۲۶ اکتبر ۱۹۹۵، شبکه جامع پرل آرشیو (CPAN) به عنوان مخزن برای ماژولهای Perl و خود Perl ایجاد شد؛ از ماه مه سال ۲۰۱۷، بیش از ۱۸۵۱۷۸ ماژول در ۳۵۱۹۰ توزیع منتشر شده است که توسط بیش از ۱۳۷۱۷۱ نوشتار نوشته شده است و در بیش از ۲۴۵ مکان در سراسر جهان بازتاب یافته است.[۷]
Perl 5.004 در تاریخ ۱۵ مه ۱۹۹۷ منتشر شد و از جمله موارد دیگر بسته UNIVERSAL است که Perl را یک شیء پایهای میداند که تمام کلاسها به طور خودکار مشتق شده و توانایی درخواست نسخههای ماژولها را دارد. یکی دیگر از پیشرفتهای مهم، شامل قرار دادن ماژول CGI.pm بود[۶] که به محبوبیت پرل به عنوان یک زبان برنامهنویسی CGI کمک کرد.
در حال حاضر Perl نیز در حال اجرا تحت ویندوز مایکروسافت و چند سیستم عامل دیگر است.[۶]
پرل ۵٫۰۰۵ در تاریخ ۲۲ ژوئیه ۱۹۹۸ منتشر شد. این نسخه شامل چندین پیشرفت در موتور regex، اپراتور نقل قول qr // regex، انتخاب بزرگی از دیگر ماژولهای اصلی جدید، و پشتیبانی از چندین سیستم عامل دیگر، از جمله BeOS اضافه شده است.[۸]
پونی[ویرایش]
پونی(انگلیسی PONIE) یک کلمه مخفف برای کلمات " پرل در روی موتور داخلی جدید " است. پروژه پونی از سال ۲۰۰۳ تا سال ۲۰۰۶ و به عنوان پلی بین پرل نسخه ۵ و پرل نسخه ۶ وجود داشت. این پروژه تلاشی بود برای بازنویسی مفسر نسخه ۵ به شکلی که بتوان آن را بر روی پاروت، ماشین مجازی نسخه ۶ اجرا کرد. هدف از پروژه تضمین آیندهای برای میلیونها خط برنامه موجود نسخه ۵ بود که در اختیاران هزاران شرکت مختلف در سراسر جهان وجود داشت.[۹]
نام[ویرایش]
پرل در اصل به نام «مروارید» نامگذاری شد. Wall میخواست زبان را به عنوان یک نام کوتاه با مفاهیم مثبت معرفی کند؛ او ادعا میکند که هر واژه سه و چهار حرف را در فرهنگ لغت در نظر میگیرد. او همچنین نام آن را پس از همسرش گلوریا ذکر کرد. Wall زبان برنامهنویسی Pearl را قبل از انتشار رسمی پرل پیدا کرد و املای نام را تغییر داد.[۱۰] هنگام اشاره به زبان، نام به طور طبیعی به عنوان اسم مستعار (Perl) نامیده میشود. هنگامی که به برنامه خود مبادرت میکنید، نام اغلب غیرقابل پذیرش (perl) است، زیرا اکثر سیستمهای فایل یونیکس حساس به حروف هستند. قبل از انتشار نسخه اول Perl برنامهنویسی، معمولاً به زبان به عنوان perl اشاره شد؛ با این حال، رندال الکس شوارتز، نام زبان را در این کتاب بزرگتر کرد تا آن را در هنگام تایپ بهتر بیان کند.[۱۱]
نماد شتر[ویرایش]
برنامهنویسی Perl که توسط O'Reilly Media منتشر شده است، تصویری از یک شتر برهنه در پوشش دارد و معمولاً «کتاب شتر» نامیده میشود.[۱۲] این تصویر شتر به نماد غیررسمی پرل تبدیل شده است و همچنین یک نشان هکر عمومی است که در تی شرت و دیگر اقلام لباس ظاهر میشود.O'Reilly تصویر را به عنوان علامت تجاری اداره میکند، اما مجوز آن را برای استفاده غیر تجاری میدهد، و فقط نیاز به تأیید و پیوند به www.perl.com دارد. مجوز برای استفاده تجاری بر اساس یک مورد مورد بررسی قرار میگیرد. O'Reilly همچنین لوگوهای "Republic of Perl" برای سایتهای غیر تجاری و "Powered by Perl" را برای هر سایت ای که از Perl استفاده میکند، فراهم میکند.[۱۳]
نماد پیاز[ویرایش]
بنیاد پرل صاحب یک نماد جایگزین، یک پیاز است که به شرکتهای تابعه آن، Perl Mongers, PerlMonks, Perl.org و دیگران مجوز میدهد. نماد یک پیانو بصری در پیاز مروارید است.[۱۴]
مرور[ویرایش]
به گفته وال، پرل دارای دو شعار است. اول این است که «بیش از یک راه برای انجام این کار وجود دارد»، معمولاً به نام TMTOWTDI شناخته میشود. شعار دوم این است: «چیزهای آسان باید آسان و سخت باشد».
ویژگیها[ویرایش]
ساختار کلی Perl به طور گستردهای از C استفاده میشود. Perl در طبیعت، با متغیرها، عبارتها، بلوکهای جدا شده برش، ساختارهای کنترل و سابروتینها است. پرل نیز ویژگیهای برنامهنویسی پوسته را میگیرد. همه متغیرها با sigilهای پیشرو مشخص شدهاند، که به متغیرها اجازه میدهد به صورت مستقیم در رشتهها تکرار شوند. با این حال، بر خلاف پوسته، پرل با استفاده از sigils در تمام دسترسی به متغیرها، و بر خلاف اکثر زبانهای برنامهنویسی دیگر که از sigils استفاده میکنند، sigil نوع متغیر را مشخص نمیکند، بلکه نوع بیان است. به عنوان مثال، برای دسترسی به یک لیست از مقادیر در هش، sigil برای یک آرایه ("@") استفاده میشود، نه sigil برای یک هش ("٪"). پرل همچنین دارای بسیاری از توابع ساخته شده است که ابزارهایی هستند که اغلب در برنامهنویسی پوسته استفاده میشوند (اگر چه بسیاری از این ابزارها توسط برنامههای خارجی از پوسته اجرا میشوند) مانند مرتبسازی و فراخوانی امکانات سیستم عامل.
طراحی[ویرایش]
طراحی پرل میتواند به عنوان یک پاسخ به سه رشته گسترده در صنعت رایانه شناخته شود: هزینههای سختافزاری سقوط، افزایش هزینههای کار و بهبود تکنولوژی کامپایلر. بسیاری از زبانهای رایج قبلی مانند Fortran و C به منظور استفاده کارآمد از سختافزار رایانههای گرانقیمت استفاده میشود. در مقابل، Perl طراحی شده بود تا برنامه نویسان کامپیوتر بتوانند برنامهها را سریع تر و راحت تر بنویسند.
پیادهسازی[ویرایش]
پرل به عنوان یک مترجم اصلی، نوشته شده در C، همراه با مجموعهای بزرگ از ماژولها، نوشته شده در Perl و C اجرا میشود. مترجم را میتوان به کتابخانه پیوند داد. تقریباً ۵۰۰ ماژول در توزیع وجود دارد که شامل ۲۰۰٬۰۰۰ خط Perl و ۳۵۰٬۰۰۰ خط دیگر از کد C است (بسیاری از کد C در ماژولها شامل جداول رمزگذاری کاراکتر هستند).
مترجم یک معماری شی گرا دارد. تمام عناصر زبان اسکالر Perl، آرایهها، هشها، coderefs، دستههای فایل - در مفسر توسط C ساختار نشان داده شده است. عملیات در این ساختارها توسط مجموعهای بزرگ از ماکرو، تایپدیف و توابع تعریف شده است. این API Perl C را تشکیل میدهد. API Perl میتواند به uninitiated خجالت بکشد، اما نقاط ورود آن یک طرح نامگذاری سازگار را دنبال میکنند که راهنمایی را برای کسانی که از آن استفاده میکنند هدایت میکند.
زندگی یک مترجم پرل تقریباً به یک فاز کامپایل و مرحله اجرا تقسیم میشود. در Perl، مراحل اصلی مراحل زندگی مترجم است. هر مترجم فقط یک بار در هر فاز میرود و مراحل در دنباله ثابت دنبال میشوند.[۱۵] اغلب آنچه در فرایند کامپیوتر پرل اتفاق میافتد کامپیوتر است و اکثر آنچه که در مرحله اجرا در پرو رخ میدهد اعدام است اما استثنائاً قابل توجهی وجود دارد. پرل استفاده مهمی از قابلیت آن برای اجرای کد پرل در طی مرحله کامپایل میکند. پرل همچنین کامپایل را به مرحله اجرا متوقف میکند. شرایطی که نشان دهنده نوع پردازش است که در هر لحظه اتفاق میافتد. Perl در زمان کامپایل بیشترین امتیاز را در طی مرحله کامپایل دارد، اما زمان کامپایل نیز میتواند در طول مرحله اجرا وارد شود. زمان کامپایل برای کد در یک آرگومان رشته به داخل eval ساخته شده است که در مرحله اجرا رخ میدهد. Perl اغلب در زمان اجرا در مرحله فشرده سازی قرار دارد و بیشترین دوره اجرا را در زمان اجرا صرف میکند. کد در بلوکهای BEGIN اجرا میشود. در زمان کامپایل، مترجم، کد پپرل را به یک درخت نحو تجزیه میکند. در زمان اجرا، برنامه را با راه رفتن درخت اجرا میکند. متن فقط یک بار تجزیه میشود و درخت نحوی برای بهینهسازی از قبل اجرا میشود، به طوری که اجرا نسبتاً کارآمد است. بهینهسازی زمانبندی کامپایل در درخت نحو شامل انتشار ثابت و لغزش است، اما بهینهسازی peephole نیز انجام میشود. پرل یک گرامر تورینگ کامل است، زیرا تجزیه میتواند توسط کد زمان اجرای اجرا شده در طول مرحله کامپایل اجرا شود؛ بنابراین، Perl را نمیتوان با استفاده از ترکیبی Lex / Yacc Lexer / Parser پردازش کرد. در عوض، مترجم لکسور خود را اجرا میکند، که با یک اصلاح کننده گنو اصلاح شده و برای حل ابهامات در زبان هماهنگ شده است.
اغلب گفته میشود «تنها perl میتواند Perl را تجزیه کند»، به این معنی است که تنها مترجم پرل (perl) میتواند زبان پرل (Perl) را تجزیه کند، اما حتی این طور نیست، به طور کلی درست است. از آنجا که مترجم پرل میتواند یک ماشین تورینگ را در فاز کامپایل خود شبیهسازی کند، باید به منظور تکمیل تجزیه در هر مورد، مشکل تصمیمگیری را حل کند. این یک نتیجه طولانی مدت است که مشکل متوقف کردن غیرقابل تشخیص است و بنابراین حتی Perl هم همیشه میتواند Perl را تجزیه کند. Perl گزینه غیرمعمولی برای دسترسی کاربر به قدرت برنامهنویسی کامل خود را در فاز کامپایل خود میدهد. هزینه در نظر خلوص نظری بالا است، اما نارسایی عملی به نظر میرسد نادر است. برنامههای دیگری که به تجزیه Perl پرداختهاند، مانند تجزیه و تحلیلهای منبع کد و تکرار خودکار، باید نه تنها با ساختارهای مبهم نحو، بلکه با عدم پذیرفتگی تجزیه Perl در مورد کلی بحث میکنند.[۱۶] پرل با بیش از ۲۵۰٬۰۰۰ آزمون عملکردی برای زبان اصلی Perl و بیش از ۲۵۰٬۰۰۰ آزمون عملکردی برای ماژولهای اصلی توزیع شده است. اینها به عنوان بخشی از فرایند ساخت و ساز طبیعی عمل میکنند و تمرین مترجم و ماژولهای اصلی آن را به طور گستردهای انجام میدهند. توسعه دهندگان پرل بر تستهای عملکردی تکیه میکنند تا اطمینان حاصل شود که تغییرات به مترجم، اشکالات نرمافزاری را ارائه نمیدهند؛ علاوه بر این، کاربران پرل که میبینند که مترجم آزمونهای عملکردی خود را بر روی سیستم خود میگذارد میتواند سطح بالایی از اعتماد به نفس داشته باشد که به درستی کار میکند.
دسترسی[ویرایش]
Perl دو مجوز تحت هر دو مجوز هنری و مجوز عمومی GNU دارد که برای اکثر سیستم عاملها در دسترس است. این به ویژه در سیستمPOSIX یا دیگر نرمافزارهای یونیکس کامپایل کرد.[۱۷]
به دلیل تغییرهای غیر معمول مورد نیاز برای محیط سیستم عامل مک، یک پورت خاص به نام MacPerl به طور مستقل حمل میشود.[۱۸]
شبکه جامع پرل آرشیو فهرست کاملی از سیستم عاملهای پشتیبانی شده با لینکهای مربوط به توزیعهایی که در هر یک از آنها موجود است، میباشد. CPAN همچنین منبع برای ماژولهای پرل قابل دسترس است که بخشی از توزیع هسته پرل نیستند.[۱۹]
ویندوز[ویرایش]
کاربران مایکروسافت ویندوز معمولاً یکی از توزیعهای دودویی بومی Perl را برای Win32، اغلب Strawberry یا Active Perl نصب میکنند. کامپایل Perl از کد منبع در ویندوز امکانپذیر است، اما اکثر تأسیسات کامپایلر C مورد نیاز و ابزار ایجاد نمیکنند. این باعث میشود که ماژولهای CPAN نصب شود، مخصوصاً آنهایی که در C نوشته شدهاند.
Active Perl یک توزیع منبع بسته از Active State است که نسخههای معمولی را دارد که انتشار Perl هسته را پیگیری میکند. توزیع همچنین شامل مدیریت بستههای پرل (PPM),[۲۰]یک ابزار محبوب برای نصب، حذف، ارتقاء و مدیریت استفاده از ماژولهای پرل معمولی است.[۲۱] همچنین شامل Perl Script میشود که یک موتور ویندوز اسکریپت (WSH) است که زبان پرل را اجرا میکند. ویژوال پرل ابزار Active State است که Perl را به مجموعه توسعه ویژوال استودیو اضافه میکند.
Strawberry perl پرل توزیع منبع باز برای ویندوز است. این نسخه از ماه ژانویه سال ۲۰۰۸ به صورت منظم، سهماهه منتشر شده است، از جملهای یونیکس و یونیکس شایع است، اما آن را به اکثر سیستم عامل مدرن (و بسیاری از منسوخ) منتقل کرده است. با استفاده از تنها شش استثناء گزارش شده، Perl را میتوان از کد منبع در تمامی پلتفرمهای سازگار با ه ماژولهای جدید به عنوان بازخورد و درخواستهای وارد شده است. Strawberry Perl قصد دارد قادر به نصب ماژولهایی مانند توزیعهای استاندارد Perl در سیستم عاملهای دیگر، از جمله جمعآوری ماژولهای XS شود.
لایه شبیهسازی Cygwin روش دیگری برای اجرای Perl در ویندوز است. Cygwin یک محیط یونیکس را در ویندوز فراهم میکند و هر دو Perl و CPAN به عنوان بستههای استاندارد پیش ساخته شده در برنامه راه اندازی Cygwin در دسترس هستند. از آنجا که Cygwin همچنین شامل GCC است، کامپایل Perl از منبع نیز امکانپذیر است.
اجرایی perl در چندین کیت منابع Windows در دایرکتوری با سایر ابزارهای اسکریپتینگ گنجانده شده است
پیادهسازی پرل همراه با MKS TOOLKIT و UWIN است.
پایگاه داده[ویرایش]
توانایی انتقال متن Perl را میتوان برای تولید پرس و جوهای SQL استفاده کرد. آرایهها، هشها و مدیریت حافظه خودکار، جمعآوری و پردازش دادههای بازگشتی را آسان میکند. برای مثال، در API برنامه کاربردی Perl DBI Tim Bunce، استدلالهای API میتواند متن درخواستهای SQL باشد؛ بنابراین ممکن است در یک زمان با چندین زبان برنامه ایجاد کرد (به عنوان مثال ایجاد یک صفحه وب با استفاده از HTML، جاوا اسکریپت و SQL در یک سند). استفاده ازمتغیر interpolation پرل باعث میشود هر یک از پرس و جوهای SQL بهینه شوند. مشخص کردن آرایهها یا هشهای پرل به عنوان ساختارهایی که به طور برنامهریزی شده مجموعه دادههای حاصل از هر پرس و جو SQL را نگه دارند، اجازه میدهد تا یک مکانیزم سطح بالا برای رسیدگی به مقادیر زیاد دادهها برای پردازش پس از یک زیر برنامه پرل ایجاد شود. در نسخههای اولیه پرل، رابطهای پایگاه داده توسط ارتباط مجدد مترجم با یک کتابخانه پایگاه داده مشتری ایجاد میشد. این به اندازهای دشوار بود که فقط برای بعضی از پایگاههای مهم مورد استفاده قرار میگرفت، و این باعث محدود شدن اجرای perl در نتیجهٔ استفاده از یک رابط پایگاه داده، یک زمان شود.[۲۲]
در Perl 5، اینترفیسهای پایگاه داده توسط ماژولهای DBI پرل اجرا میشوند. ماژول DBI (رابط پایگاه داده) یک رابط مستقل از پایگاه داده را به برنامههای پرل ارائه میدهد، در حالی که ماژول DBD (راننده پایگاه داده) اطلاعات مربوط به دسترسی به حدود ۵۰ پایگاه داده متفاوت را اداره میکند؛ رانندگان DBD برای اکثر پایگاههای ANSI SQL وجود دارد.
DBI ذخیرهسازی برای دستههای پایگاه داده و نمایش دادهها را فراهم میکند، که میتواند عملکرد بسیار زیادی را در محیطهای اجرای طولانی مدت مانند mod perl بهبود بخشد، کمک به سیستمهای با حجم بالا، به عنوان یک اثر Slashdot، باعث جلوگیری از حمل بار میشود.[۲۳]
در برنامههای کاربردی مدرن پرل، به ویژه آنهایی که با استفاده از چارچوب وب مانند Catalyst نوشته میشوند، ماژول DBI اغلب به طور غیرمستقیم از طریق نمایشگرهای شیء-ارتباطی مانند DBIx :: Class, Class :: DBI یا Rose :: DB :: Object که پرس و جوهای SQL تولید میکنند، استفاده میشود.
بهینهسازی[ویرایش]
از آنجا که Perl یک زبان تفسیر است، میتواند مشکلها را هنگامی که کارایی بسیار مهم است، ارائه دهد. در چنین شرایطی، مهمترین برنامهها میتوانند در زبانهای دیگر (مانند C) نوشته شوند، که میتوانند از طریق ماژولهای ساده Inline یا مکانیسم XS پیچیدهتر، اما انعطاف پذیرتر به Perl متصل شوند.[۲۴]
پرل ۶[ویرایش]
Jon Orwant در کنفرانس ۲۰۰۰ پرل، پروندهای برای یک زبان ابتکاری جدید ساخت. این به تصمیمگیری برای شروع کار بر روی طراحی مجدد زبان، به نام پرل ۶. منجر شد. پیشنهادها مربوط به ویژگیهای جدید زبان از جامعه پرل به طور گسترده درخواست شد که بیش از 300 RFC را ارائه میداد.[۲۵]
wall چند سال بعد به تشخیص RFCها و ترکیب آنها به یک چارچوب منسجم برای پرل ۶ مشغول شد. او طراحی خود را برای Perl 6 در مجموعهای از اسناد به نام "apocalypses" ارائه کرده است که شماره آن مربوط به فصلهای برنامهنویسی پرل میباشد. از ژانویه ۲۰۱۱، مشخصات در حال توسعه پرل ۶ در اسناد طراحی به نام Synopses - شماره گذاری شده است که به Apocalypse مربوط است.[۲۶]
Perl 6 در نظر گرفته نشده که با نسخههای قبلی سازگار باشد، اگر چه یک حالت سازگاری وجود خواهد داشت. پرل ۶ و پرل ۵ زبانهای متمایز با یک قبیله مشترک هستند.
کار پایاننامه بردلی م. کوهن تحت نظارت لری وال، امکان استفاده از ماشین مجازی جاوا را به عنوان زمان اجرا برای Perl در نظر گرفت. پایاننامه کوهن نشان داد که این رویکرد مشکل ساز است. در سال ۲۰۰۱ تصمیم گرفت که پرل ۶ بر روی ماشین مجازی متقابل زبان Parrot اجرا شود. این بدان معنی است که زبانهای دیگر که با هدف قرار دادن Parrot دسترسی پیدا میکنند به CPAN دسترسی پیدا میکنند و اجازه میدهند سطح پیشرفته زبان را افزایش دهند.
در سال ۲۰۰۵، آدری تانگ پروژه Pugs را ایجاد کرد، اجرای Perl 6 در Haskell. این عمل به عنوان یک پلت فرم آزمون برای زبان پرل ۶ (به غیر از توسعه اجرای واقعی) عمل میکند و به طراحان زبان اجازه میدهد تا آنها را کشف کند. پروژه Pugs یک انجمن متقابل زبان Perl / Haskell فعال را در اطراف کانال IRC # perl6 freenode ایجاد کرد.
از سال ۲۰۱۲، تعدادی از ویژگیهای زبان پرل ۶ شباهت به Haskell را نشان میدهند.[۲۷]
در سال ۲۰۱۲، Perl 6 توسعه مراکز عمدتاً در حدود دو کامپایلر:
Rakudo Perl 6، یک پیادهسازی بر روی ماشین مجازی Parrot و ماشین مجازی جاوا است. توسعه دهندگان همچنین بر روی MoarVM، یک ماشین مجازی مبتنی بر زبان برنامهنویسی C به طور خاص برای Rakudo کار میکنند.[۲۸]
Niecza، که به Runtime Common Language اهمیت میدهد.
خصوصتهای پرل ۵[ویرایش]
توسعه پرل ۵ همچنان ادامه دارد. پرل ۵٫۱۲٫۰ در آوریل ۲۰۱۰ با برخی از ویژگیهای جدید تحت تأثیر طراحی Perl 6 و به دنبال آن Perl 5.14.1 (منتشر شد در تاریخ ۱۷ ژوئن ۲۰۱۱)، Perl 5.16.1 منتشر شد[۲۹](در ماه آگوست منتشر شد) و Perl 5.18.0 (منتشر شده در تاریخ ۱۸ مه ۲۰۱۳). نسخههای توسعه پرل ۵ به طور ماهانه منتشر میشوند و انتشارهای عمده یکبار در سال ارائه میشوند.[۳۰]
برنامههای آینده برای پرل ۵ شامل ساخت زبان اصلی برای گسترش از ماژولها و ارائه یک پروتکل متادیت کوچک کوچک و گسترده در هسته است.
نسبت نسبی جستجوهای اینترنتی برای برنامهنویسی Perl نسبت به جستجوهای مشابه برای زبانهای برنامهنویسی دیگر، به طور پیوسته از حدود ۱۰ درصد در سال ۲۰۰۵ به حدود ۲ درصد در سال ۲۰۱۱ کاهش یافته است و از سال گذشته در حدود ۲ درصد بوده است.[۳۱]
قابلیتها[ویرایش]
یکی از کاربردهای مهم زبان برنامهنویسی پرل در نوشتن اکسپلوییتها و کدهای مخرب است. این زبان برنامهنویسی پیشینهای قدیمی در یونیکس دارد. اما عمر آن در ویندوز به ۷ سال هم نمیرسید. به طوری که زبان پرل را زبانی جدا نشدنی از یونیکس میدانند.
کاربرد پرل[ویرایش]
پرل امروزه در زمینههای هوش مصنوعی، ژنتیک، نظامی، تحقیقاتی، صنعتی بطور گستردهای کاربرد دارد. نوشتن یک بانک اطلاعاتی، صفحهگسترده و یا یک وبسرور شاید با پرل کار عاقلانهای به نظر نرسد، ولی امکانپذیر است.
پرل به عنوان یک زبان چسبنده (Glue Language)[ویرایش]
پرل به عنوان یک زبان چسبنده میتواند در زبانهای دیگر مورد استفاده قرار گیرد. به طور مثال میتوان در برنامههای چارچوب داتنت از پرل برای پردازش متن و یا هر چیز دیگری استفاده کرد. این قابلیت تنها به.NET محدود نمیشود و پرل را میتوان در زبانهای دیگر برنامهنویسی بدون در نظر گرفتن پلتفرم ان استفاده کرد.
پرل به عنوان یک زبان کراس پلتفرم (Cross Platform)[ویرایش]
نرمافزاری که با زبان پرل تحت سیستمعامل لینوکس و یا مک اواس نوشته شده، روی سیستمعامل مایکروسافت ویندوز و یونیکس هم اجرا میشود. قابلیت چندسکویی امکان توسعه نرمافزار را بر روی هر سیستمعاملی فراهم میکند.
پرل و CGI[ویرایش]
با پا به عرصه گذاشتن CGI به صفحات وب زبان پرل به خاطر قدرت بالا در پردازش متن و تطبیق الگو و کار با عبارتها باقاعده (Regular Expressions)، در جمله زبانهایی قرار گرفت که بطور وسیعی برای نوشتن CGI بکار گرفته میشود. در اینصورت یک سیستم برنامهنویسی پویای تحت وب و با استفاده از تکنولوژی CGI پیادهسازی میشود.
نکتهای که باعث محبوبیت زبان پرل در میان برنامه نویسان شدهاست متنباز بودن این زبان میباشد.
ساختار زبان[ویرایش]
نمونه برنامه[ویرایش]
در نمونههای قبل تر پرل برای نوشتن در برنامه به صورت زیر عمل میشده:
# !/usr/bin/perl
print "Hello world!";
در نمونههای جدیدتر پرل که از دستور
پشتیبانی میکردند یک روش دستور زیر است:say
# !/usr/bin/perl
use 5.01;
say "Hello world!";
برای نوشتن بهتر کد برنامه نیاز به کارهای بیشتری مثل اضافه کردن
و use strict;
به برنامه است:use warnings;
use strict;
use warnings;
print "Hello World!\n";
این نمونه پیچیده تری از برنامه پرل است که به صورت معکوس ثانیهها را تا محدوده مورد نظر میشمارد.
#!/usr/bin/perl
use strict;
use warnings;
use IO::Handle;
my ( $remaining, $total );
$remaining = $total = shift(@ARGV);
STDOUT->autoflush(1);
while ( $remaining ) {
printf ( "Remaining %s/%s \r", $remaining--, $total );
sleep 1;
}
print "\n";
مفسر پرل میتواند به عنوان اجرای دستورهای یک خطی از طریق خط دستور نیز به کار رود. مثال زیر میتواند عبارت "Bob" را در تمام فایلهایی که پسوند "txt." دارند و در پوشه برنامه فعلی قرار گرفتهاند را به "Robert" تبدیل کند. (در صورت اجرا در محیط مناسب مانند Bash)
$ perl -i.bak -lp -e 's/Bob/Robert/g' *.txt
منابع[ویرایش]
- ↑ "About Perl". perl.org. Retrieved 2013-04-20.
"Perl" is a family of languages, "Perl 6" is part of the family, but it is a separate language that has its own development team. Its existence has no significant impact on the continuing development of "Perl 5".
- ↑ Lapworth, Leo. "General Questions About Perl". Perl FAQ. Perl.org. Retrieved February 24, 2012.
- ↑ "perl(1): Practical Extraction/Report Language - Linux man page". Linux.die.net. Retrieved 2013-07-23.
- ↑ Sheppard, Doug (2000-10-16). "Beginner's Introduction to Perl". dev.perl.org. Retrieved 2011-01-08.
- ↑ “The Perl Programming Language - www.perl.org”. Retrieved 2017-06-22.
- ↑ ۶٫۰ ۶٫۱ ۶٫۲ «Perl programming documentation - perldoc.perl.org». بازبینیشده در 2017-06-22.
- ↑ “The Comprehensive Perl Archive Network - www.cpan.org”. Retrieved 2017-06-22.
- ↑ Patwardhan, Nathan; Siever, Ellen; Spainhour, Stephen (2002). Perl in a Nutshell.
- ↑ Geoff Broadwell (August 8, 2005), OSCON 4.4: Inside Ponie, the Bridge from Perl 5 to Perl 6, O'Reilly ONLamp Blog
- ↑ Richardson, Marjorie (1999-05-01). "Larry Wall, the Guru of Perl". Linux Journal. Retrieved 2011-01-03.
- ↑ "perlfaq1: What's the difference between "perl" and "Perl"?". perldoc.perl.org - Perl 5 version 12.2 documentation..
- ↑ Schwartz, Randal L; Phoenix, Tom; Foy, Brian. Learning Perl, Third Edition. ISBN: 978-0-596-00132-2..
- ↑ "The Perl Camel Usage and Trademark Information". O'Reilly Media. Retrieved 2011-01-09..
- ↑ Gillmore, Dan (1998-10-25). "Republic Of Perl". Chicago Tribune. Retrieved 2011-01-10..
- ↑ A description of the Perl 5 interpreter can be found in Programming Perl, 3rd Ed. , chapter 18. See particularly page 467, which carefully distinguishes run phase and compile phase from run time and compile time. Perl "time" and "phase" are often confused..
- ↑ "Rice's Theorem". The Perl Review. 4 (3): 23–29. Summer 2008. and "Perl is Undecidable". The Perl Review. 5 (0): 7–11. Fall 2008. , available online at Kegler, Jeffrey. "Perl and Undecidability"..
- ↑ Hietaniemi, Jarkko (1998). "Perl Ports (Binary Distributions)". CPAN.org..
- ↑ "The MacPerl Pages"..
- ↑ "Perl Ports (Binary Distributions).
- ↑ "Using PPM". ActiveState Software..
- ↑ "ActivePerl is Perl for Windows, Mac, Linux, AIX, HP-UX & Solaris". ActiveState Software.
- ↑ Descartes, Alligator; Bunce, Tim (2000). Programming the Perl DBI : [database programming with Perl] (1 ed.). Beijing [u.a.]: O'Reilly. ISBN 1-56592-699-4..
- ↑ Bekman, Stas. "Efficient Work with Databases under mod_perl". Retrieved 2007-09-01.
- ↑ Ingerson, Brian. "Inline - metacpan.org". CPAN. Archived from the original on June 13, 2013..
- ↑ Torkington, Nathan. "Transcription of Larry's talk". nntp.perl.org. Retrieved 2011-01-25..
- ↑ " "Official Perl 6 Documentation". The Perl 6 Project. Retrieved 2011-01-25..
- ↑ "Official Perl 6 Documentation". The Perl 6 Project. Retrieved 2011-01-25..
- ↑ Worthington, Jonathan. "Rakudo JVM News: More tests, plus Thread and Promise prototypes". 6guts. Retrieved July 24, 2013.
- ↑ "The unstoppable Perl release train?.
- ↑ perl 5.16.1 released!". 2012-08-09. Retrieved 2012-08-26..
- ↑ TIOBE Software Index (2013). "TIOBE Programming Community Index Perl".
مشارکتکنندگان ویکیپدیا. «Perl». در دانشنامهٔ ویکیپدیای انگلیسی ، بازبینیشده در ۱۸ ژوئن ۲۰۱۳.
پیوند به بیرون[ویرایش]
در ویکیانبار پروندههایی دربارهٔ پرل موجود است. |
|
|
|
|
این یک مقالهٔ خرد پیرامون زبان برنامهنویسی است. با گسترش آن به ویکیپدیا کمک کنید. |
- مقالههای خرد زبان برنامهنویسی
- ابزارهای برنامهنویسی یونیکس
- اختراعات آمریکایی
- پرل (زبان برنامهنویسی)
- زبانهای اسکریپتنویسی
- زبانهای برنامهنویسی اسکریپتی
- زبانهای برنامهنویسی خانواده سی
- زبانهای برنامهنویسی رویهای
- زبانهای برنامهنویسی زنده
- زبانهای برنامهنویسی ساختهشده در ۱۹۸۷ (میلادی)
- زبانهای برنامهنویسی سطح بالا
- زبانهای برنامهنویسی شیءگرا
- زبانهای برنامهنویسی ماشینی پویا
- کامپایلرها و مفسرهای آزاد
- نرمافزارهای آزاد نوشتهشده با سی
- نرمافزارهای چندسکویی