• Как написать приложение на Python? и какие ресурсы использовать?

    DDDsa
    @DDDsa
    Чтобы делать сайты проще всего изучить какой-нибудь популярный фреймворк.
    Если выберете Django, то мне, когда я был в похожей ситуации, помог официальный туториал Django и вот этот замечательный туториал: Django Girls, последний к тому же учит азам Git, что должно вас неплохо направить. (кажется, оба есть на русском, поищите в менюшках, если необходимо)

    Если Flask, то тут есть один классический The Flask Mega Tutorial. Он вроде бы даже переводился на хабре.

    Есть и другие, но тут уж вы сами поищите.

    Делайте сначала клоны проектов из таких инструкций, потом пытайтесь сделать что-то свое. Сначала будет непонятно и будете действовать практически наощупь, но если практиковаться, разбираться с возникающими проблемами и не бояться трудностей - все получится, удачи!
    Ответ написан
    Комментировать
  • Где взять хорошие уроки по Django Pycharm Python?

    gordon_shamway
    @gordon_shamway
    а какая разница какая среда?
    вот книги
    Django by Example
    Nigel George - Mastering Django
    Web Development with Django Cookbook - Second Edition
    уроки
    tutorial.djangogirls.org/ru
    djbook.ru/rel1.9/intro/tutorial01.html
    https://github.com/dikiigr/django-online-shop
    Ответ написан
    Комментировать
  • Как мне получать обработать текст в python?

    @aresouji
    Вам может пригодиться метод split или регулярные выражения. Со всем этим можно ознакомиться в официальной документации к языку: https://www.python.org/

    В частности
    git = "https://github.com/maratmkhitaryan/python-socketio"
    gitTokens = git.split('/'); # gitTokens[-1] хранит в себе "python-socketio"
    print(gitTokens[-1])
    Ответ написан
    Комментировать
  • Как использовать синтаксис if в Pythone?

    @SergeyZelensky-Rostov
    import re
    name = input("Введите свое имя:")
    if re.match('[a-zA-Z]+',name) == None:
        print('Ошибка на вход принимаются только буквы')
    else:
       print("Хорошо,", name) 
    age = int(input("Введи свой возраст"))
    if age < 18:
        print("Малявка.... Давай как ты умеешь,обманывай всех,даю вторую попытку")
        age = int(input("Введи свой возраст еще раз :) "))
    if age < 18:
        print("Ой все,пока", name)
    elif age > 18:
        print("Хорошо тебе:", age, name)
    if name = "Govno":
        print("Такое имя у тебя... Хмм...")
    Ответ написан
    Комментировать
  • Как составить план обучения на ближайшиее время?

    aRegius
    @aRegius
    Python Enthusiast
    Добрый день, Дмитрий.

    1. В такой последовательности:
    Python
    a) Майкл Доусон - рус ... eng
    b) Марк Лутц - рус ... eng
    c) Дэвид Бизли + Лучано Рамальо
    Дальше - самостоятельный выбор, исходя из личных потребностей.
    Django
    a) Джейкоб-Каплан Мосс и Адриан Головатый - рус ... eng
    b) Django Girls Tutorial
    c) Гринфилды + Равиндран

    Параллельно читаем Django documentation

    2. HTML5 + CSS3 + JS + SQL.
    Знать на уровне, достаточном для реализации собственного проекта с нуля (скажем, свой сайт). Для этого, правда, достаточно HTML и CSS, в объеме указанных книг. Другой вопрос, что и JS, и SQL практически всегда требуются в багаже знаний при устройстве на работу (достаточно посмотреть вакансии).

    3. Нет, просто нету смысла. Актуальной качественной литературы по Python хватает. Есть некоторые исключения (некоторые из них мною упомянуты), но в целом, повторюсь, с современной литературой у Python все в полном порядке. Ищите на Amazon, сортируя по дате выхода.
    Ответ написан
    9 комментариев
  • Python для чайников, где взять материалы?

    insiki
    @insiki
    broken pipe
    Ответ написан
    Комментировать
  • Что изучать, на что тратить свободное время, чтобы в будущем стать востребованным программистом с нормальным заработком?

    thatskriptkid
    @thatskriptkid
    1) Поставь Gentoo GNU/Linux. Постарайся сделать ее "дружелюбной" для себя.
    2) Выучи подмножество английского, необходимого для понимания технических текстов.
    3) Начни с изучения основ языка программирования С. Синтаксис, основные функции.
    4) Реализуй простые алгоритмы. Напиши несколько видов сортировок. Осознай их плюсы и минусы. Это даст начало развитию алгоритмического мышления. Ознакомься с таким понятием как рекурсия.
    5) Поставь себе простенькую задачу. Не ищи их в гугле, постарайся сам придумать. Придумав, реализуй ее без всяких книжек и туториалов, используя только www.gnu.org/software/libc/manual/pdf/libc.pdf и мозг. (например я делал сниффер и клиент-серверное приложение, использующее в роли протокола - TLS 1.2)

    Такой путь я проходил сам. Раньше я сидел постоянно на винде и не видел даже в глаза GNU/Linux. И я сразу начал знакомство с Gentoo. Не бойся. Пол года помучаешься, зато знать будешь больше чем Убунтушник за 2-3 года пользования Ubuntu. Сможешь уже нормально мыслить. К тому же программировать на С под GNU/Linux одно удовольствие. На все мои пункты у тебя уйдет около 8 месяцев - 1 год, но это того стоит. И главное всегда помни, что любой язык программирования это не сама цель, а лишь средство, инструмент. Это чисто мое имхо)
    Ответ написан
    2 комментария
  • Что изучать, на что тратить свободное время, чтобы в будущем стать востребованным программистом с нормальным заработком?

    Подкину литературы, ссылок, дабы была подмога в выборе области.
    А то, в каком порядке изучать - так образование трудно облачить в алгоритм. Необходимо знать немного о всем и все о немногом. Главное чтобы пёрло и была поддержка в лице единомышленников.

    Из того, на что обязательно нужно взглянуть.

    Математика (база, во всех ее проявлениях):
    Кнут Искусство программирования
    Вирт Алгоритмы + структуры данных = программы
    Ахо,Лам,Сети,Ульман - Компиляторы. Принципы, технологии, инструменты.
    Кормен. Алгоритмы. Построение и анализ.
    Скиенна. Алгоритмы. Руководство по разработке.
    Таненбаум. Распределенные системы.
    Таненбаум. Современные операционные системы

    Сети:
    Олифер. Компьютерные сети. Принципы и технологии.
    Davies J. - Understanding IPv6

    Программирование паяльником:
    Титце, Шенк. Искусство сехмотехники
    Блог easyelectronics

    Hardware:
    David A. Patterson, John L. Hennessy - Computer Organization and Design
    David A. Patterson, John L. Hennessy - Computer architecture

    ИИ:
    Норвиг. Искусственный интеллект.

    Информационная безопасность:
    Шнайер. Прикладная криптография.
    Головоломки для хакеров (забавная книга, автора не помню к сожалению, натуральная практика по программированию)
    The Giant Black Book of Computer Viruses
    Михайлов Д. М., Жуков И. Ю. - Защита мобильных телефонов от атак - 2011
    Абашев - Ассемблер в задачах защиты информации
    Nmap Network Discovery
    Russel, Mullen, Long. Stealing the Network

    Masterminds.of.Programming.Conversations.with.the.Creators.of.Major.Programming.Languages
    Брукс - Мифический человеко-месяц
    Как выучить язык программирования за 10 лет

    Для фантазии:
    Нейман - Теория самовоспроизводящихся автоматов
    Kurzweil - Singularity is near

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

    И да - поставьте Linux.
    Ответ написан
    2 комментария
  • Что изучать, на что тратить свободное время, чтобы в будущем стать востребованным программистом с нормальным заработком?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Ответ на вопрос будет сильно зависеть от того, в каком направлении вы думаете развиваться.
    Будет ли это сетевое программирование? Тогда это си, в основном.
    Может быть, веб-программирование? Тогда тут могут быть php, javascript, python, ruby.
    Захотите разрабатывать программы на десктоп? Вам нужны c# или java.
    На мобильные платформы? тогда java и objective c (плюс swift).
    Или податься в разработку игр? Тогда либо c++, либо с# (для Юнити - наверное, самой популярной платформе).
    Хотите экзотики? Приглядитесь к функциональным языкам - Erlang и Haskell.
    Разработка железа и драйверов для железа? тогда си (без плюсов) и ассемблер.
    Определитесь, что вы хотите, потому что всё объять не получится. Выберите один (или два) направления и добейтесь хорошего уровня в нём. А потом вам будет уже легче двигаться дальше.

    Мой совет - попробуйте изучать C# или Java (они во многом похожи) для софта, или Javascript и php/python для веб-приложений и сайтов.

    Добавлю, что очень правильный совет дал @tsarevfs - помимо языка программирования, хороший программист должен знать несколько инструментов - и в первую очередь, это система контроля версий, например, git. Плюс юнит-тестирование (хотя это можно начать изучать позже, через годик-два). Плюс - нужно хорошо знать свою IDE, в которой работаете; не вздумайте работать в блокнотиках!

    Ещё помимо практики нужно знать теорию - читайте Макконнелла, Фаулера, Мартина, Бека.
    Подпишитесь на хабре на пару десятков хабов и регулярно читайте всё подряд. Через годик ваш уровень понимания статей сильно вырастет.

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

    UPD. Важное дополнение из обсуждения в комментариях (спасибо @Argentum88 @Deerenaros )
    Чтобы стать профессионалом и "востребованным программистом с нормальным заработком", нужно очень хорошо понимать внутреннее устройство тех систем (платформ, фреймворков), на которых идёт работа.
    Для этого нужно заглядывать вглубь. Изучив различные мейнстрим-инструменты, посмотреть на аналогичные менее популярные системы. Изучать исходный код используемых open-source библиотек. Написать свою подобную систему. Для web - написать свою CMS (хотя бы базовую). Для десктоп-программ - попробовать программировать без навороченных библиотек, которые делают рутинную работу за программиста. Для разработчика игр - сделать простую игру на базовом инструментарии платформы, где всё придётся делать своими руками.
    Всё это даст возможность проникнуться, почему всё делается именно так, даст понимание взаимосвязей разных частей программы.
    А потом, осознав это, выбрать один из уже готовых инструментов, и продолжать писать на нём, уже обладая более глубоким его пониманием.
    Ответ написан
    21 комментарий
  • Как понять принципы ООП?

    onqu
    @onqu
    weasy
    Чтобы понять принципы ООП, книги не требуются. Взгляните вокруг себя. Всмотритесь в любой объект в реальном мире, опишите его наиболее подробно (материал, размер, цвет, вес, плотность, составные части и т.д.), это будут его свойства. Опишите, что и каким образом этот объект умеет делать (включаться, складываться, кушать электроэнергию, взаимодействовать с другими объектами или окружающей средой и т.д.), это будут его методы. Подумайте, для чего используется этот объект, что ему нужно изменить или добавить, чтобы использовать в других условиях или целях, и на основе всех собранных знаний создать более удобный экземпляр, это будет наследование и полиморфизм. Теперь немедленно забудьте обо всем, используйте объект по назначению, это будет инкапсуляция. Дальше останутся только тонкости выбранного Вами языка, шаблоны, методологии и прочаяие ересь тренды.
    Ответ написан
    2 комментария
  • Какими технологиями должен обладать backend разработчик (уровень начальных знаний - новичок+)?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Так как вы не указали язык программирования... напишу то, что не особо от него зависит.

    архитектура клиент-серверных приложений

    HTTP (базовые понятия, Http verbs, формат записи заголовков и основные заголовки, такие как Content-type)

    Реляционные БД - SQL, нормализация данных, понимать разницу между inner join, left join, outer left join и т.д (в зависимости от выбранной СУБД).

    nosql БД (опционально) - денормализация данных, понятие о агрегации данных (в случае MongoDB/CouchDB и т.д.). На начальном этапе можно не замарачиваться штуками типа шардинг/репликация. Так же рекомендую потыкать какой reddis как простенькое key-value хранилище.

    По архитектуре приложений можно погуглить "GRASP паттерны". Правда по началу можно так же не особо замарачиваться и обратить внимание только на такие штуки как "сильная/слабая связанность системы".

    Ну... остальное зависит от языка программирования. Как определитесь - для всех основных языков тут уже составлялся план развития.
    Ответ написан
    1 комментарий
  • Какими технологиями должен обладать backend разработчик (уровень начальных знаний - новичок+)?

    zBit
    @zBit
    Full stack web developer
    Для всех обязателен сейчас git + git-flow, базовое администрирование сервака.
    А вы вообще на каких языках пишете, кроме 1С?
    шутка... а может и не шутка ;)
    Хороший бекенд программист не должен упоминать, что работает с 1С.
    Ответ написан
    Комментировать
  • Какими технологиями должен обладать backend разработчик (уровень начальных знаний - новичок+)?

    Путь не подскажу, но вот человек собеседования проводит на должность backend и вот что спрашивает:
    myway-blog.ru/sobesedovanie-na-dolzhnost-veb-progr...

    Хотя в вопросах на мой взгляд про серверную часть ещё вопросов не хватает.
    Ответ написан
    4 комментария
  • Чем отличается разработчик C++ под Linux от разработчика под Windows?

    AxisPod
    @AxisPod
    На деле стандартная библиотека (stl) мало чем отличается. C Posix функции опять же мало чем отличаются, разве что MS рекомендует использовать свои безопасные версии.

    Главное различие кроется не в C++, а в самих платформах, слегка измененная работа с сетью (для чего-то простого) и совсем другая (для сложного, если же использовать boost::asio к примеру, то ничем), другая файловая структура (на деле даже удобнее, что не надо экранировать слеши), разница во всех системных API, тут уже никуда не денешься.

    Переход на деле не такой сложный как кажется.
    Ответ написан
    Комментировать
  • Чем отличается разработчик C++ под Linux от разработчика под Windows?

    icelaba
    @icelaba
    Знаю и умею всё
    Просто начните программировать под Linux :-) Если вы привыкли к оболочкам типа MS Visual Studio то у вас первое время проблемы будут не с языком :-) а с поиском адекватной замены или смены привычек.
    В свое время я под Windows 99% кода писал на far+colorer поэтому переход на linux а затем на mac я почти и не заметил.
    И да жизнь на c++ (в версиях до c++0x) без boost я тоже не представляю.
    Ответ написан
    1 комментарий
  • Каков план личностного развития C++ программиста с нуля?

    Если человек мне на собеседовании скажет, что с C++ он перешел на C#/Java, и теперь все его головные боли иссякли, я никогда не найму его на должность выше обычного девелопера. Это в лучшем случае середняк, который никогда не будет писать изящных архитектурных решений, без особой тяги к знаниями и без капельки фанатизма.

    Есть такая шутка:
    есть два типа людей: те, кто уже выучил C++, и те, кто его никогда не выучат.

    Фишка языка ровно там, где начинаются проблемы у новичков — в многообразии. Обычно нет ответа на "что лучше использовать". В каждом конкретном случае хорошо использовать ряд определенных решений, нет некоторого табу.

    Крайне не советую начинать изучение языка со Страуструпа — уснете. По моему опыту, новичкам крайне полезно читать книгу Стивена Прата "Язык программирования C++. Лекции и упражнения". Во-первых, это именно книга по C++, а не древний учебник по C с классами. Во-вторых, там уделено внимание стандарту C++11, фишки которого отлично приходят на замену древнему C++ (о которых еще пишут в учебниках, да).

    STL — обязательна для изучения. Без нее C++ — обычный C с классами.

    Изучению также подлежат такие библиотеки, как boost (сначала, что в ней вообще есть, а потом — как написать определенные случаи), poco, ACE. Крайне рекомендую обратить внимание на Qt — это клад в мире C++.
    Если интересна 3d-графика, можно посмотреть свободный графический движок Ogre3d.

    Потом, хорошим C++-программистам хорошо бы знать структуры данных. Пожалуй, на этот вопрос лучше всего ответит Роберт Седжвик в своих книгах, либо соответствующих курсах на Coursera. Это важно, т.к. C++ обычно используется как язык для решения ресурсоемких задач, а не построения "табличной" бизнес-логики.

    И на финал — один из самых сложных современных языков для изучения.
    Ответ написан
    4 комментария
  • Каков план личностного развития C++ программиста с нуля?

    PixRaider
    @PixRaider
    Не так важен С++, как важен сначала С, чтобы получить понимание работы программ на низком уровне. Потом имеет смысл двигаться в сторону ООП головного мозга, изучая С++ и паттерны проектирования. ASM, WinAPI и прочих динозавров имеет смысл трогать только если есть много свободного времени и зубодробильная мотивация стать "архитектором Матрицы".
    А дальше все само: выплывет сначала на какой-нибудь удобный фрэймверк типа Qt (но возможно черт дернет и в .NET c C#), а от него и до Java рукой подать.
    К практической части от Lol4t0 всецело присоединяюсь.
    Ответ написан
    Комментировать
  • Каков план личностного развития C++ программиста с нуля?

    afiskon
    @afiskon
    Си (в том числе Posix, WinAPI), затем элементы C++ - классы, наследование, шаблоны, затем STL - алгоритмы, контейнеры, по желанию - на ассемблере также можно пописать немного, в частности пригодится при отладке к примеру. Затем, когда надоест, забываете как страшный сон и пишите на Java.
    Ответ написан
    Комментировать
  • Каков план личностного развития C++ программиста с нуля?

    @Lol4t0
    Мой ответ касается практической части, про книжки смотрите другие ответы.
    Для того, чтобы действительно разобраться в языке, нужно писать на нем. Причем писать такой код, который поток кто-то проверит, укажет на недостатки, подскажет, как сделать лучше.

    Для этого вам можно или найти какой-нибудь курс, или поучаствовать в opensource проекте с code review, причем довести свои патчи до merge в master. С этим, правда, бывают сложности, если вы совсем начинающий, потому что никому от вас толку не будет.
    Тут есть еще один вариант, про который почему-то никто никогда не упоминает. Отвечать на вопросы. Вот так вот как вы сейчас задаете вопросы, только отвечать. Конечно, вам не пойдет ванильный тостер без дизлайков, с малым количеством вопросов и специфическим русскоязычным сообществом. Вам нужно на StackOverflow. Просто смотреть подряд вопросы, пытаться решать, постить ответы, сравнивать с теми ответами, которые пишут другие люди и делать выводы. Если вы будете писать ерунду, вас там поправят, опять же. Я в свое время довольно много таким образом узнал где-то за полгода.
    Ответ написан
    1 комментарий
  • WEB-программирование. Что выбрать и с чего начать?

    Mendel
    @Mendel
    PHP-developer
    ИМХО в вашем случае стоит начинать с пхп.
    Поскольку вы имеете опыт работы с более-менее строгими языками, то либерализм пхп не должен повредить детскую неокрепшую психику. Правда стоит таки включить E_STRICT сразу когда начнете писать.

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

    Вы только не ведитесь на эту либерастию… сначала упиваешься как круто, что тебя ни в чем не ограничивают, потом свыкаешься с мыслью что многих привычных инструментов нет (и это вам еще повезло, вы не застали ООП в пхп4). Потом жизнь кажется прекрасной… а когда переваливаешь через мегабайт кода, начинаешь ныть «дайте, дайте, дайте мне жесткую типизацию!!! расрас», включаешь E_STRICT и сразу узнаешь о себе много нового…

    Итог: советую пхп, но сразу писать строго. Начните с одного из стандартов оформления кода…
    Ответ написан
    2 комментария