• Как начать учить Python 3?

    @IvankoPo
    Расскажу как я изучал, но уже имея опыт от с++.
    Сначала основы : переменные, ввод-вывод, циклы, условия, функции и классы, строки и их методы, массив так называемый list, и его методы, кортежи, словари. Обработка исключений. Затем написал для себя пару алгоритмов сортировки. Затем захотелось решать реальные задачи, глянул на модуль tweepy для работы с твиттером, начал экспериментировать, вытягивать список своих фоловеров, их твиты, анализировать их как то с помощью условий искать ключевые слова, начал постить твиты при определенных условиях, затем познакомился с модулем который вытаскивал погоду о любом нужном мне городе, познакомился с его методами, как узнать влажность, температуру, облачность и т.п. Затем захотел вытащить в твиттере у своих фоловеров информацию о том где они живут, делал запрос о погоде по их городу и постил твит о погоде на сегодня в его городе, затем я захотел познакомится с серверные программированием. Там все довольно несложно, модуль socket, читал в интернете туториалы по нему, писал свои простенький эхо сервер, и клиент к нему, затем захотел сделать чат-сервер в итоге сделал, но максимум 2 клиента, потом познакомился с модулем Tkinter, с помощью него я к своему чату графический интерфейс прикрутил. Потом я задумался о том как свой чат сервер заставить обслуживать больше 2 клиентов и начал изучать многопоточность, это мой небольшой путь который ещё продолжается.
    Ответ написан
    Комментировать
  • Как постепенно перекочевать из Web в Machine Learning максимально безболезненно?

    AgentProvocateur
    @AgentProvocateur
    Что-то ты не с того конца собираешься дом строить...образно выражаясь. Ты по выбору молотка загоняешься, а нужно по проектированию, архитектуре, инженерным коммуникациям, технологиям строительства и т.д. А молоток покупается в последний момент на строительной оптовке.

    Машинное обучение/нейроинженерия - это область научной деятельности. Специалист по машинному обучению - ученый-математик (часто и вовсе с докторской степенью). Программирование/владение Python - лишь прикладной навык к научным изысканиям. В научные лаборатории путь явно лежит не через изучение применяемых там языков/программ.

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

    А со знанием других языков (php, js, go) python осваивается за 10 дней. Он потому и используется так интенсивно в науке, чтобы на программирование, как на прикладной навык, тратить минимум телодвижений и времени, а максимум на нейроинженерию.
    Ответ написан
    4 комментария
  • Как постепенно перекочевать из Web в Machine Learning максимально безболезненно?

    @asd111
    Из языков строго python. Он похож чем то на Golang и на javascript так что сложностей в использовании не возникнет. С++ и R сразу нет. Потому что на С++ пишут в основном только сами библиотеки для ML либо что то очень быстрое наподобие анализа видеопотока в автопилотах и даже тогда прототип пишут на python, а R практически не развивается по сравнению с python и имеет более узкую сферу применения чем python.
    В плане обучения можно сделать так:
    1. Прочесть хорошую книгу по теме, потому что нужно знать термины и основные алгоритмы. Ну или хотя бы посмотреть курсы Andrew Ng Machine Learning. Для применения чужих библиотек на простых задачах этого в принципе достаточно.
    2. Глянуть scipy, numpy и jupyter notebook. У scikit есть scikit learn, в котором реализованы некоторые популярные алгоритмы. Например SVM, decision trees и т.д. и есть доки под это дело для начинающих scikit-learn.org/stable
    3. Зарегистрироваться на kaggle.com и найти задачу про титаник. Вот она https://www.kaggle.com/c/titanic Делаете решение как умеете. Можно взять простой gradient boost. Yandex как раз недавно выложил либу под это дело называется cat boost https://tech.yandex.ru/catboost/ Банальное использование этой библиотеки может дать около 80% точности. Вот туториал https://github.com/catboost/catboost/blob/master/c...
    4. Прочитать про keras. Взять готовую модель для смешивания стилей изображений и сделать сайт наподобие ostagram.ru для смешивания изображений. https://github.com/fchollet/keras/blob/master/exam...

    5. Дальше всё зависит от вас, поскольку заработать в области ML непросто :) Когда прочтете хотя бы одну книгу по ML, регистрируйтесь здесь ods.ai - это сообщество русскоговорящих специалистов в данной области.
    Ответ написан
    Комментировать
  • Стоит ли бросать работу и начать карьеру Front-end разработчика?

    sim3x
    @sim3x
    Лучше спросите у мамы - она хоть стебаться не будет
    Ответ написан
    Комментировать
  • С какого языка изучать программирования (с нуля)?

    @tef
    Ваш вопрос прямо таки располагает к совету посмотреть в сторону ассемблера. Динамичный, достаточно гибкий и самое главное невероятно быстрый язык. На нём можно написать всё что угодно. Я имею ввиду, вообще всё.
    Ответ написан
    1 комментарий
  • Книги по электронике и программированию под микроконтроллеры?

    vagrantnotes
    @vagrantnotes
    Embedded-разработчик
    Сам работаю с микроконтроллерами и пару лет назад так же столкнулся с задачей поиска толковых обучающих материалов. Вот несколько советов (разумеется, субъективных) на этот счёт:

    1. Большая часть книг в стиле "Разработка встраиваемых приложений" или "Пишем на ассемблере под PIC" - пустая трата времени. Не то что бы они совсем бесполезны, но зачастую они сильно устарели, а информация в них избыточна и излишне детализирована. Я не нашёл ни единой книги, которую не захотелось бы забросить после пары десятков страниц.

    2. Я очень рекомендую цикл статей "AVR. Учебный курс" на сайте easyelectronics.ru. Там и железо, и ассемблер, и регистры - простым и доступным языком. Очень рекомендую, даже если работаешь не с AVR. Там изложены основные принципы и самих контроллеров и периферии - то, с чем каждый день сталкиваешься в реальных проектах.

    3. Без знания C в микроконтроллерах - никуда, поэтому рекомендую книгу Кернигана и Ритчи - "ANSI C". Это и учебник, и справочник под одной обложкой. Рассказывается всё просто, кратко и без лишних рассусоливаний.

    4. В качестве дальнейшего вектора развития я бы рекомендовал углубиться в железо, чтобы понимать, с чем работают твои контроллеры. Книги "Искусство схемотехники" и "Что нужно знать цифровому инженеру об аналоговой электронике" станут хорошим выбором.

    5. Не ограничивайся только книгами. Сейчас доступно множество открытых онлайн-курсов о встраиваемых системах на любой вкус. Это потрясающая форма обучения, которая совмещает в себе текстовый материал, видеолекции и практические лабораторные работы. Минус - всё это удовольствие на английском языке. Пожалуй, лучший пример, это Embedded Systems - Shape The World - встраиваемые системы - от самых азов, до ретро-игр на контроллере. В комплекте дают доступ к хорошему интерактивному учебнику C. Прекрасный курс с упором на практическую составляющую. Сессия совсем скоро завершится, но доступ к видеоматериалам ещё должен остаться.
    Ответ написан
    Комментировать
  • Как вести разработку вдвоем с Github?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Поймите, GIT - распределенная система. Вы и ваш коллега будете работать в абсолютно разных репозиториях, у каждого свой. Удаленный репозиторий будет служить точкой синхронизации. Так что если вы сделаете локальный брэкн, он будет только у вас. То есть что бы этот брэнч был доступен другому разработчику, вы должны его запушить в общий удаленный репозиторий. И тут веселье, так как ваш коллега работает с форком проекта, у вас два удаленных репозитория.

    В целом меньше боли будет если вы оба будете синхронизировать изменения между собой только через master. Читать про git-flow.
    Ответ написан
    Комментировать
  • Какие ЯП не требуют кучу прикладнухи для устройства на работу?

    Я постараюсь подключить философию, примеры и "как если бы я говорил в баре с вами".

    ЯП - это инструмент. Инструмент всегда взаимодействует с объектом и со средой. Соответственно, вам точно нужно что-то знать про объект и уметь пользоваться инструментом внутри среды, а это потащит дополнительные знания, назовем их "естественными" зависимостями. Насколько глубоко их нужно знать? Тут ответа не бывает: настолько, насколько нужно и хочется. Тут важен баланс и акцент. Если нет строгих параметров на уровне разума, нужно верить интуиции, потому что больше нечему. Для JS-программиста JSON/jQuery/AJAX - это естественные зависимости, их в любом случае не получится обойти. Даю зуб, что вам хватит вечера и немного гугла, чтобы стать чуть ли не LIKE A PRO в этом. Это все форматы хранения данных, либы, парадигмы. Это примерно как прочитать состав у шоколадки по сложности и входному порогу. Скорее всего, вас пугают сложные слова. Примерно как сказать "НАПРАВЛЕННЫЙ АЦИКЛИЧЕСКИЙ ГРАФ", и вы сразу знаете теорию графов, хотя с практической точки зрения суть настолько элементарна, что аж страшно, а вы будете долго прокрастинировать и искать что попроще.

    Это что касается близких и неизбежных естественных зависимостей. Но есть и более далекие, но тем не менее все равно естественные, их знание позволяет развиваться, иметь более полную картину в голове. Вот есть гитарист, он может быть просто технарем. Есть гитарист-музыкант, который чувствует дорийский лад в блюзе. А есть гитарист-музыкант-звукорежиссер, который наконец-то понял, как надо жирно сводить гитары и теперь в симбиозе со звукарем. Кто из них самый крутой, очевидно.

    Вы можете просто верстать (html/css) и игнорировать программирование в целом. Но естественная среда противится: вы уже (!) пишете на декларативном языке, неплохо было бы узнать об этом подробнее (о языках или даже о типизации), тем более, что крайне близко к вам находится интереснейший язык js, а там моментально вылезут проблемы связывания html и js, разные подходы к этому, целые парадигмы и фреймворки; и вот вам выпадает интересная задача по анимированию svg, вы курите мануал по нужной либе, читаете что-то про reflow/repaint, внезапно узнаете что-нибудь про селекторы. И через какое-то время, будучи все тем же верстальщиком, вы видите архитектурный косяк дизайна, который очень неудобно укладывается в используемые технологии, предлагаете его пофиксить и спасаете команду от факапа через месяц, когда какой-нибудь транзишн наложится на какой-нибудь position: fixed и еще и в Safari упадет анимация и только там, а тут и новая тудушка: "Переделать, нафиг, всю шапку, чтобы ок было". Что-то изменилось в мышлении и картина стала полнее. ВНЕЗАПНО вы уже и инженер, можно сказать, ЗП растет, все дела, рутины меньше стало.

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

    Подведу тут черту: естественные зависимости - это норма, а суть в инжиниринге. Можно двигаться по зависимостям дальше. У вас есть интервал, где есть минимальный порог, ниже которого нельзя, и максимальный, где вы "мастер на все руки", что тоже плохо. Между минимальным и максимальным порогом можно двигаться. Взять те же сети: разворачиваете приложение, видите линуху, настраиваете сеть. Можно немного заморочиться и прочитать про основы маршрутизации, буквально 2 вечера, можно еще про сетевой стек в линукс, еще 2 вечера, и уже будет во много раз проще. Кроме того, возрастет культура в целом и если вы программист на бэке, то вам будет проще взаимодействовать с админами. Про OSPF, очевидно, читать не надо, важен баланс. Баланс - это понимание того, на что у вас акцент (вы программист? какой? фронт/бэк? насколько важны сети/ос? проектируете бд? верстаете? интересен ли прикладной кодинг под какую-то ос и так далее...) и насколько интересны естественные далекие зависимости выбранной области.

    Так вот, теперь у нас есть естественные зависимости, инжиниринг и баланс между порогами. А не php/jquery/html/css.

    Важно также отметить, что все очень быстро развивается сейчас, а это еще один аргумент, что привязываться к инструменту не стоит. Кто-то может сказать, мол, взять тот же js, программирование на нем - это целая парадигма, иной подход, свои фичи. Это так, но дело тут не в js, а в целом в динамичных/интерпретируемых языках.

    Кстати, что касается SEO: с технической точки зрения это пара мануалов от гугла и не более того. Там сеошники наговорить могут много, с ними надо быть осторожнее :)

    А теперь, собственно, выводы:

    1) Вакансий крутых много, надо пробовать. Нужно только отличать близкие и необходимые естественные зависимости от мастера на все руки. Я считаю, что мастером на все руки нужно поработать хоть однажды, чтобы просто понять, почему это плохо. Но зависимости будут всегда, и это норма. Вы перечислили слишком радикально, конечно.
    2) Себя пилить под вакансию не нужно. Нужно просто идти туда, где интересно, всегда стараться быть инженером и не убить в себе искусство (то есть не бояться делать так, как кажется правильно, чтобы либо убедиться в правоте, либо ошибиться и стать круче).
    3) Не нужно думать в стиле "а что если завтра рубионреилс развалится, комьюнити разойдется, вакансий не будет, что я буду делать". Вы же инженер. У вас опыт в проектировании IT-систем, перейти на что-то смежное, если будет понятно, что технология умирает, не составит труда.
    4) По естественным зависимостям нужно двигаться по мере интереса, вы станете от этого только лучше.

    Это, конечно, если вам действительно все это интересно. Все это области, очень близкие к искусству, и тут надо любить все это делать.
    Ответ написан
    8 комментариев
  • Какие ЯП не требуют кучу прикладнухи для устройства на работу?

    barmaley_exe
    @barmaley_exe
    Никакие.

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

    Вообще, в области server / desktop / mobile очень сложно уйти далеко без, как минимум, следующего:
    • Объектно-ориентированное программирование и проектирование — ведь код не должен быть говном
    • Параллельное программирование — ведь делать нужно много и быстро, а у нас уже 10 лет как многоядерные машины есть
    • Сети — ведь нельзя жить без интернета
    • Базы данных — ведь данные надо где-то хранить, и хранить надёжно


    hardware не комментирую, но там ещё хардкорнее.

    Собственно, для программиста не столько важно знать какой-либо конкретный ЯП, а важно владеть технологиями разработки. ЯП, конечно, входит в это множество, но им оно совсем не ограничивается.
    Ответ написан
    3 комментария