Баннер мобильный (3) Пройти тест

Краткая история программирования

От первого кода до современных языков программирования и нейросетей

Разбор

19 сентября 2024

Поделиться

Скопировано
Краткая история программирования

Содержание

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

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

    Ада Лавлейс и Чарльз Бэббидж: первая программа и прообраз компьютера

    Отправная точка в рассказе об истории программирования: Великобритания 1833 года. Изобретатель Чарльз Бэббидж представил свой проект «аналитической машины» молодому математику Аде Лавлейс, английской графине и дочери поэта Байрона. 

    Машина использовала для вычислений двоичную систему и состояла из нескольких компонентов: 

    • «накопителя» для хранения чисел;
    • «арифметического устройства» для выполнения математических операций;
    • «устройства управления», которое координировало последовательность операций;
    • системы ввода и вывода данных.
    Ада Лавлейс
    Портрет Ады Лавлейс. Источник

    Аналитическая машина стала прообразом современных компьютеров, но ее так и не построили.

    Ада Лавлейс оценила перспективы изобретения по чертежам и написала для машины алгоритм для вычисления чисел Бернулли. Этот алгоритм принято считать первой компьютерной программой, а 1833 год — годом начала развития программирования.

    Алан Тьюринг — вычислительные машины против «Энигмы»

    Развитие современных программ началось через 100 лет, в 1936 году. Выпускник Кембриджа Алан Тьюринг опубликовал работу «О вычислимых числах применительно к проблеме разрешимости». В ней он описал концепцию новой абстрактной вычислительной машины, известной сегодня как машина Тьюринга.

    Алан Тьюринг, создатель Энигмы
    Алан Тьюринг. Источник

    Машина Тьюринга состояла из нескольких ключевых компонентов:

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

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

    В 1939 году Великобритания вступила во Вторую мировую войну и перед Тьюрингом встал новый вызов — расшифровка сообщений машины «Энигма». Немецкие военные использовали ее для кодирования секретных сообщений. Вместе с командой Тьюринг разработал и построил машину, которая могла автоматически расшифровывать такие сообщения. Это позволило Британским вооруженным силам заранее узнавать о военных атаках Германии.

    Джон фон Нейман — архитектура первых компьютеров

    Развитие цифровых вычислительных машин
    Развитие цифровых вычислительных машин в 1940–1950-е. Иллюстрация

    В 1946 году математик Джон фон Нейман опубликовал отчет «Предварительное рассмотрение логической конструкции электронно-вычислительного устройства». В совокупности эти принципы стали известны как архитектура фон Неймана, несмотря на то что отчет также писали американские ученые Эккерт и Мокли. Архитектуру использовали при создании последующих поколений компьютеров. 

    Основные идеи архитектуры фон Неймана:

    • Компьютерная память разделена на ячейки с уникальными адресами, что позволяет компьютеру обращаться к любой из них в любое время.
    • В памяти хранятся как данные, так и программы. Команды кодируются в двоичной системе, и над ними можно выполнять математические операции.
    • Управление компьютером осуществляется программой, состоящей из последовательных команд, каждая из которых выполняет одну из доступных операций.
    • Команды исполняются последовательно, согласно программе.

    Джон Эккерт и Джон Мокли — ENIAC и EDVAC

    Перед публикацией отчета фон Неймана Джон Эккерт и Джон Мокли начали разрабатывать первый электронный компьютер — ENIAC. Он весил 30 тонн и использовал в своей работе 18 000 электронных ламп. ENIAC выполнял вычисления в десятичной системе, им управляли через коммутационную панель. Настраивать его было долго и сложно, это снижало его вычислительную эффективность.

    ЭВМ ENIAC
    ЭВМ ENIAC на электронных лампах. Источник

    Проанализировав эти недостатки, создатели ENIAC Эккерт и Мокли в 1943 году начали проектировать новую машину — за годы до того, как работа над первым компьютером завершилась. 

    EDVAC запустили в эксплуатацию только в 1951 году, после того как Эккерт, Мокли и фон Нейман покинули Пенсильванский университет из-за конфликта об авторских правах. EDVAC весил восемь тонн и использовал двоичную систему счисления. Это повысило эффективность вычислений. Компьютер хранил во встроенной памяти не только данные, но и программу, что стало революционным шагом в развитии ЭВМ.

    Башир Рамеев и Исаак Брук — первая ЭВМ в Советском союзе

    Башир Рамеев и Исаак Брук начали работать над ЦВМ в мае 1948-го. К концу года они оформили патент на первую в СССР цифровую вычислительную машину. Она выполняла арифметические операции в двоичной системе, управлялась через программный датчик и общую схему функционирования.

    После регистрации патента продолжить совместную работу не удалось — Рамеева призвали в армию. Для завершения проекта Брук нашел 10 новых специалистов, вместе с которыми построил и запустил М-1 — еще одну советскую ЭВМ.

    Особенности советской М-1:

    • Компактность: занимала всего четыре квадратных метра.
    • Энергоэффективность: М-1 потребляла 8 киловатт. Для сравнения: ENIAC потребляла 174. 
    • Надежность: лампы частично заменили на диоды. Уменьшилось число перегораний, сократились часы простоя машины. Конструкция стала легче и эффективнее.
    • Две памяти: «медленная»(аналог жесткого диска) на магнитном барабане и «быстрая» — аналог оперативной памяти.

    Несмотря на то что Башир Рамеев не продолжил работу над М-1, его идеи использовали при создании «Стрелы» — первой советской ЭВМ, которую пустили в промышленное производство.

    Как программирование получило имя — Маргарет Гамильтон и USL

    До 1950-х годов программы для компьютеров нередко писали сами инженеры. У многих ЭВМ был свой собственный язык программирования, который состоял из последовательности номеров операций и адресов ячеек памяти. Программный код выглядел как длинный набор чисел.

    Чтобы писать программы для каждой ЭВМ, нужно было выучить машинные команды. Код составляли на бумаге и несколько раз тщательно проверяли, прежде чем вводить в компьютер. 

    Термин «разработка ПО» появился примерно одновременно с первыми крупными космическими проектами. Его ввела инженер Маргарет Гамильтон. Она была математиком, но увлеклась программированием — занятием, не имевшим на тот момент названия. Став руководителем отдела разработки в лаборатории Массачусетского технологического института (MIT), она предложила для своей работы термин — разработка программного обеспечения (software engineering).

    Гамильтон возглавила команду NASA, отвечающую за разработку ПО для бортовых компьютеров космического аппарата «Аполлон», который отправлялся на Луну. Ее внимательное отношение к тестированию, отладке и моделированию различных сценариев помогло сделать бортовой компьютер надежным и устойчивым к возможным ошибкам. О том, как она спасла лунную миссию, читайте в статье.

    Опыт Маргарет Гамильтон в космической индустрии стал большим толчком для развития программирования. Она разработала теорию программного обеспечения и специальный язык для программирования — USL.

    Ассемблеры и первые языки высокого уровня

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

    Ассемблеры

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

    Код на ассемблере
    Пример кода на ассемблере. Источник

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

    Высокоуровневые языки

    В 1950-х ученые придумали новые языки программирования — Fortran и COBOL. Они дали разработчикам возможность писать код на уровне, более близком к естественному языку. Fortran был ориентирован на научные расчеты и инженерные задачи, а COBOL — на бизнес-приложения. Их распространение позволило сократить время разработки и сделало программирование более доступным для людей без глубоких технических знаний.

    Алан Шугарт и IBM — распространение дискет

    Развитие цифровых вычислительных машин привело к появлению спроса на переносные носители информации. До дискет информация хранилась на магнитных лентах и перфокартах.

    Работа над новым поколением носителей началась еще в 1967 году, когда Алан Шугарт возглавил команду по разработке проекта в IBM. Под его руководством, старший инженер Дэвид Нобль представил концепцию гибкого диска с защитным кожухом и тканевой прокладкой. Эта модель стала прототипом восьмидюймовой дискеты.

    В 1971 году IBM выпустила первую дискету на рынок. Через два года Алан Шугарт основал собственную компанию Shugart Technology, которая вскоре стала одной из ключевых в области разработки дискет.

    Микропроцессор и первые персональные компьютеры

    Толчком к появлению первых персональных компьютеров стало создание микропроцессоров. В 1971 году первый достаточно эффективный микропроцессор, i4004, разработали инженеры компании Intel. В 1974 году появился обновленный i8080, именно он получил широкое распространение в первых ПК:

    • В 1973 вышел Xerox Alto — первый компьютер с графическим интерфейсом и концепцией рабочего стола. Он был разработан для работы над научными исследованиями. 
    • В 1975 году маленькая американская компания MITS создала ПК Альтаир 8800 — его принято считать первым персональным компьютером. 
    • В 1976 начались продажи Apple I, а в 1977 году — Apple II, TRS-80 и Commodore PET.
    • В 1981 году первый прототип ПК создали в СССР на базе ЭВМ «Электроника НЦ-8010»

    История языков программирования

    Никлаус Вирт — Паскаль

    Pascal разработал швейцарский ученый Никлаус Вирт в 1970 году. 

    Вирт участвовал в создании нескольких языков программирования, в том числе языка Алгол-68. Часть идей из этого проекта он использовал при создании нового языка. 

    Никлаус Вирт создатель паскаля
    Никлаус Вирт. Источник

    Целью Вирта было создать понятный и удобный инструмент для обучения студентов основам структурного программирования. Этим объясняется интуитивный синтаксис языка Pascal.

    Со временем у Pascal появилось множество диалектов. Вот самые распространенные из них:

    • Turbo Pascal — диалект для создания прикладных программ на микрокомпьютерах.
    • Delphi — стал распространенным инструментом прикладного программирования, получил широкое применение в реальных проектах, включая разработку промышленных контроллеров.
    • Free Pascal и GNU Pascal — свободные версии языка, компиляторы для создания программ на различных платформах.

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

    Кен Томпсон и Деннис Ритчи — С 

    Инженеры Bell Labs Кен Томпсон и Деннис Ритчи занимались разработкой языка C с 1969 по 1973 год. 

    создатели языка C
    Кен Томпсон и Деннис Ритчи. Источник

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

    По одной из версий, Ритчи хотел перенести свою любимую компьютерную игру с сервера компании на рабочий компьютер. Но на нем не было операционной системы. Он попытался переписать существующую ОС, написанную на ассемблере, на язык Би (B). Однако и его возможности также оказались ограниченными. Тогда разработчики решили создать новый язык — так появился C.

    C стал популярным благодаря своему широкому использованию в операционной системе UNIX, которая впоследствии легла в основу дистрибутивов Linux.

    Гвидо ван Россум — Python

    Создатель Python Гвидо ван Россум
    Гвидо ван Россум. Источник

    История Python началась в 1989 году. Голландский разработчик Гвидо ван Россум решил создать свой язык программирования, чтобы развлечься на рождественских каникулах. Ван Россум назвал новый язык в честь любимого комедийного шоу — «Летающий цирк Монти Пайтона».

    • 1991 — вышла первая версия Python (0.9.0) с основными функциями для работы с типами данных.
    • 1994 — вышла версия 1.0 с новыми инструментами для обработки и фильтрации данных.
    • 2000 — появился Python 2.0 с поддержкой Unicode и улучшенными функциями для работы со списками.
    • 2008 — вышла версия Python 3.

    Сейчас Python широко используется для самых разных задач — от веб-разработки до анализа данных.

    Джеймс Гослинг — Java

    Язык Java разработали в 1995 году в компании Sun Microsystems под руководством Джеймса Гослинга. Java стал первым языком программирования с кросс-платформенной поддержкой. Изначально язык назывался Oak, но из-за сложностей с авторскими правами его переименовали.

    Джеймс Гослинг создатель Java
    Джеймс Гослинг. Источник

    Ключевая концепция Java — «write once, run anywhere». Это значит, что код можно запускать на любой системе с установленной средой исполнения Java Runtime Environment (JRE). Java также имеет встроенный «механизм управления памятью». Специальный коллектор автоматически очищает память, удаляя объекты, которые больше не используются. 

    Несмотря на довольно сложный синтаксис, Java используют практически повсеместно. Этот язык популярен как в крупных корпоративных проектах (например, для серверных приложений), так и в мобильной разработке — приложения для Android часто пишутся именно на Java. 

    Какой язык программирования выбрать, чтобы стать востребованным специалистом и учиться с удовольствием? Пройдите тест и узнайте!

    Билл Гейтс — крупнейшая IT-сделка

    Знаковым моментом в становлении IT-отрасли как индустрии на Западе стала сделка между IBM и Microsoft.

    Фотография Билла Гейтса
    Билл Гейтс. Источник

    В 1981 году IBM искала операционную систему для новой линейки персональных компьютеров. Билл Гейтс, основавший Microsoft в 1975 году, купил права на операционную систему 86-DOS у Seattle Computer Products и доработал ее для соответствия требованиям IBM. Так появилась знаменитая MS-DOS, которую Microsoft и IBM совместно развивали до 1993 года.

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

    Стив Джобс — крупнейшее IPO среди первых IT-компаний

    В 1980 году Apple разместила на бирже 4,6 миллиона своих акций. Выставленные по цене $14 за штуку, акции выросли больше чем на треть — до $22 на старте и до $29 к концу торгов. Все ценные бумаги компании были раскуплены за несколько минут. 

    Это легендарное IPO увеличило капитализацию Apple до $1,787 миллиарда и привлекло огромное внимание прессы. 

    Вместе с тем выход на биржу привел к серьезным изменениям внутри компании. Опционы на акции получили только ведущие специалисты, 40 из которых стали миллионерами. Это вызвало напряженность среди остальных сотрудников Apple и вылилось в волну увольнений.

    Развитие нейросетей

    1940–1960: Рождение концепции нейросетей

    Модель нейрона

    В 1940-х годах исследователи начали размышлять, как создать технологическую систему, способную имитировать работу человеческого мозга. Нейрофизиолог Уоррен Мак-Каллок и логик Уолтер Питтс предложили математическую модель нейрона. 

    Согласно их предположению, любой искусственный нейрон может получать входные сигналы от других нейронов. Когда количество входных сигналов превышает определенный лимит, нейрон посылает выходной сигнал другим нейронам в сети. Так нейроны объединяются в сеть для выполнения сложных вычислений.

    Перцептрон

    В 1960 году нейрофизиолог Фрэнк Розенблатт предложил модель перцептрона. Принципы его функционирования стали основой для создания первого в мире нейрокомпьютера — «Марк-1». 

    Перцептрон моделировал человеческое восприятие при помощи трех элементов: 

    • сенсоров;
    • ассоциативных элементов;
    • реагирующих элементов. 

    Сенсоры отвечают за получение внешних сигналов, которые затем передаются к A-элементам. Если полученные сигналы сильны, A-элементы передают информацию реагирующим элементам, отвечающим за выдачу результата.

    Схема работы перцептрона
    Принцип работы перцептрона. Источник

    1980–2000: Обратное распространение ошибки и развитие сложных нейросетей

    В 80-е годы успехи перцептрона дополнили метод обратного распространения ошибки и нелинейные функции активации. Эти нововведения сделали нейросети точнее и гибче, позволили им корректировать свои ошибки и учиться эффективнее.

    Метод обратного распространения ошибки 

    Backpropagation, или метод обратного распространения ошибки был популяризирован в 1986 году благодаря работе Дэвида Румельхарта, Джеффри Хинтона и Рональда Уильямса. 

    Алгоритм метода содержит два ключевых этапа: 

    • Прямое распространение — сеть делает прогнозы.
    • Обратное распространение — где ошибка, она же разница между прогнозом и истинным значением, возвращается назад через сеть, чтобы корректировать поведение нейросети.

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

    2000–2020: Deep Learning и Chat GPT

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

    Запуск Chat GPT в конце 2022 года стал настоящим прорывом в области пользовательских сервисов. Нейросеть быстро завоевала популярность и за рекордные два месяца привлекла 100 миллионов пользователей.

    Разбор

    Поделиться

    Скопировано
    0 комментариев
    Комментарии