Потому что если Visa/Mastercard/PayPal скажут, что из-за одного конкретного примера они получают негативную огласку ("Ааа, они позволяют покупать это!") и в связи с этим вообще перестают обслуживать весь Steam или Itch - что тогда?
Потому что типы данных в программировании в принципе лучше рассматривать со стороны теории категорий. Например, есть категория/тип под названием "множество" / "set", есть пачка функций над объектами этой категории (всякие пересечения-объединения), а дальше-то что? Тот же размер множества сам не является множеством. Просто представьте, что
(unordered_set{1,2,3,2}).size()
возвращает не число 3, а unordered_set{3}. Да, можно идти аж из ZF и определить числа как очень специфические множества, только вот в программировании мы так не делаем (кроме ну совсем уж специфических случаев). Зато теория категорий такая "Дык это ж две разные категории" - и всё. У чисел одни гомоморфизмы, у множеств - другие, наслаждаемся. Зато теория категорий описывает и, самое главное, доказывает корректность многих "трюков". Например, что разные виды полиморфизма эквивалентны, то есть перегрузка функций, шаблонные классы и "any + пачка if для уточнения типа" - это одно и то же по фактическим возможностям, нет такого алгоритма, который бы принципиально мог использовать один вид полиморфизма, но не мог другой (разумеется, с поправкой на возможную слабую выразительность языка). У нашего любимого профессора по имени Bartosz Milewski есть прекрасные лекции "Category theory for programmers", они в своё время буквально перевернули моё видение махинаций с типами. Очень рекомендую.
Так ведь через USB-C Он и заряжается, и сигналы передаёт, так что всё +- сходится. И Nintendo нигде не заявляла, что Switch использует стандартный DisplayPort, например. С другой стороны, даже V-USB для микров AVR позволяет легко использовать кастомный USB-класс, с которым не сможет работать никто "посторонний" - это же нормальная ситуация?
Множество как тип данных - это не из теории множеств, это из теории категорий. Кстати, что такое "средний айтишник"? Вот мне периодически приходится работать с 3D-графикой с её матрицами - я ещё средний? А те, кто делает мат. пакеты типа BLAS - они тоже средние, ведь они тоже не используют дедукцию и бесконечные ординалы?
Во-первых, это транслирует позицию/мнение разных сторон в ваш пузырь "а на самом деле так"а. Полезно хотя бы для кругозора.
Во-вторых, у этого Иван Иваныча на самом деле может работать не так, как у вас. Например, через мой домашний Wi-Fi я спокойно могу играть в некоторые мобилки,, при этом на роутере у меня нет никаких особых средств, а вот через сотовую сеть - не могу, просто по таймауту отваливается. Теперь представьте, что Иван Иваныч играет в эти мобилки через эмулятор Android (которому всегда нормально, он же через роутер ходит), а у вас пароля от Wi-Fi нет, вы пытаетесь зайти через 4G И не можете. Кто прав в такой ситуации?
В-третьих, даже если Иван Иваныч вот прям совсем, объективно не прав, но он считает что его слова соответствуют истине (неважно, искренне он верит или актёрствует) - почему его мнение не должно быть транслировано дальше, особенно если это официальная позиция? Ну посмейтесь, ну покрутите пальцем у виска.
В-четвёртых, вы буквально предлагаете цензуру. Буквально "есть два мнения - моё, и запретить-непущщщать".
Кстати, есть и забавная обратная сторона: небольшому подмножеству живых цифровых художников не повезло писать в стиле, очень уж похожем на типичное нейротворчество. Вот так увидишь картинку - подумаешь что очередной промптхудожник накашлял в ЧатГПТ, а потом откроешь профиль - а там все работы такие, уже лет 10. А ведь 10 лет назад трава была зеленее, Open AI - ещё open, а из нейрогенерации была разве что DeepDream с её собаками из глаз.
Типографика - это хорошо. То, что вводить корректные символы намного сложнее "поддельных" - нехорошо. В дополнение к тире, надо не забывать, что правильные кавычки - это когда “так” или «эдак», но не "вот так". А многоточие - это один символ … вместо ... Кстати, во многих довольно авторитетных англоязычных источниках тире пишется без пробелов по бокам—вот так.
Нейросети очень любят их использовать (потому что это правильно), а люди -- нет (потому что на клавиатуре отсутствует). Ладно всякие письма, там и почтовый клиент может подсказать, а вот в комментариях они почти наверняка указывают на нейросетевое происхождение.
Смысл потоковых форматов не только в том, что они преобразуются в корректное, хоть и не полное, состояние автоматигески просто при линейном чтении (выше уже писали, что парсер на событиях написать несложно, да и условный RapidJSON имеет как DOM, так и SAX-интерфейсы).
Потоковые форматы ещё можно "промотать" - и они всё равно будут собираться в корректное состояние. Вы можете закодировать условный видеофайл так, что у вас будет ровно один ключевой кадр в начале, а потом только дельты - тогда у вас просто не будет выбора, вам придётся декодировать 2 часа фильма, чтобы посмотреть только сцену после титров. Но этот же условный видеофайл может быть разбит на кучу отдельных блоков со своими ключевыми кадрами и необходимыми метаданными - тогда он очень даже потоко-пригодный. Видео и аудио позволяют такие "шалости" потому что в общем случае текущее состояние (кадр или частота+громкость) очень мало зависят от того, что было давно, потому что новые данные "перезатирают" старое состояние. Это очень редкое свойство для абстрактных данных в вакууме, и почти всегда решается не на уровне формата, с на уровне использования этого формата. Та же пагинация - это по сути создание "потокового" представления контента, что особенно наглядно на страницах с бесконечной прокруткой, типа лент соцсетей или чатов в мессенджерах.
Интересно, насколько этот самый (мифический?) "алгоритм" есть инструкция (для отдела кадров, например), а не компьютерная программа.
Потому что
Посчитать KPI
Сказать "Ай-яй-яй"
Подождать 1 месяц
Повторить
вполне себе "человеческая" инструкция, тут комплюхтер не нужон особо. Равно как и "каждый месяц увольнять 10 человек с самым низким показателем ABCDE-12345" - да, сам показатель посчитают на компьютере, но инструкция-то для менеджеров.
Если нет наследования (а точнее - полиморфизма, как его следствия), то нет не то что смысла в ООП, но по сути не остается и самого ООП.
Полиморфизм не является следствием наследования аж по 2 причинам:
Есть (как минимум) аж 3 типа полиморфизма: ad hoc (перегрузка функций), параметрический (шаблонные структуры данных) и подтипы (наследование).
Давайте представим такую ситуацию: у вас в языке есть только 2 вида классов: виртуальные интерфейсы (их объекты нельзя создать), и все остальные, которые обязаны быть ненаследуемыми (final / sealed, вот это вот). Наследование в обычном смысле тут отсутствует, может быть только реализация интерфейса. Вы можете произвольно комбинировать разные интерфейсы, которые хотите реализовать, но не можете от "уже рабочего" условного Animal унаследовать Cat - есть только композиция. Так устроены и успешно работают, например, Rust и Go. Тем не менее, вы можете создать, например, лист с объектами, реализующими условный ICat, и всем им сделать obj.meow(), вне зависимости от их фактического типа - хоть Domestic, хоть SnowLeopard, хоть IgrooshkaIzKitaya, то есть воспользоваться полиморфизмом в вашем изначальном смысле.
Да ладно вам, если по комментариям прям тут, на Хабре, походить, то для кого-то обязательно везде использовать ООП, для других - процедурное программирование, третьи приемлют только функциональщину. Все мы лохи, только для разных людей.
Ураа, теперь вы сможете узнать, что больны неизлечимым заболеванием, которое разрушит вашу жизнь и покалечит жизни ваших близких, аж за 11 лет до появления симптомов!..
Именно 40 лет - не уверен, всё же тогда язык ещё только появился и таки был не очень быстрым. Но потом сделали BEAM VM, и 27 лет назад
In March 1998 Ericsson announced the AXD301 switch,[8] containing over a million lines of Erlang and reported to achieve a high availability of nine "9"s.[17]
любой машинный алгоритм при одинаковых вводных данных будет выдавать одинаковый прогнозируемый результат.
Что из этого более корректно?
генераторы псевдослучайных чисел - тоже ИИ, потому что они выдают разные результаты.
в LLMных интерфейсах (чаще всего) нельзя задавать начальные состояния генераторов псевдослучайных чисел, используемых при выборе следующих токенов, поэтому они и выдают разные результаты при, казалось бы, одинаковых входных данных.
Потому что если Visa/Mastercard/PayPal скажут, что из-за одного конкретного примера они получают негативную огласку ("Ааа, они позволяют покупать это!") и в связи с этим вообще перестают обслуживать весь Steam или Itch - что тогда?
Потому что типы данных в программировании в принципе лучше рассматривать со стороны теории категорий.
Например, есть категория/тип под названием "множество" / "set", есть пачка функций над объектами этой категории (всякие пересечения-объединения), а дальше-то что? Тот же размер множества сам не является множеством. Просто представьте, что
возвращает не число 3, а
unordered_set{3}
. Да, можно идти аж из ZF и определить числа как очень специфические множества, только вот в программировании мы так не делаем (кроме ну совсем уж специфических случаев). Зато теория категорий такая "Дык это ж две разные категории" - и всё. У чисел одни гомоморфизмы, у множеств - другие, наслаждаемся.Зато теория категорий описывает и, самое главное, доказывает корректность многих "трюков". Например, что разные виды полиморфизма эквивалентны, то есть перегрузка функций, шаблонные классы и "any + пачка if для уточнения типа" - это одно и то же по фактическим возможностям, нет такого алгоритма, который бы принципиально мог использовать один вид полиморфизма, но не мог другой (разумеется, с поправкой на возможную слабую выразительность языка).
У нашего любимого профессора по имени Bartosz Milewski есть прекрасные лекции "Category theory for programmers", они в своё время буквально перевернули моё видение махинаций с типами. Очень рекомендую.
Так ведь через USB-C Он и заряжается, и сигналы передаёт, так что всё +- сходится. И Nintendo нигде не заявляла, что Switch использует стандартный DisplayPort, например.
С другой стороны, даже V-USB для микров AVR позволяет легко использовать кастомный USB-класс, с которым не сможет работать никто "посторонний" - это же нормальная ситуация?
Множество как тип данных - это не из теории множеств, это из теории категорий.
Кстати, что такое "средний айтишник"? Вот мне периодически приходится работать с 3D-графикой с её матрицами - я ещё средний? А те, кто делает мат. пакеты типа BLAS - они тоже средние, ведь они тоже не используют дедукцию и бесконечные ординалы?
Во-первых, это транслирует позицию/мнение разных сторон в ваш пузырь "а на самом деле так"а. Полезно хотя бы для кругозора.
Во-вторых, у этого Иван Иваныча на самом деле может работать не так, как у вас. Например, через мой домашний Wi-Fi я спокойно могу играть в некоторые мобилки,, при этом на роутере у меня нет никаких особых средств, а вот через сотовую сеть - не могу, просто по таймауту отваливается. Теперь представьте, что Иван Иваныч играет в эти мобилки через эмулятор Android (которому всегда нормально, он же через роутер ходит), а у вас пароля от Wi-Fi нет, вы пытаетесь зайти через 4G И не можете. Кто прав в такой ситуации?
В-третьих, даже если Иван Иваныч вот прям совсем, объективно не прав, но он считает что его слова соответствуют истине (неважно, искренне он верит или актёрствует) - почему его мнение не должно быть транслировано дальше, особенно если это официальная позиция? Ну посмейтесь, ну покрутите пальцем у виска.
В-четвёртых, вы буквально предлагаете цензуру. Буквально "есть два мнения - моё, и запретить-непущщщать".
Кстати, есть и забавная обратная сторона: небольшому подмножеству живых цифровых художников не повезло писать в стиле, очень уж похожем на типичное нейротворчество.
Вот так увидишь картинку - подумаешь что очередной промптхудожник накашлял в ЧатГПТ, а потом откроешь профиль - а там все работы такие, уже лет 10. А ведь 10 лет назад трава была зеленее, Open AI - ещё open, а из нейрогенерации была разве что DeepDream с её собаками из глаз.
Типографика - это хорошо. То, что вводить корректные символы намного сложнее "поддельных" - нехорошо.
В дополнение к тире, надо не забывать, что правильные кавычки - это когда “так” или «эдак», но не "вот так". А многоточие - это один символ … вместо ...
Кстати, во многих довольно авторитетных англоязычных источниках тире пишется без пробелов по бокам—вот так.
Нейросети очень любят их использовать (потому что это правильно), а люди -- нет (потому что на клавиатуре отсутствует). Ладно всякие письма, там и почтовый клиент может подсказать, а вот в комментариях они почти наверняка указывают на нейросетевое происхождение.
То ли дело теории заговора, типичные комментарии со списками, смайликами и em-dash, и порно сгенерированное нейросетями! Вот это интересно!
Смысл потоковых форматов не только в том, что они преобразуются в корректное, хоть и не полное, состояние автоматигески просто при линейном чтении (выше уже писали, что парсер на событиях написать несложно, да и условный RapidJSON имеет как DOM, так и SAX-интерфейсы).
Потоковые форматы ещё можно "промотать" - и они всё равно будут собираться в корректное состояние. Вы можете закодировать условный видеофайл так, что у вас будет ровно один ключевой кадр в начале, а потом только дельты - тогда у вас просто не будет выбора, вам придётся декодировать 2 часа фильма, чтобы посмотреть только сцену после титров. Но этот же условный видеофайл может быть разбит на кучу отдельных блоков со своими ключевыми кадрами и необходимыми метаданными - тогда он очень даже потоко-пригодный. Видео и аудио позволяют такие "шалости" потому что в общем случае текущее состояние (кадр или частота+громкость) очень мало зависят от того, что было давно, потому что новые данные "перезатирают" старое состояние. Это очень редкое свойство для абстрактных данных в вакууме, и почти всегда решается не на уровне формата, с на уровне использования этого формата. Та же пагинация - это по сути создание "потокового" представления контента, что особенно наглядно на страницах с бесконечной прокруткой, типа лент соцсетей или чатов в мессенджерах.
Как давно вы открывали
C:\Users\<username>
? Там тоже ведь лютая свалкаИнтересно, насколько этот самый (мифический?) "алгоритм" есть инструкция (для отдела кадров, например), а не компьютерная программа.
Потому что
Посчитать KPI
Сказать "Ай-яй-яй"
Подождать 1 месяц
Повторить
вполне себе "человеческая" инструкция, тут комплюхтер не нужон особо. Равно как и "каждый месяц увольнять 10 человек с самым низким показателем ABCDE-12345" - да, сам показатель посчитают на компьютере, но инструкция-то для менеджеров.
Полиморфизм не является следствием наследования аж по 2 причинам:
Есть (как минимум) аж 3 типа полиморфизма: ad hoc (перегрузка функций), параметрический (шаблонные структуры данных) и подтипы (наследование).
Давайте представим такую ситуацию: у вас в языке есть только 2 вида классов: виртуальные интерфейсы (их объекты нельзя создать), и все остальные, которые обязаны быть ненаследуемыми (final / sealed, вот это вот). Наследование в обычном смысле тут отсутствует, может быть только реализация интерфейса. Вы можете произвольно комбинировать разные интерфейсы, которые хотите реализовать, но не можете от "уже рабочего" условного Animal унаследовать Cat - есть только композиция. Так устроены и успешно работают, например, Rust и Go. Тем не менее, вы можете создать, например, лист с объектами, реализующими условный
ICat
, и всем им сделатьobj.meow()
, вне зависимости от их фактического типа - хотьDomestic
, хотьSnowLeopard
, хотьIgrooshkaIzKitaya
, то есть воспользоваться полиморфизмом в вашем изначальном смысле.Да ладно вам, если по комментариям прям тут, на Хабре, походить, то для кого-то обязательно везде использовать ООП, для других - процедурное программирование, третьи приемлют только функциональщину. Все мы лохи, только для разных людей.
Ураа, теперь вы сможете узнать, что больны неизлечимым заболеванием, которое разрушит вашу жизнь и покалечит жизни ваших близких, аж за 11 лет до появления симптомов!..
Именно 40 лет - не уверен, всё же тогда язык ещё только появился и таки был не очень быстрым. Но потом сделали BEAM VM, и 27 лет назад
40 лет было нормально, и тут раз - накладно
Почему не стоит использовать:
Когда может пригодиться:
Это ещё корпускулярно-волновой дуализм, или уже диссоциативное расстройство личности (синглтона)?
Что из этого более корректно?
генераторы псевдослучайных чисел - тоже ИИ, потому что они выдают разные результаты.
в LLMных интерфейсах (чаще всего) нельзя задавать начальные состояния генераторов псевдослучайных чисел, используемых при выборе следующих токенов, поэтому они и выдают разные результаты при, казалось бы, одинаковых входных данных.
К сожалению (а может и к счастью), никакого "сжатия с помощью ИИ" в статье не нашлось, только