Лекс Айрин писал(а):А сейчас будто мы сильно чем-то управляем?
Да. Я могу сам замапить любой тип явно, а не подстраиваться под какой-либо алгоритм зашитый в компилятор.
Модератор: Модераторы
Лекс Айрин писал(а):А сейчас будто мы сильно чем-то управляем?
alexey38 писал(а):В идеале нужно указывать не только разрядность в битах, но и очередность следования байт в слове.
АгаПорядок не нужно указывать, если порядок слов из внешнего источника отличается, то перед использованием необходимо произвести конвертацию во внутреннее представление, а перед передачей конвертировать вновь.
debi12345 писал(а):В С это делается туевой хучей DEFINE-макросов.
MiniQ писал(а):Вот 4 страницу читаю, и думаю: Вирт всю жизнь занимался разработкой идеального языка программирования, ну почему бы не взять на вооружение его труды? Возьмите Оберон за базу.
и это язык высокого уровня... на ассемблере это несколько операторов...
#define SWAP_BYTES(A) (A << 8)||(A >> 8)
Mikhail писал(а):I have already suggested it. You can take a Modula-2 (3) or Oberon.
debi12345 писал(а):Задача С в этом случае - избежать написания функции (фрэйм вызова которой медленнее чем сами вычисления), нечто типа :
Mikhail писал(а):Зачем? Надо работать с аппаратно поддерживаемыми типами и эмулировать, при необходимости, "длинные" целые, тем более что арифметические операции с учетом бита переноса, как правило, реализованы аппаратно. Реализация эмуляции вещественной арифметики вопрос спорный, скорее всего нужно.
Порядок не нужно указывать, если порядок слов из внешнего источника отличается, то перед использованием необходимо произвести конвертацию во внутреннее представление, а перед передачей конвертировать вновь.
alexey38 писал(а):Насчет целочисленных типов. При разработке некоторого приложения, решающего конкретную задачу бывает три варианта:
Вариант 1. Нужен счетчик цикла, который в конкретной задаче не превысит даже 1000. Тип нужен адаптированный под конкретный процессор, чтобы работал максимально быстро. На 16 битных - это 16 бит, на 32 битных - это 32 бита, на 64 битных либо 32, либо 64. То есть разрядность определяется оптимизацией под конкретную платформу.
Вариант 2. Делается некоторая структура данных (record, array), которую в блочном виде считываем из файла, или получаем по сети. В этом случае нужно, чтобы тип был строго конкретной размерности, ни как не завися от процессора и платформы.
Вариант 3. Решается некоторая задача, в которой известно, что численные переменные могут быть в некотором диапазоне. Например, могут быть сотни миллиардов, тут нужен не меньше, чем int64. А если сотни миллионов, то достаточно int32. Тут оптимизация под конкретную платформу должна работать только в сторону увеличения разрядности. Если нам достаточно int16, но работать быстрее будет int64 на конкретном процессоре, то должно быть int64. Если нам нужно int64, то даже на 16-битном процессоре нужно реализовывать int64, как бы сложно это не было.
Итого: чтобы язык был пригодным к реальному использованию в нем должно быть реализованы все три варианта. Если какой-то из вариантов невозможно будет реализовать, то такой язык обречен. На нем никто не будет писать серьезные проекты, т.к. начиная проект я никогда не могу знать, какие мне потребуются типы через 5 лет разработки. Поэтому я никогда не буду даже смотреть язык, который потенциально препятствует завершению проекта в будущем.
Добавлено спустя 3 минуты 15 секунд:
Дополнение для варианта 2. В идеале нужно указывать не только разрядность в битах, но и очередность следования байт в слове.
mse писал(а):How can one define a 16bit unsigned integer type in Oberon?
alexey38 писал(а):Итак есть некий файл в заранее известном формате, или есть некий поток по сети (или из порта ввода/вывода) в заранее известном формате. Но в кросс-платформенном варианте мы изначально не знаем характеристик своего процессора, мы не знаем в каком он порядке хранит байты для 16, 32 и 64 разрядных слов. Например, на интеловском проце тип int64le будет равен int64, а int64be при любых операциях будет автоматически выполнять перевертыши. На мотороловском проце все будет наоборот. Но код на языке программирования будет один и тот же.
mse писал(а):I read a newer Oberon Report from 2013-10-1 but could not find out how to define the wanted sized types.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5