LINUX.ORG.RU
ФорумTalks

Устойчивый. Аутентичный. Криптокод

 , ,


0

1

Вчера к ночи хабр помянули... Ну, залез чего то. А там как всегда, подлизывания бизнесу:

Цели:

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

Пишите так, чтобы дебилу за 20к было понятно, отчуждайте от себя свой труд эффективнее, тьфу. И так в каждой первой статье.

А есть ли где нормальные статьи по подходу к кодированию? Чтобы цели примерно так выглядели:

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

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

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

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

- ещё раз, всё это без явных антипаттернов

Декларативный стиль всё это решает, но не всегда.

Сокращение кода и НЕсокращение представления предметной области помогают, но мало



Последнее исправление: TooPar (всего исправлений: 1)

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

написать такой код непросто, это высший пилотаж тролля-обфускатора )))

Egor_
()
Последнее исправление: Egor_ (всего исправлений: 1)
Ответ на: комментарий от Egor_

Судя по тутошним вопросам «о программировании» достаточно использовать какие-нибудь битовые операции и/или адресную арифметику. Неандертальцы точно в ступоре будут.

А высший пилотаж можно посмотреть в исходниках Chromium и Firefox. Вроде всё вполне «чисто», а сделать актуальный форк без зондов не могут даже целые группы вполне компетентных разработчиков.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

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

imul ★★★★★
()
Ответ на: комментарий от Stanson

достаточно использовать какие-нибудь битовые операции и/или адресную арифметику

Не, грубо, на это скоро линтеры научат ругаться

TooPar
() автор топика
Ответ на: комментарий от TooPar

Не, грубо, на это скоро линтеры научат ругаться

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

Stanson ★★★★★
()

продукт не ломается.

Не ломается либо хэлловорлд, либо труп.

код сопротивляется пониманию

Сопротивляется пониманию либо обфуксированный хэлловорлд, либо труп.

код сопротивляется незаметному изменению

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

код просто использовать в качестве либы

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

qtm ★★★
()
Последнее исправление: qtm (всего исправлений: 2)

Ты сам-то хоть участвовал в коммерческой разработке в пять и более рыл (не велосипед васяна, и не код для научной статейки «написал - сдал в архив - выбросил»)?

seiken ★★★★★
()
Ответ на: комментарий от seiken

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

TooPar
() автор топика
Ответ на: комментарий от TooPar

А не «нынешние» - это какие? В каких методичках предписано обфусцировать исходник, чтобы другие не поняли?

seiken ★★★★★
()
Ответ на: комментарий от seiken

Именно. Что за идиотизм — писать так, чтобы было непонятно. Так и обеспечишь себе на всю жизнь заработок ... на уровне МРОТа.

Miguel ★★★★★
()
Ответ на: комментарий от seiken

Просто писать в стиле «художник так видит», оно само получается

Harald ★★★★★
()

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

Удачной обфускации.

wandrien ★★★
()

код сопротивляется пониманию

И кому такое говно нужно.

отчуждайте от себя свой труд

Все ясно.

Nervous ★★★★★
()

Нужно использовать какую-нибудь вычислительную абстракцию и писать код под неё. Неандертальцу будет сложно выявить обобщающую идею и он будет делать правки тупо «в лоб». Например можно использовать абстракцию в виде конечного автомата. Программа будет выглядеть как обработчики состояний и переходов. Человек который не в теме будет пытаться делать правки втуливая многоэтажные if вместо рефакторинга состояний и переходов. Другой пример: стек-машина на которой пишем в стиле форта. Ещё вариант использовать модель акторов. Ну и т.п.

no-such-file ★★★★★
()

Чтобы цели примерно так выглядели

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

Zhbert ★★★★★
()
Ответ на: комментарий от seiken

В каких методичках предписано обфусцировать исходник, чтобы другие не поняли?

Он об этом чтоль? Я вроде про обфусцирование у него ничего не видел.

Zhbert ★★★★★
()
Ответ на: комментарий от Zhbert
  • код сопротивляется пониманию, причём не тупо, когда переменные не названы или гора условий, а так, что все условия чистого кода соблюдены, а мозг неандертальца всё равно взрывается
  • код сопротивляется незаметному изменению, аутентичный, то бишь. Если изменили - должно И глючить И должно быть видно, что неандерталец сделал изменения

На форуме завелся андерталец. Куды бежать.

wandrien ★★★
()
Ответ на: комментарий от wandrien

На форуме завелся андерталец. Куды бежать.

Слухай, да, я не распарсил с утра. Ну это он дичь предлагает, конечно, да.

Zhbert ★★★★★
()
Ответ на: комментарий от Egor_

почивший в бозе перл не спас бы отца русской демократии?

crypt ★★★★★
()
Ответ на: комментарий от Zhbert

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

crypt ★★★★★
()

Код на хаскеле проходит по всем пунктам.

system-root ★★★★★
()

Про undefined behaviour, сайд-эффекты ирл и связанную с этим магию забыл, бубноводам тоже нужна работа.

anon1984
()
Ответ на: комментарий от Zhbert

Это все фигня, таищ Темный лорд, на этом шарике важны спекулятивные игры, остальное - инструмент.

anon1984
()
Последнее исправление: anon1984 (всего исправлений: 1)

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

anon1984
()

А так - ничего нового, типикал тивоизатор итт. Столлман, мы все прое.. Видимо, все-таки место проклятое.

anon1984
()

А есть ли где нормальные статьи по подходу к кодированию? Чтобы цели примерно так выглядели:

код сопротивляется пониманию

Нет </thread>

t184256 ★★★★★
()
Ответ на: комментарий от TooPar

А вот и подлиза манагеров появился. Техлид называется

TooPar ★ (15.03.21 00:57:25) Моральный урод: Русские фильмы с английскими субтитрами... где взять? (комментарий)

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

Miguel ★★★★★
()
Ответ на: комментарий от anon1984

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

TooPar
() автор топика
Последнее исправление: TooPar (всего исправлений: 1)
Ответ на: комментарий от TooPar

Не, грубо, на это скоро линтеры научат ругаться

давно уже ругаются в safety-critical коде, см. например AUTOSAR C++.

Sectoid ★★★★★
()

Код пишут нормально, потому что иначе ты сам там спустя год разобраться не сможешь и будешь с позором уволен. А чтобы тебя было сложно выгнать, надо быть не макакой-кодером, а знать прикладную часть того что вы разрабатываете. Скорее всего, например, в РФ людей кто понимает как делать автопилот в машине человек 20 от силы. И вносить любого другого программиста можно, но его обучение и вливание в тему займёт больше года. И так с любым мало-мальски полезным специалистом, а не обезьянкой на галере. Так что хочешь стать незаменимым, найди себе узкую нишу, которая будет востребована и в которой полтора специалиста. Ну или вырасти в своей нише до того уровня, на котором остаются полтора человека, которые что-то соображают на уровне с тобой. А если не можешь, то ты обычная макака-кодировщик и не заслуживаешь быть незаменимым.

ЗЫ

Расти надо не только в глубь своей специфики, но и в ширину, это открывает новые горизонты перед тобой, даже в твоей нише.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от TooPar

Ты просто извращаешь код. Пиши state of art, все дела. Впрочем, работать обфускатором - твой выбор.

anon1984
()

Если вы умеете писать код, который:

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

  • код просто использовать в качестве либы. Подключил - имеешь простое апи для оплаченных сценариев

То у вас нет проблемы, что вас пытаются заменить «дебилом за 20к» (полагаю, 20к это зарплата в рублях в месяц?).

ugoday ★★★★★
()
Ответ на: комментарий от peregrine

неистово лорчую этого безработного узконишевого спеца!

n_play
()

Дяденька, да у вас БИЗНЕС. Я работал в конторе, где кучу лет один чел сидел с своими модулями с закрытыми сорцами, и просто перегораживал всё развитие проекта. Причем, объективно эти его сорцы не были критичными для проекта и могли быть переписаны хоть с нуля. Это я о том, что требование

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

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

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

По классике жанра, аля Microsoft, ты должен был бы сохранять все нелогичные особенности своего кода, все костыли должны тянуться и поддерживаться от релиза к релизу, фундаментальные штуки желательно разрезать на мелкиемелкие куски и раскидать по проекту, не оставив инструкции по обратной сборке. Но проблема в том, что при такой организации проект будет тупо сложнее поддреживать тебе самому. В MS это оправдывалось тем, что у MS было очень много ресурсов и она могла позволить себе нанять лучших кодеров. Но уже сейчас эти «фичи» оборачиваются болью и чрезмерными тратами, из-за чего MS спешит избавляться от наследия своей былой славы. Более того, еще и отдает кучу сорцов в опенсорс.

byko3y ★★★★
()
Ответ на: комментарий от Stanson

А высший пилотаж можно посмотреть в исходниках Chromium и Firefox. Вроде всё вполне «чисто», а сделать актуальный форк без зондов не могут даже целые группы вполне компетентных разработчиков

Потому что там миллионы строк кода только непосредственно самих браузеров, а еще десятки миллионов стронних либ. К слову, разве у хрома и лисы нет форков без зондов?

byko3y ★★★★
()
Ответ на: комментарий от no-such-file

Ты натолкнул меня на интересный образ. Чтобы программу было сложн оподдерживтаь индусу за 20к, она должна как можно меньше соответствовать шаблонам, и как можно больше соответствовать поставленной задаче и требованиям проекта. Все тулят паттерн «посетитель», а ты сделал множественную диспетчеризацию. У всех перловые регулярки, а у тебя расширяемый автомат.

byko3y ★★★★
()
Ответ на: комментарий от Nervous

отчуждайте от себя свой труд

Все ясно

Да не всё ясно. Он затронул одну сторону, но я дополню это второй стороной явления — это тенденция по всей отрасли нанимать самых дешевых программистов. И тебе ставится в обязанность этих даунов кормить с ложечки превдарительно разжеванной инфой, чтобы они тебе два дня выносили мозг, а потом за оставшуюся неделю написали код, который ты бы написал за полдня сам без их «помощи». Чел подходит к проблеме со стороны «я обыграю нанимателя на его собственном поле» — в этом плане я могу лишь позавидовать его решительности, потому что я эту помойку уже давно послал и не собираюсь принимать никаких мер, помимо неспешного поиска новой работы и создания потенциального собственного проекта.

byko3y ★★★★
()
Ответ на: комментарий от Zhbert

Как я понимаю, нынче важно не это, а подвернутые штаны и канбан-доска, эффективность и продуктивность, команда и все все все, но только не качество кода, работа конечного продукта и его надежность

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

Я искренне пока что не могу понять, откуда такая тенденция берется. То ли из-за расширения кадровой базы до курьеров, секретарш, и токарей, то ли от избытка готовых решений, из-за чего программист стал программировать мышкой на библиотеках, а не мозгами на ЯП. Но программирование мышкой, вроде бы, уже довольно давно изобретено.

byko3y ★★★★
()
Ответ на: комментарий от byko3y

К слову, разве у хрома и лисы нет форков без зондов?

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

Что до Chromium’а который якобы является обезгугленной версией Chrome, это во-первых не так (Ungoogled Chromium пытается это сделать, но, естественно, опаздывает), а во-вторых Гугль усердно выпиливает из него фичи, без которых всякие необходимейшие uBlock’и не могут полноценно выполнять свои функции.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

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

Ну хз, SPA фреймворки и либы всякие вроде как поддерживают ES5 до сих пор, плавно перетекая на ES6, и не спешат использовать новые фичи. Описываемая тобой проблема обычно сводится к тому, что вебсайт не работает полностью корректно ни на каком браузере вообще. Но я бы подчеркнул, что одним из первых в гонке за новыми фичами идет сам гугл, и именно с целью продвинуть свой браузер, подменяя понятие «быстро работает ютьюб» в глазах публики на понятие «быстро работают вебсайты» — а по факту остальные сайты работают примерно так же, как и на старых браузерах.

byko3y ★★★★
()
Ответ на: комментарий от byko3y

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

не совсем в тему, но могу привести свои недавние наблюдения на другом поле. была у меня идея поработать фотографом для сми. и что я обнаружил? основной контент компаниями принимается бесплатно от очевидцев с сотовых. [a] потребителю больше и не надо. штатные фотографы - это уже не основной поставщик, а запасной, поставляют «клей» для материала. в итоге, ес-но, нанимают девочек, освоивших специализированный компьютер под названием «цифровой фотоаппарат». зарплаты при этом двигаются вниз. профсреда при этом, ес-но, деградирует. качество фото падает. потребителю не на чем нарабатывать вкус. его требования остаются минимальными. [goto «a»]

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

crypt ★★★★★
()
Последнее исправление: crypt (всего исправлений: 4)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.