...

суббота, 6 февраля 2021 г.

Самый важный эксперимент 20 века

image

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

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

А с двадцатым?

Конечно, если выбирать по значительности — то тут все просто. Это «Тринити» — первое в мире испытание ядерного оружия, произошедшее 16 июля 1945 года. Нисколько не преувеличивая, можно сказать, что после этого испытания мир проснулся другим.

Но, при всей значительности этого эксперимента, он не принес новых знаний. Все и до этого знали, что бомба взорвется. Новых знаний эксперимент не добавил.

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

Рассмотрев Стэндфордский тюремный эксперимент, эксперимент Милгрэма и «Вселенную-25», она же «Крысиный рай», я выбрал эксперимент по выведению дружелюбной лисы советского ученого, академика Дмитрия Беляева.
Эксперимент крайне прост — взяв несколько лисиц, ученый начал вести отбор по признакам дружелюбного поведения. Скрещивал между собой лисиц, которые не боялись людей, отбирал среди их потомства еще более дружелюбных лисиц, скрещивал их между собой.

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

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

(с) Журнал «Коммерсантъ Наука» №6 от 05.09.2017, стр. 26

Подобно любому значимому эксперименту, эксперимент Беляева продемонстрировал неожиданные результаты: к примеру, несмотря на то, что отбор велся только по одному признаку (спокойной реакции на человека), он повлек за собой целый комплекс побочных эффектов – отчасти неожиданных, отчасти закономерных.

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

Одним из самых ярких «побочных эффектов» отбора стал рост изменчивости многих признаков, в том числе окраски. Это позволило Беляеву назвать проводимый им отбор на низкую агрессивность «дестабилизирующим отбором». Такая же дестабилизация и увеличение изменчивости многих признаков имели место и при одомашнивании волков.

Последние три абзаца я позаимствовал из книг «Как приручить лису и превратить её в собаку. Сибирский эволюционный эксперимент» Алана Ли Дугаткина и Людмилы Николаевны Трут, которая есть в сети:

image
(перевод: Максим Викторович Винарский)

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

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

Достаточно необычный и смелый вывод, для современной науки, не находите?

*** То есть, конечно, можно вспомнить опыт Майкельсона-Морли, который подтвердил инвариантность скорости света. Ну как подтвердил? Сам опыт прошел по больше части незамеченным. Даже Эйнштейн, при разработке теории относительности, на него не опирался.

Тогда как двухщелевой опыт Юнга, де факто, изменил наши взгляды на реальность, породив массу интерпретаций. Включая копенгагенскую. И я в этом мнении не одинок — уже готовя статью к публикации, я узнал что одноэлектронная версия опыта была признана читателями журнала Physics World «самым красивым экспериментом».

Сцена после титров:
— Стэнфордский тюремный эксперимент, — сказал мой коллега Иван, прочитав черновик статьи, — кстати, фейк. Недавно опровержение читал.

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

— По статье, я могу сказать, что ты слишком расширенно трактуешь результаты эксперимента,— сам автор, академик Беляев, Дмитрий Константинович, подобных выводов не допускал.

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

— Интерпретируй, да знай меру! — возмутился Иван, — разве можно экстраполировать результаты эксперимента на животных, на человека?

— Можно подумать, мы сильно отличаемся! — отмахнулся я, — Павлов изучал рефлексы на собаках, Мендель вывел свои законы наблюдая за горошком, а Кэлхун, Джон, который «Вселенная 25» — вообще свой эксперимент на крысах проводил.

— У человека есть разум! Его поведение полностью отлично от поведения лисицы.

— То-то я смотрю, что самая лучшая прикладная книга по психологии человека написана дрессировщицей собак Карен Прайор. Называется она «Не рычите на собаку», внутри тоже одни собаки, а описанные приёмы на людях работают.

image
(Кстати, кто не читал — рекомендую. На русском есть)

— Ну, возможно, что-то общее у нас есть, — признал Иван, — но и различий хватает. Повторяю — у нас, людей, есть разум! Способный преодолеть заложенную биологическую программу.

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

— Что хоть поют-то?

— Старые песни о главном. Все чужаки враги.

— То есть ты утверждаешь, что уровень, например, ксенофобии в обществе зависит не только от воспитания и пропаганды, но и запрограммирован генетически?

— Тсссс! — быстрее молнии я приложил палец ко рту Ивана, — упаси боже, что-то такое в современном обществе сказать. Заклюют, ей-богу, заклюют.

— Но ведь ты все выкладки именно к этому и подводишь

— Я писатель, мне можно, — улыбнулся я, — от писателя, у которого Творец Вселенной беседует с котом Беляшом о логических парадоксах примерно чего-то такого и ожидают. Если что, я скажу что троллил и все поверят.

— Ну, не знаю, — сказал Иван, — ты главное эту беседу в статью не вставляй, тогда аллюзию может быть и не заметят.

— И то верно, — задумчиво подытожил я.

Let's block ads! (Why?)

Германия — достоинства, недостатки и неповторимое I

Живу в Германии с 2014-го года.

От некоторых аспектов страны до сих пор в восторге. От других хочется лезть на стенку и выть "ну почему так?" Постараюсь раскрыть и те, и другие - и раскрыть, почему останусь здесь, скорее всего, до конца жизни.

Heidelberg - здесь осталась средневековая Германия в первозданном виде
Heidelberg - здесь осталась средневековая Германия в первозданном виде

Зарплаты программистов

Ну как же без этого? Решил вопрос оплаты вынести в самое начало, ведь если он вас разочарует, то ваш интерес к стране может сразу угаснуть.

Ребят. Хватит смотреть зарплаты по средним значениям на Глассдоре. Они всегда и везде занижены процентов на эдак 20-30. Я знаю рыночные реалии и назову цифры, на которые стоит ориентироваться в 2020ом.

Сразу после университета, выпускники начинают с зарплат около €50 000. Достаточно быстро дорастают до €60 000; со стажем до около €70 000, которые и есть где-то реальная средняя по больнице. Чтобы расти дальше, нужно искать хороших работодателей и/или действительно что-то уметь: тогда реальны и €80 000, и суммы вплоть до €100 000 (во всяких ФААНГ ещё больше; но это уже единицы). Большинство знакомых сеньоров сидят на суммах вокруг да около €80 000. Возможны также бонусы и stock options, но последние слабо распространены по сравнению с США.

Обобщая: вилка €50 000-€100 000; средняя €70 000, сеньоры могут иметь €80 000-€100 000. Причём, по опыту, ваш заработок слабо зависит от того, где именно вы живёте - здесь нет "Москвы" и "остального".

График взят с www.asdcode.de, опроса таких же как вы IT-эмигрантов
График взят с www.asdcode.de, опроса таких же как вы IT-эмигрантов

Налоговая система Германии - вы платите много подоходного и социальных взносов, но и достаточно много получаете взамен от государства. Навскидку, для доходов выше среднего, вам оставляют 60 процентов зарплаты "чистыми".

Программист чистыми будет иметь в диапазоне €3000-€5000 в месяц. €60 000 в год это €3050 чистыми в месяц; €70 000 в год - €3500 чистыми в месяц; €80 000 - €4000; €100 000 - €4800.

На каждого ребёнка - налоговый вычет в €220; для неработающего партнёра - вплоть до €500. И то и другое сильно улучшает качество жизни, если приезжаете с семьей. Ещё по мелочам вычеты на транспорт, переезды, хоум офис и воспитание детей. Почти все медицинские расходы, вплоть до лекарств, уже покрыты ОМС и о них приходится заботиться не часто.

Что касается покупательной способности сумм, то кратко будет сказано, что на €4000 чистыми (€80 000 в год до налогов) в городе средней дороговизны в Германии (типа Нюрнберга, Дюссельдорфа или Берлина) можно жить примерно как на 300 000 рублей до налогов в Москве; numbeo подтверждает. Чего-то вы себе сможете позволить больше, чего-то меньше. Но о ценах позже гораздо подробнее.

(Чисто для общего образования - средний доход по стране - €48 000; €2550 чистыми. Покупательная способность среднего немца примерно в 2.3 раза выше, чем среднего россиянина.)

Почему стоит жить в Германии?

Отношение к эмиграции у меня изначально было весьма равнодушное, почти что механическое. Меня не устраивало, куда двигается Россия; к тому же неожиданно потерял отличную съёмную квартиру. Решил, что раз в жизни так или иначе намечается прыжок в неизвестность, то можно попробовать эмиграцию.

Знакомые и родственники, уехавшие в Европу, у меня оказались именно в Германии. (Да - устроился, считайте, по знакомству - но то была не самая прибыльная вакансия и с тех пор я её много раз без трудностей сменил.) И вот он я, изначально в немецком городишко Aschaffenburg около Франкфурта, потом в баварском сто-тысячнике Regensburg, теперь в Берлине, где мне пока нравится больше всего.

Изначально, отношение к Германии было равнодушным: "Ну, да, очевидно, здесь средний житель неплохо живёт. Но разве это достаточный повод страну любить?" Потом стал замечать изъяны, коих немало. Но в конечном счёте - полюбил.

Какие могут быть аргументы, дабы убедить сюда ехать?

Германия - это материальное качество жизни. Высокие по сравнению с любой страной мира (кроме Штатов, Норвегии или Швейцарии) доходы для широких слоёв населения (да-да, есть профессии кроме IT, и 97% населения в них занято). Умеренная для западной Европы стоимость жизни. Социальное государство. В ВВП по ППС, Германия занимает 15-ое место из 188 на планете.

Вот такие деревни разбросаны по всей Германии
Вот такие деревни разбросаны по всей Германии

И притом умудряется быть - вопреки стереотипам - самой мало работающей (то есть, самой отдыхающей) страной планеты: work-life balance во все поля.

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

Если жить в Европе, то трудно Германию не рассмотреть: Восточная Европа - беднее, Южная Европа - безработнее и жарче, Северная Европа - дороже и холоднее.

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

Замечаешь, что Германия многое впитала от своих соседей. Бавария похожа на Австрию, Баден-Вюртемберг на Швейцарию, Гамбург на Скандинавию, Нижняя Саксония на Голландию и Бельгию. Польша, Чехия и Прибалтика, наоборот, всю историю под сильным немецким влиянием.

О немецкой промышленности наслышаны, её продукцию видите даже в Москве в виде премиальных автомобилей Mercedes и BMW, электричек "Ласточка" (Siemens Desiro), Airbus-ов, бытовой химии, лекарств и строительной техники. Кто-то сталкивался с унылым, но незаменимым софтом SAP. Да даже наш родной "Газпром" бы не справлялся со своей задачей без немецкого и австрийского оборудования нефтедобычи.

Всё перечисленное закрепляет за Германией звание первой экономики Европы и страной с высокой во всём репутацией; несмотря на её прошлое.

Почему не стоит ехать программистом из СНГ в Европу?

Но ведь при всём при этом можно услышать и много нелестных отзывов о переезде Европе в целом и о Германии в частности: откуда они? Некоторые оправданы, как понял по собственному опыту. Другие - скорее результат непонимания системы.

Попробую предостеречь от переезда в Германию тех, кому она не подойдёт: привыкших в СНГ иметь всё и сразу, за (лично для них) недорого.

Этот пункт относится ко всей Европе, и является основной причиной недовольства именно IT-шников - здесь нет касты или статуса™ IT-шника. В СНГ, программисты рассматривают как что-то само собой разумеющееся иметь 3-5 средних дохода по стране и редко задумываются, насколько привилегированны. В США, программисты точно также могут иметь доходы, совершенно оторванные от средних значений.

В Западной Европе, IT-шники это обыкновенные "белые воротнички", у которых где-то полтора средних дохода. Так как общий уровень зарплат на западе сильно выше, то IT-шники не обязательно теряют в уровне жизни, но теряют в статусе™. Это означает, помимо прочего:

  • Никакой частной медицины вне очереди: здесь врачи зарабатывают больше вас и сделать их вашей прислугой по вызову вам не по карману. Записывайтесь по ОМС на приём. Есть частные страховки, по которым сможете получить медицинские услуги в частном порядке, со всеми привычными привилегиями - но они долгосрочно обходятся сильно дороже, чем ДМС дома.

  • Услуги (= время других) бьют по карману. Чему удивляться, что домашний интернет стоит €30, а не €5, если техник зарабатывает €3000, а не €500? То же самое со слесарями, парикмахерами, официантами, таксистами и всеми остальными, кто в СНГ стоял сильно под вами в иерархии, а здесь вы имеете "всего лишь" две его зарплаты после налогов.

  • Забудьте про сиюминутную покупку недвижимости. Арендуйте жильё, либо берите долгосрочную ипотеку, как и обычные люди везде на планете. Людей с деньгами на западе больше, значит у вас больше конкурентов в покупке ограниченной земли, значит цены на недвижимость будут высокими. Готовьтесь положить много лет на то, чтобы стать собственником даже обычной, не-элитной недвижимости.

Отсюда, по моим наблюдениям, львиная доля недовольства IT-шников из СНГ после переезда на запад. Нет, это не запад плохой, это просто вы у себя дома привыкли к слишком хорошему: к жизни денежной элиты. Здесь она также есть, но будучи обычным программистом вы в неё, по всей видимости, не войдёте (удел всяких бизнесменов, самозанятых, рантье и врачей). C'est la vie.

Описанное даже не настолько недостаток конкретно Германии (о них позже подробно), сколько общий дисклеймер: в Европе вы потеряете статус элиты и станете средним классом.

Типичный для юга Германии ландшафт. Север более плоский и домики кирпичные
Типичный для юга Германии ландшафт. Север более плоский и домики кирпичные

Ну а как живётся среднему классу в Германии? Весьма неплохо, по моему собственному опыту. Как мне кажется, в некоторых аспектах лучше, чем даже денежной элите в России или на Украине - ведь деньги дома не избавляют от всех окружающих проблем. И каково бы ни было лично ваше финансовое положение, вы так или иначе выигрывайте от достоинств жизни в западной Европе.

Но всё же, закончим с чисто финансовой стороной вопроса:

Стоимость жизни в Германии

  • Квартирный вопрос: для мигранта без наследного жилья, разумеется, основной. Для двухкомнатной квартиры на одного в условном Нюрнберге или же в Берлине исходите из €800-€900. Есть города Мюнхен, Штутгарт, Франкфурт с безнадёжно перегретым рынком жилья; зарплата здесь вряд ли оправдает цены.

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

  • Коммунальные услуги относительно дорогие (потребитель субсидирует переход на полностью возобновляемую энергию): счёт будет около €3 за квадратный метр; €180 за небольшую двушку, включая электричество. Обратите внимание, что иногда цена указывается уже с коммунальными услугами (Warmmiete), иногда без (Kaltmiete).

  • Продукты для западной страны недорогие. На €300 можно более чем полноценно питаться, если готовишь полностью сам - уложиться можно и в меньшие суммы. Чек за посещение гастрономии будет около €10-12 в недорогих заведениях, €30 в "приличных" и €50 в престижных.

  • В любом городе с населением более 500 000 человек - необязательно иметь автомобиль: общественный транспорт будет великолепно развит, без толкучки даже в часы пик. Проездной стоит около €60. Содержание обычного авто со страховкой, бензином, техосмотрами стоит около €200 в месяц. Сам автомобиль, разумеется, стоит ровно столько же, как в СНГ.

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

  • Типичный расклад по связи - €50, включая обязательный взнос за ТВ, домашнюю (100 мбит/сек) и мобильную связь (5-8 ГБ). В крупных городах, как правило, нет проблем ни с ценами, ни с покрытием. В деревнях и небольших городишко всё бывает уже сильно по-разному, иногда печально.

Итого, примерно €1 500 в месяц необходимы, дабы прилично "существовать" в относительно крупном городе Германии, снимая собственное жилье на одного. Остальные деньги - условно "ваши". Со средне-программистской зарплатой их будет около €2000, сеньорской вплоть до €3500. Это не американские суммы доходов после обязательных трат, но с московскими более чем сопоставимо.

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

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

Здесь мог бы жить ты
Здесь мог бы жить ты

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

Оставайтесь на связи, auf Wiedersehen!

Let's block ads! (Why?)

[Перевод] Радости экспериментов с ISA и PCI

С момента появления домашних компьютеров существует возможность расширять их функционал путём установки большего количества RAM, более ёмких накопителей, дополнительных комплектующих. Но только с появлением IBM PC привычной стала идея о полностью открытой модульной компьютерной системе. А именно, концепция карт расширения позволила пользователям компьютеров не зависеть от конфигураций систем, предлагаемых производителями. Подобные конфигурации можно было, в ограниченных пределах, расширять комплектующими, рассчитанными исключительно на эти системы. Благодаря универсальным картам расширения появились целые отрасли промышленности, они стали и причиной возникновения большого рынка любительских устройств, которые можно было подключать к компьютерам.

В первом IBM PC было пять 8-битных слотов расширения, подключённых прямо к процессору 8088. Компьютер IBM PC/AT был основан на процессоре 80286, в результате слоты стали 16-битными. С помощью слотов расширения к компьютеру можно было подключать практически всё что угодно: графические и сетевые карты, дополнительную память, какие-то особые платы. Хотя для этих слотов расширения и не существовало официального наименования, во времена PC/AT их называли, соответственно, PC-шинами и AT-шинами. А название Industry Standard Architecture (ISA) — это ретроним, который придумали создатели клонов PC.

Такая открытость ISA означала то, что можно было достаточно легко и дёшево создавать собственные ISA-карты. То же касалось и шины PCI, которая появилась после ISA и была такой же открытой. В результате до сих пор существует полная жизни экосистема, в которой есть место и любительским звуковым картам, рассчитанным на слоты PCI или ISA, и картам расширения, позволяющим оснастить IBM PC 1981-го года поддержкой USB, и много чему ещё.

С чего начать тому, кто в наши дни хочет заняться работой с ISA- и PCI-картами?

Цена простоты



Сверху вниз: 8-битная XT-карта, 16-битная AT/ISA карта, 32-битная EISA-карта

О шине ISA, и о появившихся до неё шинах PC/AT, нужно знать одну важную вещь. Это — не особенно универсальные шины, так как они используются для работы с устройствами, подключёнными к шинам адреса и памяти процессоров 8088 и 80286. Это значит, что, например, тактовая частота шины равняется тактовой частоте соответствующего процессора. А именно, для PC-шины это — 4,77 МГц, а для PC/AT-шины — это 6-8 МГц. Хотя 8-битные карты обычно можно использовать в 16-битных слотах, нет гарантии того, что такие карты, подключённые к этим слотам, будут нормально работать.

По мере того, как разработчики клонов PC использовали в своих моделях компьютеров всё более быстрые процессоры, частота шины AT, в итоге, пришла к значениям, находящимся где-то между 10 и 16 МГц. Это, понятно, привело к тому, что многие существующие AT-карты (ISA) работали в подобных системах неправильно. Через некоторое время большинство производителей оборудования сделало так, чтобы частота шины не была бы напрямую связана с частотой процессора. Но несмотря на то, что в названии шины ISA есть намёк на нечто стандартизированное, настоящего стандарта этой шины не существовало.

Правда, была попытка стандартизировать замену ISA, получившую название Extended ISA (EISA). Эта 32-битная шина, работавшая на частоте 8,33 МГц, была создана в 1988 году. Хотя на рынке домашних компьютеров она и не «взлетела», некоторым вниманием она пользовалась среди пользователей серверного оборудования, особенно — как более дешёвая альтернатива собственной шине IBM Micro Channel architecture (MCA). Компания IBM задумывала эту шину в качестве замены ISA.

В итоге же шина ISA дожила до наших дней, сохранившись, в основном, в промышленном оборудовании и во встраиваемых системах (например, в виде шины LPC), в то время как в других сферах был сначала осуществлён переход на PCI, а позже — на PCIe. А вот интерфейсы для подключения видеокарт к компьютерам шли своим путём. Речь идёт о шинах VESA Local Bus (VLB) и Accelerated Graphics Port (AGP), которые представляют собой специализированные интерфейсы, нацеленные на нужды GPU.

Начало работы с новыми старыми технологиями



Разъём ISA

Естественным результатом этой бурной истории, в той её части, которая касается ISA, стало то, что тому, кто решил создать новую «карту расширения ISA», следует действовать с осторожностью. Для того чтобы подобное изделие отличалось бы по-настоящему широкой совместимостью, можно разработать 8-битную карту, которая может работать на шинах с частотами, находящимися в диапазоне от 4,77 до 20 МГц. А на разработку 16-битных карт стоит обратить внимание тем, кому не нужно поддерживать компьютеры, основанные на процессоре 8088. При разработке PC/104-карт вообще не должно быть никаких проблем с совместимостью, так как эта шина до крайности близка к наиболее стандартному варианту ISA.

При разработке устройств для ISA и PCI физический интерфейс тоже особых проблем не доставляет, так как и в том и в другом случаях используются контакты, расположенные на ребре платы. Именно такой вариант расположения контактов на платах, актуальный до наших дней, был выбран, преимущественно, из-за его дешевизны и надёжности. На плате расширения нет какого-то физического коннектора. Там, на краю, находятся лишь контактные площадки, которые позволяют подключить плату к слоту. При проектировании подобных плат, правда, надо обращать внимание на их толщину, так как от неё зависит надёжность контакта. Обычно хорошо показывает себя толщина платы в 1,6 мм.

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

При проектировании электрических цепей плат стоит знать о том, что ISA использует напряжение в 5 В, а PCI может использовать 5 В, 3,3 В, или и то и другое. В случае с PCI платы различают, используя выступы в PCI-слотах и выемки на картах (ключи). Так, если в слоте имеется один выступ, расположенный на расстоянии 56,21 мм от той его стороны, на котором находятся разъёмы подключаемой к нему карты, то это будет слот, рассчитанный на карты, поддерживающие напряжение 3,3 В. Выступ, расположенный на расстоянии 104,77 мм от края слота, указывает на слот для 5 В-карт. На краях карт есть соответствующие выемки. Если карта поддерживает и 5, и 3,3 В — то на ней будет две выемки (это — так называемые универсальные карты).


Ключи на PCI-картах и разъёмах

Существуют 32-битные и 64-битные варианты PCI. Причём, всеобщий интерес на рынке домашних компьютеров вызвал именно первый вариант шины. Если говорить о развитии PCI, то можно отметить интерфейс PCI-X. Эта шина, в 64-битном варианте, в основном, применялась в серверных системах. В PCI-X удвоена максимальная частота шины (с 66 до 133 МГц) и убрана поддержка 5 В. Поэтому PCI-X-карты часто работают при их установке в слоты PCI, рассчитанные на 3,3 В (то же самое справедливо и для PCI-карт, устанавливаемых в слоты PCI-X). 64-битная карта, и PCI, и PCI-X, может перейти в 32-битный режим в том случае, если она установлена в более короткий, 32-битный слот.

Работа с шинами


Каждое устройство, подключённое к шине, увеличивает нагрузку на неё. Кроме того, если речь идёт о шинах с общими линиями связи, важно, чтобы отдельные устройства могли бы отключаться от этих линий в то время, когда они эти линии не используют. Обычно для реализации такой схемы работы используется буферный элемент с тремя состояниями. Например — такой, как распространённый 74LS244.

Логическая схема 74LS244

74LS244 может не только обеспечивать изоляцию, что умеют и стандартные цифровые буферы. Этот элемент может переключаться в высокоимпедансное состояние (Hi-Z), что равносильно отключению устройства.

В случае с ISA-картами нам, для организации правильного взаимодействия с шиной, нужно нечто вроде 74LS244 или его двунаправленного варианта 74LS245. У каждой сигнальной линии должен быть буфер или «защёлка». Подробнее об этом можно почитать здесь. А тут описан хороший пример современной ISA-карты, называемой Snark Barker и представляющей собой клон SoundBlaster.

PCI-карты, по идее, тоже можно создавать, используя подобный подход, но обычно в коммерческих PCI-картах используют специализированные интегральные схемы для ускорения ввода-вывода, которые предоставляют компонентам карт простой интерфейс, похожий на ISA. Подобные решения в наши дни, правда, нельзя назвать дешёвыми (если только не рисковать, связываясь с чем-то вроде WCH CH365). Поэтому хорошей альтернативой подобным решениям является реализация PCI-контроллера на базе FPGA. MCA-версия вышеупомянутой карты Snark Barker использует для взаимодействия с шиной MCA CPLD. На сайтах вроде OpenCores имеются проекты, ориентированные на PCI, которые можно использовать в качестве отправной точки для собственных разработок.

Обмен данными с шинами ISA и PCI


После создания новенькой платы с золотыми контактами, и после того, как на ней распаяны буферные элементы или FPGA, нужно ещё и иметь возможность обмениваться данными с шиной ISA или PCI, пользуясь соответствующим протоколом. К счастью, существует множество материалов по ISA, например — этот. А вот протокол PCI, вроде протокола PCIe, это — «коммерческая тайна». В результате соответствующие данные можно официально (и небесплатно) достать лишь на сайте PCI-SIG. Правда, спецификации, всё же, «утекли» в общий доступ.

Конечно, можно использовать существующие ISA- или PCI-проекты в качестве шаблона или руководства для собственных проектов. Вышеупомянутые проекты CPLD/FPGA предлагают нам механизм, позволяющий избежать необходимости в самостоятельной реализации протоколов, а значит — помогают сразу добраться до самого интересного. Создателю платы, в любом случае, придётся использовать систему прерываний (IRQ) для соответствующей шины (выделенные сигнальные линии, основанные, в последних версиях PCI, на сообщениях), а так же учитывать возможность использования DMA (DRQn и DACKn в ISA). Рассказ о тонкостях шин ISA и PCI займёт целую статью. Правда, тем, у кого были ISA-карты с переключателями, или (что хуже), с ISA PnP (Plug’n’Pray), многое из этого должно быть уже знакомо.

Как и в случае с любой другой общей шиной, схема взаимодействия с шиной при записи или чтении данных предусматривает запрос доступа к шине у «хозяина шины» или, в случае с шиной PCI с несколькими «хозяевами», использование процедуры арбитража. К карте расширения, кроме того, можно обращаться напрямую (вот материал об этом, в котором речь идёт об ISA). В Linux это подразумевает использование программ ядра (sys/io.h). Сначала получают соответствующие разрешения, а потом уже можно отправлять данные в конкретный IO-порт, соответствующий карте. В целом это выглядит так:

if (ioperm(OUTPUT_PORT, LENGTH+1, 1)) {
    ...
}
if (ioperm(INPUT_PORT, LENGTH+1, 1)) {
    ...
}
 
outb(data, port);
data = inb(port);

В случае с ISA адрес IO-порта задаётся в самой плате, а для распознавания адреса используется декодер, находящийся на линиях адресного сигнала. Часто на платах для выбора адреса, а так же — линий IRQ и DMA использовались переключатели или перемычки. Технология ISA PnP была призвана улучшить этот процесс, но по факту принесла больше вреда, чем пользы. В случае с PCI технология PnP является частью стандарта. Шина PCI осуществляет поиск устройств при загрузке, а встроенная ROM (BIOS) запрашивает у карт сведения об их нуждах, после чего адреса и другие параметры задаются автоматически.

Итоги


Конечно, если говорить о разработке собственных ISA- или PCI-плат, то тут были рассмотрены лишь самые основы этого дела. Но, надеюсь, мой материал позволил вам хотя бы увидеть общую картину происходящего. Многое из того, что нужно конкретному разработчику карт расширения, зависит от того, какую именно карту он хочет создать, от того является ли она простой 8-битной картой ISA (PC/XT), или 64-битной картой PCI-X.

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

Хотя те старые шины, о которых мы говорили, не являются игроками той же лиги, что и шина PCIe, их возможности и их широкая доступность означают, что они могут дать старым компьютерам второй шанс. Даже если речь идёт о чём-то очень простом, вроде накопителя, основанного на флэш-памяти, предназначенного для первого IBM PC.

Занимались ли вы разработкой собственных ISA- или PCI-карт?

Let's block ads! (Why?)

Реализация процессорной архитектуры из книги Чарльза Петцольда «Код. Тайный язык информатики»

О книге

Наверное многие, из тех, кто увлекается изучением того, как работает компьютер на самом низком уровне читали такие книги как: Таненбаум "Архитектура компьютера" или Харрис, Харрис "Цифровая схемотехника и архитектура компьютера", которые безусловного являются объемлющими трудами и хорошими книгами для обучения. Но если вы не являетесь инженером, но всё равно хотите погрузиться в мир цифровых вычислений и более глубоко понять то, а как же работает компьютер. В этом вам сможет помочь книга Чальза Петцольда "Код. Тайный язык информатики", которая начинает свой рассказ от причин, по которым людям понадобился обмен информацией и её обработка , с какими проблемами при этом столкнулись и заканчивает рассказам об устройстве реальных операционных систем и процессоров и их архитектуру. При этом автором был отлично подобран уровень абстракции, которого он придерживался при написании. В каких-то моментах подробно описывая работу элементарных частей процессора, а в других рассказывая простыми словами о сложных вещах.

Описание архитектуры

Так в главе 17 "Автоматизация" автор, начиная с описания с того, как автоматизировать суммирование данных с промежуточным сохранением состояния между операциями, переходит к реализации архитектуры с набором команд, достаточным для исполнения практически любых вычислений. Эта архитектура отличается от используемых тем, что размерности шины адреса, шины данных, и машинного слова имеют разные размерности. Обращение к памяти является является побайтовой, что является достаточно обычным. Машинное слово фиксированной длины little-endian состоит из 12 бит или 3 байта, разделённых на две части. Младший байт слова содержит код операции содержит номер команды, старшие два - её аргумент. Из-за ограничений тракта данных на один такт процессора тратится 4 такта счётчика, из которых 3 уходят на чтение команды и 1 на исполнение вычислений. Архитектурой описывается один программно доступный регистр общего назначения, в котором сохраняется результаты выполнения операций с АЛУ, а также 2 регистра-флага, являющихся аналогами C и Z регистра CPSR архитектуры ARM и означающими то, имел ли результат последней операции, выполненной с помощью АЛУ, бит переноса или равнялся нулю соответственно. Архитектура описывает 12 команд, которые можно логически разделить на 4 группы:

  • Операции взаимодействия с внутренним регистром

  • Загрузить

  • Сохранить

  • Арифметические операции

  • Сложить

  • Вычесть

  • Сложить с переносом

  • Вычесть с переносом

  • Операции перехода (условного и безусловного)

  • Перейти

  • Перейти если 0

  • Перейти если перенос

  • Перейти если не 0

  • Перейти если не перенос

  • Операция останова

  • Остановить

Так как количество операций, которые могут быть закодированными с помощью 8 бит равняется 2^8=256, то для расширения архитектура оставляет 256-12=244 вариантов команд, к которым могут быть добавлены, например различные часто используемые арифметические операции

  • Побитовое И (AND)

  • Побитовое ИЛИ (OR)

  • Побитовое НЕ (NOT)

  • Побитовое исключающее ИЛИ (XOR)

  • Логический сдвиг влево

  • Логический сдвиг вправо

  • Арифметический сдвиг

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

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

Наверное самой важной частью системы является интерфейс взаимодействия с человеком. Так в главе 22 "Операционная система" Петцольд демонстрирует панель прямого доступа к памяти. Доступ к памяти осуществляется с помощью перехвата тракта адреса и остановки выполнения текущей программы. Адресация предполагается с помощью ручного ввода значения переключением тумблеров в состояние логического 0 или 1, содержимое ячейки сразу отображается с помощью световых индикаторов. Изменение значения ячейки осуществляется с помощью тумблеров данных и возможно только если активирован тумблер, разрешающий запись. Активация тумблер сброс отвечает за обнуление счётчика команд.

Реализация

Несмотря на все установленные недочёты и предложенные улучшения, для реализации была выбрана цель строгого соответствия архитектуры и её реализации, описанным в книге. Однако эти улучшения могут быть беспроблемно реализованы и добавлены в будущем.

Микроархитектура

Схема микроархитектуры, предлагаемая автором.

Для реализации микроархитектуры использовалась САПР для ПЛИС Quartus II 13.0sp1, предоставляющая широкие возможности для разработки и отладки ПЛИС. Несмотря на возможность описания архитектуры с помощью специализированных языков таких как VHDL и Verilog, для большей наглядности всё проектирование осуществлялось исключительно в графическом режиме. Широко использовались возможности встроенных функций таких как:

  • lpm_mux (сокр. от multiplexer)

  • lpm_decode

  • lpm_counter

  • lpm_ff (сокр. от flip-flop)

  • lpmaddsub

  • lpm_constant

На начальных этапах разработки тестирование проводилось в программе ModelSim, поставляемой в пакете программ для разработки. На финальных этапах отладка и тестирование производилось непосредственно на самой исполняющей плате с помощью встроенной утилиты In-System Memory Content Editor для изменения состояния входящих данных.

В качестве исполняющей платы была выбрана Cyclone II EP2C5 Mini Dev Board на основе чипа ПЛИС EP2C5T144C8, обладающий встроенным кварцевым генератором на 50 МГц, более 80 контактами интерфейса ввода/вывода общего назначения и разъёмом JTAG для прошивки и отладки. Техническим ограничением стал существенно меньший объем оперативной памяти, доступный для использования, вследствие чего для адресации используются только 13 младших бит в отличие от 16 бит, описанных в архитектуре. Однако это не вносит никаких критических изменений в работу процессора и может быть исправлено заменой исполняющей платы на более производительный аналог.

Внешний вид

Это изображение сформировало в голове довольно запоминающийся образ и с первого взгляда реализовать такой пульт достаточно не сложно. Для его реализации потребуется 16 + 8 + 3 = 27 двухпозиционных тумблеров, 8 светодиодов и непосредственно листовой материал на котором будет всё размещаться.

Использовались микротумблеры MTS-102 ON-ON. В нижнем положении соединяющие верхнюю ножку со средней, в верхнем - нижнюю со средней. Это было удобно, так как по всем нижним можно было пустить высокое напряжении, верхние подключить к земле и снимать значение со средних.

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

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

Большой проблемой стало нанесение надписей, для этого в Autodesk Fusion 360 была разработана схема расположения надписей на фронтальной панели и с помощью плоттера вырезан шаблон для покраски.

Для питание используется разъем GX16 5P, но для удобства использования впаянный в шнур с USB для удобства использования с обычными блоками питания.

Панель размещена на деревянной коробке с защёлкой для удобства доступа к внутренним элементам. Все части из текстолита покрыты бесцветным матовым лаком, а сам корпус - лаком цвета махагон. Штекер расположен со стороны, противоположной панели управления.

Внешний вид в целом соответствует взятому за основу изображению. Для лучшей читаемости нумерация на тумблерах изменена с десятичной записи на шестнадцатеричную.

Внутреннее пространство

Как уже было сказано выше в качестве вычислительного модуля была выбрана плата Cyclone II EP2C5 Mini Dev Board на основе чипа ПЛИС EP2C5T144C8. Для подключения тумблеров и светодиодов к плате было решено не использовать пайку и использовать провода, используемые для макетного моделирования. Однако другая сторона распаяна к тумблерам или светодиодам, к которым относятся.

Так как хотелось сделать коробку ещё и автономной, решил внедрить плату от powerbank'a, которая включает в себя плату регулировки заряда литиевых аккумуляторов и повышения напряжения до 5 вольт, также к ней припаян бокс для аккумулятора размера 18650.

Для удобства крепления вычислительной платы и платы питания внутри корпуса в САПР Autodesk Fusion 360 были разработаны крепления, приклеенные к тыльной стороне.

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

Итог

С появлением ПЛИС, разработчикам стало удобнее прототипировать свои устройства. И даже задача проектирование своего процессора не кажется такой невозможной. Конечно, в данном проектке был задействован лишь малый функционал данного устройства. Однако ПЛИС не пользуются высокой популярностью среди разработчиков любителей, в отличие от микроконтроллеров, хотя имеют более высокую скорость быстродействия, что может быть полезно в системах реального времени и IoT.

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

Let's block ads! (Why?)

Apple повысила купон за возврат комплекта разработчика Apple Silicon до $500 и расширила условия его использования

image

По информации MacRumors, Apple услышала недовольные отзывы разработчиков и решила увеличить размер компенсации за возврат комплекта разработчика Developer Transition Kit (DTK) до $500. Также компания увеличила срок службы купона — он будет действителен до конца года. Вознаграждение можно будет потратить на покупку любого оборудования Apple, а не только на новый Mac с M1.
Чтобы разработчики быстрее возвращали DTK, Apple уведомила, что комплекта разработчика Apple Silicon больше не будет получать общедоступные обновления программного обеспечения после macOS Big Sur 11.2. Компания рекомендует вернуть DTK как можно скорее, чтобы процесс разработки не прерывался, а сами разработчики получили новое оборудование по купону.

Эти DTK разработчики брали у Apple в аренду за $500 (около 38 тысяч рублей) на 12 месяцев по программе «Быстрый старт» (Universal App Quick Start Program). В их комплект входил специальный Mac mini с A12Z, 16 ГБ ОЗУ и 512 ГБ встроенной памяти. В случае невозвращения устройства Apple прекратит участие разработчика в своей программе — удалит его аккаунт. Apple запретила чинить DTK, изменять его комплектацию, перепродавать и использовать для работы, не связанной с разработкой и тестированием.

4 февраля 2021 года Apple попросила разработчиков в скором времени вернуть обратно компании комплекты DTK. Тестовое оборудование должно быть в оригинальной коробке и в неповрежденном состоянии. При выполнении всех условий возврата Apple обещала прислать разработчику купон на $200, который он сможет потратить на покупку Mac с чипом M1. Причем компанией было озвучено, что эта компенсация будет доступна только до конца мая 2021 года. Разработчики пожаловались, что их не устраивает такой размер компенсации от одной из самых богатых компаний в мире с рекордной прибылью в условиях пандемии.

Let's block ads! (Why?)

Является ли психология наукой и есть ли сознание у кошки


В прошлый вторник у нас выступала Ира Овчинникова — научная сотрудница Лаборатории междисциплинарных исследований развития человека СПбГУ, ассистентка-исследовательца в University of Houston.

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

Делимся с вами записью и расшифровкой эфира.



Меня зовут Ира Овчинникова, я – научный сотрудник Лаборатории междисциплинарный исследований развития человека в СПБГУ. Еще я пишу диссертацию в университет Хьюстона, поэтому я сейчас в Хьюстоне, на 9 часов назад от Москвы, и у меня сейчас где-то середина дня.

Q: психология – это наука?


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

Ответ простой: все то, что соответствует критериям научности и маркируется как наука – это наука. В 30-х годах прошлого века Карл Поппер ввел критерий фальсифицируемости теорий: то есть, любая теория может считаться научной, если ее можно опровергнуть какими-либо фактами, экспериментами на эмпирическом материале. Проблема психологии здесь очевидна: теория будет связана с общими понятиями, которые являются абстрактными, но материальный мир – он здесь и сейчас.
Для того, чтобы отвечать этому критерию, в психологии есть понятие операционализации. Это когда я беру абстрактное понятие и прихожу к конвенциональному мнению о том, как мы будем это понятие высчитывать. Таким примером будет являться скорость ответа на некие стимулы.

Я вообще – когнитивный психолог (скоро объясню, что это значит). Также это может быть скорость обработки, точность ответа, множество других понятий операционализации. Так теории, мысли, идеи, которые относятся к психологии, могут быть как научными, так и вовсе не научными. К ненаучным теориям относится классический психоанализ, например: его просто нельзя опровергнуть. Потому что, согласно классическому психоанализу, вообще все – возможно. При этом, из психоанализа за 60 лет развития мысли выросли теории, которые являются опровержимыми. Например, теория привязанности Мэри Эйнсворт, где нас интересует то, как ранний младенческий опыт влияет на развитие человека.

Далее, в психологии есть когнитивное направление. Его можно считать золотым стандартом науки, оно полностью соответствует критериям научности. К наиболее развитым относятся теории рабочей памяти Алана Бэддели; можно посмотреть множество различных теорий про то, как видоизменялось представление о рабочей памяти, как эмпирический материал, результаты экспериментов позволяли нам, как научному направлению, улучшать эти знания и делать их более точными. В данный момент теория рабочей памяти состоит из нескольких отдельных частей, которые еще не нашли своего опровержения в экспериментах. То есть, согласно Попперу, ни одна из них не будет истинной, но мы говорим, что у нас просто недостаточно материалов, чтобы ее опровергнуть. И еще проблема любой теории – методология науки в целом. Старую теорию может заменить только новая теория. Нельзя просто сказать, что старая не работает, нужно представить новую парадигму, объяснение для старых феноменов и новых парадоксов.

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

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


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

Например, МРТ, на которую вас могут отправить для определения проблем с любым органом – это обычно структурная МРТ. То есть, рентгенолог или исследователь будет смотреть, как орган выглядит и находится в пространстве.

И, если это анатомическая МРТ, то я не смогу посмотреть на то, как тот же мозг функционирует – только на то, из чего он состоит. Или меня может интересовать, например, diffusion tensor imaging (DTI) – как связаны разные части мозга. И у такого метода очень низкое временное разрешение, почти нулевое – информация берется за один момент, никакой динамики нет. Зато у него высокое пространственное разрешение, я могу видеть не только отдельные структуры, но и ядерный уровень, хотя я не буду видеть отдельные слои.

ЭЭГ – это обратная ситуация. Я накладываю на человека шапку с электродами, обладающими высоким временным разрешением, и получаю информацию с точностью до миллисекунд. Это очень высокое временное разрешение для человеческого мозга. Но пространственное разрешение будет очень низким, потому что я буду угадывать, какие части мозга реагируют. Придется использовать усредненное представление о том, как в черепной коробке расположен мозг и какие его части отвечают на сигналы.

Q: а как понять, как связаны части мозга? Pathways или анатомические структуры, которые соединяют?


Для этого есть специальный метод – это как раз DTI. Нас в этой ситуации интересует, каким образом вода реагирует на магнит, так как у вас будет происходить изменение направления молекул воды. И по этим направлениям мы выстраиваем пути белого вещества. Здесь надо понимать, что это та часть, где происходит очень большое количество программирования, потому что МРТ – это не фотоаппарат.

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

МРТ позволяет с высокой точностью предугадывать, как выглядят наши пути, но это все же – модели. В том числе и тогда, когда вы идете к врачу, и он пытается понять по вашему скану, как у вас связаны разные части мозга. Разные методы обладают разной точностью, и с годами качество методов повышается – это тоже входит в мои задачи. Здесь работают люди с разной экспертизой, и это всегда будет междисциплинарная наука, где люди с образованием в области физики, инженеры, математики, и также, в том числе, люди, занимающиеся когнитивной психологией и психологией развития, будут выстраивать максимально правдоподобную модель.

Q: но у всех людей же одинаково расположены в пространстве сосуды в отделах мозга?


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

Q: как применяете ЭЭГ в исследованиях?


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

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

Про детские дома все слышали, а дома ребенка — это структуры детского дома для детей до 4 лет (после 4 лет их переводят в детские дома, дома-интернаты). Нам интересно, каким образом такой ранний опыт влияет на развитие – как в детстве, так и в подростковом возрасте и зрелости. Наш основной фокус – это языковое развитие. Есть большая гипотеза о том, что институционализация в раннем возрасте снижает разнообразие и количество языковой информации, обращенной к конкретному ребенку.

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

Например, есть такой эксперимент, представленный в парадигме oddball paradigm – я его очень люблю. Компонент, который там представлен, называется «негативность рассогласования» (mismatch negativity). Так, например, для детей, типично развивающихся, характерно следующее: до года жизни (примерно) они могут различать звуки разных языков. Так, например, дети будут различать звуки «та», «га» и звук, который я не могу произнести (горловой звук между «Г» и «Д», часть хинди). С возрастом, к году жизни, языковые статистики накапливаются, и ребенок перестает слышать разницу между звуком хинди и русским языком, он просто перестает быть особенным, различающимся. Проявляется это так: вы предъявляете аудиально ребенку повторяющийся ряд звуков «га» (очень много), это становится линией отсутствия изменений. Дальше, когда ребенок слышит звук «та», который для него различен, на мозговой активности вы видите резкое изменение, скачок. Это и есть негативность рассогласования. До года жизни, вне зависимости от того, предъявите ли вы редким стимулом «та» или горловой звук, вы будете видеть негативность рассогласования. Если же вы проведете это эксперимент на типично развивающихся детях после года жизни (русскоязычных, это важно), то вы не увидите этой негативности рассогласования на звук из хинди, или в принципе на звуки из неродной речи.

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

При этом, если мы проводим эксперименты, связанные с более высокими структурами обработки информации – например, когда детей просят называть объекты, или когда им показывают картинку мальчика и говорят, что это цветок – информация обрабатывается дольше у детей из домов ребенка. Поэтому мы считаем, что там присутствует некоторое отставание в языковом развитии. Это мы видим и на поведенческих методиках; мы никогда не работаем только с психофизиологией, считаем, что это не очень информативно. Работа также и на поведенческом уровне позволяет сопоставить, то, что видно на уровне поведения и на уровне активности мозга. Есть ли полностью совпадающая интерпретация, или я буду видеть различия, и буду считать в такой ситуации, что на уровне поведения иногда различий нет, а на уровне мозговой активности – есть, и это не до конца сглаженное различие. Хотя оно может сглаживаться с годами, в зависимости от того, когда человек попал в семью, как долго он прожил в доме ребенка или детском доме.

Q: какая из трактовок слова «сознание» актуальна?


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

Q: Вы видели контент Виктории Степановой? Можно считать ее психологом? Она считает, что может по фото определить сексуальную ориентацию.


Нет, это невозможно. Не знаю, кто такая Степанова.

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

Насчет психотерапевтов – я могу порекомендовать сообщества, которым я доверяю, или людей, с которыми я училась (или у которых училась). Но все остальные пункты – это совсем мимо меня, я таких советов не даю.

Псевдопсихология раздражает меня потому, что мне сложнее с ней бороться. Я оказываюсь в ситуации, когда я вижу человека, с которым была в хороших отношениях лет 10 назад, и он вдруг ушел в псевдопсихологию, и я понимаю – ой, похоже, мы не будем больше общаться. Для меня это болезненно. Люди, которые только смотрят на псевдопсихологию со стороны, могут просто сказать: ну, я просто не буду с ним знакомиться. Это во-первых.

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

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

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

Лаборатория, в которой я работаю, существует в плотном сотрудничестве с фондом «Выход», помогающим семьям с людьми с расстройствами аутистического спектра. Соответственно, мы начинали проект в Санкт-Петербурге, в Приморском районе, для оценки распространенности РАС. Это заняло у нас три года, мы продолжаем этим заниматься. Это очень большой проект. Он связан с необходимостью, во-первых, наладить понимание демографической статистики в целом в конкретном регионе. Команда большая, мультидисциплинарная, работают люди, занимающиеся популяционными исследованиями. Например, когда вы оцениваете популяционное исследование, вы строите модель, в которой вы пытаетесь понять, каким образом вы можете максимально представить генеральную совокупность (это все люди, на которых вы планируете перенести этот результат; например, когда мы говорим про конкретный район, это дети, проживающие в этом районе). Вам нужно оценить численность и демографическое разнообразие генеральной совокупности, чтобы понять, где вы конкретно можете получить качественную информацию об этих детях.

Такие исследования происходят в два этапа. Первый этап – это скрининговый этап; то есть, мы определенным образом работаем с поликлиниками, опрашиваем как можно большее количество людей по короткому опроснику. В нем они отвечают особенности развития своего ребенка, отвечая на вопросы « да/нет». Есть понятие «красных флажков» — особенностей, которые характерны для детей с РАС или для расстройств развития в принципе. Когда человек набирает определенное количество «красных флажков», мы связываемся с семьей и приглашаем их на второй этап. Кроме того, мы стараемся найти детей с минимумом «флажков» — потенциально нейротипичных, и также приглашаем их в лабораторию. На втором этапе мы занимаемся полной оценкой развития, включая батарею, связанную с оценкой РАС. Таким образом, мы определяем распространенность РАС в конкретном регионе, и это позволит нам создавать дизайн исследования, которое можно будет в полной мере провести в России.

За это я люблю работу в своей лаборатории. Она не только дает мне возможность заниматься разными проектами, но и позволяет чувствовать, что я делаю что-то социально полезное.
Третий проект, о котором я хотела рассказать – это проект о расстройстве языкового развития в изолированной популяции на крайнем севере России. Этот проект для меня интересен потому, что под «изолированной популяцией» мы понимаем популяцию из всего 800 человек. Эта конкретная популяция известна этим расстройством. Мы оцениваем, каким образом расстройство языкового развития передается у них, и смотрим, как это представлено на разных поколенческих уровнях. Мы собираем рассказы у бабушек, у мам, у всех ближайших и дальних родственников для того, чтобы оценить их языковое развитие, проводим полный комплекс оценки языкового развития у детей, смотрим, каким образом происходят связи внутри одной семьи.

Q: с чего начать, чтобы научиться помогать развитию ребенка?


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

Q: какое исследование можно провести на ложные воспоминания?


Почитайте Элизабет Лофтус, это очень классно.

Для всех: ложные воспоминания – это такое событие, которое, как вам кажется, случилось с вами, вы уверены, что помните его, но на самом деле его не было. Элизабет Лофтус – психолог, исследователь памяти, человек, который больше всех вложил в развитие исследования ложных воспоминаний; про нее очень интересно читать, даже если вы не интересуетесь психологией.

История с ложными воспоминаниями выглядит следующим образом: когда вы оказываетесь, например, свидетелем аварии, то от того, как вам зададут вопрос, будет влиять то, какой ответ и каким образом вы дадите. Если разных людей спрашивать, с какой скоростью МЧАЛАСЬ машина и с какой скоростью ЕХАЛА машина до аварии, то, статистически, те люди, кого спрашивали со словом «мчалась», будут давать более высокие оценки скорости, чем вторая группа.
Элизабет Лофтус очень много работала (и работает, как мне кажется) с системой заключенных и людей, находящихся в предварительном заключении и это влияло на изменение протоколов допроса на территории США.

Q: ложные воспоминания – это дежа вю?


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

Q: может ли служить примером ложных воспоминаний детализация сна?


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

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

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

У меня есть проект про связность головного мозга у детей с опытом институционализации – это проект, который я делаю в этом семестре. Я пытаюсь взять разные метрики коннективности (связности) и написать скрипт, который позволит мне обработать один и тот же набор данных, используя разные метрики, и получить разные результаты, а дальше – написать к этому каждый раз отдельную интерпретацию и отдельное представление о том, какое заключение можно сделать. И так же сделать с данными взрослых людей с опытом институционализации. Проблема в том, что я пишу на Arc, но плохо пишу на Python и совсем не умею работать с Matlab, а это очень пригодилось бы. Мне хорошо было бы иметь в помощь кого-то, с кем можно обсуждать разные метрики. Я начинаю сейчас теорию графов, использую метрики из теории графов, но остается большое разнообразие оценочных систем, например – динамических систем. Это было бы очень в помощь.

Есть одна проблема, которая происходит с людьми, приходящими из областей, которые считаются более естественно-научными. Это как на той картинке из xkcd, где проранжированы разные научные области в представлениях о их точности, и математик говорит: «Да вас отсюда вообще не видно». Люди, которые приходят в когнитивную науку или нейронауку из более точных областей, считают, что, сейчас они возьмут тот метод, который использовали до этого – например, машинное обучение – и приложат его, а потом расскажут мне, как работает вся область знания. Это не срабатывает. Потому что для того, чтобы вам интерпретировать результаты ML (в том числе), или чтобы сделать более точную модель, надо понимать, что происходит внутри. А для этого нужно получить хотя бы часть того образования, которое люди по 10 лет получают.

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

У меня есть хороший друг, он пишет диссертацию по использованию ML с данными МРТ. Он сам физик. И примерно раз в месяц он мне говорит: данные какие-то непонятные, что тут происходит? И я ему пересказываю кусок cognitive neuroscience. Конечно, я понимаю, что для того, чтобы иметь достаточно знаний на эту тему, нужно большое количество времени, и у него этого времени просто не было. Поэтому, если вы хотите работать в нейро- или когнитивной науке и хотите прийти в проект – пишите в лаборатории, которые этим занимаются. Обязательно найдете проект, который будет вам подходить, и в котором общаться будет приятно и интересно, и вас будут в состоянии адекватно услышать.

Кстати, есть отличная смешная история на тему того, «что делать, если у меня образование физика, математика, CS и я хочу работать в нейронауке». Илон Маск какое-то время назад анонсировал компанию, связанную с нейро, чтобы построить artificial intelligence. И сделал объявление в твиттере: приходите все, нужны только предварительные знания в области инжиниринга или программирования, и нужно, чтобы не было предварительных знаний в области когнитивной психологии, нейро или чего-то подобного. Все бы ничего, но через какое-то время они делали презентацию этой компании, и на картинке с описанием мозга перепутали левую и правую части (это просто сделать, если вы никогда не смотрели на мозг и не представляете, как он устроен). Такая шутка теперь есть. Хотя я очень уважаю Илона Маска.

Q: есть ли сознание у кошки?


Сейчас я воспользуюсь этим моментом. У меня есть чудесный опыт, где я имею прекрасную возможность обсуждать наличие сознания, поведения и прочего у животных. У моих прекрасных друзей есть проект «Бобин» — это научно-просветительский проект, в котором они рассказывают про взаимодействие с собаками, про то, какие аспекты жизни и поведения собак существуют. Они ставят классные ссылки на исследования. Там можно прочитать про сознание у собак – это схожий вопрос, и ответ тоже будет схожий.

Let's block ads! (Why?)

Размышления о Rust

Всем привет. Не сразу, но я полюбил Rust. И эта любовь привела меня в бескрайние моря лоулевельного кода. О том, что мне удалось найти - под катом.

Секретный тип данных

Если вы читали Rust Book, то наверняка помните похожий код-сниппет:

fn unwrap<T>(option: Option<T>) -> T{
    let unwrapped = match option{
        Some(val) => val,
        None => panic!("This cannot be None!")
    };
    return unwrapped;
}

fn main() {
    let unwrapped = unwrap(Some(0));
}

Проверить

Конечно, здесь нет ничего необычного. Возвращаем значение внутри Option, если оно есть, либо вызываем завершение процесса с помощью макроса panic!. Но задумывались ли вы, почему этот код компилируется? Как компилятор понимает, что функция, возвращающая T, может вернуть... это?

На самом деле, всё очень просто - макрос panic возвращает тип данных "!". Документация

Тип данных "!" просит выйти из текущего блока кода. Как это использовать? Сами разработчики языка предлагают такой вариант:

#![feature(never_type)]
use std::convert::TryInto;

#[derive(Debug)]
enum ConnectionError{
    BrokenPipe,
    BadId,
    Other
}

struct Client;
struct Request;
struct Response;

impl Request{
    pub fn build_response(&self) -> Response{
        Response
    }
}

fn get_request(id: i32) -> Result<(Client, Request), ConnectionError>{
    match id % 2 == 0{
        true => {
            Ok((Client, Request))
        },
        false => {
            Err(ConnectionError::BadId)
        }
    }
}

fn init_server() -> Result<!, ConnectionError>{
    loop {
        let (client, request) = get_request(5i32)?;
        let resp = request.build_response();
    };
}

fn main() {
    let x: ! = init_server().unwrap();
}

Проверить

Однако, эта конструкция, работающая только в nightly билдах, спокойно превращается в обычный код заменой "!" на пустой тип данных "()":

fn init_server() -> Result<(), ConnectionError>{
    loop {
        let (client, request) = get_request(5i32)?;
        let resp = request.build_response();
    };
}

fn main() {
    let x = init_server().unwrap();
}

В чём же разница? Всё очень просто, в первом примере мы не сможем полностью выполнить код:

fn main() {
    match init_server(){
        Ok(v) => { println!("unreachable? {:?}", v); },
        Err(_) => {}
    }; 
}

Компилятор любезно сообщит, что ветка Ok(v) - недостижима. Разумеется, это не помешает ему запустить программу, однако мне хотелось бы обозначить такую интересную особенность. Понятно, что она была бы недостижима и во втором примере, однако если его скомпилировать, то сообщения о недостижимом коде не будет.

Почему так происходит? Потому что то, что примет значение v в данном сниппете буквально означает "выход". "!" возвращается, когда вы пишете break, continue или std::process::exit.

И, внимание, вопрос. Зачем нужна #![feature(never_type)] ? С тех пор, как я узнал об этом типе данных, я думал, где его можно применить. И такого места, кажется, нет. Во всех случаях вы будете использовать panic, expect, todo или unimplemented. К чему нужен "!"?

Странные интерфейсы

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

В Rust есть такой интерфейс (трейт - скорее абстрактный класс, но лично мне удобнее называть его интерфейсом) Fn. И вроде бы с ним всё просто - все функции и лямбда-выражения ("closures" или "замыкания", если угодно), принимающие иммутабельные входные значения, его реализуют. В чём тут подвох?

Дело в том, что, как мы знаем, нельзя создать переменную типа данных impl Trait. Но проблема в том, что такой тип данных можно вернуть из функции, и это вызывает вопросы...

use std::any::type_name;
fn type_of<T>(x: T) -> &'static str {
    type_name::<T>()
}

fn callback() -> impl Fn(f32) -> f32{
    |a| {
      a*2.  
    }
}

fn main() {
    let x = callback();
    println!("{}", type_of(x));
}

Вывод будет такой: playground::callback:: . И вот, казалось бы, переменная х имеет тип данных impl Fn(f32) -> f32, вот только если мы об этом явно напишем, то код не скомпилируется. Как мы знаем, чтобы хранить trait object, нужно использовать ключевое слово dyn. Но вот незадача - компилятор не знает, сколько памяти будет занимать этот trait object, поэтому необходимо такие вещи класть в кучу с помощью Box:

fn main() {
    let x: Box<dyn Fn(f32) -> f32> = Box::new(callback());
    println!("{}", type_of(x));
}

Но тогда и вывод поменяется:

alloc::boxed::Box&lt;dyn core::ops::function::Fn&lt;(f32,)>+Output = f32>

Я это понимаю так: компилятор знает, что это за имплементация, поэтому может рассчитать количество необходимой памяти.

Однако мне до сих пор не даёт покоя мысль, что такой код работает:

use tokio; // 1.0.2
use tokio::task::JoinError;
use futures::prelude::*; // 0.3.12

async fn job1(){}

async fn job2(){
        for i in 0..5{}
}

async fn job() -> Vec<impl Future<Output = Result<(), JoinError>>>{
    vec![
    tokio::spawn(async move{
        job1().await;
    }),
    tokio::spawn(async move{
        job2().await;
    })]
}

#[tokio::main]
async fn main() {
    let mut v = job();
}

С точки зрения логики компилятора, тут нет проблемы - tokio::spawn создаёт структуруtokio::task::JoinHandle. Да, JoinHandle - это одна и та же структура, она принимает футуру, которая создаётся блоком async{} , однако почему таски, содержащие разные async-блоки, интерпретируются компилятором как одна и та же реализация? Почему код

let v = vec![
        Box::new(async{}),
        Box::new(async{
            let cb = |x| x*2.;
            let val = cb(1f32);
        })
    ];

не выполнится, а тот, что выше, выполнится? Ведь мы передаём разные реализации футур. Поделитесь в комментариях, если у вас есть мысли по этому поводу. Я честно с умным видом полчаса изучал исходники, но так и не понял.

Заключение

Rust, каким бы хорошим ни был, порой заставляет крепко задуматься. Почему retain не меняет capacity? Почему функциональные исчисления сделали ленивыми? Почему cargo создаёт странные папки с хеш-суммами на каждый случай жизни, вместо того, чтобы собрать одни и те же библиотеки один раз (хотя, справедливости ради, это не проблема самого языка)? Как бы то ни было, если писать на плюсах - это стрелять себе в ногу, то писать на расте - это пытаться стрелять себе в ногу (и не дай бог в проекте вы используете ffi, тогда попытки могут оказаться вполне успешными).

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

Let's block ads! (Why?)

Что такое научное мышление?

Не все люди, которые утверждают, что интересуются наукой, являются носителями научного мышления. (Подробнее)

Не все люди, которые интересуются наукой, являются носителями научного мышления. (Подробнее)

Не все люди, которые утверждают, что верят в науку, являются носителями научного мышления. (Подробнее)

Не все люди, которые верят в науку, являются носителями научного мышления. (Подробнее)

Не все люди, которые утверждают, что занимаются наукой, являются носителями научного мышления. (Подробнее)

Не все люди, которые занимаются наукой, являются носителями научного мышления. (Подробнее)

Базовые идеи научного мышления:

Во-первых: Реальность и наши представления о ней это ВСЕГДА разные вещи.

Наши представления о том, как устроен мир это всегда упрощение самого мира. Это можно сравнить с территорией и картой этой территории. Гора на местности и зелёный треугольник на бумаге НИКОГДА не одно и то же! Окружающая нас реальность не знает законов физики, и ей всё равно, что мы о них думаем. Реальность будет работать так же как вчера, даже если мы изменим свои убеждения о ней.

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

«По сравнению с реальностью вся наша наука примитивна и ребячлива, но она — самое драгоценное, чем мы обладаем»

Альберт Эйнштейн

Во-вторых: Ценны убеждения ТОЛЬКО о реальности.

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

«Колесо, которое можно свободно вращать, не задевая других частей, не является частью механизма»

Людвиг Витгенштейн

В-третьих: Убеждения о реальности ОБЯЗАНЫ давать конкретные прогнозы будущего.

Убеждения, которые не дают прогнозов о реальности не являются убеждениями о реальности (как с ними поступить, смотри пункт 2).

Убеждения (в том числе научные модели) обязаны не только предполагать, как устроен мир, но и ОБЯЗАТЕЛЬНО говорить, как мир точно не устроен!

Причем делать это они ОБЯЗАНЫ как можно более конкретно и однозначно (так, чтобы разные люди, использующие одну и ту же модель давали одни и те же прогнозы).

«Наука строится на наблюдениях, а Вера — это отрицание наблюдений для сохранения собственных убеждений»

Тим Минчин

В-четвёртых: Убеждения, которые дают более точные прогнозы лучше убеждений которые дают менее точные прогнозы.

Все наши убеждения о реальности неточны (подробнее в пункте 5). Но это не значит, что все они одинаково неточны. Одни дают лучшие прогнозы, чем другие, и только поэтому они заслуживают большего внимания.

Здесь есть важная оговорка, насчёт "размера" модели и практической применимости. Но об этом в другой статье (тут будет ссылка).

«Когда люди думали, что Земля плоская, они ошибались. Когда люди думали, что Земля была сферической, они ошибались. Но если вы считаете, что первые и вторые одинаково ошибались, то Вы ошибаетесь больше, чем они все вместе взятые»

Айзек Азимов

В-пятых: Нельзя быть уверенным в чём-то на 100%.

Люди с научным мышлением стремятся построить, как можно более точные убеждения об окружающей реальности. Однако они понимают, что НИКОГДА не смогут построить на 100% точную карту.

Убеждение стоит того, чтобы в него верить, ТОЛЬКО в том случае, когда тебя в принципе можно убедить в него не верить.

«Если Вы почему то думали, что наука однозначна. Что ж, все ошибаются и Вы ошиблись»

Ричард Фейнман

P.S. Возможно, Вы уже спешите сделать вывод: «Автор этого текста не может быть уверен в этой модели на 100% (согласно пункту 5 его же статьи). А уже понатыкал тут и там категоричных: НИКОГДА, ТОЛЬКО, ОБЯЗАНЫ»

Я в свою очередь спешу Вас обрадовать. Всё так и есть. В этой модели я не могу быть уверен на 100% (как и ни в чем другом). А категоричные утверждения стоят в ней не для того, чтобы показать мою 100% уверенность (ведь её и нет), а для того, чтобы Вы смогли опровергнуть мои утверждения. Иными словами я стремился сделать их не «категоричными», а конкретными и однозначными. Надеюсь, Вы сможете найти неточности и слабые места в озвученном мною убеждении, и выстроите ещё более точное убеждение об окружающей реальности благодаря этому. Так же рассчитываю, что я и сам смогу изменить этот текст ещё не раз.

Let's block ads! (Why?)

Дуров попросил не буянить и не распространять личные данные участников протестов в Telegram

6 февраля 2021 года Дуров в своем телеграм-канале обратился ко всем пользователям мессенджера. Основатель Telegram рассказал, за последние время его команда заблокировала несколько каналов с личными данными граждан РФ, как участников протестных акций, так и сотрудников силовых структур. Дуров попросил не распространять в сервисе призывы к насилию и личные данных других людей. В противном случае авторы каналов и сами каналы будут оперативно удалены из Telegram, независимо от их политических взглядов.
Дуров пояснил, что блокировка «проблемных каналов» была сделана в рамках правил использования сервиса, которые запрещают публичные призывы к насилию. Также эти действия были необходимы для того, чтобы выпустить обновления Telegram для iOS. Apple не давала на него одобрение, пока эти каналы были доступны в сервисе.

В конце января этого года Роскомнадзор потребовал от Telegram прекратить распространение личных данных представителей правопорядка с митинга 23 января, так как публикация персональных данных граждан без их согласия противоречит закону РФ «О персональных данных» и политике конфиденциальности мессенджера.

4 февраля комиссия Совета Федерации по информационной политике предложила блокировать соцсети, включая Telegram, за наличие в них неудаленных призывов к незаконным акциям.

В начале октября 2020 года Apple потребовала от Telegram заблокировать три белорусских канала, так как публикация в них личной информации сотрудников правоохранительных органов могла спровоцировать насилие. Тогда Дуров пояснил, что «эти каналы в конечном итоге будут заблокированы на iOS, но останутся доступными на других платформах».

Let's block ads! (Why?)