Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет chistyakov ([info]chistyakov)
@ 2005-06-11 16:11:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Прежде, чем именовать себя программистом, надо знать, что такое ЭВМ
Стала ясной причина научно-технического невежества "программистов".

Оказывается, они не знают, что такое ЭВМ. Что для неё характерно? Что именно отличает ЭВМ от, например, термореле утюга? Почему программируемая логическая матрица (ПЛИС -- программируемая логическая интегральная схема, "плиска") не является ЭВМ, а самый захудалый микропроцессор является?

Между тем, это знание представляется очень важным. Особенно, когда мы начинаем говорить о всяких неестественных для ЭВМ языках, об объектном и ещё чёрт-те знает каком программировании.

В приступе педагогической щедрости формулирую единственный существенный признак ЭВМ:

ЭВМ -- это такая вещь, которая обладает способностью последовательно выполнять, команда за командой, программу, заложенную в её памяти. Причём в наборе команд ЭВМ существуют команды (хотя бы одна команда), способные условно прерывать последовательность выполнения программы и начинать последовательное выполнение программы с нового места.

Это ВСЁ! И все чудеса, связанные с ЭВМ, проистекают из этого существенного признака и без него невозможны.

Остальное, включая даже прерывания, уже подробности. ЭВМ без прерываний -- тоже ЭВМ.

Теперь можно смело садиться программировать. Без мистики и фанатизма.
Бог в помощь, господа программисты! Знание -- сила.

Носителей идеологий "виртуальных машин" просят не беспокоиться. Все места заняты.

{+}


(Читать комментарии) - (Добавить комментарий)


[info]ex_chistyak@lj
2005-06-14 11:34 (ссылка)
>...Сама исполняемая программа является графом, а не последовательностью команд

Программа, являющаяся графом, может решить любую задачу? Или только представимую в виде графа? Любая ли задача может быть представлена в виде графа?

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]potan@lj
2005-06-14 11:43 (ссылка)
Да, конечно.
Тезис Черча: "Все, что может быть вычисленно, может быть вычисленно на машине Тьюрьнга".
Есть несколько моделей алгоритмов, эквивалентных МТ (а машины фон-Неймана близки именно к ней). Наиболее популярны лямбда-исчисление Черча (редукция графов - частный вид, который относительно легко реализовать аппаратно) и алгорифмы Маркова. Все, что можно сделать на одной из них, делается и на всех остальных.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ex_chistyak@lj
2005-06-14 12:09 (ссылка)
А вот скажите, пожалуйста, любой ли из этих "методов Черча" требует ПОСЛЕДОВАТЕЛЬНОСТИ операций? То есть должно ли вычисление обязательно состоять из шагов? Как обычная программа? То есть, требование ПОСЛЕДОВАТЕЛЬНОСТИ операций, "команда за командой", существенно или нет? Или можно обойтись без него?
И второе. Существенно ли требование нарушений этой последовательности, условные операторы "если то, иначе это"? КОгда мы говорим "алгоритм", то без условных ветвлений не обойтись.

{+}

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]potan@lj
2005-06-14 12:23 (ссылка)
В лямбда-исчислении может быть применена любая возможная редукция - результат от этого не зависит. Нормальная последовательность редукций гарантированно завершается, если завершается хоть какая-нибудь. Редукции можно проводить параллельно - это и делает лямбда-исчисление привлекательным.
В нормальных алгорифмах Маркова производится строго первая замена из возможных - в некоторой степени можно говорить о последовательности действий.
В машинах потоков данных (к сожалению я не знаю хорошей математической модели для них) последовательность действий определяется событиями, такими как "готовы данные из АЦП" или "сложение двух чисел завершилось". (Кстати, многие современные процессоры налету переводят последовательность команд в граф потока данных и выполняют именно его. А программист видет фонНеймовскую виртуальную машину :-).)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ex_chistyak@lj
2005-06-14 13:26 (ссылка)
Фон Нейман ни причём вообще. Выделяю три существенных признака ЭВМ:
1. Способность выполнять некоторые операции (команды) друг за другом.
2. Наличие памяти последовательностей команд (программ).
3. Способность условно изменять ход программы.
Всё.

(Ответить) (Уровень выше)


(Читать комментарии) -