Доступна (http://php.net/index.php#id2016-06-09-1) для тестирования первая альфа-версия новой значительной ветки языка программирования PHP 7.1. Релиз ожидается (https://wiki.php.net/todo/php71#timetable) в ноябре.Ключевые улучшения (https://github.com/php/php-src/blob/php-7.1.0alpha1/UPGRADING):
- Добавлен (https://wiki.php.net/rfc/void_return_type) тип возвращаемого значения void, указывающий на то, что функция не вернула значение;
- При указании смещения внутри строки теперь можно указывать (https://wiki.php.net/rfc/negative-string-offsets) отрицательные значения, позиция в строке для которых будет рассчитана относительно конца строки. Например, для строки 'abcdef' $str[-2] вернёт "e";
- Добавлен (https://wiki.php.net/rfc/list_keys) вариант конструкции list(), в которой могут задаваться ключи (например: "list(1 => $oneBit, 2 => $twoBit, 3 => $threeBit) = $powersOfTwo");
- Добавлено (https://wiki.php.net/rfc/short_list_syntax) выражение "[] =", которое выступает альтернативой конструкции "list() =". Например, вместо "list($a, $b, $c) = array(1, 2, 3)" теперь можно указать "[$a, $b, $c] = [1, 2, 3]";
- Реализована (https://wiki.php.net/rfc/invalid_strings_in_arithmetic) система вывода ошибок и предупреждений в случае использования в математических выражениях строк, не преобразуемых в число. Например, "10 apples" + "5 pears" приведёт к выводу ошибки "Notice: A non well formed numeric string encountered in example.php on line 3", а 5 * "orange" к "Warning: A non-numeric string encountered in example.php on line 3";- Возможность (https://wiki.php.net/rfc/multiple-catch) обработки нескольких типов исключений в одном выражении catch;
- Поддержка (https://wiki.php.net/rfc/class_const_visibility) определения видимости для констант внутри класса. Константы теперь могут определяться с флагами public, private и protected;
- Возможность (https://wiki.php.net/rfc/nullable_types) использования знака вопроса для пометки типов, которые могут принимать значение null.
URL: http://php.net/index.php#id2016-06-09-1
Новость: http://www.opennet.me/opennews/art.shtml?num=44588
> для строки 'abcdef' $str[-2] вернёт "e"пхп очень близко подобрался к awk, и когда-нибудь станет как perl :))))
Когда читал про фичи, выставленные в alpha, то почему-то подумал, что он стал ближе к C#.
> Когда читал про фичи, выставленные в alpha, то почему-то подумал, что он
> стал ближе к C#.PHP очень сильно синтаксисом напоминает C(++/#/...) в принципе. Есть подозрение, что строгую типизацию вводят не просто так - возможно и появление некого компилируемого ответвления. Попытки уже были у фейсбука, но пока только попытки.
Каждый увидел свое. Я увидел, что он заимствовал фичи из Python.
>> для строки 'abcdef' $str[-2] вернёт "e"
> пхп очень близко подобрался к awk, и когда-нибудь станет как perl :))))if ('abcdef'[-2] === 'e' && 'абвгде'[-2] === 'it depends') {
echo 'Yeah, it's still our well-known headache - PHP!';
}
А вот у этой проблемы нет нормального решения, кроме как изобрести машину времени и сделать юникод-строки в php 1.0.Два типа строк в одном языке с динамической неявной типизацией - это еще хуже.
как будто раньше такой проблемы с 'абвгде'[2] не было.
запилили новую фичу, которую можно использовать, когда надо. когда не надо и раньше не стоило.
Родовую травму просто так не вылечить. ***бищные list(), array(), $var[] = "foo" так и останутся.
>и когда-нибудь станет как perl :))))Вообще то pnp начинался как библиотека perl для вэб разработки.
>Возможность использования знака вопроса для пометки типов, которые могут принимать значение null.Почему сразу так не сделать?
А почему сразу всё было нормально не сделать? Вон, синтаксис списков - это ж перловый, которому уже лет 20. Причём списки/массивы понемногу делают логичными (а по факту - сдирают из перла) они последние года четыре...
<sarcasm>Удивительно почему это они сдирают с Perl</sarcasm>
Тоже хотел это отметить.
Причем от нормальных, спискового и скалярного контекстов, насколько я понял, это всё остается быть достаточно далеко, в PHP-шном стиле "у нас тут 100500+ частных случаев, потому что Консистентность звали собаку, которая укусила нашего главного разработчика в детстве", "[]=" это только один кейс.
И при всём этом код на PHP остаётся прекрасно читабельным, в отличие от такого обобщённого перла.
Только если ты знаешь php, но не знаешь perl. Ну или если ты совсем дурачок и сравниваешь код в больших проектах на пыхе с кодом однострочников на перле.
У перла идеалогия: есть множество путей сделать это. Можно писать читабельный код, даже читабельнее пхп. Напомню что язык то лингвист делал и на нем можно стихотворения писать =). А можно упражняться: кто решит задачу за меньшее количество символов. Человек пишущий плохо читабельный код на любом из языков, на перле может написать еще хуже =)
А что делать с человеком, плохо пишущим даже на русском? ИдеОлогия, блин.
Так потому и придумывали пхп и питон в которых "есть только один путь правильно сделать это". Разменяв кучу возможностей, гибкость и красоту на низкий порог вхождения.
Именно. То же самое и с русским... вроде способов правильно сделать много, и лексика богатая, а говорит между собой мир на английском. Просто потому, что лаконичнее, да и к пониманию сильно проще. Меньше энтропии. Ну и порог вхождения, опять же.Усложнять как правило просто. Упростить обычно сложнее.
Вы откуда такие беретесь?
Мир говорит между собой на английском в силу исторических причин, многих.
Не было бы Британской империи - была бы может Французская какая, или второй рейх.
И говорили бы на французском или немецком.
В начале 20-го века большинство научных статей по математике выходили на французском.
Эти исторические причины к нам не с Марса прилетели.
Все мы разумные и практичные люди. Этому есть много исторических иллюстраций.
хохло-логика?
Сделали мол англы лаконичный езыГ и под них лег весь индокитай и много другого :)
А нам то врали, что мол туземцев не осиливших езыГ хозяев, те без жалости перемалывали с канонерок в фарш для своих собачек ...
Перловый код действительно часто сложнее читается чем PHP, с одним важным уточнением - для человека *не знающего ни того ни другого*. В чем польза от такого странного "преимущества" - непонятно.
> Причём списки/массивы понемногу делают логичными (а по факту - сдирают из перла) они последние года четыре...Поразительно (c)
Лет через пять глядишь и догадаются, зачем в perl'е есть И "eq"/"cmp"/"gt"/"lt" И "=="/"<=>"/">"/"<"
Задание со звёздочкой - понять, зачем нужен "=~".
В перле действительно самый правильный подход в операторах и в приведении типов. А потому и самый удобный: ничего нигде приводить специально не нужно.
> man perldata
> Perl has three built-in data types: scalars, arrays of scalars, and associative arrays of scalars, known as "hashes"Расскажите про приведение типов, как вы приводите типа "массив" к типу "скаляр", например.
>> man perldata
>> Perl has three built-in data types: scalars, arrays of scalars, and associative arrays of scalars, known as "hashes"
> Расскажите про приведение типов, как вы приводите типа "массив" к типу "скаляр",
> например.Очень просто - в Perl все приведения типов выполняются через списки. Вы забыли упомянуть про контекст скаляров - просто скаляр или список (Ну, если еще детальнее, то "просто скаляр" - это ведь тоже список из одного элемента, ну и с упрощенным синтаксисом для удобства).
Какие интересные у вас видения. Вы мало того что изобрели несуществующий тип данных "список", но еще и столько всего считаете приведением типов, что уместно будет спросить, есть ли вообще какие-то операции, которые приведением типов в вашей вселенной не являются?
С полным списком встроенных типов перла можно ознакомиться в документации
В скалярном контексте из массива будет получена его длинна.
К приведению типов это имеет какое-то отношение?
Прямое. То что ты понимаешь под приведением: my $var = @array - даст тебе размер массива. my $var = $array[-1] - даст последний элемент массива. Обращаю внимание как меняется при этом сигил: @ => $.На этих эффектах основаны и "необычные операторы", типа =()=
Строка/число приводится явно, в зависимости от используемого оператора; выше не зря упоминали про пары eq/==. При этом нет той дичи с oct(), как в похапе: "755" == "0755".
> Почему сразу так не сделать?Потому что сразу не было свифта. А теперь есть свифт и есть откуда перенять.
>>> Возможность обработки нескольких типов исключений в одном выражении catchВот это добротно. Оно и до этого было возможно, через catch (Exception $e) и далее instanceof, но нововведение позволит объём кода ещё поуменьшить.
Всю сознательную жизнь фачил этот пхп, щя начал изучать пайтон и прозрел, какой можно написать стройный, лаконичный и понятный код без всех этих громоздких синтаксических конструкций и альтернативных путей, усложняющих язык.
Поздравляю, первый шаг в сознательной жизни сделан. Дальше - разочарование питоном, изучение крестов... ну, а потом можно будет вернуться к пыху или питону, но уже с пониманием, как не писать говнокод.
После питона сейчас идут на Go, а не плюсы. И это правильно.
Особенно доставляют значащие пробелы. Хоть с линейкой вымеряй.
Логическую строку не осилил?
Точняк бро. Особенно весело, когда надо побыстрому с чужой машины на малознакомом редакторе, который вдруг меняет табы на пробелы с кастомным рамером.
> Точняк бро. Особенно весело, когда надо побыстрому с чужой машины на малознакомом
> редакторе, который вдруг меняет табы на пробелы с кастомным рамером.... не снимая лыж!
... стоя на голове!
... в гамаке!Барон любит чтоб потруднее! (С) БМ
Делать невидимый глазом символ критически значимым, делать удвоение невидимого символа вдвойне более значащим, затем искать прямой способ показывать невидимые симводы в редакторах - нет пределов людской глупости, десу.
Открой для себя табы.
Открой для себя редакторы с конверсией табов в пробелы и назад.Ну да, чтобы кодить на питоне - нужно специальный редактор, потом встать на голову, закинуть руку за спину, и так далее.
Вот только узким специалистом по натягиванию яйца на глаз как-то становиться не хочется.
тыкните пальцем, плз.
Куда тебе тыкнуть, в PEP8?
Ты бы хоть поинтересовался значением слова "лаконичный". Это явно не про язык, на котором нет альтернативных путей.
Лаконичный - это про код в контексте конкретного языка, да, это не про пхп.
То есть код на этом вашем питоне может быть лаконичным, только если ограничится питоном? Ну тогда, представьте себе, код на пыхе тоже может быть лаконичным, если ограничится только пыхом. А вот если сравнивать код на разных ЯП, то питон совсем не чемпион по лаконичности.
> А вот если сравнивать код на разных ЯП, то питон совсем не чемпион по лаконичности.APL тут никто и икогда не забрет :) Но писать на нём ...
Лучшие продукты в этом говённом мире - всегда результат разумных компромиссов. АзЪ!
Вы лично пробовали писать на APL?
APL это очень нишевый язык и лаконичен он только в пределах своей ниши.
Очень-очень нишевый.> MiServer
> A development platform for web applications written in APL. Version 3.0, due out with Dyalog 14.1, will contain wrappers for JQuery and the Syncfusion JavaScript libraries.
> SAWS (Stand Alone Web Services framework)
> Allows any APL application to expose functionality in the form of Web Services in minutes
Это все ваши полиглотопроблемы же, я тут высказал свое мнение в отношении питона и пхп
> Всю сознательную жизнь фачил этот пхп, щя начал изучать пайтон и прозрел, какой можно написать стройный, лаконичный и понятный код без всех этих громоздких синтаксических конструкций и альтернативных путей, усложняющих язык.а я когда начал разбираться с питоном после руби, то плевался постоянно.
Что же вы все холиварите, перлы, питоны, низкий порог вхождения...
Предлагаю для прошедших порог попробовать свои силы в чем-то посложнее,
например написать что-нибудь на малболже (https://ru.wikipedia.org/wiki/Malbolge)
:)
Жырно. Malbolge специально сделан с максимально нечитаемым синтаксисом.
> При указании смещения внутри строки теперь можно указывать отрицательные значения, позиция в строкеШёл 2016 год...
В с++ этого и в 3016 не будет. И чо? Си в помойку, да, десу?
Сразу надо было.> By 1960, we had a long list of amazing languages: Lisp, APL, Fortran, COBOL, Algol 60. These are higher-level than C. We have seriously regressed, since C developed. C has destroyed our ability to advance the state of the art in automatic optimization, automatic parallelization, automatic mapping of a high-level language to the machine
Fran Allen, Coders at Work, страница 501
Полная история Си - http://pastebin.com/UAQaWuWG
Доо, пришла кучка технарей, придумала злой си и тем похоронила все мечты теоретиков-борщехлёбов.И уже сорок лет те не могут оправиться от этого удара. Какая жаль.