Я знаю Perl 5. Каковы преимущества изучения Perl 6, а не перехода на Python? [закрыто]

В Unix вы должны использовать ядро ​​syscall, которое проверяет указатель и возвращает EFAULT, например:

#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <stdbool.h>

bool isPointerBad( void * p )
{
   int fh = open( p, 0, 0 );
   int e = errno;

   if ( -1 == fh && e == EFAULT )
   {
      printf( "bad pointer: %p\n", p );
      return true;
   }
   else if ( fh != -1 )
   {
      close( fh );
   }

   printf( "good pointer: %p\n", p );
   return false;
}

int main()
{
   int good = 4;
   isPointerBad( (void *)3 );
   isPointerBad( &good );
   isPointerBad( "/tmp/blah" );

   return 0;
}

return:

bad pointer: 0x3
good pointer: 0x7fff375fd49c
good pointer: 0x400793

Возможно, есть лучше использовать syscall, чем open () [возможно, доступ], так как есть вероятность, что это может привести к фактической кодовой программе создания файла и последующему закрытию.

23
задан Pat 5 November 2018 в 17:16
поделиться

7 ответов

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

единственное реальное преимущество состоит в том, если Вы переключаетесь с языка, Вы не знаете на язык, который Вы действительно знаете, в этом случае Ваша производительность, вероятно, повысится.

24
ответ дан Bryan Oakley 5 November 2018 в 17:16
поделиться

Python не имеет Соединения . На самом деле я думаю, что только Perl имеет Соединения до сих пор.:-)

13
ответ дан pi. 5 November 2018 в 17:16
поделиться

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

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

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

Примечание распространенность слов ласки в вышеупомянутом. Честно, это действительно собирается свестись к персональному предпочтению.

12
ответ дан Kirk Strauser 5 November 2018 в 17:16
поделиться

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

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

  • Вы назвали его "Perl5", но нет такого языка.: P
4
ответ дан Mr. Muskrat 5 November 2018 в 17:16
поделиться

Python имеет одно огромное преимущество: это реализовано, существует довольно стабильный компилятор для него.

Perl 6 является довольно призрачным языком, и еще где угодно почти достаточно стабильный для производства. Но это имеет ряд очень замечательных функций среди них: соединения, грамматики (да, можно записать полные синтаксические анализаторы с Perl 6 "regexes"), unicode обрабатывающий на уровне графемы, ленивых списках и мощных макросах.

В Вашем особом случае, когда Вы будете знать Perl 5, Вы познакомитесь с синтаксисом Perl 6 очень быстро.

Для более всестороннего списка того, что имеют замечательные функции Perl 6, см. FAQ.

5
ответ дан 2 revs, 2 users 90% 5 November 2018 в 17:16
поделиться

Perl обычно лучше, чем Python для быстрого лайнеры, особенно включите текст/регулярные выражения
http://novosial.org/perl/one-liner/

7
ответ дан Peter N. Steinmetz 5 November 2018 в 17:16
поделиться

У Python есть большое преимущество, так как он доступен сегодня в готовом для производства формате.

У Python есть Jython и IronPython, если вам нужно тесно работать с Java или .net clr.

Perl 6 имеет преимущества, основанные на тех же принципах, что и Perl (1-5); Если вам нравится Perl, вам понравится Perl 6 по тем же причинам. (Есть несколько способов сделать это и т. Д.)

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

Править : (2011) Это все еще прекрасное время для взлома внутреннего устройства Perl6, но теперь существует гораздо более зрелый, удобный дистрибутив Perl6, Rakudo Star . Если вы хотите использовать Perl6 сегодня, это отличный выбор.

4
ответ дан 29 November 2019 в 00:42
поделиться