LINUX.ORG.RU
ФорумTalks

[perl]


0

0
use strict;
$a = 10;
print "There was no errors\n";

Ну почему нельзя взять и почистить язык от рудиментов. Один раз помучиться и забыть. А так приходится постоянно и методично жрать кактус.

★★

ну дык на то он и strict

madgnu ★★★★★ ()
Ответ на: комментарий от Relan
use strict; 
use warnings; 
$a = 10;
my $x = $a;
print "There was no errors and no warnings\n";

Собственно я всегда и strict и warnings включаю. Тут программку писал, завел переменную $a, затем надумал переименовать. Думал, что если компилятор не ругается, то все вхождения пофиксил. Потом долго ловил баг. Откуда я знал, что там такой рудимент остался.

ival ★★ ()

В чем прикол? Почему это компилится? На присваивание $b без my тоже не ругается. А уже на $c ругается.

Olegymous ★★ ()
Ответ на: комментарий от DNA_Seq

>если юзаешь strict нафига тебе вообще Перл?

Как зачем. А какой еще есть язык с динамической типизацией и замыканиями. Както давно python пробывал, я так и не понял чем он мне не понравился. scheme, по большому счету, напрягает отсутствием goto и возможности завести переменную (на каждый let - заводить один отступ очень раздражает).

Остается перл. Он хоть и кривой, но практичный.

ival ★★ ()
Ответ на: комментарий от Olegymous

В чем прикол? Почему это компилится? На присваивание $b без my тоже не ругается. А уже на $c ругается.

потому что есть sort, который может брать аргументом код в фигурных скобках по типу

@res = sort {$a cmp $b} @array

И эти $a, $b используются в качестве имен для параметров. Наверно это дело появилось раньше чем anonymous subrutines. Сейчас в этом необходимости нет, а оно есть.

ival ★★ ()
Ответ на: комментарий от ival

>А какой еще есть язык с динамической типизацией и замыканиями

По-моему, проще перечислить динамические языки без поддержки замыканий.

Zenom ★★★ ()
Ответ на: комментарий от Zenom

Да и в статических языках их полно. От хаскеля до валы.

Zenom ★★★ ()
Ответ на: комментарий от ival

Еще один повод давать осмысленные имена переменным.

Olegymous ★★ ()
Ответ на: комментарий от ival

> А какой еще есть язык с динамической типизацией и замыканиями. Както давно python пробывал, я так и не понял чем он мне не понравился. scheme, по большому счету, напрягает отсутствием goto и возможности завести переменную

Ну так в этом же вся суть функционального программирования.

Остается перл. Он хоть и кривой, но практичный.

Верблюд в качестве логотипа как раз это и символизирует. :)

Relan ★★★★★ ()

Потому что избавляясь от рудиментов полуачаем другой язык. Как в случае перл6:) Потом получаем проблему существования модулей под разные версии языка и тд и тп.

Поэтому при желании достичь нужно результа и оперируют стриктами, варнингами и прагмами. Наверное имело бы смысл развивать язык постепенно и используя что-то вроде use perl::version::5.20.1 задавать компилятору объявление, что в рамках данного файла использовать стандарт 5.20.1. Но это решение тоже непростое, потребуется делать промежуточные стандартизации языка + компилятор языка дробить так, чтобы в нём активировались или деактивировались те или иные стандарты. Да, будет и профит в виде более быстрой компиляции в некоторых случаях, например при выборе наиболее обрезанного стандарта, но кто всё это будет делать?

Вывод: лучше пусть язык разростается, чем обрезать его каждый раз и ловить геморрой.

ixrws ★★★ ()
Ответ на: комментарий от ival

>Сейчас в этом необходимости нет, а оно есть.

Спорная точка зрения; в perl ведь много и других глобальных переменных, $_ (или @_ сравнимая по значимости) тебе не мешают?!

ddt ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.