[00:28:08] <ada_ru> (Lieutenant_Commander_Data) отвечает (I_vlxy_I) на <Явно же сишник мечта…>
всегда мечтал выучить раст
[00:28:55] <ada_ru> (I_vlxy_I) отвечает (Lieutenant_Commander_Data) на <всегда мечтал выучит…>
а вот и камингаут!
[00:29:51] <ada_ru> (Lieutenant_Commander_Data) я помню нам в самсунге его втюхивали когда только самсунг с мозиллой затеяли servo
[00:30:06] <ada_ru> (Lieutenant_Commander_Data) но хорошо что я в это не наступил)
[00:30:56] <ada_ru> (I_vlxy_I) гм. а почему хорошо то?
[00:31:06] <ada_ru> (Lieutenant_Commander_Data) теперь внимание вопрос!
какие есть аналоги rrdtool?
[00:32:14] <ada_ru> (Lieutenant_Commander_Data) отвечает (I_vlxy_I) на <гм. а почему хорошо …>
потому что сейчас бы наверное сидел в самсунге и пилил эту фигню.
[00:32:37] <ada_ru> (I_vlxy_I) отвечает (Lieutenant_Commander_Data) на <теперь внимание вопр…>
prometheus? но вообще, зависит от того, что конкретно тебе нужно.
[00:33:20] <ada_ru> (Lieutenant_Commander_Data) нужно собирать статистику и рисовать графики
[00:33:48] <ada_ru> (Lieutenant_Commander_Data) из питончика и C++
[00:34:21] <ada_ru> (Lieutenant_Commander_Data) статистика - througput
[00:35:20] <ada_ru> (Lieutenant_Commander_Data) prometheus выглядит неплохо
[00:35:35] <ada_ru> (I_vlxy_I) zabbix ещё
[00:36:09] <ada_ru> (I_vlxy_I) ну и стандартный стек elasticsearch logstash kibana (aka ELK)
[00:36:29] <ada_ru> (I_vlxy_I) для визуализации еще графану юзают
[00:41:55] <ada_ru> (Lieutenant_Commander_Data) ага, спасибо!
[00:42:00] <ada_ru> (Lieutenant_Commander_Data) Буду ковырять
[02:02:29] <ada_ru> (insert_reference_here) отвечает (I_vlxy_I) на <гм. а почему хорошо …>
servo — это легаси, его начали пилить задолго до того, как Rust 1.0 вышел. С современной точки зрения там много неидиоматичного кода
[02:30:41] <ada_ru> (I_vlxy_I) не легаси, а классика
[02:49:17] <ada_ru> (Oleg) отвечает (Lieutenant_Commander_Data) на <Буду ковырять>
Кибана графана и прочее, но лучше скажи что надо, какие метрики
[08:44:50] <ada_ru> (Eugene) Чатик по формальным методам верификации
[08:44:52] <ada_ru> (Eugene) цитирует (GabrielFallen)
https://t.me/joinchat/Bf3AJw969zOLpLQEVAmMjQ
[09:16:38] <ada_ru> (Gourytch) отвечает (I_vlxy_I) на <>
говнокод.
0. если в одном из элементов 0.0 (что вполне себе нормальное значение) - проверка завершится;
1. после while-проверки nums увеличивается и показывает уже на следующий элемент, т.о. самый первый элемент просто выпадает из сравнения
[11:12:48] <ada_ru> (Oleg) Это да, с инкрементом там отожгли как и с нулем.
[11:13:07] <ada_ru> (Oleg) Нужно спипишный код глянуть
[11:13:11] <ada_ru> (Oleg) И JS
[11:15:28] <ada_ru> (I_vlxy_I) А там есть?
[11:15:41] <ada_ru> (I_vlxy_I) Вроде только си, без крестов
[11:38:09] <ada_ru> (wladlos) отвечает (Gourytch) на <говнокод. в одной ст…>
И вот теперь скажите, ну разве должен язык позволять такое делать?
Неужели локальная "красота" важнее постоянно нависающей угрозы ошибок? Ведь часто бывает так, что "летишь" по логике программы, "выстреливая" текст "на автомате", а потом удивляешься глупости своей описки.
[11:41:22] <ada_ru> (wladlos) Ей-богу, вот чувствую, что когда совсем стареньким стану и надо мной уже не будет столько обязанностей и обязательств, буду "для души" или на Питоне, или на Смолтоке, или на каком-то из обертоны, или на Лиспе, или на Флоте писать... :)
[11:45:06] <ada_ru> (Gourytch) отвечает (wladlos) на <И вот теперь скажите…>
да язык сам по себе никому ничего не должен. и на аде можно отстрелить себе колено по самые тестикулы. это всё вопрос кривору^W изобретательности
[11:46:34] <ada_ru> (I_vlxy_I) Я не удивлюсь если они и на компилябельность код не чекали
[11:46:42] <ada_ru> (wladlos) Я по молодости тоже в этом уверен был....
[11:49:01] <ada_ru> (wladlos) отвечает (Gourytch) на <да язык сам по себе …>
А есть ссылки на аналогичные примеры кода на, например, Аде, по отстреливанию ног?
[11:52:28] <ada_ru> (Gourytch) отвечает (wladlos) на <А есть ссылки на ана…>
неа, я их стараюсь не готовить =)
но, imho, в любом языке где есть неконтролируемые указатели, готовящиеся из произвольных параметров, можно смастерить запись в левую память, например
[11:53:45] <ada_ru> (Gourytch) Закон Нейсдра: "Можно сделать защиту от дурака, но только от не изобретательного"=)
[11:54:16] <ada_ru> (I_vlxy_I) Тем более не от того, кто комп не компилирует и не тестирует
[11:54:22] <ada_ru> (I_vlxy_I) И вообще не думает
[11:56:38] <ada_ru> (wladlos) И, потом, не забывайте про огромную вариативность (по Савельеву) развития зон в наших межушных ганглиях! Насколько я имею опыт, предпочтения в языках ЕСТЬ. Сколько видел примеров, когда очень хороший и имеет мизерный выход (при прекрасном знании) в одном языке и выдаёт тонны правильно работающего кода в другом. Есть некая "заточеность" извилин под модель и идеологию того или иного языка программирования. Конечно, можно прикрыться расхожей шуткой, что миллиарды мух не могут ошибаться, но предмет их предпочтения от этого своих свойств не изменит.:))))
[11:57:13] <ada_ru> (I_vlxy_I) Савельев - не аргумент :-)
[11:58:24] <ada_ru> (wladlos) отвечает (I_vlxy_I) на <Савельев - не аргуме…>
Есть контр-аргумент с такими же результатами по сабжу?
[12:00:14] <ada_ru> (I_vlxy_I) Контраргумент пока такой, что Савельев дискредитировал себя псевдонаучными популистскими методами работы.
Я бы советовал как минимум найти второй заслуживающий доверия научный источник.
[12:01:28] <ada_ru> (wladlos) отвечает (I_vlxy_I) на <Контраргумент пока т…>
Так я и прошу его указать. А, также и авторство и источник обвинения в псевдонаучности.
[12:02:39] <ada_ru> (Gourytch) отвечает (wladlos) на <Есть контр-аргумент …>
вот с такими же (пропуск первого элемента) - не получится,
но стоит накосячить с бесконечным loop-ом и exit when - и voila!
[12:03:54] <ada_ru> (Gourytch) (а вообще интересная задача: программисты учатся избегать ошибок, а не привносить их в код, поэтому вот мне сейчас довольно затруднительно смастерить именно преднамеренный косяк =) )
[12:04:42] <ada_ru> (I_vlxy_I) отвечает (wladlos) на <Так я и прошу его ук…>
Источник укажу после работы.
Но я советовал не опровержение искать, а подтверждение. То есть научные работы имеющие те же выводы, что и Савельев. И независимые от него.
[12:04:55] <ada_ru> (wladlos) отвечает (Gourytch) на <вот с такими же (про…>
Не-не-не. В случае сравнения Ады и Со - это сопоставление/смешивания из разных уровней семантики конструкций и логики передачи управления.
[12:07:28] <ada_ru> (wladlos) отвечает (I_vlxy_I) на <Источник укажу после…>
Дык, мозги с такой тщательностью, после института мозга в СССР, в мире никто не резал и не изучал! Они даже цитологическим атласами нашими пользовались только и перепечатывали. В том-то и смех весь.
[12:08:09] <ada_ru> (I_vlxy_I) Печально слышать
[12:12:30] <ada_ru> (wladlos) отвечает (I_vlxy_I) на <Печально слышать>
Я тоже сначала не поверил. Полез узнавать. У мня ещё знакомая нейрохирург( из эмигрантов) в штатах работает. Часто собирает черепные коробки после аварий и спортсменам(особенно из ИХ футбола). Так вот она полностью подтверждает слова Савельева: никто ничего в этой области НЕ делает. Все исследования - по факторам не первой даже косвенности, чисто - на статистических методах. Механизмы и морфологические зависимости - из мира гаданий и прикидок.
[12:27:13] <ada_ru> (Eugene) ну эта машин лёрнинг во всей красе )))
[12:40:19] <ada_ru> (Oleg) отвечает (wladlos) на <Я тоже сначала не по…>
От тут я согласен
[12:40:24] <ada_ru> (Oleg) Наддавали мне ноотропов
[12:40:32] <ada_ru> (Oleg) Похоже от них только хуже
[12:40:45] <ada_ru> (Oleg) Цитоколин перестал пить стало вроде лучше
[12:41:17] <ada_ru> (Oleg) Теперь только хардкор - только гимнастика и балансы и прочее и свежый воздух да велосипед
[12:43:04] <ada_ru> (Oleg) Кстати
[12:43:07] <ada_ru> (Oleg) В том примере
[12:43:11] <ada_ru> (Oleg) 1 def find_max(nums):
2 max_num = float("-inf") # smaller than all other numbers
3 for num in nums:
4 if num > max_num:
5 # (Fill in the missing line here)
6 return max_num
[12:43:23] <ada_ru> (Oleg) На питоне то вроде ничего
[13:01:35] <ada_ru> (Eugene) вообще пример изначально кривой -- кодирование факта элемент_найден его минимально возможным значением.
ведь в этом массиве могут быть и эти самые -inf, и как тогда понять, нашли мы это значение или нет?
кривые языки, кривые алгоритмы...
[13:05:44] <ada_ru> (Eugene) чорд, кривые варианты этого алгоритма вообще мою мысль не в том направлении повели
[13:05:54] <ada_ru> (Eugene) зачем вы сидите на таких сайтах?
[13:06:25] <ada_ru> (Eugene) вот кстати да, а что если массив вообще пустой?
[14:02:30] <ada_ru> (wladlos) В свою преподавательскую бытность (был такой период, каюсЪ), я повстречал мног молодых дарований, которые были искренне убеждены, что они - уже абсолютно всё згнают в и о жизни, и - конкретно - "про Си".
Вы не представляете, какие сальто мортале, подчас, совершает мыслительный процесс этих талантов в ходе выражения своих решений на Си.
А введение Си++ - вообще убило учебный процесс напрочь. На мою беду я тогда группу "подхватил" вместо заболевшего серьёзно предыдущего препода... Мало того, что тот препод "плавал" в указателях, так он ещё и ООП давал на примерах наследования (множественного, паблика, да-с!) класса "Заказ в кафе" от классов "Клиент", "Список" и "Блюдо".
Вообще, идея давать скальпель в руки четырёхгодовалому ребёнку, может считаться преступлением. А студентов ещё и прикладные задачи на Си++ заставляют писАть. НЕпрограммистов!!! Там и на профильных-то кафедрах "АдЪИИсраиль" наступает в семстр, когда начинают Си++ и ООП давать, а когда людям, которые должны использовать максимум скрипты их Экселя, наворачивают мозги на Си++ - трындец полный учебному процессу.
Да и профильных группах приходилось мозги рихтовать. С языком-то там - богЪ с ним - у них задач больше - обкаьаются-притрутся к наследию и идеологии "совместимости с Си". А вот с проектированием систем - бяда.
[14:35:03] <ada_ru> (Eugene) отвечает (I_vlxy_I) на <>
блин, всё же не удержался, сделал на хаскелле:
findmin :: (Ord a) => [a] -> Maybe a
findmin [] = Nothing
findmin (x:xs) = Just $ foldl (\n y -> if n < y then n else y) x xs
[14:37:29] <ada_ru> (I_vlxy_I) У тебя программа делает не то
[14:37:37] <ada_ru> (I_vlxy_I) Она работает со списком, а не с массивом
[14:38:33] <ada_ru> (I_vlxy_I) Список флоатов - это что-то очень страннное.
[14:39:04] <ada_ru> (Eugene) для хаскелла список -- идиоматичная структура данных, в отличие от каких-то там массивов
[14:39:49] <ada_ru> (Eugene) необязательно список флоатов:
findmin "hello"
Just 'e'
[14:40:26] <ada_ru> (I_vlxy_I) отвечает (Eugene) на <для хаскелла список …>
Она крайне не эффективна для случая флоатов
[14:40:40] <ada_ru> (Eugene) вполне норм, от задачи зависит
[14:41:06] <ada_ru> (I_vlxy_I) Для бОльшей части задач с флоатами.
[14:41:17] <ada_ru> (Eugene) не уверен, что массив флоатов в памяти представляется более оптимально, чем список флоатов -- от реализации зависит
[14:41:26] <ada_ru> (I_vlxy_I) Объемы данных там начинаются от миллиона штук обычно.
[14:41:42] <ada_ru> (I_vlxy_I) А ты сравни по скорости :-)
[14:41:47] <ada_ru> (Eugene) на таких данных юзай базу данных )))
[14:41:58] <ada_ru> (I_vlxy_I) Миллион это МАЛО
[14:42:10] <ada_ru> (I_vlxy_I) Это всего 4 мегабайта.
[14:42:25] <ada_ru> (I_vlxy_I) Это вообще в L3 кеш поместится
[14:42:27] <ada_ru> (Eugene) ты ещё скажи, что массив должен хранить не просто флоаты, а небоксированные флоаты?
хаскелл -- не для числодробилок
[14:43:06] <ada_ru> (I_vlxy_I) Вот потому я хаскель и выкинул :-) ибо задачи на нем нельзя решать нормальные.
[14:43:23] <ada_ru> (I_vlxy_I) Даже такую вот простую задачу нельзя решить нормально.
[14:43:27] <ada_ru> (Eugene) решай на хаскелле бизнеслогику, а флоаты молоти на сишечке
[14:43:50] <ada_ru> (I_vlxy_I) Это и есть бизнеслогика :-)
[14:44:08] <ada_ru> (Eugene) где там логика? да ещё для бизнеса? ))
[14:44:33] <ada_ru> (Eugene) вон тот же JPMorgan после того как не осилил бизнеслогику на с++ начал нанимать хаскеллеров
[15:12:36] <ada_ru> (Eugene) отвечает (I_vlxy_I) на <Она работает со спис…>
ну вот вариант на векторе:
import qualified Data.Vector as Vector
findminv :: (Ord a) => Vector.Vector a -> Maybe a
findminv v = if Vector.null v
then Nothing
else Just $ Vector.foldl (\n y -> if n < y then n else y)
(Vector.head v) (Vector.tail v)
[15:13:02] <ada_ru> (Eugene) в принципе, структура такая же как со списком если убрать списочный синтаксический сахар с паттерн-матчингом
[15:15:45] <ada_ru> (Eugene) вот вариант со списком без сахара:
findmin :: (Ord a) => [a] -> Maybe a
findmin l = if null l
then Nothing
else Just $ foldl (\n y -> if n < y then n else y)
(head l) (tail l)
[15:25:09] <ada_ru> (Eugene) упростил функции, можно вообще эти функции обобщить до:
findMin :: (Ord a, Foldable t) => t a -> Maybe a
findMin l =
if F.null l
then Nothing
else Just $ F.foldl1 (\n y -> if n < y then n else y) l
тут уже неважно, список или вектор
[15:25:48] <ada_ru> (wladlos) Абракадабра :)
[15:26:22] <ada_ru> (Eugene) отвечает (wladlos) на <Абракадабра :)>
ну дык и сишечка тоже абракадабра для тех кто её не учил
[15:27:26] <ada_ru> (wladlos) Не спорю.
А - сравнить с Адой, или обертонами? Или - Питоном.. :)
[15:28:46] <ada_ru> (Eugene) foldl1 -- это полный проход по контейнеру, возвращающий результат какой-то операции над элементами этого контейнера
пример:
foldl1 (*) [1,2,3,4,5]
120
[15:29:23] <ada_ru> (Eugene) отвечает (wladlos) на <Не спорю.
А - сравн…>
для тех, что не знает аду или оберон там тоже не особо понятный текст, да ещё на иностранном языке
питон тут мало отличается от хаскелла
[15:45:12] <ada_ru> (Eugene) на аде с её дженериками можно такое повторить, а вот оберон тут пролетает...
[15:45:44] <ada_ru> (insert_reference_here) отвечает (Eugene) на <блин, всё же не удер…>
Пффффф
findmin [] = Nothing
findmin xs@(_:_) = Just $ minimum xs
[15:45:55] <ada_ru> (insert_reference_here) Кому прелюдия дана?
[15:46:11] <ada_ru> (Eugene) ну я хотел показать как оно там унутре утроено )))
[15:46:45] <ada_ru> (insert_reference_here) отвечает (Eugene) на <ты ещё скажи, что ма…>
Да не, подходит. Причём в каком-то смысле лучше C
[15:46:47] <ada_ru> (Eugene) да, и эту попу (_:_) можно было не рисовать ))
[15:47:02] <ada_ru> (insert_reference_here) отвечает (Eugene) на <да, и эту попу (_:_)…>
Гм, а ведь действительно
[15:47:54] <ada_ru> (insert_reference_here) отвечает (Eugene) на <в тот обобщённый вар…>
Так, разве Foldable на Аде выражается?
[15:48:02] <ada_ru> (I_vlxy_I) отвечает (Eugene) на <ну вот вариант на ве…>
А что такое там вектор?
А он может хранить голые флоаты последовательно в памяти? А изменять их можно?
[15:48:16] <ada_ru> (insert_reference_here) И да, тот факт, что для Double реализован Ord — это ошибка
[15:48:35] <ada_ru> (Eugene) отвечает (I_vlxy_I) на <А что такое там вект…>
ты на ходу меняешь условия задачи, причём в опасную сторону к багованному софту ))
[15:48:37] <ada_ru> (insert_reference_here) отвечает (I_vlxy_I) на <А что такое там вект…>
Data.Vector.Unboxed
[15:49:03] <ada_ru> (I_vlxy_I) отвечает (Eugene) на <ты на ходу меняешь у…>
К эффективному.
[15:49:53] <ada_ru> (Eugene) ну есть какой-то Data.Primitive.Array -- говорят там просто голые куски памяти
[15:50:25] <ada_ru> (insert_reference_here) отвечает (Eugene) на <ну есть какой-то Dat…>
Забудь про Array
[15:51:30] <ada_ru> (Eugene) отвечает (insert_reference_here) на <Забудь про Array>
а чем он хуже вектора?
[15:52:01] <ada_ru> (insert_reference_here) отвечает (Eugene) на <а чем он хуже вектор…>
Медленный
[15:52:10] <ada_ru> (insert_reference_here) Особенно иммутабельный вариант
[20:03:15] <ada_ru> (teh_div) Кто-нибудь сталкивался с проблемой запуска дебаггера обжектады в вин10? В вин7 все работает, причём и там и там оболочку запускаю в режиме совместимости с винХР сервис пак 2