Что я должен преподавать начинающему программисту Perl?
Я собираюсь потратить 30 минут на обучение Perl опытному программисту. Лучший способ изучить Perl - это написать код. В дополнение к CPAN, что бы вы продемонстрировали программисту, чтобы они поняли выразительность Perl, объем функциональности, предоставляемый CPAN, сохраняя при этом все чистое и аккуратное, чтобы они уходили удобно с языком? Я сохраню сложный материал еще на один день.
use warnings;
use strict;
# use A_CPAN_LIB;
sub example_func1 {
# use the CPAN lib or demonstrate some basic feature of Perl
}
example_func1();
# ...
__END__
Вот что я придумал...
Начало работы
Верьте или нет, страницы руководства. Хорошо, мы просто используем perldoc вместо Windows.
Страницы perldoc (или man-страницы на Unix/Mac) отлично подходят для Perl. Вы можете ввести man perl или perldoc perl
perldoc perl; # Покажите обзор и десятки учебников; man perl - то же самое.
perldoc perlintro; # Perl для новичков; человек perlintro
perldoc perlrequick; # Пример Perl regex tutoral
perldoc perlfunc; # Показывает встроенные функции Perl
perldoc perlre; # Больше регулярных выражений Perl.
CPAN
На сайте библиотеки CPL есть тысячи библиотек.
perl -MCPAN -e 'установить DateTime'
perldoc также работает для установленных модулей: модуль perldoc
perldoc DateTime
perldoc DBI; # API базы данных. Если это не работает, установите его:
perl -MCPAN -e 'установить DBI'
Рекомендуемые модули
perl -MCPAN -e 'установить Moose'; # Perl делает ООП
perldoc Moose; # Расскажи мне больше о лосях
perl -MCPAN -e 'установить CGI'; # Быстрые и грязные веб-страницы
perl -MCPAN -e 'установить Catalyst'; # Большая веб-структура. Иногда возникают проблемы при установке. Google - ваш друг
perl -MCPAN -e 'установить CGI:: Приложение'; # Еще одна веб-структура
perldoc CGI:: Application; # Быстро взгляните на документы
Немного Q & A.
В: Почему я должен использовать Perl вместо Ruby или Python?
A: Больше людей используют Perl. Для Perl существует больше библиотек (путь больше). Perl - действительно отличный GTD-язык.
В: Почему люди ненавидят Perl?
A: Вы можете сделать некоторые уродливые вещи с этим. Помните использование предупреждений; использовать строго; во всем вашем коде. Вы можете проверить свой код перед его запуском. perl -c hello.pl
Темы Perl
Использование Perl с базами данных
http://www.perl.com/pub/a/1999/10/DBI.html
Использование Perl для веб-разработки
http://www.catalystframework.org
OO Perl
http://www.iinteractive.com/moose
Perl 1-Liners
http://www.perlmonks.org/?node_id=470397
http://sial.org/howto/perl/one-liner
Другие учебники
http://perlmonks.org/index.pl?node=Tutorials
Книги
Есть десятки.
http://www.amazon.com/s/ref=nb_ss_gw?url=search-alias%3Dstripbooks&field-keywords=perl&x=0&y=0
Сайты
Perlmonks
Perl.org
Pleac
qaru.site/info/12396/...
Вопросы CPAN
Статьи Рэндалла Шварца
Получение справки
Форум Perl Nabble
Каналы IRC: freenode, irc.perl.org. Есть несколько:
ИРЦ://irc.perl.org/perl
ИРЦ://irc.perl.org/catalyst
ИРЦ://irc.freenode.net/modperl
ИРЦ://irc.perl.org/perl6
Ответы
Ответ 1
Мы написали целую книгу о том, что называется Learning Perl. Ознакомьтесь с оглавлением.
Эта книга является продуктом обучения людей Perl с 1995 года. Она не ориентирована на какое-либо конкретное приложение и показывает людям части Perl, которые они будут использовать для 80% своего программирования на Perl. Мы обновили его для Perl 5.10 и включили разделы об использовании CPAN.
Удачи,:)
Ответ 2
Perl имеет две вещи, которые могут быть чуждыми даже опытным программистам, поэтому их следует упомянуть на раннем этапе, чтобы они не убежали от крика.
Контекст: почти каждая функция в Perl имеет 2 поведения. Когда вызывается в "скалярном контексте", и он делает одно, когда вызывается в "контексте списка", он делает что-то другое вместо этого. Это может показаться странным и странным (и это в машинных языках), но является просто понятием естественного языка "сингулярного" и "множественного", применяемого к языку программирования.
Переменные: Perl имеет 2 совершенно разные и отдельные системы переменных. Лексические переменные (my) и переменные пакета (наши). Лексические переменные являются "нормальными", если вы использовали большинство языков программирования. Переменные пакета (т.е. Динамические переменные) странны, если вы не использовали что-то вроде Lisp. "Всегда предпочитайте лексические переменные над переменными пакета, за исключением случаев, когда вы не можете".
Ответ 3
Определенно показать им, как легко использовать регулярные выражения в Perl.
Ответ 4
Это в основном задача, ориентированная на задачи.
Если они должны использовать его для разбора, покажите им, как легко манипулировать STDIN и файловым вводом/выводом.
Если они собираются использовать его для баз данных, покажите им, как получить hashrefs из результатов запроса, и это должно их поразить.
Perl обычно имеет какой-то способ сделать практически любую задачу сверхбыстрой. Выберите задачу, которую они должны выполнить.
Но определенно научите их использовать мои и локальные. Подчеркните важность моего и того, что сделает их опыт более счастливым.
Ответ 5
Опытный программист или нет, через 30 минут вы не можете притворяться, что преподаете что-нибудь, не говоря уже о Perl. В лучшем случае вы можете попытаться просветить его с помощью некоторых классных однострочных линий (для сравнения используйте их полностью раздутый аналог Java).
Ответ 6
Сначала я расскажу о списках и хэшах. (Патологически Eclectlic Disbish Lister, помните.) Покажите ему, насколько красивее foreach, чем C-стиль для.
Если он исходит из C/С++, было бы хорошо отнести его к http://perldoc.perl.org/perltrap.html или 'perldoc perltrap.' Он содержит наиболее очевидные различия, о которых нужно знать.
Ответ 7
Просто мой 2c, но по отношению к CPAN, как насчет того, чтобы вы поставили перед ними проблему расщепления английского текста на предложения?
Сначала это кажется простым: предложение представляет собой строку с периодом в конце.
Но через мгновение подумал, что программист найдет всевозможные сложности, которые возникают. Периоды могут быть посередине, если есть десятичные числа или аббревиатуры; предложения могут заканчиваться другими вещами, такими как "?", "!". или "..."; "период, за которым следует пробел", не помогает ни потому, что что касается EOF?
Короче говоря, когда дело доходит до Perl, кто-то еще подумал обо всем в этом списке и многом другом. Таким образом, вы используете Lingua::EN::Sentence.
Ответ 8
Если hes опытный программист, ему может понравиться Smart Comments, POD, закрытия, переключатель -d:DProf
и dprofpp
, однострочные, Perl Critic, Moose, __DATA__
или map. (На самом деле это сумасшедшая смесь.) Ид объясняет ему с самого начала, что Perl - это язык с большим количеством магии, но он может выбирать, когда придерживаться простого кода и когда рисовать палочку. Опытные программисты не боятся выбора: -)
Ответ 9
Я согласен с некоторыми другими комментаторами в том, что это действительно зависит от типа задачи, для которой используется Perl. Является ли этот человек системным администратором Windows? Затем я буду использовать WMI с Perl (скриптомат будет хорошим ресурсом здесь).
Я бы взял экземпляр "Perl Cookbook" Oreilley и нашел там интересные сюжеты. Вот ссылка на книгу здесь: текст ссылки
Одна из моих любимых вещей в Perl - это то, насколько легко сравнивать списки, искать союзы, пересечения или различия в уникальных списках (рецепт 4.9 в Perl Cookbook). Помогает вам оценить силу Perl.
Ответ 10
Это зависит от того, какое программирование имеет этот "опытный программист".
Если они много программируют оболочку, они, вероятно, будут впечатлены Perl в своей супер-awk-личности - сделайте некоторое практическое извлечение и отчетность с помощью регулярных выражений и шаблонов.
Если они больше похожи на программистов на C, которые любят работать со сложными структурами данных, покажите им, как легко вы можете взломать хэш хэшей и как быстро выполняется результирующий код.
... и т.д.
Ответ 11
Идея, которая появилась у меня в голове, заключалась в том, чтобы они передавали информацию из одного формата в другой. Например, получение данных xml
и перенос их на JSON
для использования на веб-странице.
cpan JSON XML::Simple
use strict;
use warnings;
use JSON;
use XML::Simple;
my $data;
{
open( my $file, '<', 'filename.xml' ) or die;
$data = XMLin($file);
close $file;
}
{
open( my $file, '>', 'filename.json' ) or die;
print $file to_json( $data );
close $file;
}