Что представляет собой эффективное обучение Perl для не-Perl разработчиков? [закрыто]

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

ax.xaxis.set_major_formatter(formatter)

pandas.tseries.converter.TimeSeries_DateFormatter, который Pandas использует для форматирования дат в «хорошем» сюжете, хорошо работает с графическими строками когда значения x являются датами. Однако с графиком bar значения x (по крайней мере, полученные TimeSeries_DateFormatter.__call__) являются целыми числами , начиная с нуля . Если вы попытаетесь использовать TimeSeries_DateFormatter со строкой, все метки, таким образом, начнутся в эпоху, 1970-1-1 UTC, так как это дата, которая соответствует нулю. Таким образом, форматтер, используемый для линейных графиков, к сожалению, бесполезен для барных графиков (по крайней мере, насколько я вижу).

Самый простой способ, который я вижу для создания желаемого форматирования, - это создать и установить ярлыки явно:

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import matplotlib.ticker as ticker

start = pd.to_datetime("5-1-2012")
idx = pd.date_range(start, periods= 365)
df = pd.DataFrame({'A':np.random.random(365), 'B':np.random.random(365)})
df.index = idx
df_ts = df.resample('W', how= 'max')

ax = df_ts.plot(kind='bar', x=df_ts.index, stacked=True)

# Make most of the ticklabels empty so the labels don't get too crowded
ticklabels = ['']*len(df_ts.index)
# Every 4th ticklable shows the month and day
ticklabels[::4] = [item.strftime('%b %d') for item in df_ts.index[::4]]
# Every 12th ticklabel includes the year
ticklabels[::12] = [item.strftime('%b %d\n%Y') for item in df_ts.index[::12]]
ax.xaxis.set_major_formatter(ticker.FixedFormatter(ticklabels))
plt.gcf().autofmt_xdate()

plt.show()

дает


Для тех, кто ищет простой пример штрихового графика с датами:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker

dates = pd.date_range('2012-1-1', '2017-1-1', freq='M')
df = pd.DataFrame({'A':np.random.random(len(dates)), 'Date':dates})
fig, ax = plt.subplots()
df.plot.bar(x='Date', y='A', ax=ax)
ticklabels = ['']*len(df)
skip = len(df)//12
ticklabels[::skip] = df['Date'].iloc[::skip].dt.strftime('%Y-%m-%d')
ax.xaxis.set_major_formatter(mticker.FixedFormatter(ticklabels))
fig.autofmt_xdate()

# fixes the tracker
# https://matplotlib.org/users/recipes.html
def fmt(x, pos=0, max_i=len(ticklabels)-1):
    i = int(x) 
    i = 0 if i < 0 else max_i if i > max_i else i
    return dates[i]
ax.fmt_xdata = fmt
plt.show()

20
задан Will 1 August 2013 в 13:47
поделиться

18 ответов

Проверьте оглавления для моих книг. И Изучение Perl и Промежуточный Perl разработаны, чтобы преподавать программистам язык Perl. Мы покрываем 80% Perl, что большинство людей использует все время и разработало это с лет и лет обучающих людей Perl. Каждая книга разработана как учебное руководство, и существуют упражнения в конце каждой главы. Я также записал Изучение Рабочей книги Студента Perl для обеспечения дополнительных упражнений. Perl Программирования является хорошей ссылкой, также.

существует на самом деле очень немного правил, что необходимо знать для "получения" Perl, и большинство людей не разбирается в этих правилах только путем рассмотрения кода. Некоторые вещи учить новые Perlers, которые происходят из другого языка:

  • строгий и предупреждения
  • Скаляр по сравнению с контекстом списка
  • динамичный по сравнению с лексическим контекстом
  • символ не является типом переменной
  • создание Списка и управление (карта, grep, вид)
  • , Как использовать CPAN эффективно
  • Закрытия и подпрограммы как данные
  • , Рекурсия в Perl сосет

Удача:)

20
ответ дан brian d foy 1 August 2013 в 13:47
поделиться
  • 1
    Спасибо и все другие, которые ответили. – David Shochet 9 August 2012 в 13:36

поскольку другие сказали:

use strict;
use warnings;

, возможно

use diagnostics;

для программистов Java:

use autodie; #or Fatal

американский лось/мышь English.pm

Perl:: Критик
perltidy

2
ответ дан Alexandr Ciornii 1 August 2013 в 13:47
поделиться

На основе моего опыта на рабочем месте я рекомендовал бы начать с документации Perl (уже покрытый здесь) и провел бы некоторое время, показывая студенту как к тестовому коду на командной строке. Действительно удивительно, как быстро кто-то может взять язык, когда они могут попробовать что-то на лету и сделать исправления, пока они не разбираются в нем.

1
ответ дан converter42 1 August 2013 в 13:47
поделиться

Я пошел бы для разнообразия заключения в кавычки операторов (от perlop):

       Customary  Generic        Meaning        Interpolates
           ''       q{}          Literal             no
           ""      qq{}          Literal             yes
           ``      qx{}          Command             yes*
                   qw{}         Word list            no
           //       m{}       Pattern match          yes*
                   qr{}          Pattern             yes*
                    s{}{}      Substitution          yes*
                   tr{}{}    Transliteration         no (but see below)
           <<EOF                 here-doc            yes*

           * unless the delimiter is ''.

список может быть подавляющим (особенно, когда Вы добавляете в альтернативных разделителях), но чрезвычайно полезный. Это также помогает при чтении кода начиная с немногих (если таковые имеются!) языки имеют множество кавычек, которые имеет Perl.

3
ответ дан Jon Ericson 1 August 2013 в 13:47
поделиться

Я был просто нанят в этот точный сценарий. Я - C++ и Java-разработчик и никогда не касался Perl до моего текущего задания. Вещами, которые заняли время для привыкания также, был особенный выбор синтаксиса Perl [$ _], $this = что если..., и наблюдение леса для деревьев (что-либо содержащее/^# +\d/элементы). Другими вещами был просто результат дома программирования, я работаю в [запутывающие операторы OO, $self и помещение 1; в конце файлов модуля].

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

Все, что быть сказанным, мне вручили кодовую базу приблизительно 35 000 строк, книги верблюда и сказал, что я не мог использовать CPAN. Это были продуктивные шесть месяцы. ^^

1
ответ дан brian d foy 1 August 2013 в 13:47
поделиться

Самая важная вещь, которую можно показать им, состоит в том, как получить доступ к документации, и как найти его (perldoc perltoc, perldoc -q $keyword, perldoc -f $function и т.д.).

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

7
ответ дан moritz 1 August 2013 в 13:47
поделиться

Я - программист Java, который недавно должен был взять Perl. Первая часть, найденная самой твердой привыкнуть к, была всем специальным предложением, созданным в переменных как $ _ $ ~ $' и так далее. Пока Вы не привыкаете им, трудно отслеживать, которых делает что.

И, конечно, использование регулярных выражений.

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

next unless "$_" !~ /^#/;
4
ответ дан brian d foy 1 August 2013 в 13:47
поделиться
  • 1
    Спасибо @tom, указал на меня в правильном направлении. Для ссылки ключ в метаданных AdjustmentXMP. Данные находятся в XML (конкретно XMP) формат. Значения касаются неповернутого изображения. – William Denniss 15 October 2012 в 22:11

Вероятно, не точно, что Вы ищете. Извинения заранее.

я не указал бы на общие черты, если это не действительно необходимо.
Perl работает в своем собственном мире. Вы могли программировать Perl в стиле Java, если Вам нравится, но какой смысл?

самый важный урок я извлек уроки из Perl (и мои обучающие программы Perl) "Существует больше чем Один Способ Сделать Это". Таким образом, я думаю лучший способ узнать, что Perl охватывает свое отношение к программированию и поддержке каждого программиста, поскольку он находит его путь.

примерами, которые Вы делаете, функции списка и т.д., являются вещи, которые прибывают естественно с использованием - можно только понять их питание, как только Вы получаете Perl "способ вещей".

Просто мои два цента.

6
ответ дан Sklivvz 1 August 2013 в 13:47
поделиться

Perl Программирования (созданный в соавторстве #22483 - хорошая работа Randal, у меня был мой для близости в 10 лет) был большим введением к Perl. Начиная с regex, режущий и ставя на карту массивы, ассоциативные массивы и т.д. Плюс whys и как имеет создание отчетов в Perl и ссылке на функцию.

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

1
ответ дан Community 1 August 2013 в 13:47
поделиться

Для C++/Java/C# кодеры два различия, которые я подчеркиваю очень решительно заранее, то, что:

№ 1: В Perl почти все имеет значение, просто не всегда, что Вы хотите. Хорошие примеры включают:

  • Имена переменной без символов не останавливают выполнение - они интерпретируются как Попытка barewords
  • сохранить массив в скаляре, и Вы получаете длину
  • Попытка сохранить хеш в скаляре, и Вы получаете 'a/b' (блоки, используемые по сравнению с общими блоками?)

№ 2: В Perl можно составить его, как Вы продвигаетесь. В других работах можно сказать "в хеше 'w', ключ 'x' индексирует анонимный массив, где поле 'y' содержит 'z'" , и интерпретатор создаст и размер все переменные для Вас, когда Вы идете.

0
ответ дан Garth Gilmour 1 August 2013 в 13:47
поделиться

Просто шутка, но независимо от того, что Вы делаете, показывает, что вещи как это СЛУЖАТ!;)

use integer;@A=split//,<>;sub R{for$i(0..80){next if$A[$i];my%t=map{$_/9
==$i/9||$_%9==$i%9||$_/27==$i/27&&$_%9/3==$i%9/3?$A[$_]:0=>1}0..80;R($A[
$i]=$_)for grep{!$t{$_}}1..9;return$A[$i]=0}die@A}R
2
ответ дан Sklivvz 1 August 2013 в 13:47
поделиться

Я могу только добавить, что кто-то происходящий из менее выразительные языки не мог бы понять выражения хеша или хешировать и выстроить выражения части. Кажется, что каждый язык имеет библиотеку PCRE в эти дни.

, О, и добавить к moritz идее, я обучил своих коллег на просто этом.

Плюс, я включал некоторую инструкцию относительно Данных:: Самосвал, Скаляр:: Util, Список:: Util и некоторые очень полезные модули как этот.

И почему не в этом отношении, проверьте Damian Лучшие практики Perl и поймайте несколько более мощных предложений.

4
ответ дан Jon Ericson 1 August 2013 в 13:47
поделиться

Другим удивительным аспектом является контекст. Факт, который функционирует или даже переменные, ведет себя по-другому в зависимости от того, ссылаются ли на них в списке или скаляре (или пусто), контекст был важной деталью для стажеров Perl.

я обычно настаиваю на "более высоком уровне", созданном в функциях (карта, grep, соединение встык, разделите). Из-за TMTOWTDI многие программисты только помнят более знакомые аспекты Perl (как циклы C-стиля, substr и индекс) и используют исключительно их.

После того, как они будут знакомы с языком, Промежуточный Perl и , Усовершенствованное Программирование Perl может дать им дальнейшее понимание мира Perl

7
ответ дан kixx 1 August 2013 в 13:47
поделиться

Откровенно говоря, я просто дал бы им Camel. Это - такая читаемая и интересная книга, они будут в порядке в мгновение ока. Я все еще смеюсь о 'Perl, содержит правду, чтобы быть самоочевидным', и это должны быть десять лет, с тех пор как я сначала считал его.

6
ответ дан slim 1 August 2013 в 13:47
поделиться

Я запустил бы, говоря им всегда использовать волшебную молитву:

use strict;
use warnings;

Они не должны знать почему (все же).

Затем, я представил бы их perldoc и показал бы им основы использования его (-f и флаги-q, perldoc жемчуг и perldoc perltoc, и т.д.) Они должны знать, где посмотреть, когда у них есть вопросы.

Я говорил бы о скаляре по сравнению с контекстом списка.

Я представил бы их типам основных данных (скаляры, массивы и хеши) и как символы следуют за контекстом, не типом данных!

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

Представьте их регулярным выражениям и привыкните их для идеи regexes быть первоклассными объектами в Perl.

Я кратко показал бы им "диагональный" синтаксис Perl. Идиомы как next unless /foo/ замечательны, после того как Вы добираетесь, используют их, но кажутся очень посторонними при прибытии из других языков, особенно "ортогональных".

Вы не должны говорить о ссылках сразу же. Позвольте тому ожиданию, пока они не готовы сделать вещи, которые требуют структур данных. Функции как map и grep может ожидать, также.

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

8
ответ дан Michael Carman 1 August 2013 в 13:47
поделиться

Это - единственная деталь, не полный ответ на Ваш вопрос, но для меня, метка кого-то, кто действительно стал ориентированным на Perl, является кем-то, кто заменяет эту идиому:

for (my $i = 0; $i < @a; $i++)
{
  &do_something_with($array[$i]);
}

с этой идиомой:

foreach my $a (@array)
{
  &do_something_with($a);
}

Преподают им списки как списки, не так же, как массивы. Преподавайте потрясающие структуры данных. Преподавайте списки, хеши, списки хешей, хешей списков, хешей хешей. Это - то, где самый большой шаг в питании входит по большинству стандартных языков со строгим контролем типов. (Иронически в магазине Java я присоединился в этом году, мы бросаем вокруг тонн arbitarily глубоко вложенных структур HashMap. Слишком многие, на самом деле; я - приведение доводов в пользу того в пользу выполнения немного меньше из него! Но в Perl, этот вид вещи жизненно важен.)

2
ответ дан skiphoppy 1 August 2013 в 13:47
поделиться
  • 1
    Хорошее объяснение, но существует другое решение: использование анонимных типов (см. Cadrell0' s ответ) – Julien Ch. 9 August 2012 в 13:25

Я думаю, что "приложение-приманка" Perl CPAN †¦

Типичные кавычки после просмотра CPAN впервые:

"У Вас есть библиотека для ЧТО ?"
" Искореняют HTML , должно быть лучшее имя функции когда-либо!"
"Вы можете подводить итог текст в Perl?"

, Как только программисты видят, как легкий должен сделать твердые вещи, они продаются.

Тогда можно показать им perldoc и Camel.

14
ответ дан daxim 1 August 2013 в 13:47
поделиться

Я владею и справляюсь Обучение Perl Австралия . Я преподавал Perl в течение приблизительно восьми лет и информатику больше десятилетия. У меня есть твердые мнения о не только Perl, но также и об обучении и представлении в целом. Я записал сотни страниц текста о Perl - который я не буду повторять здесь - поэтому, что я собираюсь дать Вам, не совет относительно обучающего Perl; это - метасовет вместо этого.

Во-первых, если Ваше время и бюджет позволяют, рассматривают отправку Вашего сотрудника на профессиональном учебном курсе Perl. Специализированные курсы имеют преимущество, что они не идут с прерываниями работы, они не идут с политикой рабочего места, и они делают , идут с кем-то, кто очень знаком с людьми трудностей, имеют при изучении Perl. Удостоверьтесь, что у Вас есть тренер, который знает их материал и является активным членом сообщества Perl; это означает, что они должны быть в состоянии ответить на любой вопрос, брошенный в них или направить корреспондента к соответствующей ссылке, где они могут узнать больше. Да, я выполняю бизнес обучения Perl, таким образом, я в большой степени самоуверен здесь.

, Если по любой причине Вы не можете пойти со специализированным курсом, затем получите книгу, которую это специально предназначено, чтобы преподавать людям, как программировать в Perl и обходе через это. Легко пропустить вещи или попытаться представить вещи в неправильном порядке или (не дай бог) преподавать дурные привычки, и все те могут сделать Вашу жизнь трудной. Часто люди, пишущие книги, разработанные для обучения Perl, являются теми же людьми, у которых есть успешные компании обучения Perl. Если бы Вы хотите купить книгу, я рекомендовал бы последнюю версию Изучение Perl. Если бы Вы хотите загрузить книгу, я рекомендовал бы захватить примечания хода Perl Программирования от Обучение Perl веб-сайт Австралии .

Обе из этих книг идут с упражнениями, и это приносит мне к моей последней части метасовета. Удостоверьтесь любой, кто узнает, что Perl делает упражнения . Очень легко, когда осваивание любого нового навыка к думает , Вы знаете то, что продолжается, но узнайте, что при проведении в жизнь вещей это более твердо, чем это смотрит. Это особенно имеет место с Perl, где концепции программирования как "контекст" могут применяться, которые редки на других языках. Обычно упражнения специально предназначены, чтобы преподавать определенный навык или выделить определенную ловушку; понимание этих вещей во время изучения намного легче, чем понимание их накануне крайнего срока проекта.

11
ответ дан Konerak 1 August 2013 в 13:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: