Ричард Хэмминг: Глава 3. История компьютеров — железо

в 5:42, , рубрики: Learning to Learn, будущее, Исследования и прогнозы в IT, Профессиональная литература, ричард хэмминг, Системная инженерия, форсайт, цифровая экономика, Читальный зал

«Цель этого курса — подготовить вас к вашему техническому будущему.»

imageПривет. Помните офигенную статью «Вы и ваша работа» (+219, 2265 в закладки, 353k прочтений)?

Так вот у Хэмминга (да, да, самоконтролирующиеся и самокорректирующиеся коды Хэмминга) есть целая книга, написанная по мотивам его лекций. Давайте ее переведем, ведь мужик дело говорит.

Это книга не просто про ИТ, это книга про стиль мышления невероятно крутых людей. «Это не просто заряд положительного мышления; в ней описаны условия, которые увеличивают шансы сделать великую работу.»

Мы уже перевели 15 (из 30) глав.
За перевод спасибо urticazoku, которая откликнулась на мой призыв в «предыдущей главе». Кто хочет помочь с переводом — пишите в личку или на почту magisterludi2016@yandex.ru (Кстати, мы еще запустили перевод еще одной крутейшей книги — «The Dream Machine: История компьютерной революции»), а еще переводим Марвина Мински.

Глава 3. История компьютеров — железо

История вычислений возможно началась с первобытного человека, использующего гальки для сложения. Маршак (Гарвард) обнаружил, что то, что считалось царапинами на костях времен пещерного человека было на самом деле тщательно срисованными линиями, связанными с фазами Луны. Строительство Стоунхенджа на плато Солсбери в Англии проходило в три этапа: 1900-1700, 1700-1500, и 1500-1400 гг. до н.э., и было тесно связано с астрономическими наблюдениями, что свидетельствует о значительном опыте в астрономии. Работа в археоастрономии показала, что у многих первобытных народов были значительные знания об астрономических событиях. В Китае, Индии и Мексике сохранились объекты, называемые обсерваториями, но у нас нет полного понимания как они использовались. На наших западных равнинах много следов астрономических обсерваторий индейцев.

Суан-пан (китайские счеты) и счеты — инструменты, более тесно связанные с вычислениями; появление арабских цифр из Индии означало большой шаг вперед в области чистых вычислений. Большое сопротивление принятию арабских цифр (не в их оригинальной арабской форме) встречалось у чиновничества, вплоть до признания их незаконными, но со временем (1400-е годы) практические и экономические преимущества восторжествовали над более неуклюжим римским (и более ранним греческим) использованием букв алфавита в качестве символов для цифр.

image

Следующий большой шаг — изобретение логарифма Непером (1550-1617). Появилась логарифмическая линейка, с логарифмическими шкалами, где сложение двух логарифмов означает умножение двух чисел. Это аналоговое устройство, логарифмическая линейка, было следующим значительным шагом вперед, но в области аналоговых устройств, а не цифровых. Я когда-то пользовался очень сложной логарифмической линейкой в форме цилиндра 6-8 дюймов в диаметре и длиной 2 фута с множеством шкал на внутренних и внешних цилиндрах, оборудованной лупой для чтения делений.

Линейки 30-х и 40-х годов были стандартным инструментом инженера, обычно носимыми в кожаном чехле, прикрепленном к поясу как символ своей группы в кампусе. Стандартная логарифмическая линейка 10 дюймов длиной включала логарифмическую шкалу, шкалу квадратов, кубов, тригонометрические шкалы. Их больше не производят!

Продолжаем рассказ про аналоговые устройства. Следующим важным шагом стало появление дифференциального анализатора, который с механическими интеграторами в аналоговой форме. Первые успешные модели были сделаны примерно в 30-м году Ванневаром Бушем из Массачусетского технологического института. RDA №2, по-прежнему аналоговый и механический, имел много электронных соединений. Я пользовался таким какое-то время (1947-1948 гг.) для вычисления траекторий запуска управляемой ракеты Найк на ранних стадиях проектирования.

image

Во время Второй мировой войны электронные аналоговые компьютеры стали использоваться военными. Они использовали конденсаторы как интеграторы вместо колес и шаров (хотя они могли только интегрировать по отношению ко времени). Это был значительный шаг вперед, и я пользовался таким устройством в телефонной лаборатории Белла на протяжении многих лет. Оно было сконструировано из частей старых систем управлением артиллерийским огнем М9. Мы использовали части М9, чтобы построить второй компьютер, который мог использоваться независимо или вместе с первым для увеличения вычислительной мощности.

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

image

От палочек Непера возможно произошли современные настольные калькуляторы. 20 декабря 1623 года Шикерт написал Кеплеру, что пожар в его лаборатории сжег машину, которую он делал для Кеплера. Исследование его записей и набросков позволило установить, что машина выполняла бы четыре основные операции арифметики — если снисходительно отнестись к тому, что такое умножение и деление на такой машине. Паскаля (1623 — 1662), родившегося в том же году, называют изобретателем настольного компьютера, но его компьютер мог только складывать и вычитать — только эти операции были нужны его отцу для расчета налогов. Лейбниц также занимался компьютерами, и добавил умножение и деление, но его машины не были надежными.

Бэббидж (1791-1871) — это следующее замечательное имя в цифровой области, и его часто считают отцом современных вычислений. Его первая разработка — разностный движок, основанный на простой идее о том, что полином можно оценивать на последовательных, равномерно распределенных значениях, используя только последовательность сложений и вычитаний, а так как локально большинство функций могут быть представлены подходящим полиномом, это можно считать «машинным столом» (Бэббидж настаивал на том, чтобы печать выполнялась машиной, чтобы не допустить каких-либо человеческих ошибок). Правительство Англии финансировало его, но проект так и не был завершен. Норвежцы, отец и сын Шойц собрали несколько работающих устройств и Бэббидж поздравил их с успехом. Одно из устройств было продано в обсерваторию в Нью-Йорке, и использовалось для вычисления астрономических таблиц.

Как это часто случалось в области вычислительной техники, Бэббидж еще не закончил работу с разностным движком, прежде чем он задумал гораздо более мощный аналитический движок, конструкция которого близка к фон Неймановской. Ему не удалось получить работающее устройство; группа ученых в Англии (1992) собрала устройство по его чертежам и оно успешно работало как и было задумано.

Следующим крупным практическим этапом стал Комптометр, который был всего лишь сумматором, но благодаря повторяемому сложению и сдвигу, что эквивалентно умножению, прибор очень широко использовался на протяжении многих-многих лет. После него появилась последовательность более современных настольных калькуляторов, Millionaire, затем Marchant, Friden и Monroe. Питание и управление на них осуществлялось вручную, но постепенно часть управления была встроена, в основном механическими рычагами. Начиная с 1937 года устройства постепенно оснащались электрическими двигателями, для выполнения самых сложных вычислений. До 1944 года, по крайней мере, одно из них имело встроенную операцию вычисления квадратного корня (все же со сложным образом организованными механическими рычагами). Такие ручные машины были основой для групп, управляющих ими для обеспечения вычислительной мощности. Например, когда я пришел в телефонную лабораторию Белла в 1946 году, в лаборатории было четыре таких группы, как правило, от шести до десяти девочек в группе; небольшая группа в отделе математики, большая в сетевом отделе, одна в коммутации и одна в контроле качества.

Вычисления с помощью перфокарт появились потому, что один дальновидный человек обнаружил, что Федеральная перепись, которая по закону должна выполняться каждые 10 лет, занимала так много времени, что последнюю перепись (1890) не успели бы закончить до начала следующей, если бы они не обратились к машинным методам. Холлерит взял на себя эту работу и построил первые перфокарты, и с дальнейшими успешными переписями он построил более мощные машины, чтобы не отставать как от увеличения численности населения, так и от возросшего количества вопросов, заданных в ходе переписи. В 1928 году IBM начала использовать карты с прямоугольными отверстиями, поэтому электрические щетки могли легко обнаружить наличие или отсутствие отверстия на карте в данном месте. Пауэрс, который оставил группу переписи, использовал перфокарты с круглыми отверстиями, которые были предназначены для обнаружения механическими стержнями — «пальцами».

Примерно в 1935 году IBM построила механический перфоратор 601, который умножал, и мог делать две прибавки к результату одновременно. Он стал одним из основных компонентов вычислительной техники. 1500 из них сдавали в аренду, и они в среднем умножали за 2 или 3 секунды. Эти приборы вместе с некоторыми специальными машинами с тройным произведением и делением, были использованы в Лос-Аламосе для расчета проектов первых атомных бомб.
В механической, я имею в виду реле, области Джордж Стибиц построил (1939) компьютер, работающий с комплексными числами и выставил его в Дартмуте (1940), тогда как мэйнфрейм был в Нью-Йорке, то есть это был один из первых удаленных терминалов, и поскольку он обычно имел три входных станции в разных местах в лабораториях, это был, если хотите, «совместно используемый компьютер».

image

Конрад Цузе в Германии и Говард Айткен в Гарварде, каждый из них, как и Стибиц, выпустил серию релейных компьютеров повышенной сложности. В Модели 5 Стибица было два компьютера на одной машине и можно было разделить задачу, когда это необходимо, как в многопроцессорной сиистеме. Из трех человек, вероятно, Цузе был лучшим, с учетом как трудностей, с которыми ему пришлось столкнуться, так и его более позднего вклада в развитие программного обеспечения вычислительной техники.

Говорят, что эра электронных компьютеров началась с ENIAC, построенного для армии США в 1946 году. Он имел около 18 000 вакуумных трубок, был огромным, и, как первоначально было спроектировано, был подключен так же, как платы для подключения IBM, но его соединения для решения какой-то определенной проблемы занимали весь машинный зал! До тех пор, пока он использовался, как первоначально предполагалось, для расчета баллистических траекторий, этот дефект был несерьезным. В конечном счете, как и более поздняя IBM CPC, он был тщательно переделан пользователями, чтобы действовать так, как если бы был запрограммирован из инструкций (номера на баллистических таблицах), а не из проводки соединений.

Мочли и Эккерт, которые построили ENIAC, обнаружили, что, как и у Бэббиджа, до завершения их первой машины они уже представляли себе более крупную, уже запрограммированную машину EDVAC. Фон Нейманн, будучи консультантом проекта, написал отчет, и, как следствие, ему часто приписывают внутреннее программирование, хотя, насколько я знаю, он никогда не утверждал и не отрицал этого. Летом 1946 года Мочли и Эккерт открыли для всех курс, как проектировать и создавать электронные компьютеры, и, как результат, многие из участников отправились строить свои собственные; Уилкс из Кембриджа, Англия, стал первым, кто смог извлечь из этого пользу — EDSAC.

Сначала каждая машина была единственной в своем роде, хотя многие из них были скопированы (но часто завершены ранее) с машины Института перспективных исследований под руководством фон Неймана, потому что сборка этой машины, по-видимому, была приостановлена. В результате многие из так называемых копий, таких как Maniac-I (1952) (который был назван так, чтобы избавиться от идиотского наименования машин), собранный под руководством NC Metropolis, были закончены до машины Института перспективных исследований. Maniac-I и Maniac-II (1955) сделаны в Лос-Аламосе, а Maniac-III (1959) был собран в Чикагском университете. Федеральное правительство, особенно военнослужащие, поддерживало разработку большинства ранних машин, и очень помогло в начале компьютерной революции.

Первое коммерческое производство электронных компьютеров снова было под руководством Мочли и Эккерта, и поскольку созданная ими компания была объединена с другой, их машины назывались UNIVACS. Особенно отметим один для Бюро переписи. IBM немного опоздала с 18 (20, если вы считаете тайных криптографических пользователей) IBM 701. Я хорошо помню нашу группу, после сессии на IBM 701 на встрече, где они говорили о предлагаемых 18 машинах, все считали, что это насытит рынок на годы вперед! Наша ошибка заключалась просто в том, что мы думали только о тех вещах, которые мы тогда делали, и не думали о направлениях совершенно нового применения машин. Лучшие эксперты того времени абсолютно ошибалсь! И немало! И не в последний раз!

Давайте сравним:

image

Изменения в скорости и соответствующий объем памяти, с которыми я имел дело, должны дать вам представление о том, что вам придется терпеть в своей карьере. Даже для машин типа фон Неймана, вероятно, скорость может возрасти в 100 раз до достижения максимальной.
Поскольку такие числа на самом деле превосходят большинство человеческих размерностей, мне нужно ввести человеческое измерение описываемых скоростей. Первая запись (круглые скобки содержат стандартный символ)

image

Теперь к человеческим измерениям. В одном дне 60 × 60 × 24 = 86400 секунд. В одном году — около 3,15 × 10^7 секунд, и в 100 годах, вероятно, больше, чем продолжительность жизни, — около 3,15 × 10^9 секунд. Таким образом, за 3 секунды машина, выполняющая 10^9 операций с плавающей точкой в секунду (флопы), будет делать больше операций, чем есть секунд во всей вашей жизни, и почти наверняка без ошибок!

Другим примером человеческих размерностей является скорость света в вакууме — 3х10^10 см/сек. (по проводу оно составляет около 7/10 от этого значения). Таким образом, в наносекундах свет проходит 30 см, около одного фута. На пикосекунде расстояние, конечно, составляет около 1/100 дюйма. Это расстояния, на которые может распространяться сигнал (в лучшем случае) в схеме. Таким образом, при некоторых частотах, которые мы теперь используем, части должны быть очень близки друг к другу — близки в человеческих размерах, иначе большая часть потенциальной скорости будет потеряна при переходе между частями. Также мы больше не можем использовать смешанный анализ схем.

Как насчет естественных размеров длины вместо человеческих? Атомы бывают разных размеров, обычно от 1 до 3 ангстрем (ангстрем составляет 10^-8 см), а в кристалле расположены на расстоянии около 10 ангстрем, как правило, хотя есть исключения. За 1 фемтосекундну свет проходит около 300 атомов. Поэтому детали на очень быстром компьютере должны быть маленькими и располагаться близко друг к другу!

Если вы думаете о транзисторе с примесями, а примеси работают примерно на 1 миллион, то вы, вероятно, не сможете представить транзистор с 1 атомом примеси, но, если вы снизите температуру, чтобы уменьшить фоновый шум, представьте 1000 примесей, что делает твердотельное устройство по меньшей мере размером около 1000 атомов. С межсоединениями, которые работают на не менее чем десятикратном расстояний относительно размера устройства, вы понимаете, что расстояние меньше 100000 атомов между некоторыми взаимосвязанными устройствами на самом деле большое (3 пикосекунды).

Также происходит рассеивание тепла. Пока мы говорили о термодинамически обратимых компьютерах, до сих пор это были только разговоры и опубликованные статьи, и тепло по-прежнему имеет значение. Чем больше устройств на единице площади и чем чаще меняется их состояние, тем больше тепла выделяется в небольшой области, от которого нужно избавиться до того, как все расплавится. Для компенсации, мы понижаем напряжение, доходя до 2 или 3 вольт. В настоящее время рассматривается возможность создания основы микросхем из алмаза, поскольку алмаз является очень хорошим теплопроводником, намного лучшим, чем медь. Есть разумная возможность для аналогичной, возможно, менее дорогостоящей, чем алмазная, кристаллической структуры с очень хорошими свойствами теплопроводности.

Чтобы ускорить работу компьютеров, мы перешли к 2, 4 и даже более, арифметическим единицам — на том же компьютере, а также разработали конвейеры и кэш-память. Все это небольшие шаги к высокопараллельным компьютерам.

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

Из диаграммы, составленной давно в Лос-Аламосе (LANL) с использованием данных самого быстрого на тот момент компьютера на рынке, нашли уравнение для количества операций в секунду:

image

и оно достаточно хорошо описывает данные. Здесь время начинается в 1943 году. В 1987 году экстраполированное значение, предсказанное (примерно за 20 лет!), составляло около 3times10^8 и было целью. Ограничивающая асимптота составляет 3,576times10^9 для компьютера типа фон Неймана с одним процессором.

Здесь, в истории роста компьютеров, вы видите реализацию кривой роста типа «S»; очень медленный старт, быстрый подъем, длинный участок почти линейного роста скорости, а затем столкновение с неизбежным насыщением.

Итак возвращаясь к человеческим размерам. Когда в Лаборатории Бэлла впервые появились цифровые компьютеры, я начал с того, что арендовал их на много часов столь часто, что глава отдела математики решил, что было бы дешевле нанять меня как сотрудника — я старался не спорить с ним, поскольку считал споры бесполезными и только создающими больше сопротивления с его стороны цифровым компьютерам. Как только босс говорит «Нет!», ему очень сложно принять другое решение, поэтому не позволяйте говорить «Нет!» на ваше предложение. Я обнаружил, что в мои ранние годы я удваивал количество вычислений на год каждые 15 месяцев. Несколько лет спустя я уменьшил время удвоения вычислений примерно до 18 месяцев. Начальник отдела продолжал повторять, что я не могу продолжать это вечно, и мой вежливый ответ обычно был: «Вы правы, конечно, но вы просто наблюдаете, как я удваиваю количество вычислений каждые 18-20 месяцев!». Машины позволили мне и моим преемникам в течение многих лет удваивать количество выполненных вычислений. Все эти годы мы жили на почти прямолинейной части кривой «S».

Тем не менее, позвольте мне честно отнестись к главе Департамента, это его замечания заставили меня понять, что имело значение не количество выполняемых операций, а как бы количество микро-Нобелевских премий, которые я вычислил. Таким образом, девиз книги, которую я опубликовал в 1961 году:

Целью вычислений является понимание, а не числа.

Мой хороший друг пересмотрел его:

Цель вычислений еще не ясна.

image

Рисунок 3.1

Теперь необходимо обратиться к некоторым подробностям о том, как на протяжении многих лет конструировали компьютеры. Самые маленькие части, которые мы рассмотрим, — это два устройства состояния для хранения бит информации и для затвора транзистора, которые пропускают или блокируют сигнал. Оба являются двоичными устройствами, и в текущем состоянии знаний они обеспечивают самые простые и быстрые методы вычислений, которые мы знаем.

Из таких частей мы строим комбинации, которые позволяют хранить большие массивы бит; эти массивы часто называют числовыми регистрами. Логический вентиль — это всего лишь комбинация единиц хранения, включая затворы транзистора. Мы строим сумматор из таких устройств, а также каждую большую единицу компьютера.

Перейдя к еще более крупным единицам, у нас есть машина, состоящая из: (1) запоминающего устройства, (2) устройства управления, (3) арифметико-логического устройства. В устройстве управления есть один регистр, который мы будем называть Регистром текущих адресов (CAR). Он хранит адрес, по которому может быть найдена следующая инструкция, Рисунок 3.1.

Цикл компьютера:

1. Получите адрес следующей инструкции от CAR.
2. Перейдите по этому адресу в хранилище и получите эту инструкцию.
3. Декодируйте и исполните эту инструкцию.
4. Добавьте 1 к адресу CAR и начните снова.

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

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

Я хочу, чтобы вы поняли: машина обрабатывает биты информации в соответствии с другими битами, и, насколько это касается машины, нет никакого смысла в том, что происходит — именно мы придаем значение битам. Машина является «машиной» в классическом смысле; она делает то, что делает, и ничего больше (пока не ошибается). Есть, конечно, прерывания в реальном времени и другие способы, которыми новые биты попадают в машину, но для машины они всего лишь биты.

Но прежде чем мы оставим эту тему, вспомните слова Демокрита (460-336?): «Все есть атомы и пустота». Таким образом, он выразил современный взгляд на мир многих физиков, что все, включая нас с вами, состоит из молекул, и мы существуем в энергетическом поле (?). Больше ничего! Мы машины? Многие не хотят соглашаться с этим, а чувствуют, что они есть что-то большее, чем просто множество молекул, бессмысленно сталкивающихся друг с другом — как мы представляем себе компьютер. Мы рассмотрим эту тему в главах 6-8 под названием «Искусственный интеллект» (ИИ).

В представлении компьютера как машины, набора устройств хранения данных и блоков обработки бит есть определенная польза. Например, при отладке программы (поиске ошибок). Что нужно учитывать при отладке, так это то, что машина подчиняется инструкциям — и ничего больше, никакой «свободной воли» или самосознания как у людей.

Насколько мы действительно отличаемся от машин? Нам всем хотелось бы думать, что отличаемся, но на самом деле? Это чувствительная тема для людей, и в качестве аргументов преобладают эмоции и религиозные убеждения. Мы вернемся к этому вопросу в частях 6-8 про ИИ, когда у нас будет больше знаний для обсуждения этой темы.

Продолжение следует...

Кто хочет помочь с переводом — пишите в личку или на почту magisterludi2016@yandex.ru

Кстати, мы еще запустили перевод еще одной крутейшей книги — «The Dream Machine: История компьютерной революции»)

Содержание книги и переведенные главы

  1. Intro to The Art of Doing Science and Engineering: Learning to Learn (March 28, 1995) (в работе) Перевод: Глава 1
  2. «Foundations of the Digital (Discrete) Revolution» (March 30, 1995) Глава 2. Основы цифровой (дискретной) революции
  3. «History of Computers — Hardware» (March 31, 1995) (в работе)
  4. «History of Computers — Software» (April 4, 1995) Глава 4. История компьютеров — Софт
  5. «History of Computers — Applications» (April 6, 1995) (в работе)
  6. «Artificial Intelligence — Part I» (April 7, 1995) (в работе)
  7. «Artificial Intelligence — Part II» (April 11, 1995) (в работе)
  8. «Artificial Intelligence III» (April 13, 1995) Глава 8. Искуственный интеллект-III
  9. «n-Dimensional Space» (April 14, 1995) Глава 9. N-мерное пространство
  10. «Coding Theory — The Representation of Information, Part I» (April 18, 1995) (в работе)
  11. «Coding Theory — The Representation of Information, Part II» (April 20, 1995)
  12. «Error-Correcting Codes» (April 21, 1995) (в работе)
  13. «Information Theory» (April 25, 1995) (в работе, Горгуров Алексей)
  14. «Digital Filters, Part I» (April 27, 1995) готово
  15. «Digital Filters, Part II» (April 28, 1995) в работе
  16. «Digital Filters, Part III» (May 2, 1995)
  17. «Digital Filters, Part IV» (May 4, 1995)
  18. «Simulation, Part I» (May 5, 1995) (в работе)
  19. «Simulation, Part II» (May 9, 1995) готово
  20. «Simulation, Part III» (May 11, 1995)
  21. «Fiber Optics» (May 12, 1995) в работе
  22. «Computer Aided Instruction» (May 16, 1995) (в работе)
  23. «Mathematics» (May 18, 1995) Глава 23. Математика
  24. «Quantum Mechanics» (May 19, 1995) Глава 24. Квантовая механика
  25. «Creativity» (May 23, 1995). Перевод: Глава 25. Креативность
  26. «Experts» (May 25, 1995) Глава 26. Эксперты
  27. «Unreliable Data» (May 26, 1995) (в работе)
  28. «Systems Engineering» (May 30, 1995) Глава 28. Системная Инженерия
  29. «You Get What You Measure» (June 1, 1995) Глава 29. Вы получаете то, что вы измеряете
  30. «How Do We Know What We Know» (June 2, 1995) в работе
  31. Hamming, «You and Your Research» (June 6, 1995). Перевод: Вы и ваша работа

Кто хочет помочь с переводом — пишите в личку или на почту magisterludi2016@yandex.ru

Автор: Алексей

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js