The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Релиз оптимизирующего компилятора Perl5-кода RPerl 4.0, opennews (??), 05-Июл-18, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


12. "Релиз оптимизирующего компилятора Perl5-кода RPerl 4.0"  –1 +/
Сообщение от Аноним (12), 06-Июл-18, 10:39 
>Разрешено использование идентификаторов, начинающихся с символа подчеркивания "_", в тех случаях, когда это не приводит к конфликту с зарезервированными именами C++;

А использовать идентификаторы, НЕначинающиеся с символа "$", ещё не разрешили?

Ответить | Правка | Наверх | Cообщить модератору

15. "Релиз оптимизирующего компилятора Perl5-кода RPerl 4.0"  +/
Сообщение от captcha 20168 (?), 06-Июл-18, 11:27 
почитай зачем в имени переменной указывается "$"
Ответить | Правка | Наверх | Cообщить модератору

18. "Релиз оптимизирующего компилятора Perl5-кода RPerl 4.0"  –1 +/
Сообщение от Oleg (??), 06-Июл-18, 12:28 
А где можно почитать? Вопрос возник потому, что в Пыхе например все переменные начинаются с доллара, а в Питоне - вообще нет ни доллара ни собаки ни процента. Какой смысл в явном обозначении природы объекта? оптимизация? неймспейсы? читабельность? В чем реальная причина? Спасибо.
Ответить | Правка | Наверх | Cообщить модератору

20. "Релиз оптимизирующего компилятора Perl5-кода RPerl 4.0"  +/
Сообщение от Аноним (-), 06-Июл-18, 13:03 
> Какой смысл в явном обозначении природы объекта?

Неужели кругом у всех ооп головного мозга? За объектами вы уже не видите типы данных. Сам по себе объект ничего не может и не значит, он является контейнером для управления и хранения определенных типов данных.
Cигил (https://en.wikipedia.org/wiki/Sigil_(computer_programming)) - это это не обозначение природы объекта, т.к. в Perl вообще нет объектов, как в Си. В Perl можно создать объекты, а если точнее - сэмулировать их, как в Си. В Perl имеется набор типов (как в Си) и сигил является по сути декларатором данного типа. Вы всегда можете оперировать ссылкой и уйти в сплошные скаляры (сигил - $):

> $ perl -E'my $ref2hash = {}; say ref $ref2hash;'
> HASH
> $ perl -E'my $ref2arr = {}; say ref $ref2arr;'
> HASH
> $ perl -E'my $ref2sub = sub{}; say ref $ref2sub;'
> CODE

Но мне кажется людям далеким от Си (это не обязательно вы) будет сложно с ссылками, типами и вообще оперировать структурами данных. Я, например, встречал людей которые не понимают как строить управляющий код через функции и структуры данных в глобальном пространстве имен.

А можно еще дальше извратиться, и декларировать все словами, как я показал здесь: https://www.opennet.ru/openforum/vsluhforumID3/114770.html#1... Но зачем?

PS: Почитать в явном виде негде, нужно дойти своим умом до понимания от того что я написал.

Ответить | Правка | Наверх | Cообщить модератору

23. "Релиз оптимизирующего компилятора Perl5-кода RPerl 4.0"  –1 +/
Сообщение от Андрей (??), 06-Июл-18, 15:33 
> т.к. в Perl вообще нет объектов, как в Си. В Perl можно создать объекты, а если точнее - сэмулировать их, как в Си.

Зачем же они тогда код в Си++ транслируют, ведь код на Си менее запутан, быстрее компилируется и проще отлаживается?! Не зря же ядро использут Си с ООП подходом да и GObject(GLib/GTK/........).

Ответить | Правка | Наверх | Cообщить модератору

25. "Релиз оптимизирующего компилятора Perl5-кода RPerl 4.0"  +1 +/
Сообщение от angra (ok), 06-Июл-18, 15:56 
> Почитать в явном виде негде, нужно дойти своим умом до понимания от того что я написал.

Как перловик с более чем десятилетним стажем могу авторитетно заявить, ты написал лютую ахинею.

Ответить | Правка | К родителю #20 | Наверх | Cообщить модератору

32. "Релиз оптимизирующего компилятора Perl5-кода RPerl 4.0"  +/
Сообщение от Аноним (-), 06-Июл-18, 23:28 
> Как перловик с более чем десятилетним стажем могу авторитетно заявить, ты написал лютую ахинею.

Я услышал твое заявление - ок. Но теперь будь любезен - докажи свои слова.

Ответить | Правка | Наверх | Cообщить модератору

35. "Релиз оптимизирующего компилятора Perl5-кода RPerl 4.0"  +/
Сообщение от angra (ok), 07-Июл-18, 09:18 
> Сам по себе объект ничего не может и не значит, он является контейнером для управления и хранения определенных типов данных.

Возьми и почитай что-то умное про ООП, так как твоё определениие объектов неверно как фактически так и чисто логически

> в Perl вообще нет объектов

Есть они там. Если они не такие, как в другом ЯП, это не значит, что они не объекты. Все основные критерии ООП объекты на perl проходят.

> В Perl можно создать объекты, а если точнее - сэмулировать их, как в Си

В C действительно можно только эмулировать. В perl тоже можно эмулировать разные варианты ООП, но при этом существует встроенный механизм ООП.

> В Perl имеется набор типов (как в Си)

Нет. Между кучей скалярных типов в С и фундаментальными типами в Perl нет практически ничего общего.

> сигил является по сути декларатором данного типа

Он может быть в том числе и частью декларации, но если бы на этом его роль заканчивалась, то пользы от них бы не было. При этом можно декларировать тпп без сигилов. Так что приравнивать сигил к декларатору нельзя.

> Вы всегда можете оперировать ссылкой и уйти в сплошные скаляры

Нет, не получится. Самое простое, пройдись в цикле по списку, на который у тебя есть ссылка.

Итого, все утвреждения в той или иной степени ложны. Текст в целом является ахинеей.

Ответить | Правка | Наверх | Cообщить модератору

36. "Релиз оптимизирующего компилятора Perl5-кода RPerl 4.0"  +/
Сообщение от qwerty123 (??), 07-Июл-18, 11:26 
>> в Perl вообще нет объектов
>Есть они там. Если они не такие, как в другом ЯП, это не значит, что они не объекты.

Для кого и int объект.

Вообще, определение объекта так себе, на грани исчезновения =)

bless REF,CLASSNAME
bless REF

This function tells the thingy referenced by REF that it is now an object in the CLASSNAME package. If CLASSNAME is omitted, the current package is used. Because a bless is often the last thing in a constructor, it returns the reference for convenience. Always use the two-argument version if a derived class might inherit the method doing the blessing. See perlobj for more about the blessing (and blessings) of objects.

Минимальное описание, без акцессоров

package aObject;

sub construct {
    my ($class, $var1) = @_;
    my $self = {
        var1 => $var1,
    };
    bless $self, $class;
    return $self;
}

1;

package main;

my $objSample = aObject->construct("text");

И шо мы имеем? сыылку на пакет + уникальную цепочку perl переменных.

При этом речь идет сначала о пакете, потом о объекте, потом опять о пакете =)
И по сути это так и есть - perl5-объект есть пакет функций с нечаянно своими данными.
по сути, такая же концнпция в ada (концепция, не реализация), подобный подход для всяких C gObject.

>фундаментальными типами в Perl нет практически ничего общего.

Нет там фундаментальных типов, там фундаментальная магия =)

Внутри perl5 любая переменная представлена структрурой  

20.3 Perl Value Types
20.3.1 Scalar Values

A scalar value (SV) contains the value of the scalar, a reference count, and a bitmask to describe the state of the scalar. The scalar may be an integer value ("IV"), a double ("NV"), a string ("PV" for pointer value), a reference ("RV"), or a special-purpose object ("magical"). We'll discuss magical variables separately.

И эта структура при случае быстро на лету переобувается.

Только не требуйте указать это в *.h/*.c perl5. =)
Только не с утра, только не в субботу, я лучше найду все концы у пачки сваренного спагетти =)

Ответить | Правка | Наверх | Cообщить модератору

38. "Релиз оптимизирующего компилятора Perl5-кода RPerl 4.0"  +1 +/
Сообщение от angra (ok), 07-Июл-18, 13:31 
Зачем ты мне рассказываешь как устроено и работает ООП в perl? С тем же успехом я могу рассказать как устроена магия ООП в том же C++ или в другом ЯП. Детали реализации роли не играют, важно наличие абстракции.
А про фундаментальные типы ты вообще не понял. Скаляр, вектор, отображение, функция - вот это имелось ввиду, а не разница между скалярами и их физическое представление в памяти.
Ответить | Правка | Наверх | Cообщить модератору

44. "Релиз оптимизирующего компилятора Perl5-кода RPerl 4.0"  –1 +/
Сообщение от Аноним (44), 07-Июл-18, 20:59 
Так вы довольно топорно ориентируетесь как в perl, так и в ООП. Вам бы подучиться, хотя наверное уже все...
Ответить | Правка | Наверх | Cообщить модератору

43. "Релиз оптимизирующего компилятора Perl5-кода RPerl 4.0"  +/
Сообщение от Аноним (44), 07-Июл-18, 20:55 
>Возьми и почитай что-то умное про ООП, так как твоё определениие объектов неверно как фактически так и чисто логически

Тут слив, ибо вода без конкретики.

> Есть они там. Если они не такие, как в другом ЯП, это не значит, что они не объекты. Все основные критерии ООП объекты на perl проходят.

Нет в perl объектов, есть объектно-ориентированная нотация. Вы вероятно не разбираетесь в тонкостях объектой модели и объектно-ориентированной нотации. Вообщем снова слив.

> В C действительно можно только эмулировать. В perl тоже можно эмулировать разные варианты ООП, но при этом существует встроенный механизм ООП.

Встроенного механизма ООП нет, есть нотация. Можно сделать настоящее ООП возможностями языка, но это будет расширением его базовых возможностей, поэтому я это не рассматривал, т.к. если его не сделать, то его и нет. Так что и тут вы слили.

> Нет. Между кучей скалярных типов в С и фундаментальными типами в Perl нет практически ничего общего.

Из perldoc -f ref:

>[оверквотинг удален]
>                    ARRAY
>                    HASH
>                    CODE
>                    REF
>                    GLOB
>                    LVALUE
>                    FORMAT
>                    IO
>                    VSTRING
>                    Regexp

Вообщем тут снова у вас слив.


> Он может быть в том числе и частью декларации, но если бы на этом его роль заканчивалась, то пользы от них бы не было. При этом можно декларировать тпп без сигилов. Так что приравнивать сигил к декларатору нельзя.

Не может быть, а именно оно и есть, но не только. Вообщем вы плаваете и тут. Тут надо вам хорошо подумать, т.к. это не описано нигде, а я как вижу довольно "типичный программист" (не в обиду).

> Нет, не получится. Самое простое, пройдись в цикле по списку, на который у тебя есть ссылка.

Я что-то не вижу ваш пример. Вообщем снова вода без конкретики. Слив.

> Нет, не получится. Самое простое, пройдись в цикле по списку, на который у тебя есть ссылка.

Вам показалось - вы слили абсолютно все. Вся разница в стом что я копаюсь в самом perl больше вас если по количеству лет (а программирую еще больше).

Соберитесь и разберитесь в том что же есть perl. Успехов!

Ответить | Правка | К родителю #35 | Наверх | Cообщить модератору

46. "Релиз оптимизирующего компилятора Perl5-кода RPerl 4.0"  +/
Сообщение от angra (ok), 08-Июл-18, 02:21 
Как известно, от многократного повторения слова "сахар" во рту слаще не станет. Со словом "слив" схожая ситуация.
Ответить | Правка | Наверх | Cообщить модератору

48. "Релиз оптимизирующего компилятора Perl5-кода RPerl 4.0"  –1 +/
Сообщение от Аноним (48), 08-Июл-18, 12:20 
>  Как известно, от многократного повторения слова "сахар" во рту слаще не станет. Со словом "слив" схожая ситуация.

Спасибо за ответ. Вы хорошо показали какой вы "перловик с более чем десятилетним стажем", и насколько значимо вы можете "авторитетно заявить".

Ответить | Правка | Наверх | Cообщить модератору

28. "Релиз оптимизирующего компилятора Perl5-кода RPerl 4.0"  +/
Сообщение от Аноним (28), 06-Июл-18, 17:15 
> Неужели кругом у всех ооп головного мозга?
> природы объекта
> ооп

Ну назвал он сущности объектами, ну что ты, а? Да и сущности — тоже объекты. Ведь из контекста очевидно, что он не про природу рантайм-объектов, а про то, что при парсинге без проблем можно понять, где кейворд, а где переменная, и безо всяких лишних сущностей (сигилов). В целом с ним полностью согласен. Ну и считаю, что запрет на использование кейвордов в именах переменных тоже устаревшим и надуманным, это мешает делать красивые и удобные DSL. Разумеется, это не лучшая практика (в языках, где такое возможно), но для запрета плохих практик есть линтеры, незачем этим ещё и парсер/компилятор напрягать.

А ещё, объекты — это не только ООП, но и — фанфары — теория категорй, где никакого ООП искаропки нет и не особо нужно.

Ответить | Правка | К родителю #20 | Наверх | Cообщить модератору

29. "Релиз оптимизирующего компилятора Perl5-кода RPerl 4.0"  +/
Сообщение от Аноним (28), 06-Июл-18, 17:18 
Ну и вдогонку:

> In computer science, an object can be a variable, a data structure, a function, or a method, and as such, is a value in memory referenced by an identifier.
> data structure
> function

Объекты — не только ООП. Даже за пределами теорката.

https://en.wikipedia.org/wiki/Object_(computer_science)

Ответить | Правка | Наверх | Cообщить модератору

45. "Релиз оптимизирующего компилятора Perl5-кода RPerl 4.0"  –1 +/
Сообщение от Аноним (-), 07-Июл-18, 21:06 
> Ну назвал он сущности объектами, ну что ты, а? Да и сущности — тоже объекты.

Из сущностей только объекты являются объектами, а это не весь наборю Объект -  это инстанцирование типа определенного класса. А когда вы инстанцируете скаляр, массив, хэш или что-то еще, то вы не создаете объект. А если вы хотите заниматься "жизненной" гуманитарной игрой слов - то с этим вам на другой форум, вероятно. Тут технический форум и разговор у нас про ЯП где вроде бы подразумевается строгость не только в терминологии, а не строгость не приветствуется ни в чем.

Ответить | Правка | К родителю #28 | Наверх | Cообщить модератору

31. "Релиз оптимизирующего компилятора Perl5-кода RPerl 4.0"  +/
Сообщение от АнонимГоним (?), 06-Июл-18, 19:45 
Это не типы данных, а скорее контейнер для данных, который может содержать любые типы.
Ответить | Правка | К родителю #20 | Наверх | Cообщить модератору

52. "Релиз оптимизирующего компилятора Perl5-кода RPerl 4.0"  +/
Сообщение от Аноним (-), 08-Июл-18, 17:40 
Скорее да, чем нет. Но я руководствуюсь тем что написано в документации, поэтому все-таки типы.
Ответить | Правка | Наверх | Cообщить модератору

26. "Релиз оптимизирующего компилятора Perl5-кода RPerl 4.0"  +/
Сообщение от angra (ok), 06-Июл-18, 16:10 
> А где можно почитать?

man perldata

> Вопрос возник потому, что в Пыхе например все переменные начинаются с доллара

Пых изначально это кастрированный perl, как следствие и эта фича является кастрацией замечательной идеи и пользы не несет.

> а в Питоне - вообще нет ни доллара ни собаки ни процента.

Как и в большинстве других языков

> Какой смысл в явном обозначении природы объекта? оптимизация? неймспейсы? читабельность? В чем реальная причина?

В первую очередь читаемость. После перла довольно неприятно использовать язык без сигилов.


Ответить | Правка | К родителю #18 | Наверх | Cообщить модератору

33. "Релиз оптимизирующего компилятора Perl5-кода RPerl 4.0"  +/
Сообщение от Аноним (33), 07-Июл-18, 08:47 
Читаемость, говорите? Я бы сказал античитаемость.
Ответить | Правка | Наверх | Cообщить модератору

34. "Релиз оптимизирующего компилятора Perl5-кода RPerl 4.0"  +/
Сообщение от angra (ok), 07-Июл-18, 09:01 
Для неграмотного человека пиктограммы более "читаемы", чем буквы. Для овладевшего грамотой - наоборот. Здесь аналогично, пока я не знал perl мне его синтакис казался странным и нечитаемым, в том числе из-за сигилов. После освоения и достаточно большой практики код без сигилов кажется менее читаемым, так как отсутствует информация, которую привык видеть.
Ответить | Правка | Наверх | Cообщить модератору

37. "Релиз оптимизирующего компилятора Perl5-кода RPerl 4.0"  +/
Сообщение от qwerty123 (??), 07-Июл-18, 11:32 
> Читаемость, говорите? Я бы сказал античитаемость.

при взгляде на код легко, подсознательно отличается функциональная часть лексики от переменных-контейнеров.

при сплошном немаркированом потоке мысли сначала надо понять "что это, берримор?" - "овсянка из кода, сэр"

  


Ответить | Правка | К родителю #33 | Наверх | Cообщить модератору

16. "Релиз оптимизирующего компилятора Perl5-кода RPerl 4.0"  +/
Сообщение от konst55512email (?), 06-Июл-18, 11:30 
я когда-то без проблем избавлялся от "$". С помощью perlcc переводишь скрипт в a.out. И уже его правишь, если надо.
Ответить | Правка | К родителю #12 | Наверх | Cообщить модератору

17. "Релиз оптимизирующего компилятора Perl5-кода RPerl 4.0"  +1 +/
Сообщение от Аноним (-), 06-Июл-18, 12:24 
> А использовать идентификаторы, НЕначинающиеся с символа "$", ещё не разрешили?
> $ cat NoSigils.pm

package NoSigils;

use Filter::Simple;
use strict;

our %sw = qw'
    SCALAR    $
    ARRAY    @
    HASH    %
    CODE    &
    GLOB    *
    REF        $
';

FILTER {
    while( my ($k, $v) = each %sw){
    s/(?:$k\_OF|$k\_)/$v/g
    }
};

> $ cat test.pl

#!/usr/bin/perl

package main;
use strict;

use NoSigils;

my (HASH_h, SCALAR_a, SCALAR_b) = qw/a s d f/;
my REF_r = \HASH_h;

while (my (SCALAR_a, SCALAR_b) = each HASH_OF REF_r) {
    print "key: SCALAR_a  => SCALAR_b\n";
}

GLOB_xyz = sub {
    print "sub xyz called\n";
};

my REF_to_glob = \GLOB_xyz;

GLOB_deref = GLOB_OF REF_to_glob;

xyz();
deref();


> $ perl test.pl

key: a  => s
key: d  => f
sub xyz called
sub xyz called


Не благодари.

Ответить | Правка | К родителю #12 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру