Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версияСледующая версияСледующая версия справа и слева |
igor:istoria [2019/07/10 00:34] – [50-е-60-е годы ХХ века - эпоха древней компьютерной цивилизации] igor | igor:istoria [2019/07/10 21:29] – [Программирование в новое время] igor |
---|
Несколько слов о ЕС ЭВМ. ЕС расшифровывается: Единая Серия. Предыдущие наши компьютеры, даже те, что имели сходные названия, не образовывали серий. Чаще всего они были несовместимы ни программно, ни хотя бы конструктивно: для каждой новой машины создавались заново все периферийные устройства и даже чисто конструктивные элементы вплоть до последней дверцы шкафа. Это замедляло проектирование и усложняло эксплуатацию. Очевидно назрела задача унификации: для всех машин сделать общий набор периферийных устройств, унифицированные модули оперативной памяти, которые можно было бы подключать по одному или несколько, и ряд процессоров, различающихся только количественно, но программно совместимых и выполненных в едином конструктивном стиле. Тогда, если ранее купленная машина перестанет вас удовлетворять, ее можно будет апгрейдить путем замены процессора или добавления памяти, как мы делаем сейчас с нашими настольными компьютерами. Идея, как мы видим, вполне здравая. Плоха была не идея - плоха была реализация: вместо того чтобы воплотить в новых процессорах все лучшее, что было наработано отечественными специалистами, использовали далеко не лучший американский образец. \\ | Несколько слов о ЕС ЭВМ. ЕС расшифровывается: Единая Серия. Предыдущие наши компьютеры, даже те, что имели сходные названия, не образовывали серий. Чаще всего они были несовместимы ни программно, ни хотя бы конструктивно: для каждой новой машины создавались заново все периферийные устройства и даже чисто конструктивные элементы вплоть до последней дверцы шкафа. Это замедляло проектирование и усложняло эксплуатацию. Очевидно назрела задача унификации: для всех машин сделать общий набор периферийных устройств, унифицированные модули оперативной памяти, которые можно было бы подключать по одному или несколько, и ряд процессоров, различающихся только количественно, но программно совместимых и выполненных в едином конструктивном стиле. Тогда, если ранее купленная машина перестанет вас удовлетворять, ее можно будет апгрейдить путем замены процессора или добавления памяти, как мы делаем сейчас с нашими настольными компьютерами. Идея, как мы видим, вполне здравая. Плоха была не идея - плоха была реализация: вместо того чтобы воплотить в новых процессорах все лучшее, что было наработано отечественными специалистами, использовали далеко не лучший американский образец. \\ |
Очень важный и интересный вопрос: разрядность древних ЭВМ. У современных машин разрядность принимает значение из ряда: 8, 16, 32 или 64, но так было не всегда. В 50-е годы представление о том, что разрядность должна быть равна целой степени двух, еще не сформировалась. В машинах 50-х годов вся информация была организована в виде //машинных слов//, длина которых (она же разрядность) была достаточна для представления числа с плавающей запятой. Так, например, "Стрела" имела машинное слово длиной 43 бит, из которых 35 - мантисса и 6 - порядок, а БЭСМ-6 - 48 бит. Ни шестнадцатиразрядных, ни тем более восьмиразрядных машин в те времена никто не строил: ведь машины были нужны для научных и инженерных расчетов, а такие расчеты требуют точности. Ячейки памяти имели размер машинного слова, а система команд процессора продумывалась так, чтобы каждая команда также вписывалась в машинное слово. \\ | Очень важный и интересный вопрос: разрядность древних ЭВМ. У современных машин разрядность принимает значение из ряда: 8, 16, 32 или 64, но так было не всегда. В 50-е годы представление о том, что разрядность должна быть равна целой степени двух, еще не сформировалась. В машинах 50-х годов вся информация была организована в виде //машинных слов//, длина которых (она же разрядность) была достаточна для представления числа с плавающей запятой. Так, например, "Стрела" имела машинное слово длиной 43 бит, из которых 35 - мантисса и 6 - порядок, а БЭСМ-6 - 48 бит. Ни шестнадцатиразрядных, ни тем более восьмиразрядных машин в те времена никто не строил: ведь машины были нужны для научных и инженерных расчетов, а такие расчеты требуют точности. Ячейки памяти имели размер машинного слова, а система команд процессора продумывалась так, чтобы каждая команда также вписывалась в машинное слово. \\ |
Смешной вопрос: а какова разрядность ЕС ЭВМ? Из десяти современных специалистов десять ответят: 32. Ответ неверный. Ширина выборки из оперативной памяти, она же разрядность машинного слова, действительно, была равна 32, но разрядность арифметико-логического устройства у первых машин серии могла быть 16 и даже 8. Но это не главное. Оперативная память этих машин имела //байтовую организацию//, так что чтение и запись в память могли производиться байтами, полусловами (2 байта - 16 бит) и словами (4 байта - 32 бит). Процессор же, помимо этого, мог обрабатывать и числа с плавающей запятой в формате двойного слова (8 байт - 64 бита). Такая структура памяти, удобная для решения как физико-математических, так и планово-экономических задач, унаследована всеми компьютерами последующих эпох, так что IBM-360 и соответственно ЕС можно считать частично древними машинами, а частично средневековыми. \\ \\ | Смешной вопрос: а какова разрядность ЕС ЭВМ? Из десяти современных специалистов десять ответят: 32. Ответ неверный. Ширина выборки из оперативной памяти, она же разрядность машинного слова, действительно, была равна 32, но разрядность арифметико-логического устройства у первых машин серии могла быть 16 и даже 8. Но это не главное. Оперативная память этих машин имела //байтовую организацию//, так что чтение и запись в память могли производиться байтами, полусловами (2 байта - 16 бит) и словами (4 байта - 32 бит). Процессор же, помимо этого, мог обрабатывать и числа с плавающей запятой в формате двойного слова (8 байт - 64 бита). Такая структура памяти, удобная для решения как физико-математических, так и планово-экономических задач, унаследована всеми компьютерами последующих эпох. \\ \\ |
==== Аналоговая техника во второй половине XX века ==== | ==== Аналоговая техника во второй половине XX века ==== |
Мы говорим в основном про цифровую вычислительную технику, однако давайте вспомним и аналоговую. В середине XX века она отказалась от валиков, колесиков и рычажков, перешла полностью на электрический, а затем на электронный принцип действия. Это позволило во-первых, увеличить быстродействие, и во вторых, придать машинам способность к программированию (программирование чаще всего осуществлялось путем вставки проводов со штекерами в нужные гнезда на лицевой панели прибора). Но ценой ускорения работы стала возросшая погрешность вычислений. (Для несведущего в технике читателя последнее утверждение может показаться диким, но это действительно так). \\ | Мы говорим в основном про цифровую вычислительную технику, однако давайте вспомним и аналоговую. В середине XX века она отказалась от валиков, колесиков и рычажков, перешла полностью на электрический, а затем на электронный принцип действия. Это позволило во-первых, увеличить быстродействие, и во вторых, придать машинам способность к программированию (программирование чаще всего осуществлялось путем вставки проводов со штекерами в нужные гнезда на лицевой панели прибора). Но ценой ускорения работы стала возросшая погрешность вычислений. (Для несведущего в технике читателя последнее утверждение может показаться диким, но это действительно так). \\ |
Заканчивая разговор об операционных системах нового времени, я хотел бы обратить внимание читателей вот на какой аспект. Ни Столлман, ни Торвальдс не были бунтарями или новаторами. Они только хотели сделать программное обеспечение доступным для всех, и они это сделали, но не ставили перед собой амбициозных задач типа перелома исторических эпох - они шли в кильватере UNIX. Так идеология операционной системы, разрабатывавшаяся еще в 70-е годы XX века, оказалась законсервирована в новых изделиях. Чуть позже мы будем рассматривать новейшее компьютерное время, практически совпадающее с XXI веком, но в области операционных систем никакого новейшего времени мы не наблюдаем, и в главе "Новейшее компьютерное время" разговора об операционных системах не будет. \\ \\ | Заканчивая разговор об операционных системах нового времени, я хотел бы обратить внимание читателей вот на какой аспект. Ни Столлман, ни Торвальдс не были бунтарями или новаторами. Они только хотели сделать программное обеспечение доступным для всех, и они это сделали, но не ставили перед собой амбициозных задач типа перелома исторических эпох - они шли в кильватере UNIX. Так идеология операционной системы, разрабатывавшаяся еще в 70-е годы XX века, оказалась законсервирована в новых изделиях. Чуть позже мы будем рассматривать новейшее компьютерное время, практически совпадающее с XXI веком, но в области операционных систем никакого новейшего времени мы не наблюдаем, и в главе "Новейшее компьютерное время" разговора об операционных системах не будет. \\ \\ |
==== Программирование в новое время ==== | ==== Программирование в новое время ==== |
Рассматривая программирование в __древние__ времена, мы заметили, что компьютеры имели мало оперативной памяти, из-за чего программист должен был писать программу так, чтобы количество команд в ней было минимальным, а польза от каждой команды - максимальной. Это требование никак невозможно было обойти, поэтому мы назвали его категорическим императивом программирования. Компьютеры __средних веков__ имели гораздо больше оперативной памяти и прощали некоторую избыточность команд, но мечта программистов о райской жизни на земле в очередной раз не сбылась (и можно не сомневаться - не в последний): средневековые задачи требовали программ большого объема. | Рассматривая программирование в __древние__ времена, мы заметили, что компьютеры имели мало оперативной памяти, из-за чего программист должен был писать программу так, чтобы количество команд в ней было минимальным, а польза от каждой команды - максимальной. Это требование никак невозможно было обойти, поэтому мы назвали его категорическим императивом программирования. Компьютеры __средних веков__ имели гораздо больше оперативной памяти и прощали некоторую избыточность команд, но мечта программистов о райской жизни на земле не сбылась (в очередной раз, и можно не сомневаться - не в последний): средневековые задачи требовали программ большого объема. В __новое время__ компьютеров стало реально много, задач для них - тоже, так что объем работ для программистов еще прибавился. Как решить проблему нехватки рабочих рук в программировании? С наших сегодняшних позиций просматриваются следующие варианты: \\ |
В __новое время__ компьютеров стало реально много, задач для них тоже меньше не стало, так что объем работ для программистов еще прибавился. Как решить проблему нехватки рабочих рук в программировании? С наших сегодняшних позиций просматриваются следующие варианты: \\ | * Разрабатывать новые технологии, повышающие производительность труда программистов. Если продолжить нашу аналогию с паровозами, то на железнодорожном транспорте прогрессивной технологией является электрификация дорог: электровоз, по размерам и весу сходный с паровозом, может иметь бОльшую мощность, а значит везти бОльший груз... А что у нас? Похоже, что ничего. Вопрос о создании прогрессивных технологий на смену старому |
* Разрабатывать новые технологии, повышающие производительность труда программистов. Если продолжить нашу аналогию с паровозами, то на железнодорожном транспорте прогрессивной технологией является электрификация дорог. А что у нас? Похоже что ничего. Вопрос о создании прогрессивных технологий на смену старому | |
верному Алголу никогда и никем даже не ставился, а если вопрос не ставить, то и ответа на него ждать не приходится (еще раз акцентирую внимание на том, что язык Си прогрессивной технологией по отношению к Алголу не является). \\ | верному Алголу никогда и никем даже не ставился, а если вопрос не ставить, то и ответа на него ждать не приходится (еще раз акцентирую внимание на том, что язык Си прогрессивной технологией по отношению к Алголу не является). \\ |
* Наращивать количество учебных мест в институтах, готовящих программистов. Решение вроде бы очевидное, но есть подводный камень: сколько бы мы ни создавали учебных мест, на них будут приходить люди, при всем достаточном IQ не обладающие нужными деловыми качествами. Вложить в них профессиональные знания не проблема, а вот научить их самостоятельно разрабатывать качественный продукт - к этому институтские преподаватели не готовы в принципе. В других профессиях, как рабочих, так и инженерных, деловые качества не играют такой важной роли, как у нас. \\ | * Наращивать количество учебных мест в институтах, готовящих программистов. Решение вроде бы очевидное, но есть подводный камень: сколько бы мы ни создавали учебных мест, на них будут приходить люди, при всем достаточном IQ не обладающие нужными деловыми качествами. Вложить в них профессиональные знания не проблема, а вот научить их самостоятельно разрабатывать качественный продукт - к этому институтские преподаватели не готовы в принципе. В других профессиях, как рабочих, так и инженерных, деловые качества не играют такой важной роли, как у нас. \\ |
* "Программирование без программирования": создать сейчас такую программу, с помощью которой конечный пользователь впоследствии мог бы решать новые задачи, не обращаясь к программисту. \\ | * "Программирование без программирования": создать сейчас такую программу, с помощью которой конечный пользователь впоследствии мог бы решать новые задачи, не прибегая к услугам программиста. \\ |
* Вовлечь в разработку программ людей, не обладающих высокой профессиональной подготовкой, путем разработки "суррогатных" технологий программирования. \\ | * Вовлечь в разработку программ людей, не обладающих высокой профессиональной подготовкой, путем разработки "суррогатных" технологий программирования. \\ |
=== Задачи, языки и технологии программирования=== | === Задачи, языки и технологии программирования === |
В новое время программирование как единая профессия, по большому счету, перестало существовать. Вместо одной мы получили множество профессий, для каждой из которых характерны свои инструменты и свои приемы работы, зачастую настолько различные, что переход из одной области программирования в другую может оказаться весьма затруднительным. \\ | В новое время программирование как единая профессия, по большому счету, перестало существовать. Вместо одной мы получили множество профессий, для каждой из которых характерны свои инструменты и свои приемы работы, зачастую настолько различные, что переход из одной области программирования в другую может оказаться весьма затруднительным. \\ |
**Программирование мелкокаменное и крупнокаменное**. В обиходе камнем называют процессор, а мелко - по-гречески микро, так что мелкокаменная техника - это микропроцессоры и микроконтроллеры, и мелкокаменное программирование соответственно. \\ | **Программирование мелкокаменное и крупнокаменное**. В обиходе камнем называют процессор, а мелко - по-гречески микро, так что мелкокаменная техника - это микропроцессоры и микроконтроллеры, и мелкокаменное программирование соответственно. \\ |
киповцев и электриков специальный, притом машино-независимый, язык - идея очевидно вполне здравая... Но чтобы здравая идея получила столь же здравое воплощение в металл, нужны соответствующие научные исследования и опытно-конструкторские разработки, а вот тут у кого-то что-то не сконтачилось. Международная электротехническая комиссия (МЭК), вместо того чтобы __разрабатывать__ стандарт мелкокаменного языка (а разработка стандартов - ее непосредственная трудовая функция), слепила его из того, что было, а потом, как это обычно и бывает в жизни, "что было, то и полюбила": в стандарт вошли не один, а целых 5 языков (мы их рассмотрим чуть подробнее в главе "Микроконтроллеры"). Они появились стихийно в разное время в разных странах, каждый из них (при всей несомненной пользе) имел свои кривоватости и шероховатости, а когда 5 языков попытались объединить в нечто целое, эти шероховатости никуда не исчезли - наоборот, проявились еще сильнее. Неудивительно, что до конца нового времени МЭКовские языки так и не составили сколько-нибудь серьезной альтернативы ассемблеру. И даже в новейшую эпоху, когда все программирующее человечество уже послало ассемблеру последний прощальный поцелуй, МЭКовские языки так и не заняли преобладающего положения на рынке, уступив место языку Си. \\ | киповцев и электриков специальный, притом машино-независимый, язык - идея очевидно вполне здравая... Но чтобы здравая идея получила столь же здравое воплощение в металл, нужны соответствующие научные исследования и опытно-конструкторские разработки, а вот тут у кого-то что-то не сконтачилось. Международная электротехническая комиссия (МЭК), вместо того чтобы __разрабатывать__ стандарт мелкокаменного языка (а разработка стандартов - ее непосредственная трудовая функция), слепила его из того, что было, а потом, как это обычно и бывает в жизни, "что было, то и полюбила": в стандарт вошли не один, а целых 5 языков (мы их рассмотрим чуть подробнее в главе "Микроконтроллеры"). Они появились стихийно в разное время в разных странах, каждый из них (при всей несомненной пользе) имел свои кривоватости и шероховатости, а когда 5 языков попытались объединить в нечто целое, эти шероховатости никуда не исчезли - наоборот, проявились еще сильнее. Неудивительно, что до конца нового времени МЭКовские языки так и не составили сколько-нибудь серьезной альтернативы ассемблеру. И даже в новейшую эпоху, когда все программирующее человечество уже послало ассемблеру последний прощальный поцелуй, МЭКовские языки так и не заняли преобладающего положения на рынке, уступив место языку Си. \\ |
Про технологии крупнокаменного программирования буквально пара слов. Новое время отмечено окончательным отказом как от древних технологий, основанных на потоковом вводе данных, так и от средневековых, ориентированных на использование телетайпов и пишущих машинок. На языках остановимся более подробно, но чуть ниже. \\ | Про технологии крупнокаменного программирования буквально пара слов. Новое время отмечено окончательным отказом как от древних технологий, основанных на потоковом вводе данных, так и от средневековых, ориентированных на использование телетайпов и пишущих машинок. На языках остановимся более подробно, но чуть ниже. \\ |
**Программирование системное и прикладное**. В главе "Компьютерные средние века" мы рассмотрели целый ряд языков и отметили, что с тех пор и до наших дней в этой области не произошло никаких революционных изменений. Сказанное не означает, что никаких событий вообще не произошло. \\ | **Программирование системное и прикладное**. В главе "Компьютерные средние века" мы рассмотрели целый ряд языков и отметили, что с тех пор и до наших дней в этой области не произошло революционных изменений. Сказанное не означает, что никаких событий вообще не произошло. \\ |
В 90-е годы XX века имела место коренная ревизия языкового "арсенала". Если языком N1 в древности был Фортран, а в средние века Бэйсик, то к началу нового времени из всех ранее известных языков остался, по большому счету, только Си. Подчеркиваю: по большому счету, потому что Кобол, Ада и даже Фортран никуда не исчезали, просто их доля в общем объеме разработок программного обеспечения значительно уменьшилась, а ПЛ-1, Паскаль и много других языков практически вышли из употребления. \\ | В 90-е годы XX века имела место коренная ревизия языкового "арсенала". Если языком N1 в древности был Фортран, а в средние века Бэйсик, то к началу нового времени из всех ранее известных языков остался, по большому счету, только Си. Подчеркиваю: по большому счету, потому что Кобол, Ада и даже Фортран никуда не исчезали, просто их доля в общем объеме разработок программного обеспечения значительно уменьшилась, а ПЛ-1, Паскаль и много других языков практически вышли из употребления. \\ |
В чем секрет долгожительства тех или иных языков? \\ | В чем секрет долгожительства тех или иных языков? \\ |