Ответы пользователя по тегу Программирование
  • Как понять что программирование это твое?

    @red-barbarian
    Просто.
    Берешь (дикий) легаси код. И добавляешь туда функционал.
    Это твое если:
    Ты желаешь, что бы твои изменения этого кода были понятны другим людям.
    Тебе интересно, как можно улучшить имеющийся код.
    Тебе важен конечный результат для заказчика. (т.е. функционал должен быть разработан)
    Тебе важно, что твой код можно легко изменить, доработать и т.д.
    И от выше перечисленного ты получаешь удовольствие (от результатов)
    Это не твое:
    Если ты не можешь справиться с желанием набить лицо создателю кода с которым работаешь.
    Если ты не можешь справиться, с тем, что делишь код на свой и чужой. Баги свои и проекта.
    Если ты не можешь заинтересовать себя работать с скучным функционалом.

    В Совершенном Коде, есть страница, где говорится, что умность скорее вред для программиста, чем помощь. Программист борется со сложностью. Это его основное предназначение. Лучше быть тупым (или считать себя тупым), но с кодом который все легко понимают, чем умным который пишет коротко но не понятно.
    Ответ написан
    Комментировать
  • Начало решения задач (глазами новичка)?

    @red-barbarian
    берем питон и запускаем.
    делаем простые вещи:
    2+2
    3*8
    2.2 * 4
    2.3 / 2
    3 / 2
    и т.д. как калькулятор
    затем изучаем переменные и основные функции
    a = "word"
    print(a)
    Делаем по книге начиная с главы "питон как калькулятор". переходим к условиям, циклам, функциям.
    записываем скрипты в файл и запускаем. делаем что-то хоть как интересное. например для меня это факториал 1000! и т.п. по своему вкусу.
    смысл: с самого начала применять язык на практике. повторять примеры. видоизменять их.
    Ответ написан
  • Как правильно распределить методы класса в модули?

    @red-barbarian
    если ты разбил на три части функции, то почему делаешь два модуля? По логике нужно три модуля статик функции , класс 1.2 и класс 1.3.

    Но не зная, что там происходит в классах, трудно разбить нормально на модули. Скорее нужно действовать так:
    1. Представить какой интерфейс должен иметь изначальный 2 класс. Т.е. какие действия он должен выполнять во внешнем миру. Это будут так сказать паблик методы. остальные приват.
    2. Представить структуру 2 класса на уровень меньше. Т.е. все методы разбиваются по темам (более менее независимые). Это будут классы следующего уровня абстракции. Класс 2 будет ответственен за создание этих классов и установки зависимостей между ними.
    3. Далее повторяем пункты 1 и 2 для каждого подкласса. и т.д.

    Но повторяю трудно говорить вообщем, не зная что там в изначальном классе.
    Ответ написан
    5 комментариев
  • «Философия» всех языков программирования. Миф или реальность?

    @red-barbarian
    отчасти)))
    с языками как с обычными языками - следующий намного легче учиться.
    Подводные камни есть и они довольно серьезны. Дело не в синтаксисе. Есть такое понятие как парадигма. Это примерно способ мышления, способ понимания задачи который можно перенести естественно на конкретный язык программирования.
    так, например, у С это императивная парадигма. У C++ это объектно ориентированная. С этой точки зрения такие языки более различны чем разные синтаксисы С и какого-либо бейсика.
    Второй момент. Можно поверхностно узнать язык за пару часов. Но изучать его всю жизнь. Язык не только синтаксис. Это также подводные камни этого языка. Особенности компиляторов и эффективных решений. Идиомы. Особенно это относиться к C++.
    Ответ написан
    Комментировать
  • Является ли хорошей практикой делать интерфейсы даже тогда, когда класс не планируется заменять?

    @red-barbarian
    принцип инверсии - самый крутой принцип.
    разработка начинается с головы. Т.е. если у вас задача проектировать программу, то вы начинаете строить ее с самого главного - ее бизнес логики. Вы не будете знать какие сущности логика будет использовать. Это возникнет из процесса. Поэтому, все что бизнес-логике нужно вы определяете интерфейсами.
    В таком случае получится, разбиение логики и сущностей которые ее обслуживают.
    из-за того, что первая меняется быстро и часто (по разным причинам, даже не зависящих от девелопера) это разбиение очень полезно. Главное, можно отдать разработку обслуживания другим людям, мы не в курсе библиотек которые будут применяться (и можем менять из), мы легко можем тестировать свою логику.
    Примерно так.
    Интерфейсы хорошо применять на границах слоев программы. Это дает возможность тестирования и разбиения.
    Ответ написан
    Комментировать
  • Как избавиться от зависимости от видеокурсов, видеоуроков?

    @red-barbarian
    это нормально. Начинать там где легко. Где 20 процентов трудозатрат дают те самые 80 % эффективности. Цель как можно скорее начать программировать.
    Это время расширения знаний.
    Затем следует проходить остальные 80% получая на выходе 20. Это время углубления знаний. Работа с документацией, кодом и проч. Но они также очень важны.
    Мотивировать себя узнавать глубже.
    Ответ написан
    Комментировать
  • Почему в программировании столько математики?

    @red-barbarian
    IT сфера очень молода. Откровенно говоря выпускник института имеет уже сразу устаревшие знания. Что преподавать реально никто не знает. И не знают какие знания в этой сфере будут достаточно долговечны и нужны. Так некие догадки и не более.
    Это относится к математике тоже. Курсы перенасыщены. Есть вещи практически полезные, но есть которые напрямую не связаны с практикой. Проблема и в том, что отделить одно от другого, понять какие вещи в образовании бесполезны, а какие важны никто не может.
    Для примера, интуитивно понятно что алгоритмы и математика связаны между собой, но ведь не со всей математикой что преподают)
    Тоже самое с навыком разбивать сложные структуры на простые части.
    В целом, вопрос правомерен, образование прегружено, но как правильно никто не знает.
    Проблема современного мира)
    Ответ написан
    7 комментариев
  • Изучение математики через программирование, глупое решение?

    @red-barbarian
    Вообще, это нормальная ситуация.)))
    Я не понимал доказательства теорем из геометрии, не запоминал их, пока не стал разбивать их на части. докажем 1, докажем второе и т.д. Т.е. человеку что бы разобраться в некой системе нужно разбивать систему на части. Понимать как взаимодействуют эти части. Затем разбивать части на подчасти. и понимать их взаимодействие.
    Тоже самое происходит в программировании. функция должна содержать части на одну ступень более низкого уровня чем сама. Человек это хорошо воспринимает и держит в рабочей памяти. Если части на несколько ступеней ниже, то возникает путаница. И сложность.
    Для примера математическая индукция:
    1+2+3+4... +n = n*(n+1)/2
    общий алгоритм состоит из двух частей
    есть некие частные аналогичные случаи P.
    1. доказываем что если верно P(для числа m), то из него следует P(для числа m+1)
    ===n(n+1)/2+(n+1) = (n(n+1)+2(n+1))/2 = (n*n+3n+2)/2=(n+1)(n+2)/2
    2. доказываем что справедлив начальный случай P(1)
    ===1(1+1)/2=1
    На примере есть общая методология из двух частей. И есть на уровень ниже - доказательства частных формул===.
    Так примерно и во всем. Так и надо запоминать решения. Части и взаимодействия. + подчасти и взаимодействия. +...
    Для нетривиальных задач работа мозга немного по-другому. немного.
    Для дальнейшего понимания как запоминать и решать рекомендую курс
    https://www.coursera.org/learn/learning-how-to-learn
    он бесплатный, на английском, но с русскими субтитрами.
    Ведет его женщина математик, которая признается, что в школе у нее не было никаких способностей к математике. (так она думала)
    у нее есть также книга переведенная на русский язык. в курсе есть ссылка.
    удачи.
    Ответ написан
    Комментировать
  • Нормально ли что без stack overflow не могу работать?

    @red-barbarian
    принцип KISS. для stackoverflow.
    Встречая первый раз проблему читай на stack.
    принцип DRY. для stackoverflow
    Встречая второй раз аналогичную проблему читай документацию.
    Ответ написан
    Комментировать
  • Как снизить потери концентрации внимания?

    @red-barbarian
    1. отдыхать. Т.е. высыпаться, гулять на свежем воздухе, делать простую работу полностью и с увлечением. (на словах очень просто, на деле сложно)
    2. планировать свою учебу и чтение. Т.е. определить сколько время читаем или учимся. когда будет отдых. и т.д.
    3. вероятно главный принцип эффективной учебы/чтения это пересмотр. почитали некую часть, отвернулись, вспомнили основные моменты. обдумали. Представили что кому-то объясняем эту тему. Ум должен увлекаться, прилипать к теме.
    4. Планировать свои дела. Ум не должен быть нагружен работой по определению, что делать через минуту, как делать, где. и тд. постоянные такие вопросы просто его выматывают. И на нормальную умственную работу уже нет ментальных сил. Лучше уделить пол часа и запланировать на весь день. Даже если что-то пойдет не по плану.
    5. Знать цель. Т.е. сознавать мотивацию. Для чего читаем, что хотим и т.д. Концентрацию в Индии примерно описывали так " представь что ты несешь чашу полную воды. Через площадь на которой толпа людей участвует в празднике. Крики шум и т.п. За тобой идет человек с топором. Если ты прольешь хотя бы каплю, то человек сразу отрубит тебе голову." Если приблизить к нашей жизни, то Зачем читать? Что будет если вникнуть в тему? Что будет если не изучить тему? Что будет если постоянно отвлекаться на соцсети и проч. Через неделю, год, десять лет.
    еще советы: посмотреть Максима Дорофеева. Проблема современного человека не в том, что ему не хватает внимания, концентрации, энергии и проч. Проблема в том что он тратит внимание впустую. поверхностно. не вникая. Можно сказать он переконцентрирован, измотан концентрацией на совсем не нужных вещах.
    Из медитации, посоветую випассану.
    Ответ написан
    Комментировать
  • Простой пример одного и того же кода в ООП, функциональном и процедурном стиле?

    @red-barbarian
    не пытайтесь понимать различие между стилями по текстам. )))
    дело в том что различия в парадигмах. различия в том как некий аналитик моделирует предметную область.
    пример
    есть расчет заработной платы
    процедурный подход - считаем отработанные часы, вычисляем сумму по тарифу, вычисляем вычеты, вычисляем налоги, и проч и проч.процедуры состоят из под процедур.
    объектный подход - есть табель, есть тарифная ставка, есть налоги, выплаты, вычеты. Это уже что-то похожее с чем работает бухгалтер. следовательно такой подход в этом случае близок к данной предметной области.
    функциональный - можно представить так. есть поток данных. мы преобразуем в новый поток данных. затем еще преобразуем и т.д. есть часы. сделаем из них сумму , уберем из них вычеты, уберем налоги, снова вычеты ... на выходе получим сумму выплат.
    хотя в примере названия пересекаются, но не факт что сущности в одном подходе появятся и другом. Именно, поэтому не нужно сравнивать одну и туже предметную область в разных подходах.
    Ответ написан
    Комментировать
  • Java ,как составить план обучения и с чего начать код?

    @red-barbarian
    Скачать или смотреть на зомботюбе курсы Головача. Они покроют большую часть плана. Он хорошо объяснял. Мне понравилось.
    Практика. Не только большие проекты.
    Предлагаю такую аналогию.
    Большие проекты развивают кругозор.
    Маленькие задачи тренируют мастерство.
    Это как отработка удара. Нужно выполнить несколько раз одно и тоже, что бы делать это хорошо и на автомате.
    Решать одни и те же маленькие задачи очень полезно. Как поддержание себя в форме.
    Такие банальные советы.
    Ответ написан
    Комментировать
  • Как назвать переменные?

    @red-barbarian
    Длина имени соответственно области видимости.
    Если функция небольшая то и длина не нужно большая.
    Нужно учитывать контекст. Если понятно, что соцсеть контакт, то нет нужды это писать в имени.
    Если понятно, что лайки только на пост, то незачем писать пост.
    Т. Е. Возможно лучше
    getLikes
    Или getLikesCount.
    Но все решает контекст и конкретный случай.
    Можно так. Придумываешь много имен. Затем понимаешь, что в именах есть что-то общее. Например слово лайки. И танцуешь от этого слова. Т. Е. Количество лайков, дать количество лайков и тд
    Ответ написан
  • Знание которые не устареют через 10-20 лет?

    @red-barbarian
    Не самый опытный в разработке, но в ит не первый десяток, скажу поэтому.
    Технологии меняются и спрогнозировать что-то точно уверен невозможно.
    Из этого нужно развивать умения учиться, умение вникать в новые технологии, умение не выгорать. Заниматься желательно тем что нравится, и развивать способность понимания любой темы до тех пор пока она не начнет увлекать.
    Вообщем, вопрос не в технологиях , вопрос как развить нужные привычки и гибкость ума. Философский такой вопрос.
    Ответ написан
    Комментировать
  • Что написать на Python новичку, чтобы удостовериться в своих знаниях?

    @red-barbarian
    ну кроме стандартных чатов сервер-клиент, можно предложить что рекомендуют в java:
    -текстовый квест
    -простую sql базу. (реализация простых запросов sql, хранение данных в таблицах)
    кроме того
    изучить Qt, джанго
    попробовать машинное обучение, нейронные сети. сделать например свой определитель иностранного языка. скачать дамп википедии и создать бота который можэет говоить по теме.)
    кроме того
    рефакторинг своего текста. тупо сидеть и по пять минут выбирать наилучшее наименование для переменной, функции. структуры.
    кроме того
    посмотреть, посетить митапы питона. узнать что в тренде и к чему лежит душа.
    Ну после митапов идей будет много. и желание попробовать.
    кроме того
    github.
    ...
    можно много придумывать если язык становится не целью а средством.
    Ответ написан
    1 комментарий
  • Эмоциональное выгорание, перегрузка. Как победить, восстановиться?

    @red-barbarian
    1.) Высыпаться (не только выспаться, но высыпаться)
    2) Менять сферы деятельности. Конечно сериалы хорошо, но зачем?
    Для интенсивности можно выбрать:
    Изучение программирования (можно разбить на направления)
    Тренажерка
    добавить то что вам будет полезно и важно, например английский язык, время для друзей и близких, полезное хобби.
    Деятельности должна быть полезные и важные. Если вы поймете ее важность, то и отторжения не будет. Возможно усталость, но желание заниматься не пропадет. Просто нужно вовремя менять такие сферы.

    Не тратте время (вернее свое внимание) на сериалы и проч. вещи. (например котиков в соц сетях)
    Посмотрите Максима Дорофеева. Возможно Вам понравится.
    Ответ написан
    1 комментарий
  • Подключение библиотек в java?

    @red-barbarian
    У каждой библиотеки должн быть одинаковый интерфейс. Наследоваться от единого интерфейса.
    Загружать библиотеку по имени
    getClass().forName(name)
    Имя можно брать из настроек.
    Смотрите в сторону
    Рефлексии и проч.
    Ответ написан
  • Правильно ли я понимаю суть программирования?

    @red-barbarian
    основная задача в программировании (и не только) сделать из сложного простое.
    Ответ написан
    Комментировать
  • Дистанционное образование. Где качественнее?

    @red-barbarian
    Проблема обучение не в том что бы найти крутую лекцию. Их как раз предостаточно. Как открытых , так и платных. Проблема найти тех кто будет вычитывать твой код. Не просто автоматическая проверка, а вычитка реальным человеком с опытом. С указанием ошибок и направлением развития.
    Думаю , на это и нужно обращать внимание.
    Вопрос: сколько времени уделяется индивидуальной работе с конкретным студентом.
    Ответ написан
  • Стоит ли начинать учить программирование с книг?

    @red-barbarian
    Ну идея-то проста.
    Есть проблема. Мы стараемся ее решить. Затем читаем как это сделали другие. сравниваем решения и анализируем чем что в чем лучше. Это в идеале. Знания которые мы получаем будут намного глубже, чем просто прочитанные.
    Ответ написан
    Комментировать