Алан Кей: «Какие книги Вы бы посоветовали прочесть тому, кто учится на Computer Science»

в 21:25, , рубрики: computer science, software engineering, Блог компании Edison, книги, Программирование, Профессиональная литература, Учебный процесс в IT, Читальный зал

Если вкратце, то я бы посоветовал читать много книг, не имеющих отношения к информатике.

image

Важно понимать, какое место занимает понятие «science» в «Computer Science», и что означает «engineering» в «Software Engineering».

Современное понятие «науки» можно сформулировать так: это попытка перевести явления в модели, которые можно более-менее легко объяснить и предсказать. На эту тему можно прочесть «Sciences of the Artificial» (одна из важных книг Герберта Саймона). На это можно смотреть с такой точки зрения: если люди (особенно разработчики) строят мосты, то учёные могут объяснять эти явления, создавая модели. Самое интересное в этом то, что наука почти постоянно будет находить новые, лучшие способы наведения мостов, так что дружеские отношения между учеными и разработчиками вполне могут улучшаться с каждым годом.

Примером подобного из сферы Computer Science является Джон Маккарти, размышляющий о компьютерах в конце 50-х годов, то есть о невероятно большом спектре того, что они могут сделать (может быть, ИИ?), и создание модели вычислений, которая является языком, и может служить в качестве собственного метаязыка (Lisp). Моя любимая книга на эту тему — «The Lisp 1.5 Manual» от MIT Press (автор Маккарти с соавторами). Первая часть этой книги по-прежнему остается классикой того, как нужно думать в целом и об информационных технологиях в частности.

(Позднее вышла книга «Smalltalk: the language and its implementation», авторы которой (Адель Голдберг и Дейв Робсон) вдохновлялись всем этим. Также содержит полное описание практического применение проекта, написанное на самом языке Smalltalk и т.д.).

Мне очень нравится книга «The Art of the Metaobject Protocol» под авторством Кикзалеса, Боброу и Риверы, вышедшая ещё позднее предыдущих. Она из тех книг, которые можно назвать «серьёзной информатикой». Первая часть особенно хороша.

Другая научная работа 1970 года, которую можно считать серьёзной Computer Science — «A Control Definition Language» Дейва Фишера (Университет Карнеги Меллон).

Может показаться, что моя любимая книга о компьютерных вычислениях (computing) далека от сферы ИТ, но она замечательная и её приятно читать: «Computation: Finite and Infinite Machines» Марвиа Минского (около 1967 г.). Просто прекрасная книга.

Если нужна помощь с «наукой» («science»), я обычно рекомендую множество книг: «Principia» Ньютона (основополагающая научная книга и учредительный документ), «The Molecular Biology of the Cell» Брюса Альбертса и др. Или, например, книга с записями Максвелла и т.д.

Вам нужно осознать, что «Computer Science» — это все еще стремление достигнуть, а не достигнутое.

«Разработка» («Engineering») означает «проектирование и конструирование вещей принципиальным экспертным способом». Требуемый уровень этого умения очень высок для всех областей: гражданской, механической, электротехнической, биологической и др. Разработка.

Следует тщательно изучать этот аспект, чтобы лучше понять, что именно означает заниматься «разработкой» («engineering»).

Если нужна помощь с «разработкой» («engineering»), попробуйте почитать о создании Эмпайр-стейт-билдинг, плотине Гувера, мосте «Золотые Ворота» и т.п. Мне нравится книга «Now It Can Be Told», написанная генерал-майором Лесли Гровс (почетное звание участника Манхэттенского проекта). Он инженер, и эта история абсолютно точно не о Лос-Аламосском проекте POV (которым он также руководил), а про Оук-Ридж, Хэнфорд и т.д., а также об изумительном привлечении более 600 000 человек и огромных денег для выполнения проектирования, необходимого для создания нужных материалов.

Кроме того, подумайте о том, в какой сфере нет части «разработки ПО» («software engineering») — опять же, вам нужно понять, что «разработка ПО» в любом «разрабатывающем» смысле в лучшем случае остается стремлением достичь, а не достижением.

Компьютеры также являются своего рода «медиа» и «посредниками», поэтому нужно понимать, что они делают для нас и какое на нас оказывают влияние. Почитайте Маршалла Маклюэна, Нила Постмана, Инниса, Хейвлока и т.д. Марк Миллер (комментарий ниже) только что напомнил мне, чтобы я порекомендовал книгу «Technics and Human Development,», том. 1 из серии «The Myth of the Machine» Льюиса Мамфорда — великого предшественника как идей медиа-среды, так и важного аспекта антропологии.

Мне сложно посоветовать хорошую книгу по антропологии (может быть, кто-то другой это сделает), но понимание людей как живых существ — это самый важный аспект образования и следует хорошенько его изучить. В одном из комментариев ниже Мэтт Габури порекомендовал «Human Universals» (я думаю, что он имеет в виду книгу Дональда Брауна). Эта книга, безусловно, должна быть прочитана и понята — она не с той же полки, что и книги о какой-то определённой области, такие как «Molecular Biology of the Cell».

Мне нравятся книги Эдварда Тафти из серии «Envisioning Information»: прочитайте их все.

Книги Бертрана Рассела по-прежнему очень полезны хотя бы для того, чтобы глубже задуматься над «тем и сем» («A History of Western Philosophy» все еще потрясает).

Множество точек зрения — это единственный способ бороться с человеческим желанием верить и создавать религии, поэтому моей любимой книгой по истории является «Destiny Disrupted» Тамима Ансари. Он вырос в Афганистане, переехал в США в возрасте 16 лет и способен написать чёткую, просвещающую историю мира со времен Мухаммеда с точки зрения этого мира и без лишних призывов верить.

*POV (propagation of variance) — распространение противоречий в показаниях (прим.пер.)


Перевод выполнен при поддержке компании EDISON Software, которая профессионально пишет софт для IoT в городских масштабах, а так же разрабатывает ПО для новых томографов .

Автор: MagisterLudi

Источник

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


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