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