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

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]potan@lj
2005-06-14 05:47 (ссылка)
Ой, ну нельзя же так.
Машины редукции графов теперь перестали быть ЭВМ. Машины потока данных тоже не достойны этого гордого названия.
Даже многопроцессорные комплексы с трудом могут притендовать на этот титул.

Ну и нафига все это? Что бы показать "вредность" введения уровней абстракции?

(Ответить) (Ветвь дискуссии)


[info]dottedmag@lj
2005-06-14 05:58 (ссылка)
Из коммента, что из производства ДПЛА ушли квалифицированные программисты,в банки и куда-то еще можно сделать вывод, что показать хочется, что за низкую зарплату можно набрать только програмиистов, которые могут делать надежные программы только в идеально-модульно-структурном стиле, а на все остальное у них образования не хватает.

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

Зачем передёргивать?
[info]ex_chistyak@lj
2005-06-14 06:15 (ссылка)
Cj

>...из производства ДПЛА ушли квалифицированные программисты,в банки и куда-то еще

С чего Вы взяли, что эти ребята были квалифицированными программистами? Не были они ими. Мне приходилось их за ручку водить.

С чего Вы взяли, что они ушли в банки? Тогда банков ещё не было никаких. Это теперь они оказались в банках, поскольку не нашли ничего такого, чем стоило дорожить в профессиональной жизни, а при крахе СССР поплыли по течению. Не думаю, что когда они шли в математики, они мечтали стать сисадминами (то есть, эксплуатационниками) и придатками к бухгалтерским программам, правда?

С чего Вы взяли, что их зарплата была низкой? Она в их глазах была недостаточной.

К тому же, творцы не за зарплату работают. Само придёт, если будешь достоин. И не мало, уверяю Вас.

{+}

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


[info]ex_chistyak@lj
2005-06-14 06:24 (ссылка)
>...програмиистов, которые могут делать надежные программы только в идеально-модульно-структурном стиле, а на все остальное у них образования не хватает

Это были бы очень хорошие программисты, да. Образование, что ли, запретить. Или... Идея! ПОРОТЬ!

:)

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


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

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


[info]igde@lj
2005-06-15 07:14 (ссылка)
Хм. Машина редукции графов последовательно выполняет одну редукцию за другой. То есть, имеет место "выполнение программы, заложенной в памяти,команда за командой". Правда, отсутствуют "команды способные условно прерывать последовательность выполнения программы".

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


[info]potan@lj
2005-06-15 07:37 (ссылка)
Последовательность редукций не задается. Если возможно применить несколько редукций, их порядок не важен.

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


[info]igde@lj
2005-06-15 07:53 (ссылка)
Но ведь все равно редукции будут применяться в определенном порядке.

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


[info]potan@lj
2005-06-15 08:22 (ссылка)
Во первых последовательность может меняться при замене железа (например при изменении числа арифметических устройств).
Во вторых система может быть "мультизадачной" - редуцировать паралельно несколько графов. В этом случае порядок редукции конкретного графа может зависить от того, кто редуцируется рядом.
В третьих машина редукции может быть реализованна ввиде нескольких модулей, подключенных к сети. И на порядок редукции будут влиять сетевые задержки.

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


[info]igde@lj
2005-06-16 02:12 (ссылка)
Ну, это все уже подробности, вроде прерываний.

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


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