уповноважений по милицях в Дарницькі печери
  • STM32 для новачків: обираємо плати, середовища та перші кроки

    Тоді чому 99.99% всіх дронів на фронті на STM32?

    А їх вистачає обробляти і передавати відео у реальному часі?

  • OpenAI випустив о3-mini: DeepSeek нервово курить осторонь

    Нічого по цьому посиланню не протирічить тому, що я написав.

  • Як писати ефективний код, думаючи про перформанс? Або performance-aware-programming

    Мені здається, що я краще розумію, що саме я хотів сказати.

    Що ви хотіли сказати у своєму перекладі, що менше команд процесора — краще (хоча б у сенсі швидкості, тобто просто бистріше), і навпаки? Вірю. Може, це і хотіли сказати. Бо тоді незрозуміло, для чого перекладати це джерело.

    Що це так на практиці? Звісно, ні. Я навів поруч, які можуть бути випадки, коли все навпаки.

    При всьому позитивному задумі статті деталі в ній, мʼяко кажучи, сумнівні. І Muratori забуває простий принцип: все треба міряти, і міряти потрібні показники напряму, а не свої додумки, як що впливає (як у нього кількість команд на швидкість). Тому ціна його розповідям — коло нуля.

  • OpenAI випустив о3-mini: DeepSeek нервово курить осторонь

    Ви не враховуєте того, что DeepSeek може працювати локально у смартфоні, а це новостворена ніша. Моделі од OpenAI на це не розраховуються. Хоча, мабуть, вони теж почнуть випускати редуковані версії для цього.
    Ідеш собі вулицею, а він і каже «зазвичай ти на цьому шляху пʼєш каву, а я знаю, тут нова кавʼярня відкрилась, зайди покуштуй». Ну і 1 гривня з твоєї оплати піде вендору телефона.
    NPU в смартфонах вже зʼявляються на рівні вимоги, але поки що були призначені більше для відновлення фото. А тут їм нові задачі. DeepSeek показав, що таке вже можливе. Далі допрацювання...

  • OpenAI випустив о3-mini: DeepSeek нервово курить осторонь

    Хм, з цього виникає питання: коли клавіатури у смартфонах почнуть насильно виправляти за тебе текст, а не тільки пропонувати альтернативні написання?

    Підтримав: Oleksandr Suvorov
  • OpenAI випустив о3-mini: DeepSeek нервово курить осторонь

    Що українська — без сумніву, а ось що вірний відтінок — тут не зовсім. Я б сказав «покуштувати». Бо «скуштувати» має стійкий відтінок завершеної дії, всі деталі розпробувані (покуштовані;)), а це для такого ресурсу значить місяці випробування. Може, навіть «причаститись до новинки» (якщо відринути християнські коннотації). Вибачаюсь за нерівний стиль, впасти в режим філолога, який роками тренувався розповідати про кольори у Тичини, тяжко 😏🦆

  • Як писати ефективний код, думаючи про перформанс? Або performance-aware-programming

    Загалом, вдячний автору за підняття теми «performance-aware-programming».

    Цікаво, де є місця, де така тема _не_ підіймається і всім плювати на швидкість коду. Покажіть мені таке місце... (ну, держконтори не треба, вони у всьому світі однакові)

    Вважаю, що також важливим аспектом всієї цієї теми в розрізі компілюємих мов програмування є оптимізації компілятора та особливо його нішові оптимізації.
    Так, в деяких випадках умовний gcc виграє clang і навпаки.

    Ага-ага, особливо коли у >50% присутніх тут основне де дивляться на швидкість це видача V8 JIT.

    Крім того, «Немає такої підлості та гидоти, на яку не пішов би gcc заради безглуздих 5% швидкості в нікому не потрібному синтетичному тесті.» ([один колега])

  • Як писати ефективний код, думаючи про перформанс? Або performance-aware-programming

    Мені здається що ви цього посилу, нажаль, не зрозуміли.

    Саме він і зрозумів. А ось ви — ні, хоча доброчесно переклали.

  • Як писати ефективний код, думаючи про перформанс? Або performance-aware-programming

    Міряти результат за кількістю інструкцій це пʼять. Косяків.

    В асемблері може бути нагенеровано будь-що, наприклад, на «холодному шляху», який виконується тільки у catch-блоках. Обʼєм коду там може бути більший за основний в рази, і це не показує, що така реалізація повільніша — навпаки, може бути, що вона бистріша.

    Або, реалізація на зразок такої товщіша в десятки разів ніж проста loopne movsb, але теж має швидкість в стільки ж більше.

    Якщо задача в оптимізації обʼєму — норма для embedded — то так і кажіть, що оптимізуєте обʼєм. Інакше треба міряти швидкість.

    Характер мов з AutoMM може змінювати результати неочікуваним чином. Для Python, наприклад, багато разів писалось, що оптимізації контр-інтуїтивні. За JS не слідкую, але впевнений у схожих ефектах.

    Як саме міряти — залежить від. У випадку Javascript я б спочатку згенерував масив на міліон вхідних значень, запустив функцію мапінга в вихідний масив, і зробив би це десяток разів. Тільки після цього можна знімати показання «годинника» системи.

    Чому там VS затримує оновлення — ХЗ. Може, у нього така манера взагалі.

    Висновок: поки що в статті повна маячня. Як і в джерелі.

  • Пам’ятаєте свій перший комп’ютер?

    ЕС-1022, 512кБ, 4 дисковода по 29МБ, 3 ленточника, 4 дисплея (7066), из которых два в подвале, читалка перфокарт, выводилка на перфокарты, два АЦПУ (одно нормальное, одно убитое) и шик гламура — электрическая пишущая машинка в качестве строчной консоли — бесполезно, зато круто.

    Или вопрос про персоналку дома? Oh wait...

    Кстати, кто и зачем поднял тему 4-летней давности?

    Підтримав: Kostia
  • Як штучний інтелект доб’є і воскресить вищу освіту

    Як (3) і (4) не протирічать одне одному?

  • Як штучний інтелект доб’є і воскресить вищу освіту

    а от інженер має розуміти, як ці методи працюють. Які алгоритми в основі і все таке.

    В університеті можуть викладати _дещо_ застаріле (не радикально!), але давати гарну теоретичну базу, після якої здогнати самому до актуального рівня не буде проблем.

    В «бурсі» можуть виключити частину теоретичної підготовки, але мають викладати актуальне на саме зараз і виключати некорисне.

    А ось варіант, коли покроково самі обчислюють md5, не придатний для обох варіантів навчання. Нічого воно тому «інженеру» не дасть ні в якому варіанті.

    Скоріш за все це була просто сінекура для старого викладача, в якого мізки задубіли і він вже не вміє нічого, а виганяти не можуть або не хочуть.

    Підтримав: Vitaliy Grinchyshyn
  • Як штучний інтелект доб’є і воскресить вищу освіту

    ми пів року розбирали як працює якийсь МD5 і на папері пробували щось шифрувати/дешифрувати примінячюи 100500 математичних операцій.

    Жах. Де це було і нащо?

  • Як штучний інтелект доб’є і воскресить вищу освіту

    Чому Гаррі Поттер цікавіший за Тома Соєра?

    Просто більше матеріалу, різноманітніше. Є що обговорювати майже для кожного.

    А як ви забезпечите доступність матеріалів?

    І ще можна фанфіки використовувати. Їх реально міліони, включаючи високоякісні і обʼємні. І мова сучасна, а не як у Марка Твена, Агати Крісті або тих 100500 класиків, що дебільна мафія «авторських прав» дозволила відкрити і не встигла закрити знову.

    а ви не лише не встигали за обговоренням

    Ну це вже питання сегментації груп. Стандартного підходу на зразок beginner / intermediate / upper intermediate і т.п. — досить, щоб рівень був у всіх схожий.
    Ну і вчитель має контролювати, щоб брали участь хоча б ¾.

  • Клавіатура qwerty — це кайдани

    И представляю как весело с этим в Канаде, где бывает необходимо иметь обе локали.

    В Канаде французская qwerty :)
    ergocanada.com/...​ch_canadian_keyboard.html
    ergocanada.com/...​im_fr_can_layout_1200.gif
    ergocanada.com/...​595_cdn_french_layout.gif
    ну и так далее.

  • Клавіатура qwerty — це кайдани

    На клаві є букави!!! Цікаво для чого вони?

    Коли кожен вендор лаптопу вважає що «він митець, він так видить» і переставляє усякі там Insert і PgUp, ви без них не обійдетесь.
    А ще є проблема розміщення LSGT, двох позицій для \|, і це все тільки для наших клав.

    то хизувався що СМС в кишені набираю

    Ну, краще використати ті ресурси мозку для чогось більш корисного:)

  • Чому програмісти мають вивчити мову з розвиненою системою типів, навіть якщо нічого не будуть на ній писати

    Ми можемо сказати «рекомендує»

    Хай так, згоден.

    писав компілятор асемблеру, і там чомусь виникала проблема в додатковому проході... Але деталі вже не пам’ятаю.

    У асемблера є декілька місць на таке. Найпростіший умовний чи безумовний перехід на мітку в коді далі: `je moo` ...якийсь код... `moo:` - і все, не знаючи де це moo буде, не можна скомпілювати зміщення — ось вам вже два проходи. Більш складне: je/jb/etc. компілювати в коротку чи довгу (>=i386, ±32kB/2GB) форму. (Більш того, довга форма в одному місці може викликати подовження коду і вимогу довгої форми в іншому місці! тому треба компілювати так, щоб воно зійшлось дуже швидко, без осцілляцій.) Посилання на змінну, що визначена нижче — що писати в обʼєктний файл, коли треба зміщення. І все таке.
    Але це не рівень C, це пізніше. У Паскаля є та ж сама проблема при генерації вихідного машинного коду, це тільки на рівні його вхідного коду можна казати про один прохід.

    Але, все ж таки ІМХО, архітектурне рішення з хідерами (та прототипом за замовчуванням) було не дуже вдалим, бо збільшило час компіляції та збільшила кількість помилок.

    TurboPascal робився під одну платформу. Ті компільовані модулі не придатні вже для 32-бітного x86, там int ширший. А в початковому Pascal модулів не було, це віддано реалізаціям.

    Для C є в багатьох реалізаціях предкомпільовані хедери. Вони справді прискорюють компіляцію.

    Щодо помилок, знову це проблема недовизначености функцій або різних опцій компіляції. Я якось вирішував цікавий випадок такого, але зазвичай випадки більш прості.

  • Чому програмісти мають вивчити мову з розвиненою системою типів, навіть якщо нічого не будуть на ній писати

    Добре, як тоді пояснити це?

    Саме так, що
    1) Мова вимагає предоголошення функцій: тобто, нормально мав бути прототип: `int f2(int);` перед тілом f1().
    2) Якщо такого прототипу нема, то спрацьовує фолбек, що декларує `int f2();` що те ж саме що `int f2(...);`, але компілятор видає попередження.
    3) Завдяки вимозі, щоб працювало і в такому випадку, правила ABI для випадку еліпсіса зроблені так, що все працює (наприклад, з x86-64/SysV перший аргумент завжди в rdi).

    але мова йшла про 90-ті роки.

    Угу. І тут все одно не було другого проходу, але працювало саме те, що «вмикається» дефолтне оголошення. (І якщо воно не задовільняє — тобто викликали з несумісними параметрами — чекайте на проблеми.)

    бо по суті нам треба лише адреса, а стек прибирає за собою викликаючий код.

    Проблема не тільки в стеку. Вся calling convention має бути підлаштована під це.

    Ось наприклад соберіть щось найпростіше типу

    #include <stdio.h>
    #include <stdarg.h>
    int my_printf(const char *format, ...) {
      va_list ap;
      va_start(ap, format);
      int rc = fprintf(stdout, format, ap);
      va_end(ap);
      return rc;
    }
    

    Скомпілюйте і подивіться на асемблерний результат — це ж буде жах. Під Linux/x86-64:

    my_printf:
    .LFB23:
            .cfi_startproc
            endbr64
            subq    $216, %rsp
            .cfi_def_cfa_offset 224
            movq    %rsi, 40(%rsp)
            movq    %rdx, 48(%rsp)
            movq    %rcx, 56(%rsp)
            movq    %r8, 64(%rsp)
            movq    %r9, 72(%rsp)
            testb   %al, %al
            je      .L2
            movaps  %xmm0, 80(%rsp)
            movaps  %xmm1, 96(%rsp)
            movaps  %xmm2, 112(%rsp)
            movaps  %xmm3, 128(%rsp)
            movaps  %xmm4, 144(%rsp)
            movaps  %xmm5, 160(%rsp)
            movaps  %xmm6, 176(%rsp)
            movaps  %xmm7, 192(%rsp)
    .L2:
            movq    %fs:40, %rax
            movq    %rax, 24(%rsp)
            xorl    %eax, %eax
            movl    $8, (%rsp)
            movl    $48, 4(%rsp)
            leaq    224(%rsp), %rax
            movq    %rax, 8(%rsp)
            leaq    32(%rsp), %rax
            movq    %rax, 16(%rsp)
            movq    %rsp, %rcx
            movq    %rdi, %rdx
            movl    $1, %esi
            movq    stdout(%rip), %rdi
            movl    $0, %eax
            call    __fprintf_chk@PLT
    ...
    

    Навіщо весь цей адъ і сектор Газа? Чому variadic частина не кладеться на стек? Те ж саме для Linux/x86-32 просте і красиве:

    my_printf:
            subl    $12, %esp
            leal    20(%esp), %eax
            subl    $4, %esp
            pushl   %eax
            pushl   24(%esp)
            pushl   stdout
            call    fprintf
            addl    $28, %esp
            ret
    

    А проблема в тому, що C вимагає, щоб при відсутности декларації виклик все одно оброблявся коректно, тому весь хвіст variadic параметрів повинен вкладатись точно так же якби був точно визначений в прототипі — у даному випадку (x86-64/SysV) перший в rdi, другий в rsi, і так далі.

    А якщо б взагалі було заборонено викликати функції без прототипу і той прототип мали б декларувати — як зробили в C++ і як Apple робить в своєму діалекті C — то ваш приклад би не зкомпілювався, а мій не мав би для va_start весь цей непотріб.

    (Цікаво з MS ABI. У них, наскільки я бачу, variadic частина завжди на стеку, але вони не забороняють компіляцію без декларації. Хм...)

    Підтримав: Oleg Yakovlev
  • 82-річний Олексій Скрипник щодня програмує на С++ і ходить 6 км. Інтерв’ю зі співзасновником ELEKS

  • Клавіатура qwerty — це кайдани

    ніж від спілкування 2ма пальцями з вами.

    І хто ж винен що ви Дворак вивчили на 10 пальцях, а щось зовсім інше і на 2 не можете?
    І що навіть у такому випадку не подумали про розкладки стиля яверти... пробачте, пифгцрл/аоеу/і_так_далі у вашому випадку, щоб використати вже надбану стійку звичку?

    Якщо мої вказівні пальці лежать на пімпочках — то «батя в зданії».

    З qwerty буде те ж саме. І з колемаком. І з воркманом. І з 100500 новіших розробок. Просто треба звикнути.

    Справа в тім що зазвичай прихильники дефолтної кверті говорять що дворак то для машиністок яким треба набирати багато сторінок тексту (на даний момент найбільш залайканий комент). Фігня це а не висновок

    Згоден, фігня. Бо розкладка Дворак сама по собі вже фігня, якщо треба оптимізацію під англійську — є новіші кращі розробки, є усталена теорія і методи аналізу. (Це все говорилось тут, але можна і нагадати.) Або ж ми не обмежуємось англійською, тоді зрозуміло, що qwerty це хоча б частково схоже на загальносвітовий стандарт.

    PS пфф, а яка норма української мови змушує вас писати це слово з великої?

    Це досі власне імʼя автора, ні?

← Сtrl 123456...399 Ctrl →