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

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

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

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

Сообщества

Настроить S2

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



Пишет chistyakov ([info]chistyakov)
@ 2005-06-10 18:14:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Показалось важным про программирование. Выношу из комментов
Из переписки с dottedmag об объектном и прочем неестественном программировании в дискуссии "Компрачикосы от программирования".

Мой личный научно-технический интерес заключается в создании комплексов ДПЛА. Это сложные радиотехнические, авиационные, программные и ещё чёрт-те какие комплексы.
В части программирования меня интересует создание бортовых и наземных программ для таких комплексов. Требуется заставить ЭВМ делать то, что требуется комплексу для решения его целевой задачи. Причём пароль к успеху один-- "надёжность"! (подчеркну, что речь идёт НЕ о персональных компьютерах, которые в комплексах тоже есть, естественно, на рабочих местах операторов в качестве интерфейсных узлов с человеком).

Уверяю Вас, что никакие из экзотических видов программирования, перечисленных Вами, не требуются, более того вредны, при решении моих проблем. Ибо все они зиждутся на создании некоторых виртуальных слоёв архитектуры на реальном "железе" ЭВМ. Каждый такой слой, особенно когда его делали чужие люди, особенно иностранцы, является источником ненадёжности, причём принципиально непознаваемой ненадёжности.

ЭВМ --это прежде всего устройство. Мне вовсе не требуется программировать, не зная и не ведая, как это устройство работает. Это для "программистов". Я знаю ЭВМ и использую эти знания.
Я не имею в виду, что нужно программировать в машинных кодах. Отнюдь! Но язык программирования должен соответствовать тому, что и как делает ЭВМ в реальности. А она исполняет программу, команда за командой. Эта главная особенность ЭВМ как устройства наилучшим образом отражается обычными алгоритмическими процедурно-ориентированными языками. Даже языком "Си":)
Паскаль просто лучше для человека. Ведь важнейшая функция программы как текста, про которую почему-то редко вспоминают, -- это абсолютно достоверное документирование структуры самой программы, структуры данных и алгоритма того, что мы проектируем. И эта функция просто неоценима.

Господ "программистов" просят не беспокоиться.

{+}


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

Re: Опять неверный ответ.
[info]ex_chistyak@lj
2005-06-10 14:24 (ссылка)
Не виляйте:). Параллельная ЭВМ -- это несколько непараллельных.

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

Угум.
[info]tkatchev@lj
2005-06-10 14:32 (ссылка)
А самолет -- это всего лишь несколько винтиков и болтиков.

Нет уж, есть принципиальные различия, когда мы переходим к параллелизму.

Более того, существует такой любопытный парадокс: все современные ОС эмулируют программным путем многопроцессорность. И даже если физически у машины всего один процессор (что уже, на самом деле, редкость -- вся периферия самостоятельна и параллельна) тем не менее, реально программисты вынуждены писать параллельные программы.


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

И еще:
[info]tkatchev@lj
2005-06-10 14:37 (ссылка)
По сути, вся шумиха по поводу "языков программирования" и "высоких уровней абстракции" существует ради того, чтобы как-то управлять параллелизмом.

Конечно, если у нас ЭВМ чисто последовательна, то достаточно и самого тупого Паскаля. (Даже и не "объектного".)

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

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

Отсталость программистов от общего научно-техническо
[info]ex_chistyak@lj
2005-06-10 15:48 (ссылка)
Вообще-то мы в данной ветке беседовали о том, что такое ЭВМ:). Я Вам объяснил.

Теперь о параллельности. Почему-то "программисты" сотворили какого-то жупела параллельности. Ничего страшного в параллельности нету. Все более менее-сложные технические системы работают параллельно и одновременно. Возьмите схему любого телевизора и объясните. Ха-ха. В том-то и секрет, что она работает сразу, и рассуждения типа "сигнал пришёл сюда, потом пошёл туда" (последовательные рассуждения) не годятся. То же и с параллельными вычислениями. Ну, идут параллельно. Ну, и что? Надо синхронизироваться как-то по данным, по событиям. Это обычное дело в технике.

И вообще. Программисты почему-то открывают вещи, которые стали рутиной в инженерном деле десятилетия, а то и столетия назад. Я это заметил, когда шла мода (кстати, правильная) на структурное программирование. Да эти принципы в радиотехнике применяются с момента появления приёмника Попова. Приёмник же структурирован, правда? Усилитель высокой частоты, смеситель с гетеродином, усилитель промежуточной частоты, детектор, усилитель низкой частоты.
Как-то так, да.

{+}

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

А нет никакого жупела.
[info]tkatchev@lj
2005-06-11 03:03 (ссылка)
Просто надо понимать, что ЭВМ не более "последовательна", чем телевизор.

Попробуйте построить детальную модель того же телевизора на Паскале, и вы сами увидите, что у вас получится.

(Я вам гарантирую, что вы, как "непрограммист", первым делом заново изобретете объектно-ориентированность. Следующим "изобретением" будет что-то лиспообразное.)

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

Re: А нет никакого жупела.
[info]ex_chistyak@lj
2005-06-11 03:31 (ссылка)
Пока Вы не признаете, что ЭВМ принципиально последовательна, я не вижу смысла в продолжении дискуссии. Вы просто не хотите знать, что такое ЭВМ.

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

Смешно.
[info]tkatchev@lj
2005-06-11 04:01 (ссылка)
Я же не учу вас, как самолеты строить?

Ограниченность опыта еще не повод, чтобы хамить.

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

Re: Смешно.
[info]ex_chistyak@lj
2005-06-11 04:38 (ссылка)
Хамить?? Я не хамлю. Я пытаюсь объяснить Вам, что такое ЭВМ. Я это знаю. А Вы не знаете, но упорствуете в своём невежестве. Вы не "программист", случаем? Какое у Вас образование? Высшее?

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

Спасибо.
[info]tkatchev@lj
2005-06-11 05:17 (ссылка)
Но я прекрасно знаю, что такое ЭВМ. Во всяком случае, значительно лучше, чем вы.

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

Re: Спасибо.
[info]ex_chistyak@lj
2005-06-11 05:28 (ссылка)
>...я прекрасно знаю, что такое ЭВМ.

Определение в студию!

>..Во всяком случае, значительно лучше, чем вы.

Вы же не учите меня, как делать самолёты, да. Потому что я их сам делаю. Так вот, я и ЭВМ делаю. Давно уже, лет 25...

Ну-с, ждём-с определения, что же такое ЭВМ. Сгораем-с от любопытства.

{+}

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

Re: Спасибо.
[info]tkatchev@lj
2005-06-11 06:11 (ссылка)
"Электронная вычислительная машина".

Из БСЭ: "Вычислительная машина есть устройство или совокупность устройств, предназначенных для механизации и автоматизации процесса обработки информации (вычислений)."

Я понимаю, что вы, как инженер, путаете понятия "ЭВМ" и "ЦПУ", но тут есть конкретная и очень существенная резница: ЦПУ -- это конкретное физическое устройство, в то время как понятие "ЭВМ" чисто логическое.

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

Маленькое примечание:
[info]tkatchev@lj
2005-06-11 06:13 (ссылка)
Заметьте -- "или совокупность устройств". Создатели БСЭ, в отличии от вас, прекрасно понимали всю сложность и важность параллелизма в программировании.

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

Re: Маленькое примечание:
[info]ex_chistyak@lj
2005-06-11 06:26 (ссылка)
Определение БСЭ необоснованно широко. Под это определение попадает, например, термореле. Которое выключает утюг при перегреве. Термореле это ЭВМ, по-Ващему?
Радиолокатор ПВО 50х годов тем более попадает под определение БСЭ. Чем радиолокатор отличается от ЭВМ?
Боюсь, что создатели БСЭ вообще не понимали, что такое ЭВМ.
Чем, всё-таки, термореле отличается от ЭВМ?
Почему программируемая логическая матрица не является ЭВМ, а микропроцессор является? Разберитесь пожалуйста. Рекомендую Винера.

{+}

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

Неверно.
[info]tkatchev@lj
2005-06-11 07:52 (ссылка)
Термореле не "электронное", вот и единственное различие.

И уж извините, в споре с вами и БСЭ я уж лучше выберу сторону БСЭ. (Выше вы уже продемонстрировали всю лихость, с которой "расправились" с Марковым и Черчем.)

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

Re: Неверно.
[info]ex_chistyak@lj
2005-06-11 08:13 (ссылка)
Почему термореле не электронное? Вполне себе электронное. Вон, даже микросхемы есть.

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

Тогда беру свои слова обратно.
[info]tkatchev@lj
2005-06-11 11:36 (ссылка)
Это вполне себе ЭВМ.

Прошу вас, вы опять путаете "ЭВМ" и "ЦПУ". Это простительно для школьника, но вы же себя серьезным человеком считаете, не так ли?

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

Re: Неверно.
[info]ex_chistyak@lj
2005-06-11 08:16 (ссылка)
Почему термореле не электронное? Вполне себе электронное. Вон, даже микросхемы есть.

Как мнеь жаль Вас, если бы Вы знали!

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

Re: Угум.
[info]ex_chistyak@lj
2005-06-10 15:29 (ссылка)
>...А самолет -- это всего лишь несколько винтиков и болтиков.

Опять-таки, неправда Ваша:). Самолёт характерен не тем, что он состоит из винтиков и болтиков. Самолёт характерен тем, что у него есть крыло и силовая установка. Это делает самолёт самолётом. А винтики и болтики -- несущественная подробность реализации.

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

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

Не упорствуйте:)

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

Re: Угум.
[info]militarev@lj
2005-06-10 18:32 (ссылка)
но ведь любую программу можно преобразовать в таблицу решений

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

Re: Угум.
[info]ex_chistyak@lj
2005-06-10 18:48 (ссылка)
>...любую программу можно преобразовать в таблицу решений

Обычно поступают наоборот:)

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

{+}

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

Re: Угум.
[info]militarev@lj
2005-06-12 13:10 (ссылка)
так ведь речь идет о первом цикле. таблица решений без самоизменений выдаст то же, что и программа.
экспертные системы часто делают в виде таб.реш

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

Re: Угум.
[info]ex_chistyak@lj
2005-06-12 15:09 (ссылка)
Таблица решений -- это статика. Первый шаг, как Вы говорите. Программа же может быть "живой", менять своё поведение бесконечно.

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

Re: Угум.
[info]tkatchev@lj
2005-06-11 02:58 (ссылка)
Нет. В общем случае, нет никакой "команды за командой".

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

Re: Угум.
[info]ex_chistyak@lj
2005-06-11 03:23 (ссылка)
Ну и упрямый же Вы, однако!
А какой такой "общий случай"? Приведите пример ЭВМ, которая не выполняет "команду за командой". Это её основное свойство. А все чудеса, на которые способны ЭВМ, получаются из-за возможности эту последовательность нарушать по каким-то условиям (делать условные переходы). Всё! Остальное -- болтовня и подробности.

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

Легко.
[info]tkatchev@lj
2005-06-11 03:59 (ссылка)
Корпоративная информационная система из трех с половиной тысяч разнородных узлов.

Ну или гуглевский кластер, может так будет понятней.

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

Re: Легко.
[info]ex_chistyak@lj
2005-06-11 04:35 (ссылка)
Так понятней не будет. Это не одна ЭВМ, а совокупность ЭВМ, причём большая. И если уж одна ЭВМ может чудеса творить, то совокупность... Но, тем не менее, истина непоколебим. ЭВМ -- это устройство, обладающее способностью выполнять заложенную в памяти программу, команда за командой... Я сейчас заплачу:(

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

Нет.
[info]tkatchev@lj
2005-06-11 05:33 (ссылка)
Кластер Гугла -- это электронная вычислительная машина. Причем такая, у которой нет никаких "программ" с "коммандами".

Если интересно, можете почитать о том, как это реально делается теми, кто создает реальные сложные информационные системы:
http://labs.google.com/papers/mapreduce.html (http://labs.google.com/papers/mapreduce.html)
http://labs.google.com/papers/sawzall-sciprog.pdf (http://labs.google.com/papers/sawzall-sciprog.pdf)
http://labs.google.com/papers/gfs-sosp2003.pdf (http://labs.google.com/papers/gfs-sosp2003.pdf)

Я понимаю, что вы создаете униккальные летательные аппараты, но вы слабо предстваляете работу реальных программистов. (А не ваших "программистов" в кавычках.)

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

И вообще.
[info]tkatchev@lj
2005-06-11 03:04 (ссылка)
Существенно то, что ЭВМ решает некоторый определенный класс задач.

Причем тут вообще какие-то мифические "комманды"?

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

Re: И вообще.
[info]ex_chistyak@lj
2005-06-11 03:34 (ссылка)
>...Существенно то, что ЭВМ решает некоторый определенный класс задач.

У-у-у-у-у... И этот человек "умеет мыслить"!?

ЭВМ ни фига не решает! ЭВМ тупо выполняете прогарамму, команда за командой, причём некоторые команды являются командами условного перехода. Это основная функция ЭВМ. Ос

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

Нет.
[info]tkatchev@lj
2005-06-11 04:00 (ссылка)
См. выше.

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

Потрясён
[info]volodymir_k@lj
2005-06-10 20:41 (ссылка)
> реально программисты вынуждены писать параллельные программы.

Позвольте засвидетельствовать Вашу безграмотность. Просто поверьте мне.

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

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

Re: Потрясён
[info]tkatchev@lj
2005-06-11 02:59 (ссылка)
гы гы

Результаты вы куда выводите?
В ленту Тьюринга? :)))

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

Re: Потрясён
[info]volodymir_k@lj
2005-06-11 11:22 (ссылка)
А что, пограммисты непрерывно пишут код параллельной логики вывода? Покажите мне, пожалуйста, в операторе writeln(2*2); логику паралльного вывода.

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

Именно так.
[info]tkatchev@lj
2005-06-11 11:38 (ссылка)
В операторе ее не видно потому, что она спрятана внутри реализации оператора writeln.

Но она есть, и любой, кто хоть как-то сталкивался с внутенностями ОС хорошо знает, о чем именно я говорю.

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

Ловушка закрывается
[info]volodymir_k@lj
2005-06-11 12:09 (ссылка)
> потому, что она спрятана внутри реализации

Другими словами, программисты НЕ пишут специально паралельные программы -- они пишут последовательные для некоторого исполняющего уровня (библиотеки компилятора с языка), а слой реализации сам заботится о параллелизации.

Поэтому Ваш тезис, что программисты специально что-то там параллельное пишут -- следствие глубокого невежества и апломба.

Впрочем, Вы явно не можете вырваться из оков русскоязычной терминологии отрасли, называя "программированием" стадию кодирования алгоритма. Где в некотором философском смысле и правда суть чисто в мат.логике.

В то же время существует отрасль народного хозяйства, промышленность ПО. Там есть свои стандарты (ГОСТ 19701-90 для рисования блок-схем, например), есть свои правила производства, есть описания типовых БИЗНЕС-процессов, есть понятие качества, промышленного стандарта по факту, взаимодействие со смежными экономическими операциями.

Как ни странно, люди называют эту область знания тоже словом "программирование".

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

Что сказать-то хотели?
[info]tkatchev@lj
2005-06-11 13:22 (ссылка)
А "слои реализации" откуда берутся, аа?

Уж не программисты ли их пишут? Вот уж никогда бы не подумал.

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


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