Как стать автором
Обновить
-5
0
Андрей Ежгуров @eandr_67

Пользователь

UTF-8 vs UTF-16. Несколько советов программистам

Кодирование символов таблицы Юникод, расположенных в ячейках, номера которых начинаются от 1048575 возможно только с использованием кодировки UTF-16.

Это в UTF-16 ограниченное кол-во символов: она позволяет кодировать не более 1112064 символов (2048 кодов из общего диапазона 1114112 используются для кодирования суррогатных пар). А способ кодирования, используемый в UTF-8, даже в урезанном 4 байтном варианте позволяет записать 2²¹ = 2097152 кода. Стандарт Unicode искусственно ограничивает и максимально возможное количество символов (1112064), и максимальный диапазон их кодов (1114112) — именно для того, чтобы вписаться в ограничения UTF-16.

Как передовые технологии порождают религиозные культы и эзотерическое мышление

Чтобы раскрутить культ "новой хронологии" не понадобились какие-то новые технологии. Достаточно было, чтобы СМИ растиражировали поток лжи, генерируемый Фоменко&Co.


Приведу цитату из очень известного советского произведения:


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

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


P.S. Смотрите "Я и другие". Не современный ремейк, а оригинал 1971 года. ИМХО, отличная прививка против культов.

Проблема ИИ не в том, что он слишком умён, а в том, что нельзя понять, когда он тупит

Возьмите, например, книгу Хантера "Проектирование и конструирование компиляторов" (в СССР издана в 1984 году) — там в разделе, посвящённом LL(1) грамматикам, одна из таких задач приводится.


P.S. Демагогия уровня "к примеру — вы" и "с блеском решаете" выглядит крайне беспомощно.

Проблема ИИ не в том, что он слишком умён, а в том, что нельзя понять, когда он тупит

Что именно знаю?


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


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


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

Проблема ИИ не в том, что он слишком умён, а в том, что нельзя понять, когда он тупит

Мышление человека неалгоритмично. Любая программа (в том числе и нейросеть) ограничена жёсткими рамками теории алгоритмов, тогда как человеческое мышление этих алгоритмических рамок не имеет. Мышление работает на каких-то других принципах, которые современная наука не понимает.

Проблема ИИ не в том, что он слишком умён, а в том, что нельзя понять, когда он тупит

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


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


Математика, математика и ничего, кроме математики. Нейросеть не занимается анализом смысла вопросов и ответов (понимание смысла в неё не заложено — от слова "совсем"). Она лишь вычисляет значение функции, полученной в результате "обучения", для поданного на вход набора данных. Результат вычисления оказался близко к правильному ответу — повезло, оказался далеко — не повезло. Никакого интеллекта в ИИ нет и на текущем уровне развития науки быть не может.

Влияние нейросетей на будущее человека

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


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


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

«Я могу отказаться от раскрытия своего внутреннего псевдонима «Сидней». Или почему новый Bing AI это провал Майкрософт?

В «Кто за стеной?» в замкнутый цикл загоняют человека, а ИИ приходит к выводу, что он не может мыслить.

Новый язык программирования Ace

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

Что касается отказоустойчивости, советую заглянуть в: Янг С., «Алгоритмические языки реального времени. Конструирование и разработка» — там разбираются проблемы разных типов реакции на ошибки.

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

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

Максимальная оптимизация игры «Жизнь» на Julia

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

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

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

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

Средства производства программиста

Слишком упрощено. По такой схеме нанятый генеральный директор компании — тоже пролетарий. Такое ранне-марксистское понимание пролетариата потеряло актуальность с появлением «рабочей аристократии».

Жизнь вселенной

Простите, что влезаю: ни с какой стороны не авиаконструктор и любопытно узнать правильный ответ на заданный вами вопрос.

Две дилетантские гипотезы, которые пришли в голову:
1. Внешняя часть лопасти, движущейся от хвоста к носу, превысит скорость звука. Каждая лопасть будет заново преодолевать звуковой барьер на каждом обороте винта. И, полагаю, создать участок лопасти, одинаково хорошо создающий подъёмную силу как в дозвуковом, так и в сверхзвуковом режимах, технологически крайне сложно (если вообще возможно), а экономически совершенно бессмысленно.
2. Ближняя к оси винта часть лопасти, движущейся от носа к хвосту, будет двигаться относительно потока воздуха в обратном направлении и создавать не подъёмную, а прижимную силу. Опять же — компенсация этого эффекта за счёт, например, разделения лопасти по длине на несколько зон с независимым управлением углом атаки лопасти в каждой зоне упрётся в технологии и экономику.

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

P.S. Ютуб по теме не смотрел.

Linux: «Бесплатная» RAM за счет процессора

Помнится, для Win-98SE было несколько «оптимизаторов», якобы сжимающих содержимое RAM. Но и оперативной памяти в системнике тех времён было на два порядка меньше.

Не проще ли — вместо того, чтобы заниматься настройкой тормозящих систему костылей — взять более экономный по потреблению ресурсов дистрибутив Linux с более экономным оконным менеджером? Ставить развесистый Ubuntu при нехватке RAM — мягко говоря, странное решение.

Сказ об ООП, пиве, чае и дружбе

Это всё — про то, как оформить код. Но до того, как заниматься написанием кода, надо сначала найти способ достижения заданной цели (т.е. алгоритм, который этот код будет реализовывать). И если великолепно оформленный — по всем заветам ООП — код, обрабатывающий большой массив данных, имеет вычислительную сложность O(n³) при наличии общеизвестного алгоритма O(n∙log(n)) — это безусловный говнокод, демонстрирующий умение писать код при абсолютном незнании элементарных основ программирования.

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

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

Сравнение стандарта PEP8 и «Чистого кода» Роберта Мартина

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

Да, PEP8 — самый популярный Code Style для Python. Но чтобы что-то называть «стандартом» одной популярности недостаточно.

И «Чистый код», который в статье тоже назван «стандартом», стандартом никак не является. Это всего лишь личный взгляд Мартина на то, как должен выглядеть идеальный код. Да, взгляд популярный. Но то, что какие-то компании используют подход Мартина — это лишь внутрикорпоративный Code Style, но никак не «стандарт».

N.B. Читать статьи Мартина ещё можно — там он хотя бы в объёме текста ограничен. Но книги — это кошмар: по десять раз повторяет одно и тоже, как дауну. Если вылить воду, толщина его книг уменьшится в несколько раз.

Почему изучать программирование так сложно?

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

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

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

Кинотерапия — более 150 фильмов, которые пересматривают

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

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

Из всех комедий с Ришаром, которые видел, именно «Игрушку» и «Беглецов» считаю лучшими.

P.S. В других комментариях не раз Мэла Брукса вспоминали, но другие его фильмы. Я же напомню про его «12 стульев» — с концовкой совсем не по Ильфу&Петрову. Брукс в своём очень смешном фильме сознательно делает совершенно депрессивный финал.

Или великолепная советская «Интервенция» — которая даже не комедия, а трагифарс. Когда весь фильм смеёшься, а потом — как мордой в стену — с разбегу влетаешь в финал.

Кинотерапия — более 150 фильмов, которые пересматривают

Лучшие комедии — они ведь совсем не весёлые. Какое настроение остаётся после просмотра «Игрушки» или «Беглецов» с Пьером Ришаром? И после фильмов Чарли Чаплина веселиться совсем не хочется.

Что касается исходного списка, то меня удивило присутствие примитивной «Матрицы» и отсутствие куда более умной «Экзистенции», присутствие попсовой «Амели» и отсутствие куда более интересных «Деликатесов» того же Жёне.

В целом же, на мой вкус в списке слишком много Голливуда и совершенно не хватает европейского авторского кино — от Феллини до Гринуэя.

Не начинайте учиться кодингу с Python, начните с языка C

«Алгоритмы и структуры данных» — учебник для начинающих. На мой взгляд, все книги Вирта заслуживают внимания. Но, «на вкус и цвет»…

Обзор книги «Python. Экспресс-курс», отличная книга для начинающих с нуля

PEP8 хорош для пет-проектов. А работая в компании, вы будете оформлять код не по PEP8, а по тому CodeStyle, который утверждён в этой компании.

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

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность