- 1
for (double x = xn, p = 1, n = 0, y = 0; x > xk ? cout<<p<<' '<<n, false : true; x += dx, y = cos(x) + x*5. / 2, y > 0 ? p *= y : y < 0 ? n++ : n );
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+1
for (double x = xn, p = 1, n = 0, y = 0; x > xk ? cout<<p<<' '<<n, false : true; x += dx, y = cos(x) + x*5. / 2, y > 0 ? p *= y : y < 0 ? n++ : n );
Попросили помочь с задачей:
> Определить произведение негативных и количество позитивных значений функции y=cos(x)+x*5./2, если значение x изменяется от xn до xk с шагом dx.
Я постарался, как мог, всё-таки язык мне не очень близок (немного помогли). Возможно, ещё есть, куда "улучшить".
JloJle4Ka 23.09.2021 16:44 # +1
ObeseYoung 23.09.2021 19:57 # +1
> немного помогли
Сколько там уровней вложенности?
MetallDoctor 23.09.2021 20:06 # +1
Нечестно было бы после этого присваивать все лавры реализации себе, мои тут -- идея и основная часть кода, но у меня сразу получилось скучнее.
ASD_77 23.09.2021 20:10 # +1
guest6 23.09.2021 20:15 # +3
MetallDoctor 23.09.2021 20:43 # 0
Потренировать голову. Это вам не пайтон, где "должен существовать один и, желательно, только один очевидный способ сделать это". Тем более, что на сях ни на каких я не писал уже много лет и просто было интересно, как получится.
Показать мощь, "красоту" и "изящество" сей. И вообще очень интересно было бы увидеть глаза препода, которому это сдают.
Ну и просто если человек несёт такую задачку на форум, то, наверное, он слишком многого не понял. Если повезёт, этот пример его чему-то научит, если нет... ну незнаю, может, ему стоит заняться чем-то ещё. Я учился сам, по бумажным книжкам, без Интернета и что-то освоил. Если бы у меня был Интренет и бескорыстные честные советчики, то освоил бы меньше.
guest6 23.09.2021 20:54 # +1
В питоне это уже давно не так
ObeseYoung 23.09.2021 21:16 # +1
MetallDoctor 24.09.2021 10:10 # 0
Почему сейчас Пистон стало модно использовать для прототипирования? На нём можно не сражаясь с языком написать первую версию, обновить её, ещё обновить, понять, что зашёл в тупик, переписать КЕМ с нуля (и всё это сделать раньше, чем у сишников выйдет версия 0.2) и когда будешь доволен результатом — отдать на переписывание на Кресты или Шарп какой-нибудь для скорости (а то и провести замеры и понять, что переписывание даст 5-кратный прирост производительности, но это будет «0,02с вместо 0,1с» на самой дорогой из обычных манипуляций и запустить в прод прямо так или переписать 10% самых узких мест и получить время в 0,027с).
bormand 23.09.2021 20:54 # +1
Я бы уебала с вертушки в щи на месте препода...
Программирование -- оно только на 10% о написании говна для компа, остальные 90% посвящены будушим читателям.
Иногда хочется поприкалываться, конечно. Но для этого есть специальные места: ГК, к примеру, или личный бложек какой-нибудь. Не надо это тащить в лабы и тем более в продакшен.
MetallDoctor 23.09.2021 22:56 # +1
Я вообще категорически против того, чтобы давать готовые ответы на лабораторки. Что получится из того, кто с первого дня ищет готовые ответы по форумам?
MetallDoctor 24.09.2021 10:32 # +1
Если бы это было так, то свои пэт-проекты писались бы в 10 раз быстрее и кто-нибудь давно придумал бы, как это поменять в кровавом энтерпрайзе (нашлись ведь те, кто придумал кусок Г под названием «Agile»).
На самом деле, не так. Ты просто зубришь принятый code-style и быстро начинаешь писать по его канонам, даже не отвлекаясь на такое. По крайней мере когда я пишу на своём любимом Python, я просто пишу код, который будет выполнять задачу, примерно держа в голове PEP8, а за деталями (типа соглашения по наименованию, кто его помнит наизусть вообще?) смотрит IDE. Так что не заботу о читаемости уходит ~5% времени. А забота о последующей возможности расширения это вообще отдельная индивидуальная тема, которая требует понимания, что это за проект, куда он идёт и куда можно прийти, но это часть ПРОГРАММИРОВАНИЯ, не имеющая отношения к КОДУ и этим давно занимаются отдельные люди.
bormand 24.09.2021 10:47 # +2
> пэт-проекты
Они из-за перфекционизма зачастую пишутся медленнее.
> расширения
Я сейчас не столько про расширение, сколько вообще о том, поймут ли потомки код через пару лет, смогут ли они хотя бы мелкую багу пофиксать.
И если я говорю себе, что это просто прототип, который пойдёт на выброс -- я действительно ебашу на порядок быстрее. Но кому-то показывать это стыдно.
MetallDoctor 24.09.2021 14:42 # 0
Про перфекционизм -- ладно, пусть. Но тут ведь как -- если бы можно было ускорить разработку В ДЕСЯТЬ РАЗ, пусть и ценой лютых проблем с дальнейшей поддержкой вплоть до её абсолютной невозможности (при 10-кратном ускорении не проблема каждую версию с нуля переписывать) на это 100% нашёлся бы спрос. Но его не видно.
JloJle4Ka 24.09.2021 15:12 # −1
MetallDoctor 24.09.2021 15:15 # 0
JloJle4Ka 24.09.2021 15:18 # 0
> Но тут ведь как -- если бы можно было ускорить разработку В ДЕСЯТЬ РАЗ, пусть и ценой лютых проблем с дальнейшей поддержкой вплоть до её абсолютной невозможности (при 10-кратном ускорении не проблема каждую версию с нуля переписывать) на это 100% нашёлся бы спрос. Но его не видно.
Прочитало тебе взаимоисключающие параграфы за щеку, проверь.
ObeseYoung 24.09.2021 15:26 # 0
rotoeb 24.09.2021 15:32 # 0
ObeseYoung 24.09.2021 15:53 # 0
6E3BY3HuK 24.09.2021 15:37 # 0
JloJle4Ka 24.09.2021 19:28 # −1
6E3BY3HuK 25.09.2021 01:03 # 0
bormand 24.09.2021 15:21 # +2
И он есть, к сожалению...
> ты не забыл, как назвал её в промежутке между объявлением и использованием
Ну вот назову я их p и n, как это делает типичный сишник. Или напишу какую-нибудь поебень в духе if (usbrd(0x183) == 0x01). Во время написания кода это никаких проблем не вызывает, да и через пару дней тоже. Жопа начинает гореть именно через месяц-другой, особенно если подобный код написал не ты.
Т.е. внятные имена -- они именно для будущего читателя, чтобы ему не приходилось заниматься прикладной археологией.
MetallDoctor 24.09.2021 15:43 # 0
Если в приведённом говнокоде видимость p и n ограничена одной строкой, то не важно, как они называются, это не скажется на понимании кода (пушто ты ткнул в переменную и видишь все её вхождения, как бы она не называлась). А вот то, как сам код написан -- скажется, но как было уже справедливо замечено выше, код из примера написать не проще и не быстрее, чем более очевидный правильный вариант, который и править впоследствии будет легче.
bormand 24.09.2021 16:00 # +2
Ха-ха-ха. Я видела множество реальных примеров, где переменные и, самое ужасное, поля широко используемых структур назывались в духе nc (т.е. network_connection) или pc (т.е. packet_counter). Их имена очевидны когда ты уже в теме, скроллить ради них ничего не нужно. Но с нуля въезжать в эти nc->pc очень весело...
MetallDoctor 24.09.2021 18:07 # 0
Если я сейчас открою идеально написанный код драйвера -- я ни органа не пойму и не потому, что он плохой, а потому что я в душе не совокупляю, как вообще работают дрова.
А вот зная, что и как называется (и сокращается, да) в данной предметной области я буду только рад, что мне достаточно коснуться двух кнопок (не, в хорошей IDE, конечно, тоже есть умные подсказки, но нажать две кнопки и выбрать из списка -- дольше, чем просто нажать две кнопки, да ещё и отвлекает, сильнее отвлекает только исправление опечатки посреди строки).
Вообще считать, что другое именование переменных может заметно ускорить или замедлить разработку -- это такое себе... Прям представляю себе "чтобы разрабатывать быстрее называйте переменные так: ***"
Soul_re@ver 24.09.2021 18:26 # +3
Не зная принципа работы драйверов, зная приблизительно проблему, после поверхностного сканирования хорошо написанного кода, можно представить приблизительную структуру программы, найти места, где потенциально эта проблема может возникнуть, и изучить их поглубже.
Незнание принципа работы тебя сильно подкосит только, если ошибка находится, скажем, на границе взаимодействия драйвера с ОС или реально в предметной области — банально перепутаны байты местами в подготовленной структуре. Тут без знания протокола общения с железкой ничего не сделаешь.
bormand 24.09.2021 16:08 # +2
Удачи с разбором какого-нибудь матана или битоёбского алгоритма. Далеко не всегда по вхождениям переменной очевидно что в ней лежит.
Soul_re@ver 24.09.2021 18:27 # +1
Какое название дать переменной со значением ?
bormand 24.09.2021 18:37 # +3
guest6 24.09.2021 18:39 # 0
bormand 24.09.2021 18:40 # +2
guest6 24.09.2021 18:46 # +1
и типа это считалось хорошо наверное
CHayT 24.09.2021 20:12 # +4
1) p, i, t, U, z
2) arrayLoopIteratorFactoryDecorator
CEHT9I6PbCKuu_nemyx 24.09.2021 20:22 # +3
Или так: outputImageProviderFromBufferWithPixelFo rmat.
3.14159265 25.09.2021 16:51 # +1
Смотри, как надо: AccessCheckByTypeResultListAndAuditAlarmByHandle
Или так: outputImageProviderFromBufferWithPixelFormat
bormand 25.09.2021 16:53 # 0
j123123 25.09.2021 16:58 # 0
И животноводство!
3.14159265 25.09.2021 16:59 # 0
https://ideone.com/hNpKZu
CHayT 24.09.2021 22:31 # +1
Если кратковременная память хорошая, то хорошо, быстрее парсится. Длинные имена и привели нашу профессию к упадку.
guest6 24.09.2021 22:46 # +1
Когда у тебя 80x25 экран, как-то не тянет на AbstractStrategyGeneratorFactoryImpl
ObeseYoung 24.09.2021 23:24 # +1
7 ячеек там максимум, вроде
CBuHOKYP 26.09.2021 23:23 # 0
CHayT 24.09.2021 20:18 # +2
guest6 24.09.2021 16:18 # +2
Код должен быть читаем без IDE (например для ревью его или для просмотра через браузер, для изучения патча итд)
MetallDoctor 24.09.2021 16:20 # 0
bormand 24.09.2021 16:23 # +2
MetallDoctor 24.09.2021 18:09 # 0
guest6 24.09.2021 16:24 # 0
bormand 24.09.2021 16:32 # +2
JloJle4Ka 24.09.2021 19:31 # +2
MetallDoctor 24.09.2021 18:10 # −1
bormand 24.09.2021 18:38 # +4
bormand 24.09.2021 16:24 # +1
Analog to Digital Interface Handle 3 Status Register?
Вполне читаемо, если постоянно с этим работаешь. Скроллить и искать не придётся.
MetallDoctor 24.09.2021 20:18 # +1
ASD_77 24.09.2021 19:27 # +2
Soul_re@ver 24.09.2021 11:20 # +6
Так как я работал в универе, вёл лабораторные и практики, я квалифицирован ответить на этот вопрос.
Для начала проверка на работоспособность на тестовых значениях (которое она не пройдёт, потому что считает произведение положительных и количество отрицательных значений), затем, если всё ОК, задам пару вопросов в стиле «а зачем этот кусок» и «что случится, если это поменять». Затем попрошу поменять код, или рассказать что, где и как будешь менять для того, чтобы, скажем, код делал ровно 2999 итераций, включая xn и xk, и поменять функцию на другую, заданную кусками.
Затем, если это непрофильный предмет, посмотрю в эти пустые глаза, попрошу попробовать делать самостоятельно и отпущу человека со своей тройкой/сданной лабой. А если профильный, то в зависимости от того, как человек будет отвечать, может уйти с любой оценкой. Или отправится изучать "собственный" код повнимательней.
CEHT9I6PbCKuu_nemyx 24.09.2021 13:26 # +5
Ассистенты экзаменатора повторяют: «Зачем? Зачем?»
>> «что случится, если это поменять»
Затем код меняют.
Desktop 24.09.2021 18:31 # +1
– главное, что часы капают тебе и кафедре, правильно?
Soul_re@ver 24.09.2021 18:40 # +3
2) Если ты не какая большая шишка (а такие непрофильникам обычно не преподают) то к тебе придёт декан и спросит, почему ему декан с кафедры того хера интересуется, почему у него нет допуска к экзаменам?
3) Неписанное правило, что за неуспеваемость отчисляют только по профильным предметам. По непрофильным либо за полную тупость, либо за забитие хуя.
Desktop 24.09.2021 18:44 # 0
– человеку нет, вузу и кафедре да
> а такие непрофильникам обычно не преподают
– странно, у нас непрофильные предметы и завкафедрой вёл. и наш декан вёл у гуманитариев.
> Неписанное правило, что за неуспеваемость отчисляют только по профильным предметам
– отчисляют за неоплату контракта лол
Soul_re@ver 24.09.2021 18:48 # +3
Везде по-разному. Не могу говорить за всех.
> отчисляют за неоплату контракта лол
За успеваемость тоже выгодно — ещё раз семестр оплатит.
ISO 24.09.2021 19:53 # +5
Вообще-то отсчисляют всех: любой студент в итоге будет отчислен.
Desktop 24.09.2021 20:06 # +1
bormand 24.09.2021 20:30 # +3
CEHT9I6PbCKuu_nemyx 24.09.2021 20:32 # +2
JloJle4Ka 24.09.2021 19:26 # 0
О, значит вместо лекции по философии пойду пивко пить с пацами в понедельник, всё равно после неё физра)
CEHT9I6PbCKuu_nemyx 24.09.2021 20:00 # +1
ISO 24.09.2021 20:03 # +4
А вообще преподаватели непрофильных нинужно от осознания своей нинужности довольно часто впадают в маразм и начинают требовать от студентов чуть ли не дословной зубрёжки нинужных лекций. Такая себе компенсация.
guest6 24.09.2021 20:11 # +5
guest6 25.09.2021 00:38 # +2
JloJle4Ka 25.09.2021 09:52 # +1
А он тоже считал себя 14-ти летней девочкой-лолечкой-волшебницей? Мы бы с ним подружились, ведь кодеблокс это мой любимый редактор... Был.
CEHT9I6PbCKuu_nemyx 24.09.2021 20:12 # +3
Часть профильных предметов нам преподавали не профессиональные преподаватели, а научные сотрудники академических институтов. Они всё делали наоборот. Разрешали во время подготовки к экзамену списывать из учебников, пользоваться подсказкой соседа — в общем, никаких запретов, никаких формальностей. А после вызова начинали спрашивать всё, кроме билета. Они реально выясняли, насколько студент владеет предметом, а не может ли он вызубрить билет.
CHayT 24.09.2021 20:36 # +3
На экзамене по ОТО (непрофильный предмет для нашей специальности девочек-волшебниц) препод дал тянуть билет на консультации в вечер перед экзаменом. Эта теория требует требует очень много муторных, трудно автоматизируемых вычислений даже для простых задачек, а препод её зело любил, и ему не хотелось смотреть на кривые потуги. Мне метрика Шварцшильда выпала, для неё одни только связности надо выводить пару часов, а так я вспоминаю о нём с удовольствием, а не с ужасом.
JloJle4Ka 25.09.2021 09:59 # +1
j123123 25.09.2021 12:32 # +2
CEHT9I6PbCKuu_nemyx 25.09.2021 10:25 # +2
Мы в основном изучали СТО, а ОТО только поверхностно.
А на квантовой физике очень долго решали уравнения Шрёдингера, а до векторной модели атомов не дошли.
ObeseYoung 25.09.2021 12:04 # 0
А потом открыли и посмотрели ответ
guest6 25.09.2021 00:39 # +1
А не пошёл бы он нахуй? Зачем позволяли портить свой конспект?
CEHT9I6PbCKuu_nemyx 25.09.2021 07:37 # +2
*****
Вспомнил ещё одну историю, связанную с отчислением. На одной кафедре отчислили студента за неуспеваемость. Ему пришла повестка. Откосить он не смог. Сразу после учебки его отправили в Чечню, а там в первом же бою лишним телом заложили котлован, ведь солдатами не рождаются.
Зав. кафедрой ушёл в монастырь. Вузу пришлось среди учебного семестра в авральном порядке искать, на кого раскидать его учебные часы, а он успел их много нахватать. Он на полторы ставки работал.
К слову, та кафедра специализировалась на проектировании микропроцессоров.
bormand 25.09.2021 07:39 # +2
Не знаешь матан -- пойдёшь на метан.
bormand 25.09.2021 07:44 # +1
ObeseYoung 25.09.2021 09:02 # +1
Надо было как в современной пидорашке прописать в стенгазете, что уволился и воообще никогдане воевали с океанией
Desktop 24.09.2021 20:08 # +2
при том, что там были люди, претендующие на красный
6E3BY3HuK 25.09.2021 01:04 # +2
ObeseYoung 23.09.2021 20:54 # +1
bormand 23.09.2021 20:55 # +2
ISO 24.09.2021 20:58 # +2
Именно поэтому я за «моржовый оператор».
ObeseYoung 25.09.2021 09:09 # 0
Какой PHPScript )))