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

«Я бесполезный дурак и хочу уволиться» — 10 вопросов программисту, пилотный выпуск

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

Привет, Хабр!

Помните историю про Стива Джобса и Денниса Ритчи? Не хотим снова устраивать споры и читать морали, но правда остается правдой — тысячи крутых технарей сидят в тени, а их истории запрятаны в чулан.

Мы в редакции Хабра намерены это исправлять. Отныне будем регулярно брать интервью у людей, про которых не пишут в СМИ и за которыми не гоняются в соцсетях. Так что если вам есть что о себе рассказать — готовьтесь.

Чтобы вы поняли, как оно будет выглядеть, начнем со своего примера. Под катом 10 общих вопросов, которые мы будем задавать всем. Для пилота на них ответил fillpackart. (В этом месяце я брал вместе с ним несколько, кажется, неплохих интервью: раз, два, три). Почитайте, и если хотите рассказать о себе таким же образом, пишите сообщения мне или baragol.

Филипп Ранжин, сын инженера из Иванова. Начал писать на С++ в 16 лет в университете, затем изучил .net. Сейчас Senior software development engineer в неплохой зарубежной конторе. Помимо распространенных языков пишет на F# и OCaml.

1. Расскажи о фиче, которую ты реализовал и которой гордишься

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

2. А теперь — про самый лютый факап

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

Ну думаю, «не может же быть бага, который я не исправлю за два дня!». На митинге сказал, что работал над ним, и через два дня будет PR. В итоге я работал над ним три месяца. Баг был связан с взаимодействием двух огромных систем. Он воспроизводился постоянно.

Я реально три месяца строил различные гипотезы и проверял их, снова и снова ошибаясь — даже забросил стройку дома в скайриме. Это были худшие три месяца в моей жизни. В итоге я закрыл его как «No repro».

Пришёл к директору, сказал: «я — бесполезный дурак, и хочу уволиться, чтобы не мучить вас». Но в ответ мне сильно подняли з/п.

3. Опиши свое рабочее пространство: от кресла и монитора до сред программирования и любимых утилит

— Я работаю с использованием операционных систем семейства Windows, потому что у меня .net стек и потому что у Windows лучший UI. Сижу за столом, который сам себе сделал. Он огромный, влезет человек пять.

У меня не самый плохой девбокс, но с одним значимым минусом — я попытался сэкономить и купил проц от амд. Это был страшный провал. Не смотря на высокую заявленную мощность, этот кусок говна прогоняет мои тесты в 5!!! раз медленнее, чем его интеловский аналог.

Сейчас у меня только один монитор. Планирую прикупить ещё парочку, чтобы не позориться. Моя любимая IDE — Visual Studio 2017 в связке с Resharper. Любимый текстовый редактор — Visual Studio Code в связке с миллиардом расширений.

Скачивать их и наблюдать, как VSCode эволюционирует — одно из моих хобби. Я люблю git, но Visual Studio Team Services, пожалуй, нравится мне больше, чем GitHub.

4. По какому принципу ты выбираешь работу? Стек, продукт, бытовые условия, деньги?

— На текущий момент ключевые факторы для меня — оплата и возможность работать на треть своих способностей. Мне кажется, я выгорел и больше не готов работать на бизнес идейно. Даже страх быть уволенным и лишиться привычного образа жизни не может заставить меня глубоко погружаться в проект. А я отец полутора детей — страх очень серьезный.

Но однотипность и бессмысленность всего, что я делал, сейчас причиняет мне почти физическую боль. Мне иногда кажется, что с таким подходом у меня нет морального права искать себе работу. Я оправдываю себя тем, что по отношению к системе нельзя быть моральным или аморальным.

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

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

Не знаю, как это можно совмещать, но я обожаю разрабатывать и ненавижу работать разработчиком. Я пытаюсь успокоить себя тем, что просто мне ещё не попался интересный проект, но в то же время сам в это не верю. С этим действительно тяжело жить.

5. Что в технологиях и языках, которые ты используешь, ты бы хотел исправить?

— Я бы хотел:

  • Вывод типов и компайл-тайм иммутабельность для typescript и C#. Тогда я бы мог создать метод, который принимает что-то гарантированно иммутабельное, а не как сейчас — ReadonlyDictionary, которая на самом деле не ридонли (передал обычную дикшнари в ее конструктор, оставил на неё ссылку и спокойно мутируешь).
  • Чтобы разработчики C# послали, наконец, к чертям собачьим обратную совместимость, дурацкие using-и, которые работают только внутри одного файла и сделали ЯП более современным. Серьёзно, в языке, для которого весьма нередок код в стиле IDictionnary Foo(Func reallyStrangeCallback не сделать норм алиасы типов — это оооочень странное решение.
  • Автоматические backing fields в C#, какой-нибудь сахар над Func.
  • Контракты для C# из коробки (например в Roslyn) вместо сторонних решений, которые превращают мою IDE в тормозящее нечто.
  • Аналог jsx для языка F#. Если никто из вас не сделает его в ближайшую неделю, так и быть — займусь.
  • Чтобы сообщество пришло к пониманию, что юнит-тесты — бесполезный мусор, а языки с динамической типизацией (не путать со слабой) — самый крупный провал в истории индустрии.
  • Чтобы архитектура процессоров была больше рассчитана на функциональный подход.
  • Оптимизация хвостовой рекурсии в JS/TS, чтобы я мог фигачить свои tail-рекурсии повсюду, не упираясь спиной в размер стека. В спецификации она есть, но парни, которые пилят v8, просто решили, что не так уж и важно следовать спеке языка, когда разрабатываешь для него рантайм.
  • Опциональная возможность статической типизации в JS из коробки, но не в противовес typescript. Я, в отличие от создателей тайпскрипта, считаю его самостоятельным ЯПом с очень современным и мощным мультипарадигменным дизайном.
  • Чтобы штуки вроде Web-assembly прочно заняли своё место в практиках и стандартах фронтенд-разработки.
  • Значимого усовершенствования web-клиентов «Гитхаба» и ему подобных. В идеале возможность комфортно работать с кодом серьёзного проекта в браузере.
  • Больше конвенций по совместимости. Насколько бы всё было бы проще, если бы jvm умела интерпретировать и jit-ить дотнетный cil.

6. Где лучше перенимать чужой опыт — в вузе, на конфах, на Хабре? Еще где-то?

— Я учился в вузе, но меня отчисляли несколько раз. Бывал на конфах, постоянно читаю Хабр. Мне не кажется, что я почерпнул хоть что-то полезное от этих источников. Ну или мне приятно так думать. Мой поинт — читать книги и заводить себе друзей-разработчиков. Думаю, наибольшее влияние именно на мой скилл оказало общение с умными людьми, которые занимаются разработкой.

7. Будь у тебя неограниченные ресурсы (время, деньги, мощности, люди), каким проектом ты бы занялся?

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

8. Как ты отдыхаешь? Что делаешь кроме работы?

— Я гуляю по лесу и думаю, иногда с пивом, поигрываю на гитаре и временами в видеоигры. Я бы сказал, что моё хобби — думать и мечтать. У меня несколько своих проектов с друзьями.

Люблю специально делать им пассивно-агрессивные код-ревью («не мог бы ты предложить мотивацию для использования столь непродуманного решения?») и наблюдать, как это меняет наши взаимоотношения.

Иногда занимаюсь всякой гуманитарной хренью вроде интервью. Постоянно начинаю писать книги, хотя ни одной еще не дописал.

9. Расскажи про 3 любимые книги — учебную, научно-популярную и художественную

Учебная — «CLR via C#» Джеффри Рихтера. Столько знаний про то, как устроен дотнетный рантайм в одном труде — настоящая находка. Если заучить эту книгу, пройдёшь любой собес на дотнетера. Ещё бы отметил «Функциональные структуры данных» Криса Окасаки.

Не очень полезная с практической точки зрения, но мне она вернула веру в программирование — реализация структур данных вызывает у меня метафизический трепет.

Научпоп — не знаю, можно ли считать таковой «Code Complete», но мне очень нравится перечитывать ее.

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

Художественная — «Американская трагедия» Драйзера. Никогда бы не подумал, что такое прагматичное цифровое чудовище, как я, способно сопереживать брошенной, а потом ещё и убитой девушке. Но я сопереживал, и меня это очень сильно задело.

10. Если прямо у тебя на глазах в ИИ проснется сознание, что ты ему скажешь?

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

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

Бонус: задай любой вопрос другому разрабу

— Изучение какой технологии вызвало у тебя наибольшее удовольствие в процессе?

  • 10 вопросов программисту
  • .net

Источник: https://habr.com/ru/post/420321/

Книга (бытия?). Размышления о природе разума. Часть I

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

• Что такое разум, сознание. • Чем отличается познание от осознания? • Сознание, самосознание — одно и то же? • Мысль — что такое мысль? • Творчество, воображение — что-то загадочное, присущее человеку, или… • Как устроен разум.

• Мотивация, целеполагание — зачем вообще что-то делать.

Искусственный интеллект — Святой Грааль любого человека, связавшего свою жизнь с ИТ. Венец развития любой автоматизации, программирования, конструирования механизмов — вершина всего. Однако, до сих пор вопрос «Что же такое сознание, интеллект?» остается открытым. Я не понимаю, как огромное количество людей может заниматься предметом, для которого не существует определения, но я действительно не нашел такой концепции, которая удовлетворила бы меня. И мне пришлось придумать ее самому.

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

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

Вторая часть.

Основная теория

Я не буду ходить вокруг да около, и давать длинных лирических отступлений вида «как я пришел к этому» (хотя, возможно и стоило бы). Я начну сразу с главного: формулировки.

Вот она:

Разум — это способность существа строить полную, адекватную и непротиворечивую модель реальности. Конечно в чистом виде такое определение дает больше вопросов, чем ответов: как строить, где, что, собственно, значит «полную» и «непротиворечивую»? Да и сама “реальность, данная нам в ощущении“(с) Ленин — предмет множества философских диспутов. Однако начало положено — у нас есть определение разума. Будем разворачивать, дополнять и расширять концепцию.

Я не зря привел знаменитую цитату про реальность: для того, чтобы строить модель чего бы то ни было надо это что-то «ощущать». Надо быть существом, т.е. существовать и иметь способы восприятия, каналы ввода данных, сенсоры — вот это вот все. Т.е.

наш гипотетический ИИ существует в определенном мире и с этим миром взаимодействует.

мысль этого параграфа — глупо ожидать осмысленного разговора о футболе с ИИ, если все, с чем он взаимодействует — индексированная база знаний, вроде Википедии! Впрочем, эта мысль не нова: еще первые эксперименты с детерминированным и понятным миром были весьма впечатляющими. А это 50 лет назад, между прочим!

Начнем с модели. Которая полная, адекватная и непротиворечивая. Определение из Википедии на данном этапе нам вполне подойдет: Модель — это система, исследование которой служит средством для получения информации о другой системе.

Ее принципиальное устройство не столь важно, хоть некоторые соображения на этот счет у меня есть.

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

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

Вернее, можно сказать, что именно в этом тонкое различие между просто знанием (информацией) и осознанием (однозначным размещением внутри модели).

Вы можете заучить текст на китайском, можете по данным вам паттернам, найти соответствующий кусок… Да что там — вас, при желании можно научить еще и не таким фокусам — китайцы будут в шоке! Но все это не имеет отношения к интеллектуальной деятельности первого типа.

Полнота не обязательно подразумевает максимальную детализацию. Ошибка людей, попытавшихся идти в этом направлении (создающих всеобъемлющие базы знаний, ценой неимоверных затрат ресурсов) в попытке описать все и сразу.

Самая простая модель всего: . Само по себе одно слово подразумевает неделимое единое описание мира. Следующий возможный уровень описания реальности: (, )=. Т.е. существует нечто и все остальное, кроме этого.

И вместе они — все.

Новорожденный ребенок изначально почти ничего не видит. Свет и тень. Постепенно он начинает различать некие темные пятна на светлом фоне и появляется . Почти сразу с появлением этого первого элемента модели появляются еще три: , и идея — изменение положения (размера?) в пространстве с течением времени.

Довольно скоро осознается идея протяженности — ничего не было, потом что-то появилось, было и со временем исчезло ( и ?). Мы имеем пока крайне простую модель, но в ней уже много всякого: бытие и небытие, начало и конец, движение и тп… А, главное: она все еще включает в себя все доступное разуму восприятие.

Это полное описание окружающего мира.

Кстати вопрос: насколько полно можно описать окружающий мир, имея вот эти вот концепции (объекты, пространство, время, движение, начало и конец) и только их? 😉 С появлением понятий цвета и формы — растет число объектов модели. Другие органы чувств дают поле для формирования ассоциативных связей. А встроенная безусловные рефлексы формируют оценочную функцию: одни предпосылки формируют модель, которая в будущем имеют реальность, оцениваемую позитивно (вкусно, тепло, приятно), другие — пугают (в прошлый раз было плохо). Опять же безусловные механизмы заставляют позитивно реагировать на «хорошую» реальность (улыбаемся, радуемся) и негативно на плохую (орем!).

И тут появляется обратная связь. Или, возможно, она появляется раньше, когда безусловные рефлексы работают по программе «слежение за объектом» и позволяют не выпускать объект из поля зрения как можно дольше… Это критически важный момент: разум не только пассивно строит модель реальности, но и является сам активным началом в ней!

Важный фактор уточнения модели — способность делать гипотезы и возможность их проверить. Основа проверки — активное восприятие мира. В отличие от простого восприятия (созерцания) проверка некоторых предположения требует целенаправленного получения информации. Это процесс познания. Вы задаете миру вопрос — он отвечает… Так или иначе.

Важно понимать, что все, что делает разум — строит модель. Непротиворечивую внутри себя и адекватную реальности.

Адекватную — значит соответствующую реальности. Если входящие данные не укладываются в модель, значит модель требует пересмотра. Но иногда это требует слишком серьезной переработки и временно одни части модели могут конфликтовать с другими, т.е. вызывать противоречия.

Однако в большинстве случаев в последствии такого рода нестыковки будут провоцировать новый виток размышлений — это срабатывает механизм устранения противоречий. Т.е.

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

Изменение модели, уточнение ее — суть мыслительная деятельность. Детализация модели в случае необходимости и наоборот — обобщение, если это возможно. Пример: яблоко и мячик примерно одной формы/цвета и до определенного момента опознаются как один концепт.

Однако яблоко можно есть, а мяч не съедобный — значит это разные объекты и нужно ввести в модель параметр, позволяющий их различать при классификации (тактильные различия, нюансы формы, возможно- запах).

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

Если у вас возникла мысль, не важно — вызванная ассоциацией, внешним воздействием, внутренним триггером на устранение противоречий, то это:

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

Думаю, в большинстве случаев — это все более или менее один процесс, который и есть мышление.

Но менять можно не только модель. Разум является частью мира и является активным началом в мире. А значит может инициировать/участвовать процессах, которые приведут мир в соответствие с моделью. Т.е.

сначала есть модель мира, где условно «все хорошо» и в этой модели для достижения нужного состояния системы разум предпринимает определенные шаги. Действуя согласно модели и имея достаточно адекватную модель разум получит соответствие.

Это действие и мотивация к действию.

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

Включение себя в итоговую модель – есть самосознание, иначе — осознание себя. Модель не статична. Она обязательно существует во времени, с четким моментом «сейчас» и как следствие — прошлым и будущим. Причинно-следственная связь, восприятие скорее процессов, нежели объектов — так же важный критерий «полноты» модели. На тему процессного восприятия нужно отдельную статью делать, если это интересно сообществу. 😉 Сразу скажу, что если этот текст показался сырым и тяжеловесным — там все еще хуже!

Мысли вслух

Размышления на тему, пришедшие в голову позже, или те, что я не смог вписать в основной текст… Типа сцены после титров! ))

  • Включение себя в модель отдает рекурсией.

    Однако мы же ИТ-специалисты, мы знаем, что такое ссылка! Да именно тот факт, что где-то в модели мироздания находится сама модель мироздания — порождает ощущение ОГВМ, и собственной исключительности! То, что каждый из нас целый мир — получается, правда.

  • На самом деле реализация всего этого на практике будет весьма нетривиальной задачей! «Модель» — слишком обобщенное понятие, а данная модель должна обладать большим количеством свойств, которые делают ее трудно реализуемой, если вообще возможной (иногда мне кажется, что все что я тут изложил — тривиально, все это уже прошли в 80-х и пришли к выводу, что так сделать нельзя). Например, модели должна быть присуща довольно большая гибкость, многоуровневость, инвариантность, зачастую обладающая свойствами квантовой физики (вот это вот «нахождение в нескольких состояниях одновременно»).
  • Забавно, что среди людей встречается когнитивное искажение, когда вместо конкретных шагов, которые можно предпринять для приведения в соответствие мира и модели люди просто планируют обстоятельства, которые никак не зависят от них — что они сложатся наилучшим образом… Про таких говорят, что они мечтатели и строят воздушные замки… Интересно, в рамках теории, не так ли?
  • Так же модели мира у людей зачастую могут довольно сильно расходится с реальностью.
  • Такие, исключительно человеческие качества (чаще всего, считающиеся недоступными машине) как творчество и воображение легко объяснимы в рамках данной темы: с воображением все понятно — это прогоны модели в разных возможных вариантах, а с творчеством интереснее! Полагаю, что процесс творчества, это попытка зафиксировать часть своей модели в какой-то материальной физической форме, с целью или передать ее другому сознающему существу или самому получить возможность полнее охватить моделируемое (все-таки ресурс мозга в этом отношении конечен).
  • Оффтоп, но в продолжении темы: маги и провидцы. Карты таро, руны и прочие гадания на кофейной гуще. Полагаю, первопроходцы в этом деле использовали эти системы для визуализации/физического воплощения моделей, находившихся в их голове. Так с ними проще работать. И расположение оных в пространстве было далеко не случайным. Просто несведущие люди не понимали сути процесса и думали, что посредством этих волшебных предметов гадальщики общаются с духами. А со временем и сами гадальщики измельчали и потеряли изначальные навыки анализа.
  • Вообще, полагаю, что в силу наличия механизмов обобщения и классификации, а также поиска закономерностей, сознание должно стремится к упорядочиванию мира. Т.е. нечто имеющее внутреннюю структуру должно восприниматься боле позитивно, чем хаотичное и плохо предсказуемое — не укладывающееся в модель. Вполне допускаю, что чувство красоты, гармонии — чувство прекрасного — следствие этого стремления (когда речь идет о произведении искусства). Причем порядок может быть достаточно сложным — не обязательно куб, а очень даже может быть — фрактал. И чем выше уровень интеллекта, тем более сложные категории структурированности могут быть усвоены.
  • Кто-то возразит, что, мол — а как же красота «дикой природы», людей, животных и тому подобное… Ну здесь скорее уместность/соответствие/аутентичность — вот это вот все. Восприятие же других людей вообще может базироваться на вложенных инстинктах.
  • А еще — автор же вкладывает какой-то посыл в свое произведение. Т.е. это часть его модели. Очевидно, что у тех, кто непосредственно воспринимает его творчество возможны разные варианты: от «не зашло», когда не получается встроить модель автора в свою модель, до катарсиса, инсайта и прочих состояний — когда не просто «зашло» и «совпало», а еще и «поставило все на свои места»…
  • Кстати, эта статья — тоже ведь творчество… Зашло? 😉

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

  • 57,9%Требую продолжения!33
  • 22,8%Скучно и банально.13
  • 10,5%Ничего нового, но может вторая часть будет лучше…6
  • 8,8%Это так не работает!5

Источник: https://habr.com/ru/post/439378/

Закон для всех
Добавить комментарий