IBM/360. Отвечая на вопрос.

«Вообще же мне бы хотелось, чтобы пользователь kev написал пост про АйБиЭм триста шестьдесят / триста семьдесят „
Скучаю и сильно.
Но можно и не скучать.
Во ВНИИГМИ-МЦД есть ЭВМ Z-серии, прямой потомок IBM/370.
И я не совсем понимаю, что Вы хотите от меня?
Описать канальную организацию? Можно, закажите.
Описать организацию? Могу, но будет скучно. На этот уровень редкий программист опускается. Но там действительно можно было запросто создавать свои канальные программы.
Способ написания перемещаемых программ, корректно сформировавшийся на серии IBM/360 я предложу публике к концу месяца. Чтобы я писал далее, должна быть проявлена заинтересованность. Иначе завяну.
Возможно Вы хотите поговорить о виртуализации комппьютера, когда даже лучшие программисты не имеют представления о функциональной организации компьютера?
Можно поговорить о потерях в программировании, о смешанной стратегии программирования.
Заказывайте.
А напоследок я скажу! Что скучаю по ЭВМ М-20.

32 комментария

kev
Ну, вот!
jodl84
Спасибо за ответ. Мне, прежде всего, было бы интересно узнать, какие языки вы использовали, в каком виде существовал исходный код, как осуществлялось общение с транслятором. Интересно также как проходил процесс отладки, какие для этого существовали технические средства, может быть какие-нибудь специальные хитрости, которые использовались именно в вашей группе.

Из общих вопросов меня интересует вот что. Вам, наверное, довелось поработать как с людьми, пришедшими в программирование из других наук, так и с людьми, обученными именно по этой специальности, когда она появилась. Замечали ли вы разницу? Например, в том, как они решают задачи. Ну и как уровень подготовки менялся со временем.
kev
« Мне, прежде всего, было бы интересно узнать, какие языки вы использовали, „
Программирование в кодах, альфа-язык(вариант Алгол 60), ассемблер, кобол, фортран, ПЛ/1, макроязык, Паскаль, с++, специальный язык системы SAS, Фокал, Бейсик
“в каком виде существовал исходный код, как осуществлялось общение с транслятором».
Сначала исходный текст вводился с перфокарт. Запуск транслятора в виде отдельного задания. В IBM/360 — система заданий, работа в рамках универсальной системы программирования. Затем появился ввод с магнитной ленты и с перфоленты. В рамках системы полной виртуализации системы VM/SP была возможность вводить с любого устройства, включая личную клавиатуру. После появления персоналок появилась возможность ввода с удалённого устройства.
Вопрос сложный, буду отвечать частями.
kev
« Интересно также как проходил процесс отладки, какие для этого существовали технические средства,
может быть какие-нибудь специальные хитрости, которые использовались именно в вашей группе.»
Долгое время основным средством отладки были вставки промежуточных выводов. На М-20 использовал прерывание после каждой команды с выводом результатов. По сути — пошаговое тестироваение.
Работая на Ассемблере IBM/360 использовал распечатку аварийных дампов. В Борланд-средах активно использовал пошаговое тестирование и установку контрольных точек. В Visual Studio этот механизм ещё мощнее.
Изредка прибегал к анализу результатов системно-мониторной программы.
Вообще отладка начинается с разработки тестов, эту работу проводил раньше или одновременно с программированием. Тестирование сильно зависит от технологии разработки снизу вверх или сверху вниз. Значительные особенности имеет тестирование коллективных продуктов. Технологии тестирования по данным и по логике существенно отличаются и взаимно дополняемы.
Один раз в условиях жёсткого временного дефицита использовал группу проблемных профессионалов.
Отладка макрокоманд — скорее искусство.
kev
«Вам, наверное, довелось поработать как с людьми, пришедшими в программирование из других наук,
так и с людьми, обученными именно по этой специальности, когда она появилась.
Замечали ли вы разницу? Например, в том, как они решают задачи.
Ну и как уровень подготовки менялся со временем.»
Приходилось. Разницы не замечал. Существенное значение имеет предварительная подготовка по математике и физике. От этого зависит диапазон возможностей.
Если человек собирается просто эксплуатировать готовые системы, образование не нужно, достаточно накопить опыт.
Временная зависимость возможностей существенна. Сегодня программисты много легче ориентируются в разнообразных прикладных средствах, но алгоритмическое развитие сножается с каждым годом.
AlterEgo
Раньше мы шутили, что дети будут спрашивать, папа, а как же ты программировал на 48 кб?

Потом мы шутили над тем как мы раньше шутили.

А теперь я скреплю зубами, потому что в ATmega168 всего 16 кб. А туда надо еще запихать библиотечки для работы с датчиками и с LAN. На логику не остается места.

И отладка тоже очень условна. Отладь черную микросхемку с кучей ножек. Ну разве что светодиодиком она мигнет, а остальное догадки и божественная эманация.

Только кажется что размеры и мощности IBM360 — забытая легенда. А перфокарты и машинистки пародия на клавиатуру. Это все осталось, живет и процветает.

В каком виде хранится исходны код? да все в том же, двоичном, и общаются зверушки все также — 0 и 1. Принял, интерпретировал и догадывайся что хотел тебе сказать датчик.
jodl84
Ах, и от еще что. Как часто вам приходилось проводить оптимизацию кода, для того чтобы увеличить быстродействие, либо уменьшить требуемую память? Если приходилось, то, как у вас поступали в таких случая? Искали ответ в литературе или пытались придумать какой-нибудь специальный прием самостоятельно?
kev
Оптимизацию кода проводили на М-20, где было 4096 адресуемых слов.
Литературы не было, всё на уровне искуства.
С появлением альфа-транслятора это отпало, поскольку это был мощный оптимизирующий транслятор с коэффициэнтом 1.3.
С появлением виртуальной памяти эта задача потеряла актуальность.
jodl84
Ах, и вот еще что. Как часто вам приходилось проводить оптимизацию кода, для того чтобы увеличить быстродействие, либо уменьшить требуемую память? Если приходилось, то, как у вас поступали в таких случая? Искали ответ в литературе или пытались придумать какой-нибудь специальный прием самостоятельно?
jodl84
Отлично! Спасибо за ответы. Вот еще несколько вопросов.

Из тех языков, которые вы перечислили, какой считаете наиболее развитым? Существуют ли языковые конструкции, которых в них нет (например, параметрический полиморфизм), но вам бы хотелось там видеть? Как вы думаете, почему так мало языков, созданных в СССР, вышли за переделы одной лаборатории?

Какое в 70-80-е было общее отношение к ошибкам в программах? Капитуляция или тотальная война? Трудный процесс отладки, должно быть, стимулировал желание написать программу сразу правильно. Программу какой сложности мог написать тогдашний программист сразу без ошибок?

В какой из использованных вами операционных систем наиболее удачный механизм защиты памяти? Насколько трудно было получить контроль, скажем, над устройствами ввода/вывода? Сколько примерно занимало обучение системного программиста премудростям OS/360? Насколько хорошо вообще программисты представляли что и когда происходит?

Когда вы впервые познакомились с объектно-ориентированным подходом? Каково было ваше и ваших коллег к нему отношение тогда и как оно менялось со временем? Этот же вопрос по поводу графических интерфейсов пользователя и концепции ``рабочий стол’’.

Какие вы видели угрозы, так скажем, культуре программирования из-за пришествия персональных компьютеров с ОС Виндовз раньше и какие из них стали реальностью?
vashchenkov
Можно ввяжусь в разговор?
Программу какой сложности мог написать тогдашний программист сразу без ошибок?
Очень интересный вопрос. Т.к. утверждение «без ошибок» — очень расплывчатое.
Что это значит? Что она компилируется? Программа работает и не падает и сообщает либо сообщение об ошибке либо ответ (правильный/неправильный)? Что она работает в строго описанных рамках применения?(Заранее описанные варианты входных данных, в случае выхода за рамки этих данных предупреждает) Во всех случаях программа не должна выдавать правильный ответ, даже в случаях не описанных заранее?
kev
Рады Вашему присутствию, но, мне кажется, на Ваши вопросы я ответил.
vashchenkov
Неа :)
Да и вообще вопрос «неотвечаемый», у каждого в разных задачах свои критерии. Да и мне было интересно понимание задающего вопрос.
Для меня есть три критерия работы «без ошибок».
1. Отсутствие критических ошибок в процессе работы
2. Выполнение набора стандартных тестов
3. Возможность быстрой модификации под новые требования.
kev
Что Вы понимаете под «критическими ошибками»?
Выполнение набора стандартных тестов не гарантирует безошибочности.
Адаптивность программы является одним и существенных критериев качества.
Адаптивная программа устойчивее к сбоям. И, безусловно, коммерчески выигрывает.
vashchenkov
Критические ошибки — необработанные :) (Забыл, что вот сюда в 1 случае из 100 может прийти null и NPE не обработал)
Стандартные тесты — обычно описывают возможные действия клиента, обеспечивающие замкнутость процесса «пользования продуктом». Здесь больше вопросов к тех.заданию. Но это не гарантирует «безошибочность» — соглашусь. Просто как один из критериев, которым должен удовлетворять код, чтобы его «выпустить».
kev
«Из тех языков, которые вы перечислили, какой считаете наиболее развитым?
Существуют ли языковые конструкции, которых в них нет (например,
параметрический полиморфизм), но вам бы хотелось там видеть?»
Наилучшего языка не существует. У каждого языка есть преимущества и недостатки.
Студентов надо приучать к уверенности; «Могу работать на любом языке, который потребуется для решения задачи»
Практически все толковые языки алгол-подобны. Могу выделить: ПЛ/1, Паскаль, С++.
Фортран не люблю, но у него есть ниша, где его трудно заменить.
Ощущение недостаточности языка возникает регулярно. Например, отсутствие динамических массивов в Паскале и С, плохое решение объектов в Борланд Паскале, отсутствие идеологии записе-ориентированных файлов в С.
kev
«Как вы думаете,
почему так мало языков, созданных в СССР, вышли за переделы одной лаборатории?»
Я знаю только один язык, созданный Турчиным в Англии: Рефал.
Причины плохо понимаю. Для зоздания языка необходимо нумизматическое любопытство. Те программисты, с которыми я контактировал, были ориентированы на прикладное программирование. Та же ориентация у различных семинаров.
Например, житель нашего города, Паньков Виктор Михайлович, создал интереснейший язык «Люкс». Но на семинаре МГУ его не приняли.
jodl84
Спасибо за ответы. Отдельное спасибо за историю про Панькова. Он оказывается придумал не только язык, но и процессор! Я тут посетил его сайт – это нечто инфернальное. Мужик конкретно поехал на почве научно-технического прогресса. Случай впрочем, не новый, хорошо описанный в литературе (например, старичок Эдельвейс).

Даже не вникая в суть дела (хотя рекомендую всем почитать, он, например, считает, что построчной запись выражений связана со скоростью исполнения кода) можно сказать, что работа не является научной, поскольку там вообще нет ни одной ссылки на предыдущие работы. Это в XXI по такой-то теме! Оно впрочем, понятно, в ФЭИ наверное нет доступа ни к ACM, ни к IEEE. Впрочем, даже если б и были… мне тут рассказывали про какую-то ведущую научную сотрудницу-математика в одной из лабораторий, которая дожила до почтенного возраста и никогда не слышала, что бывают на свете Грассмановы алгебры или барицентрические координаты.

Короче говоря, разнесли его по делу. Но он к сожалению достиг такой стадии, когда урезонить его никакой возможности нет. Гвозди бы делать из таких людей! А ФЭИ — рассадник мракобесия!
kev
«Какое в 70-80-е было общее отношение к ошибкам в программах? Капитуляция или
тотальная война? Трудный процесс отладки, должно быть, стимулировал желание написать
программу сразу правильно. Программу какой сложности мог написать тогдашний программист
сразу без ошибок?»
Отношение к ошибкам существенно менялось по мере развития программирования.
Лучше всего на этот вопрос ответил Майерс «Надёжность программирования».
Сначала ставилась задача полного тестирования. Постепенно пришли к осознанию невозможности этого.
Принцип Шуры-Буры: «В любой, сколь угодно хорошо программы существует хотя бы одна ошибка».
Сегодня тестирование — процесс, повышающий доверие к программному продукту.
Вопрос сложности решили психологи. Человек, среднего развития, способен одновременно поддерживать 7 объектов.
Количество связей между ними семь факториал, приблизительно тысяча.
Поэтому средний программист способен написать и отладить программу из тысячи операторов.
Программирование почти мгновенно выводит за пределы человеческих возможностей.
Развитие программирования — создание средств борьбы со сложностью.
kev
«В какой из использованных вами операционных систем наиболее удачный механизм защиты памяти?
Насколько трудно было получить контроль, скажем, над устройствами ввода/вывода? Сколько
примерно занимало обучение системного программиста премудростям OS/360? Насколько хорошо
вообще программисты представляли что и когда происходит?»
Ответ зависит от степени развития технических средств. Наболее удобный и мощный механизм
существовал в IBM/370, ОС MVT. Если интересно, я этот механизм опишу здесь, нужно подтвердить интерес.
С появлением виртуальной памяти этот механизм перестал работать. Существующий механизм защиты слабый.
Наиболее сильно защищены системы под Юниксом.
Глубина проникновения программистов в премудрости компьютера и тогда и сейчас одинаковы.
Считанные единицы имеют представление о принципах функционирования компьютера.
Для подготовки хорошего системника требовалось 10 лет.
kev
«Когда вы впервые познакомились с объектно-ориентированным подходом? Каково было ваше и
ваших коллег к нему отношение тогда и как оно менялось со временем? Этот же вопрос по
поводу графических интерфейсов пользователя и концепции ``рабочий стол’’.»
Примерно 90-годы. Происходило это медленно. Сначала познакомился с модулями Турбо-Паскаля, затем объекты Паскаля,
только потом объекты С++.
Первое впечатление — неприятие, потом осторожный восторг. Сейчас я вижу нишу объектов и думаю,
что они не отменяют процедурно-ориентированного подхода.
К графическому интерфейсу и рабочему столу равнодушен.
Штучки для непрофессионалов.
Привык и работаю. Мне было удобно в командерах. Вижу одно существенное преимущество:
в командерах было всего два окна, здесь можно видеть несколько.
kev
«Какие вы видели угрозы, так скажем, культуре программирования из-за пришествия
персональных компьютеров с ОС Виндовз раньше и какие из них стали реальностью?
Примитивизация технического обеспечения и программного. Персоналки хороши для
житейского применения. Сегодня происходит постепенной восстановление. Появляются Mainframes,
кластерные системы. И стала ясна перспективная роль персоналок:
предварительная подготовка задачи в неоднородных вычислительных сетях.
Реально реализованные опасности:
Уничтожение аппаратной защиты, снижение культуры решения задачи, исчезновение некоторых средств разработки.
»
swim_obninsk
kev
Мне лестно.
Но не совсем понимаю, зачем Вы это вспомнили.
Моя идея: организовать диалог со школьниками, — провалилась.
swim_obninsk
Евгений Васильевич, ну как зачем?
С течением времени и я и Вы — мы все уйдем в Лету. А наши публикации в Сети останутся.
Об этом позаботятся студенты нашей кафедры и ещё мой младший сын.
kev
У меня есть ещё что сказать.
Но без вопросов неинтересно.
Мало кто хочет лезть в принципы функционирования компьютера.
Литература по этим темам практически отсутствует.
swim_obninsk
Вопросы есть. Вопросов масса. Компьютер + сеть сейчас есть почти единое целое.
Почему Вы не пришли на защиту курсовых работ, куда приглашали всех преподавателей?
Там были такие вопросы, что Вам мало бы не показалось.
kev
Позавтракал, насладился прекрасным фильмом, готов.
1. Меня никто не приглашал.
2. Компьютер всего лишь необходимый инструмент сетевых технологий. Любую вещь надо класть на нужную полочку.
3. Я знаю идею организации сети. И дальше мне не интересно. Меня привлекали всегда научно-технические приложения.
4. Если Вы помните мои тексты, от них пахнет нафталином. Однако за последние десятилетия ничего принципиально нового в компьютерах не появилось. Функциональная организация остановилась на уровне IBM/370/
swim_obninsk
kev
Я никогда и нигде не называл интернет фуфлом.
Просто не стоит его объявлять панацеей.
В социальных приложениях это мощное средство.
В научно-технических разработках занимает скромное, но полезное место.
guest
http://vk.com/id189629805
Евгений Васильевич, не отвечайте на вопрос. Он есть провокация.
Взамен, предоставлю Вам сей объект: http://swim.obninsk.ru/ksst_search_test
Это тестовый вариант поисковой машины, которой йа в настоящий момент занимаюсь отладкой.
Приглашаю Вас к сотрудничеству и к соавторству в соотв. статье.
Тема статьи: Селективный поиск в глобальных сетях.
kev
Провокации для меня привычны.
Сейчас, позавтракамши и отвечу.
По ссылке схожу, но сотрудничество сомнительно.
Устал я, батенька, и методическая нагрузка большая.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.