Технотрек: Промышленное программирование. Занятие 05: The Процессор


(Копия блога на Технотреке)

Summary

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

  1. В любой непонятной ситуации делай новую структуру :)

  2. Для процессора коды команд лучше, чем их названия;

  3. Для человека названия команд лучше, чем их коды;

  4. Противоречие п.2 - п.3 решается введением понятия компиляции. Радостные, пишем ассемблер и дизассемблер;

  5. Один только стек для хранения данных неудобен, вводим регистры. Чтобы доступ был легок и быстр, переменную клади в регистр;

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

  7. Задумались о сравнении величин, условных операторах (переходах) и о том, как указывать место назначения перехода. Пока остановились на том, что просто будем писать адрес перехода, что, конечно, неудобно.

Домашнее задание

Collapse )

Технотрек: Промышленное программирование. Занятие 03: Неубиваемый стек


(Копия блога на Технотреке)

Summary

Мы рассмотрели простейшую структуру данных - стек (буфер LIFO) и его реализацию в Си с точки зрения объектно-ориентированного программирования. Для этого мы применили логическую группировку данных (структуру, struct) и семейство функций (методов), связанных с ней. Типичными методами являются инициализация (конструкция, Stack_ctor), деинициализация (деструкция, или очистка, Stack_dtor), тихая верификация (Stack_OK) и отладочный дамп (Stack_dump). Первые две последних функции поддерживаются С++ как конструкторы и деструкторы; для последних двух нет явно поддерживаемых эквивалентов, но без них легко допустить ошибку даже в простой структуре данных и очень тяжело ее поймать. Также рассмотрели стратегии двойной проверки для динамической верификации объектов стека.

Домашнее задание

Collapse )

Технотрек: Промышленное программирование. Занятие 02: Указатели тоже бросают вызовы

(Копия блога на Технотреке)

Summary

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

Также разобрали вопросы времени жизни объектов, которые для массивов важны, поскольку массивы не копируются компилятором при передаче параметров и возврате значения. Познакомились с зомби-объектами (во время отладки они съедают ваши мозги). Разобрали правильные варианты решения вопроса о владении памятью в контрактах между вызывающей и вызываемой стороной.

Домашнее задание

Collapse )

Технотрек: Промышленное программирование. Старт курса


(Копия блога на Технотреке)

Привет!

Завтра, в понедельник 26 сентября, состоится второе занятие открытого курса по промышленному программированию на С/С++.

Квота на зачисление была 50 человек. Отбор происходил по задачам на программирование и логическим тестам.
Тем, кто не зачислен на курс, передайте, что им можно посещать лекции на правах "вольного слушателя", делать задания, слушать разборы работ и конструктивно участвовать в них.

Жду всех!
Наша аудитория - 430 ГК.

С уважением,

Илья Дединский
Преподаватель Технотрек@Mail.ru

Экспонометрия пленки и кинетика проявления - explained


gerokunst пишет в ru_fotoplenka @ 2009-08-21:

<<
"Золотое правило" из мануала Leica M6

Коллеги, подскажите пожалуйста, правильно ли я понимаю следующую фразу из руководства пользователя Leica M6:

"Expose B&W films for the shadows, and develop for the highlights."

Как: "При съемке экспозицию следует замерять по теням, а при проявке сокращать время относительно номинального".

Я прав или нет? Заранее благодарен.

UPD: Данный вопрос задан с целью понять, что имел ввиду автор мануала. Большая просьба высказывать трактовки, а "советы" оставить при себе :)
>>

Collapse )

Литераторы, не примите близко к сердцу

 
Повержен Ленский; страшно тени
Онегин, помните ль тот час,
Дай оглянусь. Простите ж, сени,
Святую тайну, и для нас
На стульях улеглись в столовой,
Под занавескою шелковой
Без службы, без жены, без дел,
Ничем заняться не умел.
Но, знать, сердечное страданье
Но юным, девственным сердцам
Мелькали селы; здесь и там
Где, где смятенье, состраданье?
Простим горячке юных лет
Того раскаянье грызет.

Collapse )

Конец предложения


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