1 | #+TITLE: Краткая, неполная и по большей части неверная история языков программирования
|
---|
2 | #+DATE: <2022-05-04 Ср>
|
---|
3 | #+LANGUAGE: ru
|
---|
4 | #+OPTIONS: toc:nil
|
---|
5 |
|
---|
6 | * Краткая, неполная и по большей части неверная история языков программирования
|
---|
7 | #+BEGIN_abstract
|
---|
8 | Данная юмористическая заметка является переводом и адаптацией заметки
|
---|
9 | James Iry. Не относитесь серьёзно к качеству перевода. Я дополнил
|
---|
10 | заметку ссылками, для того, чтобы было проще подробнее ознакомиться с
|
---|
11 | незнакомыми терминами и людьми. К сожалению некоторые фразы были
|
---|
12 | опущены. [[https://web.archive.org/web/20200426084021/https://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wrong.html][Оригинал]].
|
---|
13 | #+END_abstract
|
---|
14 |
|
---|
15 | - 1801 :: [[https://ru.wikipedia.org/wiki/Жаккар,_Жозеф_Мари][Жозеф Мари Жаккар]] использует [[https://ru.wikipedia.org/wiki/Перфокарта][перфокарты]], чтобы заставить
|
---|
16 | ткацкий станок ткать "Привет Мир" на гобеленах. [[https://linux.org.ru/][ЛОР]]овцы того времени
|
---|
17 | были не впечатлены отсутствием обратной хвостовой рекурсии и
|
---|
18 | параллелизма.
|
---|
19 |
|
---|
20 | - 1841 :: [[https://ru.wikipedia.org/wiki/Лавлейс,_Ада][Ада Лавлейс]] пишет первую программу. Она сталкивается с
|
---|
21 | неудобствами, ведь у неё нет работающего компьютера, чтобы запустить
|
---|
22 | код. Энтерпрайз архитекторы позже изучат её техники для
|
---|
23 | программирования на [[https://ru.wikipedia.org/wiki/UML][UML]].
|
---|
24 |
|
---|
25 | - 1936 :: [[https://ru.wikipedia.org/wiki/Тьюринг,_Алан][Алан Тьюринг]] изобретает все языки программирования, которые
|
---|
26 | когда-либо будут существовать, но до того как смог их запатентовать,
|
---|
27 | он вскоре был завербован британской разведкой.
|
---|
28 |
|
---|
29 | - 1936 :: [[https://ru.wikipedia.org/wiki/%D0%A7%D1%91%D1%80%D1%87,_%D0%90%D0%BB%D0%BE%D0%BD%D0%B7%D0%BE][Алонзо Чёрч]] также изобретает все языки программирования,
|
---|
30 | которые когда-либо будут существовать, но делает это лучше. Его
|
---|
31 | [[https://ru.wikipedia.org/wiki/%D0%9B%D1%8F%D0%BC%D0%B1%D0%B4%D0%B0-%D0%B8%D1%81%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5][лямбда-исчисление]] игнорируется, потому что оно недостаточно похоже на
|
---|
32 | язык Си. Эта критика происходит, не смотря на тот факт, что язык Си
|
---|
33 | ещё не изобретён.
|
---|
34 |
|
---|
35 | - 1940-ые :: Различные "компьютеры" "программируются" при помощи возни с
|
---|
36 | проводами и переключателями. Инженеры этим занимаются, чтобы не
|
---|
37 | участвовать в сраче "[[https://wiki.c2.com/?TabsVersusSpaces][табы против пробелов]]".
|
---|
38 |
|
---|
39 | - 1957 :: [[https://ru.wikipedia.org/wiki/%D0%91%D1%8D%D0%BA%D1%83%D1%81,_%D0%94%D0%B6%D0%BE%D0%BD][Джон Бэкус]] и IBM создают [[https://ru.wikipedia.org/wiki/%D0%A4%D0%BE%D1%80%D1%82%D1%80%D0%B0%D0%BD][Fortran]]. Нет ничего смешного в IBM и
|
---|
40 | Fortran. Это синтаксическая ошибка писать фортран, не надев синий
|
---|
41 | галстук.
|
---|
42 |
|
---|
43 | - 1958 :: [[https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D0%BA%D0%BA%D0%B0%D1%80%D1%82%D0%B8,_%D0%94%D0%B6%D0%BE%D0%BD][Джон Маккарти]] и [[https://ru.wikipedia.org/wiki/%D0%93%D1%80%D1%8D%D0%BC,_%D0%9F%D0%BE%D0%BB][Пол Грэм]] изобретают [[https://ru.wikipedia.org/wiki/Lisp][LISP]]. Из-за больших
|
---|
44 | расходов, вызванных последствиями послевоенного опустошения
|
---|
45 | стратегического запаса скобок, LISP так и не становится популярным. Не
|
---|
46 | смотря на отсутствие популярности, LISP (теперь "Lisp" или иногда
|
---|
47 | "[[https://ru.wikipedia.org/wiki/Arc_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)][Arc]]") остаётся влияетельным языком в алгоритмических методах, таких
|
---|
48 | как рекурсия.
|
---|
49 |
|
---|
50 | - 1959 :: После проигранного пари у [[https://ru.wikipedia.org/wiki/Хаббард,_Лафайет_Рональд][Л. Роналда Хаббарда]], [[https://ru.wikipedia.org/wiki/Хоппер,_Грейс][Грейс Хоппер]] и
|
---|
51 | несколько других садистов изобретают Капитализацию Огромного
|
---|
52 | Бойлерплейт Ориентированного Языка ([[https://ru.wikipedia.org/wiki/Кобол][КОБОЛ]]. Под капитализацией имеют в
|
---|
53 | виду заглавные буквы). Спустя года, в ошибочном и сексистком возмездии
|
---|
54 | против работы товарища Хоппера, Ruby конференции часто представляют
|
---|
55 | женоненавистнечесткий материал.
|
---|
56 |
|
---|
57 | - 1964 :: [[https://ru.wikipedia.org/wiki/Кемени,_Джон_Джордж][Джон Кемени]] и [[https://ru.wikipedia.org/wiki/Курц,_Томас][Томас Курц]] создают [[https://ru.wikipedia.org/wiki/BASIC][BASIC]], неструктурный язык
|
---|
58 | программирования для не-компьютезированных учёных.
|
---|
59 |
|
---|
60 | - 1965 :: Кемени и Курц возвращаются в 1964-й.
|
---|
61 |
|
---|
62 | - 1970 :: [[https://en.wikipedia.org/wiki/Guy_L._Steele_Jr.][Гай Стил]] и [[https://en.wikipedia.org/wiki/Gerald_Jay_Sussman][Джеральд Сассман]] создают [[https://ru.wikipedia.org/wiki/Scheme][Scheme]]. Их работа ведёт к
|
---|
63 | созданию серии научных работ "[[https://lambda-the-ultimate.org][Lambda the Ultimate]]". Лямбды остаются
|
---|
64 | весьма неизвестными, пока Java не делает их популярными, просто не
|
---|
65 | имея их.
|
---|
66 |
|
---|
67 | - 1970 :: [[https://ru.wikipedia.org/wiki/Вирт,_Никлаус][Никлаус Вирт]] создаёт [[https://ru.wikipedia.org/wiki/Паскаль_(язык_программирования)][Паскаль]], процедурный язык. Критики
|
---|
68 | моментально отвергают Паскаль за использование "x := x + y" синтаксиса
|
---|
69 | вместо си-подобного "x = x + y". Эта критика происходит, не смотря на
|
---|
70 | тот факт, что язык Си ещё не изобретён.
|
---|
71 |
|
---|
72 | - 1972 :: [[https://ru.wikipedia.org/wiki/Ритчи,_Деннис][Деннис Ритчи]] изобретает мощный огнестрел, который стреляет
|
---|
73 | вперёд и назад одновременно. Не удовлетворённый количеством смертей и
|
---|
74 | неизлечимых травм от данного изобретения, он изобретает [[https://ru.wikipedia.org/wiki/Си_(язык_программирования)][Си]] и [[https://ru.wikipedia.org/wiki/Unix][Unix]].
|
---|
75 |
|
---|
76 | - 1972 :: [[https://en.wikipedia.org/wiki/Alain_Colmerauer][Ален Колмерауэр]] проектирует логический язык [[https://ru.wikipedia.org/wiki/Пролог_(язык_программирования)][Prolog]]. Его целью
|
---|
77 | было создать язык с интеллектом двухлетнего ребёнка. Он доказывает,
|
---|
78 | что достиг своей цели, демонстрацией Prolog сессии, которая возвращает
|
---|
79 | "Нет" на каждый запрос.
|
---|
80 |
|
---|
81 | - 1980 :: [[https://ru.wikipedia.org/wiki/Кэй,_Алан_Кёртис][Алан Кей]] создаёт [[https://ru.wikipedia.org/wiki/Smalltalk][Smalltalk]] и изобретает термин
|
---|
82 | "Объектно-ориентированный". Когда его спросили что же это значит, он
|
---|
83 | ответил: "Программы Smalltalk -- это просто объекты". Когда его
|
---|
84 | спросили из чего состоят объекты, он ответил: "Из объектов". Когда его
|
---|
85 | спросили снова: "Слушайте, это всё объекты от начала до конца. До тех
|
---|
86 | пор пока не доберётесь до черепашек."
|
---|
87 |
|
---|
88 | - 1983 :: В честь возможности [[https://ru.wikipedia.org/wiki/Лавлейс,_Ада][Ады Лавлейс]] создавать программы, которые
|
---|
89 | никогда не будут запущены, [[https://ru.wikipedia.org/wiki/Ишбиа,_Жан][Жан Ишбиа]] и департамент безопасности США
|
---|
90 | создают язык программирования [[https://ru.wikipedia.org/wiki/Ада_(язык_программирования)][Ada]]. В связи с отсутствием доказательств
|
---|
91 | того, что какая-либо значительная Ada программа хоть раз завершилась,
|
---|
92 | историки верят, что Ada была успешной общественной инициативой, так
|
---|
93 | как она спасает тысячи подрядчиков оборонных предприятий от вступления
|
---|
94 | в преступные группировки.
|
---|
95 |
|
---|
96 | - 1983 :: [[https://ru.wikipedia.org/wiki/Страуструп,_Бьёрн][Бьёрн Страуструп]] переносит всё о чём он когда-либо слышал на
|
---|
97 | [[https://ru.wikipedia.org/wiki/Си_(язык_программирования)][C]], чтобы затем создать [[https://ru.wikipedia.org/wiki/C%2B%2B][C++]]. Получившийся язык настолько сложен, что
|
---|
98 | программы должны быть отправлены в будущее, чтобы их собрал [[https://ru.wikipedia.org/wiki/Скайнет][ИИ
|
---|
99 | Skynet]]. Страдает время сборки. Мотив Скайнета предоставлять услуги по
|
---|
100 | сборки остаются неизвестны, но представители из будущего говорят
|
---|
101 | "Здесь не о чём беспокоиться, детка." австрийским монотонным
|
---|
102 | акцентом. Есть предположении, что Скайнет это результат [[https://ru.wikipedia.org/wiki/Переполнение_буфера][переполнения
|
---|
103 | буфера]].
|
---|
104 |
|
---|
105 | - 1986 :: [[https://ru.wikipedia.org/wiki/Кокс,_Брэд][Брэд Кокс]] и Том Лав создают [[https://ru.wikipedia.org/wiki/Objective-C][Objective C]], анонсируя "Этот язык
|
---|
106 | имеет всю безопасность доступа к памяти из C смешанный с невероятной
|
---|
107 | скоростью Smalltalk". Современные историки подозревают, что оба
|
---|
108 | страдали дислексией.
|
---|
109 |
|
---|
110 | - 1987 :: [[https://ru.wikipedia.org/wiki/Уолл,_Ларри][Ларри Уолл]] засыпает и бьётся лбом Ларри Уолла об
|
---|
111 | клавиатуру. Проснувшись, Ларри Уолл решает, что строка на мониторе
|
---|
112 | Ларри Уолла не состоит из случайных символов, а это пример программы
|
---|
113 | на языке программирования, который Господь хочет своего пророка, Ларри
|
---|
114 | Уолла, заставить спроектировать. Так был рождён [[https://ru.wikipedia.org/wiki/Perl][Perl]].
|
---|
115 |
|
---|
116 | - 1990 :: Комитет, созданный [[https://ru.wikipedia.org/wiki/Пейтон-Джонс,_Саймон][Саймоном Пейтон-Джонсом]], Полом Хадаком,
|
---|
117 | Филиппом Уодлером, а также [[https://ru.wikipedia.org/wiki/Люди_за_этичное_обращение_с_животными][людьми за этичное обращение с животными]],
|
---|
118 | создаёт [[https://ru.wikipedia.org/wiki/Haskell][Haskell]], [[https://ru.wikipedia.org/wiki/%D0%A7%D0%B8%D1%81%D1%82%D0%BE%D1%82%D0%B0_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F][чистый]], нестрогий, функциональный язык. Haskell
|
---|
119 | испытывает некоторое непринятие из-за сложности использования [[https://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D0%BD%D0%B0%D0%B4%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)][монад]]
|
---|
120 | для контроля [[https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B1%D0%BE%D1%87%D0%BD%D1%8B%D0%B9_%D1%8D%D1%84%D1%84%D0%B5%D0%BA%D1%82_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)][побочных эффектов]]. Уодлер пытается угодить критикам
|
---|
121 | объяснением, что монада -- это моноид в категории эндорфункторов, в
|
---|
122 | чём проблема?
|
---|
123 |
|
---|
124 | - 1991 :: Голландский программист [[https://ru.wikipedia.org/wiki/Ван_Россум,_Гвидо][Гвидо Ван Россум]] путешествует в
|
---|
125 | Аргентину для проведения таинственной операции. Он возвращается с
|
---|
126 | огромным шрамом на голове, изобретает [[https://ru.wikipedia.org/wiki/Python][Python]], объявляется [[https://ru.wikipedia.org/wiki/Великодушный_пожизненный_диктатор][Великодушным
|
---|
127 | Пожизненным Диктатором]] толпой последователей и объявляет миру "[[https://wiki.python.org/moin/TOOWTDI][Есть
|
---|
128 | только один способ сделать это]]". Поляки напряглись.
|
---|
129 |
|
---|
130 | - 1995 :: В Итальянском ресторане по соседству [[https://ru.wikipedia.org/wiki/Лердорф,_Расмус][Расмус Лердорф]] осознаёт,
|
---|
131 | что его тарелка спагетти -- это отличная модель для представления
|
---|
132 | Всемирной Паутины (WWW). На обратной стороне салфетки он проектирует
|
---|
133 | Programmable Hyperlinked Pasta ([[https://ru.wikipedia.org/wiki/PHP][PHP]]). Документация PHP все ещё
|
---|
134 | хранится на той салфетке.
|
---|
135 |
|
---|
136 | - 1995 :: [[https://ru.wikipedia.org/wiki/Мацумото,_Юкихиро][Юкихиро "Mad Matz" Мацумото]] создаёт [[https://ru.wikipedia.org/wiki/Ruby][Ruby]], чтобы предотвратить
|
---|
137 | неясно определённый апокалипсы, который превратит Австралию в пустыню
|
---|
138 | под контролем воинов-могавков и Тиной Тернер. Язык позже был
|
---|
139 | переименован в [[https://ru.wikipedia.org/wiki/Ruby_on_Rails][Ruby on Rails]] своим создателем, [[https://ru.wikipedia.org/wiki/Ханссон,_Давид_Хейнемейер][Давидом Хейнемейером
|
---|
140 | Ханссоном]]. [Часть, где Мацумото создаёт язык Ruby никогда не случалась
|
---|
141 | и лучше бы была удалена в следующей версии этой статьи - DHH].
|
---|
142 |
|
---|
143 | - 1995 :: [[https://ru.wikipedia.org/wiki/Эйх,_Брендан][Брендан Эйх]] читает про каждую ошибку, созданную при
|
---|
144 | проектировании языка программирования, создаёт парочку новых и
|
---|
145 | выпускает язык LiveScript. Позже на волне популярности Java язык
|
---|
146 | переименовывается в [[https://ru.wikipedia.org/wiki/JavaScript][Javascript]].
|
---|
147 |
|
---|
148 | - 1996 :: [[https://ru.wikipedia.org/wiki/%D0%93%D0%BE%D1%81%D0%BB%D0%B8%D0%BD%D0%B3,_%D0%94%D0%B6%D0%B5%D0%B9%D0%BC%D1%81][Джеймс Гослинг]] изобретает [[https://ru.wikipedia.org/wiki/Java][Java]]. Java относительно многословный
|
---|
149 | статически-типизированный объектно-ориентированный язык с классами,
|
---|
150 | одиночным наследованием, множественным наследованием интерфейсов и
|
---|
151 | сборкой мусора. Sun громко заявляет о революционности Java.
|
---|
152 |
|
---|
153 | - 2001 :: [[https://ru.wikipedia.org/wiki/%D0%A5%D0%B5%D0%B9%D0%BB%D1%81%D0%B1%D0%B5%D1%80%D0%B3,_%D0%90%D0%BD%D0%B4%D0%B5%D1%80%D1%81][Андерс Хейлсберг]] изобретает [[https://ru.wikipedia.org/wiki/C_Sharp][C#]]. C# относительно многословный
|
---|
154 | статически-типизированный объектно-ориентированный язык с классами,
|
---|
155 | одиночным наследованием, множественным наследованием интерфейсов и
|
---|
156 | сборкой мусора. Microsoft громко заявляет о революционности C#.
|
---|
157 |
|
---|
158 | - 2003 :: [[https://ru.wikipedia.org/wiki/%D0%9E%D0%B4%D0%B5%D1%80%D1%81%D0%BA%D0%B8,_%D0%9C%D0%B0%D1%80%D1%82%D0%B8%D0%BD][Мартин Одерски]] изобретает [[https://ru.wikipedia.org/wiki/Scala_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)][Scala]], который объединяет
|
---|
159 | конструкции из объектно-ориентированных и функциональных языков. Это
|
---|
160 | бесит как приверженцев ООП, так и ФП, что делает язык неюзабельным для
|
---|
161 | всех.
|
---|