vit_r: default (vit_r)
[personal profile] vit_r
Плюнув на привычку молчать, пока не спрашивают, выступил на междусобойчике по Перлу в Берлине.

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

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

Вдогонку картинке про agile добавлю ещё две, сделанные сегодня в электричке.

GPW 2013



GPW_2013_KP_img_03_IT_process_and_pyramids

The Legend of The Right Process:
- We pretend we build pyramids.
- Waterfall, spiral, scrum, XP... are similar: product can only grow. Differences are only in the ways of growth.
- We pretend we cannot throw anything away. We do not reduce waste but deny it.

Creative Commons License"The Legend of The Right Process" by Vit R is licensed under a Creative Commons Attribution 3.0 Unported License.







Harvard management methodology wizards claim that the human resources quality is not important, if you have the right management process.

Be prepared.

GPW_2013_KP_img_04_user




Если кто-нибудь возьмётся подкорректировать английский, закину в блог текст доклада. А то у меня владение языком гораздо ниже того уровня, чем требуется для адекватного воздействия на аудиторию.

Date: 2013-03-16 12:02 am (UTC)
From: [identity profile] panchul.livejournal.com
Десятилетней давности - это был скрипт, с которым я мучался вчера (это проект-однодневка).

А вот для VerilogPerl я использовал все самое свежее.

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

Исключение, которое меня реально шокировало:


http://community.activestate.com/faq/perls-magic-sort-variable

Question:
When I call my variables $a or $b they don't do what I expect. What's up?

Answer:
Here's an often-used, but little-remembered fact about Perl that has caused some confusion on more than one occasion: $a and $b are special.

They are (among other things) used in custom sort blocks, but unfortunately the Perl documentation uses them in many examples. I say that it is unfortunate because the use strict pragma seems to ignore these two variables. If you do the following:

use strict;

$a = "foo";
$b = "bar";
$c = "baz";
$d = "quux";
You will see that only $c and $d are flagged as errors.

My advice is to avoid using $a and $b except for custom sort blocks and other places that require their use.

Date: 2013-03-16 12:37 am (UTC)
From: [identity profile] vit-r.livejournal.com
на перле трудно специфицировать структуры данных типа деревьев, массивов структур из массивов структур и т.д.

Ну-у-у. Не знаю. Если пытаться на Перле сделать Верилог, то, наверно, трудно. Для людей, работавших на С с указателями должно быть просто. Нужно просто прочитать не "Перл для идиотов", а что-нибудь посерьёзнее.

When I call my variables $a or $b

По голове кандилябром сразу. Имена переменных не должны быть короткими, за исключением особых случаев.
The following lists the reserved words of Verilog hardware description language, as of OVI LRM 2.0: and, always, assign, attribute, begin, buf, bufif0, bufif1, bufif1, case, cmos, deassign, default, defparam, disable, else, endattribute, end, endcase, endfunction, endprimitive, endmodule, endtable, endtask, event for, force, forever, fork, function, highhz0, highhz1, if, initial, inout, input, integer, join , large, medium, module, nand, negedge, nor, not, notif0, notif1, nmos, or output, parameter, pmos, posedge, primitive, pulldown, pullup, pull0, pull1, rcmos, reg, release, repeat, rnmos, rpmos, rtran, rtranif0, rtranif1, scalared, small, specify, specparam, strong0, strong1 supply0, supply1, table, task, tran, tranif0, tranif1, time, tri, triand, trior, trireg, tri0, tri1, vectored, wait, wand, weak0, weak1, while, wire, wor

Кому будем жаловаться?

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

По-моему, кое-у-кого нездоровая тенденция доказательства проблематичности Перла через всякие извращения.
Edited Date: 2013-03-16 12:38 am (UTC)

Date: 2013-03-16 03:47 am (UTC)
From: [identity profile] panchul.livejournal.com
Упаси боже, я не пытаюсь на Перле сделать Верилог, просто у парсера Верилога который мне пришлось использовать для неких нужд, был перловский интерфейс (VerilogPerl).

*** Для людей, работавших на С с указателями должно быть просто. ***

Ну вот что-что, а в С я абсолютный эксперт, ибо пишу на нем с 1986 года, причем написал три C компилятор-а (два на основе PCC и один с нуля), и поэтому меня напрягает как например в Перле написать эффективно рекурсивный обход дерева с модификацией со структурами вида:

struct node
{
int data;
struct node * left;
struct node * right;
};

Причем дерево нужно не только обходить, но и модифицировать - переносить поддеревья с места на место. Это что - нужно использовать перловский ООП и references?

Еще всякие массивы структур массивов хэшей массивов (я конечно разобрался в частных случаях, но как-то все странно смотрится).

Date: 2013-03-16 10:22 am (UTC)
From: [identity profile] vit-r.livejournal.com
Не... Я так не играю.

Первым делом - структура С - это тот же класс С++, только не могущий сделать аттрибуты private и protected. Так что OO для задачи - это самое то.

Вторым, спрашиваю у гугла "perl binary tree" и первая же ссылка выдаёт.

  $found = {
    left  => undef,
    right => undef,
    val   => $target
  };

Правда, пример какой-то древний. Если написать use strict; и use warnings;, что всегда стоит делать, то надо ставить кавычки.

  $found->{"right"};

как например в Перле написать эффективно

"Эффективно" на Перле - это "быстро написать"
Если нужна скорость выполнения, проще взять другой язык. Правда, на разумных массивах данных разница не такая, чтобы стоило этим озабачиваться.

Edited Date: 2013-03-16 10:29 am (UTC)

Date: 2013-03-16 03:26 pm (UTC)
From: [identity profile] panchul.livejournal.com
Ну это примерно то, что я думал - т.е. выглядит как то, что структура/класс - это частный случай хэша. Проблема в том, что в моих задачах таких структур может быть условно миллион экземпляров расзной степени одновременности. Насколько эффективна реализация таких объектов в интерпретаторе или компиляторе перла? Memory footprint? Насколько хорош сборщик мусора?

Это сразу объясняет, почему в перловских книжках бинарные деревья появляются где-то в advanced разделах. Кроме этого, это опровергает утверждение многих (не всех) перловцев, что якобы перл является универсальным языком для всего ("если у вас есть задача - напишите ее на перле").

Date: 2013-03-16 03:49 pm (UTC)
From: [identity profile] vit-r.livejournal.com
структура/класс - это частный случай хэша

А вот и фиг.

Класс Объект - это blessed variable. Класс - это модуль.

Можно сделать класс на массиве, можно на текствой переменной. Хеш просто в большинстве случаев удобнее. Но, если требует задача, можно сделать так, чтобы решение подходило под неё лучше.

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

Ну и? Если они просто болтаются без дела, проблема не в Перле, а в архитектуре. У меня спокойно из всяких хешей массивов хешей и таблицы на миллионы строк выводятся, и подструктуры извлекаются, и файлы в JSON на десяток мегабайт пишутся. (Которые потом одним движением берутся другим перловским скриптом для дальнейшей обработки)

Насколько эффективна реализация таких объектов в интерпретаторе или компиляторе перла? Memory footprint? Насколько хорош сборщик мусора?

Пардон, благородный дон пишет реалтайм? Тогда я бы посоветовал делать критичные к времени вещи на C++, а если без Перла не обойтись, то ему оставить только интерфейсы.

Если это не реалтайм а расчёты чего-то сложного, то я бы не обращал внимания на такие мелочи. Ну будет работать программа полторы минуты вместо сорока секунд. У меня вообще некоторые рассчёты шли часа по четыре. Правда, там основное время было на чтение и запись. Но результаты были всё равно готовы раньше, чем я бы на С++ просто базовые функции оттестировал.

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

Бинарные деревья появляются во всех книжкак в advanced разделах. А делать структуры как в примере на Перле умеют даже люди, которые не знают, что такое хеш и воспринимают это просто как форму записи.
Edited Date: 2013-03-16 03:51 pm (UTC)

Profile

vit_r: default (Default)
vit_r

June 2025

S M T W T F S
12345 6 7
8 910 11 12 1314
15 16 1718192021
22232425262728
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 18th, 2025 04:41 pm
Powered by Dreamwidth Studios
OSZAR »