Pull to refresh
0,1
Rating
4
Subscribers
Send message

Занятно) У меня ноут на Linux, игровая тачка на Windows и вот недавно прикупил себе для работы Mac Mini. Проверил на всех трёх - не тормозит нигде) При большом количестве окон тормозит Linux.

Та вроде в Win10 всё не хуже. Достаточно перетащить панель задач влево, переключить меню пуск на запуск в полноэкранном режиме, чтобы получить схожий поиск.

По win+tab получаем схожий обзор программ. Там же можно их перекидывать мышкой между рабочими столами.

По Ctrl +Win + Стрелочка можно переключаться между виртуальными рабочими столами (тоже гладко).

А вот Win11... Ну, она пусть сгорит в аду)

Я тут ради прикола написал самую дубовую реализацию этой функции через switch-case, вообще не думая.

static int parse_uint8_switch_case(const char *str, size_t len, uint8_t *num) {
    uint8_t hi, mid, lo;

    #define as_u8(x) ((uint8_t)((x) - '0'))

    switch(len) {
        case 1:
            *num = as_u8(str[0]);
            return *num < 10;
        case 2:
            hi = as_u8(str[0]);
            lo = as_u8(str[1]);
            *num = (uint8_t)(hi * 10 + lo);
            return (hi < 10) && (lo < 10);
        case 3:
            hi = as_u8(str[0]);
            mid = as_u8(str[1]);
            lo = as_u8(str[2]);
            *num = (uint8_t)(hi * 100 + mid * 10 + lo);
            return 
              ((hi == 2) && (mid < 6) && (lo < 6))
               || ((hi < 2) && (mid < 10) && (lo < 10));

        default:
            return 0;
    }

    #undef as_u8
}

А потом запустил бенчмарки. Результат довольно-таки занимательный:

Как всегда, кто-то решил что он умнее разработчиков компилятора, и умнее разработчиков предсказателя переходов)

P.S.
Что делает код Боба и почему он такой быстрый - я понятия не имею :) Есть подозрение, что выстрелил UB и код делает ровным счётом нихрена, я не вникал.

Не понятно, почему эта статья в хабах С и С++.

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

С этого места человек перестаёт писать код на Си/С++. Потому как стандарты Си и С++ ничего не знают ни про границы страниц, ни про что-то еще. Выход за границу массива определяется как UB.

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

К чертям завалить может вообще что угодно. Самая мякота это UB. Но ничего, живём же как-то.

Не "как-то", а именно что зная о существовании всех этих "стрёмных" мест. И если С++ программист не знает этих мест, то он в общем-то и профнепригоден (для С++ разработки), потому что породит глючное гавно, а не программу.

Как я уже говорил, грамотный сеньйор протестирует все ветки исполнения.

Чушь петровна. Я в жизни не видел кода со 100% покрытием тестами. Даже код торговых ботов, которые ворочают миллиардами долларов, покрыт юнит-тестами в лучшем случае на 70-75%, а остальное дотестируется интеграционными тестами (но это долго и дорого, на каждый PR не запустишь).

В менее ответственных областях покрытие еще меньше. Единственный раз, когда я видел покрытие >90% - это код криптобиблиотеки, но это слишком маленькая кодовая база. В среднем случае code coverage болтается где-то в районе 40-60%.

Ещё есть, в конце концов, код-ревью. Где более прошаренные в разных ньюансах товарищи заметят косяк и объяснят так больше не делать.

Мы с вами уже сотый комментарий дискутируем на тему проведения кодревью и того, что кандидат на должность "Более прошаренный товарищ" (senior программист) с ним не справился :) Вы наконец-то передумали, и поддерживаете мою позицию?

Мне кажется у вас в конторе попросту проблемы с культурой и организацией разработки.

Мне кажется вы ни разу не проводили собеседование, но когда кажется, что делать и так понятно :)

Я за жизнь сменил 6 работ и могу сказать, что культура разработки у меня в компании вполне себе неплоха. Как всегда не без проблем, но лучше многих. И CI/CD у нас настроен, и статических анализаторов аж 3 штуки, и кодревью, и любые IDE и всякие ReSharper-ы можно, с style guide прибит clang-format-ом гвоздями.

требованием энциклопедических знаний от каждого.

Вы что-то сами себе придумали, и что-то сами себе доказываете. Вы вообще как будто бы о чём-то другом разговариваете. Перечитайте еще раз всю ветку и дайте мне хоть одну цитату, показывающую, что я требую энциклопедических знаний. Если для вас знание того, что такое noexcept и что он делает - это "энциклопедические знания", ну... вряд ли мы когда-нибудь поработаем вместе :)

Все эти "найди ошибку в коде" это тест на внимательность, а не на знание языка.

С++ - это минное поле из UB. Внимательность - это очень важно. Ну и как бы да, это тестовое кодревью. В реальном кодревью тоже внимательность нужна, иначе нафига его проводить? Я вообще работаю в сфере ИБ, у нас внимательность к коду нужна в квадрате и даже в кубе.

Теперь мы используем 700 миллиардов if else :)

как пример - воспитание детей. перекладывать эту серьёзнейшую функцию на сторонних людей - как по мне, совершенно не вариант

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

Опять же. Деньги могут решить проблему воспитания детей) Просто вы не хотите пользоваться этой возможностью.

Одну проблему оно решает у меня) Есть проблемный встроенный в материнку wi-fi adapter. Всё хорошо, но после старта системы он всегда в состоянии "нет сети" и перевключить из GUI не работает (но через PowerShell вполне). Тем не менее, если запустить средство устранение неполадок, оно тоже возвращает устройство в рабочее состояние.

Т.е. у вас 100% пошли в вайтишники?

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

Возможно ведёт, если знать что искать

Я написал "pascal windows скачать". Я уверен 99% родителей и детей напишут это.

или там вообще мак

Родители и дети, у который дома мак, будут испытывать боль на протяжении всего процесса обучения, т.к. вся школьная программа и учебники сегодня ориентированы на Windows или какой-нибудь Alt Linux.

На форточках Idle идёт в комплекте, VSCode и PyCharm Community Edition по вкусу.

  • Idle не называется Python. Родитель не найдёт. Он не знает таких слов как IDE. Родитель найдет командный интерпретатор.

VSCode/Pycharm

Родитель такое не нагуглит и уж точно не настроит.

  • VSCode - ну ради прикола дайте человеку VSCode в качестве первой IDE, где для запуска отладчика нужно писать текстовый launch.json. Я видел людей, которые после трёх месяцев плотных курсов по Python не осилили это дело, а вы предлагаете родителям/ученикам в такое окунаться. VSCode - это инструмент для тех, кто уже немножчеко в курсе дел.

  • PyCharm Community Edition. Сама по себе IDE - ок. Достаточно простая в установке освоении. Вот только нюанс: все те же проблемы с варезниками. Родитель легко может сказать варезник платной версии. Но концептуально - это годный вариант.

я их видел уйму на паскале в свои годы, с переменными вида a, b, c, i, j

В этом мире нет языка, который не даст человеку называть переменные a, b, c, i ,j. Не понимаю претензий к паскалю в данном случае.

Великолепный зоопарк turbo <-> borland <-> ABC <-> Delphi <-> Lazarus

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

Про C - вы же хотели чтобы дети основы и типы тщательно пощупали байтики. Или нет?

Вообще нет. Я хотел, чтобы дети заинтересовались основами программирования (алгоритмы, структуры данных, все вот эти циклы и ветвления). Хочу чтобы дети веселились, от того, что смогли написать Ping Pong на кнопочках из WinForms. А вот эти байтики, двоичные системы, битовые операции и прочее - это пожалуйста оставьте универу.

И да, С вполне себе учили в лицее

Программа пишется не только под учеников лицеев, но и для МОУ СОШ №10 Зажопинского района, г. Мухосранск.

Опять же, я не говорю, что C невозможно выучить (это же очевидно не так). Я лишь говорю, что Pascal ничем не хуже, а в некоторых местах даже лучше для тех задач, которые решает школа.

Студию вы сильно переоцениваете (особенно в сравнении с браузерами), на небольших проектах она и не нужна

Я на C# не пишу, я понятия не имею как скомпилировать C# код без студии :) Я знаю, что способы ессно есть, просто они явно не так тривиальны как нажать одну кнопку)

Студию вы сильно переоцениваете

Холодный старт с NVMe SSD - около 10 секунд сейчас был. Есть подозрение, что на HDD она ваще не запустится :) Ну и весит она гигов 20. Офигеешь качать в какой-нибудь деревне с 3g интерентом. А вот pascal весит вместе с IDE 25 мегабайт.

dotnet new console и dotnet run которые не сможет ни один препод показать? Ничоси как сложно то..

Вы нарушаете свои же правила игры. Мы говорим о том, что родитель/ребёно пытается что-то настроить на своём компе самостоятельно. Если есть человек, который проконсультирует - вся беседа по поводу самостоятельной настройки не имеет никакого смысла.

P.S.
Вы ничего не ответили про конкретные недостатки Python, а они довольно значимые на мой взгляд.

Итак. Ввиду того, что оч много написано, отвечать буду не по порядку.

вообще без разницы какой язык учить, поэтому страдайте

Я пока не понимаю, откуда берутся страдания? Мне учить Pascal было интересно. Не видел тех, кому было не интересно.

попробуйте тот же Pascal поставить сначала ребёнку

Первая ссылка в яндексе ведёт на сайт PascalABC.NET, на котором первая же кнопка скачивает и компилятор, и IDE к нему. А также десятки обучающих примеров кода в комплекте, доступных по двум кликам в GUI.

Причём в этой IDE можно клепать простенький WinForms формочки, что повышает интерес к программированию в разы по личному опыту. Одно дело, когда у тебя текст в консоли, а вот с формочками уже можно игры делать! Сколько там понадобится километров кода, чтобы сверстать внятное окошко на Python?

Опять же после установки у меня в Пуск уже есть приложение PascalABC.Net, мне как родителю-чайнику всё понятно. После установки Python у меня какая-то консоль и моргающий курсор. Как я, как родитель-чайник, пойму что всё сделал правильно?

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

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

когда детям преподавали вот просто ворованный софт

В некоторой степени это было даже хорошо, т.к. внезапно, это давало навыки работы в актуальном ПО, а не в каких-то невнятных "аналоговнет".

Что конкретно такого ужасного в Python

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

  • Отсутствие жесткой структуры, что приучает порождать говнокод. В то время как Pascal имеет понятную структуру, приучающую отделять код от данных, и немножечко думать, перед тем как начать что-то писать.

  • Скриптовость. Это и хорошо и плохо. Хорошо то, что быстро править. Плохо то, что некоторые концепции работы ПО (банально компиляция) и наличие архитектуры у ПК будет просто невозможно объяснить.

  • Отсутствие низкоуровневой части как таковой. На pascal код как раз получается "среднего уровня". Можно и байтики потрогать, и формочки наклепать.

любом другом из top5

С/С++

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

Java

В принципе, можно. Но я не знаю ничего похожего на winforms в java. Вcе GUI фреймворки, что мне удалось потрогать - это страх, боль и ужас.

C#

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

Можно бы использовать VSCode, как легковесную замену, но возвращаемся к вопросу установки нужного софта неопытным родителем, вспоминаем количество подпрыгиваний, которые придётся совершить, чтобы собрать и запустить "Hello world" в VSCode - и приходим к выводу, что это тоже не вариант.

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

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

Как по мне, лучше бы детей в школе учили писать скрипты для Excel, вместо "базы" :) Хоть на VBA, хоть на Python.

"Базу" всё равно не впихнёшь, а вот рутинная автоматизация пригодится буквально каждому. Кого заинтересует программирование, те и так в ВУЗе научаться, благо это не какая-то магия.

Я закончил школу в 2010-м году. Давненько уже, но не капец давно. Учил Pascal. Если честно, так и не понял, в чём с ним проблема? Ну да, на нём никто не пишет коммерческий, ну и что? Школьнику что, сразу после школы на работу программистом устраиваться?

Что конкретно такого ужасного в Pascal, что ему нельзя учить?

Этот хинт компилятору может к чертям на проде вам весь софт уронить. Не такой уж он безобидный. Да и используется довольно часто. Как минимум move конструкторы принято делать noexcept (и не спроста).

Адекватен ли такой работодатель?

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

Уж синтаксис вообще последнее дело спрашивать.

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

Вот тут не надо выдумывать. Сеньйор на то и сеньйор что гарантированно самостоятельно выдаст рабочее решение

Каким образом и какого качество решение? Он загрузит в себя за пару месяцев что идет испытательный срок, все современные плюсы? Маловероятно. Скорее всего он очень долгое время будет выдавать код таким, каким его писали в 1995-м году, забив на все современные практики, рекомендованные в том же Core Guidelines.

Работать-то оно будет, вот только этот будет требовать немедленного рефакторинга + непонятно кто и как его будет поддерживать после него. Решив проблему он создаст две и будет продолжать это делать, пока не пройдёт через N итераций "опыта", обладать которым он уже обязан.

Иначе это не сеньйор, и пусть он хоть весь C++ назубок знает, это просто малополезная ходячая энциклопедия

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

Вы б точно не прошли собес :D

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

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

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

Конечно, всегда можно найти какой-то пробел, никто не может знать всё, но мы говорим о базовом синтаксисе языка, на котором этот разработчик собирается писать код. Это не какая-то малоизвестная "тонкость" или там закрученный ADL-трюк. Стал бы я брать на работу переводчика, если бы он не мог написать грамотно предложение используя simple tenses? Вряд ли.

Тут вопрос к коммятищему этот код. Он его вообще запускал?

Запускал. Он просто не попал в ту ветку кода, которая всё ломает. И вообще это вчерашний студент-джун, который только и делает, что косячит.

Да фиг с ним с джуном. Это собеседование :) Я даю рядовую задачу - провести код ревью. Тут нельзя отмазаться, мол задача нереалистичная и на работе не встречается. Или что это какое-то надрачивание на алгоритмы. Или задача требующая специфические бизнес знания. Это самая рядовая рутина, которой её придётся заниматься на регулярной основе. Я напрямую заинтересован, чтобы человек мог выполнять эту работу.

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

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

Кстати я видел код на C++ размером порядка пары миллионов строк, в котором я вообще не заметил исключений (скорее всего их там нет)

Ничего удивительного. Тот же Chromium собирается без них. В GCC/Clang даже флаг для этого есть, называется -fno-exceptions. И у нас есть драйвера на С++, которые собираются с этим флагом (а также еще десятком других).

Это вообще не является оправданием для того, чтобы не знать как исключения работают. Я даже более скажу, стандартом отключение исключений вообще не предусмотрено (т.к. в STL очень много на них завязано). Так что код с -fno-exceptions формально даже не является кодом на любом из стандартов С++.

Ну и человек, знающий за каким чёртом в С++ отключают исключения и какие проблемы это за собой несёт, определённо должен быть способен ответить что делает noexcept :)

Если человек работал лет десять с такой code base, он вполне может быть синьор, просто его экспертиза может быть в других местах.

В принципе, этого никто и не отрицал, но собеседование идет на вакансию С++ разработчика :) Очевидно экспертиза нужна в С++.

Information

Rating
3,922-nd
Registered
Activity