Коли говорять про історію комп’ютерів, то її часто починають з 19-сторіччя з лічильної машини Беббіджа. Але людство почало рух до комп’ютерів набагато раніше і можна впевнено говорити, що древньогрецький Аристотель створив комп’ютер. Філософи, на яких він вплинув, підготували основу для технологічної революції, яка переробила наш світ.
Хоча історія комп’ютерів часто розповідається як історія об’єктів, від рахівниці Беббіджа до машин для злому кодів у часи Другої світової війни, насправді її краще розуміти як історію ідей. Головним чином ідей, що виникли з математичної логіки – незрозумілої та культової дисципліни, яка вперше виникла в 19 столітті.
Математична логіка була започаткована філософами-математиками, особливо Джорджем Булем і Готлобом Фреге, які самі були натхненні мрією Лейбніца про універсальну «мову понять» і стародавньою логічною системою Аристотеля.
Математичну логіку спочатку вважали безнадійно абстрактним предметом, який не має жодних практичних застосувань. Як прокоментував один вчений: «Якби в 1901 році талановитого і співчутливого аутсайдера покликали дослідити науку та назвати галузь, яка буде найменш плідною в наступному столітті, його вибір цілком міг би зупинитися на математичній логіці”.
І все ж вона забезпечить основу для галузі, яка матиме більше впливу на сучасний світ, ніж будь-яка інша.
Еволюція інформатики від математичної логіки досягла кульмінації в 1930-х роках з двома знаковими статтями: Клодом Шенноном «Символічний аналіз комутаційних і релейних схем» і Алланом Тьюрингом «Про обчислювані числа, із застосуванням до проблеми рішень».
В історії інформатики Шеннон і Тьюрінг є видатними фігурами, але значення філософів і логіків, які їм передували, часто не помічається.
Історія інформатики описує роботу Шеннона як, можливо, найважливішу, а також найвідомішу магістерську роботу століття. Шеннон написав її, будучи студентом електротехніки в MIT.
Його радник Ванневар Буш створив прототип комп’ютера, відомого як диференціальний аналізатор, який міг швидко обчислювати диференціальні рівняння. Пристрій був здебільшого механічним, з підсистемами, керованими електричними реле, оскільки ще не існувало систематичної теорії, що лежала в основі електричних схем. Тема дипломної роботи Шеннона виникла, коли Буш порадив йому спробувати відкрити таку теорію.
Стаття Шеннона багато в чому є типовою електротехнічною роботою, наповненою рівняннями та схемами електричних кіл. Незвичайним є те, що основним посиланням була праця з математичної філософії 90-річної давнини – «Закони думки» Джорджа Буля.
Сьогодні ім’я Буля добре відоме комп’ютерникам – багато мов програмування мають базовий тип даних, який називається Boolean. Але в 1938 році його рідко читали за межами філософських факультетів.
Сам Шеннон познайомився з працею Буля на студентському курсі філософії. «Просто так сталося, що ніхто інший не був знайомий з обома сферами одночасно», — прокоментував він пізніше.
Буля часто описують як математика, але він бачив себе філософом, наслідуючи Арістотеля. «Закони думки» починаються з опису його цілей — дослідити фундаментальні закони роботи людського розуму:
«Мета наступного трактату полягає в тому, щоб дослідити фундаментальні закони тих операцій розуму, за допомогою яких виконуються міркування; щоб виразити їх символічною мовою числення і на цій основі заснувати науку логіки … і, нарешті, зібрати … деякі ймовірні натяки на природу та структуру людського розуму», – писав Буль.
Потім він віддає належне Арістотелю, винахіднику логіки, і головному впливу на його власну роботу:
«У своїй античній та схоластичній формі предмет логіки справді пов’язаний майже виключно з великим іменем Арістотеля. Так, як це було представлено стародавній Греції в частково технічних, частково метафізичних дослідженнях «Органону», таким, майже не внісши жодних суттєвих змін, воно збереглося до наших днів», – писав він.
Спроба вдосконалити логічну роботу Арістотеля була інтелектуально сміливим кроком. Логіка Аристотеля, викладена в його книзі «Органон» із шести частин, займала центральне місце в науковому каноні понад 2000 років.
Поширеною була думка, що Аристотель написав майже все, що можна було сказати на цю тему. Великий філософ Іммануїл Кант зауважив, що з часів Аристотеля логіка була «нездатна зробити жодного кроку вперед, і тому, здавалося б, вона закінчена й завершена».
Основне спостереження Аристотеля полягало в тому, що аргументи були дійсними чи ні, базуючись на їхній логічній структурі, незалежно від нелогічних слів. Найвідоміша схема аргументів, яку він обговорював, відома як силогізм:
- Усі люди смертні.
- Сократ – людина.
- Отже, Сократ смертний.
Ви можете замінити «Сократ» на будь-який інший об’єкт, а «смертний» на будь-який інший предикат, і аргумент залишиться дійсним. Достовірність аргументу визначається виключно логічною структурою. Логічні слова?—«все», «є», є» і «отже»? —? виконують всю роботу.
Аристотель також визначив набір основних аксіом, з яких він вивів решту своєї логічної системи:
- Об’єкт є тим, чим він є (Закон тотожності)
- Жодне твердження не може бути одночасно істинним і хибним (Закон несуперечності)
- Кожне твердження або істинне, або хибне (закон виключеної середини)
Ці аксіоми не мали на меті описати, як люди насправді думають (це було б сферою психології), а те, як повинна мислити ідеалізована, абсолютно раціональна людина.
Аксіоматичний метод Арістотеля вплинув на ще більш відому книгу Евкліда «Початки», яка за кількістю надрукованих видань, за оцінками, поступається лише Біблії.
Хоча «Початки» (відомі ще як «Елементи» нібито стосуються геометрії, вони стали стандартним підручником для навчання суворим дедуктивним міркуванням. Авраам Лінкольн одного разу сказав, що він навчився надійної юридичної аргументації, вивчаючи Евкліда.
У системі Евкліда геометричні ідеї були представлені як просторові діаграми. Геометрія продовжувала практикуватися таким чином, доки Рене Декарт у 1630-х роках не показав, що геометрія може бути представлена у вигляді формул.
Його «Дискурс про метод» був першим математичним текстом на Заході, який популяризував те, що зараз є стандартним алгебраїчним позначенням? — ?x, y, z для змінних, a, b, c для відомих величин.
Алгебра Декарта дозволила математикам вийти за межі просторової інтуїції та маніпулювати символами за допомогою точно визначених формальних правил.
Це змінило домінуючий спосіб математики з діаграм на формули, що призвело, серед іншого, до розвитку математичного аналізу, винайденого приблизно через 30 років після Декарта незалежно один від одного Ісааком Ньютоном і Готфрідом Лейбніцем.
Метою Буля було зробити для арістотелевської логіки те, що Декарт зробив для евклідової геометрії: звільнити її від обмежень людської інтуїції, надавши їй точну алгебраїчну нотацію.
Простий приклад. Коли Аристотель писав: усі люди смертні. Буль замінив слова «люди» і «смертний» на змінні, а логічні слова «всі» і «є» на арифметичні оператори: x = x * y. Що можна інтерпретувати як «Усе в наборі x також є в наборі y».
Закони мислення створили нову наукову галузь — математичну логіку, — яка в наступні роки стала однією з найактивніших сфер досліджень для математиків і філософів. Бертран Рассел назвав «Закони думки» працею, у якій було відкрито чисту математику.
Шеннон прийшов до висновку, що систему Буля можна відобразити безпосередньо на електричних схемах. У той час електричні схеми не мали систематичної теорії, яка керувала б їх проектуванням. Шеннон зрозумів, що правильна теорія буде «точно аналогічною обчисленню пропозицій, яке використовується в символічному дослідженні логіки».
Він показав відповідність між електричними схемами та булевими операціями на простій діаграмі:
Це листування дозволило комп’ютерникам імпортувати десятиліття роботи Буля та наступних логіків у галузі логіки та математики. У другій половині своєї роботи Шеннон показав, як булеву логіку можна використати для створення схеми додавання двох двійкових цифр.
Об’єднавши ці схеми суматора разом, можна створювати довільно складні арифметичні операції. Ці схеми стануть основними будівельними блоками того, що зараз відомо як арифметичні логічні пристрої – ключовий компонент сучасних комп’ютерів.
Іншим способом охарактеризувати досягнення Шеннона є те, що він першим розрізнив логічний і фізичний рівень комп’ютерів. Ця відмінність стала настільки фундаментальною для інформатики, що сучасним читачам може здатися дивним, наскільки революційною вона була в той час — нагадування про приказку, що «філософія одного століття — це здоровий глузд наступного».
Після статті Шеннона було досягнуто значного прогресу на фізичному рівні комп’ютерів, включаючи винахід транзистора в 1947 році Вільямом Шоклі та його колегами з Bell Labs.
Транзистори — це значно вдосконалені версії електричних реле Шеннона? — ?найбільш відомого способу фізичного кодування булевих операцій.
Протягом наступних 70 років напівпровідникова промисловість пакувала все більше і більше транзисторів у все менші розміри. iPhone 2016 року має близько 3,3 мільярдів транзисторів, кожен з яких є «реле», подібним до зображених на діаграмах Шеннона.
Тоді як Шеннон показав, як відобразити логіку у фізичному світі, Тьюрінг показав, як проектувати комп’ютери мовою математичної логіки.
Коли в 1936 році Тьюрінг писав свою статтю, він намагався вирішити «проблему прийняття рішень», яку вперше визначив математик Девід Гільберт. Останній запитав, чи існує алгоритм, який міг би визначити, чи є довільне математичне твердження істинним чи хибним.
На відміну від статті Шеннона, стаття Тюрінга є високотехнічною. Його головне історичне значення полягає не у відповіді на проблему вирішення проблеми, а в шаблоні для комп’ютерного проектування, який він надав на своєму шляху.
Тьюрінг працював за традицією, що тягнеться до Ґотфріда Лейбніца -філософського гіганта, який розробив обчислення незалежно від Ньютона. Серед багатьох внесків Лейбніца в сучасну думку одним із найбільш інтригуючих була ідея нової мови, яку він назвав «універсальною характеристикою».
Вона, як він уявляв, могла б представляти всі можливі математичні та наукові знання. Частково натхненний релігійним філософом 13-го століття Рамоном Луллем, Лейбніц припустив, що мова буде ідеографічною, як єгипетські ієрогліфи, за винятком того, що символи відповідатимуть «атомарним» концепціям математики та науки.
Він стверджував, що ця мова дасть людству «інструмент», який міг би покращити людський розум «набагато більшою мірою, ніж оптичні інструменти», такі як мікроскоп і телескоп.
Він також уявив машину, яка могла б обробляти мову, яку він назвав calculus ratiocinator. Якби виникли суперечки, то суперечка між двома філософами перетворилася б на суперечку двох бухгалтерів. Бо досить було б взяти в руки олівці й сказати один одному: Calculemus — давайте порахуємо.
Лейбніц не отримав можливості розробити свою універсальну мову або відповідну машину (хоча він винайшов відносно просту обчислювальну машину, ступінчастий калькулятор).
Перша серйозна спроба втілити мрію Лейбніца була в 1879 році, коли німецький філософ Ґотлоб Фреге опублікував свій знаковий трактат з логіки Begriffsschrift.
Натхненний спробою Буля вдосконалити логіку Арістотеля, Фреге розробив набагато досконалішу логічну систему. Логіка, яку сьогодні викладають на уроках філософії та інформатики — логіка першого порядку або предикатів — є лише незначною модифікацією системи Фреге.
Фреге загалом вважається одним із найважливіших філософів 19 століття. Серед іншого, йому приписують каталізатор того, що відомий філософ Річард Рорті назвав «лінгвістичним поворотом» у філософії.
Оскільки філософія Просвітництва була одержима питаннями знання, філософія після Фреге стала одержима питаннями мови. Серед його учнів були два найвидатніших філософи 20-го століття — Бертран Рассел і Людвіг Вітгенштейн.
Головне нововведення логіки Фреге полягає в тому, що вона набагато точніше представляє логічну структуру звичайної мови. Крім усього іншого, Фреге першим використав квантори («для кожного», «є») і відокремив об’єкти від предикатів. Він також був першим, хто розробив те, що сьогодні є фундаментальними поняттями в інформатиці, як-от рекурсивні функції та змінні з областю дії та зв’язуванням.
Формальна мова Фреге, те, що він назвав своїм «скриптом поняття, ? складається з безглуздих символів, якими маніпулюють чітко визначені правила. Мові надається значення лише через інтерпретацію, яка специфікується окремо – це пізніше буде названо синтаксисом проти семантики.
Це перетворило логіку на те, що видатні інформатики Аллан Ньюелл і Герберт Саймон назвали «грою символів», у яку грають безглуздими токенами відповідно до певних суто синтаксичних правил.
Як іронізував Бертран Рассел: «Математику можна визначити як предмет, у якому ми ніколи не знаємо, про що ми говоримо, і чи правда те, що ми говоримо».
Несподіваним наслідком роботи Фреге стало відкриття слабких місць в основах математики.
Наприклад, «Елементи» Евкліда? вважалися золотим стандартом логічної строгості протягом тисячоліть. І вони виявилися сповненими логічних помилок.
Оскільки Евклід використовував такі звичайні слова, як «лінія» і «точка», він? — і багато століть читачі — обманювали себе, роблячи припущення щодо речень, які містили ці слова.
Один відносно простий приклад. У звичайному вживанні слово «лінія» означає, що якщо вам дано три різні точки на лінії, одна точка повинна бути між двома іншими. Але коли ви визначаєте «лінію» за допомогою формальної логіки, виявляється, що «між» також потрібно визначити — те, що Евклід не помітив. Формальна логіка дозволяє легко помітити такі прогалини.
Це усвідомлення породило кризу в основі математики. Якщо Елементи? — «біблія математики» — містили логічні помилки, то в яких ще галузях математики вони були? А як щодо таких наук, як фізика, які були побудовані на основі математики?
Хороша новина полягає в тому, що ті самі логічні методи, які використовуються для виявлення цих помилок, також можна використовувати для їх виправлення.
Математики почали відбудовувати основи математики знизу вгору. У 1889 році Джузеппе Пеано розробив аксіоми для арифметики, а в 1899 році Давид Гільберт зробив те саме для геометрії. Гільберт також окреслив програму формалізації решти математики з конкретними вимогами, яким має задовольняти будь-яка така спроба, зокрема:
- Повнота: має бути доказ того, що всі істинні математичні твердження можуть бути доведені у формальній системі.
- Можливість розв’язання: повинен існувати алгоритм для визначення істинності чи хибності будь-якого математичного твердження. (Це «проблема прийняття рішення», згадана в статті Тюрінга)
Перебудова математики таким чином, щоб вона задовольняла ці вимоги, стала відомою як програма Гільберта. До 1930-х років на цьому зосереджувалася основна група логіків, у тому числі Гільберт, Рассел, Курт Гедель, Джон фон Нейман, Алонзо Черч і, звісно, Алан Тюрінг.
Програма Гільберта розгорталася щонайменше у двох напрямках. На першому фронті логіки створили логічні системи, які намагалися довести, що вимоги Гільберта виконувані чи ні.
На другому фронті математики використовували логічні концепції, щоб перебудувати класичну математику. Наприклад, система арифметики Пеано починається з простої функції, що називається функцією наступника, яка збільшує будь-яке число на одиницю.
Він використовує функцію наступника для рекурсивного визначення додавання, використовує додавання для рекурсивного визначення множення і так далі, поки не будуть визначені всі операції теорії чисел. Потім він використовує ці визначення разом із формальною логікою, щоб довести теореми про арифметику.
Історик Томас Кун якось зазначив, що «в науці новизна виникає лише з труднощами». Логіка в епоху програми Гільберта була бурхливим процесом творення та руйнування. Один логік створив би складну систему, а інший її зруйнував.
Улюбленим інструментом руйнування була конструкція самореференційних, парадоксальних тверджень, які показували суперечливість аксіом, з яких вони були виведені.
Простою формою цього «парадоксу брехуна» є речення: «Це речення хибне». Якщо воно правдиве, то воно хибне, а якщо воно хибне, то воно правдиве, що призводить до нескінченної петлі самопротиріччя.
Рассел вперше помітно використав парадокс брехуна в математичній логіці. Він показав, що система Фреге дозволяє отримати множини, що суперечать собі:
- Нехай R — множина всіх множин, які не є членами самих себе. Якщо R не є членом самого себе, тоді його визначення диктує, що він повинен містити сам себе, і якщо він містить сам себе, то він суперечить своєму власному визначенню як множини всіх множин, які не є членами самих себе.
Це стало відомим як парадокс Рассела і розглядалося як серйозний недолік у досягненнях Фреге.
Сам Фреге був шокований цим відкриттям. Він відповів Расселу: «Ваше відкриття протиріччя викликало у мене найбільше здивування і, я б майже сказав, жах, оскільки воно похитнуло основу, на якій я збирався побудувати свою арифметику.»
Рассел і його колега Альфред Норт Уайтхед зробили найамбітнішу спробу завершити програму Гільберта за допомогою «Mathematica Principia», опублікованого в трьох томах між 1910 і 1913 роками.
Метод «Principia» був настільки детальним, що знадобилося понад 300 сторінок, щоб отримати доказ того, що 1+1=2.
Рассел і Уайтхед спробували вирішити парадокс Фреге, запровадивши те, що вони назвали теорією типів. Ідея полягала в тому, щоб розділити формальні мови на кілька рівнів або типів.
Кожен рівень може посилатися на нижчі рівні, але не на власні чи вищі рівні. Це дозволило знищити парадокси самопосилання, по суті, заборонивши самопосилання.
Це рішення не було популярним серед логіків, але воно вплинуло на інформатику? — більшість сучасних комп’ютерних мов мають особливості, навіяні теорією типів.
Парадокси самопосилання зрештою показали, що програма Гільберта ніколи не може бути успішною.
Перший удар був завданий у 1931 році, коли Гедель опублікував свою відому тепер теорему про неповноту, яка довела, що будь-яка послідовна логічна система, достатньо потужна, щоб охопити арифметику, також повинна містити твердження, які є істинними, але не можуть бути доведені, що істинність.
Теорема про неповноту Геделя є одним із небагатьох логічних результатів, який отримав широку популярність завдяки таким книгам, як Гедель, Ешер, Бах і «Новий розум імператора».
Останній удар був нанесений, коли Тюрінг і Алонзо Черч незалежно один від одного довели, що не може існувати алгоритм, який би визначав, чи довільне математичне твердження було істинним чи хибним.
Черч зробив це, винайшовши зовсім іншу систему під назвою лямбда-числення, яка пізніше надихне комп’ютерні мови, такі як Lisp. Відповідь на проблему прийняття рішення була негативною.
Ключове розуміння Тюрінга було зроблено в першому розділі його знаменитої статті 1936 року «Про обчислювані числа, із застосуванням до проблеми Рішення».
Щоб чітко сформулювати проблему прийняття рішення, Тьюрінг спочатку створив математичну модель того, що означає бути комп’ютером. Сьогодні машини, які відповідають цій моделі, відомі як «універсальні машини Тюрінга».
«Тюрінг знав, що алгоритм зазвичай визначається списком правил, яким людина може слідувати в точний механічний спосіб, як рецепт у кулінарній книзі. Він зміг показати, що така людина може обмежитися кількома надзвичайно простими основними діями, не змінюючи кінцевий результат обчислень», – описує логік Мартін Девіс.
«Потім, довівши, що жодна машина, яка виконує лише ці базові дії, не може визначити, чи випливає запропонований висновок із заданих передумов за допомогою правил Фреге, він зміг зробити висновок, що алгоритму для вирішення проблеми Рішення не існує, – продовжує він. – Як побічний продукт, він знайшов математичну модель універсальної обчислювальної машини».
Далі Тюрінг показав, як програма може зберігатися всередині комп’ютера разом із даними, з якими вона працює. Сьогоднішньою лексикою ми б сказали, що він винайшов архітектуру «збережених програм», яка лежить в основі більшості сучасних комп’ютерів:
До Тьюринга загальне припущення полягало в тому, що при роботі з такими машинами три категорії? — «машина, програма та дані» — є цілком окремими одиницями.
Машина була фізичним об’єктом; сьогодні ми б назвали це обладнанням. Програма була планом для виконання обчислень, можливо, втіленим у перфокартах або з’єднаннях кабелів у роз’ємній панелі. Нарешті, дані були числовими введеннями.
Універсальна машина Тьюринга показала, що відмінність цих трьох категорій є ілюзією. Це була перша сувора демонстрація того, що будь-яка обчислювальна логіка, яка може бути закодована в апаратному забезпеченні, також може бути закодована в програмному забезпеченні.
Архітектуру, яку описав Тьюрінг, пізніше назвали «архітектурою фон Неймана»?, ?але сучасні історики загалом погоджуються, що вона походила від Тюрінга, як, мабуть, і ідеї самого фон Неймана.
Хоча на технічному рівні програма Гільберта виявилася невдалою, спроби продемонстрували, що на основі логіки можна сконструювати великі масиви математики.
І після того, як Шеннон і Тьюринг показали зв’язок між електронікою, логікою та обчислювальною технікою, тепер стало можливим експортувати цю нову концептуальну машину в комп’ютерний дизайн.
Під час Другої світової війни ця теоретична робота була реалізована на практиці, коли урядові лабораторії призвали низку елітних логіків.
Фон Нейман приєднався до проекту створення атомної бомби в Лос-Аламосі, де працював над комп’ютерним дизайном для підтримки досліджень фізики. У 1945 році він написав специфікацію EDVAC — першого логічного комп’ютера зі збереженою програмою, — який зазвичай вважається остаточним вихідним посібником для сучасного комп’ютерного дизайну.
Тьюрінг приєднався до секретного підрозділу в Блетчлі Парк, на північний захід від Лондона, де він допомагав розробляти комп’ютери для зламу німецьких кодів. Його найбільшим внеском у практичне проектування комп’ютерів стала його специфікація ACE, або Automatic Computing Engine.
Як перші комп’ютери, засновані на булевій логіці та архітектурі збережених програм, ACE та EDVAC були багато в чому схожі. Але вони також мали цікаві відмінності, деякі з яких передвіщали сучасні дискусії щодо комп’ютерного дизайну.
Улюблені проекти фон Неймана були схожі на сучасні процесори CISC, які вміщували багату функціональність у апаратне забезпечення. Конструкція Тьюрінга була більше схожа на сучасні RISC-процесори, мінімізуючи апаратну складність і перекладаючи більше роботи на програмне забезпечення.
Фон Нейман вважав, що комп’ютерне програмування буде виснажливою канцелярською роботою. Тьюрінг, навпаки, сказав, що комп’ютерне програмування має бути дуже захоплюючим. «Немає жодної реальної небезпеки, що він колись стане важким, оскільки будь-які механічні процеси можуть бути передані самій машині», – писав він.
З 1940-х років комп’ютерне програмування стало значно складнішим. Єдине, що не змінилося, це те, що воно як і раніше в основному складається з програмістів, які вказують правила для комп’ютерів.
У філософських термінах ми б сказали, що комп’ютерне програмування дотримується традиції дедуктивної логіки – галузі логіки, яка має справу з маніпулюванням символами відповідно до формальних правил (про це йшлося вище в тексті).
Приблизно в останнє десятиліття програмування почало змінюватися завдяки зростанню популярності машинного навчання, яке передбачає створення інфраструктури для навчання машин за допомогою статистичних висновків. Це наблизило програмування до іншої гілки логіки – індуктивної логіки, яка має справу з виведенням правил з конкретних випадків.
Найперспективніші сучасні методи машинного навчання використовують нейронні мережі, які вперше були винайдені в 1940-х роках Уорреном МакКалохом і Уолтером Піттсом, ідея яких полягала в тому, щоб розробити обчислення для нейронів, які можна було б, як і булеву логіку, використовувати для побудови комп’ютерних схем.
Нейронні мережі залишалися езотеричними до тих пір, поки десятиліттями пізніше їх не об’єднали зі статистичними методами, що дозволило їм вдосконалюватися в міру надходження більшої кількості даних.
Останнім часом, оскільки комп’ютери стають все більш вправними в обробці великих наборів даних, ці методи дають чудові результати. Програмування в майбутньому, ймовірно, означатиме відкриття нейронних мереж світові та надання їм можливості навчатися.
Це була б доречна друга дія історії про комп’ютери. Логіка починалася як спосіб розуміння законів мислення. Потім це допомогло створити машини, які могли міркувати згідно з правилами дедуктивної логіки.
Сьогодні дедуктивна та індуктивна логіка поєднуються, щоб створити машини, які одночасно міркують і навчаються.
Те, що почалося, за словами Буля, з дослідження «природи та будови людського розуму», могло призвести до створення нових розумів — штучних — які одного разу могли б зрівнятися з нашим власним або навіть перевищити його.
За матеріалами: The Atlantic