singalen: (2002)
[personal profile] singalen
Этот пост задумывался как список книг, которые формировали моё представление о профессии и учили думать.
Сегодня вынимаю его из черновиков и вывешиваю. Но он всё ещё дописывается.

Началось всё в 4-м классе, когда отец пообещал спаять компьютер. Я взялся за книжку "Бейсик - это просто!", автора не помню.
Долго практиковался на бумажках, давал маме проверить решения задачек.
Года полтора собирали детали на "Орель БК-08", который "Спектрум".
Наконец в 8-м классе отец просто купил ещё один этот самый "Орель БК-08".
Я пишу программу на Бейсике. Программа 20 раз пишет на экран какую-то про племянницу. Племянница обижается.
Потом ещё программу, рисующую поросёнка через line и circle.
Язык С для Спектрума у мена как-то не пошёл.

Ассемблер не изучил. Начинал несколько раз, всё время застревал в самом начале. Командой LDIR не владею, но уважаю.

В 8-м классе начал читать "Язык C", какого-то старого издательства. Долго читал, всё было непривычно, привык, на практике не применял, забыл.
Жак Арсак, "Программирование игр и головоломок". Архаика, но очень разивает мозги. Перечитывал года два.
Была ещё книжечка Брудно А.Л., Каплан Л.И. Московские олимпиады по программированию (скачать). Много интересных задачек, но на тот момент они были либо слишком простыми, либо не по тому профилю.

9й класс, ЛИТ,
Зуев Е.А., "Программирование на языке Турбо Паскаль".
10й класс
Мы тусуемся с Лёней Дубинским, по утрам приходим на занятия за 40 минут до начала и сидим на лавочке у входа, обсуждаем олимпиадные задачи — в основном на дискретную математику.
Журнал "Монитор". Многоразовым прочтением освоил статьи об объектных потоках в TurboVision (потом было легче понять эту концепцию и идею функции-фабрики на лентах системного программирования), синтаксическом анализе, собственно TurboVision и чём-то ещё.
11й класс.
Тогда прочёл Липского, "Комбинаторика для программистов". Вернее, дошёл до главы "Матроид трансверсалей" и на нём — матроиде — спёкся.
Тогда же читал книгу: Э. Рейнгольд, Ю. Нивергельт, Н. Део - "Комбинаторные алгоритмы", эта попроще.
Эти книги мне сильно помогли на школьных олимпиадах по программированию.
Хотя главный скил, который надо было отточить для олимпиад - это эвристический поиск в глубину с эффективными отсечениями. Я чуть ли не единственный выполнил на предолимпиадной подготовке все домашние задания и с тех пор пишу переборы за 20 минут максимум.

1994, спецкурс у Юрия Николаевича Иванова. Это Учитель с большой буквы. Жаль, мне об этом спецкурсе не сказали с самого начала. Помню обсуждение синтаксического анализа, LISP-а, больше ничего не помню.

1997, 2й курс
Братко, "Программирование на языке Пролог для искусственного интеллекта". (кстати, в 2005 вышло 2е издание)
На 4м курсе написал-таки интерпретатор Пролога. В нём не было: вывода для численных операций (вообще без численных операций), настраиваемого синтаксиса (вообще, потрясшая меня возможность), но зато работающий. Как лабу по искусственному интеллекту его у меня не приняли :) В основном потому, что обидел преподавательницу. Я как-то ляпнул, что "экспертная система" вида "набор правил "если-то" примитивна.

В Балансе посчастливилось прослушать курс лекций по технологии SSADM. Это перевернуло мои представления о разработке и заставило немеряно зауважать технологичность и критерии качества.
Там же раскрутили то ли три, то ли пять проектов по этой технологии. Понравилось.

Перед поступлением в ISD три недели штудировал, разумеется, Страуструпа, "Язык программирования C++", 3-е издание.
STL так до конца и не осилил. До сих пор не владею итерированием потоков и т.д.

Тогда же изучил UML по "Самоучителю UML". Книга неплохая, но немного поверхностная. А до UML Distilled Фаулера ещё не дошёл.

CORBA учил по статьям.corbarus, ... ISD-шники, кто подскажет ссылку на эту статью? Или даст текст?

2001, GoF, "Design patterns".
Прошёлся по Бентли, "Жемчужины творчества программистов".
2003, мне предложили перейти в проект на Java.
Эккель, "Thinking in Java". Знаменитый Эккель показался излишне поверхностным.
Ещё больше разочаровался в нём, прочтя его мнение о checked exceptions в Java. Как же так можно, checked exceptions - это же чудесный способ (частично) проверить отказоустойчивость системы в compile-time.
До сих пор испытываю острое чувство неполноценности из-за того, что не знаю J2EE.
Научился пользоваться юнит тестами.

Осень 2004, в ISD сотрудники подарили мне на ДР Фаулера, "Корпоративные информсистемы"
Примерно тогда же читал у товарища книгу по CORBA, забыл какую. Мощнейший стандарт, оказывается. Жаль, что не нашёл своей рыночной ниши, да и не был полностью реализован... Куда тому COM-у.

Весной по необходимости прочёл Дональна Бокса, Сущность технологии COM. Бокс - это хорошо. COM - это плохо. Если в твоём адресном пространстве нагадит чужой код... или даже нагадит в своём, и не отпустит твой объект... или вызовет не в том режиме... ой.
А ещё COM-классы принято писать на ATL. Млин, какая это дрянная бибилиотека. Пытался отлаживать её - куда там. После преобразования от темплейтного класса с множеством параметров к void* и обратно концов не найдёшь.

Лето 2005
Фаулер, "Рефакторинг" - отличная систематизация не только приёмов рефакторинга, но и проблем кода, приёмов работы, немножко накачки мозгов по правильному дизайну, и т.д. Теперь Фаулер ([livejournal.com profile] martinfowler) у меня во френдах ;))
Прочёл поздновато, стоило года на четыре раньше.
Шилдт, "C# дл начинающих" разочаровал. Очень, очень поверхностно, ничерта о мультитрединге. У него был в своё время хороший справочник по стандартной библиотеке C++ - так вот, это лучшее, что ему удалось.
Брукс, "Мифический человеко-месяц".

Декабрь 2005, Йордан, "Путь камикадзе". Очень, очень жизненно.

Сейчас всё ещё читаю Дага Ли, "Concurrent Java". Мегакнига, открывает глаза на многое.
Теперь прочесть бы к ней, как это делается на более низком уровне, какой-нибудь pthreads API для C.

pthreads

10/5/06 03:09 (UTC)
Posted by (Anonymous)
Victor Sergienko (singalen) wrote:

> Сейчас всё ещё читаю Дага Ли, "Concurrent Java". Мегакнига, открывает глаза на многое.
> Теперь прочесть бы к ней, как это делается на более низком уровне, какой-нибудь pthreads API для C.

Так-же само. fork/join, cancelation point-ы и всё такое. Ява для переносимости полностью опираеться на pthread-ы и ничего своего не привносит. Кстати в Win32 API многопоточное поприкольнее немного. Там уже есть signal object-ы которых можно ждать сразу толпу. Или атомарно акварить сразу толпу мутексов. Кстати Microsoft очень долго гордилось тем что у них многопоточноть поприкольнее, и выпустила в своё время кучу статей по этому поводу, и даже не стала у себя pthreads реализовывать, но в C# многопоточность сделана так-же как и в java, всё те-же fork/join и cancelation point.

И ещё кстати - на С++ стандартизации лежит документ который называеться "Why POSIX Threads Are Unsuitable for C++"
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1940.pdf

With respect,
Vladimir Frolov

---
Knowledge brings fear

Re: pthreads

10/5/06 04:58 (UTC)
Posted by (Anonymous)
> А как же команды синхронизации кэшей? Они есть в pthreads, или все ждут, что компилятор их вставит по слову volatile, или все полагаются на "авось"?

pthread - это библиотека, а библиотека тебе обеспечить такого не может. Так-что volatile на уровне компилятора и асмовая команда lock, как собственно и в Win32 Interlocked* функциях :)

> Может, нам расскажут, как в Java получать multiple lock.

Атомарно никак. Не имея возможности управлять шедулером.

> Хотя я такого не нашёл даже в 5. Такое впечатление, что Sun сознательно избегает multiple lock.

Естественно, что сознательно. Веть из NIX-ов на уровне операционки такого никто не поддерживает.

> Насчёт signal object - может быть, они эмулируются средствами Java?

Не возможно не имея возможности управлять шедулером.

Re: pthreads

10/5/06 05:03 (UTC)
Posted by (Anonymous)
> А как же команды синхронизации кэшей?

Мемори модел это уже отдельная история.
Тут одним API не обойтись.

Re: pthreads

10/5/06 05:11 (UTC)
Posted by (Anonymous)
>> Хотя я такого не нашёл даже в 5. Такое впечатление, что Sun сознательно избегает multiple lock.

> Естественно, что сознательно. Веть из NIX-ов на уровне операционки такого никто не поддерживает.

И их понять можно. Им ведь нужно быть супер-пупер переносимыми.

Re: pthreads

11/6/06 15:01 (UTC)
Posted by (Anonymous)
Лучше старика Саттера почитать. Он расскажет массу грустных историй. Ж)

March 2023

S M T W T F S
   1234
567891011
12131415161718
19202122232425
262728293031 

Page Summary

Page generated 3/2/26 22:34

Expand Cut Tags

No cut tags