ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 июля
1351332 Топик полностью
74ALS (15.09.2023 16:32, просмотров: 84) ответил RxTx на Таблица byte и char по машинам. Там же советую потом в поиск (по тексту страницы) набрать PDP-10 и почитать что пишут рядом.
Интересно. Можно сказать, что после 1970 года char стал 8-битным... 

1976 Cray-1 Единица адресации - 64-битное слово, а char - 8 бит. Вот видимо для этой машины в реализации компилятора С были какие-то ухищрения... Отдавать под char 64-бита было слишком дорого...


Вот кстати Вы упомянули про PDP машины. У меня тоже вопрос в голове вызревает некоторое время, но до конца еще не оформился... Мне просто пятый десяток идет, а я не программист, можно сказать всю жизнь КИПовцем работал. Но сам я ленивый и тупенький (вот прям как на аватарке) все хочу выучить хотя бы один язык программирования нормально. Но жизнь так складывается, что наскоками на С набегаю, по частям отрываю, перевариваю, а потом откладываю и забываю... местами...

А вот ваше упоминание архитектуры PDP выхватило в памяти знание (где-то когда-то прочитал), что из того, что в языке С90 вроде как нельзя приводить указатель на функцию к указателю на объект данных и генезиса языка С (изначально он разрабатывался на PDP платформе) следует вывод, что абстрактная машина языка C близка к Гарвардской архитектуре (с разделением на память данных и память кода) и потому внутреннее представление указателя на объект данных и на функцию де-факто различно.


В языке C есть некий дуализм с функциональным типом данных (function returning Type). С одной стороны, функция это структурная единица организации программы, с другой - тип данных. Ну я так далеко еще не изучал функции. Насколько я понял (пока бегло) функция, как тип данных, проявляется только в одном месте в С программе - в объявлении функции, там идентификатор, именующий функцию имеет тип function returning Type. Во всех остальных местах текста программы компилятор встретив идентификатор функции будет неявно приводить его к типу указателя на функцию. То есть, как пишут в книгах по Computer Science функция в языке C - это гражданин второго класса. Как, например и массив - массив нельзя вернуть из функции.

При этом и массив и функция как типы данных довольно схожи. Я представляю себе массив как тип данных, в которым каждому значению индекса(ов) массива ставится в соответствие значение элемента этого массива. И функция, как тип данных, во многом схожа с массивом - можно сказать, что в функции каждому значению входных аргументов ставится значение сгенерированное в коде функции. Я себе представляю это как будто массив находится в пространстве, но он не имеет жизни, просто отпечаток памяти. А функция живет и в пространстве и во времени - она свое значение генерирует в процессе исполнения кода...

Ладно растекся мыслию по древу... Пока оставлю это здесь, вопрос созреет - оформлю.