Что я должен преподавать начинающему программисту Perl? [закрытый]

В Java все переменные, которые вы объявляете, на самом деле являются «ссылками» на объекты (или примитивы), а не самими объектами.

При попытке выполнить один метод объекта , ссылка просит живой объект выполнить этот метод. Но если ссылка ссылается на NULL (ничего, нуль, void, nada), то нет способа, которым метод будет выполнен. Тогда runtime сообщит вам об этом, выбросив исключение NullPointerException.

Ваша ссылка «указывает» на нуль, таким образом, «Null -> Pointer».

Объект живет в памяти виртуальной машины пространство и единственный способ доступа к нему - использовать ссылки this. Возьмем этот пример:

public class Some {
    private int id;
    public int getId(){
        return this.id;
    }
    public setId( int newId ) {
        this.id = newId;
    }
}

И в другом месте вашего кода:

Some reference = new Some();    // Point to a new object of type Some()
Some otherReference = null;     // Initiallly this points to NULL

reference.setId( 1 );           // Execute setId method, now private var id is 1

System.out.println( reference.getId() ); // Prints 1 to the console

otherReference = reference      // Now they both point to the only object.

reference = null;               // "reference" now point to null.

// But "otherReference" still point to the "real" object so this print 1 too...
System.out.println( otherReference.getId() );

// Guess what will happen
System.out.println( reference.getId() ); // :S Throws NullPointerException because "reference" is pointing to NULL remember...

Это важно знать - когда больше нет ссылок на объект (в пример выше, когда reference и otherReference оба указывают на null), тогда объект «недоступен». Мы не можем работать с ним, поэтому этот объект готов к сбору мусора, и в какой-то момент VM освободит память, используемую этим объектом, и выделит другую.

16
задан Community 23 May 2017 в 12:16
поделиться

11 ответов

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

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

Удача:)

35
ответ дан 30 November 2019 в 15:08
поделиться

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

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

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

13
ответ дан 30 November 2019 в 15:08
поделиться

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

6
ответ дан 30 November 2019 в 15:08
поделиться

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

, Если они должны использовать его для парсинга, покажите им, как легкое управление STDIN и файл i/o.

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

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

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

4
ответ дан 30 November 2019 в 15:08
поделиться

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

3
ответ дан 30 November 2019 в 15:08
поделиться

Я покрыл бы списки и хеширую сначала. (Патологически Eclectlic Rubbish Lister, помнить.) Показывают ему, для какого количества более симпатичный foreach, чем C-стиль.

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

3
ответ дан 30 November 2019 в 15:08
поделиться

Просто мои 2c, но относительно CPAN, как насчет Вас излагают их проблема разделения английского текста в предложения?

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

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

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

3
ответ дан 30 November 2019 в 15:08
поделиться

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

2
ответ дан 30 November 2019 в 15:08
поделиться

Идея, которая появилась в мою голову, состояла в том, чтобы сделать, чтобы они передали информацию от одного формата до другого. Например, добираясь 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;
}
2
ответ дан 30 November 2019 в 15:08
поделиться

Я соглашаюсь с некоторыми из других комментаторов, что это действительно зависит от типа задачи, для которой используется Perl. Действительно ли этот человек является системным администратором Windows? Тогда я покрыл бы WMI использования от Perl (scriptomatic, будет хороший ресурс здесь).

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

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

1
ответ дан 30 November 2019 в 15:08
поделиться

Это зависит от того, в каком программировании этот 'Опытный программист' испытан.

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

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

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

1
ответ дан 30 November 2019 в 15:08
поделиться
Другие вопросы по тегам:

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