Мистецтво комп’ютерного програмування - читати чи не читати? [зачинено]


63

Існує багато книг про програмування, і, схоже, Code Complete знаходиться вгорі у списку більшості людей "обов'язково читаних книг програмування", а як же "Мистецтво комп'ютерного програмування " Дональда Кнута? Я зайнята людина, між роботою та молодою сім'єю, у мене немає тонни вільного часу, тому я повинен бути прискіпливим до того, як цим користуюсь.

Мені цікаво - хтось тут читав "TAOCP"? Якщо так, то чи варто приділяти час читанню, чи могла б краще використовувати мій час з точки зору професійного розвитку, чи якимось іншим книжковим або іншим програмним забезпеченням на зразок домашніх тварин чи внеском у відкритий код?

ВІДПОВІДАЛЬНІСТЬ - Для тих, хто займається футболками "Кнут - мій домашній хлопець", не зрозумійте мене неправильно - я хочу це прочитати, але мені просто цікаво, чи має це бути вгорі мого списку пріоритетів чи якщо щось інше має прийти першим.


Я хочу його прочитати, але це дорого як пекло, тому я отримаю його, коли закінчу універсітет і почну заробляти соми. Також мені потрібна велика книжкова полиця.
габлін

Я зробив це на сторінці 3 і з вухами його. Продається набір на Amazon через 6 місяців.
kirk.burleson

Відповіді:


72

TAOCP - це абсолютно неоціненний орієнтир для розуміння того, як працюють структури даних та алгоритми, якими ми користуємося щодня і чому це робота, але зобов’язання читати це обкладинки було б надзвичайною інвестицією вашого часу.

Як один сімейний чоловік до іншого, проводьте час зі своїми дітьми.


34
+1 для дітей - комп’ютери, як відомо, непогано чекають. Вони можуть чекати, коли діти постарше.

3
+1 для дітей, хоча ви зможете прочитати книгу в будь-який час свого життя, ви зможете пограти зі своїм 4-річним малюком лише 1 рік. І з вашою 5-річною дитиною теж лише 1 рік ...

3
Чудова відповідь. Є багато речей, які можуть зробити нас кращими програмістами, але нам потрібно бути розумними щодо того, куди ми вкладаємо свій час, а також пам’ятати, що є більше життя, ніж бути чудовим програмістом.
Джон Хопкінс

5
У мене ще немає дітей, і я дуже хочу закінчити її читання до смерті. Чи не маю я дітей?
затонув

1
@sank ти думаєш, як програміст ... :)
Анджелін Надар

23

Замініть "енциклопедію" у вашому питанні для кожного посилання на TAOCP, і я думаю, що відповідь повинна бути очевидною. Тому що багато в чому це - TAOCP.

Існує (можливо, апокрифічна) історія про того, як Стів Джобс зустрічався з Кнутом. Перше, що Джобс сказав йому: "Приємно зустріти тебе доктор Кнут. Я прочитав усі твої твори!". Відповідь Кнута був «Ти сповнений лайна»: http://www.folklore.org/StoryView.py?project=Macintosh&story=Close_Encounters_of_the_Steve_Kind.txt


1
Енциклопедія містить у собі величезну кількість речей, здебільшого, не все, що цікаво чи актуально для людей, які мають навіть широке коло інтересів. Вміст TAOCP принаймні дещо стосується будь-якого розробника програмного забезпечення.
Девід Торнлі

4
Re: розповідь Робота: Це є апокриф. Кнут сказала стільки ж на технічній бесіді Рендалла Манро.
greyfade

4
"Історія" все-таки змусила мене посміхнутися. :)
MetalMikester

Я можу засвідчити гумор доктора Кнута. Я надіслав електронний лист на його опубліковану адресу. Я був здивований, що він відповів. Його відповідь була поміченою копією мого електронного листа, чи він ввічливо сказав мені прочитати решту розділу в TAOCP. Мій електронний підпис стосується того, що я з Міссурі (покажіть мені), до якої він зробив зауваження про дурного політика МО. Потім він завершив, сказавши: "Просто жартуючи, не звинувачуйте мене в губернаторі Шварценеггера".
dbasnett

21

Ні, це не повинно бути вгорі вашого списку пріоритетів. У мене є повний набір, і Я НЕ читав всю справу. Я використовував це (поки що) як хороший посилання на певні проблеми (наприклад, це було неоціненним у моєму розумінні випадковості та тестуванні випадкових генераторів). Кожен раз, коли виникає тема CS, що у мене НЕ РЕАЛЬНО добре справляється, я, як правило, схоплюю відповідний біт TAOCP як хороший крок у моєму розумінні.

Якщо ви все-таки вирішите прочитати, більше сил для вас, і я напевно рекомендую приймати його невеликими шматками. Не бійтеся пропускати навколо і дивитись, що найцікавіше спочатку.


1
Ти вдарився цвяхом по голові.
kirk.burleson

9

TOACP - важливе прочитання - в якийсь момент. Залежно від того, що ви робите щодня, це може бути не вашим найактуальнішим.

Це одна з тих книг (ну, колекцій книг), яку добре читати на початку своєї кар’єри, оскільки вона справді дає хороші уявлення, до яких зазвичай ви не отримаєте пізніше, але це не важливо для виживання, поки не закінчите цю частину Вашої кар’єри, де ви не просто кодуєте, ви вибираєте панель інструментів. Це пункт, коли ви справді хочете вивчити алгоритми, сподіваємось, вже трохи зрозуміли дизайн мови, і ви маєте дуже широке розуміння того, які інструменти, мови та системи є там, і як кожен з них вписується в екосистему речей, які ви можете спиратися на конкретний проект.

Іншими словами: це навчання великим малюнкам, тому, якщо ви нав'язливі, як я, читайте його зараз, якщо ви цього не робите, добре його відкладати, поки ви не почнете прагнути просуватися вгору по сходах і не стати великим хлопцем.


6

Нещодавно взявшись за цю саму задачу, я можу сказати, що спосіб, який він пише, дуже приємний, а проблеми позначені (за труднощами) дуже влучно. Отримайте перший том і прочитайте глави 1 і 2 і подивіться, як вам це подобається.


6

TAOCP - це чудова робота, але читати це було б страшною інвестицією в час для практичного розробника програмного забезпечення. Якщо ви це зробите, ви будете жертвувати пару років (ось скільки часу знадобиться) вашого професійного бюджету на самовдосконалення, щоб дізнатися занадто багато про занадто мало.

Я б рекомендував опрацювати одну або кілька менш "кінцевих" книг про алгоритми, моїм улюбленим у цій галузі є Посібник з дизайну алгоритму Стівен С. Скіена

Тоді якщо ви відчуваєте, що вам потрібно / хочете більше рухатися до Кнут.

У той же час ви можете придбати один або кілька томів TAOCP, переглянути його, щоб зрозуміти, які області охоплює Кнут у ньому, і зберігати його у вашій бібліотеці на випадок, якщо вам справді потрібна якась інформація від неї щодня робота. Мій досвідчений здогад полягає в тому, що ви цього не зробили, і це ще одна причина, чому я не раджу намагатися читати. Але якщо ви виявите, що ви посилаєтесь на нього досить часто, то ви будете знати, що цілком варто того, щоб прочитати його на обкладинці.


6

Навчальна робота Кнута - найпопулярніша довідка, яку програмісти мають намір прочитати чи закінчити читати. Колись.


2
Це як "Хороша історія часу" Хокінга для програмістів.
Джон Хопкінс

1
Bit Я зробив прочитав ABHIT. Радіація Хокінга здається мені дивною. Чорна діра скорочується через те, що в неї потрапляє ще щось? Я розумію збереження маси та дві половини кожної віртуальної пари, яка не може зустрітись, щоб знищити, але ідея все ще просто химерна.
Steve314

@ Steve314: що навіть вільніше - це те, що дуже крихітні чорні діри жорстоко вибухають. Теоретично.
Стівен А. Лоу

2
ABHOT Короткий і призначений для широкої публіки. TAOCP - це не те.
Шон Макміллан

3

+10 на коментар сім'ї / дітей. Я намагаюсь робити більшість читань, перебуваючи під час польотів із "червоними очима" до клієнтів.

Але ... так, дуже варто прочитати. Немає причин читати лінійно, натомість зніміть і виберіть кілька цікавих тем.


3

Я твердо перебуваю в таборі людей, які вважають, що кожен розробник повинен вкласти гроші в отримання книг в якийсь момент (і це стає простіше зараз, коли це виглядає, як їх передруковують у м'якій обкладинці ), але на тому ж марку я б хотів також важко вірити, що хтось сяде і прочитає їх усіх від обкладинки до обкладинки.

Найкращий підхід до них - якщо у вас немає маршруту працювати, де у вас є вільний час, щоб сидіти і читати - це прочитати достатньо їх, щоб знати, де знайти речі, а потім прочитати повну главу коли-небудь знайдіть себе, використовуючи їх як довідники для певної проблеми. З Google та Stack Overflow не так часто звертатися до довідників, але в деяких випадках ви можете виявити, що книги дають деяке уявлення про те, що вам доведеться надсилати додатковий час на пошук в Інтернеті.


1
Прочитати повну главу? Це близько половини об'єму, і вони не малі. Я думаю, ви можете мати на увазі меншу одиницю тексту.
Девід Торнлі

3

Не забувайте, що на початку Кнут хотів написати щось про те, як написати компілятор.

Ви можете отримати багато інформації в мережі за допомогою wikipedia, наприклад, але якщо ви не якийсь дослідник, просто прочитайте резюме, ви отримаєте задоволення.

Ви все одно можете отримати перший том, щоб ви могли прочитати його, коли вам нудно ...


2

Напевно, важливіше, що ти робиш ці проблеми в книзі, ніж просто читаєш. На це знадобиться багато часу.

Йому подобаються 4 томи та 5 частей (що б там не було), тому заповнення книг було б, мабуть, кращим, ніж університетський курс з основ інформатики, і зробить вас майже найкращим програмістом коли-небудь.

Оскільки у вас є така молода сім'я, як я, ви дали мені дуже приємну ідею. Я б купував книги по черзі і навчав їх через своїх дітей.


1
"тож заповнення книг було б, мабуть, кращим, ніж університетський курс" - Томи 1-3 використовувались як підручники на декількох курсах, коли я отримав ступінь CS, і ми витратили цілий курс лише на половину одного з томів наприклад, "Том 3 сортування та пошуку" викладався у вигляді двох окремих курсів.
tcrosley

2
Незначна точка, але на даний момент опубліковано лише три томи з четвертим завершеним. Фашисти - це попередній друк того, що стане четвертим томом. www-cs-facturing.stanford.edu/~uno/taocp.html
rjzii

1

Якщо вам цікаво, то зробіть це, але для перетравлення потрібно досить багато часу, тому вам потрібно витратити свій час.

У вас є маршрут, де ви можете читати - це було б ідеально.


EDIT: Цей попередній перегляд невеликої частини Тому 4 може бути вам цікавим: http://www-cs-facturing.stanford.edu/~uno/fasc1a.ps.gz

(Примітка: стислий постскрипт)


1
На жаль (у даному випадку - ДУЖЕ пощастило інакше) я зв’язуюся, тому це не варіант.
Zannjaminderson

1

Більшість людей не хочуть сідати і читати обкладинку до обкладинки, ні. Це неймовірно неоціненний довідник, і, безумовно, добре підібрати його, вибрати цікавий розділ, прочитати його і зробити кілька вправ. Але вищезгадані порівняння енциклопедії є досить влучними ... це велике, велике та докладне. А деякі з "вправ" - це проблеми дослідження, на вирішення яких можуть знадобитися роки.

Якщо ви просто хочете краще знати алгоритми низького рівня, можливо, краще почати з книг Роберта Седжвіка (наприклад, "Алгоритми на С", "Алгоритми на Яві" тощо).


1

Якщо ви хочете змінити світ, то прочитайте його. Якщо ви хочете дізнатися нові хаки, тоді не читайте їх.


1

TAOCP Кнута - шедевр. Але, як і будь-який шедевр (на кшталт "Ілліада", "Війна і мир" або Пруста "У пошуках втраченого часу"), це не для всіх або в ефірний час.

Книга дуже добре написана і дуже добре вивчена. Проблеми великі, і пояснення алгоритмів добре зроблено.

Великою проблемою книги є той факт, що Кнут показує код вигаданої мови збірки для вигаданого комп'ютера. Я розумію, чому він це зробив, але факт - це смокче.

Я рекомендую використовувати цю книгу як біблію. Коли виникає потреба, шукайте її. Ви знайдете відповідь. Це траплялося зі мною не раз!


3
Чи допоможе це, якби використовували фактичний асемблер для IBM360 або PDP8?
Мартін Бекетт

1
Ніколи не міг би пережити ці 50 років з нефіксованою мовою акта. Це ставить усіх у рівний мінус!
luser droog
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.