Чему я должен научить начинающего программиста 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__


Here's what I came up with...

Когда начать

Хотите верьте, хотите нет, но страницы руководства. Хорошо, мы просто будем использовать perldoc вместо этого, чтобы быть дружественным к Windows.

Страницы perldoc (или страницы руководства в Unix / Mac) отлично подходят для Perl. Вы можете ввести man perl или perldoc perl

Perldoc Perl; # Показать обзор и десятки учебных пособий; man perl такой же.

Perldoc Perlintro; # Введение в Perl для начинающих; человек perlintro
Perldoc Perlrequick; # Пример регулярного выражения Perl tutoral

Perldoc Perlfunc; # Показывает встроенные функции Perl Perldoc Perlre; # Еще Perl regex.

CPAN

На сайте библиотеки Perl CPAN.
есть тысячи библиотек. perl -MCPAN -e 'установить DateTime'

perldoc работает и с установленными модулями: perldoc module

perldoc DateTime
perldoc DBI; # API базы данных. Если это не сработает, установите его:
         perl -MCPAN -e 'установить DBI'

Рекомендуемые модули

perl -MCPAN -e 'установить Moose'; # Perl делает OOP
Perldoc Moose; # Расскажите подробнее о Moose
perl -MCPAN -e 'установить CGI'; # Быстрые и грязные веб-страницы
perl -MCPAN -e 'установить Catalyst'; # Большой веб-фреймворк. Иногда возникают проблемы с установкой. Google - ваш друг
perl -MCPAN -e 'установить CGI :: Application'; # Другой веб-фреймворк
perldoc CGI :: Приложение; # Взгляните на docs

Немного вопросов и ответов.

В: Почему я должен использовать Perl вместо Ruby или Python?
О: Все больше людей используют Perl. Для Perl есть больше библиотек (намного больше). Perl - действительно отличный язык GTD.
В: Почему люди ненавидят Perl?
A: Вы можете делать с ним некрасивые вещи. Не забывайте использовать предупреждения; используйте строгий; во всем вашем коде. Вы можете проверить свой код перед его запуском. perl -c привет.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-слойный

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
Скрытые возможности Perl в StackOverFlow
CPAN FAQ
Статьи Рэндалла Шварца


Получать помощь

Форум о Perl Nabble
Каналы IRC: freenode, irc.perl.org. Их несколько:

irc: //irc.perl.org/perl
irc: //irc.perl.org/catalyst
irc: //irc.freenode.net/modperl
irc: //irc.perl.org/perl6

А? Уходите с комфортом -> Perl <- через -> 30 минут <-?

Federico A. Ramponi 26.11.2008 10:34

@Pax - язвительные комментарии не способствуют развитию разговора. Если бы вы написали это, я уверен, вы получили бы более чем несколько отрицательных голосов за свои проблемы, и это вполне оправданно.

converter42 28.11.2008 23:32

@Pax: это совершенно несправедливое сравнение. Изучение Python не займет целых 30 минут! ;-) Я бы обязательно сказал неофиту Perl попрощаться с буквами на его клавишах Shift. :-П

Steven A. Lowe 08.12.2008 07:58

@ converter42 - я искренне рад, что был опубликовал в качестве комментария. Я ожидал увидеть ответ в конце списка с -4 или около того, который говорит о том же самом.

Chris Lutz 07.09.2009 01:32
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
16
4
1 914
11
Перейти к ответу Данный вопрос помечен как решенный

Ответы 11

Определенно покажите им, как легко использовать регулярные выражения в Perl.

И теперь у вас две проблемы. :-)

paxdiablo 26.11.2008 09:53

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

Adam Bellaire 26.11.2008 15:55

В Perl 6 они первоклассные граждане. В Perl 5 они - граждане второго сорта. На большинстве других языков они вовсе не граждане, а просто рабы.

Leon Timmermans 26.11.2008 19:09

Если они уже знакомы с регулярными выражениями, да. Если нет, то обучение регулярному выражению может легко заполнить 30 минут (и многое другое) само по себе, вообще не углубляясь в Perl.

Dave Sherohman 27.11.2008 09:53

Это в основном вопрос, ориентированный на задачу.

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

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

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

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

Если он опытный программист, ему могут понравиться Умные комментарии, POD, закрытие, переключатель -d:DProf и dprofpp, однострочные, Perl Critic, лось, __DATA__ или карта. (Это действительно безумная смесь.) Я с самого начала объяснил ему, что Perl - это язык с большим количеством магии, но что он волен выбирать, когда придерживаться простого кода, а когда рисовать волшебную палочку. Опытные программисты не боятся выбора :-)

Опытный программист или нет, за 30 минут ты не сможешь ничему научить, не говоря уже о Perl. В лучшем случае вы можете попытаться просветить его какими-нибудь классными однострочниками (для сравнения предоставьте их полноразмерный Java-аналог).

Ответ принят как подходящий

Мы написали целую книгу об этом под названием Изучение Perl. Ознакомьтесь с оглавлением.

Эта книга является продуктом обучения людей Perl с 1995 года. Она не предназначена для какого-либо конкретного приложения и показывает людям части Perl, которые они будут использовать для 80% своего программирования на Perl. Мы обновили его для Perl 5.10 и добавили разделы по использованию CPAN.

Удачи, :)

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

Drew Stephens 26.08.2009 03:58

Я бы сначала рассмотрел списки и хеши. (Запомните, список патологически эклектичного мусора.) Покажите ему, насколько foreach для него красивее, чем стиль C.

Если он пришел с C / C++, было бы хорошо порекомендовать ему http://perldoc.perl.org/perltrap.html или perldoc perltrap. Он содержит наиболее очевидные различия, о которых следует знать.

Я согласен с некоторыми другими комментаторами, что это действительно зависит от типа задачи, для которой используется Perl. Этот человек является системным администратором Windows? Затем я расскажу об использовании WMI из Perl (здесь вам может быть полезен скриптоматик).

Я бы взял копию «Поваренной книги Perl» Орейли и нашел там несколько интересных тем. Вот ссылка на книгу здесь: текст ссылки

Одна из моих любимых вещей в Perl - это то, насколько легко сравнивать списки, искать объединения, пересечения или различия в уникальных списках (рецепт 4.9 в Perl Cookbook). Помогает вам оценить мощь Perl.

Это зависит от того, в каком программировании разбирается этот «Опытный программист».

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

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

... и так далее.

Идея, которая пришла мне в голову, заключалась в том, чтобы они передавали информацию из одного формата в другой. Например, получение данных 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;
}

Стилистический комментарий: вы всегда должны «использовать JSON :: Any;», а не «использовать JSON;» :)

Ether 07.09.2009 01:06

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

Контекст: почти каждая функция в Perl имеет 2 поведения. Когда он вызывается в «скалярном контексте» и выполняет одно действие, при вызове в «контексте списка» он вместо этого делает что-то другое. Это может показаться странным и странным (и это так в машинных языках), но это просто естественная языковая концепция «единственного» и «множественного числа», применяемая к языку программирования.

Переменные: Perl имеет 2 совершенно разные и отдельные системы переменных. Лексические переменные (мои) и переменные пакета (наши). Лексические переменные считаются «нормальными», если вы использовали практически любой язык программирования. Переменные пакета (то есть динамические переменные) выглядят странно, если вы не использовали что-то вроде Lisp. «Всегда отдавайте предпочтение лексическим переменным, а не пакетным переменным, кроме случаев, когда вы не можете этого сделать».

Просто мой 2c, но в отношении CPAN, как насчет того, чтобы вы поставили им задачу разбиения английского текста на предложения?

Сначала это кажется простым: предложение - это строка с точкой в ​​конце.

Но после минутного размышления программист обнаружит, что возникают всевозможные сложности. Точки могут быть посередине, если есть десятичные числа или сокращения; предложения могут заканчиваться другими словами, например "?", "!" или же "..."; «точка, за которой следует пробел» тоже не помогает, потому что как насчет EOF?

Короче говоря, когда дело доходит до Perl, кто-то еще подумал обо всем в этом списке и многом другом. Итак, вы используете Lingua :: EN :: Приговор.

Другие вопросы по теме