Re[2]: Кому-нибудь требуется начинающий питонист в подмастер
От: Lazytech Ниоткуда https://rsdn.org/forum/job/7758126
Автор: Lazytech
Дата: 20.06 19:06
Дата: 05.05.19 12:21
Оценка:
Здравствуйте, a7d3, Вы писали:

A>Есть книжка:

A>«Programming Collective Intelligence. Building Smart Web 2.0 Applications» By Toby Segaran, Publisher: O'Reilly Media.

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

A>Примеры кода на питоне, а рассматриваются такие вещи, ради которых и на которых учатся программированию в современно мире. Например, как именно сделать систему рекомендаций пользователю — книг, фильмов, музыки — чтобы оно действительно работало. Это не такое скучное и оторванное от реальности, как использование пяти алгоритмов сортировки массивов встроенными средствами языка программирования. Когда про них жуют сотню страниц, но у читающего новичка не появляется осознания как это применить к системе-сервисе для повседневной жизни людей.


Вообще-то я с интересом решаю некоторые алгоритмические задачки, пробуя разные подходы с целью повысить скорость выполнения кода.
  Вот, например...
Вариант 1:
class Solution:
    def backspaceCompare(self, S: str, T: str) -> bool:

        def processBackspaces(s: str) -> str:
            s_list = list(s)
            bs_count = 0

            for i in range(len(s)-1, -1, -1):            
                if s[i] == '#':
                    s_list[i] = ''
                    bs_count += 1
                elif bs_count > 0:
                    s_list[i] = ''
                    bs_count -= 1

            return ''.join(s_list)


        return processBackspaces(S) == processBackspaces(T)


Вариант 2:
class Solution:
    def backspaceCompare(self, S: str, T: str) -> bool:
    
        def processBackspaces(s: str) -> list:
            s_list = []
            bs_count = 0

            for i in range(len(s)-1, -1, -1):            
                if s[i] == '#':
                    bs_count += 1
                elif bs_count > 0:
                    bs_count -= 1
                else:
                    s_list.append(s[i])

            return s_list


        return processBackspaces(S) == processBackspaces(T)


Вариант 3:
class Solution:
    def backspaceCompare(self, S: str, T: str) -> bool:   
        pos_S, pos_T = len(S) - 1, len(T) - 1
        count_S, count_T = 0, 0

        while True:
            while pos_S > -1:
                if S[pos_S] == '#':
                    count_S += 1
                elif count_S > 0:
                    count_S -= 1
                else:
                    break                            
                pos_S -= 1

            char_S = S[pos_S] if pos_S > -1 else ""

            while pos_T > -1:
                if T[pos_T] == '#':
                    count_T += 1
                elif count_T > 0:
                    count_T -= 1
                else:
                    break
                pos_T -= 1

            char_T = T[pos_T] if pos_T > -1 else ""

            if char_S != char_T:
                return False

            if pos_S <= 0 and pos_T <= 0:
                return True
            elif pos_S < 0 and pos_T == 0:
                return False
            elif pos_S == 0 and pos_T < 0:
                return False

            pos_S -= 1
            pos_T -= 1

        return True

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

A>Т.е. читать, набираться идей чего хотелось бы сделать — реализовывать через PyQT или онлайн ресурс собрав веб-сайтик. После этого будет о чём поговорить с людьми на интервью-собеседованиях.

A>Потенциально, в перспективе может даже появиться осознание, что незачем привязывать к конкретному языку. Что искать работу по этому принципу — это как умение работать сугубо лопатами строго одного конкретного вида-типа. Деньги платят за другое — то самое умение использовать разные подходы в некой предметной сфере, что описаны в подобных книжках.


Спасибо за полезные советы!
Отредактировано 05.05.2019 12:23 Lazytech . Предыдущая версия .
Re[3]: Кому-нибудь требуется начинающий питонист в подмастер
От: a7d3  
Дата: 05.05.19 13:24
Оценка: 9 (1)
Здравствуйте, Lazytech, Вы писали:

L>Здравствуйте, a7d3, Вы писали:


A>>Есть книжка:

A>>«Programming Collective Intelligence. Building Smart Web 2.0 Applications» By Toby Segaran, Publisher: O'Reilly Media.

L>Спасибо, попробую глянуть. Правда, опасаюсь, что для меня это будет слишком сложно из-за крайне слабого знания Web-технологий.


Технологии создания веб-сайтов или веб-ресурсов там и рядом не ночевали. Автор вещает про те вещи, которые являются начинкой этих современных веб-сервисов.
Не говорит как написать веб-сайт показывающий видео-по-запросу, типа Netflix, а рассказывает о том, каким образом такие сервисы конкурируют меж собой — за то, кто лучше решает проблему пользователя «чего сегодня посмотреть». Когда у человека есть лишь два часа перед отходом ко сну и хочется их тратить ли на то кино, которое заведомо понравится.
Re[6]: Кому-нибудь требуется начинающий питонист в подмастерья?
От: AlexGin Беларусь  
Дата: 05.05.19 15:58
Оценка:
Здравствуйте, L.K., Вы писали:

LK> ..."мадемуазель, как пройти в библиотеку" и т.п.


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

P.S. Только потом, не кричи что тебя "грабят"
Re[4]: Кому-нибудь требуется начинающий питонист в подмастер
От: AlexGin Беларусь  
Дата: 05.05.19 16:08
Оценка:
Здравствуйте, L.K., Вы писали:

LK>С прошлого года прошло уже почти полгода. Азы языка программирования (любого) учатся за неделю.

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

LK>А дальнейший опыт получается только в серьезной коммерческой разработке (на полную ставку и за бабки).

Это как где. Есть хорошие места, где это именно так, а есть и такие — где ученика только испортят.

Сам по себе факт коммерческой разработки, ещё ни о чём не говорит.
При этом факт финансирования — далеко на всегда гарантия "серьезной_разработки".
Re[4]: Кому-нибудь требуется начинающий питонист в подмастерья?
От: Masterspline  
Дата: 05.05.19 16:25
Оценка: 11 (2)
Z>>>можно свой проект пилить, не обязательно лезть в чужой. придумай себе задачу и делай ее.

M>>Участвовать в чужом проекте гораздо более продуктивно. Только обязательное условие, чтобы старшие товарищи были готовы к тому, что в проекте есть неопытный разработчик и временами наставляли на путь истинный. Времени на это тратится довольно мало, но большинство людей в принципе не готовы напрягаться и кому-то что-то объяснять (в чем косяк и как его исправить, а также, с какими темами нужно разобраться в первую очередь).


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


В мире C++, например, есть LibreOffice, где разработчики готовы к приему новичков. Есть и документация "с чего начать" и специальный набор простых задач, где идет обсуждение в трекере, как их решать, но их специально оставляют новичкам. Так что в мире C++ это реальность, а не утопия.

И суть чужого проекта не в палке-погонялке, а в том, что ты сам будешь использовать знакомые тебе технологии в знакомых тебе сферах. Чужой проект, как и коммерческая разработка заставит решать задачи интересные не тебе, а платежеспособному заказчику, изучать технологии интересные не тебе или преподу-балаболу с курсов (созданных, чтобы срубить бабла и продать перспективных учеников работодателю), а технологии, за которые платят, т.е. гораздо ближе к коммерческой реальности. Кроме того, тебя самого может потянуть на технологии, популярные в 90-х, потому что они выглядят круто, а у тебя не хватает кругозора это распознать (типа распределенных транзакций), которые в современном мире не используются (заменены eventual consistency). Сторонний человек тебя остановит, как и от использования других неудачных решений.

Соглашусь, что начать свой проект проще, чем найти чужой, а также, что свой проект тоже будет полезен.
Re: Кому-нибудь требуется начинающий питонист в подмастерья?
От: Mug0fT  
Дата: 06.05.19 05:48
Оценка: 9 (1) +1
Здравствуйте, Lazytech, Вы писали:

L>С прошлого года постепенно осваиваю Python 3. Хотелось бы поучаствовать в качестве волонтера (то есть бесплатно) в небольших проектах малой или средней сложности, не всё же тренировочные задачки решать. Похвастаться знанием других актуальных языков программирования, к сожалению, пока не могу, да и опыта практической работы в каких-либо предметных областях у меня пока нет.


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


L>Буду рад любым советам. Если задал неуместный вопрос, прошу извинить.


Не тот язык ты выбрал для изучения ИМХО.
Небольшая история:
Изучаю программирование достаточно давно, но свою первую работу я получил 5 лет назад в Германии. Причем занимался я в основном С/С++ программированием + немного питоном. Недавно мне стало так тошно работать над теми проектами, с которыми я работал, что я решил стать питонистом, тк надеялся работать вплотную с машинным обучением. Искал я работу где-то 3 месяца, успел отказаться от 2х офферов на С++ программиста (случаино получилось), и вроде ПОЧТИ получил работу на Питон программиста (но нет, что-то им не понравилось). После этого я еще раз окинул взглядом рынок вакансии и понял, что интереснои программистскои работы для Питонистов не так уж и много, и почти везде требуется знание предметнои области, но ОЧЕНь много интереснои работы (да и просто ОЧЕНь) много работы есть для Ява прграммистов.
В итоге я за 2 недели подтянул знания Явы, и буквально за 5-6 недель пулучил 3 оффера, один из которых оказался очень интересным.
Вывод: учи Ява, много работы даже для новичков.
Вакансий для Golang программистов почти нету (в Германии по краиней мере).
Re: Кому-нибудь требуется начинающий питонист в подмастерья?
От: Muxa  
Дата: 06.05.19 06:14
Оценка: 3 (1)
L>Буду рад любым советам.

Знакомая есть, в прошлом переводчиком работала, затем прошла курсы тестировщиков от одного крупного оутсорсера, и устроилась работать там же.
Поищи программы подготовки солдат в крупных конторах своего города.
Re[2]: Кому-нибудь требуется начинающий питонист в подмастерья?
От: Lazytech Ниоткуда https://rsdn.org/forum/job/7758126
Автор: Lazytech
Дата: 20.06 19:06
Дата: 06.05.19 06:20
Оценка:
Здравствуйте, Mug0fT, Вы писали:

MT>Вывод: учи Ява, много работы даже для новичков.

MT>Вакансий для Golang программистов почти нету (в Германии по краиней мере).

Спасибо за совет! Вообще-то, если не ошибаюсь, начинающему программисту гораздо проще освоить Python, чем Java. (Про Go ничего сказать не могу, пока даже не смотрел.) По идее, по сложности синтаксических конструкций Java мало уступает C++ и подобным ему языкам.
Re[2]: Кому-нибудь требуется начинающий питонист в подмастерья?
От: Lazytech Ниоткуда https://rsdn.org/forum/job/7758126
Автор: Lazytech
Дата: 20.06 19:06
Дата: 06.05.19 06:21
Оценка:
Здравствуйте, Muxa, Вы писали:

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

M>Поищи программы подготовки солдат в крупных конторах своего города.

Спасибо, конечно, но профессия тестировщика меня мало привлекает.
Re[3]: Кому-нибудь требуется начинающий питонист в подмастерья?
От: kaa.python Сингапур http://sysdev.me/
Дата: 06.05.19 07:37
Оценка: 3 (1) +3
Здравствуйте, Lazytech, Вы писали:

L>Спасибо за совет! Вообще-то, если не ошибаюсь, начинающему программисту гораздо проще освоить Python, чем Java. (Про Go ничего сказать не могу, пока даже не смотрел.) По идее, по сложности синтаксических конструкций Java мало уступает C++ и подобным ему языкам.


Java несравненно проще C++ и уж точно не сложнее чем Python. Разве что суровый Java-энтерпрайз и не менее суровый зоопарк систем сборки делает процесс вхождения в Java немного сложнее чем в Python.
Re[2]: Кому-нибудь требуется начинающий питонист в подмастерья?
От: kaa.python Сингапур http://sysdev.me/
Дата: 06.05.19 07:41
Оценка: 3 (1) +1
Здравствуйте, L.K., Вы писали:

LK>https://github.com/python


LK>А вообще, если и осваивать что-то с нуля, то что-то новое: какой-нибудь Rust или Golang.


Вот не надо вредных советов человеку давать. Язык для хипстеров с дико сложной системой управления владением и около-нулевым предложением вакансий и язык для разработки сервисов всех мастей и размеров с сильно ограниченным количеством вакансий ну очень плохие варианты для новичка.
Re[3]: Кому-нибудь требуется начинающий питонист в подмастерья?
От: kaa.python Сингапур http://sysdev.me/
Дата: 06.05.19 07:42
Оценка: 3 (1) +1
Здравствуйте, Lazytech, Вы писали:

L>Спасибо, конечно, но профессия тестировщика меня мало привлекает.


SDET – фактически программист на Python с акцентом на тесты. У них вечный голод до сколь-нибудь вменяемых кандидатов.
Re[7]: Кому-нибудь требуется начинающий питонист в подмастер
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 06.05.19 07:52
Оценка: 6 (1)
Здравствуйте, Lazytech, Вы писали:

L>Да, во втором полугодии прошлого года у меня практически не стало заказов. В очередной раз — спрос на мои услуги и до того не раз и не два падал ниже плинтуса, причем такой период мог продолжаться по несколько месяцев. По сути, мне снова стало нечего ловить (хотя до этого я тоже особо не жировал), вот я и призадумался о своем унылом настоящем и еще более невеселом будущем.


Я пару раз за последние полгода давал твои контакты, как переводчика. Люди, которым давал, сказали, что ты больше заказы на перевод не берёшь.
https://elibrary.ru/author_counter.aspx?id=875549
Re[3]: Кому-нибудь требуется начинающий питонист в подмастерья?
От: Masterspline  
Дата: 06.05.19 08:08
Оценка: 9 (1) +4
M>>Знакомая есть, в прошлом переводчиком работала, затем прошла курсы тестировщиков от одного крупного оутсорсера, и устроилась работать там же.
M>>Поищи программы подготовки солдат в крупных конторах своего города.

L>Спасибо, конечно, но профессия тестировщика меня мало привлекает.


Это реальный и довольно простой способ "зайти в IT", а точнее в программисты. В тестировщики берут много кого, начальных знаний будет достаточно из какого-нибудь онлайн курса. Дальше тебя научат на рабочем месте (потому что в крупные конторы берут народ пачками с расчетом на обучение). Дальше работаешь 1-1.5 года ручным тестировщиком (тестируешь интерфейсы тыкая на кнопки руками), а заодно разбираешься, что нужно знать тестировщику-автоматизатору (это которые пишут тесты на каком-то языке). Подтягиваешь нужные навыки (программирование на чем-то). Дальше переходишь в отдел автоматизации тестирования в той же конторе, где тебя уже знают, как толкового и усердного работника. После чего повышаешь уже навыки программирования на нужном языке и фреймворках. Переходишь в программисты (в той же конторе).

Преимущество этого метода в том, что порог входа довольно низкий, а дальше ты будешь точно знать что именно изучать (самообучение будет проходить по максимально прямому пути), ну и вопросы будет кому задать... Придется, правда, с тестированием освоиться, но этот способ быстрее и надежнее, чем пилить собственные проекты на github и убеждать в чем-то рекрутера, который ни при каком раскладе не захочет брать junior'а за 30.
Re[8]: Кому-нибудь требуется начинающий питонист в подмастер
От: Lazytech Ниоткуда https://rsdn.org/forum/job/7758126
Автор: Lazytech
Дата: 20.06 19:06
Дата: 06.05.19 09:17
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>Я пару раз за последние полгода давал твои контакты, как переводчика. Люди, которым давал, сказали, что ты больше заказы на перевод не берёшь.


Спасибо за поддержку, но переводами я действительно больше не занимаюсь. Решил кардинально что-то изменить, иначе перспективы очень мрачные...
Re[3]: Кому-нибудь требуется начинающий питонист в подмастерья?
От: L.K. Марс  
Дата: 06.05.19 10:03
Оценка: 2 (1)
KP>Вот не надо вредных советов человеку давать.

Ну, каждый кулик своё болото хвалит. )

Просто смысл новичку влезать на рынок, насыщенный конкурентами? Надо искать что-то перспективное. То, что "выстрелит" в ближайшие 5-10 лет.
http://files.rsdn.org/133599/belka.jpg
Re[3]: Кому-нибудь требуется начинающий питонист в подмастер
От: AlexGin Беларусь  
Дата: 06.05.19 11:52
Оценка: 9 (1)
Здравствуйте, Lazytech, Вы писали:

L>Спасибо за совет! Вообще-то, если не ошибаюсь, начинающему программисту гораздо проще освоить Python, чем Java. (Про Go ничего сказать не могу, пока даже не смотрел.) По идее, по сложности синтаксических конструкций Java мало уступает C++ и подобным ему языкам.


Java сильно уступает C++ по сложности синтаксиса.
Я бы скорее сравнивал C# и Java, нежели C++ и Java.

Также следует понимать и тот факт, что как и все современные языки, Java имеет автоматическую сборку мусора (GC — Garbage Collection).
На C++ за сборкой мусора должен следить человек (разработчик).

P.S. Не знаю, как в России, но у нас в Минске C# в последнее время очень популярен — в смысле наличия большого выбора разных вакансий.
Может быть Вам, уважаемый Lazytech, стоило бы посмотреть в сторону освоения C# и платформы .NET?

P.P.S. Дополнительный бонус при разработке на C# (по сравнению с Питоном) — не нужно заморачиваться на пробелы/отступы/табуляции —
что лично меня напрягает, когда приходиться писать на Питоне.
Отредактировано 06.05.2019 11:57 AlexGin . Предыдущая версия .
Re[4]: Кому-нибудь требуется начинающий питонист в подмастер
От: Lazytech Ниоткуда https://rsdn.org/forum/job/7758126
Автор: Lazytech
Дата: 20.06 19:06
Дата: 06.05.19 13:30
Оценка:
Здравствуйте, AlexGin, Вы писали:

AG>Java сильно уступает C++ по сложности синтаксиса.

AG>Я бы скорее сравнивал C# и Java, нежели C++ и Java.

Признаюсь, не знал. Будучи дилетантом, о синтаксисе C++ сужу по приобретенной в начале века книге Страуструпа, а о синтаксисе Java — по образцам кода, что попадаются на программистских сайтах.

AG>Также следует понимать и тот факт, что как и все современные языки, Java имеет автоматическую сборку мусора (GC — Garbage Collection).

AG>На C++ за сборкой мусора должен следить человек (разработчик).

Судя по обрывкам сведений, почерпнутым мною из статей, это чуть ли не главная фишка Java.

AG>P.S. Не знаю, как в России, но у нас в Минске C# в последнее время очень популярен — в смысле наличия большого выбора разных вакансий.

AG>Может быть Вам, уважаемый Lazytech, стоило бы посмотреть в сторону освоения C# и платформы .NET?

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

AG>P.P.S. Дополнительный бонус при разработке на C# (по сравнению с Питоном) — не нужно заморачиваться на пробелы/отступы/табуляции -

AG>что лично меня напрягает, когда приходиться писать на Питоне.

А мне, наоборот, нравится простой синтаксис Python. Из того, что не нравится, могу упомянуть разве что необходимость помнить о том, что в конструкциях вроде range начало диапазона включает указанное граничное значение, а конец диапазона — не включает. Сам то и дело об этом забываю.
Re: Кому-нибудь требуется начинающий питонист в подмастерья?
От: L_G Россия  
Дата: 06.05.19 16:16
Оценка: 9 (1)
Lazytech,

лет 15 назад python почти всегда упоминался в связке с django (web framework).
сейчас последний как-то подрастерял популярность, но в своей области вроде еще лидирует.
в москве hh.ru нашел 218 вакансий с упоминанием django, что очень мало, но хоть что-то есть.

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

как упражнение логично сделать свой сайтик, представляющий собой интерфейс к БД (варианты: система багтрекинга, мини-CRM или что-то более знакомое и полезное для себя — хотя бы личная записная книжка со списком дел/расписанием, списком контактов и т.д.)

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

как вариант — поучаствовать в разработке/багфиксинге этого самого django (проект открытый).
Re[5]: Кому-нибудь требуется начинающий питонист в подмастер
От: AlexGin Беларусь  
Дата: 06.05.19 19:44
Оценка: 9 (1) +1
Здравствуйте, Lazytech, Вы писали:

L>Признаюсь, не знал. Будучи дилетантом, о синтаксисе C++ сужу по приобретенной в начале века книге Страуструпа, а о синтаксисе Java — по образцам кода, что попадаются на программистских сайтах.


Начинать изучение C++ по книгам Страуструпа — очень сложное и медленное дело.
Есть много писателей, доходчиво и популярно раскрывающих основы языка C++ (Герберт Шилдт, Том Сван, Джесс Либерти, из отечественных Алексей Васильев).
По мере изучения C++ и погружения в тему, станете понимать Бьерна Страуструпа, Скотта Майерса, Герба Саттера и Андрея Александреску.

L>Судя по обрывкам сведений, почерпнутым мною из статей, это чуть ли не главная фишка Java.


Garbage Collection — это фишка не только Java.
Но, как всегда, имеется две стороны медали — приложения с автоматической GC имеют более длительный отклик на события.
Поэтому, для задач с малым временем отклика и высокой производительностью — по-прежнему актуален C++.

L>Спасибо за совет, только я пока недостаточно крут для таких серьезных технологий.

На самом деле, в C# и .NET нету ничего сложного. Это проще, нежели тот же C++ (никакой крутости не надо).
Как бонус — синтаксис похожий на все си-подобные языки.

L>Как мне кажется, Python на первых порах попроще будет.


Дело в том, что Python (ИМХО) как язык программирования, всё же узкоспециализирован.
Он хорош для тех, кто свободно владеет понятиями высшей математики.
Тогда, разработка концептуальной (математической) системы проводится на Python, а реализация — часто на C/C++.
Также на Python нередко реализуются серверные приложения, так как в нём кроссплатформенность — пряио из коробки.

L>А мне, наоборот, нравится простой синтаксис Python.


Синтаксис любого языка — это дело привычки. Со временем, привыкните к синтаксису C#.
Тем более, что в Visual Studio работать на C# — просто удовольствие.

Более того, к синтаксису привыкаешь быстрее, чем сам осознаешь этот факт
Отредактировано 06.05.2019 19:53 AlexGin . Предыдущая версия . Еще …
Отредактировано 06.05.2019 19:47 AlexGin . Предыдущая версия .
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.