در کنفرانس مجازی توسعه دهندگان Perl امروز ، پروژه Perl 7 اعلام شد ، که بدون ایجاد تغییرات بنیادی ، توسعه شعبه Perl 5 را هموار خواهد کرد. Perl 7 به جز سایر تنظیمات پیش فرض که مطابق با روشهای توسعه فعلی مطابقت دارند ، مشابه نسخه Perl 5.32.0 نیز خواهد بود. در غیر این صورت ، Perl 7 همان Perl 5 باقی خواهد ماند و سازگاری را با برنامه های قبلی توسعه یافته حفظ خواهد کرد.
تغییر قابل توجه در شماره نسخه به عنوان نوعی جداکننده انتقال به یک مدل جدید برای ایجاد قابلیت های زبان Perl بدون نقض قابل توجه سازگاری با عقب عمل می کند.
فرض بر این است که ایجاد Perl 7 به جذب برنامه نویسان جدید به Perl و ایجاد فرآیند اضافه کردن ویژگی های جدید قابل توجه به زبان کمک می کند ، ضمن حفظ سازگاری با پایه کد پروژه های موجود. شماره 7 به دلیل استفاده از Perl 6 در توسعه زبان مورد استفاده قرار گرفت ، که اکنون تحت نام جداگانه Raku ساخته می شود. نسخه اول پرل 7 سال آینده پیش بینی می شود. شاخه Perl 5.32 آخرین در سری Perl 5 خواهد بود و پیش بینی می شود از 5 تا 10 سال از آن پشتیبانی کند.
قابل توجه ترین تغییر در Perl 7 ، وارد کردن حالت پیش فرض "سخت" است ، که به معنای تأیید دقیق اظهارنامه های متغیر ، استفاده از نشانگرهای نمادین و اختصاص روال ها است. استفاده از "استفاده دقیق" فرم خوبی است و توسط اکثر توسعه دهندگان استفاده می شود. به طور مشابه ، آنها به طور پیش فرض قصد دارند تا پردازش هشدارها ("استفاده از هشدارها") را فعال کنند.
Perl 7 همچنین انتظار دارد برخی ویژگی های آزمایشی موجود موجود ، مانند امضاهای عملکرد ("استفاده از ویژگی" امضاها ") را تثبیت و فعال کند ، که هنگام تعریف یک عملکرد ، استدلال های دریافتی را تعیین می کنند و به طور خودکار تعداد آنها را بررسی می کنند (می توانید بنویسید" زیر foo ($ چپ ، $ راست) instead "به جای" زیر foo {من ($ چپ ، $ راست) =_؛ "). آنها قصد دارند به طور پیش فرض از اپراتور "isa" استفاده کنند تا بررسی کنند که آیا شیء نمونه ای از کلاس مشخص شده یا یک کلاس برگرفته از آن است ("اگر ($ obj isa بسته بندی: نام)" ، و همچنین عملیات ارجاع پس از فیکس (postderef) "$ sref -> $ * "به جای" $ {$ sref} "، @ *"> "$ aref -> @ *" به جای "@ {$ aref}" و "$ href ->٪ {…}" به جای " ٪ $ href {…} ".
مدعیان پیش فرض Perl 7 عبارتند از:
- نماد فراخوانی شیء غیرمستقیم ("هیچ ویژگی qw (غیر مستقیم)") روشی قدیمی است برای تماس با اشیاء با استفاده از یک فضا به جای "->" ("روش $ objectparam" به جای "$ object -> $ روش (@ پارام) "). به عنوان مثال ، به جای "my $ cgi = CGI جدید" ، شما همیشه از "my $ cgi = CGI-> new" استفاده می کنید.
- توصیف کننده های فایل برهنه بدون اعلام متغیرها ("بدون کلمه کلیدی: پرونده پرونده") – با استفاده از ساختارهای فرم "open FH، پرونده $" به یک خطا منجر می شود ، شما باید از "open my $ fh، $ $ file" استفاده کنید. این تغییر بر توصیف کننده های استاندارد STDIN ، STDOUT ، STDERR ، ARGV ، ARGVOUT و DATA تأثیر نمی گذارد.
- آرایه های چند بعدی ساختگی و سبک به سبک پرل 4 ("بدون چند بعدی").
به عنوان مثال ، مشخص کردن "$ hash {1، 2" منجر به خطا می شود ؛ شما باید از یک آرایه میانی استفاده کنید ، برای مثال ، "$ hash {join ($؛، 1، 2)". " - اعلام نمونه های اولیه به سبک پرل 4 (شما باید از "استفاده کنید: نمونه اولیه ()") استفاده کنید.
در برنامه های دورتر ، به طور پیش فرض آنها قصد دارند پشتیبانی یونیکد را فعال کنند ، که توسعه دهندگان را از مشخص کردن "استفاده utf8" در کد نجات می دهد. برای ماژول ها و اسکریپت هایی که در تنظیمات پیش فرض جدید مشکلی دارند ، می توانید با افزودن رشته "استفاده سازگار :: perl5" به کد ، رفتار پرل 5 را برگردانید. تنظیمات فردی نیز ذخیره می شود و به صورت جداگانه قابل تغییر است.
بروزرسانی: لئون تیممرز از ابتکار عمل جدید انتقاد کرد. او اعتقاد ندارد که برای پرل 7 دستیابی به پیشرفت خطی امکان پذیر است و به احتمال زیاد چنگال طولانی مدت نیز وجود خواهد داشت ، همانطور که در مورد انتقال به پایتون 3 اتفاق افتاد. مشکل اصلی این است که / usr / bin / perl زیرساخت هایی است که توسط به همان دلایل شکستن سازگاری بین پوسته و کد awk. تعداد زیادی برنامه کاربردی ، ساختن خدمات و اسکریپت های سیستم گره خورده به / usr / bin / perl وجود دارد. فعال کردن نمونه های اولیه دقیق و غیرفعال ، کار تعداد زیادی از اسکریپت های موجود را مختل می کند ، بنابراین بعید به نظر می رسد که توزیع ها هرگز جایگزین / usr / bin / perl را با perl7 کنند و وضعیتی مشابه انتقال طولانی مدت / usr / bin / python به python3 وجود داشته باشد.
علاوه بر این ، هنگام ایجاد Perl 7 ، این نکته غافل می شود که Perl نه تنها برای نوشتن برنامه های بزرگ استفاده می شود ، بلکه به پرونده های تک خط نیز نیاز دارد ، که استفاده از "دقیق" معنی ندارد. در پایان ، ملاک کد خوب ، که در هنگام اعلام Perl 7 ابراز می شود ، قابل بحث است.کد خوب در درجه اول کدی است که وظایف محول شده به آن را انجام می دهد و حل می کند ، و نه فقط کد با کیفیت بالا.
OpenNET