Эволюция ЭВМ
За время своего существования компьютеры претерпели много изменений. В общей сложности было придумано несколько поколений ЭВМ.
Предшественники компьютеров
Раньше люди выполняли вычисления при помощи подручных средств. Вначале для этого применяли узелковые способы или абак. Затем стали использовать счеты.
При этом первые машины для вычислений появились значительно позже. К примеру, в 1642 году Паскаль разработал специальную машину, которая называлась «Паскалина». Это устройство стало первой попыткой механизировать вычисления.
Затем появилась логарифмическая линейка – первый прибор, который ускорил вычисления и получил широкое распространение. В 1673 году Готфрид Лейбниц придумал первую машину, которая могла складывать, вычитать, делить и умножать.
В 1822 году Чарльз Бэбидж придумал разностную машину. Она стала первой попыткой создать программируемое вычислительное устройство. Программы для этого прибора создала Ада Лавлейс.
Первое поколение
Первый компьютер человек придумал в 1946 году. Тогда устройства изготавливались на базе вакуумных электронных ламп. Осуществлять управление ими можно было с пульта и при помощи перфокарт.
При этом устройства получились достаточно дорогими. К тому же они обладали и другими минусами:
- сложный электронный механизм нуждался в большом количестве электроэнергии и продуцировал много тепла;
- в компьютере почти не было ПО;
- такой компьютер мог выполнять минимум команд;
- действия выполнялись очень медленно – это было связано с ограниченным количеством оперативной памяти.
Второе поколение
Многих людей интересует, в каком именно году возникли компьютеры второго поколения. Это произошло в 1958 году. Такие устройства базировались на применении полупроводниковых транзисторов. Программы и информацию в них вводили посредством перфокарт и перфолент.
ЭВМ 3-го поколения
Компьютеры третьего поколения человек создал в 1964 году. На этом этапе ЭВМ делали с применением интегральных схем. Эти приспособления включали десятки или тысячи электронных элементов, которые находились на небольшой пластине размером 1х1 сантиметр. Для управления такими устройствами использовали алфавитно-цифровые терминалы. Информацию и программы вводились посредством терминала или с применением перфокарт или перфолент.
Четвертое поколение
С 1971 года наступила эра ЭВМ четвертого поколения. Устройства начали изготавливать на базе крупных интегральных схем. Связь с пользователем производилась через цветной графический экран. Наиболее известными представителями этого поколения электронно-вычислительного машин считаются персональные компьютеры.
Во второй половине семидесятых компьютеры достигли такой стадии развитии, когда создание доступных устройств перестало быть проблемой. Первый ПК придумали 2 студента Стивен Джобс и Стив Возняк. Их компьютер был нацелен на обычных покупателей, а не на программистов. ПК не требовалось собирать – он продавался в готовом виде. Идея была такой успешной, что ее впоследствии подхватили и остальные компании.
Прогнозы на ЭВМ будущего
Сегодня ученые концентрируют усилия над созданием квантовых компьютеров. Такие машины базируются на кубитах. Они смогут осуществлять вычисления, которые сегодня производить нельзя.
Тем не менее, на сегодняшний день еще далеко до по-настоящему интеллектуального компьютера, который мог бы самостоятельно управлять полученной информацией и развивать возможность обучаться за счет нейросетей.
О качествах программиста
Основная задача программиста – написание кода, но для этого знания языков программирования недостаточно. Специалист взаимодействует с заказчиками, командой, работает с техническими заданиями – в этом заключается главное отличие профессионала в области программирования от кодера.
Вот ключевые качества, которыми должен обладать программист:
Аналитический склад ума, математические способности: по сути, написание кода – это решение задачи, которое требует логики и постоянной аналитики
Программист должен не только уметь это делать, но и получать удовольствие от постоянного мыслительного процесса.
Критическое мышление: важно не просто работать с языками программирования, но и непрерывно совершенствовать свою работу, оптимизировать процесс, находить другие пути решения задачи. Кстати, прокачать это качество вам поможет наша онлайн-программа «Когнитивистика», где за несколько месяцев вы научитесь применять в своей жизни более 20 техник мышления, которые помогут находить нестандартные решения различных задач.
Усидчивость и хорошая концентрация: программисты ориентированы на процесс
Часто им приходится писать длинные коды, а это требует сосредоточенности и повышенного внимания, иначе постоянные отвлечения от дела могут привести к серьезным ошибкам.
Ответственность: это качество присуще всем, кто называет себя профессионалом, и программист не исключение. Он отвечает за качество своей работы, исправность и функциональность программы, которую он написал.
Умение работать в команде: проектная деятельность подразумевает несколько исполнителей, поэтому нужно быть готовым к постоянному взаимодействию с коллегами, даже если речь идет о заядлом интроверте.
Коммуникабельность, навыки активного слушания: эти качества пригодятся при работе с заказчиками, ведь часто их требования к написанию программы понятны только им или вовсе далеки от реальности. Главная задача – научиться договариваться и находить точки соприкосновения.
Детальный подход к работе: программист должен быть внимателен, ведь в языке программирования нет ненужных символов, здесь важна каждая точка и запятая. Если сделать ошибку в написании кода, можно потратить уйму времени на ее поиск и устранение.
Кроме того, программист должен стремиться к самосовершенствованию, постоянно изучая новые технологии в своей области работы, иначе он рискует потерять свою значимость на рынке труда и остаться невостребованным.
Здорово, если специалист такого профиля интересуется изучением иностранных языков, ведь это открывает множество перспектив: стажировка и работа в иностранных компаниях, работа над проектом международного уровня, преимущество в карьерном росте.
Машина электронная вычислительная общего назначения БЭСМ-4
Главный конструктор: к.т.н. О.П. Васильев; научный руководитель: академик С.А. Лебедев; основные разработчики: В.И. Глоба, A.B. Гостева, А.A. Грызлов, B.B. Дроботенко, Л.Г. Зима, Н.Н. Игрицкий, Л.В. Ленгник, Ю.В. Никишин, Л.В. Смирнова, С.И. Судариков, В.П. Чекин и др.
Основой для серийной БЭСМ-4 стал макет машины, построенный из макетов основных узлов ЭВМ на первых полупроводниковых элементах инициативной группой молодых сотрудников ИТМ и ВТ. Эта разработка, названная БЭСМ-3, повторяла структурно-логическую схему М-20.
Организация-разработчик БЭСМ-4: ИТМ и ВТ.
Предприятие-изготовитель: Завод им. Володарского, Ульяновск.
Год окончания разработки: 1961.
Год начала выпуска: 1962.
Год окончания производства: 1966.
Число выпущенных машин: 30.
ЭВМ БЭСМ-4 имела трехадресную систему команд, расширенную по сравнению с системой команд ЭВМ М-20. Быстродействие машины в среднем около 20 тыс. операций в секунду. Система представления чисел — двоичная с плавающей запятой. Количество разрядов для кодов чисел — 45. Диапазон представления чисел от 2-63 до 263.
БЭСМ-4 состояла из запоминающего устройства, устройства управления, арифметического устройства, устройства ввода-вывода и пульта управления с панелью сигнализации.
Емкость оперативного запоминающего устройства на магнитных сердечниках — от 4096 до 8192 ячеек по 45 двоичных разрядов каждая. Время обращения — 10 мкс. Емкость накопителя на магнитных барабанах — 65536 45-разрядных слов (4 барабана по 16384 слова). Емкость внешней памяти на магнитных лентах — 8 блоков по 2 млн. слов в каждом.
Ввод информации в машину — с перфокарт со скоростью 700 карт в минуту. Вывод информации производился на перфокарты, перфоленту и на печать.
Элементная база — съемные блоки с логическими схемами на транзисторах и полупроводниковых диодах.
Машина построена по мелкоблочному принципу с применением печатного монтажа и собрана в трех шкафах. В каждом шкафу размещались платы, в которые устанавливались съемные блоки (ячейки). Использовались 30-контактные ножевые разъемы.
Программное обеспечение — прообраз операционной системы и библиотека стандартных подпрограмм ИС-2.
Технико-эксплуатационные характеристики:
- Средняя производительность — 20 тыс. операций в секунду.
- Потребляемая мощность — не более 8 кВт.
- Требуемая площадь — не более 65 м2.
- Температурный режим — 10-35°С.
- Внутренняя автономная система воздушного охлаждения.
Были получены патенты на ЭВМ БЭСМ-4, патенты на отдельные составляющие БЭСМ-4; имелись публикации.
Использование накопленного багажа программного обеспечения М-20 продолжилось в выпускавшихся в 1968-1974 годах ЭВМ М-220 и М-222.
Девяностые и отказ от персональных компьютеров
Уильям отошёл от управления компанией в 1987 году, сохранив за собой звание почётного директора HP, а Дэвид Паккард покинул HP в 1993 году. Гараж, в котором они основали кооператив, был превращён в музей Кремниевой долины.
Однако после ухода основателей, в 1993 году, публике представили персональный компьютер HP OmniBook 300, а в 1995 — серию HP Pavilion. Благодаря этим продуктам HP вышла на рынок домашних компьютеров и уже в 1997 году вошла в промышленный индекс Доу Джонса в качестве одной из 30 крупнейших корпораций США.
HP продолжала вкладываться в развитие компьютеров и ноутбуков. В 2001 году она объединилась с Intel и создала архитектуру Itanium. Это позволило повысить разрядность техники с 32 до 64 бит. В 2002 году компания приобрела Compaq Computer Corporation, крупнейшего американского производителя ПК, и стала мировым технологическим гигантом, обслуживающим более миллиарда клиентов в 162 странах.
И хотя такое слияние оказалось недостаточно выгодным, это не помешало HP совершить финансовый прорыв. В 2007 году компания стала первым технологическим гигантом с годовой выручкой больше 100 миллиардов долларов. При этом в 2006 году HP смогла обогнать по выручке и голубого гиганта — IBM.
В следующие несколько лет HP продолжила стратегию слияний и поглощений: купила Palm, 3Com, Electronic Data Systems и Autonomy. Не все покупки оказались выгодными, однако благодаря им HP сумела выйти на рынки тестирования программного обеспечения, производства сетевого оборудования, КПК и смартфонов.
Компиляторы и предубеждения
Ассемблер позволил создать простые превращения. Например, перевод 01 в ADD. Макроассемблер расширил эту идею и подарил программистам возможность сворачивать несколько инструкций в одну. К примеру, если в программе вы постоянно добавляли значение в ячейку памяти и проверяли, не переполнена ли она, всё это можно было записать в макрос INCRT и использовать его, меняя лишь переменные. По сути, макроассемблеры превратились в первые языки высокого уровня.
Но в таком подходе заключалась важная проблема – каждый раз перед созданием кода необходимо было сворачивать базовые операции в макросы. Требовался инструмент, который освободит программистов от постоянного копирования. Так появился компилятор.
Теперь-то мы знаем, что благодаря компилятору мы можем создать язык программирования с абсолютно любым синтаксисом, главное, чтобы он грамотно переводил наш код в машинные команды. А в то время специалисты скептически относились к языкам высокого уровня. Частично это было обусловлено производительностью компьютеров – упрощение синтаксиса со сложными трансформациями дорого обходилось, могло вернуть технологический прогресс на несколько лет назад. Частично причиной были эмоции – было тяжело отойти от формы машинных команд, потерять контроль над процессами. Программисты всерьёз боялись, что после компиляции они не смогут понять исполняемые команды
Сегодня нам наплевать, как выглядит машинный код, а в те времена это казалось важной проблемой
Тем не менее компилятор стал единственным выходом из ситуации, но здесь проявилась другая трудность – арифметические выражения. Их исполнение не совпадает с тем, как машина читает код. Из школьного курса мы знаем порядок вычислений в выражении «2+3*5», но машина читает код в одном направлении, так что ответ будет неверным. Да, указанный пример можно решить, создав макрос, но для сложных выражений уровня «(2 + 3 * 5 + 4/6) * 10 + 16- (14 + 15) * 8» требовался принципиально иной подход.
Где учиться на программиста
Получить образование в сфере программирования могут как выпускники 9-х, так и 11-х классов.
Для поступления в колледж понадобятся результаты ОГЭ (русский язык, математика, информатика) и аттестат об основном общем образовании. В процессе обучения ученик изучит следующие дисциплины:
- высшая математика;
- теория вероятности;
- математическая логика;
- статистика;
- языки программирования;
- разработка ПО;
- автоматизация и управления информационными системами;
- средства информатизации.
Отучиться на специальность можно по нескольким направлениям:
- «Прикладная информатика»;
- «Программирование в компьютерных системах»;
- «Информационные системы и программирование».
Срок обучения варьируется от 1-го года 10-ти месяцев до 2-х лет и 10-ти месяцев (зависит от специальности и учебного заведения).
Так как при приеме на работу в государственные структуры и крупные компании требуется высшее образование, многие абитуриенты рассматривают вариант учебы в вузе.
При поступлении в университет понадобятся результаты ЕГЭ по информатике, профильной математике и русскому языку. Для некоторых направлений может потребоваться физика.
При поступлении ученик можно выбрать одно из следующих направлений:
- «Математическое обеспечение и администрирование информационных систем»;
- «Веб-разработка»;
- «Информатика и вычислительная техника»;
- «Бизнес-информатика»;
- «Прикладная информатика в экономике»;
- «Разработка интернет приложений»;
- «Прикладная информатика»;
- «Разработка, обеспечение безопасности информационных систем»;
- «Программная инженерия»;
- «Фундаментальная информатика и информационные технологии»;
- «Информационная безопасность»;
- «Разработка компьютерных игр, виртуальной и дополнительной реальности»;
- «IT-менеджмент в бизнесе».
Учеба по программе бакалавриата занимает 4 года.
Морис Уилкс — первый программист мужчина
Он родился в 1913-м году в Великобритании. Обучался в Кембридже по специальности «радиофизика». Принимал участие во Второй Мировой Войне.
Уже в 1946-м году вернулся в научную деятельность. В тот момент ему попался доклад математика Д. Неймана о разработке Вычислительной Машины с именем «EDVAC» в США. Этот доклад вдохновил математика на изучение возможностей ЭВМ, он прошел множество тематических теоретических лекций.
Пройдя различное обучение, он решил самостоятельно создать свою ЭВМ с существенными изменениями и усовершенствованиями всех имеющихся на тот момент теоретических разработок подобных машин. Именно он:
- разработал «Ассемблер»;
- разработал библиотеку подпрограмм;
- создал алгоритм, который размещал эти библиотеки в памяти и отвечал за их вывод;
- разработал принцип микропрограммирования (управление компьютером при помощи небольших команд);
- и др.
Именно поэтому он заслужил статус — современный «первый программист», так как именно его доработки плотно легли в основу современного программирования.
Популярность языков
Какие основные языки программирования — определить непросто. Существуют различные метрики для измерения популярности языков, каждая из которых отражает определенный аспект популярности языка:
- Подсчет числа вакансий с упоминанием этого языка.
- Количество проданных книг (учебников или справочников).
- Оценка количества строк кода, написанных на языке (например, по статистике хостингов, где публикуются тексты программ).
- Подсчет упоминаний языка в запросах поисковиков.
Например, журнал IEEE Spectrum попытался составить самый объективную картину популярности языков программирования по 12 метрикам из 10 источников. Вот как выглядела в 2017 году таблица, отранжированная по этим параметрам:
График популярности языков, IEEE Spectrum
По активности разработчиков на GitHub в 2017 году рейтинг выглядит так:
По каждой метрике может лидировать какой-то один язык, а по другой метрике — другой. Например, Cobol до сих пор доминирует в корпоративных дата-центрах, на нем написано много программ, хотя новых практически не пишут. Вариации языка C используются в системном программировании, а язык Java популярен для написания приложений под Android. Прочие языки регулярно используются для создания других разнообразных приложений.
За каким языком программирования будущее — покажет история, но исследователи отмечают, что по совокупности метрик в последнее время растет популярность Python, который сейчас вышел на 1-е место. Поднялись по рейтингу C# и Swift. По количеству вакансий для программистов C значительно опережает Python. В веб-программировании популярны JavaScript и PHP.
Важно!
Если ваша главная цель — найти высокооплачиваемую работу, то смотрите на соответствующие метрики и выбирайте правильный подход к изучению тех языков программирования, которые актуальны в конкретной области.
Языки высокого уровня
Языки программирования высокого уровня освобождают программистов от необходимости детализировать программы до слишком мелких машинных команд и знать особенности конкретных вычислительных устройств.
Писать программы на них значительно проще. Если задать вопрос, какой язык программирования легче, то следует смотреть именно в сторону высокоуровневых учебных языков. Они понятны человеку практически без дополнительных пояснений. А вот чтобы компьютер понял инструкции, написанные на высокоуровневом языке, специальная программа-компилятор переводит их в язык машинных инструкций, то есть на низкоуровневый язык.
Топовые изобретения HP
Давайте посмотрим на самые популярные и коммерчески успешные продукты Hewlett-Packard, которые заложили основу финансового успеха компании.
1. Низкочастотный генератор Model 200A
Компания Disney была первым крупным клиентом Hewlett-Packard. В 1939 году они работали над музыкальным фильмом «Фантазия» и искали оборудование для тестирования стереозвука.
У HP на тот момент был разработан низкочастотный генератор 200А на лампах накаливания. Это решение обеспечивало стабильную работу генератора и позволило установить на него довольно низкую цену в 54,4 доллара. Идею для создания генератора подал Фредерик Терман, а позднее он свёл Уолта Диснея и двух молодых инженеров.
Название генератора — 200А — тоже было выбрано не просто так. Это гениальный маркетинговый ход, который должен был убедить всех, будто бы фирма работает не первый год. И клиенты HP в это поверили.
Фото: Wikimedia Commons
Хьюлетт улучшил генератор и выпустил модель 200В — и Disney закупила у HP восемь таких генераторов по 71,5 долларов за штуку. На вырученные деньги Хьюлетт и Паккард арендовали просторное помещение для работы и наняли первых сотрудников. Работа с Disney положила начало череде успешных сделок и усилила уверенность друзей в том, что они занимаются правильным делом.
2. Почти ПК: программируемый калькулятор HP 9100A
Прототип первого в мире настольного программируемого калькулятора создал инженер Томас Осборн. Для своего времени калькулятор был настоящим инженерным чудом: интегральные микросхемы в нём были заменены на дискретные транзисторы и диоды.
Фото: Wikimedia Commons
Кстати, это был первый (снова!) научный калькулятор, в котором использовались диоды и транзисторы. За пару нажатий он позволял совершить сложные математические операции — например, вычислять логарифмы или возводить числа в степень.
Сначала калькулятор хотели назвать компьютером, но позже отказались от этой идеи. В рекламной кампании его даже специально противопоставляли персональному компьютеру, обещая покупателям «избавление от ожидания очереди к большому компьютеру».
«Если бы мы назвали его компьютером, он был бы отвергнут компьютерными профи из числа наших клиентов, потому что не был похож на продукты IBM».
Уильям Хьюлетт
После ошеломляющего успеха настольного калькулятора Уильям Хьюлетт задумался о создании более компактной версии. Он попросил инженеров заняться разработкой калькулятора, который помещался бы в нагрудный карман пиджака. Никто не верил в успех этой идеи — даже Дэвид, но Уильям убедил его выпустить калькулятор на рынок.
Паккард посчитал, что нужно продать не менее 10 тысяч калькуляторов, чтобы окупить затраты на производство и рекламу. Итог превзошёл все ожидания: было продано больше 100 тысяч устройств! Именно после успешных продаж миниатюрных калькуляторов HP попала в знаменитый список Fortune 500.
3. Революционная серия принтеров HP LaserJet
LaserJet — это первая в мире серия настольных лазерных принтеров, в основе которых лежали технологии Canon и Xerox. Поражённые компьютерным успехом Apple в 1980-х годах, Дэвид и Паккард решили заняться производством принтеров, так как поняли, что конкурировать с Apple они не смогут.
На выставке достижений телекоммуникационной отрасли Comdex HP представила первый лазерный принтер серии LaserJet. Модель обеспечивала разрешение 300 dpi и печатала со скоростью восемь страниц в минуту. Кроме того, это был первый лазерный принтер, в котором можно было поменять картриджи.
На момент выхода у этой модели была достаточно высокая цена — 3495 долларов, которую чуть позднее смогли уменьшить до 2995 долларов. Но уже в 1990 году HP выпустила бюджетную модель за 1000 долларов.
Линейка принтеров LaserJet была настоящим технологическим прорывом. Благодаря компонентам от Canon принтеры получались удобными и выдавали прекрасное качество, а собственный язык описания страниц PCL позволил не только сделать их доступными, но и сохранить высокую скорость печати.
В 1998 году HP выпустила аппарат, который совмещал в себе принтер, сканер, ксерокс и даже факс. Линейка LaserJet полностью захватила рынок: аппараты HP были удобными в домашнем использовании, а их стоимость стартовала с 250 долларов, что делало принтеры доступными.
В середине 2000-х HP отчиталась о том, что с момента выпуска на рынок было продано более 50 миллионов принтеров линейки LaserJet. До сих пор эта серия — одна из лучших на рынке принтеров.
Первый сборщик
Решение лежало на поверхности: необходимо перевести цифровые обозначения операций в буквы. То есть вместо «01 10 15» использовать «ADD 10 15». Это требовало дополнительного перевода символов в машинную команду, но, учитывая проблему, жертва была минимальна.
Решение оказалось настолько очевидным, что доподлинно неизвестно, кто первым изобрёл язык Ассемблера. Вероятнее всего, он появился одновременно сразу в нескольких местах. За название и популяризацию ответственными принято считать авторов книги «The preparation of programs for a digital computer» Уилкса, Уилера и Гилла. Нетрудно догадаться, что название Ассемблер происходит от английского слова assemble – собирать, монтировать, что вполне точно описывает процесс. Позднее символы стали касаться не только простейших операций, но и адресации, что значительно упростило читаемость кода.
Сейчас это кажется элементарным решением, но тогда реализация была сложным процессом, требующим созданий таблиц соответствия, присовения обозначения каждой ячейке памяти. Это привело к трём фундаментальным вещам:
- Появлению понятия символьная переменная или просто переменная.
- Созданию таблиц, с помощью которых вы могли найти соответствие символов, операций и ячеек памяти.
- Пониманию, что программирование может стать искусством.
Это стало катализатором языкового прорыва.
Эволюция языков программирования
В 1950-х гг. появляются первые средства автоматизации программирования — языки Автокоды. Позднее для языков этого уровня стало применяться название «Ассемблеры».
Появление языков типа Ассемблер облегчило участь программистов.
Переменные величины стали изображаться символическими именами. Числовые коды операций заменились на мнемонические (словесные) обозначения, которые легче запомнить.
Язык программирования стал понятнее для человека, но при этом удалился от языка машинных команд.
Чтобы компьютер мог исполнять программы на Ассемблере, потребовался специальный переводчик — транслятор. Транслятор — это системная программа, переводящая текст программы на Ассемблере в текст эквивалентной программы на язык машинных команд.
fact: pushrbp movrbp,rsp movrbx, qword rbp+16 cmprbx,1 jle fact_set_1 movrcx,rbx decrcx pushrcx call fact movrbx, qword rbp+16 mulrbx jmp fact_end fact_set_1: movrax,1 fact_end: poprbp ret8
Компьютер, оснащенный транслятором с Ассемблера, понимает Ассемблер. В этом случае можно говорить о псевдо-ЭВМ (аппаратура плюс транслятор с Ассемблера), языком которой является Ассемблер.
Языки типа Ассемблер являются машинно-ориентированными, т.е. они настроены на структуру машинных команд конкретного компьютера. Разные компьютеры с разными типами процессоров имеют разный Ассемблер.
Должностные обязанности
В основные задачи профессионала входят:
- описание блоков программы;
- разработка ПО, операционных систем;
- проверка на совместимость с приложением;
- умение пользоваться условными обозначениями в коде;
- умение создавать подробные инструкции по эксплуатации;
- знание работы алгоритмов для поиска, сортировки и обработки информации;
- работа с библиотеками, фреймворками для эффективного выполнения поставленных задач;
- чтение кода;
- работа с системами управления.
Мастер также должен владеть востребованными языками программирования, в число которых входят:
- С — для разработки драйверов, операционных систем, программ управления;
- С++ — для создания игр, антивирусов, поисковых систем;
- С# — для разработки веб-приложений, программ для Windows;
- PHP — для корпоративных приложений;
- Java — для создания информационных продуктов, игр на Android;
- JavaScript — для серверного программирования, разработки интерфейсов;
- Python —для анализа данных, сетевых приложений, веб-сервисов;
- HTML — для разработки интерфейсов веб-приложений.
Для более быстрого развития карьеры и повышения конкурентоспособности профессионал также должен владеть английским языком.