The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Релиз языка программирования PHP 8.2

08.12.2022 18:56

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

Ключевые изменения в PHP 8.2:

  • Добавлена возможность пометки класса доступным только для чтения. Свойства в подобных классах могут быть заданы только один раз, после чего не будут доступны для изменения. Ранее только для чтения могли помечаться отдельные свойства класса, а теперь разом можно включить данный режим для всех свойств класса. Указание флага "readonly" на уровне класса также блокирует динамическое добавление свойств в класс.
    
       readonly class Post
       {
           public function __construct(
               public string $title, 
               public Author $author,
           ) {}
       }
       $post = new Post(/* … */);
       $post->unknown = 'wrong'; // Error: Cannot create dynamic property Post::$unknown
    
  • Добавлены отдельные типы "true", "false" и "null", которые могут принимать только одно допустимое значение и использоваться, например, для возвращения функцией признака завершения с ошибкой или пустого значения. Ранее "true", "false" и "null" могли использоваться только в связке с другими типами (например, "string|false"), а теперь могут применяться отдельно:
    
       function alwaysFalse(): false
       {
           return false;
       }
    
  • Предоставлена возможность фильтрации конфиденциальных параметров в данных трассировки стека, выводимых во время ошибки. Вырезание определённой информации может потребоваться когда сведения о возникающих ошибках автоматически направляются в сторонние сервисы, отслеживающие проблемы и информирующие о них разработчиков. Например, можно исключить из трассировки параметры, включающие имена пользователей, пароли и переменные окружения.
    
       function test(
           $foo,
           #[\SensitiveParameter] $password,
           $baz
       ) {
           throw new Exception('Error');
       }
       test('foo', 'password', 'baz');
     
       Fatal error: Uncaught Exception: Error in test.php:8
       Stack trace:
       #0 test.php(11): test('foo',  Object(SensitiveParameterValue), 'baz')
       #1 {main}
         thrown in test.php on line 8
    
  • Разрешено определение констант в типажах (trait, механизм для повторного использования кода). Доступ к константам, определённым в типаже, можно получить через класс, который использует типаж (но не через имя типажа).
    
       trait Foo  
       {
           public const CONSTANT = 1;
    
           public function bar(): int
           {
               return self::CONSTANT; // Fatal error
           }
       }
    
       class Bar
       {
           use Foo;
       }
    
       var_dump(Bar::CONSTANT); // 1
    
  • Добавлена возможность задания типов в дизъюнктивной нормальной форме (DNF, Disjunctive Normal Form), позволяющей совместить объединение типов (коллекции из двух и более типов) и пересечение типов (типы, значения которых подпадают одновременно под несколько типов).
    
       class Foo {
           public function bar((A&B)|null $entity) {
               if ($entity === null) {
                   return null;
               }
               return $entity;
           }
       }
    
  • Предложено новое расширение "Random" c функциями и классами для генерации псеводослучайных чисел и последовательностей. Модуль предоставляет объектно-ориентированный интерфейс, позволяет выбирать разные движки для генерации псеводослучайных чисел, в том числе пригодные для применения в криптографии, и предоставляет вспомогательные функции, например, для случайного перемешивания массивов и строк, выбора случайных ключей массива, одновременного использования нескольких генераторов со своим независимым состоянием.
    
       $rng = $is_production
           ? new Random\Engine\Secure()
           : new Random\Engine\Mt19937(1234);
     
       $randomizer = new Random\Randomizer($rng);
       $randomizer->shuffleString('foobar');
    
  • Реализовано независимое от локали преобразование регистра символов. Функции, подобные strtolower() и strtoupper(), теперь всегда преобразуют регистр символов в диапазоне ASCII как при выставлении локали "С".
  • Добавлены новые функции: mysqli_execute_query, curl_upkeep, memory_reset_peak_usage, ini_parse_quantity, libxml_get_external_entity_loader, sodium_crypto_stream_xchacha20_xor_ic, openssl_cipher_key_length.
  • Добавлены новые методы: mysqli::execute_query, ZipArchive::getStreamIndex, ZipArchive::getStreamName, ZipArchive::clearError, ReflectionFunction::isAnonymous, ReflectionMethod::hasPrototype.
  • Объявлена устаревшей возможность динамического создания свойств в классе. В PHP 9.0 обращение к свойствам, изначально не определённым в классе, будет приводить к ошибке (ErrorException). Классы, предоставляющие методы __get и __set для создания свойств, или динамические свойства в stdClass продолжат работать без изменений, прекратится поддержка только неявной работы с несуществующими свойствами для того чтобы защитить разработчика от скрытых ошибок. Для сохранения работы старого кода предложен атрибут "#[AllowDynamicProperties]", разрешающий использование динамических свойств.
  • Объявлена устаревшей возможность подстановки значений переменных в строки при помощи выражений "${var}" и ${(var)}". Поддержка обычно используемых подстановок "{$var}" и "$var" сохранена. Например:
    
       "Hello {$world}"; OK
       "Hello $world";   OK 
       "Hello ${world}"; Deprecated: Using ${} in strings is deprecated
    
  • Объявлены устаревшими частично поддерживаемые вызываемые объекты (callable), которые могут быть вызваны через "call_user_func($callable)", но не поддерживают вызов в форме "$callable()":
    
       "self::method"
       "parent::method"
       "static::method"
       ["self", "method"]
       ["parent", "method"]
       ["static", "method"]
       ["Foo", "Bar::method"]
       [new Foo, "Bar::method"]
    
  • В настройки добавлена директива error_log_mode, позволяющая определить режим доступа к логу с ошибками.


  1. Главная ссылка к новости (https://www.php.net/archive/20...)
  2. OpenNews: Релиз языка программирования PHP 8.1
  3. OpenNews: Объявлено о создании организации PHP Foundation
  4. OpenNews: Выпуск PHPStan 1.0, статического анализатора для кода на языке PHP
  5. OpenNews: Релиз языка программирования PHP 8.0
  6. OpenNews: Отчёт о компрометации git-репозитория и базы пользователей проекта PHP
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/58288-php
Ключевые слова: php
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (229) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, DEF (?), 19:03, 08/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    PHP становиться все лучше и лучше. Постепенно избавляется от динамической типизации и становится строгим с жесткой типизацией. Это плюс.
     
     
  • 2.16, Аноним (16), 19:31, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    >Постепенно избавляется от динамической типизации и становится строгим с жесткой типизацией.

    Ну как жёсткой, сверху тайпскрипт, снизу anytype.

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

     
  • 2.27, Аноним (27), 19:52, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Даже не знаешь, на чём лучше писать: то ли на пыхпыхе, то ли на расте...
     
     
  • 3.128, Аноним (128), 01:10, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    https://docs.rs/phper/latest/phper/
     
     
  • 4.210, виласкес (?), 14:22, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    там что-то с сертификатом (традиционная "безопасность" в духе раста), лучше не открывать
     
  • 2.56, Аноним (56), 20:57, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Где ты там увидел строгость, болезный? Язык как был галимой динамической императивщиной, таким и помирает. Чтобы узнать, что такое строгость надо Clean потыкать.
     
     
  • 3.88, DEF (?), 22:11, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +5 +/
    PHP не умирает, его доля почти 80% веба. Был динамическим, становится статическим со строгой типизацией. Что такое стогость, я лучше тебя знаю, эникейшик. Выздоравливай.
     
     
  • 4.244, Анончик (?), 13:25, 10/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >становится статическим со строгой типизацией

    Извиняюсь, ткните носом где в новости вы такое увидели?

     
  • 3.189, Lost Inside (ok), 10:58, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну есть же скрепное intval(), чего тебе еще надо? ))
     

  • 1.2, BuildPrice (?), 19:03, 08/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    >> public function bar((A&B)|null $entity)

    догоним и перегоним Rust/C++ по говнокоду?

     
     
  • 2.3, Растишка (?), 19:07, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Хруст и плюсы точно приятнее
     
     
  • 3.57, Аноним (56), 20:58, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • –6 +/
    Плюсы и похапе примерно одного уровня шлак, только последний столько вреда не принёс ввиду ограниченности области применения.
     
  • 2.11, Аноним (11), 19:28, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ну-ка, умник, а как же будет не говнокод?
     
     
  • 3.110, Инженегр (?), 23:28, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • –4 +/
    struct A {};
    struct B {};
    union C
    {
      A a;
      B b;
    };
    void foo(C * c);

    и вcё, не надо никаких невнятных символов, умных терминов, код максимально читаем, ошибку в нём сделать просто невозможно. А вы продолжайте писать на пыхыпэ.

     
     
  • 4.118, Аноним (27), 00:03, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    у тебя малюююсенькая ошибка: невозможно определить, что же лежит в Цэ.
     
  • 4.199, Аноним (199), 12:41, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    ты пытался сделать function bar(A|B|null $entity)
    но даже это не получилось.
    Можешь не пытаться делать Intersection Types в языке без интерфейсов и наследования, учитывая что даже простое объединение не смог
     
  • 3.133, Кир (?), 01:22, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/



    using namespace std;

    variant<int, string, float> x;
    x = "foo";

    /*....*/

    if(holds_alternative<string>(x)) { /* в x -- строка */
        cout << get<string>(x) << endl;
    }



     
     
  • 4.136, Аноним (136), 01:42, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Какой ужас!
     
     
  • 5.211, Кир (?), 14:43, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ужас -- это пых, в котором прога свалится в рантайме, если в функцию попадет значение не того типа.
     
     
  • 6.228, Аноним (228), 21:59, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    php компилирует пофайлово, и понятия не имеет о взаимосвязях между кодом, расположенном в разных файлах. Так что кроме как в райтайме, вариантов и нет.

    Впрочем, если пришлось связаться с php, статические анализаторы спасают.

     
  • 2.164, Аноним (164), 09:35, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Опеннет эксперт по программированию первый раз в жизни увидел объединение и пересечении типов и сделал единственный, доступный на его уровне компетенции вывод.
     

  • 1.5, Аноним (5), 19:14, 08/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    пора его переименовать из personal в corporate home pages.
    хотя на счёт home тоже подумать можно
     
     
  • 2.43, BrainFucker (ok), 20:28, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Так его уже переименовали в "PHP: Hypertext Processor". Но в данном случае для первой буквы могли бы что нибудь поприкольней придумать, "professional", например, и пофиг что к многих бомбанёт с этого ))
     
     
  • 3.52, Аноним (52), 20:51, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Painful
     
     
  • 4.58, Аноним (56), 21:00, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Parody))
     
     
  • 5.78, Аноним (5), 21:33, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Pandemonium
     
     
  • 6.198, Аноним (198), 12:31, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Pride
     
  • 2.77, Аноним (77), 21:32, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    CP получается, мне это нравится
     

  • 1.7, Вы забыли заполнить поле Name (?), 19:18, 08/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    > добавлены новые функции
    > sodium_crypto_stream_xchacha20_xor_ic

    Какое красивое и лаконичное название. Очень продуманно, как и весь язык в целом.

     
     
  • 2.13, Аноним (13), 19:29, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +9 +/
    содиум крипто стрим икс чача двадцать ксорик
     
  • 2.19, Gedweb (ok), 19:35, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    PHP он такой, берёт функцию из сырцов, добавляет префикс и готово.
    Хотя постойте, выходит так назвали функцию в священном .., о боги!
    https://github.com/jedisct1/libsodium/blob/master/src/libsodium/include/sodium
     
     
  • 3.55, Вы забыли заполнить поле Name (?), 20:56, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > добавляет префикс

    На кой лад тогда в язык добавляли пространства имён, если все скидывают в глобальную область?

     
     
  • 4.64, Без аргументов (?), 21:05, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Это перескок на другую тему
     
  • 4.194, Gedweb (ok), 11:41, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А вот это вопрос по существу. Новые функции называют для единообразия, но ничто не мешало вынести в отдельное пространство имён их изначально. Как с этим позже поступл, например, создатель модуля RdKafka.
     
  • 4.209, Аноним (209), 13:42, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Так пошло с тех времён, когда неймспейсов не было. Да и по psr нецмспейс первого уровня - это vendor.
     
  • 4.222, Аноним (222), 19:44, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Шоб было.
     
  • 2.63, Без аргументов (?), 21:04, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это называется самодокументированный код.
     
  • 2.65, Без аргументов (?), 21:06, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    вы наверно GTK и традиции некрософта не знаете?
     
     
  • 3.71, Вы забыли заполнить поле Name (?), 21:11, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Просвети, ты же эксперт
     
     
  • 4.89, Аноним (27), 22:15, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это он Qt ещё не видел
     
     
  • 5.206, Без аргументов (?), 13:14, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    в Qt хотя бы объекты группируют, что не надо писать еще и префикс объекта.
     
  • 4.205, Без аргументов (?), 13:13, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    GTK2:
    void g_signal_handlers_unblock_by_func( gpointer  object, GCallback func, gpointer  data);
    button = gtk_button_new_with_label ("button,");
    NTDLL:
    NtAdjustTokenClaimsAndDeviceGroups
    NtAlpcImpersonateClientContainerOfPort
    NtWaitForWorkViaWorkerFactory
     
     
  • 5.223, Аноним (222), 19:46, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Так этот GTK2 спокойно маршалируется с помощью GI в пердсставление с делимитерами в тех языках, которые их поддерживают.
     
  • 4.207, Без аргументов (?), 13:21, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Зря ты так про эксперта, я не теоретик, у меня стаж с детства, интернетов в моем детстве не было, я вместо анимэ уже пытался программировать на VBA/VBS и батники делал, что было в винде 95, а затем XP, и на макроассемблере с WINAPI тоже, и на делфи. Это все еще во время школы лишь, без нормального инета.
     
  • 2.174, Аноним (174), 09:44, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Поскольку корни названий заходят в сишечку, на библиотеках на которой пых и собран, а в сишечке с названиями в силу жёсткой естественной фрагментации с именованием полнейший бардак, удивляться тут нечему. И ни у кого, кроме хипстеров, привыкших к полсотне однострочников в зависимостях, это особого баттхёрта не вызывает. Заглянуть в хэндбук в случае чего - дело 5 секунд, дальше часто встречаемое запоминается.
     
     
  • 3.224, Аноним (222), 19:47, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >Поскольку корни названий заходят в сишечку, на библиотеках на которой пых и собран, а в сишечке с названиями в силу жёсткой естественной фрагментации с именованием полнейший бардак, удивляться тут нечему.

    Можно удивиться долбанутости мейтейнера привязок.

     
  • 2.175, Аноним (164), 09:45, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    php движется в сторону java где принято давать длинные идентификаторы объектам. Ограничения типов вводят, магические методы отключают.
     
     
  • 3.179, Аноним (174), 09:49, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Уху, и поэтому берёшь какой-нибудь там Hibernate, заглядываешь внутрь, и о***неваешь.
     

  • 1.8, Аноним (8), 19:22, 08/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    ну, теперь всех новичков точно можно будет отпугивать синтаксисом. Столько сахарку сыпят с каждым релизом...
     
     
  • 2.14, Аноним (11), 19:29, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Какие новички на похапе? Похапэ это только лютое легаси.
     
     
  • 3.37, Chlen22sm (?), 20:02, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Ага, учитывая что 90% всего вэба это вордпресс.
     
     
  • 4.42, DEF (?), 20:12, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Не 90%, а 43%.
     
  • 4.44, BrainFucker (ok), 20:30, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Будто вордпрес не легаси. Там код ппц.
     
  • 4.48, Аноним (27), 20:40, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > 90% всего вэба это вордпресс

    причём появляется этот вротпресс в новостях исключительно в негативном смысле.

     
     
  • 5.54, DEF (?), 20:55, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Систематическая ошибка выжившего. Хорошие новости не постят.
     
     
  • 6.283, Аноним (283), 10:48, 14/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Либо их кто-то очень особенный не читает.
     
  • 5.145, Chlen22sm (?), 03:28, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Человек хорошее воспринимает как должное. Поэтому большинство отзывов о товарах и услугах - негативные. Туда же и новости. Открой любой новостной телеграм канал - сплошной негатив.
     
  • 4.60, Аноним (56), 21:02, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    И какое отношение имеет вордпресс к новичкам в пхп? Вордпресс это софт, который пилит кучка наркоманов, "программистов на вордпресс" не существует.
     
  • 2.29, Аноним (27), 19:54, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Столько сахарку сыпят

    Это уже не сахар, а лимон с перцем.

     

  • 1.9, Аноним (9), 19:24, 08/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    > Добавлены отдельные типы "true", "false" и "null"

    Я на пхп никогда не писал, но это выглядит как достижение века!

     
     
  • 2.47, Аноним (47), 20:39, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    >>> как достижение века! <<<

    В язык Си (C23) вон тоже добавили полноценный bool, false, true, - больше не надо использовать <stdbool.h>, а false и true это больше не макросы, - вот это я понимаю достижение:)  

     
     
  • 3.49, Аноним (9), 20:47, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >>>> как достижение века! <<<
    > В язык Си (C23) вон тоже добавили полноценный bool, false, true, -
    > больше не надо использовать <stdbool.h>, а false и true это больше
    > не макросы, - вот это я понимаю достижение:)

    Блин точняк! Я и забыл, как сам подключал stdbool на сишечке...

     
     
  • 4.73, Без аргументов (?), 21:15, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Вам, кто называет "сишечкой" не понятно, что Си создавался для того, чтобы не писать на ассемблере, и чтобы можно было компилить более менее кросс-железно. Его правильней называть языком среднего уровня. В железе нет типа bool, там есть 8/16/32/64-битные регистры, в которых хранятся числа или адреса, а также битовые флаги в регистрах не общего назначения, которые меняются через загрузку в регистр общего назначения и выгрузку обратно, и больше ничего. Задача Си преобразовать алгоритмические читаемые глазами операции в машинный код конкретного процессора. Rust же неоправданно перегружен кучей всяких спецсимволов, осложняющих чтение, что приведёт к ошибкам по невнимательности.
     
     
  • 5.75, Аноним (47), 21:20, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    >>> Rust же неоправданно перегружен кучей всяких спецсимволов, осложняющих чтение <<<

    ИМХО, скоро в Си будет не лучше, - ибо товарищи стандартизаторы они такие:)

     
     
  • 6.116, Аноним (27), 23:56, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    в Си хотя бы стандарты есть.
     
  • 5.99, пох. (?), 22:41, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Меня до сих пор изумляет слепота разработчиков, выдумавших в нем совершенно лишние  платформозависимые типы, завязавших ВСЕ на sizeof(char) из-за которого нельзя было перейти на юникод без адского трэша, просто объявив что в этом компиляторе char двухбайтный (задуман он тоже, разумеется, был как платформозависимый), и выбросивших тип byte - единственный тип в bcpl, который как раз был в этом месте сделан правильно.

    > Rust же неоправданно перегружен кучей всяких спецсимволов, осложняющих чтение, что приведёт к
    > ошибкам по невнимательности.

    Не приведет. Там и внимательно написанный код не всегда компилируется, пока не обвешают unsafe.

     
     
  • 6.131, Аноним (128), 01:16, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >объявив что в этом компиляторе char двухбайтный

    wchar_t к вашим услугам. Но лучше не надо. Используйте utf-8 и не выпендривайтесь.

     
     
  • 7.162, Аноним (47), 09:21, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Я бы сказал иначе, - если вам нужно работать "по-серьёзному" со строками?, - выбирайте другой язык программирования!
     
     
  • 8.225, Аноним (222), 19:48, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Энтерпрайзно одобренный способ вызывать malloc ... текст свёрнут, показать
     
  • 6.230, Аноним (228), 22:57, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Попутал char с трамвайной ручкой. :-)

    sizeof(char) == 1 по определению. Да, уместнее его было назвать byte, но в 71-м году как-то про юникод не подумали :-)

    sizeof('c') - тут, да, ерунда получилась, в С++ исправили. Но это не char, это character literal.

     
     
  • 7.252, пох. (?), 20:18, 10/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Чьему блжад определению Нет Байт - это байт А char- тип для хранения символов... большой текст свёрнут, показать
     
     
  • 8.263, Аноним (209), 00:53, 11/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    When sizeof is applied to an operand that has type char, unsigned char, or signe... текст свёрнут, показать
     
     
  • 9.268, Аноним (47), 16:51, 11/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ох, уж эти стандарты Немного оффтопик Я кстати, был приятно удивлён что в С23... текст свёрнут, показать
     
  • 5.111, Аноним (9), 23:32, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Тип bool однозначно и очевидно переводится в машинное число Но не это главное ... большой текст свёрнут, показать
     
     
  • 6.115, Капитан Очевидность (?), 23:55, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >>Си есть структуры. И это, согласитесь, куда более высокоуровневая штука,

    Нет, структуры как и базовые типы, это самая основа, и они ближе к железу.
    Даже древние процессоры, хоть как нибудь, аппаратно поддерживали работу со структурами,
    ибо они требовались изначально для работы с периферией.
    Абстракциия от аппаратной части - это Json и аналоги.  

     
     
  • 7.121, Аноним (9), 00:53, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >>>Си есть структуры. И это, согласитесь, куда более высокоуровневая штука,
    > Нет, структуры как и базовые типы, это самая основа, и они ближе
    > к железу.
    > Даже древние процессоры, хоть как нибудь, аппаратно поддерживали работу со структурами,
    > ибо они требовались изначально для работы с периферией.
    > Абстракциия от аппаратной части - это Json и аналоги.

    Если структуры -- это самая основа, то bool -- это основа основ, потому что это просто число. А работу с числами поддерживают любые процессоры, которые только можно представить.

     
     
  • 8.200, Без аргументов (?), 12:52, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Bool это не просто число, он может быть только единицей ... текст свёрнут, показать
     
  • 6.201, Без аргументов (?), 12:57, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Почему структуры в Си не равно этим вашим JSON и объектам напримере порта микроконтроллера:
    у порта как любого физического устройства есть адрес, по которому физический механизм памяти определяет, куда мультиплексировать (грубо говоря соединить как телефонная станция) сигнальные линии шины с устройством передачи — регистром АЛУ, физических линий. Условно, 0x00001000;
    железно, порт внутри содержит регистры, они адресуются инкрементом базового адреса регистра. т.о. шагая вперед с интервалом в 32 бита, 0x00001020, мы можем пройти по каждому регистру.
    Структура же просто повторяет физическую структуру порта. И поле регистра структуры сразу адресует в нужное место в рамках адресов регистра.
     
     
  • 7.226, Аноним (-), 19:57, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Про выравнивание в курсе?
     
  • 6.237, Аноним (174), 09:24, 10/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В число - однозначно. В машинное - вообще не однозначно и не очевидно.
    Что такое ваш конкретный bool - 8 бит, 16 бит, 32 бита, 64 бита?
    Или быть может оно вообще побитово в слово упаковано по 64 штуки в слове?
     
     
  • 7.243, Аноним (9), 13:20, 10/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > В число - однозначно. В машинное - вообще не однозначно и не
    > очевидно.
    > Что такое ваш конкретный bool - 8 бит, 16 бит, 32 бита,
    > 64 бита?
    > Или быть может оно вообще побитово в слово упаковано по 64 штуки
    > в слове?

    А какая разница программисту? Пусть компилятор решает. А на счёт упаковывать -- это уже что-то более сложное. Я говорю про самый примитивный bool, который может хранить два значения. Причём в числовом виде обычно 0 -- это false, а любое другое значение -- true. Это ведь не что-то высокоуровневое, не так ли?

     
     
  • 8.245, Аноним (174), 18:03, 10/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Самый примитивный bool - это и есть любой бит в слове произвольной длины Соотве... текст свёрнут, показать
     
  • 6.254, пох. (?), 20:24, 10/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    только в твоих фантазиях В машине нет никакого bool потому что в процессоре ес... большой текст свёрнут, показать
     
     
  • 7.255, Аноним (9), 20:57, 10/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Если для тебя структура является синтаксическим сахарком над смещениями указателя, то синтаксическим же сахарком для тебя должен являться и тип bool (гораздо более простым и очевидным сахарком кстати). Но если для тебя bool -- это что-то из области ООП, то продолжай программировать на сишечке. До более серьёзных языков ты пока не дорос.
     
     
  • 8.257, пох. (?), 23:08, 10/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Еще раз структура твоя - просто кусок памяти, в котором есть оффсеты его внут... текст свёрнут, показать
     
     
  • 9.264, Аноним (9), 01:08, 11/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Структура -- кусок памяти Значение bool -- тоже кусок памяти И эти куски жёстк... текст свёрнут, показать
     
     
  • 10.276, пох. (?), 13:52, 12/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    все ясно с тобой Я же говорил - продолжай программировать на своем пехепе Си т... большой текст свёрнут, показать
     
     
  • 11.281, Аноним (9), 23:02, 13/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Напоминаю, что структура -- кусок памяти -- это было твоё утверждение Я всего... большой текст свёрнут, показать
     
     
  • 12.284, пох. (?), 14:18, 14/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    ты ни читать не умеешь, ни си не знаешь точно опеннетовский му лан не знающий... текст свёрнут, показать
     
  • 7.261, Аноним (174), 00:31, 11/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    На самом деле у того же x86 есть операция bt (да и в z80 даже уже была - bit), которая проверяет конкретный бит. Поэтому насчёт отсутствия в машине я бы так огульно не того.
     
     
  • 8.277, пох. (?), 13:55, 12/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    _произвольный_ Т е никакого bool в нем по прежнему нет Есть операции с битами... текст свёрнут, показать
     
  • 5.147, Аноним (147), 04:08, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А как же stc или просто какой-нибудь xor/add/test итп?
     
     
  • 6.203, Без аргументов (?), 13:03, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Это все простейшие операции, которые разрулит компилятор. Другое дело там, где нужно параллелить, работать с векторами. Например, операции DSP, делающие несколько арифметических действий за один такт.
     
  • 5.192, Сшчка (?), 11:31, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    - "там есть 8/16/32/64-битные регистры, в которых хранятся числа или адреса"

    Удивительно, но адреса это тоже число, не путайте "сишечников", а то подумают что принципа однородности не существует по Нейману ... пардон ... фон Нейману

     
     
  • 6.202, Без аргументов (?), 13:01, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Это чтобы хоть маленько донести инфу
     
  • 6.204, Без аргументов (?), 13:07, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Есть еще гарвардская архитектура, где адреса вообще отдельно. И физически адреса подчинены выравниванию памяти под удобство мультиплексирования бит по битности шины.
     
     
  • 7.258, пох. (?), 23:09, 10/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Есть еще гарвардская архитектура, где адреса вообще отдельно.

    Только компьютеров нет. Странно, почему.

    (нет, совсем не странно)

     
     
  • 8.260, Без аргументов (?), 23:53, 10/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Микроконтроллеры Cortex M3, M4, M7... текст свёрнут, показать
     
  • 4.76, Без аргументов (?), 21:23, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Мне самому непонятно, зачем изобретать (всё равно тормозные и жрущие ОЗУ) GNOME 4x на языке среднего уровня, а также писать криптографические функции, где акцент на математическом алгоритме, ассемблерные вставки же под инструкции процов вроде AES256, SSE4 в нормальных языках можно организовать тоже (но я не в курсе, используются ли они вообще во всяких openssl/libcrypto).
     
  • 3.62, Аноним (56), 21:04, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Слушай, языку с узкой жестко определённой применимостью (ядра ОС и драйверы) это простительно. А вот языку высокого уровня для ламеров - нет, это позор.
     
     
  • 4.148, Аноним (147), 04:12, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Что такое «жестко определенная применимость» кем это она жестко определенна? Пишите на чем удобно и всего делов. Главное ж результат
     
     
  • 5.181, Аноним (56), 09:53, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Вот из-за "главное результат" имеем электрон на десктопе и нижайшее качество софта за всю историю индустрии. Потому что вот такие с подходом "пилю на чем хочу законом не запрещено" не умеют в проектирование.
     
  • 3.146, Chlen22sm (?), 03:34, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > C23

    Не нужно. Си ценят именно как стабильный язык, его реализацию "ISO/IEC 9899:1990" используют в военке, космонавтике, атомных станциях, прочих критически важных и отказоустойчивых системах. Говорю как человек, который знает об этом не по наслышке.

     
     
  • 4.173, Аноним (47), 09:42, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >>> Не нужно. <<<

    Ну, что вы так сразу:( Например, там в <limits.h> добавили полезные макросы, - мелочь а приятно:)

     
  • 2.229, Аноним (229), 22:29, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    В Common Lisp'е nil и t всегда были типами. И одновременно значениями своих типов. nil так ваще был единственным значением типа nil, а вот тип t, помимо t, включал в себя значения всех других типов. Но это лисп, ему можно, потому что там nil и t заодно ещё и символы, и каждый evalится в себя. Да и вообще это прям таки философия лиспа, засунуть лисп в лисп, чтобы можно было evalить, evalя, он заточен под это. А вот как php переживёт это безумие...

    Но я к тому, что нет ничего нового под Луной.

     

     ....большая нить свёрнута, показать (45)

  • 1.10, Аноним (5), 19:25, 08/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Кто-то может объяснить чего именно не хватало в пхп что он мутировал в такую мерзоту? Он же прекрасно выполнял всё для чего был создан.
     
     
  • 2.12, Аноним (8), 19:29, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ему не хватало пхпфондейшен и внесения изменений ради изменений
     
     
  • 3.170, Аноним (174), 09:40, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вот точно, похоже со стартом фондейшна всё и крякнулось.
     
  • 2.15, Аноним (11), 19:30, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Хотелось, видимо, чтобы он таки был языком программирования, а не недошаблончиком.
     
     
  • 3.18, Аноним (18), 19:33, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Т.е. 20 лет писали на недоязыке и сейчас пришло время?
     
     
  • 4.22, Анонимомус (?), 19:38, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    С разморозкой! Время пришло ещё 15 лет назад и все изменения поступательные.
     
  • 3.21, Аноним (5), 19:38, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    но так он же и создавался для того чтобы шаблончики разворачивать. Давайте блин из стула язык программирования делать
     
  • 2.17, Аноним (16), 19:32, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >Кто-то может объяснить чего именно не хватало в пхп

    Отпинывателя тайпскриптеров.

     
  • 2.66, Аноним (56), 21:06, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Никогда не выполнял и сейчас не выполняет. Говно присыпали пудрой. Всегда были альтернативы лучше.
     
     
  • 3.83, Аноним (5), 21:41, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    ну не соглашусь. когда появился модуль к апачу, альтернатив, чтобы наляпать по быстрому говносайт, на сколько я помню, небыло приличных
     
     
  • 4.93, Аноним (56), 22:35, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Cgi был задолго до.
     
  • 4.153, Аноним (153), 07:05, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Чем перл не альтернатива?
     
  • 4.231, Наноним (?), 01:34, 10/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    В эти времена все нормальные люди использовали Perl. Тот же ModPerl под Apache.
     
  • 2.101, пох. (?), 22:44, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Кто-то может объяснить чего именно не хватало в пхп что он мутировал в такую мерзоту?

    Языка программирования.

    > Он же прекрасно выполнял всё для чего был создан.

    Да, но шаблоны страничек на адовой смеси html и интерпретируемого скрипта уже лет двадцать как вышли из моды.

     
     
  • 3.119, Аноним (136), 00:22, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Можно подумать, что на PHP 8.2 нельзя написать адовую смесь html и интерпретируемого скрипта...

     
     
  • 4.259, пох. (?), 23:13, 10/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Можно подумать, что на PHP 8.2 нельзя написать адовую смесь html и
    > интерпретируемого скрипта...

    можно (правда, уже сложнее) но речь о том что на нем еще можно просто программы писать, довольно большие и сложные - а вот на любимом тобой php4 - невозможно, увы.

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


     
     
  • 5.262, Аноним (174), 00:34, 11/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Пачимму невозможно то?
    Как на классических сях, без всяких объектов, процедурами и передачей структур (ООП так-то по сути всего лишь мелкий сахар над этим щщастьем).
    Просто многие разучились.
     
     
  • 6.269, пох. (?), 20:23, 11/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Пачимму невозможно то?
    > Как на классических сях, без всяких объектов, процедурами и передачей структур (ООП
    > так-то по сути всего лишь мелкий сахар над этим щщастьем).
    > Просто многие разучились.

    просто проекты стали - большие. У той pdp7 оперативной памяти было 32k (правда, не байт а двухбайт по-моему)

    Для нее процедур и передачи структур хватало.

    А для какой QT6 - уже нет.

     

  • 1.20, Аноним (13), 19:37, 08/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    напоминаю, что ПХП ("персональная домашняя страничка") - это не язык программирования, а шаблонизатор. Доказательство: как и в любом другом шаблонизаторе, "исходный код" по умолчанию просто выводится в stdout или похожий стрим. А чтобы начать использовать конструкции шаблонизатора, нужно явно это пометить через <? или похожую закорючку. Если переименуете README.txt в README.php, у вас получится правильная "программа" на пыхе. Потому что в ней не окажется <?-закорючки. Хелловорлд на пыхе выглядит не так:

        <?php echo 'hello world';

    Потому что на шаблонизаторе хелловорлд выглядит так:

        hello world

     
     
  • 2.23, Анонимомус (?), 19:42, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    После этого шаблонизатора можно на Java писать сразу как на родном
     
     
  • 3.24, Аноним (13), 19:44, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ага, и на си, и на перле. Пых - это адская мешанина всех вышеозвученных языков. Гугли "PHP: a fractal of bad design"
     
     
  • 4.61, Аноним (61), 21:02, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Стоит отметить что по прошествию 10 лет, большинство аргументов из оригинальной статьи потеряло актуальность — функциональность была добавлена, либо исправлена
     
     
  • 5.95, Аноним (56), 22:37, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Не потеряла, семантика и дизайн остались такими же отстойными. Впрочем, если бы создатели пхп могли бы писать хорошо, то они бы не были создателями пхп. Такая вот селя ви.
     
     
  • 6.127, (?), 01:06, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Впрочем, если бы создатели пхп могли бы писать хорошо

    причем тут пхп ? кто вообще может написать крупный проект хорошо и сразу?

     
     
  • 7.184, Аноним (56), 09:59, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Дело не в хорошо и сразу. Дело блин в изначальном грамотном проектировании и дизайне языка. Если строить с самого начала кривулину, то её потом патчами не допилишь без пересмотра основ. А строили именно кривулину, потому что никакой серьёзной теории за пхп не стоит.
     
     
  • 8.238, Аноним (174), 09:28, 10/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Зато за ним стоит много серьёзной практики И поэтому он почти весь вёб, и за пр... текст свёрнут, показать
     
  • 6.135, Аноним (61), 01:41, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    К сожалению, обратная совместимость требует постепенных итеративных изменений.
    Иначе будет как с третьепитоном — зачем переписывать половину приложения с 2.х на 3.х, если можно переписать всё на другом языке, где не будет таких сложностей с обратной совместимостью.
     
     
  • 7.275, пох. (?), 13:35, 12/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > К сожалению, обратная совместимость требует постепенных итеративных изменений.

    Так нет же ж обратной совместимости... и не было никогда (помним foreach, ненавидим)

     
  • 2.31, Аноним (27), 19:59, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > это не язык программирования, а шаблонизатор
    > <?php echo 'hello world';

    уж лучше на перле шаблонизировать

    print <<EOF;
    hello world
    EOF

     
     
  • 3.159, Аноним (159), 08:28, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Перл все слизал с пхп

    <?php
    print <<<EOF
    hello world
    EOF;

     
     
  • 4.232, Наноним (?), 01:45, 10/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    PHP - это если бы дегенерат не осилил Perl и максимально его изуродовал. Именно так PHP и родился, если почитать историю происхождения. До некоторых фишек Perl'а PHP дорос только через десяток лет.
    Сама по себе идея совмещать разметку и код была провальной с самого начала. До многих это быстро дошло, но PHP-хомяки жрали это дерьмо долгие годы, пока не переизобрели колесо в виде всё тех же шаблонизаторов.
    И к чему в итоге пришёл PHP? К самоотрицанию. Теперь никто не пишет на PHP в том стиле, для которого он был придуман.
     
     
  • 5.278, Аноннейм (?), 16:49, 13/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Частично верно
     
  • 2.45, BrainFucker (ok), 20:34, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Доказательство: как и в любом другом шаблонизаторе

    В каком "любом другом", в Jinja2, Pug или где?

     
     
  • 3.157, Аноним (-), 08:19, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    А ведь можно было присунуть PHP в питон...
     

  • 1.25, anonbrain (?), 19:45, 08/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    На сайте указано что была повышена производительность, но в шортрелизе ниже об этом не было ни слова. хоть пример бы какой завезли. в целом тенденция печальная. они делают упор на строгую типизацию, расширенные комментарии, атрибуты через спецкоменты и так далее. знаете какое это отношение имеет к прогрессии в языке ? я тоже не знаю. китайцы из swoole делают бомбу, но сам php в этом направлении пока не спешит двигаться. весь синтакс уже был доведён до отличного состояния (позаимствован у плюсов), но с момента как начали происходить взаимствования у js... что то пошло не так. надеюсь сообщество обратит внимание на многопоточность, асинхронное выполнение, оптимизацию и на улучшение jit который в некоторых сценариях вместо прироста производительности обеспечивал её спад вплоть до нестабильных исключений.
     
     
  • 2.98, тоже Аноним (ok), 22:40, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > на многопоточность, асинхронное выполнение, оптимизацию и на улучшение jit

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

     
     
  • 3.233, Наноним (?), 01:50, 10/12/2022 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Ты хотел сказать "как можно быстрее умереть", потому что PHP точно не тот язык, который когда бы то ни было стремился к оптимизации по скорости. Вот если бы они вместо бесконечного посыпания сахаром действительно ускорили его, то PHP можно было бы простить всё.
     
     
  • 4.239, Аноним (174), 09:28, 10/12/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    На этот счёт уже в 5.6 было сделано очень многое. В 7 ещё больше. В 8 теперь есть JIT, который реально решает на ряде вещей.
     
  • 2.182, Аноним (174), 09:55, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Многопоточности да, сильно не хватает.
    Сейчас приходится юзать свою подложку для кооперативных корутин и exec'нутых подзадач, но там проблема с обменом данными с форкнутыми процессами всё равно остаётся, слишком накладно. Треды с независимыми контекстами и быстрым IPC из треда в тред сильно спасли бы положение.
     
     
  • 3.188, тоже Аноним (ok), 10:58, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Сейчас приходится

    плакать, колоться и вымучивать многопоточные сервисы на пыхе, а не на го, специально для этих задач созданном? Трудно вам.

     
     
  • 4.193, Аноним (174), 11:40, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нет особого желания браться за нишевый язык, который как и прочие руби, забудут через несколько лет.
     
     
  • 5.234, Наноним (?), 01:51, 10/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Go уж точно не забудут через несколько лет: на нём написано уже очень много. Продолжайте жрать кактус.
     
     
  • 6.267, Аноним (174), 10:22, 11/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    На рубях тоже написано много всякого ненужно, а толку.
     
  • 4.197, anonbrain (?), 12:12, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    осталось что бы под го завезли хотя бы один вменяемый mvc фремворк и заживём (этого не будет)
     
     
  • 5.215, тоже Аноним (ok), 16:30, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > (этого не будет)

    Уже хотя бы потому, что модели, шаблону и контроллеру параллелить, как правило, тупо нечего.

     
     
  • 6.240, Аноним (174), 09:30, 10/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Это тебе только кажется. Модели вполне себе способны параллелить запросы к DBMS, а например в условиях геораспределения это может дать вообще неэпический профит.
     
  • 6.241, Аноним (174), 09:31, 10/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ну и опять же, зависит от того, что у тебя за модель. Если плоская примитивная вида "вгрузи вот это как есть и хорошо" - да, кроме запросов особо ничего и нет. Если модель обвязана буизнесс-логикой и имеет сложные структурные связи, да ещё и к разносортным API присобачена, то там вполне себе есть чего разобрать.
     
  • 5.265, Лигивон (?), 10:17, 11/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Уже давно завезли buffalo
     
     
  • 6.280, Аноннейм (?), 16:54, 13/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Вы читали его доки ? или с китайского ещё не всё перевели хотя бы на английский?
     
  • 4.279, Аноннейм (?), 16:52, 13/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Упаси господь, есть куда более приемлимые варианты.
     

  • 1.26, Аноним (26), 19:46, 08/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Ждём когда linux перепишут на PHP!
     
     
  • 2.32, Аноним (27), 20:01, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Требуем включить пых в ядро как самый безопасный язык!
     
     
  • 3.50, Аноним (50), 20:50, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Поэтому его и не включат туда включают только опасные языки.
     
     
  • 4.149, Аноним (147), 04:16, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    По-моему если пишешь на пыхе - ты уже представляешь опасность
     
  • 2.67, Аноним (56), 21:07, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ну вот уж не надо, лучше на расте.
     

  • 1.28, YetAnotherOnanym (ok), 19:53, 08/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    > Добавлены отдельные типы "true", "false" и "null", которые могут принимать только одно допустимое значение

    Вангую добавление в следующих версиях отдельного типа "half", который может принимать только одно допустимое значение 0.5, "quarter", который может принимать только одно допустимое значение "¼", "one", который может принимать только одно допустимое значение 1.0 и "two", который может принимать только одно допустимое значение "II".

     
     
  • 2.34, Аноним (13), 20:01, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Не поверишь, но в языках с богатыми возможностями типизации это уже есть:

        type Half = 0.5;

        const myVar1: Half = 0.6; // Error: Type '0.6' is not assignable to type '0.5'.
        const myVar2: Half = 0.5; // OK

    Ибо тип -- это множество всех допустимых значений.

     
     
  • 3.39, Аноним (27), 20:05, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ты не понял... Ты привёл пример, где ты сам определяешь тип, а в статье речь про уже "добавлены типы".
     
  • 3.79, YetAnotherOnanym (ok), 21:35, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Ты не поверишь, но в сабже эти типы ("true", "false" и "null") появились только сейчас, и его разработчики даже сочли нужным сообщить об их появлении своей пастве.
     
     
  • 4.217, Аноним (164), 17:00, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ты не поверишь, но в php тип null появились только 20 лет назад, а очередной опеннет эксперт даже счел нужным сообщить о собственной глупости своей пастве.

     

     
     
  • 5.266, Лигивон (?), 10:18, 11/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ну верни мне тип null из функции в 8.1, эксперт.
     
  • 3.168, Аноним (174), 09:39, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Напоминает специальную олимпиаду...
     
  • 2.36, Аноним (27), 20:02, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    а когда сделают нечёткую логику "да, но потом"?
     
     
  • 3.80, Sw00p aka Jerom (?), 21:37, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    вот вот раз уж пошла иерархия типов
     
  • 3.82, YetAnotherOnanym (ok), 21:38, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Маньяна, иншалла.
     
  • 3.100, тоже Аноним (ok), 22:41, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Да, но потом.
     
     
  • 4.185, Аноним (56), 10:00, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Lazy evaluations?
     
  • 3.109, Sw00p aka Jerom (?), 23:23, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Motivation -> Type system completeness

    хорошая мотивация

     
  • 3.132, Аноним (128), 01:19, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это к реактосному джедайке.
     
  • 3.250, Аноним (250), 19:54, 10/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Для этого надо придумывать "женский" ЯП! Там ВСЁ будет на нечёткой логике. :)) bool - это "да", "нет", "может быть". Ошибка? Есть её обработчик "Отстань, не до тебя сейчас". Цикл от 0 до "я устала". Много чего интересного сделать можно :)
     

  • 1.30, Онанистмус (?), 19:59, 08/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    То чувство когда компилируемый golang проще чем интерпретируемый php.
    Мда из простых получается только python остался.
     
     
  • 2.40, Аноним (27), 20:06, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    перл проще - в нём пробелы считать не надо.
     
     
  • 3.46, BrainFucker (ok), 20:36, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Перл проще, потому что на нём писать лучше даже не начинать. Нет кода нет проблем.
     
  • 2.59, Амитабх Бачан (?), 21:02, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Из простых остался только раст.  Типы да трейты - вот и весь язык. Ни классов,  ни наследования,  никаких там "readonly class" - все кашерно,  все по минимуму. Раст - единственная достойная замена пыхе. Жалко. Много лет на пыхе программировал - версия 7.4 была самая лучшая,  на  восьмерку даже и не думал переходить. В итоге сейчас перехожу на раст, так как на восьмой пых больно смотреть.
     
     
  • 3.129, (?), 01:12, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Вот чем хорош пхп, так это совместимостью, не заставляют же использовать все эти опции, а там хоть 5 хоть 8, это не питон.
     
     
  • 4.151, Аноним (151), 06:46, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ну попробуй запустить современный фреймворк или волдпресс на PHP 5.6
     
     
  • 5.271, (?), 00:53, 12/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Ну попробуй запустить современный фреймворк или волдпресс на PHP 5.6

    а мс-офис-2010 на дос запустить не надо?, а может хром на ардуино-нано, дурилка

     
  • 4.235, Наноним (?), 01:55, 10/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Нет там никакой в PHP особой совместимости. Ломают и в 8, ломали при переходе с 4 на 5, и при переходе с 5 на 7. Дофига всего нужно было переделывать.
     
     
  • 5.270, (?), 00:51, 12/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Нет там никакой в PHP особой совместимости. Ломают и в 8, ломали
    > при переходе с 4 на 5, и при переходе с 5
    > на 7. Дофига всего нужно было переделывать.

    хз, вот недавно с githaba брал скрипт 13-летней давности, ну да 600+ строк кода всего, но никаких проблем вообще, вместо curl какойто ...хз что, но работает в 8 без проблем, есть аналогичные классы для laravel, еще для чего-то, только нафиг их, класс в классе в классе, зачем.

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

     
     
  • 6.272, V1 (ok), 05:06, 12/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ссылку на чудо скрипт дайте. Он ведь не секретный.
     
  • 6.274, 1 (??), 10:17, 12/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Ну дык ... Вышеозначенный
    <?php
    print <<<EOF
    hello world
    EOF;

    Написан раз - работает везде.
    Хотя и никому не нужен.

     
  • 4.273, 1 (??), 10:15, 12/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Вот чем хорош пхп, так это совместимостью

    ты что ль молодой совсем ?
    Не застал 5.3 -> 5.4 ? Ну или 5.6 -> 7 ?

     
  • 2.158, Аноним (-), 08:20, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >простых
    >python

    Это в котором тоже с 3 версии синтаксис удобрили до состояния компоста?

     
     
  • 3.216, Онанистмус (?), 16:32, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Мне только оператор моржика не нравится вот этот := а так самый читаемый язык до сих пор.
     

  • 1.38, Chlen22sm (?), 20:03, 08/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Пыха стал тяжелее крестов. Что называется дожили.
     
     
  • 2.51, Аноним (50), 20:51, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Вроде так и должно быть или у тебя такой утонченный стеб? Такой нежирный что даже с монитора не стекает.  
     
     
  • 3.143, Chlen22sm (?), 03:22, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Вроде так и должно быть

    Для курильщиков может и так, но здоровый человек должен упрощать.

     
  • 2.156, Аноним (164), 08:14, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Настоящим программистам достаточно "соответствующего тьюрингу" языка, любой опеннет эксперт это знает
     

  • 1.41, Аноним (41), 20:08, 08/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Как только куда-то начинают запихивать ООП, это сразу дохнет.
     
     
  • 2.53, Аноним (9), 20:51, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Как только куда-то начинают запихивать ООП, это сразу дохнет.

    Если вообще что-то запихивать, то тому, во что пихают, будет плохо. Потому что нужно грамотно проектировать, а не пихать.

     
     
  • 3.242, Аноним (174), 09:32, 10/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Есть некоторые исключения из этого...
     

  • 1.81, Sw00p aka Jerom (?), 21:37, 08/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    >Добавлены отдельные типы "true", "false" и "null"

    про дурака и Бога :)

     
  • 1.84, Отец Ононим (?), 21:41, 08/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Когда уже добавят undefined, Infinity и NaN? Мне не хватает средств для самовыражения.
     
     
  • 2.87, Аноним (27), 22:06, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Куда ты торопишься? Они только-только до false дошли.
     
  • 2.97, Аноним (56), 22:40, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Когда дочитают вторую книгу по программированию.
     
  • 2.169, Здрасьте (?), 09:40, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Infinity (INF) и NaN (NAN) в языке есть сто лет в обед, как и во многих других. Эти числа — часть стандарта IEEE 754. И даже минус ноль есть.
     
     
  • 3.191, Sw00p aka Jerom (?), 11:25, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >в языке есть сто лет в обед

    типы или значения?

     
     
  • 4.214, Здрасьте (?), 16:28, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Значения. Тип у этих значений по стандарту — с плавающей запятой (в данном случае — float).
     
     
  • 5.220, Sw00p aka Jerom (?), 18:19, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > Значения. Тип у этих значений по стандарту — с плавающей запятой (в
    > данном случае — float).

    так "Отец Ононим" выше за типы говорил, а не значения.

     

  • 1.86, Аноним (136), 21:51, 08/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кто первый придумал это уродство?
    #[\SensitiveParameter] $password,
     
     
  • 2.108, Sw00p aka Jerom (?), 23:01, 08/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    этот -> Author: Tim Düsterhus, duesterhus @ woltlab.com
     
  • 2.166, Аноним (174), 09:37, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вообще реализация атрибутов - лютый ***тизм.
     
     
  • 3.172, Здрасьте (?), 09:41, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Да? Почему? Какая разница вообще какой синтаксис у атрибутов? Это всё полнейшая вкусовщина. А у решётки хоть плюс есть — старых версии пхп её воспримут как коммент, обратная совместимость.
     
     
  • 4.177, Аноним (174), 09:47, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Оно не инлайнится, опять рулоны.
     
     
  • 5.187, Здрасьте (?), 10:34, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Если плевать на обратную совместимость, инлайнится, конечно.
     
  • 2.186, Аноним (56), 10:03, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    И после этого кто-то будет называть пхп пристойным языком?
     

  • 1.104, Golangdev (?), 22:56, 08/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > класса доступным только для чтения

    копипаста с Java Records

     
  • 1.120, Аноним (136), 00:43, 09/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Хороший был инструмент под названием PHP до версии 7, простой и самодостаточный. Потом вместо нормальной модульности придумали уродский костыль в виде namespaces.
    И понеслось...

     
     
  • 2.165, Аноним (174), 09:35, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну, namespaces кстати удобны. К ним бы ещё множественное наследования.
    А так - да, в плане расширения синтаксиса занимаются хренью какой-то честно говоря.
     

  • 1.125, Аноним (125), 01:03, 09/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кто нибудь знает, планируется ли добавление блочного ограничения области видимости переменной?
     
     
  • 2.137, Аноним (136), 01:47, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вротпресс такого не переживет. А без него PHP отправится вслед за Perl.
     
     
  • 3.236, Наноним (?), 02:00, 10/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    PHP никогда не отправится вслед за Perl, потому что Perl - по-прежнему лучший для парсинга текста и "склеивания" разнородных скриптов и систем. PHP же в этом качестве всегда был негодным инструментом. Поэтому PHP однажды просто сдохнет.
     

  • 1.141, Аноним (141), 03:18, 09/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Чего хотели? Каждое десятилетие язык меняется. В конторе есть простенький сайт на php5 на 98 винде крутится, 256 мегабайт оперативки хватает.
     
  • 1.150, Аноним (150), 05:28, 09/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    Нельзя писать "ключевые улучшения" !!!!
    Надо писать "ключевые ИЗМЕНЕНИЯ" !! А уж являются ли они "улучшениями, каждый сам для себя решит...  пока в язык только хрень всякую тащат  :(
     
     
  • 2.152, Анони Карбайкл (?), 06:53, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Блестяще! Это не улучшения - это ключевые ухудшения! Превратили php  в выгребную яму языковых отходов! Руки прочь от нашего пхп! Оставьте его в покое!
     
     
  • 3.212, Анонист (?), 15:33, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >Превратили php  в выгребную яму языковых отходов!

    Так так и было задумано - выгребная яма языковых отходов для выгребной ямы индустрии IT.

     

  • 1.155, Igraine (ok), 08:01, 09/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >Указание флага "readonly" на уровне класса

    Молодцы, даже в kotlin такого нет.

     
     
  • 2.160, Igraine (ok), 08:33, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    >Объявлена устаревшей возможность динамического создания свойств в классе. В PHP 9.0 обращение к свойствам, изначально не определённым в классе, будет приводить к ошибке (ErrorException)

    Очень хорошо что выводят строгие ограничения на типы и классы, молодцы.

     

  • 1.163, Аноним (174), 09:33, 09/12/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Такое ощущение, что в коре развития языка случился какой-то Ц - Добавлены отдел... большой текст свёрнут, показать
     
     
  • 2.190, фф (?), 11:04, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    - Функции, подобные strtolower() и strtoupper(), теперь всегда преобразуют регистр символов в диапазоне ASCII как при выставлении локали "С"
    Всё бы ничего, но возможность вернуть старое поведение не оставлена, а значит кучу легаси надо будет проверять на предмет использования со всякими "ё".

    -- "ё" не входит в "диапазон ASCII" - можно не проверять.

     
     
  • 3.195, Аноним (174), 11:42, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    "ё" - это образно. В ASCII8 много всякого интересного в начале диапазона.
     
     
  • 4.196, Аноним (174), 11:43, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    // в начале расширенного диапазона 128-255, а то снова не разжевал
     
     
  • 5.208, фф (?), 13:28, 09/12/2022 [^] [^^] [^^^] [ответить]  
  • +2 +/
    расширенный режим 128-255 не входит в ASCII
    ASCII (он же ANSI X3.4) содержит только коды 00-7F (все остальное - это "неизвестные символы")
    тут либо описание нововведения неверно, либо проверять нечего
     
     
  • 6.251, Аноним (174), 20:11, 10/12/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Там так: в расширенных кодах ASCII8 пыталась учитываться локаль. Теперь чистый ASCII7 по кейсингу, как в C locale.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру