— Я хотел бы приобрести флешку со встроенным MP3-плеером. — Могу предложить MP3-плеер. Его можно использовать в качестве флешки. — Нет! Мне нужна большая такая флешка, а в неё встроен MP3-плеер! |
Клиент в магазине компьютерных товаров. Что интересно, такие устройства действительно были. |
Samsung анонсировал новый телефон — Galaxy Note 3.
Характеристика | В Samsung Galaxy Note 3 | В моём старом компе |
---|---|---|
Разрешение экрана | 1080 × 1920 пикселей | 1680 × 1050 пикселей |
Камера | 13 мегапикселей | 0.3 мегапикселя |
Оперативная память | 3 гигабайта | 3 гигабайта |
Внутренняя память | 64 ГБ встроенной и до 64 ГБ расширения. | ~3 терабайта |
Центральный процессор | 4-ядерный, 2.3 гигагерца | 2-ядерный, 2.2 гигагерца |
Выделенный графический ускоритель | Ardeno 330 | nVidia GeForce 5200 |
Сенсоры | акселерометр гироскоп датчик приближения компас барометр гигрометр термометр детектор жестов | Нет |
Вплоть до 6 марта этого года я пользовался компьютером, который по всем характеристикам, кроме внутренней памяти, но включая разрешение экрана и графический ускоритель, уступал этому телефону.
Технический прогресс неумолим. Кажется, я совсем недавно вынес на помойку свой первый Pentium 120, — после того, как shele4ka меня запилила на тему необходимости чистить авгиевы конюшни, называемые кладовкой. На этом Pentium`е крутился Red Hat Linux 6.2 (см. седьмое фото в этом посте) с кастомным ядром; компьютер работал хранилищем данных и раутером, и в нём было два жёстких диска, на 8 и на 40 гигабайт. Хранилище данных, ага. Ещё в какой-то момент жизни мы с Шелей купили три абсолютно одинаковых компьютера — мне, ей и вместо телевизора. Телевизионный накрылся первым, мой сдох сразу после того, как я перенёс с него данные на свежекупленную цацу, а Шелин мы временно включили вместо телевизионного, — и знаете что? Проигрывание фильмов в хорошем качестве ему уже не по силам, изображение дёргается и звук заикается, загрузка двухъядерного процессора при этом держится на 98%. Зато проигрывание таких фильмов по силам нашим планшетникам, Archos 80g9 и iPad. Поэтому сейчас рядом с телевизором лежат Archos и кабель HDMI. Процедура выглядит так: мы хотим посмотреть фильм в хорошем качестве ⇒ включаются телевизионный компьютер и Archos ⇒ по USB фильм перегоняется на планшетку ⇒ планшетка подключается к телевизору через HDMI, и фильм с удовольствием смотрится.
А теперь последовал новый удар. В этом Samsung Galaxy Note 3 всё, кроме ёмкости жёсткого диска, круче, чем в любом из этих трёх компьютеров. Чёрт побери, у нашего 32-дюймового телевизора разрешение экрана ниже, чем у этой 5.7-дюймовой игрушки!
Единственное, что меня обнадёживает, — это что современные программисты привыкли полагаться на невероятную мощь процессоров и на гигантские объёмы памяти, поэтому забыли об экономии байт и тактов процессора. Я же, воспитанный на перфокартах, понимаю, что i++; значительно менее выгодно, чем ++i;. Поэтому, когда технический прогресс упрётся в невозможность сделать транзистор размером меньше отдельного атома, и рост быстродействия техники замедлится, мои программы будут работать чуточку быстрее, чем у конкурентов. По моим оптимистичным прикидкам, момент замедления технического прогресса наступит лет через восемьдесят. Главное — не разучиться программировать до тех пор.
no subject
1) ax++ + bx ➡ ADD ax, bx; INC ax
2) ++ax + bx ➡ INC ax; ADD ax, bx
no subject
Без создания копии operator++(T) нарушает конвенцию языка. Поэтому постфиксный инкремент всегда менее выгоден, чем префиксный, - постфиксный вызывает префиксный и дополняет его созданием копии.
Для простых классов типа int это неважно, потому что компиляторы умные, и приводят код к одной и той же последовательности ассемблерных команд. Но в более сложных случаях префиксный оператор всегда быстрее. А кто сказал, что в цикле for я обязан использовать в качестве счётчика простой класс? И, более того, если была создана deep copy, кто проверит выделенную память и освободит её?
no subject
там НЕ нужна копия. инкремент делается либо до, либо после. всё
no subject
section .text
global _start
_start:
; ++a
mov ax, a
inc ax
mov a, ax
; b++
mov ax, b
mov bx, ax
inc bx
mov b, bx
; По конвенции, возвращаемое значение всегда в регистре ax
mov ax, 4C00h ; Выход
int 21h
section .data
a dw 1
b dw 1
Налицо одна лишняя инструкция. И то я использую mov bx, ax вместо mov bx, b, как можно было бы сделать, и чьё быстродействие примерно в 300 раз хуже.