Re: perl syntax

From
"Andrei Egorov (2:5020/400)
To
Alexei Ivanov (2:5054/37.63)
Date
2005-04-01T11:06:12Z
Area
RU.PERL
From: "Andrei Egorov <zmey@zmeyland.kmv.ru>

Alexei Ivanov <ai4@physik.uni-stuttgart.de> wrote:

>>>Блин. Что им все так указатели не нравятся...
>> Патамушта неиссякаемый источник ошибок, утечек памяти
>> и т.п.
> 
> А жизнь приводит к смерти. Зачем жить?
> Ведь если указатели есть, то никто не заставляет ими
> пользоваться. А вот если есть, то даже те кто хочет
> не может.
Перл - кроссплатформенный язык.
В нём постарались избежать проблем с зависимостью от архитектуры
процессора.
Какова длина указателя в твоей системе? 4 байта? 8 байт?
Перлу это фиолетово, т.к. указатели там скрыты от программиста.

И данные в переменную не-строкового типа из бинарного файла
перл тебе загрузить напрямую не даст - просто потому, что на
разных платформах разные форматы бинарных данных (даже
int бывает 4-х и 8-байтовый, big-endian и low-endian). Хочешь
это сделать - будь добёр, укажи ЯВНО, данные какого формата
лежат в данных.

Что касается того, что "жить вредно" - указатели вредны тем,
что привыкаешь думать на низком уровне (указатели, байты,
слова, куски памяти). Вот в следующем абзаце явно прослеживаются
мысли испорченного таким низкоуровневым мышлением человека:

>> Считай, что PERL - более высокоуровневый язык, чем С.
>> Не боись, без указателей жизнь очень даже проста и приятна.
> 
> Мне нет. Хочешь исправить байт в строке по адресу A
> через указатель раз и готово.
А если строка мультибайтовая (UTF-8) - тоже по указателю
писать захочется? :)

Некорректна сама постановка вопроса: "хочется исправить байт
в строке по адресу". Во-первых, ЗАЧЕМ? Что такое этот байт
из себя представляет? Переменную какую-то? Используй переменные.
Элемент массива? Используй массивы. Строку? Используй строковые
переменные (перл в обработке строк силён).

Во-вторых, каков глубокий смысл использования именно строки
байт для хранения данных? Не удобнее ли использовать для этого
средства, данные языком, и не выдумывать своих уникальных
методов хранения?

> Иначе же либо искуственно наворачиваешь
> бесполезный код который все тормозит Но зато без указателя...
Насчёт тормозов уже обсуждали: хочется неземных скоростей -
перл не подходит.
Отсутствие указателей в перле - не недостаток. Привычка
использовать указатели в программах на С - дурная. 

> Я может скажу крамольную мысль и меня повесят
> за ногои, язык высокого уровня это не язык в котором
> отсутсвуют элементы языка низкого ууоровня, который расширен
> до элементов высокого уровня...
Не крамола, но глупость (не в обиду).
Расширение языка "среднего уровня" С - это С++.
Перл - не расширение, это самодостаточный язык. 
Сама архитектура Перла не предусматривает никаких указателей,
т.к. место под переменные отводится в памяти автоматически
самим перлом, и не факт, что при изменении переменной она
останется лежать всё в той же области памяти (как результат -
повиснет указатель, если бы перл их, упаси аллах, поддерживал).

В перле нет средств, помогающих создать программу с
трудно уловимыми глюками. Я считаю это его достоинством,
а не недостатком.

>> Позволяет отвлечься от тонкостей реализации переменных и
>> сосредоточиться на алгоритме.
> Иногда алгоритм это тонкость реализации.
Софистика. :)
"Особенности тонкостей реализации" нисколько не оправдывают
нехотение программиста мыслить правильными категориями.

>> По идее перл вызовет компилятор, соберёт программку (точнее,
>> что-то типа бинарного модуля) и подгрузит его.
>> Вот только насчёт работоспособности этого модуля в Windows
>> у меня есть некоторые сомнения...
> 
> Хм.. А причем тут виндовс?
> Мы вроде бы о нем не говорили.
Да так... Просто для компиляции инлайновой сишной программы
перл вызывает внешний компилятор, коего в виндовой системе
может и не оказаться.

>> Никакой разницы (кроме той, что при старте скрипта какое-то
>> время тратится на компиляцию байт-кода в памяти - естественно,
>> что уже скомпилированному байт-коду это не нужно).
> 
> ААААА.... компиляция тоже занимает время...
Горе-то какое... :)

>> Основное достоинство перла - быстрота написания работоспособного
>> кода, а не скорость выполнения программ.
> Сторонники Python будут не согласны.
С чем именно? :) 

-- 
Origin: Только байты свистят в пpоводах...
--- ifmail v.2.15dev5.3
 * Origin: Demos online service (2:5020/400)
SEEN-BY: 50/203 520 400/462 450/159 186 208 451/30 452/25 100 454/9 455/15
SEEN-BY: 461/33 43 74 106 132 640 464/34 465/204 467/24 469/125 999 478/44 65
SEEN-BY: 550/150 5068 4600/126 4614/9 4616/3 4623/56 4625/8 9 4626/100 4627/10
SEEN-BY: 4632/10 4635/4 99 1024 4641/444 4642/27 48 4657/50 5000/76 5001/50
SEEN-BY: 5001/5001 5002/76 5002 5003/34 5006/1 5007/1 5010/53 70 146 5011/13
SEEN-BY: 5012/8 5015/4 28 214 5019/5 5020/52 115 118 128 133 150 154 175 194
SEEN-BY: 5020/400 486 545 549 600 642 715 744 758 794 830 921 958 968 982 1057
SEEN-BY: 5020/1100 1169 1212 1234 1523 1604 1626 1642 1653 1665 1826 1829 1922
SEEN-BY: 5020/1930 2013 2020 2044 2142 2200 2238 2345 2590 2908 4400 4441
SEEN-BY: 5021/2 3 5022/128 5023/11 5024/1 73 5025/19 750 5026/14 49 5030/49 69
SEEN-BY: 5030/195 382 436 556 611 920 966 1016 1039 1063 1339 1688 1900 5031/7
SEEN-BY: 5031/47 63 70 5032/11 20 5033/21 35 5034/8 5035/3 38 63 5036/1 13
SEEN-BY: 5037/21 36 5038/4 5040/33 47 5041/4 5042/13 5045/7 42 5047/47 5049/1
SEEN-BY: 5049/6 157 5050/9 41 47 5051/15 35 5053/16 38 5054/1 8 9 35 36 37 45
SEEN-BY: 5054/50 66 67 81 85 5055/177 5056/16 5057/1 5058/77 5059/2 9 20
SEEN-BY: 5060/88 90 5061/15 5062/1 4 7 5063/41 51 5064/7 35 36 39 5066/18
SEEN-BY: 5070/26 66 948 1222 5071/22 5075/5 37 5077/70 80 5079/49 5080/80 1003
SEEN-BY: 5081/2 5082/6 5083/13 21 5090/23 105 108 113 5093/4 27 33 5096/18
SEEN-BY: 5100/113 6001/3 6023/1 6033/2727 6035/9 6070/5 6083/11 6096/10
PATH: 5020/400 4441 52 5054/1 37