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

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 06:06 (ссылка)
Что такое машины редукции данных? Исполняемая программа в них есть? Можно её перепрограммировать на какую-нибудь другую задачу? Если да, то это ЭВМ. Если этот предмет может только редуцировать данные тем или иным, пусть перепрограммируемым способом (не знаю, что это значит), то это устройство -- не ЭВМ. Это редуктор данных и всё.

Бывает, что ЭВМ несколько, правда. Так что много процессорные и многомашинные системы -- это несколько сопряжённых ЭВМ.

А на фига? Просто пояснить, что все уровни абстракции не в воздухе болтаются, а реализуются вот таким способом, команда за командой. Без мистики.

{+}

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


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

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


[info]ex_chistyak@lj
2005-06-14 10:51 (ссылка)
Спасибо. Но чтобы сказать, ЭВМ это или нет, надо понять, а может такой предмет (редуктор графов) исполнять другую программу, кроме редукции графов. Например, моделировать движение самолёта или вычислять дисперсию случайной величины? Подозреваю, что нет. Если, конечно, этот редуктор сам не реализован на ЭВМ.

В Паскале указатели тоже есть, но я их избегаю.

{+}

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


[info]potan@lj
2005-06-14 11:17 (ссылка)
Вопрос строится не корректно. Это все равно что спрашивать "а может ли ЭВМ делать что-либо еще, кроме интерпретации команд из памяти".
Сама испролняемая программа является графом, а не последовательностью команд. Даже если она моделирует движение самолета или вычисляет дисперсию.

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


[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. Способность условно изменять ход программы.
Всё.

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


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