• Какой путь изучения программирования выбрать?

    EvGenvinU
    @EvGenvinU
    Программист
    Здравствуйте!

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

    Есть два вида программистов:
    1. Программист-теоретик. Человек искренне верит, что существует книга, которую стоит лишь прочесть и он станет полноценным разработчиком, которого с удовольствием возьмут на работу. Потом он понимает, что еще надо пройти курсы, а там еще пару книг и еще пару курсов, а еще найти наставника.
    2. Программист-практик. Человек, который видит проблему, задает себе вопрос, как решить эту проблему и формирует ответ.

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

    Подсказка:
    --Практик.

    ?? Спросите себя, какие проблемы вы хотите решать.
    == Хочу писать сайты.

    ?? Как решать конкретную проблему.
    == Все есть информация. Сайт это информация, отображает эту информацию браузер. Значит надо выяснить, как браузер это делает и какую информация он умеет отображать, как форматировать эту информацию.

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

    ?? Актуализируйте знания по инструментам и решениям проблем.
    == Подпишитесь на известных программистов. Изучите современные инструменты облегчающие жизнь разработчика. Прежде чем пробовать новые технологии хорошенько подумайте и проведите исследование. На основе результатов делайте выводы о эффективности внедрения. Если прирост КПД большой, то смело применяйте. Используйте качественные редакторы кода. И как всегда задавайте себе вопросы. Формируйте критерии и ищите по ним.

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

    Главное, не стесняйтесь спрашивать у Гугла. Умение задавать корректные вопросы оттачивается только на практике :-)

    Помните, что умственный труд программиста сравним с физическим трудом шахтера. Ответься себе на вопрос: "А оно мне надо?".
    Ответ написан
    Комментировать
  • Как правильно изучать Python с перспективой на back-end?

    BBmike
    @BBmike
    Ответ написан
    Комментировать
  • Как пишутся библиотеки для C++ и других ЯП?

    @Mercury13
    Программист на «си с крестами» и не только
    В 99,9% случаев — на языках высокого уровня. Как слой более низкого уровня используются три вещи.
    1. Стандартная библиотека языка.
    2. Внутреннее API ОС (WinAPI/POSIX/DOS).
    3. Чужие низкоуровневые библиотеки.

    Есть такое понятие «полнота по Тьюрингу» — грубо говоря, это значит, что язык способен решать те же задачи, что и машина Тьюринга (простое гипотетическое программируемое устройство). Все языки программирования полны по Тьюрингу, то есть ими можно закодировать любой алгоритм, зачем ассемблер?
    Ассемблер используется ограниченно во внутренних циклах, где важна скорость.

    Здесь под «низким уровнем» понимается «мало автоматизации», «очень тонкая прослойка между API операционной системы и нашим новым интерфейсом», «минимум управления памятью» — то есть функция, например, принимает не std::string, а указатель на нуль-терминированную строку const char*. И для написания библиотек любят языки, способные работать на низком уровне — в первую очередь Си, Си++ и Паскаль. Если нет ограничения по скорости, ассемблер не обязателен.
    Ответ написан
    1 комментарий
  • Как сделать перенос блоков?

    Если Вы используете код ответа к этому вопросу, то для родителя нужно поменять свойство justify-content: space-between; на justify-content: flex-start;

    Результат:
    https://codepen.io/hisbvdis/pen/aeRaGN
    Ответ написан
    4 комментария
  • Каков алгоритм работы программиста?

    longclaps
    @longclaps
    Вопрос не то чтобы глупый, но дурацкий. Ты всё крутишься вокруг библиотек/фреймворков, видимо считая их богом данными. Но нет, их написали программисты. Сделали ли они это с помощью других библиотек/фреймворков? Возможно да, но, пройдя по цепочке предшественников, ты упрёшься в библиотеку/фреймворк, которую сделали на пустом месте. Как - спросишь ты - и я тебе отвечу: с помощью алгоритма работы программиста.
    Ответ написан
    6 комментариев
  • Каков алгоритм работы программиста?

    @orbit070
    Как я понял, программист изначально учит синтаксис языка и основы (структуры данных, управление потоком, операторы и тд), затем открывает сайт вакансий и смотрит какие библиотеки/фреймворки указаны в вакансии, учит их и устраивается, и затем решает данные ему задачи с помощью этих библиотек/фреймворков и собственно все?

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

    leventov
    @leventov
    Основной синтаксис языка можно освоить за полдня. Книга дает кругозор в языке — понимание, где искать ту или иную функциональность. Поэтому заучивать содержание и делать упражнения, на мой взгляд, не обязательно.

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

    Более объемные — ИИ для соревнований типа Robocode или aichallenge.org/. Если интересуешься какой-то определенной областью, например графикой или лингвистикой, имеет смысл сделать проект в этой области.

    Главное — чтобы задача интересовала сама по себе. Тогда будет дополнительная мотивация изучать язык. Дальше просто: в процессе решения задачи сталкиваешься с трудностями, лезешь в книгу по памяти, или документацию по стандартной библиотеке, или на SO, или в Гугл, в итоге преодолеваешь трудности и быстро прокачиваешь скилл.
    Ответ написан
    Комментировать
  • Как правильно учить библиотеки в Python?

    Rou1997
    @Rou1997
    40? В Python библиотек порядка бесконечности.
    Из ваших двух вариантов - однозначно второй, ведь второй у вас включает первый но в отличие от первого он еще и ориентирован на задачи, что позволит понять, какую из бесконечного количества библиотек стоит изучать в данный момент
    Ответ написан
    Комментировать
  • Чем отличается библиотека от фреймворка?

    @Mintormo
    Фреймворк - это набор библиотек и инструментов. Библиотека - это просто программный модуль на определенном языке.

    Простите за глупый вопрос.

    Не стоит извиняться. Нужно больше глупых вопросов. А самые сложные в мире вопросы - простые.
    Ответ написан
  • Правильно ли я понимаю определение библиотек и фреймворков?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    1. Как я понял, библиотека - это просто набор функций
    да

    2. Фреймворк - это библиотека библиотек,

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

    3. Что такое стандартная библиотека языка?
    Да, библиотеки, которые идут в поставке. Например в операционной системе полно стандартных библиотек, и если вы пишете свою десктоп программу с этими библиотеками, вы знаете что в дистрибутив вашей программы их включать не нужно - они уже есть у пользователя, в его Windows/Linux.

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

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

    5. Правильно ли я понимаю, что сначала нужно ознакомиться (хотя бы просто прочитать и понять функции, которые есть в стандартной библиотеке) ... или можно сразу учить фреймворк?

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

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

    API это Advanced Programmer Interface.
    Если человек запускает браузер и заходит на сайт - он получает веб-страничку. Но он получает не HTML, а рендер, который генерит браузер.
    Если вы заходите на веб API, вы получаете какой-то набор данных, например в формате json/xml, да хоть просто текст, который обычно читает не человек, а другая программа.

    То есть API - это способ обмена информацией между различными сервисами/программами. А внешний, внутренний - это уже частности реализации.
    Ответ написан
    2 комментария
  • Правильно ли я понимаю определение библиотек и фреймворков?

    DevMan
    @DevMan
    в общем – все верно.
    кроме
    6. API это внешний интерфейс, то есть по сути тоже библиотека только для работы с каким то сервисом или технологией?

    библиотека только для работы с каким то сервисом или технологией называется врапером/оберткой/etc. a api - это набор средств доступа к приложению со стороны, предоставленный разработчиком этого приложения.
    Ответ написан
    Комментировать
  • Правильно ли я понимаю определение библиотек и фреймворков?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Всё примерно так и есть.
    Чётких определений не существует.
    Важно это просто ощущать и понимать
    Ответ написан
    Комментировать