Обновить
104
0
Игорь Зимаев@TimeCoder

researcher, software developer

Отправить сообщение
Такой «переборный» метод организации пространства-времени не был бы столь эффективный, мы бы видели множество неудачных, наполовину готовых планет, живых организмов и пр. Я твердо уверен в том, что эволюция на всех уровнях — основной закон природы. Конечно, эта концепция выходит за рамки науки, она не верифицируема, и относится скорее к натурфилософии, т.е. это подход к пониманию мироустройства, увы, слаюо распространненный в современном естествознании (не смотря на развитие эволюционных теорий в биологии, космологии, работ по синергетике и пр.).
Тогда я окончательно запутался. Вселенная становится сложнее и организованнее со временем? Если это сопровождается ростом энтропии, тогда она является чем-то противоположным мере беспорядка.
1. Думаю, что изолированных систем в природе вообще нет, речь об относительной изолированности. В трудах Н.А. Козырева упоминались галактики, расстояния между которыми столь огромны, что их слабым взаимодействием в данном вопросе можно пренебречь. Второе начало термодинамики применимо только к абсолютно замкнутой системе? Если таковых в реальности не существует, значит это правило в природе не работает? Если допускается некоторая открытость — какова мера? Какую систему можно считать достаточно замкнутой?

2. Вселенная — изолированная система? Если честно, мне не нравятся трюки с термодинамической трактовкой энтропии. По бумаге, энтропия падает, но никакая формальная модель меня не убедит в том, что текущее состояние Вселенной — более хаотичное, чем кипящий океан энергии после большого взрыва. Структура материи в пространстве и динамика процессов во времени невероятно сложная, живые организмы поражают уровнем организации. Процессы, которые протекают в организме человека несопоставимо сложнее, чем процессы на этапе зарождения звездных систем (сравните термоядерный синтез и процесс репликации ДНК). Мир становится все более сложным и высокоорганизованным, и вовсе не думает кануть в пучине тепловой смерти. Что не так с энтропией?

На тему энтропии меня давно мучает один вопрос, буду признателен за мысли. Что насчет изменения энтропии Вселенной (да, я читал Хокинга)? А лучше, ее относительно малой части: солнечной системы. Если посмотреть тенденцию: было просто газопылевое облако, появилась звезда, образовались тяжелые элементы и планеты, вода, простые организмы, сложные организмы, разумный человек, цивилизация.

Как Вы считатете, каждый следующий шаг «ожидаем»?
Если да, то в основу реальности вшит механизм обеспечения ее эволюции на всех уровнях (не только биологическом), если нет — значит энтропия мира падает (за счет чего?).
Про несколько высокооплачиваемых футболистов, искажающих статистику- неужели вы используете среднее арифметическое? почему не медиану?
Возможно ли при помощи Roslyn сделать анализ (возьмем для примера задачу подсчетам синтаксиса) не только для c#? для своего кастомного ЯП
Сравню с книгой: новая глава начинается с нового листа (Питон), но иногда в начале еще рисуется три звездочки, что подчеркивает начало нового раздела (C#).
Позволю себе возразить. Фигурные скобки в С (С++/Java/C#) — это не только элемент для обозначения блоков кода, но еще и естестественный способ слегка разрядить код. От одного хорошего программиста, много лет назад, перенял я такую привычку: не экономить пробелы. В однородном потоке кода те строки, которые образуют некую логически цельную группу я пишу без пробелов, потом пробел, и следующая группа — получается набор "шагов". Между методами — два пробела. После if, while, for, foreach — за счет скобки получается пробельная строка, это естественным образом облегчает код. И еще момент: видя закрывающую скобку в длинном файле кода, я могу подвести к ней указатель мыши и мне высветится код начала этой строки, т.е. будет видно, какой из циклов или if-ов здесь закрывается.
Может слегка не в тему вопрос, каково место UWP в современном мире? В мире enterprise (где .net преимущественно и используется) я вижу только WPF (+prism и пр.) и ASP.net, WinStore — даже не знаю, заходит ли туда реально кто-то (и уж тем более покупает), так где же эти UWP? Например, когда я на Windows 8 ставил плейер VLC, то сначала по недоумию поставил именно сторовский — это ад. Сама система окон сторовских приложений, что окно нельзя свернуть до нужного размера — я просто не понимаю, как это работает. Выкинул, как и skype, поставил нормальные классические Skype и VCL. Поймите меня правильно: как .net-разработчик я был бы только рад распространению C# в разные сферы, но пока что-то не вижу ничего кроме описанного.
даже в богомерзком .NET

Зачем делать вбросы, тем более в корпоративном блоге? Откуда этот tech-нацизм? Так сложно просто сослаться на технологию, с которой у Вас не сложилось?
(p.s. для справки, 5 лет разрабатывал на С++, 5 лет на C#, понимаю их достоинства и недостатки, и камней в огород этих зрелых и мощных экосистем кидать не собираюсь)
Я просто хотел донести мысль, что программисты склонны увлекаться технической и алгоритмической сложностью, порою настолько, что польза их работы для человечества ставится ниже собственного фана. Алгоритмы — это высокоуровневые абстракции, погружаясь в которые человек может далеко уйти от реального мира. В итоге, копаться в сотне алгоритмов становится интереснее, чем решить задачу (используя библиотеки), которая может спасти жизни, продвинуть науку, сделать жизнь людей чуточку лучше.
А если бы эта работа над медицинским проектом означала бы спасение миллионов жизней? Тогда как?
Просто пример "бизнеса" был получен неудачный. А представьте, что Вы работали в команде разработки софта для нового космического аппарата многоразового использования. Не прям ядро, а UI для операторов например. И многочисленные бизнес-кейсы в этом случае — все из предметной области космонавтики. При этом в силу ограничений, можно использовать только узкий набор технологий (например, С++ и STL), и вместо фокуса на алгоритмах идет погружение в предметную область, контекст задачи. Было бы скучно?
Решение о том, какой фреймворк или ORM использовать, писать ли сейчас подробные юнит-тесты или потратить время на рефакторинг, какой подход выбрать для разруливания конкурентного редактирования одной записи, каким из множества способов хранить в базе мультиязычные данные, и миллион других подобных вопросов — решает не owner, а технический специалист, т.е. Вы.
А пример асимметричный) В первом случае перекос в бизнес, во-втором — все хорошо. Я бы вместо него привел другой (реальный) пример, когда программисты фанатели от новых крутых технологий, брали модные фреймворки (потому что интересно!) вместо того, что подходит для задачи. Технический челлендж — огромный, красивые слайды, все очень высокотехнологичное. Только не работает, не вытянули производительность. В итоге проект просто не смог выйти на продакшен, его закрыли, их уволили, время потрачено.
По вопросу примера, добавлю, что за 10 лет разработки лишь однажды мне пришлось делать свою реализацию стандартных алгоритмов. Это был модуль искусственного интеллекта для игры 3D Инструктор: вождение по Москве (ныне City Car Driving). Все дороги Москвы — это граф, перекрестки — вершины, и для расчета кратчайшего маршрута нужен был алгоритм Дейкстры. Прикрутить стандартный в теории можно было (тот же BGL), но там какие-то нюансы были в структуре данных наших и пара небольших дополнений к алгоритму, в итоге оказалось проще и быстрее сделать свою реализацию (благо, алгоритм простой). А, еще A* там был. Ну а для руления преследующей машины на короткой дистанции (вроде это называется стиринг, много лет уже прошло..) ничего готового не подошло. Вообще, игровые движки того времени (не знаю, как сейчас) очень любили свои реализации ВСЕГО, даже базовые контейнеры типа вектора. Я это к чему: игровой проект был насыщен математикой, физикой и вычислениями. Приходилось и с тензорами инерции работать, матрицы, кватернионы и углый эйлера — так это постоянно, много формул из механики и пр. Но никогда при этом мне не пригодилось знание более чем одного алгоритма сортировки, знание 20 видов структур данных.
Про мозг — вопрос сложный. Насколько помню видеолекции Анохина, все воспоминания остаются навсегда, теряется доступ к ним. И не факт, что это равносильно: не имея возможности вспомнить алгоритм, мы имеем определенный фундамент из всех изученных ранее алгоритмов. Может они натренировали мозг (т.е. дело не в памяти, а параметрах работы мозга), может "забытые" куски все-таки участвуют в решении задач, но польза от изученного ранее, я уверен, есть.

Про разделение аудитории — честно, не вижу смысла. И без опросов понятно, что всегда найдутся особы люди (о чем бы ни шла речь), которые постоянно используют в работе то, что иные лишь ненадолго впустили в свою память. Разработчики библиотек по-полной варятся во всех алгоритмах — это скорее исключения, далекие от общей картины (а ведь речь о ней). Упомянутые в заголовке статьи "современные разработчики" — это огромная толпа людей, использующих те самые библиотеки, и им алгоритмы на практике нужны довольно редко. Зачем знать 10 алгоритмов сортировки, когда можно вызвать стандартный std::sort? В ответ люди почему-то начинают приводить исключения, какие-то редкие кейсы, когда человеку почему-то понадобится написать свой велосипед. И вот это поражает, совершенно иррациональный подход в рациональной сфере.

Редкое происходит редко, частое — часто, большую часть усилий нужно отдать на то, что даст большую часть результата. Алгоритмы — гимнастика мозга, но к реальной разработке они все меньше относятся. Поэтому, неприятно на собеседованиях видеть, когда интервьюер (чаще, молодые ребята) просто светится от гордости, что он знает на память пять видов сбалансированных деревьев и до деталей алгоритм удаления из них (особенно Яндекс промышляет почитанием Скиены).

Зачем?
Знания ради знаний? Вклад этих знаний в результат (для большинства кейсов, повторюсь!) — минимален. Если для человека программирование — это удовольствие само по себе, человек наливается эндорфинами от решения сложных задач, желательно в неком сэндбоксе, оторванной от живых пользователей задачи — тогда да, 100+1 способов отсортировать массив способен доставить удовольствие. Если программирование для вас — не только приятная и увлекательная деятельность, но инструмент улучшения мира, способ дать людям нечто новое, то надо это просто сделать, быстро и качественно, используя насколько можно готовые библиотеки! Здесь важнее понимание архитектурных принципов, цикла разработки, построения удобного UI и пр. Это способность решить реальную задачу реального мира за ограниченное время, в процессе чего вероятность реализации давно известного алгоритма стремится к минимуму. Или же результаты опроса говорят об обратном?
У меня вопрос: что означает "знать алгоритм"?
В универе я знал (мог реализовать по памяти) 90% алгоритмов сортировок, сейчас помню от силы штук 5, т.к. на практике не приходилось их велосипедить. Нужно обязательно их помнить, забивать ими память? Или же в маловероятной ситуации, когда алгоритм мне понадобится (разве что, собеседование в Яндекс), можно просто взять и прочитать в инете? А если бы я не знал его 10 лет назад — то прочитав сейчас, не смог бы понять? Или на понимание ушло бы на пару минут больше?

Еще момент: вопрос "Приходилось ли вам по работе (оправданно!) реализовывать какой-либо из стандартных алгоритмов..." с вариантами ответа Да / Нет — это определение средней температуры по больнице. Один раз реализовать тривиальный двоичный поиск, или постоянно велосипедить алгоритмы — это все попадает под "Да". Мне не хватило третьего варианта: "Да, но крайне редко".

На мой взгляд, алгоритмы (кроме совсем базовых) помнить не нужно, это справочная информация, их стоит изучить для развития алгоритмического мышления, осознание алгоритма создаст в мозге несколько нейронных связей, которые останутся в нем навсегда, и будут давать свои дивиденты во многих логических задачах, которые человек будет решать потом. Мы пока не умеем учиться по-другому, приходиться прокачать через мозг огромный массив знаний (сколько дат вы помните из истории, изучаемой в школе? А цифр по географии?). Остается лишь малая часть, но так формируется база, образованность человека. С алгоритмами также.
Не понимаю, почему нельзя просто взять и замержить обратно хабр, гиктаймз и мегамозг? Станет еще хуже?
Хорошие советы. Но все-таки для меня удивительно, что 99% статей на данную тему — это просто список разрозненных рекомендаций. Мол, попробуйте вот это, а еще вот от этого может полегчать, и кстати, вот это тоже будет не лишним… Нет главного: раскрытие причины и механизма, почему человек, нередко обладая хорошим образованием, профессиональным опытом, определенными талантами и способностями — при этом испытывает глубокую неудовлетворенность своею жизнью? Без понимания причины можно так долго блуждать. Простой тест: после прочтения статьи вы сможете назвать все пункты? Если нет, значит ее содержимое не сложилось в голове в единую картину.

На мой взгляд, здесь нужно понять одну простую вещь: у каждого человека есть предназначение. Нет, речь не об астрологии и судьбе, предназначение — это такая направленность в жизни и ее стиль, который наиболее полно соответствует человеку. Парадокс в том, что большинство людей не знает себя, если так можно выразиться (думаю, это не новость). С рождения мы попадаем под прессинг чужих мнений, очень мощных социальных шаблонов «как надо жить», система образования не способствует раскрытию индивидуальности, скорее наоборот. Потом нередко родители отправляют ребенка в ВУЗ по своему разумению (престижная профессия и пр.). У меня много знакомых, которые не понимают, зачем они 5 лет учились на программистов, а в итоге занимаются торговлей. После ВУЗа человека через СМИ, интернет и пр. продолжают деформировать: возьмите кредит на красивую безделушку и пр. Если в этот момент вспомнить свои детские мечты, и сравнить куда человек ушел — нередко, это впечатляет. Понятно, что детские мечты нельзя трактовать буквально, не всем же быть космонавтами, тут важно общее ощущение мира. Если вы в детстве мечтали стать создателем космических ракет, потом постоянно играли с конструктором, проявляя свою врожденную тягу к инженерному творчеству, но стали менеджером продаж в банке — и кто тут виноват? Бессмысленно идти против своей природы. Это как Моцарт, в раннем детстве давал концерты, музыкант от рождения — и пошел бы в астрономы. Зарывать талант в землю, просто у Моцарта талант был очевиден сразу, у большинства людей это не так явно, но принцип тот же.
Особенно это актуально теперь, когда человек уже не должен с утра до вечера работать на поле ради еды, есть широкий выбор основного и дополнительного образования, все накопленные человечеством знания в открытом доступе.

Итак, первая составляющая: понять, кто я. Естественно, этот процесс вечен, человек постоянно будет углублять и расширять понимание себя, что вам интересно? О чем мечтали раньше? Если бы вам дали миллион долларов — продолжили бы делать то, что делаете, или занялись бы чем-то имным — тогда чем? Если бы вы знали, что этот год в вашей жизни — последний, как бы его распланировали? Такие нехитрые вопросы, серьезные размышления о которых способны вскрыть неожиданные понимания себя. Например, вы уже десять лет мечтаете написать книгу, только постоянно вытясняете это желание. Или, оказывается, ваша стихия — танцы, но вот дойти до курсов постоянно что-то мешает. Ну и так далее. Понимание своей жизненной цели («ради чего я делаю все то, что делаю?») — это вертикаль развития человека.
Очевидно, что большая жизненная цель человека связана с воплощением чего-то, это не сколько «получить», сколько «отдать, сделать», хотя бы на капельку улучшить мир. Сделать нечто такое, после чего, как в известной фразе, не будет мучительно больно за бесцельно прожитые годы. Не хочу сейча вдаваться в дискуссию, почему такой целью не может быть получение богатства, власти, или каких-то особых знаний и умений. Это не принесет удовлетворения в конечном итоге, и может лишь служить инструментом для воплощения какого-либо проекта.

Вторая составляющая — горизонталь, или связи человека с оружающим миром. Очевидно, что воплотить масштабный проект жизни человек в одиночку не сможет, по крайней мере в наше время. Чем больше у вас будет единомышленников, коллег и друзей, чем больше людей узнают о вашей деятельности — тем больше сил и возможностей вам это даст. Изоляция и отчужденность никому не приносили счастья. Признание ваших трудов другими — объективный критерий значимости того, что вы делаете, и залог чувства реализованности.

Вот и вся наука.
1. Соскоблить со своей мечты все внедренные установки, догмы, превратить ее в цель, руководство к действию, жизненный стимул.
2. Развить эту идею в проект, со сроками и задачами.
3. Рассказать об этом людям.
4. Вместе с единомышленниками воплощать, т.е. делать именно то, что вам нравится делать более всего на свете.

При идеальном раскладе, это же будет вашей основной работой, источником дохода. При среднем раскладе, работа очень близка к вашему «горению», и помогает не только деньгами, но и нужными навыками (например, стремитесь к созданию центра здоровья, а работаете медиком, или программистом — делаете сами сайт, мобильное приложение для спорта и пр.). При наихудшем раскладе, работа и ваш проект — вообще из разных опер, и тогда можно ее расмотреть как необходимую и временную ступень, но уже будет намного легче, ибо «я вытерплю любое что, если знаю зачем». Успехов нам!

Удивило то, что основной язык разработки Perl — исторически сложилось? Каковы перспективы .net-разработчика в booking.com?

Информация

В рейтинге
Не участвует
Откуда
Сербия
Зарегистрирован
Активность