Размер шрифта
Цвета сайта
Изображения

Обычная версия сайта

Метод вишневского


22. Местная анестезия по методу ползучего инфильтрата а.В.Вишневского.

Широкое распространение в настоящее время получило местное обезболивание по методу ползучего инфильтрата, предложенному А. В. Вишневским. В основе техники местной анестезии по этому методу лежит учение Н. И. Пирогова о футлярности строения человеческого тела. Сущность методики местной анестезии но А. В. Вишневскому. При этой методике анестезии достигается прямой контакт анестезирующего вещества с нервными окончаниями в области операционного поля в результате пропитывания тканей путем тугого наполнения футляров, образованных фасциями, оболочками и апоневрозами. Применяемый при этом слабый (0,25%) раствор новокаина, приготовленный на гипотонической жидкости Рпнгера с добавлением 2-3 капель адреналина на 100 мл раствора, позволяет туго заполнить футляры и исключает токсическое действие анестезирующего вещества. Состав гипотонической жидкости: NaCl - 5 г, КС1 - 0,075 г, СаСЬ - 0,125 г, Aq. destillatae - 1000 мл. Для местной анестезии необходим минимум инструментов: два 2-граммовых и два 10-граммовых шприца, а также набор игл: для анестезии кожи (образования «лимонных корок») -тонкие короткие, для подкожной клетчатки - иглы длиной 5-6 см, а для инфильтрации глубоко лежащих футляров - длинная игла (10-20 см).

23. Новокаиновые блокады по а. В. Вишневскому. Значение их в анестезии и хирургии.

24. Патофизиология, клиника, диагностика терминальных состояний. Виды терминальных состояний Предагональное состояние Сознание угнетено или отсутствует. Кожные покровы бледные или цианотичные. АД уменьшается до нуля. Пульс сохранѐн на сонных и бедренных артериях.

Дыхание - брадиформа. Тяжесть состояния объясняется нарастающим кислородным голоданием и тяжелыми метаболическими нарушениями. Терминальная пауза Терминальная пауза бывает не всегда. После ваготомии она отсутствует. Остановка дыхания, периоды асистолии 1-15 сек. Агония Предшественник смерти. Прекращается регуляторная функция высших отделов головного мозга. Управляют процессами жизнедеятельности бульбарные центры Клиническая смерть Прекращается деятельность сердца и дыхания, но нет ещѐ необратимых изменений в органах и системах. В среднем продолжительность не более 5-6 мин., зависит от температуры окружающей среды, атм. давления и т.д.

25. Мероприятия по борьбе с клинической смертью на месте происшествия .

При наступлении клинической смерти необходимо срочное проведение реанимационных мероприятий, направленных на восстановление сердечной и дыхательной деятельности, - сердечно-легочная реанимация. Она заключается в осуществлении следующих мероприятий. Человека укладывают на ровную твердую поверхность. Обе ноги поднимают вертикально и удерживают их в таком положении 5-15 с. Обеспечивают проходимость дыхательных путей. Для этого полость рта очищается пальцем или тампоном от слизи и рвотных масс, инородных тел, съемных зубных протезов. Голова запрокидывается с поднятием шеи и подбородка таким образом, чтобы нижние зубы оказались впереди верхних или в одной плоскости с ними. Далее необходимо начать проведение искусственного дыхания "изо рта в рот" или с помощью специальных масок с самораздувающимися мешками. Одновременно производится непрямой массаж сердца. Целесообразно начинать его с нанесения одного резкого удара кулаком или ребром ладони в область сердца. Это может восстановить сердечную деятельность. Однако следует помнить, что второй удар может вызвать остановку сердца. Если же после этого деятельность сердца не восстановилась, то начинают проводить закрытый массаж сердца путем ритмичного сжатия его между передней стенкой грудной клетки и позвоночником. Руки реаниматора располагаются одна над другой таким образом, чтобы основание ладони, лежащей на грудной клетке, находилось строго по средней линии. При этом надавливания осуществляются плавно и ритмично за счет массы реаниматора, не сгибая рук. Глубина вдавливания грудины должна быть примерно 4-5 см, а частота надавливаний 80-90 раз в минуту. Таким образом, если реанимационные мероприятия проводит один человек, на 15 надавливаний должно производиться 2 вдоха. Если же реанимацию осуществляют 2 человека, то на 5 надавливаний приходится 1 вдох. Эффективность реанимационных мероприятий контролируют по исчезновению бледности кожных покровов, сужению зрачков и появлению их реакции на свет, появлению самостоятельного дыхания и пульса на сонных артериях.

3. Достоинства инфильтрационной анестезии по а.В. Вишневскому.

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

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

Достоинства метода заключаются в следующем:

1. Тугая инфильтрация дает возможность проводить разрез тотчас после инфильтрации.

2. Слабая концентрация анестетика и тугая инфильтрация резко ограничивают всасывание, в связи с чем отсутствует опасность интоксикации.

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

4. тугая инфильтрация облегчает условия препарирования тканей.

5. Более гладкое послеоперационное заживление раны.

Билет 10

1. Инфильтрационная анестезия по а.В. Вишневскому. Анестетики.

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

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

Местная инфильтрационная анестезия способом ползучего инфильтрата с использованием 0,25 % раствора новокаина или тримекаина в большинстве случаев является достаточной для выполнения ряда несложных оперативных вмешательств (неосложненная аппендэктомия, первичная хирургическая обработка ран и пр.). Особенностью его является то, что после анестезии кожи и подкожной жировой клетчатки анестетик вводят в достаточном количестве в соответствующие фасциальные пространства операционной области. Таким путем формируют тугой инфильтрат, который за счет высокого гидростатического давления в нем распространяется на значительном протяжении по межфасциальным каналам, омывая проходящие в них нервы и сосуды. Низкая концентрация раствора анестетика и удаление его по мере вытекания в рану, практически исключает опасность интоксикации. Ее основоположником является выдающийся российский хирург А.В. Вишневский.

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

Си-Эн-Эн —

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

Кандидат от либеральной партии "Яблоко" Борис Вишневский баллотируется, чтобы сохранить свое место в Законодательном собрании Санкт-Петербурга в конце этого месяца. Парламентские выборы в России пройдут с 17 по 19 сентября. , в ходе которого регионы будут выбирать депутатов Государственной Думы – нижней палаты российского парламента. Также будут избраны несколько региональных и муниципальных глав.

Но Вишневский сказал, что два других Бориса Вишневских выступают против него и изменили свою внешность, чтобы больше походить на него, назвав ситуацию «мошенничеством» в воскресном посте в Твиттере. Разместив фото троих в предвыборном бюллетене в Твиттере, Вишневский назвал их своими «двойниками».

В списке кандидатов в депутаты Законодательного собрания Санкт-Петербурга по одному округу баллотируются три Бориса Вишевских.

Александр Фарнсворт/dpa/AP

CNN связался с двумя другими кандидатами для комментариев, но пока не получил ответа.

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

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

«Очевидно, что другого способа помешать мне [победить] нет», — говорит Вишневский, когда его спрашивают, почему, по его мнению, это произошло.

В списке кандидатов в депутаты Законодательного собрания Санкт-Петербурга трое Борисов Вишневских баллотируются по одному и тому же округу № 2 Санкт-Петербурга – Василеостровскому избирательному округу.

6620719 06.08.2021 Министр по делам гражданской обороны, чрезвычайным ситуациям и ликвидации последствий стихийных бедствий Евгений Зиничев в вертолете осматривает ущерб от лесных пожаров в некоторых районах Челябинской области. Алексей Никольский / Sputnik via AP

Алексей Никольский/Sputnik/AP

Министр России Евгений Зиничев погиб во время учений в Арктике

Единственная разница заключается в их отчествах, которые обычно происходят от имени отца. Помимо кандидата от партии «Яблоко» 65-летнего Вишневского Бориса Лазаревича, есть Вишневский Борис Геннадьевич, 43 года, и Вишневский Борис Иванович, 59 лет. Последние два кандидата баллотируются как самовыдвиженцы.

Для двух последних на сайте избирательной комиссии в скобках указаны прежние имена: Шмелев Алексей Геннадьевич и Быков Виктор Иванович. Оказывается, они решили сохранить только отчества.

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

«Все остальные партии — это путинские партии в разных костюмах, — говорит он. «Все они так или иначе поддерживают политику Путина». В Санкт-Петербурге Вишневский — один из главных оппонентов нынешнего градоначальника Александра Беглова.

Российский миллионер и политик Игорь Редькин приговорен к двум месяцам домашнего ареста в качестве меры пресечения за случайный выстрел в человека, которого он принял за медведя, возле свалки возле поселка Озерновский Усть-Большерецкого района, сообщает РИА Новости.

Партия «Единая Россия»

Российский политик-миллионер застрелил человека, которого, по его словам, принял за медведя

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

Двое других Вишневских баллотируются независимо, но один связан с правящей партией «Единая Россия» и много лет был ее заместителем. До недавнего времени 592-летний Виктор Быков – ныне Борис Иванович – был главным помощником вице-спикера Законодательного собрания Сергея Соловьева.

В понедельник Вишневский подал официальную жалобу председателю ЦИК Элле Памфиловой с требованием провести проверку и предоставить информацию об первоначальных фамилиях кандидатов сразу под их новыми на предвыборных плакатах в центрах территориальных избирательных комиссий. .

Памфилова назвала такие средства агитации «издевательством», но заявила, что закон позволяет баллотироваться на выборах однофамильцам Бориса Вишневского.

Председатель Центризбиркома Элла Памфилова заявила, что у них нет законных оснований для увольнения кандидатов.

Артем Геодакян/ТАСС/Getty Images

«Я считаю, что это просто позор, безобразие. Это уже крайняя, нижняя точка падения для тех политтехнологов, которые обслуживают своих клиентов. Это просто издевательство над избирателями», — заявила Памфилова в понедельник радио «Коммерсантъ FM».

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

Во вторник петербургская избирательная комиссия, независимая от Центральной избирательной комиссии, отклонила жалобу Вишневского, сообщило государственное информационное агентство ТАСС.

ЭДИНБУРГ, ШОТЛАНДИЯ - 20 августа: Писательница Сара Рейнсфорд принимает участие в фотосессии во время ежегодного Эдинбургского международного книжного фестиваля в Charlotte Square Gardens 20 августа 2018 года в Эдинбурге, Шотландия. (Фото Симоне Падовани/Пробуждение/Getty Images)

Симоне Падовани/Пробуждение/Getty Images

Корреспондент Би-би-си в России называет ее неизбежное изгнание «шокирующим» и говорит, что она никогда не сможет вернуться

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

Такая стратегия не является беспрецедентной в российских предвыборных баталиях.

Считается, что этот метод был впервые реализован еще в 1998 года на выборах в Законодательное собрание Санкт-Петербурга, когда два человека с одинаковыми именами баллотировались против Сергея Миронова.

С тех пор несколько раз однофамильцы бегали друг против друга в одних и тех же округах в разных регионах России.

В июле газета «Коммерсантъ» обнаружила среди кандидатов на предстоящие выборы более 20 пар выдвиженцев с одинаковыми или одинаковыми фамилиями.

Памфилова назвала выдвижение некоторыми партиями двойников кандидатов на сентябрьских выборах «грязной технологией, направленной на обман и введение в заблуждение избирателей», сообщает ТАСС.

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

Обсуждение темы "Почему я больше не рекомендую Юлю" Юрия Вишневского - Сообщество

Джулия Язык программирования

Кедровый Принц

#1

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

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

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

~ TCP

P. S. Дополнительные обсуждения за пределами сообщества Julia см. здесь: https://news.ycombinator.com/item?id=31396861

63 лайков

16 мая 2022 г., 14:39

#2

К сожалению, я думаю, что автор прав. У меня есть опыт работы только с Python, Julia и Rust (и немного с Perl), но я никогда не встречал даже близко такого количества ошибок в других языках, как в Julia. Как в пакетах, так и в Базе.

Вопрос в том, почему.

Я думаю, это комбинация:
A) Чрезвычайно общий язык, в котором все построено на общих абстракциях и общих, расширяемых функциях, и
B) Нет возможности специфицировать или проверять абстрактные интерфейсы, так что никто на самом деле не знает что являются ли эти общие абстракции или нарушают ли они их.
C) Нет четкого способа указать, что является внутренним поведением пакета/функции/структуры, а что является стабильным, а это означает, что слишком легко полагаться на внутреннее поведение.

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

90 лайков

16 мая 2022 г., 14:52

#3

Мое предложение по этим вопросам корректности и мое предложение по вопросам производительности/статической компиляции в основном одинаковы — должно быть «ядро» Julia (как в Base, так и в других библиотеках), которое вовсе не является общим и по существу Код C написан на Джулии. Этот код не должен охватывать бесконечный набор типов (поэтому возможно тщательное тестирование), и этот код может быть тривиально статически скомпилирован, если компилятор улучшится, потому что точно, какие методы существуют и какие вызываются, можно было бы полностью определить статически.

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

33 лайков

аплавин

#4

Ого, правда?

github.com
JuliaStats/StatsBase.jl/blob/d9cb8f8d6198e5813562e1efffe74fe3614d047e/src/deviation.jl#L15-L16
 
  1. для i = 1:n
  2. @inbounds, если a[i] == b[i]

Удивлен такой индексацией, особенно с @inbounds , в пакете , который широко использовался .

4 лайка

не-джедай

#5

Я открыл вопрос о добавлении пропуска для обнаружения для i=1:length(v) в StaticLint. По крайней мере, кажется, что эта конкретная проблема может быть легко решена с помощью инструментов.

https://github.com/julia-vscode/StaticLint.jl/issues/337

18 лайков

dave.f.kleinschmidt

#6

Если вы посмотрите на вину git, то увидите, что этому коду уже 8 лет: StatsBase.jl/src/deviation.jl at d9cb8f8d6198e5813562e1efffe74fe3614d047e · JuliaStats/StatsBase.jl · GitHub Pull Requests приветствуется!

10 лайков

аплавин

#7

Уже есть PR, который (частично) устраняет проблему смещения осей: https://github. com/JuliaStats/StatsBase.jl/pull/722.

2 лайка

16 мая 2022 г., 15:44

#8

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

Но, как я уже сказал, я думаю, что к духу этого нужно отнестись очень серьезно. Не говоря уже об обсуждении Zygote и Pytorch/JAX, которое открывает новую банку червей.

10 лайков

роланд-КА

#10

Я не понимаю проблемы. На несколько строк выше этого кода есть проверки длины обоих массивов.

Рашид

#11

Роланд-КА:

Несколькими строками выше этого кода есть проверки длины обоих массивов.

Дело не в длине. Код предполагает, что a и b имеют индексы из 1:length(a) , что не относится ко всем абстрактным массивам, например, к OffsetArrays.

12 лайков

Акац

#12

Это один из способов решения проблемы. Другой способ — найти абстракции, которые могли бы немного «приручить» компонуемость, как выразился Майк:

.

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

Именно за это я здесь и выступаю. Но не уверен, что это возможно на этом позднем этапе.

Проблема гибкости и структуры выходит за рамки компонуемости и касается корректности преобразований компилятора и предсказуемости модели производительности Julia. Две проблемы, которые обострились из-за AD, GPU и других вещей, которые мы теперь задаем семантике Джулии, на которую ссылается проблема зиготы, но идет дальше. Полный динамизм Джулии нуждается в небольшом ограничении, даже если он согласится, если он когда-либо достигнет обещанного полного языкового diff-программирования + возможности компоновки + GPU. В настоящее время он пытается сделать это специальными способами, такими как неизменяемые массивы и чистые dl-фреймворки… но если у вас есть чистота без обработки эффектов, это просто Jax (за исключением без TPU, оптимизации linalg и удаления копии обновления на месте (пока?)).

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

Dex — хороший пример языка, который пытается найти баланс (см. снова (Состояние машинного обучения в Джулии — № 25 от Akatz и проблема dex о специальном полиморфизме и чистоте, но с обработчиками эффектов. Может быть, у Джулии есть другой локальный оптимум??? Но это сложная проблема проектирования

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

Хотя, насколько Enzyme может помочь, еще неизвестно… но даже если он работает, он связывает Джулию с LLVM (поэтому нет компиляции в XLA и TPU) и не уверен, насколько хорошо он будет работать с кодом ветвления высокого уровня.

6 лайков

КолинКейн

№13

Я согласен, что было бы полезно иметь доступную систему для тестов интерфейса (т. е. регистрировать тесты для AbstractArrays, которые автор пользовательского типа массива может легко найти и запустить для своего собственного типа). Компания Invenia опубликовала пакет и/или рабочий процесс для тестирования интерфейса, но он малоизвестен, и для того, чтобы все получилось правильно, требуется немало церемоний. Это может установить, например, дополнение должно быть коммутативным для некоторого абстрактного типа или важных фактов о том, как должна вести себя итерация.

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

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

Я не вижу быстрого решения проблем корректности с нашими библиотеками статистики. Возможно, кто-то мог бы написать еще кучу тестов или скопировать тесты из библиотек R или Python, которые выполняют аналогичную работу?

6 лайков

мкити

№14

Роланд-КА:

Я не понимаю проблемы. На несколько строк выше этого кода есть проверки длины обоих массивов.

Проблема в том, что допустимыми индексами являются 1:length(a) . Этого нельзя предположить для произвольного AbstractArray :

 julia> с использованием OffsetArrays julia> A = OffsetArray(1:10, -2) 1:10 с индексами -1:8 Юлия> A[длина(A)] ОШИБКА: BoundsError: попытка доступа к 10-элементному OffsetArray(::UnitRange{Int64}, -1:8) с eltype Int64 с индексами -1:8 по индексу [10] Трассировки стека: [1] throw_boundserror(A::OffsetVector{Int64, UnitRange{Int64}}, I::Tuple{Int64}) @ База .\abstractarray.jl:691 [2] контрольные границы @ .\abstractarray.jl:656 [встроенный] [3] getindex(A::OffsetVector{Int64, UnitRange{Int64}}, i::Int64) @ OffsetArrays C:\Users\kittisopikulm\.julia\packages\OffsetArrays\N7ji6\src\OffsetArrays.jl:428 [4] область действия верхнего уровня @ REPL[100]:1 

6 лайков

мкитти

№15

КолинКейн:

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

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

7 лайков

мкити

№16

Этот запрос на вытягивание был указан как решение некоторых проблем.

https://github.com/JuliaStats/StatsBase.jl/pull/722

Очевидно, что в этот запрос на вытягивание было вложено много усилий. Как мы можем помочь @Lilith объединить этот запрос на извлечение? Похоже, у @nalimilan еще остались нерешенные вопросы.

Кроме того, что мы можем предложить в целом по пулл-реквестам для увеличения скорости слияния?

6 лайков

Henrique_Becker

# 17

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

  1. Сравнение проводится со старыми и более распространенными библиотеками. Хотя это законная точка зрения для выбора того, что использовать для вашей работы прямо сейчас, ну, это несправедливо в более общем смысле. Сравнение должно проводиться между экосистемами/языками на одном уровне зрелости. Меня больше интересует вопрос, будут ли у Джулии эти проблемы, когда она достигнет того же возраста и популярности, что и другие языки/фреймворки сейчас.
  2. Хотя я понимаю системный аргумент (и, фактически, я использую его для таких тем, как расизм и дискриминация в целом), примеров немного не хватает. Проверка псевдонимов не кажется мне обязанностью большинства функций (т. е. вы не должны предполагать, что можете передать один и тот же объект как два разных аргумента, если не указано иное), и проблема границ также более тонкая. Код может быть правильным для версии Джулии, он был написан , но случайно сохранен для более новой версии. Я думаю, что мое несогласие коренится в другой точке зрения, в которой я согласен с тем, что дополнительная гибкость общности стоит того, чтобы я проверил, действительно ли части работают хорошо вместе, вместо того, чтобы предполагать, что они будут работать безупречно. Элемент несправедливости в этом сравнении, на мой взгляд, заключается в том, что нам нужно сравнивать с таким же гибким языком, поэтому Python справедлив (просто у него было намного больше времени, чтобы созреть), другие языки не допускают общности, которую Джулия будет позволяют, и поэтому ошибки не могут быть привязаны к самому языку, но вместо этого ошибки будут закреплены за каждой отдельной повторной реализацией метода, потому что язык не допускал общности. С 9 проблем много0149 OffsetArrays.jl , но в большинстве других языков нет даже чего-то вроде OffsetArrays.jl или ожидания того, что большая часть написанного кода будет автоматически работать с пользовательскими индексами.

Вывод статьи немного мутный. Статья представляет собой личное воспоминание о фактах, связанных с изменением позиции автора, поэтому не лезет из кожи вон, чтобы предложить решение, и даже допускает, что то, что обозначено как системная проблема, может быть неразрешимым (возможно, ей присуще к высокой общности?). Утверждение «Для большинства вариантов использования, которые команда Julia хочет обслуживать, риски просто не стоят вознаграждения». Вероятно, это самое сильное утверждение в статье, и его трудно опровергнуть, но не потому, что оно правильное. но потому, что это слишком неформально (каковы «большинство вариантов использования, которые команда Джулии хочет обслуживать», как вы проводите этот анализ риска/вознаграждения для каждого из них?). Каждый может аргументировать только свой вариант использования, например, в моем случае я думаю, что риск/вознаграждение того стоят, но автор статьи может сделать такое общее заявление, не представляя этот анализ в своей статье (опять же, он даже не сравнивает метрики с другими языками/фреймворками, поэтому единственное действительно серьезное утверждение состоит в том, что у Джулии есть проблемы, даже не в том, что она хуже других).

Я частично согласен с проблемой общности, под этим я подразумеваю: мы могли бы иметь то, что имеем сегодня (с точки зрения общности), но с меньшим количеством ошибок. Я не думаю, что ошибка в дизайне языка, компромисс был сделан, и мне нравится компромисс (конечно, не будет лучшим для каждого варианта использования, но ни один язык не будет). Думаю, проблема внутри сообщества, но не в том смысле, который подразумевает автор статьи. Я считаю, что интерфейсы должны оставаться (с технической точки зрения) такими же, как сейчас, но лучше описываться их авторами, и ответственность за каждый модуль, предлагающий использование какого-либо интерфейса (в том числе на Base ), чтобы предоставить набор тестов, который проверяет инварианты для объекта типа, реализующего интерфейс. Если объект/тип проходит набор тестов, но не работает с функцией, предполагающей, что объект реализует такой интерфейс, то проблема внутри функции (она неправильно понимает интерфейс).

29 лайков

бкаминов

# 18

Энрике_Беккер:

Много проблем с OffsetArrays.jl

Это побудило меня запустить пул. Правильно ли OffsetArrays.jl реализует методы для eachindex с учетом контракта, указанного в строке документации?

  • Да
  • Некоторые правильные, а некоторые неправильные
  • Трудно сказать

0 избиратели

2 лайка

7 16 мая 2022 г. , 18:10

# 19

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

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

Решение? Я не знаю. Я думаю, более тщательно написанные тестовые примеры и больше документации для объяснения дизайна и обучения пользователей. Но многие авторы пакетов не относятся серьезно к тестированию и документации — людей часто обманывает охват кода, и они думают, что он близок к 100%. Абсолютно нет. Покрытие вашего кода может быть намного меньше 10%, если говорить обо всех допустимых входных композициях.

Говоря о количестве строк, компоновка и гибкость Julia означает, что часто требуется соотношение кодов src-test 1:1 или даже 1:3 только для того, чтобы убедиться, что «большинство» вещей работает. — но большинство людей тестируют только один или два варианта использования, чего далеко недостаточно. Если вы проверите кодовую базу OffsetArrays.jl, используя cloc , вы найдете примерно 900 строк в src и 2200 строк в test .

Когда я пытаюсь полагаться на пакет, который не поддерживаю, я часто проверяю, насколько тщательно авторы пишут тесты. Если тесты плохо написаны, я бы воздержался от их использования — независимо от того, насколько хорошими они себя заявляют. В связи с этим я очень, очень ценю то, как @oxinabox пишет тесты во всех поддерживаемых ею пакетах (ChainRules даже сопровождал вспомогательный тестовый пакет ChainRulesTestUtils), и мне всегда повезло, что мои первые несколько вкладов Julia были на ее рассмотрении.

Даже если мы сделали все возможное (я очень старался писать тесты при разработке JuliaImages), мы все равно всегда получаем неожиданный отчет об ошибке, когда пользователи не следуют дизайну. Например, я передаю Array{<:Colorant} в Distances , что является большим сюрпризом для специалистов по статистике. И пока мы не начнем вводить более строгие ограничения в отношении аннотаций типов функций, у нас мало что можно будет сделать, но мы хотим построить общую открытую экосистему.

52 лайков

Henrique_Becker

#20

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

Но чтобы ответить на ваш вопрос, это зависит от того, что OffsetArrays.jl «выбрало быструю линейную индексацию», как eachindex говорит:

каждый индекс(А…)

Создайте итерируемый объект для эффективного посещения каждого индекса AbstractArray A. Для типов массивов, которые выбрали быструю линейную индексацию (например, массив), это просто диапазон 1: длина (A). Для других типов массивов возвращайте специализированный декартов диапазон для эффективного индексирования массива с индексами, указанными для каждого измерения. Для других итераций, включая строки и словари, возвращайте объект итератора, поддерживающий произвольные типы индексов (например, индексы с неравномерным интервалом или нецелочисленные индексы).

С другой стороны, мне очень не нравится определение Base.eachindex , и я бы предпочел его изменить.

2 лайка

мкити


Learn more

 

2011-2017 © МБУЗ ГКП №  7, г.Челябинск.