LINUX.ORG.RU
решено ФорумTalks

Почему вы не думаете о разрабатываемом продукте как пользователи?

 , ,


0

1

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

  • Вы смотрите требования?
  • Вы задумываетесь о логике требований?
  • Вы думаете о пользователе?
★★★

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

А когда есть и время, и деньги, то почему бы не подумать? :)

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

zgen ★★★★★
()

Вы думаете о пользователе?

Только о большегрудых.

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

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

и vice versa :)

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

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

Ему плачу не я. Мне только непонятно, зачем он такой дался, если вместо сэкономить мне немного времени и нервов, по его милости цикл разработки увеличивается минимум втрое?

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

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

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

RedPossum ★★★★★
()

Вы смотрите требования?

Да, проверяю на реализуемость/геморность

Вы задумываетесь о логике требований?

Да, проверяю на реализуемость/геморность

Вы думаете о пользователе?

Да, иногда им сочувствую.

ya-betmen ★★★★★
()

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

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

Еще раз. Высокопарные споры о том, насколько undefined behaviour undefined, костылизмах и всем прочем, валится с треском в столкновении с реальным миром, где 90% кода — говнокод. И людям

Стоп! Кто исправлять должен? Люди? Или всё-же программисты?

ИМХО — программисты. Причём не просто «какие-то программисты», а те говнокодеры, которые накосячили. Или говноконтора, которая нанимала этих говнокодеров.

Ты с этим будешь спорить, не?

При чём тут glibc, при чём тут Линус? Это разве в glibc говнокод? Почему тогда надо костылять glibc, если говнокод в другом месте?

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

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

Да, дверь нужна. И потому надо найти этого гастробайтера, дать ему в рыло, и заставить переделывать по человечески. Или там прораба — это уже детали.

А то, что в Этой Стране традиционно делают через жопу — дык мы и живём в жопе. И лазаем через приставные лестницы в «дверь» на третьем этаже. Не надо этот быдлячий подход распространять ещё и на IT.

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

про «чистоту кода» никто не говорил. Проблема не в том, что «код некрасив», проблема в том, что он НЕ РАБОТАЕТ. А какой «красивый» у адобы код — речи нет. (это в адобе должен быть тим лидер, который и должен следить за «чистотой». Очевидно, он был в запое, или обиделся за что-то. Я не знаю. Знаю, что работу свою он зафейлил. А его подчинённые написали говно, которое еле-еле работает, и которое ессно сломалось. Чья это проблема?)

Потому что красивая и элегантная система, на которой нельзя запустить ничего, не нужна никому.

да всем пофиг, какой у адобы код, лишь-бы работал. А он — не работает. И работает совсем не потому, что memcpy «плохая», она свою работу выполняет правильно. Всех хотелок не предусмотреть.

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

Это разве в glibc говнокод?

Деточка, ты видел глибц? Ты пробовал его собирать? Ты читал его код? Посмотри на досуге как-нибудь. Только я тебе по доброму советую хотя бы грамм 50 принять перед этим, для смелости.

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

Инструкции дешевые, обращение к памяти - дорогое. Проверить на пересечение - дешево.

Обращение к памяти — бесплатное, если оно предсказано, и предвыбрано. Конструкция перехода — обычно дешёвая, если предсказана верно, если нет — она ломает ВЕСЬ конвейер, и процессору приходится считать ВСЁ по новой. В том числе предвыбранные данные из памяти тоже херяться, и их тоже приходится вытаскивать заново. Потому, лишний переход может привести к Over9000 штрафных тактов, особенно если очень сложно предсказуем. ИЧСХ, в memcpy именно тот случай, т.к. она копирует РАЗНЫЕ куски памяти, и какой из них «выше», а какой «ниже» — совершенно недетерминированно. И это не играет роли, потому-что они не перекрываются. Потому, на современном процессоре с длинным конвейером, и с мощным блоком планирования, такого рода переход может привести к существенным тормозам. Но что самое обидное, этот переход, который всё ломает, НЕ НУЖЕН, если это не говнокод.

Rule of Economy: Developers should value developer time over machine time, because machine cycles as of the year 2013 are relatively inexpensive compared to prices in the 1970s. This rule aims to reduce development costs of projects.

скажи это говнокодерам из адобы, которые из-за нескольких тактов заюзали memcpy вместо memmove. Это ОНИ хотели сэкономить. А у нас совсем другой вопрос: нужно-ли тормозить ВСЁ, из-за какого-то быдлокода?

И да, если уж так хочется, есть ведь LD_PRELOAD, или как её там, ну сделай свою версию memcpy СБИШ, для быдлофлеша, зачем это говно в апстрим пихать?

emulek
()
Ответ на: комментарий от shimon

Деточка, ты видел глибц?

конечно. Это же и есть те самые memcpy(3), которые я каждый божий день юзаю.

Ты пробовал его собирать?

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

Ты читал его код? Посмотри на досуге как-нибудь. Только я тебе по доброму советую хотя бы грамм 50 принять перед этим, для смелости.

да видел я его. Ничего там нету такого страшного. Если учесть, что этот код работает на Over9000 процессорах, и работает хорошо. Если такой умный, возьми ту же memcpy(3) и припиши по своему. Ну и выкладывай, а я проверю на своих системах. Ставлю 10 против одного, что твой код будет suxx.

emulek
()
Ответ на: комментарий от xnick

«И тогда такой производитель станка или его потребитель, заплативший кучу лямов, и желающих зачем-то мигрировать софт управляющего станком компа (ССЗБ), платит деньги мне, или кому-то еще, кто ему сделает хорошо. И станок работает дальше...»

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

Обращение к памяти — бесплатное, если оно предсказано, и предвыбрано. Конструкция перехода — обычно дешёвая, если предсказана верно, если нет — она ломает ВЕСЬ конвейер, и процессору приходится считать ВСЁ по новой. В том числе предвыбранные данные из памяти тоже херяться, и их тоже приходится вытаскивать заново. Потому, лишний переход может привести к Over9000 штрафных тактов, особенно если очень сложно предсказуем. ИЧСХ, в memcpy именно тот случай, т.к. она копирует РАЗНЫЕ куски памяти, и какой из них «выше», а какой «ниже» — совершенно недетерминированно. И это не играет роли, потому-что они не перекрываются. Потому, на современном процессоре с длинным конвейером, и с мощным блоком планирования, такого рода переход может привести к существенным тормозам. Но что самое обидное, этот переход, который всё ломает, НЕ НУЖЕН, если это не говнокод.

Это все хорошо и правильно, но я уверен что можно написать memmove с оптимизацией не хуже, чем memcpy для случая когда регионы не пересекаются.

скажи это говнокодерам из адобы, которые из-за нескольких тактов заюзали memcpy вместо memmove. Это ОНИ хотели сэкономить. А у нас совсем другой вопрос: нужно-ли тормозить ВСЁ, из-за какого-то быдлокода?

При чем тут адоба вообще, ошибку каждый может сделать. Эти грабли как будто специально расставили.

И да, если уж так хочется, есть ведь LD_PRELOAD, или как её там, ну сделай свою версию memcpy СБИШ, для быдлофлеша, зачем это говно в апстрим пихать?

Я хочу чтобы такого класса ошибок вообще не было.

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

Правда потом мне припекло, и проект я забросил

Кулстори нищеброда.

Необязательно, это могла быть женщина.

lodin ★★★★
()

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

Меня раздражает повсеместное упрощение интерфейса.

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

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

Chaser_Andrey ★★★★★
()

Почему вы не думаете о разрабатываемом продукте как пользователи?

Потому, что об этом думают дизайнеры, а не программисты.

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

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

мне не придется к ней прикасаться

Богомерская мобильная платформа :)

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

Необязательно, это могла быть женщина.

Нет у него женщины, один лишь LFS.

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

Это все хорошо и правильно, но я уверен что можно написать memmove с оптимизацией не хуже, чем memcpy для случая когда регионы не пересекаются.

facepalm... Memcpy это и есть «memmove, для случая, когда регионы не пересекаются»!!!!111один-один

При чем тут адоба вообще, ошибку каждый может сделать. Эти грабли как будто специально расставили.

да НЕХ*Й ЛЕЗТЬ ОПТИМИЗИРОВАТЬ!!! Юзай memmove, и не вы***ся. Не, захотелось ведь «побыстрее», от добра благодать стяжать... Ну и дооптимизировались. Дебилы.

Я хочу чтобы такого класса ошибок вообще не было.

водятлы говорят: «не уверен, не обгоняй». Кнут вот тоже говорит — зло великое, преждевременная оптимизация. Но быдлокодерам хоть кол на голове теши — «дык ведь у нас работает!»

Проблема в том, что по уму можно было-бы вообще нафиг выкинуть memcpy, чтоб не путались обезьяны, но беда-то в том, что memcpy нужна в 95% случаев, и только в 5% нужна memmove. А последняя таки медленнее. Иногда — СИЛЬНО медленнее. И нужна редко.

emulek
()
Ответ на: комментарий от ptarh

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

да ты, я вижу, извращенец.

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

Линукс набит отсутствием хорошо выверенных стандартов для приложений, и в таких ужасных условиях интерфейсы его приложений на удивление хороши.

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

facepalm... Memcpy это и есть «memmove, для случая, когда регионы не пересекаются»!!!!111один-один

ну и пишем

if (unlikely(intersection()))
  __memmove()
else
  __memcpy()

да НЕХ*Й ЛЕЗТЬ ОПТИМИЗИРОВАТЬ!!! Юзай memmove, и не вы***ся. Не, захотелось ведь «побыстрее», от добра благодать стяжать... Ну и дооптимизировались. Дебилы.

Да ерунда вообще, осталось найти программистов, не делающих ошибок. Этот дефект с memcpy надо специально искать например, если на старой glibc он не проявлялся.

Проблема в том, что по уму можно было-бы вообще нафиг выкинуть memcpy, чтоб не путались обезьяны, но беда-то в том, что memcpy нужна в 95% случаев, и только в 5% нужна memmove. А последняя таки медленнее. Иногда — СИЛЬНО медленнее. И нужна редко.

И в чем например проблема оптимизировать memmove для неперекающихся регионов так же как оптимизирована memcpy и почему это будет СИЛЬНО медленее?

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

ну и пишем

if (unlikely(intersection()))

дык почему не просто memmove?

Да ерунда вообще, осталось найти программистов, не делающих ошибок. Этот дефект с memcpy надо специально искать например, если на старой glibc он не проявлялся.

пиши memmove, и ничего искать не нужно.

И в чем например проблема оптимизировать memmove для неперекающихся регионов так же как оптимизирована memcpy и почему это будет СИЛЬНО медленее?

Ты про НЕОПРЕДЕЛЁННОСТЬ слышал когда-нибудь? Если ты очнулся хрен знает где, первым твоим вопросом будет «где я?». Холодного пивка ты попросишь ПОСЛЕ этого. А может и не попросишь, смотря каким будет ответ на первый вопрос.

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

Речь была о

Почему тогда надо костылять glibc, если говнокод в другом месте?

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

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

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

Ему плачу не я. Мне только непонятно, зачем он такой дался, если вместо сэкономить мне немного времени и нервов, по его милости цикл разработки увеличивается минимум втрое?

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

Кстати, чем подробнее будут Ваши инструкции, тем быстрее ему надоест их слушать (если, конечно, это действительно толковый человек).

P.S. Пытаясь ответить на этот коммент, придумал формулировку: «Сениор - это тот, кто может джуниору объяснить за час задачу, которую миддл сделает за 20 минут».

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

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

мне не интересны твои споры с твоими голосами в твоей голове. AFAIK не только мне. Я такого не говорил.

Я говорил, что не нужно добавлять говно в glibc, из-за того, что какое-то другое говно не работает. А то, что в glibc и так полно говна, то это лишь укрепляет мою позицию.

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

это твоё решение, и я не буду тебя разубеждать: жри на здоровье. Однако, позволь мне самому решать, жрать мне говно, и если да, то когда и сколько. Может у меня вообще нет адобыфлеша? Может речь вообще про сервер. На всех серверах тоже по твоему нужно портить одну из самых востребованных функций? Из-за того, что у кого-то там не заработал где-то какой-то быдлокод для показа всякой хрени?

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

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

Я говорил, что не нужно добавлять говно в glibc, из-за того, что какое-то другое говно не работает.

Аргументируя это хитрым риторическим вопросом, как бы намекающим , что в glibc говна нет.

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

всё ваше GNU и linux в частности это говно в одном месте ради того, чтобы работало в другом. Это жизнь, в ней всегда так.

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

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

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

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

Аргументируя это хитрым риторическим вопросом, как бы намекающим , что в glibc говна нет.

намёк ты не понял. Чтож, открытым текстом: я намекал на то, что обосрать можно что угодно. И это не повод срать где тебе угодно.

всё ваше GNU и linux в частности это говно в одном месте ради того, чтобы работало в другом. Это жизнь, в ней всегда так.

сделай вдоль. Есть и другие миры, кроме этого.

Хоть очистишь этот мир хоть от одного засранца...

emulek
()
Ответ на: комментарий от zgen

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

я разве предлагал что-то класть в glibc? Мне нравится. Если тебе и/или Линусу не нравится — вот вы и пишите своё СБИШ.

А меня вполне устраивает наличие двух функций:

1. быстрая и специальная

2. медленная и универсальная

Оно так уже лет 30 как минимум, и я не вижу смысла это менять. А если какой-то чудак вместо универсальной юзает неправильно специальную — проблемы исключительно этого чудака. Ну и пользователей его говнокода, конечно.

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

я разве предлагал что-то класть в glibc?

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

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

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

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

emulek
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.