PHP или PERL

PHP
47
Нейтральная
сторона
9
PERL
23
Это веб-программирование
Прежде чем писать комментарии или выбрать сторону вы должны авторизироваться!
Это непонятно как им стало

17-04-2009 12:57 0

perl - это недоязык!

13 комментариев
human 17-04-2009 13:07 -1

pendostan, Точно, и PHP тоже, Delphi его мать навсегда!)))

username 17-04-2009 13:16 +1

pendostan, А агрументы где? Понятно, на большее ума не хватает.

scratch613 17-04-2009 13:40 +1

pendostan, Собственно, у PHP одно преимущество -- любой идиот может за 5 минут написать на нем Hello World.
(именно поэтому он и стал таким популярным)

temy4 17-04-2009 13:41 +1

pendostan, не надо так сразу прямо и "недоязык". Перл определенно хорош, но не для веб-программирования. Для системного например.

scratch613 17-04-2009 13:42 0

temy4, Почему же тогда одни из наиболее нагруженных проектов делаются на перле (или с использованием перла)?

cartman63 17-04-2009 13:43 0

scratch613, а в перле как будто нет, там нужно с бубном попрыгать

temy4 17-04-2009 14:10 0

scratch613, Пруффлинк с этими нагруженными. Если ты про твиттер и прочие - то разочарую: не такой уж он и нагруженный, да и к тому же на питоне :) И скорость такки предлогаю сравнить

scratch613 17-04-2009 14:51 0

temy4, LiveJournal.

scratch613 17-04-2009 14:53 0

cartman63, А в перле нужно разочек доку прочитать. Этого достаточно для большинства задач.

temy4 17-04-2009 18:51 0

scratch613, LiveJournal

И Все? :)

scratch613 18-04-2009 04:01 0

temy4, Хм... Amazon Web Services вас устроит?

temy4 18-04-2009 15:28 0

scratch613, Да я о том что PHP является преволирующим над Perl в Web. уж с этим-то не поспорить?

scratch613 24-04-2009 14:40 0

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

17-04-2009 12:59 +1

Хоть семантика вменяемая. А у перла отвал башки.

2 комментария
unlexx 17-04-2009 13:06 0

gutwulf, хоть что то у php вменяемо ^)

scratch613 17-04-2009 13:42 +1

gutwulf, Наоборот. Взять, к примеру, семантику названия переменных.
В перле все понятно -- $ это скаляр, @ это array, % это хэш.
А в PHP? Зачем для каждой переменной писать доллар? Только потому что на момент создания парсера программисты не могли придумать, как отличать переменную от константы?

17-04-2009 13:10 +3

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

4 комментария
unlexx 17-04-2009 13:15 +2

cartman63, именно так Perl это полноценный язык с самобытной идеологией а не просто надстройка к cgi веб сервера :)

scratch613 17-04-2009 13:46 +3

cartman63, Не было бы перла -- не было бы и PHP -- как известно, первая версия PHP была написана на перле.

hades 17-04-2009 23:11 +1

cartman63, А PHP создавалась как надстройка над Perl для создания домашних страничек.

scratch613 18-04-2009 04:03 +2

hades, Так что считаем PHP очередным "CPAN-модулем" :)

18-04-2009 12:17 0

Таки непонятно чем это Perl мощнее PHP?

4 комментария
antoniok 18-04-2009 12:19 0

barbushin, Субъективно его принято считать более трушным и "настоящим" ЯП. Но я тоже за PHP =)

barbushin 18-04-2009 12:23 +1

antoniok, Я достаточно програмил на Perl-е, чтобы успеть его возненавидеть. Как скриптовый язык он ещё ладно, но не дай вам Бог на нём крупный проект или CMS писать!!!

antoniok 18-04-2009 12:28 0

barbushin, а ведь пишут же. YaBB, например

barbushin 18-04-2009 12:34 0

antoniok, Мои самые искренние соболезнования.

12-05-2009 15:53 0

Больше возможностей

1 комментарий
username 12-05-2009 17:46 0

SiPlus, Перечислите возможности, которые есть в PHP и нет в Perl.

24-05-2009 20:25 -1

Удобный

0 комментариев
23-09-2009 16:07 0

Все что нужно для web программинга, php+mysql+ajax и любой проект на нем воплотить можно!

3 комментария
artli.oneid.… 05-12-2010 11:45 0

Macintosh, apache+mysql+perl, и вперед!

А ajax непонятно зачем приплели.

Nekit1234007 05-12-2010 15:51 0

artli.oneid.ru, You do it wrong. nginx+php+mysql!

artli.oneid.… 05-12-2010 15:54 0

Nekit1234007, nginx

Это уже другой вар.

php

Почему PHP?

17-04-2009 13:05 +3

http://habrahabr.ru/blogs/xkcd_ru/47360/
---
все дискуссию можно закрывать :)

3 комментария
evgikon 17-04-2009 14:19 +2

unlexx, ссылка на сомнительный ресурс :) с осмнительной картинкой с фалическим символом на ней :) , отражающей сомнительное мнение школьнега :) - аргумент не засчитан :)

maugli 17-04-2009 18:54 0

evgikon, Я бы не сказал что автор xkcd совсем уж школьник. Да хуй бы с ним. Он далеко не школьник.

svyat 17-04-2009 19:10 0

unlexx, "ссылка на сомнительный ресурс" - ща заплачу LOL. это лучший (да, пожалуй и единственный)коллективный it блог рунета.

17-04-2009 13:39 +3

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

0 комментариев
17-04-2009 22:29 +2

Perl - это С^2. Вся логичность и красота синтаксиса С полностью передана и дополнена в нем. Выбор этот не для тех кто ищет легких путей.

1 комментарий
scratch613 18-04-2009 04:02 +1

ivan0x32, И при этом there are many ways to do that.

18-04-2009 10:23 +4

Далеко не каждому дано осилить что-либо, кроме php :)

2 комментария
bigshark 22-04-2009 05:42 +1

panshdw, Далеко не каждому дано осилить PHP на отлично.

Откуда такое предвзятое отношение к PHP как к языку программирования?

scratch613 24-04-2009 14:41 0

bigshark, Он неудобный. Поверьте мне, я уже четыре года пишу на PHP -- и после недели изучения перла я уже ненавижу PHP. :)

18-04-2009 12:28 0

Чрезвычайно гибкий и мощный язык программирования. Одно то, что он разрабатывался лингвистом о многом говорит.
Его не понимают только те, кто до него не дорос (да, это наброс J).

2 комментария
antoniok 18-04-2009 12:29 +2

temoon, Понимают-не понимают, а синтаксис мозгодробителен. И с этим не поспоришь.

sanovskiy 03-07-2009 16:05 0

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

05-12-2010 03:25 0

Пацаны, не сидите на PHP, за его употребление студента от занятий отстранили: habrahabr.ru/blogs/php/57000/

0 комментариев
05-12-2010 11:39 0

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

0 комментариев
27-05-2015 02:48 +1

Эх. Не охота обижать PHP и PHP-еров, но я могу невольно это сделать. Прошу прощения, если кого-то обижу.

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

Про ссылки:
в Перле, я всегда знаю, я работаю с копией чего-то или я работаю всего лишь со ссылкой на что-то.

например, $a[3] - так я обращаюсь к элементу массива, а так $a->[3] - а так я обращаюсь к элементу массива, на который указывает ссылка $a.

всего лишь из-за стрелочки -> я понимаю, я работаю с копией объекта или нет. Не будет нежданчика, когда я одной переменной присвою другую, потом поменяю какую-то переменную, и поменяются обе. Я буду знать из-за синтаксиса языка с чем я работаю - с копией или нет.

отсутствие типа bool
казалось бы в чём же здесь преимущество?
я разъясню ниже, а пока скажу:
в Перле за ложь считается:
1) пустая строка
2) число 0
3) строка с числом 0
4) undef
5) всё что приводится к вышестоящему

всё остальное - истина.

Вот так создатель языка решил, и всё тут.

в результате, мы не имеем чахорду в таблице истинности вроде этого:
php.net/manual/en/types.comparisons.php
или этого:
dorey.github.io/java_script-Equality-Tabl ...

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


а в Перле просто:
рассмотрим, как понимать строку вида:
if (@a) {

@a - массив.
оператор if - значит @a участвует в скалярном контексте.
(В Перле есть два контекста - списочный и скалярный, кстати, ни в одном другом языке такого не видел).
А в скалярном контексте - массив возвращает количество элементов
это и обрабатывает if.

то есть если массив @a пустой, то if не выполнится.

в Перле мало нежданчиков!!

В Перле сделано минимум лишнего.

скажем есть модули - просто набор функций.
и всего лишь одной командой bless, модуль превращается уже в класс.

P.S. Минус перла в том, что он допускает писать трудночитаемый код.

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

4 комментария
fhfh 27-05-2015 21:28 +1

OlegTar, массив возвращает количество элементов массива.

в Перле мало нежданчиков

ага ага

opera.rulez 28-05-2015 00:17 0

OlegTar, Плюс за выдержку. А теперь будем разбирать.

> Видимость переменной в PHP - глобальная либо функция.

Всё верно. Объявления переменных в блоке в PHP сильно не хватает. Но есть костыль: можно использовать замыкания (PHP 5.3+).

ideone.com/Mokv0u

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

Жалко, что нельзя писать в одну строчку, как в JS, сразу вызывая объявленное замыкание.

> отсутствие типа bool

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

> в Перле мало нежданчиков!!
А это утверждение уже выглядит спорно в силу следующего: «Минус перла в том, что он допускает писать трудночитаемый код».

> В Перле сделано минимум лишнего.
И с этим тоже можно поспорить.

Я бы хотел узнать поподробнее про следующее:
«например, $a[3] - так я обращаюсь к элементу массива, а так $a->[3] - а так я обращаюсь к элементу массива, на который указывает ссылка $a.» Поделитесь примером кода, использующим обе конструкции, чтобы всем, кто плохо знаком с Перлом, было сразу понятно.

OlegTar 28-05-2015 23:15 +1

opera.rulez, В качестве примера ссылок приведу такой пример.
Передаем массив по значению

Пример1


А теперь передаем массив по ссылке

Пример2


почему в первом методе
my @a = @_;
а во втором
my $a = shift;

my @a = @_; все параметры метода сохраняем в массив.
дело в том, что в перле
test(@a); эквивалентно test(1,2,3);
если надо несколько массивов передать, то тогда придётся передавать их все по ссылке.
test(\@a, \@b, \@c);

\ - операция получения ссылки.

my $a = shift; - берем первый параметр.

Допустим мы хотим передать несколько массивов, но не хотим в методе, каждый раз стрелочки писать, и нам не нужно, чтобы значение исходных массивов менялось,
тогда так можно:

test(\@a, \@b, \@c);
sub test {
my @a = @{$_[0]};
my @b = @{$_[1]};
my @c = @{$_[2]};
}


@{ } - операция разыменовыания ссылки в массив
%{ } - операция разыменовыания ссылки в хэш

$_[N] - обращение к N-ому параметру аргументов.
(@{shift} здесь не работает)

Также к примеру на PHP если присвоить один объект другому, то будут две ссылки на один объект. Из синтаксиса неочевидно, что ты работаешь со ссылкой.

В перле объекты должны быть сами по себе ссылками, а из-за синтаксиса Перла всегда будет видно, что ты работаешь со ссылкой.

Обращение к свойству объекта в перле:
$obj->{property}; //-> стрелка указывает, что $obj это ссылка, со всеми вытекающими.

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

OlegTar 28-05-2015 23:27 +1

opera.rulez, > в Перле мало нежданчиков!!
А это утверждение уже выглядит спорно в силу следующего: «Минус перла в том, что он допускает писать трудночитаемый код».

Трудночитаемый код - это нежданчик от программиста, а не от Перла.

Да, к сожалению, Перл допускает писать трудночитаемый код.

Но с одной стороны это легко позволяет написать на нём быстро и коротко какой-нибудь однострочник прямо из консольной строки, который, к примеру, выдерает всех пользователей из /etc/passwd (пример от балды).

Но с другой стороны, кто-то может писать трудночитаемый код в продакешене... И считать это "мастерством".