yigal_s: (Default)
[personal profile] yigal_s
"Приобрел для ознакомления"

Art of Multiprocessor Programming. Herlihy etc. - Revised Edition (!!!)
Actors in Scala. Haller etc.
An introduction to Parallel Programming. Pacheco.
Structured Parallel Programming. McCool etc.
SOA in practice. Josuttis

То есть, книжками по мультитреду (который на хорошем уровне нахер никому не нужен) я уже укомплектован очень неслабо, читай - не хочу.

Кстати, вдруг появилось
- третье издание "Advanced programming in the UNIX environment", а также
- четвёртое (так и хочется сказать заключительное) издание Страуструпа. The С++ Programming Language.

Вообще, программирование сейчас ИМХО переживает взрывообразное развитие, связанное с

а) некоторой уже закритичной скоростью появления новых или входом в рынок старых но малоизвестных технологий (а не просто buzzwords), языков и подходов, новых платформ
б) переводом программиста в статус многознающего, но полутупого фабрично-конвеерного рабочего (все эти agile, scrums, TDD).

Меня не очень радует это сочетание. Хочется либо найти себе тихую гавань и там качественно, со вкусом и пользой, починять примус, либо как-то поймать волну с какой-то технологией, которая будет душе приятна и на которой опять же можно долго лететь вперёд, даже и напряженно учась и работая.

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

С другой стороны, конечно, лет 10-15 назад всё было примерно так же, но с тем отличием, что полки книжных магазинов не были завалены книгами по десяткам нетривиальных языков и технологий - в этом плане всё не так уж и плохо, на самом деле.

Date: 2013-06-08 03:02 pm (UTC)
From: [identity profile] mikkim08.livejournal.com
Не уверен в актуальности "Actors in Scala", Haller'а. Политика партии сейчас вроде в том, чтобы заменить оригинальные скальные акторы на Акку до полного слияния.

Насколько я понял, в Скале 2.10 теперь часть Акки перетащили в Скалу (а в Акке соответствуюшие APIs задепрекейтили), так что в результате надо пользоваться и теми, и другими, что не очень красиво выглядит.
Edited Date: 2013-06-08 03:11 pm (UTC)

Date: 2013-06-08 03:29 pm (UTC)
From: [identity profile] mikkim08.livejournal.com
К сожалению не смогу помочь. Я тоже в акторах не очень, и читаю в основном все в интернетах, потому что книжки устаревают как-то быстро.

Date: 2013-06-08 03:39 pm (UTC)
From: [identity profile] mikkim08.livejournal.com
Я про Аду с Эрлангом совсем ничего не знаю. Я только Скалу/Акку пытаюсь понять.

Date: 2013-06-08 03:04 pm (UTC)
From: [identity profile] ursego.livejournal.com
так и хочется сказать заключительное

:-))))))

Date: 2013-06-08 03:07 pm (UTC)
From: [identity profile] ursego.livejournal.com
Страус всё ещё не труп...

Date: 2013-06-08 03:42 pm (UTC)
From: [identity profile] ursego.livejournal.com
Вот что я не желаю долгих лет С++ -- это да.

Вообще непонятно как этот мамонт до сих пор не вымер. Но когда помрёт - благодарное человечество установит на его могиле два креста.

Date: 2013-06-08 04:03 pm (UTC)
From: [identity profile] beldmit.livejournal.com
C++ за 20 лет моих взглядов в ту сторону мутировал не до потери сходства, но близко к тому...

Date: 2013-06-08 03:38 pm (UTC)
From: [identity profile] mikkim08.livejournal.com
переводом программиста в статус многознающего, но полутупого фабрично-конвеерного рабочего

Тут есть некоторое противоречие :) Но ситуация действительно требует в определенном смысле копать вширь, а не вглубь. Так например лучше изучить какой-нибудь новый язык, чем продолжать изучать тонкости С++ (если Вы, конечно, не его компилятор пишете).

То же самое, наверное, и с мультитредингом. Лучше сделать новую фичу, чем вылизывать инфраструктуру с мультредингом. И даже если из-за непонимания мультрединга будет сбой, невелика беда. Аппликацию перезапустят, добавят еще один сервер в горячем резерве и т.д. А фича она народу нужнее.

Опять же не везде, наверное. Возможно, в embedded есть ниши, где это не так, но в прикладном программировании в целом вдаваться в тонкости, наверное, не надо.
Edited Date: 2013-06-08 03:43 pm (UTC)

Date: 2013-06-08 03:58 pm (UTC)
From: [identity profile] mikkim08.livejournal.com
Хотя персонально у меня душа лежит совсем к другому.

Да, но мне кажется, интересно понять, откуда берется эта тенденция, и каковы альтернативы.

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

Date: 2013-06-08 04:54 pm (UTC)
From: [identity profile] mikkim08.livejournal.com
процветающее (в силу непонятных до конца причин) место, где лично твои таланты и интересы будут эффективны и востребованы

Интересно, что это такое может быть.

Date: 2013-06-08 04:00 pm (UTC)
From: [identity profile] mikkim08.livejournal.com
тут нет противоречия, не нужно много ума, чтобы поверхностно познакомиться с кучей технологий. Но, разумеется, нужны определенные интеллектуальные качества - вроде интереса к новому, память, отсутствие инертности.

Ок. Выходит, значит, что эти качества ценятся выше чем ум сейчас.

Date: 2013-06-08 05:02 pm (UTC)
From: [identity profile] mikkim08.livejournal.com
Ну да. Если какой-нибудь хипстер поднял за день сайт на RoR, пока его коллеги ковырялись с более старыми технологиями, то он, конечно, эффективнее.

А, если со временем обнаружились, всякие проблемы с security, scalability и т.д., то это уже не его проблема (и даже не его менеджера) и неэффективным он от этого быть не перестает.
Edited Date: 2013-06-08 05:03 pm (UTC)

Date: 2013-06-09 01:25 am (UTC)
From: [identity profile] yatur.livejournal.com
У меня есть два возражение.

1. Agile не означает полного отсутствия архитектуры и стратегического видения. Смысл agile в том, чтобы не уходить на полгода в программистский "запой", а держать цели под контролем.

2. К сожалению, рынок зачастую диктует условия, которые противны нашему инженерно-программистскому духу. Скажем, ты можешь за месяц сделать веб-сайт, который потянет 10 пользователей, решительно наплевав на scalability или за три месяца сделать веб-сайт, который потянет 100,000 пользователей. С инженерной точки зрения второй вариант однозначно предпочтительней. С рыночной же, второй вариант может оказаться вообще не жизненным - инвесторы не согласятся ждать 3 месяца и у тебя просто не будет денег, чтобы написать свой замечательный scalable веб-сайт.

Date: 2013-06-09 01:49 am (UTC)
From: [identity profile] yatur.livejournal.com
> давайте возмьём tdd - он требует писать РОВНО то, что позволяет тесту пройти успешно

Я не очень люблю TDD. Он хорош только в режиме, когда все абсолютно ясно. Скажем, когда мы пишем что-то чисто алгоритмическое. Если же мы пишем код, который "дергает" чужие модули с заранее до конца неизвестным поведением, TDD либо невозможен, либо сильно замедляет процесс. В такой ситуации я обычно пишу тесты после основного кода, или даже не пишу вообще.

Что же касается ЗАКЛАДОК будущей архитектуры, которые "сработают" через полгода - я к ним отношусь довольно скептически. Зачастую они только усложняют проект, а ситуация, ради которой их писали, так никогда и не возникает. Т.е., конечно, надо стараться писать модульно и все такое, но закладками лучше не увлекаться, ИМХО.

> Но кто сказал, что все проекты надо писать в режиме "завтра потоп"?

Ну зачем же потоп. Каждый случай индивидуален.

Date: 2013-06-09 02:17 am (UTC)
From: [identity profile] yatur.livejournal.com
> Апологет TDD вам немедленно объяснит

Ну, с верующими вообще лучше в дискуссии об их вере не вступать.

> Кстати, теперь об Agile -- разве TDD - это не одна из его ключевых технологий???

Нет. Одна из ключевых идей agile - это "embrace change". Что приводит к рефакторингу. Что приводит к тестам. Как к средству, а не как к цели. Но тесты совершенно не обязательно должны становится поперед телеги и "драйвать". Главное, чтобы мы могли менять программу с достаточной долей уверенности, что ничего не сломали.

> Человек может заранее знать что в его системе должно быть

Может. Но из эопыта - чаще это всякая умозрительная лабуда в стиле "а вдруг у нас в машине будет два руля".

Date: 2013-06-09 03:05 am (UTC)
From: [identity profile] yatur.livejournal.com
Agile - это что-то вроде английского языка. Вроде бы и модно, и многие говорят по-английски, но одни пишут check, а другие cheque, и ямаец шотландца понимает с трудом.

Некоторые же полагают, что для того, чтобы начать писать по-английски надо просто взять русский текст, перевести каждое слово по словарю, и готово.
Edited Date: 2013-06-09 03:33 am (UTC)

Date: 2013-06-08 06:53 pm (UTC)
From: [identity profile] cema.livejournal.com
Про Скалу стоит спросить у [livejournal.com profile] ivan_gandhi.

Date: 2013-06-09 12:18 am (UTC)
From: [identity profile] yatur.livejournal.com
> программирование сейчас ИМХО переживает взрывообразное развитие

Есть быстрое развитие, но взрывообразным я бы его не назвал.

Нулевой взрыв был вызван появлением собственно, компьютеров, первый - появлением языков высокого уровня (Лисп, Фортран), второй - появлением юниксообразных OS, третий - появлением PC, четвертый - появлением Интернета.

ИМХО, главное событие последних нескольких лет - это появление мобильных платформ (телефоны, планшеты) и окончание зимней спячки в мире браузеров, где присновечный IE6 был, наконец-то, существенно потеснён более современными собратьями. Но по сравнению с появлением Интернета это так, небольшой хлопок. ИМХО, конечно.

> а) некоторой уже закритичной скоростью появления новых технологий

ИМХО, дело не столько в скорости появления новых технологий, сколько в скорости отмирания старых. Это вызывает нездоровый, многолетний разрыв между тем, что реально имеет место в коммерческом программировании и тем, что толкают производители софта. Я об этом писал еще в 2009-м году: http://www.ikriv.com/blog/?p=158

ИМХО, нынешнее состояние рынка чем-то напоминает конец 70-х, когда каждый уважающий себя программист писал свой язык. Сегодня каждый уважающий себя программист пишет HTML templating engine и какую-нибудь приблуду для программирования мобильнков :)

> б) переводом программиста в статус многознающего, но полутупого фабрично-конвеерного рабочего

С конца 70-х до примерно середины 90-х народ искал Правильную Методологию, которая позволит либо
а) писать программы без ошибок, либо, еще лучше
б) вообще избавиться от программистов и рисовать программы квадратиками и стрелочеками на экране.

Так что, все могло закончиться горазо хуже. К счастью, ничего подобного достигнуто не было, вот мы и имеем scrum и agile. Ну и аутсоурсинг, конечно :) Если от программистов не получается избавиться, их можно хотя бы отправить в Индию. Agile это, кстати, не так уж плохо, если его правильно готовить. Другое дело, что многие только делают вид, что они занимаются agile, а на деле у них как был waterfall, так и остался.

Я, кстати, наблюдаю специализацию. 40 лет назад хороший программист был универсалом. Сегодня же одни люди пишут embedded, другие - веб-сайты, третьи - игрушки. Перейти из одной области в другую становится все сложнее и сложнее.

Но другой стороны, проблема глубина vs. ширина остается. Гавань - это какие-нибудь драйвера или embedded системы. Эти вещи куда более стабильны, чем "передний край". Но там скучно. Поймать волну можно с "новой Джавой" - но пока ее нет, пока индустрия находится в состоянии веселого бардака. Но так уж ли это плохо? ИМХО, куда лучше, чем вечный IE6 и Visual Basic :)