gns_ua: (Default)
[personal profile] gns_ua
На тридцать первом году жизни и двадцатом программирования, со мной случилось это.

Глядя на собственный говнокод такого типа:

def getitems(workers):
    items = []
    for w in workers:
        items.extend(get_worker_items(w))
    return items


- я вдруг перестал понимать, зачем вся эта унылота и почему не сделать просто:

def getitems(workers):
    for w in workers:
        for i in get_worker_items(w):
            yield i


Ведь дальше-то этот лист большой опять кто-то будет сканить, опять формировать новый лист, опять кому-то отдавать. Так зачем? Пусть вся йилдят! Корутины! А в промежутках каждый, возможно, успеет ещё что-нибудь где-нибудь отметить, что тоже хорошо.

Это прорыв в сознании, я щетаю. Как говаривал Владимир Леви: - повелело освободить новый код от школярской линейной последовательности. И, далее там же: - я эту прямоходность «системы» неосознанно почитал за достоинство, с детства вбита. Пытался, с малым успехом, протащить сквозь весь код, протоптать магистраль.

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

2012-08-22 05:25 (UTC)
- Posted by [identity profile] tassadar-ha.livejournal.com
Так это другая крайность - Пайтон-вэй, получается. А первое вполне может быть наследием С/С++.

Кстати, а чего ты из программирования ушел?

2012-08-22 09:56 (UTC)
- Posted by [identity profile] gns-ua.livejournal.com
> Пайтон-вэй, получается

Дело-то не только в визуальном стиле - завтра это, скажем, абсолютно непринуждённо отдекорируется так, что продюсер и консумер будут параллельно работать на разных машинах и общаться через очередь. Не переписывая сам код вообще! А послезавтра появится второй консумер той же очереди. Я уж нареализовывался deep parallelization "вручную", хватит:)

> Кстати, а чего ты из программирования ушел?

Заскучал. Программил-то тогда на вижлфокспро Бизнес Аналитику. А тут, внезапно, - Линукс :)

2012-08-22 11:27 (UTC)
- Posted by [identity profile] tassadar-ha.livejournal.com
Да, палаллелизация для меня - темный лес, увы :-)

2012-08-22 11:41 (UTC)
- Posted by [identity profile] gns-ua.livejournal.com
Особая магия кооперативной многозадачности:

>>> def getlist(n):
...     print "GETLIST started"
...     for i in xrange(n):
...         print "GETLIST next"
...         yield i
...     print "GETLIST finished"

>>> def getdouble(list):
...     print "GETDOUBLE started"
...     for x in list:
...         print "GETDOUBLE next"
...         yield x*2
...     print "GETDOUBLE finished"

>>> l = getlist(3)

>>> for i in getdouble(l):
...     print "Got", i

GETDOUBLE started
GETLIST started
GETLIST next
GETDOUBLE next
Got 0
GETLIST next
GETDOUBLE next
Got 2
GETLIST next
GETDOUBLE next
Got 4
GETLIST finished
GETDOUBLE finished
Edited 2012-08-22 11:41 (UTC)

2012-08-22 11:43 (UTC)
- Posted by [identity profile] tassadar-ha.livejournal.com
Не, вот тут уже я не силен и почти ничего не понимаю, увы :-(

2012-08-22 11:48 (UTC)
- Posted by [identity profile] gns-ua.livejournal.com
Если всё это написать в стиле (1), то отработает одна функция, вернёт лист, вторая функция отитерирует его и вернёт лист умноженных на два, а потом фор проитерирует по нему и напечатает.

Ставим yield - получается генератор, ленивые вычисления, каждый элемент каждого списка считается только тогда когда его спрашивают. Можно первый лист даже бесконечным сделать. Поскольку они в цепочке - чудесным образом все трое работают по очереди :) Это просто :)
Edited 2012-08-22 11:48 (UTC)

2012-08-22 11:51 (UTC)
- Posted by [identity profile] tassadar-ha.livejournal.com
Теперь понятнее, да :-)

Надо бы что-то почитать/послушать на тему компиляторов, распределенных вычислений и прочего.

2012-08-22 11:53 (UTC)
- Posted by [identity profile] gns-ua.livejournal.com
Рекомендую http://www.dabeaz.com/coroutines/

Читается и осиливается, наверное, где-то примерно чуть легче SICP.

2012-08-22 11:58 (UTC)
- Posted by [identity profile] tassadar-ha.livejournal.com
К стыду своему, SICP не читал тоже. Давненько лежит в списке, но все руки не доходят - тут столько интересного по ИИ всякому :-)

Кстаде, ты не проходил курсов на Курсере/Юдасити? Они очень прикольные, я бы сказал. Вот, к примеру:

https://www.coursera.org/course/hetero

2012-08-22 12:02 (UTC)
- Posted by [identity profile] gns-ua.livejournal.com
SICP я не дочитал :)

На курсеру давно хочется но руки не доходят. Даже свой хадуповский курс профтыкал :(

2012-08-22 12:03 (UTC)
- Posted by [identity profile] tassadar-ha.livejournal.com
А там был хадуповский курс? Где?!

2012-08-22 12:04 (UTC)
- Posted by [identity profile] gns-ua.livejournal.com
Или это не там было... Кидали ссылку, в общем.

2012-08-22 12:05 (UTC)
- Posted by [identity profile] tassadar-ha.livejournal.com
Жаль, я бы послушал. Сейчас много с Биг Дата сталкиваюсь.

2012-08-22 15:28 (UTC)
- Posted by (Anonymous)
Закончил на курсере

Design and analysis of algorithms. Part I
Software engineering for SaaS

Сейчас делаю Algorithms. Part I и Macnine Learning. Много из того, что идет в части supervised learning, у нас шло в дисцплине "Численные методы и оптимизация" (в частности, та же интерполяция методом наименьших квадратов, покоординатные спуски и т.д.) Пока немного скучаю.

ex_webgrossmeister

2012-08-22 18:24 (UTC)
- Posted by [identity profile] tassadar-ha.livejournal.com
Из курсов Курсеры и Юдасити по вот этому я получил их сертификаты:

Programming a Robotic Car (Udacity CS373)
Building a Search Engine (Udacity CS101)
Web Application Engineering (Udacity CS253)
Machine Learning (Stanford Online Class)
Introduction to Databases (Stanford Online Class)
Model Thinking (Coursera Class)
Algorithms: Design and Analysis, Part 1 (Coursera Class)

Ну, и по паре курсов еще - не получил.

Да, численные методы - это все прикольно, конечно, но вот лично у меня после КПИшного курса не появилось понимания, куда это интерполяцию, экстраполяцию и прочие радости использовать в жизни. Где они работают, ну, кроме шаблонных примеров из советских учебников с осциллографами? Зато мы умели доказывать все те теоремы, которые лежат в их основе, да... Полезно.

После таких вот предметов и получается шаблонное "забудьте все, чему вас учили" на первом же месте работы.

Ценность этих курсов для меня в том, что они учат применять все эти модели на практике и показывают примеры современных и весьма крутых систем, в которых это все работает.

2012-08-22 18:27 (UTC)
- Posted by [identity profile] gns-ua.livejournal.com
> Да, численные методы - это все прикольно, конечно, но вот лично у меня после КПИшного курса не появилось понимания, куда это интерполяцию, экстраполяцию и прочие радости использовать в жизни. Где они работают, ну, кроме шаблонных примеров из советских учебников с осциллографами? Зато мы умели доказывать все те теоремы, которые лежат в их основе, да... Полезно.

capacity planning

Да, доказывать теоремы очень полезное и увлекательное занятие. Главное, хорошо оплачиваемое. Особенно если вместо того чтобы взять и сделать авто капасити планнинг можешь только написать по памяти пару доказательств связанных теорем :)

2012-08-22 18:33 (UTC)
- Posted by [identity profile] tassadar-ha.livejournal.com
На определенном этапе в мозгу происходит какое-то переключение, tipping point между доказыванием теорем и написанием Гутнико-ботов. По сути, и там и там мы используем одни и те же методы. Но пока человек не увидит 5-10-15 примеров того, как эти методы могут быть полезны в жизни и какие реальные проблемы могут решать, он просто не понимает, где и как это использовать. Все, чот ему остается, - доказывать теоремы.

Ну, и поскольку доказывать их он прекращает, как только выпускается из универа, и за пару лет полностью забывает, то цена такого образования в сухом остатке - 30-60 учебных часов. Это то, что мы помним из КПИшных курсов лет через 5 после окончания.

Так что эти курсы для меня стали настоящим спасением. Помимо того, что они реально прокачивают меня как аналитика, они дают какую-то надежду на то, что у меня таки получится сдать GRE Computer Science и поучиться в каком-нибудь этом их стэнфорде взаправду.

2012-08-22 18:40 (UTC)
- Posted by [identity profile] gns-ua.livejournal.com
Вот я с этим и столкнулись года четыре тому, когда появилась задача - и оказалось, что никто не знает с какой стороны вообще её решать. Ну, кроме как глазками пырясь в картинки. К щастью я когда-то на пальцах из общих смутных представлений делал подобное для розничной торговли :)))

А с этими курсами у меня трабла даже не в том что времени не хватает... Там ещё глаза разбегаются когда смотришь список ;)

2012-08-22 18:44 (UTC)
- Posted by [identity profile] tassadar-ha.livejournal.com
Благодаря этим курсам на новом месте работы мне удалось создать и вести группу по business intelligence. Это, типа, статистические и вероятностные методы для решения бизнес-задач. Думаю, ты в курсе. Капасити планнинг - это как раз из этой оперы :-) Веду людям тренинги, строим прототипы всякие. Развлекаемся, как можем, в общем :-)

Забавно то, что диплома КПИ у меня при этом все еще нет, даже бакалавра :-)

Конечно, любой stanford guy легко заткнет такого умника как я за пояс, но тут у нас это считается круто. Месяц назад даже получил джоб оффер от нашей единственной конторы, которая занимается искусственным интеллектом, на позицию тимлида. Комизм этого в том, что я никогда не работал программистом и у меня, повторюсь, нет технического диплома :-)

Вся это Украина - какой-то тотальный сюрреализм.

2012-08-23 00:33 (UTC)
- Posted by [identity profile] gns-ua.livejournal.com
Но согласись, субъективно-персонально в этом есть некоторые преимущества.

Конечно, не "только в этой стране недоучка придирчиво собеседует магистров и аспирантов" - но в Другой Стране мне понадобилось бы намного больше иметь raw brain power, чтоб по такой крутой кривой пройти. А зная своё распиздяйство и проч. в молодости, в годы оны, нормальная пологая кривая всё равно бы не получилась.

Бишь, скажем так - да, десять лет назад я сильно дохуя о себе думал, завышенная самооценка интроверта и всё такое, но только в Этой Стране это могло прокатить, только здесь я мог в итоге оказаться прав несмотря ни на что. В Другой Стране не уверен что, ну, потому что, я не Гейтс и не Джоббс, это скорее всего были бы десять лет уж совсем проёбаные, потому что опыт на реальных вещах приобретается, а к реальным вещам кто б меня подпустил :)

Другой вопрос, что, вскарабкавшись на более пологий уже участок, обнаруживаешь этот неловкий момент когда тебе надо сотрудников искать а вокруг полно кретинов :)
Edited 2012-08-23 00:35 (UTC)

2012-08-23 05:21 (UTC)
- Posted by [identity profile] tassadar-ha.livejournal.com
Все так, конечно, но есть нюансы: кривая менеджмента меня сейчас не интересует, потому как сваливать все равно надо специалистом, а для специалиста здесь предельно низкий потолок профессионального развития из-за того, что сложных и интересных задач в индустрии почти что нет. Все рутина одна.

Тут много можно говорить об аутсорсинге, синьйорах и все такое, но факт остается фактом: здесь твой ИИ, алгоритмы и прочая радость никому особо не нужны. Я бы, вот, с удовольствием поработал программером в каком-то Гугле, но видя, чем занимаются наши кодеры, - я рехнусь за полгода написания интернет-магазинов и бизнес-логики в компании украинских "синьйоров". У аналитика хоть простор для творчества чуть побольше.

Оно все взаимосвязано. Протухло все, к сожалению.

А что не Гейтс и не Джобс - так оно ведь не от хорошей жизни так. Я бы с огромным удовольствием поучился в каком-нибудь стэнфорде. Да и КПИ, вот, к зиме должен закончить, по идее. Курсы эти, вот, - на них честно тратится каждый день от часа времени, уже год.

Беда не в самомнении, а в тотальной бессмысленности КПИ. Ну реально же, не образование, а 4 года ритуалов во имя диплома.

Конечно, жаль, что я родился не в какой-нибудь Америке, и все оно пошло таким странным путем с этими образованиями и работами. Ну, может, еще повезет догнать тех, кто вырос и выучился там. Сейчас я от них лет на 5 отстаю, конечно.
Edited 2012-08-23 05:38 (UTC)

2012-08-22 18:37 (UTC)
- Posted by [identity profile] tassadar-ha.livejournal.com
Гы, "про вовка промовка", только что пришел еще один сертификат по Human Computer Interactions :-)

2012-08-22 19:10 (UTC)
- Posted by (Anonymous)
Поздравляю!

2012-08-23 08:09 (UTC)
- Posted by [identity profile] tassadar-ha.livejournal.com
Спасибо :-)

2012-08-22 19:09 (UTC)
- Posted by (Anonymous)
Ну, у меня в работе (НИИ трансформаторостроения) как раз ЧМО сплошь и рядом --- обработка результатов измерений, поиск минимума функций нескольких переменных и т.д. В одной из статей искал поиск оптимального решения системы уравнений от двух переменных, где эти переменные входили в пределы интегрирования, решил методом скорейшего покоординатного спуска. Поэтому в части supervised learning пока немного скучно.

Сам на курсере с июня.

ex-webgrossmeister

2012-08-23 00:36 (UTC)
- Posted by [identity profile] gns-ua.livejournal.com
Дружище, ты б зарегался как-нибудь.

2012-08-23 08:09 (UTC)
- Posted by [identity profile] tassadar-ha.livejournal.com
В ML курсе это все только начало. Дальше будут всякие методы опорных векторов с различными ядрами, нейронные сети, онлайн-обучение...

Будет интересно, не переключайтесь :-))

2012-08-22 19:16 (UTC)
- Posted by (Anonymous)
Вот, кстати, на Курсере принстонский курс по алгоритмам (Algorithms. Part I & Part II) гораздо более hands-on, чем стэнфордский (Design and Analysis of Algorithms).

ex-webgrossmeister

2012-08-23 08:08 (UTC)
- Posted by [identity profile] tassadar-ha.livejournal.com
Ага, как раз прохожу его :-)

2012-08-22 10:00 (UTC)
- Posted by [identity profile] ctype.livejournal.com
это кстати не пайтон-вей. я успешно єксплуатировал данный подход еще в interbase года 1996 выпуска ... потом правда наступил "облом" ибо всякие ораклы его не поддерживали (да, там можно было вернуть курсор из функции, но это уже не то)

2012-08-22 10:09 (UTC)
- Posted by [identity profile] gns-ua.livejournal.com
Ну да, современные языки все реализуют разные интересные штуки. В меру своей испорченности.

Profile

gns_ua: (Default)
gns_ua

April 2017

M T W T F S S
     12
3456789
10111213141516
17181920212223
24252627282930

Expand Cut Tags

No cut tags