Добавлен: 29.03.2023
Просмотров: 133
Скачиваний: 2
СОДЕРЖАНИЕ
ГЛАВА 1. ИСТОРИЯ РАЗВИТИЯ ПРОГРАММИРОВАНИЯ В РОССИ
1.1 Понятие и сущность вычислительных машин
1.2 История языков программирования: 1950-е
1.3 Краткая история языков программирования
ГЛАВА 2. ПРОБЛЕМЫ И ПЕРСПЕКТИВЫ РАЗВИТИЯ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ
2.1 Развитие электронно-вычислительной техники в СССР
Тем не менее компилятор стал единственным выходом из ситуации, но здесь проявилась другая трудность – арифметические выражения. Их исполнение не совпадает с тем, как машина читает код. Из школьного курса мы знаем порядок вычислений в выражении «2+3*5», но машина читает код в одном направлении, так что ответ будет неверным. Да, указанный пример можно решить, создав макрос, но для сложных выражений уровня «(2 + 3 * 5 + 4/6) * 10 + 16- (14 + 15) * 8» требовался принципиально иной подход.
Найти алгоритм анализа стека удалось Джону Бэкусу, создателю Фортрана. Он начал работать над ним в 1954 году и ему потребовалось почти 5 лет, чтобы доказать право языков высокого уровня на существование. Полное название Фортрана – The IBM Formula Translating System, или FORmula TRANslator. Несмотря на 60-летний возраст, он остаётся одним из самых популярных языков программирования и невероятно востребован в Data Science. За это время мы видели множество версий: Fortran 1, II, 66, 77, 90, 95, 2008, а в следующем году выйдет ещё одна (планировался Fortran 2015, но из-за задержек название может смениться на 2018). Именно в Фортране впервые были одновременно реализованы многие атрибуты языка высокого уровня, среди которых:
- арифметические и логические выражения;
- цикл DO (ранняя форма цикла FOR);
- условный оператор IF;
- подпрограммы;
- массивы.
Ещё одним важным наследием Фортрана, о котором даже не догадываются современные программисты, является использование ограничений для переменных для целых чисел. Все они должны были начинаться с одного из 6 символов I, J, K, L, M, N (происходит от I-Nteger). Именно отсюда взялась привычка для перечислений брать переменные i, j и т.д.
IBM 704 – машина, на которой был создан Fortran
При этом Фортран оставался языком, приближенным к машинам. Например, там существовало такое:
if (выражение) doneg, dozero, dopos
Причиной была архитектура компьютера IBM, которой требовалась команда для использования нужного регистра: отрицательного, нулевого или положительного. Близость к машинам проявлялась и в известной команде GOTO (позднее она была унаследована Basic), означавший прямой переход к той или иной команде.
Возвращаясь к проблеме арифметических выражений, алгоритм перебора стека (то есть анализа всей строки) не был эффективным решением, но он доказал, насколько реализация может быть простой и логичной.
Fortran 1 был научным языком, в его основе лежали операции с комплексными числами и с плавающей запятой. Он даже не умел обрабатывать текст, для этого приходилось преобразовывать его в специальные коды. Поэтому Фортран оказался непригоден для бизнеса, где был специально создан язык Cobol.
Синтаксис у него принципиально иной, максимально приближенный к естественному английскому языку. Практически не было арифметики, только выражения вида:
Move Income To Total Subtract Expenses
Cobol стал олицетворением максимального удаления от прежнего машинно-арифметического мышления к общечеловеческому. И главное – теперь можно было работать с текстом и записями.
Следующим фундаментальным языком стал Algol (ALGOrithmic Language), предназначенный для научных отчётов и публикаций. В нём впервые появились естественные для нас вещи:
- отличия между присваиванием := и логическим равенством =;
- использование цикла for с тремя аргументами: начальное значение, предел, шаг;
- блочная структура программ, заключённая между begin и end, это исключило необходимость применения GOTO.
Именно из Алгол произошли C, C ++, C #, Java и многие другие популярные сегодня языки.
Четвёртым китом 1950-х стал Лисп (LISt Processing language), разработанный специально для обслуживания искусственного интеллекта. Главной его особенность стала работа не с императивными данными, а с функциями. Для этого Джону Маккарти пришлось предусмотреть множество механизмов для нормальной работы: динамическую типизацию, автоматическое распределение памяти, сборщик мусора. В конечном счёте, именно Лисп стал прародителем таких языков, как Python и Ruby, а сам до сих пор активно применяется в ИИ.
Таким образом, 1950-е изменили образ мышления программистов, подарили четыре фундаментальных языка и поставили мир на рельсы компьютерной революции.
В следующий раз поговорим о том, как развивались языки и мир программирования в 1960-е. [7, c. 23].
1.3 Краткая история языков программирования
Жозеф Мари Жаккар учит ткацкий станок читать перфокарты и таким образом создает первое многопоточное устройство обработки данных. Его изобретение было воспринято в штыки ткачами шелка, которые предвидели рождение Skynet.
Ада Лавлейс заскучала, занимаясь своими благородными занятиями. Она набросала в записной книжке то, что позже станет известно как первая опубликованная компьютерная программа. Единственное неудобство было в том, что компьютер тогда еще не изобрели.
Алан Тьюринг изобретает всё, но это не оправдывает его в глазах британского суда, который приговаривает его к химической кастрации.
Позже королева его помиловала, но он, к сожалению, был уже давно мертв к тому времени.
Джон Бэкус создает FORTRAN, первый язык, который использовали настоящие программисты.
Грейс Хоппер изобретает первый язык программирования, ориентированный на промышленное производство, и называет его “общий бизнес-ориентированный язык” (“common business-oriented language”), кратко — COBOL.
Джон Джордж Кемени и Томас Курц решили, что программирование — слишком сложное занятие, а потому нужно вернуться к основам. Они называют свой язык программирования BASIC.
Никлаус Вирт разрабатывает Pascal. Это один из нескольких языков, в создании которых принял участие Вирт: ему нравилось создавать языки.
Он также сформулировал Закон Вирта, делающий бессмысленным закон Мура, поскольку разработчики будут писать такие раздутые программы, что за ними даже мейнфреймы не угонятся. Позже это будет доказано путем изобретения Electron.js.
Деннису Ритчи стало скучно на работе в Bell Labs и он решил создать С с его фигурными скобками, и этот проект получил огромный успех. Впоследствии он добавил ошибки сегментации и другие дружественные к разработчику возможности для повышения производительности.
Поскольку у него еще оставалось пару часов, он со своими приятелями в Bell Labs решил создать пример программы для демонстрации языка С. Так они создали операционную систему под названием Unix.
Алан Кёртис Кэй изобретает объектно-ориентированное программирование и называет его Smalltalk. В Smalltalk все является объектом, даже объект это объект.
Ларри Уолл со своим опытом работы в религиозной сфере становится проповедником, а своей доктриной делает Perl.
Жан Давид Ишбиа заметил, что программа Ады Лавлейс никогда так и не запускалась, и решил создать язык и назвать его в ее честь (Ada). Но язык тоже не запускается.
Брэд Кокс и Том Лав решили сделать нечитаемую версию С, основанную на Smalltalk. Они назвали ее Objective-C, но никто не в силах понять ее синтаксис.
Бьёрн Страуструп отправляется назад в будущее и замечает, что язык С требует слишком мало времени для компиляции. Он добавляет к языку каждую фичу, какую только может придумать, и называет его С++.
Программисты по всему миру соглашаются с этим, поскольку у них появляется гениальное оправдание для просмотра видео с котиками и чтения xkcd на работе.
Гвидо ван Россуму не нравятся фигурные скобки, поэтому он изобретает Python. При выборе синтаксиса языка автор вдохновлялся Монти Пайтоном и его летающим цирком.
Роберту Иерузалимски с друзьями решили, что им нужен локальный, бразильский язык сценариев. Во время локализации была сделана ошибка, которая заставила индексы начинать отсчет с 1 вместо 0. Язык назвали Lua.
Расмус Лердорф создает движок шаблонов для собственных CGI-сценариев своей домашней страницы и выпускает его дот-файлы в интернет.
Мир решает повсеместно использовать эти дот-файлы, а Расмус в неистовстве добавляет в них некоторые дополнительные привязки к базам данных и называет результат РНР.
Юкихиро Мацумото был не слишком счастлив и заметил, что другие программисты тоже несчастны. Он создает Ruby, чтобы сделать их счастливыми. После создания Ruby “Мац” счастлив, сообщество Ruby счастливо, все счастливы.
Брендан Эйх берет выходной, чтобы разработать язык, с помощью которого будет управляться каждый веб-браузер в мире и в конечном итоге Skynet. Сначала он пошел в Netscape и сказал, что язык называется LiveScript, но за время ревью кода приобрела популярность Java, поэтому было решено использовать фигурные скобки и переименовать язык в JavaScript.
Оказалось, что Java это торговая марка, что могло привести к проблемам, поэтому JavaScript позже был переименован в ECMAScript, но его все равно называют по-старому.
Джеймс Гослинг изобретает Java, первый по-настоящему слишком многословный объектно-ориентированный язык программирования, где шаблоны проектирования превалируют над прагматизмом.
Андерс Хейлсберг заново изобретает Java и называет этот язык C#, потому что программирование на C кажется более крутым, чем на Java. Новая версия Java всем нравится, поскольку совершенно не похожа на Java.
Давид Хейнемейер Ханссон создает веб-фреймворк, позже названный Ruby on Rails. Люди забывают, что это были две разные вещи.
Джон Резиг пишет вспомогательную библиотеку для JavaScript. Все считают, что это язык, и делают себе карьеру на копипасте кода jQuery из интернета.
Кен Томпсон и Роб Пайк решают создать язык, похожий на С, но более «товарный», с большим количеством инструментов для обеспечения безопасности и с Гоферами (Гофер — грызун, персонаж историй про Винни-Пуха, — прим. перев.) в качестве талисманов.
Они называют этот язык Go, решают сделать его код открытым и начинают продавать брендовые наколенники и шлемы с Гофером.
Грэйдон Хор тоже хочет создать язык, подобный С. Он называет его Rust. Все требуют, чтобы каждый кусочек их программ немедленно переписывался на Rust. Грэйдону хочется чего-то более блестящего и он начинает работать над Swift для Apple.
Андерс Хейлсберг хочет писать С# в веб-браузерах. Он создает TypeScript, который по сути является JavaScript с большим количеством Java.
Джереми Ашкенас хочет быть таким же счастливым, как Ruby-разработчики, поэтому создает CoffeeScript, который транслируется в JavaScript, но выглядит скорее как Ruby. Джереми так и не стал таким же по-настоящему счастливым, как Матц и Ruby-разработчики.
Крис Латнер создает Swift, главная цель которого – не быть Objective-C. В конечном итоге этот язык напоминает Java.
ГЛАВА 2. ПРОБЛЕМЫ И ПЕРСПЕКТИВЫ РАЗВИТИЯ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ
2.1 Развитие электронно-вычислительной техники в СССР
Тема электронно-вычислительной техники в социалистической России довольно интересна и за почти 30 лет правления буржуев порядком оболганная холуями от клавиатуры и пера с веб-камерой – блогерами и прочими интеллигентами. Отстаивающая за определенную плату или по глупости капиталистические производственные отношения пробуржуйская интеллигенция, многочисленная журналистская орда, любит пнуть наши компьютеры и большие электронно-вычислительных комплексы времен СССР на предмет качества, ввиду ненадежности некоторых моделей, их технической устарелости, и оставляющей желать лучшего производимости, плюс трудности в эксплуатации по сравнению с зарубежными аналогами того времени. Компьютеры сравниваются под лицемерные разговоры про то, что западные ЭВМ были лучше и надежнее, что Советы компьютеры, в принципе, делать не умели и т. д. Увы, такое в эпоху застоя и позже, в перестройку, имело место быть. Однако такое положение дел было не всегда.