О, и правда, я до конца не дочитал. Сразу предупреждать надо было. Но тем не менее суть особо не меняется. Контекст не важен, мы же синтаксис обсуждаем, а не изящность применения функциональных подходов в императивных языках. Это первый какой мне попался под руку пайтоновский код.
Если уж на то пошло, то за красоту синтаксиса. Красивее я встречал только у Руби(но с ним не сложились отношения). Ну а вот пайтон, возьму небольшой кусок и поставлю в комментарии к нему мои первые мысли об увиденном:
[ [[[[[ //Че за фигня? нафиг так делать?
( //Мдаа, множество пустых скобок без предваряющих конструкций — это супер читаемо.
(
p('Multiplications:'), //Функция? Методы объекта в сцепке? Хз.
doMult(4, 10),
l()
), //хммм, "," — это похоже на перечисление
( //А нет, похоже на разделитель. Блин, ";" логичнее
p(),
p('Fib:'),
и т.д.
Вот примерные размышления о пайтоне. РНР даже выглядит более зрело и законченно.
>> 1) даже в редакторе с подсветкой с $ более заметно. Ни в жизнь не поверю, что вы пишете код в Блокноте. — я так начинал. Принцип такой. Типа «тяжело в учении — легко в бою». Сейчас Блокнота у меня тупо нет ;) (есть gedit) но в работе использую исключительно NetBeans.
>> 2) опять же зависит от задачи. Но гораздо лучше, когда есть возможность, чем когда ее нет. Так что, вполне плюс.
1. Я же не навязываю кому-то что-то. — вот, как раз наоборот.
2. Не станете же вы спорить, что вне веба пхп удобнее, скажем, питона? — нет, не стану. РНР удобнее питона.
3. Почитаю на досуге. Честно.
4. Язык на котором работаешь, это чаще всего язык, который начал изучать сам по себе, не потому что по работе надо было. Иначе, значит не там работаешь.
5. тогда могу только посочувствовать — Ну сочувствуйте, я на РНР помимо работы и для души пишу. И мне очень это нравится. Я так релаксирую. Я получаю удовольствие. Воссоединяюсь с высшими силами, если угодно :)
Метафора красивая, но не совсем к месту. Насчет ядра. Почему? Синтаксис то менять не надо. Если даже что-то в ядре и менять, так это только будет php-cli касаться. Ничего кардинально это не поменяет. Я, говоря про фреймворки, имел в виду фреймворки написанные на самом РНР, причем тут ядро?
Мои 5 копеек насчет знака $:
1) Никаких мифов об удобстве — исключительно факты: визуально легко отличимы переменные от других ключевых слов. Особенно полезно при изучении чужого кода, где не держишь в голове имена всех переменных.
2) Есть еще великолепные возможности благодаря этому знаку, которые вы в меру ограниченности своего знакомства с РНР вряд ли знаете. Вот наглядный пример:
$a = «foo»;
$b = «bar»;
$c = $a($b); // Вызывает функцию с именем foo и параметром bar, т.е. $c=foo(«bar»); $d = $b->$a($c); //Вызывает метод foo объекта bar с параметром $c, т.е. $d = bar -> foo($c);
Очень часто такие методы достаточно удобны. Без всяких call_user_func
На любом языке можно писать коряво и на любом языке можно писать так, что заглядение просто. РНР, пайтон и ява не исключения (да что уж там, и на BrainFuck'e можно красиво и изящно реализовать решение задачи).
Вы уверены, что РНР это ошибка? Может ява это ошибка? или пайтон? или с#? или с++? или {любой ЯП} это ошибка? Личный выбор это личный выбор, а не выбор под действие наставлений «РНР — ошибка» из уст неизвестного евангелиста.
Не нравится — не пользуйтесь. Не надо наводить евангелизм пайтона и явы. И то и другое ничто не мешаетс знать вместе с РНР. А по улучшениям, помимо гоуту (я, пока что, недоумеваю зачем он), все пункты — это шаги вперед. И не надо принижать этого. Еще раз спрошу, ЧЕМ лично вас он обидел?
Зачем тогда критиковать то, чем не пользуетесь? Он вас чем-то обидел? Если нет, то зачем вообще обращать внимания на РНР? Развивается и пусть себе развивается. Рассуждения о том что на нем стоит делать, а что не стоит значимы только от людей которые на нем пишут.
Кстати, почему все упускают из вида РНР-фреймворки? Они предоставляют богатую функциональность приближающуюся (или уже приблизившуюся) к RoR. C# без фреймворка это тоже «голый язык». Исключительно фреймворк дает ему достойную функциональность. Так же и РНР с фреймворком (CI, Kohana или CakePHP — не важно) это очень мощный инструмент. В случае десктоп программирования, уверен, если будет расти интерес к теме то будут и фреймворки направленные на десктоп, аналогичные .NET.
[ [[[[[ //Че за фигня? нафиг так делать?
( //Мдаа, множество пустых скобок без предваряющих конструкций — это супер читаемо.
(
p('Multiplications:'), //Функция? Методы объекта в сцепке? Хз.
doMult(4, 10),
l()
), //хммм, "," — это похоже на перечисление
( //А нет, похоже на разделитель. Блин, ";" логичнее
p(),
p('Fib:'),
и т.д.
Вот примерные размышления о пайтоне. РНР даже выглядит более зрело и законченно.
Ни в жизнь не поверю, что вы пишете код в Блокноте. — я так начинал. Принцип такой. Типа «тяжело в учении — легко в бою». Сейчас Блокнота у меня тупо нет ;) (есть gedit) но в работе использую исключительно NetBeans.
>> 2) опять же зависит от задачи. Но гораздо лучше, когда есть возможность, чем когда ее нет. Так что, вполне плюс.
создать .bat файл с текстом
@echo off
@<путь к php>/php.exe prog.php
@pause
или совсем извратится типа такого:
@echo off
@echo "<?" > tmp.php
@echo «print 'Hello, world!';» >> tmp.php
@echo "?>" >> tmp.php
@<путь к php>/php.exe tmp.php
@del tmp.php
@pause
2. Не станете же вы спорить, что вне веба пхп удобнее, скажем, питона? — нет, не стану. РНР удобнее питона.
3. Почитаю на досуге. Честно.
4. Язык на котором работаешь, это чаще всего язык, который начал изучать сам по себе, не потому что по работе надо было. Иначе, значит не там работаешь.
5. тогда могу только посочувствовать — Ну сочувствуйте, я на РНР помимо работы и для души пишу. И мне очень это нравится. Я так релаксирую. Я получаю удовольствие. Воссоединяюсь с высшими силами, если угодно :)
1) Никаких мифов об удобстве — исключительно факты: визуально легко отличимы переменные от других ключевых слов. Особенно полезно при изучении чужого кода, где не держишь в голове имена всех переменных.
2) Есть еще великолепные возможности благодаря этому знаку, которые вы в меру ограниченности своего знакомства с РНР вряд ли знаете. Вот наглядный пример:
$a = «foo»;
$b = «bar»;
$c = $a($b); // Вызывает функцию с именем foo и параметром bar, т.е. $c=foo(«bar»);
$d = $b->$a($c); //Вызывает метод foo объекта bar с параметром $c, т.е. $d = bar -> foo($c);
Очень часто такие методы достаточно удобны. Без всяких call_user_func
Я ни разу не говорил, что это не так. Я скорее согласен, что они хороши. Но и РНР хороший. Каждому свое.
> Обижать могут только люди.
Ладно, по другому, ЧЕМ вас обидели любители РНР, что так сильно хаяте хороший язык?