Задать вопрос
  • Геймдев после python?

    mukizu
    @mukizu
    Изучайте Структуры и Алгоритмы. Потом (скорее параллельно) уже думайте о том, что конкретно вы хотите делать и исходя из этого - что нужно учить. Для чего-то крутого - С++, С# (может быть).
    Ответ написан
    Комментировать
  • WEB-программирование. Что выбрать и с чего начать?

    pletinsky
    @pletinsky
    На мой взгляд базисные знания следующие:

    1) Клиентская верстка и стили (html, css). Можно пробежаться глазами хотя бы по теме. Почитать про правила верстки.
    2) Клиентская логика, работа с DOM (Javascript, Jquery). Важная тема — стоит уделить ей время.
    3) Теория распределенных приложений. — Веб приложения чаще всего являются распределенными. Поэтому стоит изучить архитектурные принципы распределенных приложений. API и т.д.
    4) Базы данных (SQL, etc.) — Конечно начать стоит с классического сиквела — но стоит посмотреть и шире — например на nosql решения.

    Далее стоит выбрать технологическую платформу. С вашим бэграундом вероятно стоит посмотреть в сторону Microsoft ASP.NET MVC. Это великолепное решение и погружение в обширный мир разработки в рамках решений MS. У них сейчас самые развитые языки программирования (C# 5.0), самые развитые инструментальные среды (MS Visual Studio), одна из самых совершенных виртуальных машин (.Net).
    Решение удобнее всего для серьезных и масштабных проектов, хотя и для небольших вполне подойдет.
    Следующий кандидат — Ruby on Rails. Это развитое решение с замечательным языком программирования и отличными каркасными решениями, заточенное именно под веб. Возможно лучше подойдет для небольших приложений — но и промышленные продукты без проблем потянет.
    Он также очень распространен.
    Ну и конечно PHP. Язык программирования данной технологической платформы отстает от требований к разработке больших решений — он скорее подходит для написания скриптов. Однако существует колоссальное количество каркасных решений для данной платформы, которые позволяют реализовывать даже приличного объема продукты. Кроме того данное решение наверное самое распространенное из всех.
    И оно потихоньку подтягивается до уровня платформ для разработки промышленных продуктов.
    Существует также множество других решений. Например огромный мир Java и решения на базе серверного Javascript.

    Скоп работ будет состоять из следующих частей:

    1) Клиентская часть (html, css, javascript). Тут вам понадобятся знания по верстке как раз и жаваскрипту. Также следует использовать различные базовые решения и фреймворки. Эта как раз та часть, где слишком глубокие знания (например использование чистого некроссбраузерного javascript) могут быть вредны и лучше все базировать на готовых платформах.
    Часто эта часть в web приложениях бывает больше чем хотелось бы.

    2) Серверная часть. Тут все определяется технологической платформой описанной в предыдущем абзаце. В веб приложениях как правило немного серверной логики — почти все можно заменить на внешние библиотеки. Но у разработчиков десктопных приложений всегда есть соблазн развивать именно эту часть потому что она им знакома — не поддавайтесь. Специфическая для проекта серверная логика нужна не очень часто. Если ее много — значить кто то увлекся велосипедами. Тоже касается разработок API и систем взаимодействия с внешними сервисами.

    3) Базы данных. Конечно обязательно! стоит использовать развитые ORM системы. То есть нужно их изучить под выбранную вами технологическую платформу. Ну и конечно базовые знания баз данных тут тоже очень понадобятся — сиквел, реляционная модель и все остальное.

    Дерзайте. Я за вас болею.
    Ответ написан
    Комментировать
  • Какой язык стоит изучать для продвинутой Web backend разработки?

    Все рассуждения о скорости языка, его пользы, слухах и прочее - это все хрень=)

    1) Вам либо нужно сделать какой-то проект, и вы выбираете быстро и сердито, либо долго, дорого и качественно (что не факт).

    2) Либо вы просто открываете сайт с вакансиями и учите то, что даст вам работу.

    Вот я допустим знаю Питон, в радиусе 2000 км от того места, где я раньше жил - не было работы на питоне. В итоге, я взял Java и пошел на ней работать.

    И знаете почему я взял Java? На ней была работа.
    И знаете почему я взял Java, а не PHP. На ней платили лучше.
    Ответ написан
    Комментировать
  • Перспективы веб-разработки?

    Sanovskiy
    @Sanovskiy
    Веб-разработчик с 2005 года
    Я бы рекомендовал не зацикливаться на конкретном ЯП.
    Советую подробно почитать по алгоритмам. Общие приципы ООП, процедурного подхода, паттерны, антипаттерны.
    Если будете разбираться в общей теории алгоритмов - поймете любой язык. Кроме разве что уж совсем экзотических.
    Ответ написан
    2 комментария
  • Какой путь изучения программирования выбрать?

    Eujene
    @Eujene
    Айти или не айти?
    На Reddit недавно залили следующую статью https://m.vk.com/@myironcomp-programmirovat-s-nuly... тут очень подробно расписали как учить яп.

    С++ не учу. Язык сложный и требует больших затрат для вхождения
    Ответ написан
    2 комментария
  • Как запомнить классы, функции и методы в программировании и сэкономить время?

    @abcd0x00
    Сначала проходишь всё один раз и подробно. При прохождении каждого раздела делаешь файл с заметками для него. После прохождения раздела читаешь этот файл с заметками снова.

    Ещё сделай себе html-страницу, где помещай ссылки на разделы, на стандарты, на страницы с материалом.
    Через эту страницу входи каждый раз, чтобы продолжить обучение. На этой же странице отмечай то, что ты уже прошёл.

    Потом делаешь одну html-страницу для всех своих html-страниц. (Прямо на диске переходишь между ними, никаких интернетов не надо.)

    Подробности

    Почему надо проходить полностью? Потому что если ты не пройдёшь все нюансы, ты не будешь знать их. А когда ты не знаешь нюансы, ты начинаешь писать всякую лишнюю хрень. Очень часто при открытии файла на чтение в питоне пишут 'r'. А почему? А потому что не читали полное описание open(), в котором написано, что по умолчанию там всегда 'r'. А когда точно не знают, начинают писать на всякий случай. То же самое касается кодировки в третьем питоне. Вот человек не знает, что там кодировку по умолчанию поменяли, и пишет там всегда "#encoding: utf-8", и удалить боится, потому что не знает, можно ли удалить. А чтобы знать, надо читать PEP, а он не читал.
    Ответ написан
    Комментировать
  • Как уйти с распутья технологий?

    Антологичная ситуация произошла со мной 9 лет назад, я закончил курсы по программированию где нам давали попробовать себя в разных языках программирования(С++, С#, JAVA, PHP) тем самым выбрать, после долго искал кто возьмет на стажировку по JAVA но не одна компания в моем городе не хотела брать стажера( просто не нужен), так я попал в 1С-разработчики.
    Моя цель была получить опыт в программировании, понять как это работает язык был не важен.
    Понять что? как? и почему?.
    К чему это все -
    1) Поставьте цель себе( это самое важное, так как без цели вы так и будете туда сюда слоняться), вы четко должны представлять конечную цель.
    2) Разбейте ее по промежуточным результатам.
    Примечание: Не забывайте поощрять себя - это очень важно.
    3) Не отступайте.
    Мне это всегда помогает.
    Ответ написан
    Комментировать
  • Как уйти с распутья технологий?

    @0x131315
    Стратегию уже подсказали: найти любую работу, чтобы кушать, и тем самым выиграть время на изучение чего-то, что поможет зарабатывать больше, и тем самым выиграть еще больше времени, и в конце концов изучить то, благодаря чему будешь работать не на зарплату, а на удовлетворение.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Разрывать такие круги можно лишь одним способом - рутиной: медленным, последовательным и целенаправленным натиском, движением в одну сторону. Грубо говоря перестаешь жить эмоциями и импульсами, вырабатываешь продуманную программу развития, и действуешь по ней, строго, как робот, до тех пор, пока не начнешь получать положительный отклик от работы, пока не придет желание двигаться дальше - это вернулись воля, мотивация и вера в себя.

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

    Сложность задачи не особо влияет на мотивацию, а вот факт решения/нерешения - влияет сильно. Не решил - значит не осилил, не осилил - значит не достоин, не достоин - значит иди ко дну и не рыпайся. Это как импотенция: импотент - значит не мужик, не мужик - значит никто, ничего не достоин и об тебя можно ноги вытирать. Подсознание портит всю малину, так что не следует давать ему шанса - лучше решить задачу попроще, чем не решить по сложнее.
    Ответ написан
    7 комментариев
  • Какую роль играет язык Python?

    @vilgeforce
    Раздолбай и программист
    Язык вполне себе общего назначения. Суть - простой удобный с кучей полезных модулей из коробки.
    Ответ написан
  • Сидячий образ жизни кодера на самом деле ухудшает здоровье?

    @umno
    Прежде всего вы должны помнить, что Ваш запас здоровья зависит от генетики, врожденного здоровья, окружающей среды (качество воздуха, воды), питания и того КАК вы провели всю предыдущую сегодняшнему дню жизнь. Безусловно, прожить всю жизнь дыша свежим морским воздухом полезнее, чем просидев за компьютером. Однако не будем вдаваться в крайности и уныние.
    Сам уже >12 лет за компьютером на разных ролях. Мои наблюдения и опыт - состояние здоровья сильно зависит от того:

    1. Сколько вы курите и пьете. Хотите быть здоровым - пейте минимум, не курите.
    2. Какую физическую нагрузку вы даете организму. Спорт это хорошо, но тяжелая атлетика в сочетании с анаболиками - не очень. Понимаете разницу? Идеальный для нас спорт - плавание. Также плюсую велосипед без фанатизма (могут быть проблемы с коленями при долгой горной езде), бег, общая физ. подготовка - спортзал, брусья. Турник я бы выделил отдельно. Так как у нас спина это зона риска - подтягивайтесь, растягивайте позвоночник на турнике, это полезно в любом возрасте!
    3. Каким воздухом вы дышите и какую воду пьете.
    4. Как питаетесь. Доширак, шашлыки, сухарики с пивом и т.д. не прибавляют здоровья. Об этом полно информации в интернете, так что думаю не стоит подробнее описывать.
    5. Количества позитивных эмоций. Не стоит погружаться в виртуал и игры. Больше гуляйте на воздухе, путешествуйте, ходите на концерты, делайте то, что вам нравится с тем кто вам нравится.
    6. Стремитесь к постоянному развитию и избегайте депрессий, повышайте свою самооценку и всегда будьте мотивированы. Признавайте свои ошибки, но не говорите себе, "я был неправ, поэтому получилось такое говно", скажите "надо же как интересно получилось, но в следующий раз я сделаю правильно", для примера )

    Можно написать больше, но это основное. Кто осилил - всем добра!
    Ответ написан
    1 комментарий
  • Сидячий образ жизни кодера на самом деле ухудшает здоровье?

    DmitryITWorksMakarov
    @DmitryITWorksMakarov
    5 лет за компьютером занимаюсь кодингом + до этого 7,5 лет занимался за компьютером схемотехникой.

    Лишний вес появился, когда закончил институт, начал работать, женился, то есть когда стал более менее питаться регулярно и калорийно, бросил курить.

    В какой-то момент, когда вес перевалил через психологическую границу - понял, что пора что-то делать. Стал бегать по утрам и ограничил себя в еде. Минус мучное, минус явные жиры, минус сладкое, минус соки-газировки. После 20.00 не ел. Ел по пять раз в день по немногу.
    Итого за 3 месяца минус 13 кг. В организме легкость. Но заболели колени. Ударная нагрузка на колени при беге из-за избыточного веса, неправильной техники бега и, как потом выяснилось, плоскостопия. Перестал бегать, перешел на спортивный шаг.
    После год физкультурой не занимался и не особо следил за едой. Опять набрал 5...7 кг.
    Пошел в фитнес-клуб, где и занимаюсь до сих пор. Сейчас вес приблизительно такой же, как был до всех похудений, но, по ощущениям, набрал где-то 50 на 50 мышцы/жир. Живот ощутимый есть, но осанка хорошая. Отдышка не мучает. Сердечно-сосудистая система работает. Становая - 100кг, Присед - 100 кг, жим лежа - 80кг. Это не на раз, это рабочие. Последняя тренировка с гирей 16кг по наручному кардиомонитору: 1ч20м, ср.ЧСС 150, махЧСС190, ккал1200.

    Образ жизни кодер формирует себе сам. Он не обязательно сидячий. У меня двое коллег программистов в выходной устраивают себе велопокатушки на 70...80 км.
    А прогрессирующий лишний вес появляется когда количество поступающий с пищей калорий превышает количество используемых. Плюс качество поступающих калорий, конечно, тоже важно. Углеводы надо получать из каш (низки гликемический индекс), а не из булок. Больше белка. Контролируемо - жиры.
    А если питаешься не очень калорийно или от природы с метаболизмом повезло, но с физкультурой не дружишь, то все равно будет грозить фигура беременного кузнечика. Когда мышцы спины не развиты - собственный вес будет скручивать в сутулую закорючку. Но скелетно-мышечная система - это не сумма отдельных мышц. Все мышцы/кости друг с другом связаны. Тут перекачаешь - тебя мышечный дисбаланс в другую сторону свернет. В идеале надо гармонично заниматься. И осознанно.

    В общем и целом, нужна физнагрузка, мы хоть в современном мире много чего достигли: много еды в магазине, медицина, автомобили. Эволюционно мы все еще не готовы к этому. Нам бы надо двигаться: бегать за оленями, валить мамонтов, а мы сидим в своих пещерах и толстеем. Надо этот дисбаланс между научно-техническим прогрессом и своей эволюцией нивелировать. Это жизненная необходимость. Но можно, конечно, и в 50 кони двинуть от сердечного приступа: тут вопрос выбора.
    Ответ написан
    5 комментариев
  • Что входит в понятие азы/основы/база/бекграунд/фундаментальные знания программиста?

    @dponyatov
    в порядке освоения:
    1. Python
    2. Кнут Д. Искусство программирования.
    3. Никлаус Вирт - Алгоритмы и структуры данных
    4. Git, GitHub (система контроля версий)
    5. C/C++
    6. GNU Toolchain (GCC, Makefile, autotools)
    7. Java и плагины для IDE Eclipse
    8. HTML/CSS/JavaScript
    9. СУБД и SQL: MySQL, Postges, Oracle
    10. Платформа LAMP: Linux, Apache, MySQL, P(ython)
    11. SICP: Структура и интерпретация компьютерных программ
    12. Книга Дракона: Ахо Сети Ульман: Компиляторы. Принципы, технологии и инструментарий


    Точнее не совсем в порядке освоения: надо послойно,
    сначала очень обзорно и по верхам, чтобы общее представлениеиметь, на уровне HelloWorld
    потом следующая итерация чуть поглубже
    Ответ написан
    1 комментарий
  • У меня есть куча свободного времени и желание работать в фрилансе.Но с чего же начать?

    @iliyaisd
    Если есть запас по времени, я б на вашем месте не лез в веб (в смысле, классическая связка из РНР, HTMl, JS). На фрилансе это помойка, где придётся конкурировать с 9000 школьников и индусов, пока наберёте достаточно опыта, чтобы выставлять заказчикам нормальный ценник и претензии, его подтверждающие.
    Из доходного на фрилансе - objective C, ruby, java, python. Встречается понемногу и другое.
    Ответ написан
    2 комментария