Уведомления

Группа в Telegram: @pythonsu

#1 Июль 6, 2020 21:57:00

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Подсчет количества нулей в массиве_что не так

py.user.next я согласен про модули и со всем выше описанным. как пример для начинающего и общего понятия у вас все очень хорошо расписано. допустим на многих учебных сайтах такое решение может не пройти из за времени выполнения на больших списках. (два прохода по списку) вот поэтому и привел алгоритм в один проход.

Офлайн

#2 Июль 7, 2020 01:51:25

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9715
Репутация: +  842  -
Профиль   Отправить e-mail  

Подсчет количества нулей в массиве_что не так

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

Ты можешь подсчитывать значения легально во время ввода этих значений, когда у тебя программа параллельная - когда у тебя два независимых процесса/потока запущены параллельно и пока один поток вводит, другой в это время считает. Но вот это вот “а я сейчас модульную архитектуру превращу в монолитную мешанину”, это очень подозрительно выглядит. Ты такие оптимизации можешь делать только там, где человек потом по этому результату сливания всего воедино точно лазить не будет. Для машины можно такую оптимизацию сделать, для человека - нет.

Вот я сегодня читал маленький js-скриптик для браузера, который просто что-то немножко делает. В нём не три строчки было, как в этой задаче, в нём где-то тысяча строк, а делает он при этом немножечко действий полезных. Переделывать его или лазить по нему в поисках каких-то размазанных действий по всему скрипту в размере тысяча строк, которые можно было бы инкапсулировать по функциям, я бы не стал, у меня нет на это времени физически. Я его даже прочитать не могу весь, времени даже на прочтение нет. Естественно, чтобы что-то изменить в таком скрипте, я буду искать функцию соответствующую, в которой это находится. Я не буду читать этот код весь и вникать в каждую строчку. У меня просто на это времени нет и он того не стоит. Я его лучше выкину и поищу другой вариант, в котором всё нормально, по классическим правилам сделано без всяких этих этих “заумностей”, которые на самом деле - “тупости” от какого-нибудь ЧСВшника очередного. Говнокод бывает на любом уровне. Человек может дофига знать и при этом писать говнокод. Чаще всего таких выталкивают из команды, говорят “да, да, ты знаешь дофига, ты капец какой мастер, но наша команда для тебя точно слабовата, тебе надо попробовать у других поработать, поучить их уму разуму, а то они пропадут вообще”. А сами думают “хорошо, что мы сбагрили этого придурка, который вечно с умным видом все правила нарушает, типа он такой знаток, но из-за которого весь проект валится и затягивается всё время”.



Отредактировано py.user.next (Июль 7, 2020 02:13:38)

Офлайн

#3 Июль 7, 2020 20:50:01

Python_newbie13
Зарегистрирован: 2020-06-27
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Подсчет количества нулей в массиве_что не так

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

Вот есть Java. Учиться с 0 на ней - это ад. Тебя в начале учат, что такое класс, метод, конструктор, модификаторы доступа. Затем наследование, абстрактные классы и интерфейсы ну а потом уже алгоритмизации как таковой. Так вот понять новичку всю эту карусель невозможно(Может я тупой). Но из-за этого писать говнокод на Java сложнее.

Отредактировано Python_newbie13 (Июль 8, 2020 01:33:39)

Офлайн

#4 Июль 8, 2020 10:41:47

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Подсчет количества нулей в массиве_что не так

Python_newbie13
Вот есть Java. Учиться с 0 на ней - это ад. Тебя в начале учат, что такое класс, метод, конструктор, модификаторы доступа. Затем наследование, абстрактные классы и интерфейсы ну а потом уже алгоритмизации как таковой. Так вот понять новичку всю эту карусель невозможно(Может я тупой). Но из-за этого писать говнокод на Java сложнее.

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



Офлайн

#5 Июль 8, 2020 16:57:48

Python_newbie13
Зарегистрирован: 2020-06-27
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Подсчет количества нулей в массиве_что не так

Что тогда является основой?

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

Действительно волнует это тема. Так как я сейчас поступил на матфак и хотелось бы знать с чего начать, что бы не страдать на первом курсе. Опыта программирования от силы месяц. За это время потрогал несколько языков (С# Java python). И из них python мне показался самым дружелюбным.

Моя цель минимум - это просто научиться писать сложные алгоритмы. Как пример я сейчас пытаюсь осилить алгоритм который сокращает выражение с переменными т.е пользователь вводит (x+5)*(x-y) и получает
x^2 +5x -x*y - 10. Получается так себе(уже неделю страдаю, но реализовано только умножение и сложение и частично степени,если они целочисленные), но на нем я в первые стал осознано использовать те же классы и они реально удобные. До этого мне этот функционал был вообще не нужен и я на него забивал, а в Java меня бы заставили его использовать иначе ни -ни.

Отредактировано Python_newbie13 (Июль 8, 2020 17:24:47)

Офлайн

#6 Июль 8, 2020 17:47:51

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Подсчет количества нулей в массиве_что не так

Python_newbie13
Просто очень многие вузы, как наши так и зарубежные ставят Питон во главе языков
Это какие, например, ВУЗы начинают обучать программистов с питона?

Python_newbie13
Моя цель минимум - это просто научиться писать сложные алгоритмы.

Во-первых, для составления алгоритмов вообще никакой язык программирования не нужен. Язык программирования нужен для написания программ, как ни странно. Он никак не помогает алгоритмировать. Вообще. Для изучения алгоритмов изучают алгоритмы
Во-вторых, ваше стремление постичь алгоритмирование, это не ваша цель. Цель, например, моя - зарабатывать деньги ремеслом программиста. У кото-то цель писать скрипты для себя. У кого-то использовать программирование для автоматизации рутины научных рассчетов и т.д. У вас конкретно какая цель?



Офлайн

#7 Июль 8, 2020 19:21:02

Python_newbie13
Зарегистрирован: 2020-06-27
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Подсчет количества нулей в массиве_что не так

ВУЗ в который я поступил ну и большинство в моей стране тоже( я из Беларуси). В России наверное МФТи может еще. За рубежом University of Waterloo(с их программы не понять питон для новичков или нет)
Цель, зарабатывать деньги, работая программистом(если эта работа включает машинное обучение или другую область, где надо широко использовать математику, то вообще хорошо). Но это глобальная цель. Это как сказать я занимаюсь математикой и хочу доказать гипотезу Римана. Довольно конкретно, но такая цель требует тысячи мелких шагов для ее реализации

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

Составлять алгоритмы - нет, не помогает. Проверять их и править - да.

Отредактировано Python_newbie13 (Июль 8, 2020 19:46:24)

Офлайн

#8 Июль 8, 2020 19:28:44

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Подсчет количества нулей в массиве_что не так

Python_newbie13
который сокращает выражение с переменными т.е пользователь вводит (x+5)*(x-y) и получает
x^2 +5x -x*y - 10.
Это называется не сокращение а Expand.
Всетаки начинать лучше с языка у которого меньше магии под капотом. Это наверное всетаки C.
пописать 2+2 дальше посмотреть отладчиком почитать про архитектуру ЭВМ.

Python_newbie13
Так как я сейчас поступил на матфак
Тут вам на первом курсе потребуется не ЯП а усердие, настойчиовость и умение пораскинуть мозгами.

Если матфак то наверное полезно будет взглянуть на HASKELL, Wolfram mathematica. Можно почитать про sympy



Офлайн

#9 Июль 8, 2020 19:50:16

Python_newbie13
Зарегистрирован: 2020-06-27
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Подсчет количества нулей в массиве_что не так

Я не хочу лезть в sympy, так пытаюсь сам реализовать часть его функционала. Если не ошибаюсь эта библиотека open source и работает со многими языками в том числе питон? Но за HASKELL, Wolfram mathematica спасибо обращу свое внимание.

Офлайн

#10 Июль 9, 2020 00:02:27

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Подсчет количества нулей в массиве_что не так

Ошибаетесь. sympy это исключительно для питона



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version