Что такое точно Попугай?

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

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

24
задан Seki 11 June 2015 в 12:01
поделиться

6 ответов

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

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

36
ответ дан brian d foy 28 November 2019 в 22:19
поделиться

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

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

21
ответ дан brian d foy 28 November 2019 в 22:19
поделиться

Попугай является интерпретатором байт-кода (возможно с JIT на будущем этапе). Думайте Java и его виртуальная машина, за исключением того, что Java (в данный момент) более приспособлен к статическим языкам, и Попугай приспособлен к динамическим языкам с начала.

Также см. превосходный ответ Cody! Наиболее рекомендуемый.

13
ответ дан Chris Jester-Young 28 November 2019 в 22:19
поделиться

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

В контексте виртуальной машины это означает, что тип переменной не известен во время компиляции. На "статических" языках тип (или по крайней мере родительский класс его) известен во время компиляции, и много оптимизации основываются на том знании.

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

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

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

8
ответ дан moritz 28 November 2019 в 22:19
поделиться

Вот Официальный Wiki Попугая.

можно найти много информации и ссылок там.

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

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

Попугай VM также обеспечит, другие языки под покрытиями поддерживают для многих мощный новый Perl 6 функций (посмотрите Официальный Perl 6 Wiki для большего количества информации Perl 6).

Попугай обеспечит совместимость между модулями отличающихся языков, так, чтобы, например, другие языки могли использовать в своих интересах то, что станет огромной версией Perl 6 CPAN (обширный архив модуля Perl 5, к которому Perl 6 будет в состоянии получить доступ через предстоящий Perl 5.12).

2
ответ дан Conrad Schneiker 28 November 2019 в 22:19
поделиться

Честно, я не знал, что это было настолько большим из соглашения. Это проделало длинный путь, но просто не видит много использования. Основной выходной язык должен все же действительно прибыть и потерял огромную долю завоеванного внимания среди промышленных профессионалов. Между тем другие решения как.Net и проекты как Jython показывают нам, что здесь-и-теперь может сбить любую воспринятую шумиху.

1
ответ дан ironfroggy 28 November 2019 в 22:19
поделиться
Другие вопросы по тегам:

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