The OpenNET Project / Index page

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



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Релиз языка программирования PHP 8.2, opennews (?), 08-Дек-22, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


49. "Релиз языка программирования PHP 8.2"  –1 +/
Сообщение от Анонимemail (9), 08-Дек-22, 20:47 
>>>> как достижение века! <<<
> В язык Си (C23) вон тоже добавили полноценный bool, false, true, -
> больше не надо использовать <stdbool.h>, а false и true это больше
> не макросы, - вот это я понимаю достижение:)

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

Ответить | Правка | Наверх | Cообщить модератору

73. "Релиз языка программирования PHP 8.2"  +4 +/
Сообщение от Без аргументов (?), 08-Дек-22, 21:15 
Вам, кто называет "сишечкой" не понятно, что Си создавался для того, чтобы не писать на ассемблере, и чтобы можно было компилить более менее кросс-железно. Его правильней называть языком среднего уровня. В железе нет типа bool, там есть 8/16/32/64-битные регистры, в которых хранятся числа или адреса, а также битовые флаги в регистрах не общего назначения, которые меняются через загрузку в регистр общего назначения и выгрузку обратно, и больше ничего. Задача Си преобразовать алгоритмические читаемые глазами операции в машинный код конкретного процессора. Rust же неоправданно перегружен кучей всяких спецсимволов, осложняющих чтение, что приведёт к ошибкам по невнимательности.
Ответить | Правка | Наверх | Cообщить модератору

75. "Релиз языка программирования PHP 8.2"  +3 +/
Сообщение от Аноним (47), 08-Дек-22, 21:20 
>>> Rust же неоправданно перегружен кучей всяких спецсимволов, осложняющих чтение <<<

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

Ответить | Правка | Наверх | Cообщить модератору

116. "Релиз языка программирования PHP 8.2"  +1 +/
Сообщение от Аноним (27), 08-Дек-22, 23:56 
в Си хотя бы стандарты есть.
Ответить | Правка | Наверх | Cообщить модератору

99. "Релиз языка программирования PHP 8.2"  +1 +/
Сообщение от пох. (?), 08-Дек-22, 22:41 
Меня до сих пор изумляет слепота разработчиков, выдумавших в нем совершенно лишние  платформозависимые типы, завязавших ВСЕ на sizeof(char) из-за которого нельзя было перейти на юникод без адского трэша, просто объявив что в этом компиляторе char двухбайтный (задуман он тоже, разумеется, был как платформозависимый), и выбросивших тип byte - единственный тип в bcpl, который как раз был в этом месте сделан правильно.

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

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

Ответить | Правка | К родителю #73 | Наверх | Cообщить модератору

131. "Релиз языка программирования PHP 8.2"  +/
Сообщение от Аноним (128), 09-Дек-22, 01:16 
>объявив что в этом компиляторе char двухбайтный

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

Ответить | Правка | Наверх | Cообщить модератору

162. "Релиз языка программирования PHP 8.2"  +/
Сообщение от Аноним (47), 09-Дек-22, 09:21 
Я бы сказал иначе, - если вам нужно работать "по-серьёзному" со строками?, - выбирайте другой язык программирования!
Ответить | Правка | Наверх | Cообщить модератору

225. "Релиз языка программирования PHP 8.2"  +/
Сообщение от Аноним (222), 09-Дек-22, 19:48 
Энтерпрайзно одобренный способ вызывать malloc()
Ответить | Правка | Наверх | Cообщить модератору

230. "Релиз языка программирования PHP 8.2"  +/
Сообщение от Аноним (228), 09-Дек-22, 22:57 
Попутал char с трамвайной ручкой. :-)

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

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

Ответить | Правка | К родителю #99 | Наверх | Cообщить модератору

252. "Релиз языка программирования PHP 8.2"  +1 +/
Сообщение от пох. (?), 10-Дек-22, 20:18 
> sizeof(char) == 1 по определению.

Чьему блжад определению?

> Да, уместнее его было назвать byte

Нет. Байт - это байт. А char- тип для хранения символов. Так же как int тип для хранения неведомо какого размера чисел. Который в результате ни для какого непригоден в программках сложнее хеловрот, поскольку совершенно непонятно ни как считать в числах неведомой размерности, ни как их потом сохранять на диск для последующего чтения или в сеть отдать, и приходится заменять его уродливыми uint64t

Зачем тот и другой мусор в языке для управления памятью и работы с устройствами - боюсь, сегодня даже сами Керниган с Томсоном не могли бы ответить. (Но я подозреваю что из-за того что space travel была на фортране каком-нибудь, а потом уже некогда было думать, кодить надо)

В bcpl от которого они отпочковались, все было правильно. А *a++ завязанного на занятную но бесполезную детальку реализации одного специфического процессора мертвого сорок лет как - не было.
(потому что он под interdata делался, где такого нет)

Ответить | Правка | Наверх | Cообщить модератору

263. "Релиз языка программирования PHP 8.2"  +/
Сообщение от Аноним (209), 11-Дек-22, 00:53 
When sizeof is applied to an operand that has type char, unsigned char, or signed char, (or a qualified version thereof) the result is 1.”

- C11 (ISO/IEC 9899–2011) Section 6.5.3.4

Ответить | Правка | Наверх | Cообщить модератору

268. "Релиз языка программирования PHP 8.2"  +/
Сообщение от Аноним (47), 11-Дек-22, 16:51 
Ох, уж эти стандарты:)
Немного оффтопик. Я кстати, был приятно удивлён что в С23 накоцец таки теперь представление целых чисел это only 2's complement:) Хм... такими темпами может скоро и CHAR_BIT сделают only 8:))
Ответить | Правка | Наверх | Cообщить модератору

111. "Релиз языка программирования PHP 8.2"  +/
Сообщение от Анонимemail (9), 08-Дек-22, 23:32 
> Вам, кто называет "сишечкой" не понятно, что Си создавался для того, чтобы
> не писать на ассемблере, и чтобы можно было компилить более менее
> кросс-железно. Его правильней называть языком среднего уровня. В железе нет типа
> bool, там есть 8/16/32/64-битные регистры, в которых хранятся числа или адреса,
> а также битовые флаги в регистрах не общего назначения, которые меняются
> через загрузку в регистр общего назначения и выгрузку обратно, и больше
> ничего. Задача Си преобразовать алгоритмические читаемые глазами операции в машинный код
> конкретного процессора. Rust же неоправданно перегружен кучей всяких спецсимволов, осложняющих
> чтение, что приведёт к ошибкам по невнимательности.

Тип bool однозначно и очевидно переводится в машинное число. Но не это главное. В Си есть логические операции, но работают они с числами! Вот это поначалу обескураживает. По-моему, не было ни единой причины так долго не вводить bool.

А если начнёте говорить, что это, мол, уже абстракция над машинным числом, то я отвечу, что в Си есть структуры. И это, согласитесь, куда более высокоуровневая штука, чем этот бедный bool.

Ответить | Правка | К родителю #73 | Наверх | Cообщить модератору

115. "Релиз языка программирования PHP 8.2"  +/
Сообщение от Капитан Очевидностьemail (?), 08-Дек-22, 23:55 
>>Си есть структуры. И это, согласитесь, куда более высокоуровневая штука,

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

Ответить | Правка | Наверх | Cообщить модератору

121. "Релиз языка программирования PHP 8.2"  +/
Сообщение от Анонимemail (9), 09-Дек-22, 00:53 
>>>Си есть структуры. И это, согласитесь, куда более высокоуровневая штука,
> Нет, структуры как и базовые типы, это самая основа, и они ближе
> к железу.
> Даже древние процессоры, хоть как нибудь, аппаратно поддерживали работу со структурами,
> ибо они требовались изначально для работы с периферией.
> Абстракциия от аппаратной части - это Json и аналоги.

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

Ответить | Правка | Наверх | Cообщить модератору

200. "Релиз языка программирования PHP 8.2"  +/
Сообщение от Без аргументов (?), 09-Дек-22, 12:52 
Bool это не просто число, он может быть только единицей.
Ответить | Правка | Наверх | Cообщить модератору

201. "Релиз языка программирования PHP 8.2"  +/
Сообщение от Без аргументов (?), 09-Дек-22, 12:57 
Почему структуры в Си не равно этим вашим JSON и объектам напримере порта микроконтроллера:
у порта как любого физического устройства есть адрес, по которому физический механизм памяти определяет, куда мультиплексировать (грубо говоря соединить как телефонная станция) сигнальные линии шины с устройством передачи — регистром АЛУ, физических линий. Условно, 0x00001000;
железно, порт внутри содержит регистры, они адресуются инкрементом базового адреса регистра. т.о. шагая вперед с интервалом в 32 бита, 0x00001020, мы можем пройти по каждому регистру.
Структура же просто повторяет физическую структуру порта. И поле регистра структуры сразу адресует в нужное место в рамках адресов регистра.
Ответить | Правка | К родителю #111 | Наверх | Cообщить модератору

226. "Релиз языка программирования PHP 8.2"  –1 +/
Сообщение от Аноним (-), 09-Дек-22, 19:57 
Про выравнивание в курсе?
Ответить | Правка | Наверх | Cообщить модератору

237. "Релиз языка программирования PHP 8.2"  –1 +/
Сообщение от Аноним (174), 10-Дек-22, 09:24 
В число - однозначно. В машинное - вообще не однозначно и не очевидно.
Что такое ваш конкретный bool - 8 бит, 16 бит, 32 бита, 64 бита?
Или быть может оно вообще побитово в слово упаковано по 64 штуки в слове?
Ответить | Правка | К родителю #111 | Наверх | Cообщить модератору

243. "Релиз языка программирования PHP 8.2"  +/
Сообщение от Анонимemail (9), 10-Дек-22, 13:20 
> В число - однозначно. В машинное - вообще не однозначно и не
> очевидно.
> Что такое ваш конкретный bool - 8 бит, 16 бит, 32 бита,
> 64 бита?
> Или быть может оно вообще побитово в слово упаковано по 64 штуки
> в слове?

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

Ответить | Правка | Наверх | Cообщить модератору

245. "Релиз языка программирования PHP 8.2"  +/
Сообщение от Аноним (174), 10-Дек-22, 18:03 
Самый примитивный bool - это и есть любой бит в слове произвольной длины. Соответственно можно и упаковать :)
Ответить | Правка | Наверх | Cообщить модератору

254. "Релиз языка программирования PHP 8.2"  +1 +/
Сообщение от пох. (?), 10-Дек-22, 20:24 
> Тип bool однозначно и очевидно переводится в машинное число. Но не это

только в твоих фантазиях. В машине нет никакого bool.

> главное. В Си есть логические операции, но работают они с числами!

потому что в процессоре есть логические операции, и работают они - вот удивительно - с числами. jz и jnz совершенно все равно какое там число, если оно не ноль.

> Вот это поначалу обескураживает.

Тебе лучше программировать на php.

> то я отвечу, что в Си есть структуры. И это, согласитесь,
> куда более высокоуровневая штука, чем этот бедный bool.

Нет, ни разу. Это просто набор смещений для указателя на область памяти. Т.е. вполне отображаемый на архитектуру компьютера синтаксический сахарок.
В отличие от "bool", которого не существует в принципе.

Если эти вещи тебе не очевидны еще со школьных уроков информатики - продолжай программировать на php. js боюсь покажется тебе слишком сложным и непонятным с его 1+1.

Ответить | Правка | К родителю #111 | Наверх | Cообщить модератору

255. "Релиз языка программирования PHP 8.2"  +/
Сообщение от Анонимemail (9), 10-Дек-22, 20:57 
Если для тебя структура является синтаксическим сахарком над смещениями указателя, то синтаксическим же сахарком для тебя должен являться и тип bool (гораздо более простым и очевидным сахарком кстати). Но если для тебя bool -- это что-то из области ООП, то продолжай программировать на сишечке. До более серьёзных языков ты пока не дорос.
Ответить | Правка | Наверх | Cообщить модератору

257. "Релиз языка программирования PHP 8.2"  +/
Сообщение от пох. (?), 10-Дек-22, 23:08 
Еще раз: "структура" твоя - просто кусок памяти, в котором есть оффсеты его внутренних кусков.
Ничего такого чего нет физически в процессоре.
Большинство современных ассемблеров даже умеют эти структуры почти как в си, потому что это просто арифметика на адресах.

Никакого bool в процессоре - нет.

Не лопни от серьезности, твой удел - php.

Си придумали те кто совершенно не собирались абстрагироваться от аппаратных реализаций.
Просто сделали себе язык чуть поудобнее в написании чем макроассемблер. Поэтому bool им был без надобности. Вот зачем они притащили char вместо byte - действительно загадка. Полагаю таки именно по причине того, что самая первая версия языка была не для системной, а для прикладной задачи.

Ответить | Правка | Наверх | Cообщить модератору

264. "Релиз языка программирования PHP 8.2"  +/
Сообщение от Анонимemail (9), 11-Дек-22, 01:08 
Структура -- кусок памяти. Значение bool -- тоже кусок памяти. И эти куски жёстко определены на этапе компиляции. Так где ты разглядел отличие одного от другого?

А ещё, довожу до твоего сведения, что язык C появился как раз для того, что бы "абстрагироваться от аппаратных реализаций". Что бы можно было писать программу на абстрактном языке, а потом компилировать для любой архитектуры, а не писать программы отдельно под каждый компьютер.

Ответить | Правка | Наверх | Cообщить модератору

276. "Релиз языка программирования PHP 8.2"  +/
Сообщение от пох. (?), 12-Дек-22, 13:52 
> Структура -- кусок памяти.

все ясно с тобой. Я же говорил - продолжай программировать на своем пехепе. Си ты даже на уровне кое-как наспех прочитанной K&R не знаешь.

struct a
{
   int b;
   char c[100];
};

где тут кусок памяти?

> А ещё, довожу до твоего сведения, что язык C появился как раз для того, что бы
> "абстрагироваться от аппаратных реализаций".

довожу до твоего сведения: нет, ни разу. Астральное знание (ибо книжек ты не читал) тебя опять подвело.

*(a++) это прямо вот аппаратная реализация. Причем - одного конкретного процессора DEC.
Причем a++, но --a. И только так (спроси у инженеров DEC почему - ты ж астральное знание имеешь, значит можешь с ними связаться).

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

Более того - модный потом c++ ТОЖЕ появился в первую очередь чтоб поменьше по кнопкам колотить. От ассемблеров уже ушли, и захотели уйти от ctrl-c/ctrl-v, переложив его на компилятор. Оно именно это и делало на начальном этапе.

Ответить | Правка | Наверх | Cообщить модератору

281. "Релиз языка программирования PHP 8.2"  +/
Сообщение от Анонимemail (9), 13-Дек-22, 23:02 
>> Структура -- кусок памяти.
> все ясно с тобой. Я же говорил - продолжай программировать на своем
> пехепе. Си ты даже на уровне кое-как наспех прочитанной K&R не
> знаешь.

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

Далее, про "абстрагирование от железа". Не знаю, какие ты книжки читал (и читал ли вообще), но начать стоило хотябы с вики: [https://ru.wikipedia.org/wiki/История_языка_Си]. И там для тебя написано вот такое:

> Было вынесено предложение использовать какой-нибудь высокоуровневый портируемый язык, чтобы можно было легко переносить ОС с одного компьютера на другой. Язык Би, который они хотели сначала задействовать для этого, оказался лишён функциональности, способной использовать новые возможности PDP-11. Поэтому они и остановились на разработке языка Си.

Если написанное пока ещё не понятно (ничего страшного, ведь это посложнее комментиков на опеннете), позволю себе присовокупить ещё вот такое опеределение понятия "абстракция", найденное на просторах интернета (именно оно подходит сюда по контексту):

> Абстракция — результат абстрагирования. Абстрагирование — отвлечение в процессе познания от несущественных сторон, свойств, связей объекта (предмета или явления) с целью выделения их существенных, закономерных признаков. Результат абстрагирования — абстрактные понятия, например: цвет, кривизна, красота и т.д.

А теперь поясняю конкретно на твоём примере. Создатели Си посчитали, что программисту неважно, какие конкретно опкоды будут, к примеру, у операции сложения в PDP-7 и PDP-11. То есть это несущественное свойство архитектуры, которое можно абстрагировать. Так в C появился оператор сложения, который является абстракций над опкодами сложения в любых поддерживаемых компилятором архитектурах.

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

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

Ответить | Правка | Наверх | Cообщить модератору

284. "Релиз языка программирования PHP 8.2"  +/
Сообщение от пох. (?), 14-Дек-22, 14:18 
> Напоминаю, что "структура -- кусок памяти" -- это было твоё утверждение

ты ни читать не умеешь, ни си не знаешь.

> не знаю, какие ты книжки читал (и читал ли вообще), но начать стоило хотябы
> с вики: [https://ru.

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

Нет, твой бред читать дальше мне незачем.

Ответить | Правка | Наверх | Cообщить модератору

261. "Релиз языка программирования PHP 8.2"  +/
Сообщение от Аноним (174), 11-Дек-22, 00:31 
На самом деле у того же x86 есть операция bt (да и в z80 даже уже была - bit), которая проверяет конкретный бит. Поэтому насчёт отсутствия в машине я бы так огульно не того.
Ответить | Правка | К родителю #254 | Наверх | Cообщить модератору

277. "Релиз языка программирования PHP 8.2"  +/
Сообщение от пох. (?), 12-Дек-22, 13:55 
> На самом деле у того же x86 есть операция bt (да и
> в z80 даже уже была - bit), которая проверяет конкретный бит.

_произвольный_.

Т.е. никакого bool в нем по прежнему нет. Есть операции с битами.

Не путай булеву алгебру и примитивный bool.

Ответить | Правка | Наверх | Cообщить модератору

147. "Релиз языка программирования PHP 8.2"  +/
Сообщение от Аноним (147), 09-Дек-22, 04:08 
А как же stc или просто какой-нибудь xor/add/test итп?
Ответить | Правка | К родителю #73 | Наверх | Cообщить модератору

203. "Релиз языка программирования PHP 8.2"  +/
Сообщение от Без аргументов (?), 09-Дек-22, 13:03 
Это все простейшие операции, которые разрулит компилятор. Другое дело там, где нужно параллелить, работать с векторами. Например, операции DSP, делающие несколько арифметических действий за один такт.
Ответить | Правка | Наверх | Cообщить модератору

192. "Релиз языка программирования PHP 8.2"  +/
Сообщение от Сшчка (?), 09-Дек-22, 11:31 
- "там есть 8/16/32/64-битные регистры, в которых хранятся числа или адреса"

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

Ответить | Правка | К родителю #73 | Наверх | Cообщить модератору

202. "Релиз языка программирования PHP 8.2"  +/
Сообщение от Без аргументов (?), 09-Дек-22, 13:01 
Это чтобы хоть маленько донести инфу
Ответить | Правка | Наверх | Cообщить модератору

204. "Релиз языка программирования PHP 8.2"  +/
Сообщение от Без аргументов (?), 09-Дек-22, 13:07 
Есть еще гарвардская архитектура, где адреса вообще отдельно. И физически адреса подчинены выравниванию памяти под удобство мультиплексирования бит по битности шины.
Ответить | Правка | К родителю #192 | Наверх | Cообщить модератору

258. "Релиз языка программирования PHP 8.2"  +/
Сообщение от пох. (?), 10-Дек-22, 23:09 
> Есть еще гарвардская архитектура, где адреса вообще отдельно.

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

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

Ответить | Правка | Наверх | Cообщить модератору

260. "Релиз языка программирования PHP 8.2"  +/
Сообщение от Без аргументов (?), 10-Дек-22, 23:53 
Микроконтроллеры. Cortex M3, M4, M7
Ответить | Правка | Наверх | Cообщить модератору

76. "Релиз языка программирования PHP 8.2"  +/
Сообщение от Без аргументов (?), 08-Дек-22, 21:23 
Мне самому непонятно, зачем изобретать (всё равно тормозные и жрущие ОЗУ) GNOME 4x на языке среднего уровня, а также писать криптографические функции, где акцент на математическом алгоритме, ассемблерные вставки же под инструкции процов вроде AES256, SSE4 в нормальных языках можно организовать тоже (но я не в курсе, используются ли они вообще во всяких openssl/libcrypto).
Ответить | Правка | К родителю #49 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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