All streams
Search
Write a publication
Pull to refresh
1
3.4
Евгений @Zara6502

ATARI XL/XE, ретро-ноутбуки

Send message

Понимание логики программы в том числе и строится на понимании что делает каждая её часть

нет. "чужая душа - потёмки". чтобы понять логику вам нужно знать как минимум глобально что делает этот код, то есть вы знаете что например это функция которая применяет к картинке алгоритм Собеля. Но внутри у вас черный ящик. Погружаясь внутрь вы видите авторское исполнение алгоритма, если оно отличается от "классического по учебнику" то именования переменных возможно дадут вам информацию что как-то где-то что-то, но чтобы раскурить саму реализацию нужно именно знать ход мыслей автора, а если он при этом пользовался хаками двоичной арифметики, то вам и про эти хаки нужно уже знать, иначе вы увидите строку a = b & #AA7755FF и будете гадать что это за константа такая, при этом в самом Собеле об этом ни слова. Ну назовёт он не a, а FormatEdge и что вам с этого? Какой формат, какого ребра?

Нет хуже вещи, чем однобуквенные константы (если контекст не 5-10 строчек, конечно, ну или если это не что-то фундаментальное типа "i","j), особенно если их несколько штук, мгновенно начинаешь в них теряться.

Если вы в состоянии глядя на код понимать его логику ( а вы об этом и пишете), то нет никакой разницы однобуквенные там переменные или нет. А если вы не понимаете логику, то какая разница как названы переменные, вы же всё равно не врубаетесь что это такое. Ну вот вам пример выше про FormatEdge - что вам это даст? В Собеле нет ни слова про форматирование граней и загуглить вы ничего не сможете.

Я для примера уже давал код архиватора ZX0, до сих пор тишина, так никто ничего и не понял.

Именно так и работает, программист не знающий шифрования зайдёт в код, сразу поймёт, что тут происходит шифрование, что за шифрование и с какими параметрами

Какие волшебные у вас программисты ) Прям сразу? )))) Ну-ну.

В случае несамоописываемого кода программист скорей всего вообще ничего не поймёт, просто какие-то функции, которые что-то как-то делают, получают какие-то цифры, зачем-то что-то солят, делят зачем-то.

А, вон вы про что. Ну так и я могу - зайти, прочитать названия переменных и сказать - шеф, тут происходит шифрование. Мне дадут пирожок и премию 100 млн рублей. Так? Если вы не в курсе что там за шифрование и вы в этом не специализировались, то вы ничего там не поймёте. Знаний на планете чуть больше, ВСЕГДА, чем в вашей голове. Если вы ожидаете что кто-то будет писать код расписывая все детали и подписывая каждый чих - то удачи вам. В 90% случаев вы максимум получите те самые переменные состоящие хотя бы из пары букв, но вам даже такая красота ничем не поможет.

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

Именно так всегда и будет. Вы хоть когда-то работали с оперсорсом? Там же нам рассказывают что сидят идейные программисты, они всё красиво именуют и документируют ))) А там всё так же как и в проприетарном коде - разброд и шатания. Никто не будет писать код чтобы облегчить кому-то жизнь через 20 лет. Вон в NASA с Cobol встряли, думаете если бы там было всё расписано по феншуй то была бы разница кобол там или хрябол?

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

ну как бы об этом и речь и ключевое здесь "боли и страдания", ну и вам заранее неизвестно получится ли запустить.

За МФУ и прочие сканеры/принтеры - однозначно искать драйвера на сайте производителя

Вы же в курсе что все Линуксы разные? Вы же в курсе что в Линуксе есть понятие - зависимостей и по сути выполняя условия для одного софта вы запросто ломаете другой софт? Точно в курсе?

А теперь представьте что я не продвинутый линуксоид уровня Бог и если драйвер скаченный с сайта производителя не встаёт, то как бы на этом мои полномочия всё. Безусловно я погуглю, но проблема в том, что даже в рамках одного дистрибутива, например Убунты они кардинально отличаются от релиза к релизу и любые мануалы по 12.04 абсолютно не обязаны работать для 16.04, что уж говорить если вы решитесь поставить antiX, Plop, Puppy или Deepin. Особенно мне нравится когда драйверы вообще ничего не выводят в консоль или в какой-то лог и ничего не пишут про истинную проблему. Открываешь sh скрипт установки и тут вопрос - на что обращать внимание? Дело в том что на одном дистре вот этот кусок не будет работать, а на другом - вот этот. А мне как прикажете знать на каком из дистров обкурившиеся сборщики что понакрутили???

может называться по другому, искать по описанию

Ну то есть вместо "далее-далее-далее" нам предлагает стать специалистами в какой-то области? А оно мне надо? А автора тут PCIID в винде напрягают )))) Хотя там такое не проблема уже лет 20, да и проблема эта чаще всего на экзотическом оборудовании, типа ноутбука который я сейчас реанимирую, там Toshiba постаралась, но и то всё ищу не по ID, а просто на сайтах с драйверами выкачиваю всё и потом ставлю.

Реально же я проблем вообще не помню

Так всё что вы описываете выше это и есть проблема, как думаете сколько пользователей желающих пользоваться линуксом обладают вашей квалификацией чтобы копаться в ядре? Мне хватило одного раза, когда я на ноуте FujiSiemens пересобирал ядро чтобы завелась видеокарта S3 Chrome, мне одного раза хватило чтобы я бросил саму идею этим заниматься когда-то еще. Как в анекдоте - вам шашечки или ехать?

теперь я вас понял, да, это мой недогляд, претензию снимаю.

А я не поленюсь и напомню, какие у вас представления о свободе

а вы точно уверены что это представления именно о свободе?

я за то чтобы выход в интернет был по документам

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

Что значит - не нужна цензура?

Когда мама говорит вам что нельзя ругаться матом, а папа даёт подзатыльник в лучшем случае - это и есть цензура, почему вы считаете что это не должно масштабироваться на всё общество?

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

а вас не смущает что люди так существуют всегда?

Простой пример - частная собственность. Я против неё

вас устраивает что кто-то купит всё вокруг и будет с вам брать деньги за вашу жизнь? вы точно так себе представляете свободу?

Но вас почему-то зацепил старый сканер в современном Линуксе

вы даже до сих пор не поняли о чем я вам пишу. видимо можно просто забыть и остаться при своих.

Я возразил по совершенно другому приведенному вами примеру

одно связано с другим. если вы что-то еще имете в виду то объясните.

так автор пишет про "function покормить_кота(имя_кота)"

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

по такой логике заливая фундамент под одноэтажный дом лучше залить его сразу под трехэтажный, а вдруг через 50 лет ваши внуки захотят 3 этажа строить?

если у меня задача хранить вектор 8 бит, то я не пишу софт под 64-битные векторы для "а вдруг".

Это вы мне ее зачем-то для оценки подсовываете

чтобы понимать что человек имеет в виду, на чём он основывает свои слова и как он мыслит, но!!!! я вам ничего не подсовываю, про винду написали вы, написали вы очень странный, но субъективный опыт установки драйверов и я понимаю этот опыт если бы остался в 2003 году, но вы о нём пишете в 2025, что не соответствует действительности в целом. Вот и получается странность, вы описываете негативный опыт установки (поиска) драйверов и вам это сделать можно, но когда я описываю негативный опыт установки (поиска) драйвером на линукс, то для вас это абсолютно другое.

Для меня главная претензия к винде - неудобство использования

Это абстракция ничем не подкрепленная. Я 90% времени пользуюсь Windows, причем не только современной, а от 98 до 11 и сказать про даже Windows 98 как "неудобную систему" - это нужно просто соврать. Может ли ОС не соответствовать вашим запросам - да сколько угодно. Это же в первую очередь инструмент и он выбирается под ваши нужды.

а можем ли мы ваши претензии к винде свести к тому же? или это другое? )

я хоть и тяготею к AMD, но имея и 1060/6 и RX580/8 могу сказать, что последняя несколько менее производительная, а в рейтинге она выше.

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

неконструктивный подход к разговору.

почему я говорю про инфантилизм - потому что инфантилы мыслят детскими категориями "плохо/хорошо" или ну очень любят "не запрещено - разрешено". при этом везде и всюду они говорят о свободе - СВОЕЙ ЛИЧНОЙ свободе, но когда носом тыкаешь в элементарное, что их действия и поступки мешают другим - они выпучивают глаза, как же, это посягательство на их свободу, на уникальность их снежинок!!!! ну что взять с детей?

поэтому запреты - это благо

когда мама запрещает жрать пирожное вместо первого и запивать лимонадом, она, о ужас - запрещает во благо.

и нет, это не значит что какой-то диктатор знает лучше как нам жить.

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

это и есть инфантилизм.

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

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

Где написано "везде в коде три вызова подряд"?

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

Да где?!

Ну давайте вы будете внимательно читать и статью и мои комментарии.

ad absurdum

bet betmurdum

когда вы один на планете и то вы не свободны от обстоятельств. нет никакой чистой и абсолютно свободы.

а когда вы живёте среди 8 млрд подобных у вас появляется 8 млрд представлений о свободе и ваша личная свобода запросто будет делать других несвободными, но это же ДРУГОЕ ))))))

Код, который не заставляет вас напрягаться, чтобы понять его замысел

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

А если переменная называется elapsedTimeInDays или activeUsers, вопросы отпадают сами собой

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

Разделите ее на validateForm, saveUserToDatabase, sendWelcomeEmail

Главное потом не забыть везде в коде писать по три строчки вызовов подряд (вы кстати дальше сами с этим же и боритесь)

Создадим одну общую инструкцию для кормления

а вот выше вы написали что нельзя так делать )

Хороший код стремится быть самодокументируемым. Это значит, что его структура и именования настолько ясны, что комментарии, объясняющие, что он делает, становятся излишними.

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

Регулярные мини-рефакторинги. Увидел плохо названную переменную - переименуй. Заметил длинную функцию - разбей на две. Оставляй код немного чище, чем он был до тебя.

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

Создайте внутренние гайды. Договоритесь внутри команды об общих правилах и зафиксируйте их

Когда-то давно, еще в 2006 году, пришел на работу в банк, там местный дядя-одмин набивал текстовички с информацией где что происходит и как это решать. Для себя в 2013 году я добрался до формирование локальной базы знаний на DokuWiki, но самое интересное что пока я был один на том заводе и ко мне изредка брали помощников которые поработав немного уходили, то ту базу знаний я наполнял и ей сам же пользовался, а вот на последующих работах ни коллектив, ни начальство эту идею не подхватывали.

Читаемый код ускоряет разработку в долгосрочной перспективе

А современный бизнес не мыслит такими категориями, им нужно здесь и сейчас, а что будет поле нас - пофигу. Это проблема съедает целые корпорации.

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

Жаль что так мыслят не те кто задаёт тон.

качество обработки внутри не важно

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

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

Information

Rating
1,137-th
Location
Новосибирск, Новосибирская обл., Россия
Registered
Activity

Specialization

Specialist
Middle