Задать вопрос

Как развивать логику в программировании?

Работаю в компании аналитиком, загорелся выучиться в программисты и перейти в отдел разработки, благо компания и материалы учебные предоставляет, и спросить есть у кого.
Выбор пал на Go, готур прошел, основы языка зазубрил, пару задач с литкода и кодрана решить могу, но когда наступает момент создания собственного пет проекта или не дай бог лайв кодинга, то встаю в ступор и не могу ничего. Ну как, продумать алгоритм на бумажке могу, но не могу перенести в код, начинается жёсткий затуп, смотрю чужой код и вроде как мне все понятно, все знакомо, но он выглядит как набор переменных, который просто почему-то работает.
Как развить логику в программировании, чтобы тоже можно было стать полноценным разрабом?
  • Вопрос задан
  • 1114 просмотров
Подписаться 2 Простой 4 комментария
Решения вопроса 1
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
Тренироваться и решать реальные задачи. От простого к сложному. Рисуете схему алгоритма, далее делаете декомпозицию вниз до самого простого и понятного вам элемента. Ну и далее реализуете поэтапно начиная с простых элементов и затем переходя к более сложным.
Пример схемы алгоритма
CAS, Central Authentication Service
5bd748db6d572869658821.png
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 7
@VanishingPoint
Программистами становятся те кому это изначально нравится, и не из-за денег.
Я с детства неделями сидел и кодил какие-то двухмерные игрушки на QBasic, никаких правильных практик не знал, сотни goto, сотни переменных, всё в одной гигантской простыне кода, голова разрывалась на части, но мне это было ИНТЕРЕСНО.
С трудом представляю, зачем вообще себя мучить если сам процесс не доставляет удовольствия, всех денег всё равно не заработаешь, лучше заниматься тем к чему душа лежит.
Идти надо от задачи - попытаться сделать что-нибудь полезное, хотя бы для себя, и реально интересное. Сначала простое... потом усложнять. Но тут легко переоценить свои силы, большинство этим страдает.
Например, у нас на курсовой на 1-м курсе я получил "3", потому что переоценил свои силы и полгода пилил 3D-движок, но так и не допилил. И еще один парень тоже получил "3", но он сделал на Visual Basic калькулятор для расчета кредита, который состоял из пары текстовых полей и 1 кнопки, это за 15 минут я бы написал. Было неприятно, несправедливо, но... я переоценил свои силы. Хотя это лучше чем изначально ставить примитивные цели.
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Программирование - это практическая наука. Тут нельзя читать много теории алгоритмов. Все равно
наступит момент практического написания кода и здесь - теория бесполезна. Нужен просто навык.
Навык верстки кода. Фантазия. Желание экспериментировать.

По поводу пет-проекта. Вообще не факт что термин алгоритм здесь применим. Ну какой алгоритм
может быть у веб-сайта кухонных рецептов? Я не знаю. Может и нет его. Скорее есть набор технических
приемов или best practices.

Начни с копирования других проектов на Go и с выборки того что тебе полезно. Копировать - это
нормально. Любой hello world или шаблон проекта это копирование.
Ответ написан
Комментировать
Steel_Balls
@Steel_Balls
Как делал я.
Просто брал и начинал писать. Всё, что угодно - игры, программы расчётов, обработку изображений, 3D-графику, OpenGL, работу с файлами, сетью, многопоточкой, опять игры, парсеры...
Берёшь любую задачу и делаешь её. Нет идей - беру любую понравившуюся программу и делаю её копию.
Сначала получается говнокод (ты этого не осознаёшь, но это так). А потом, когда начинаешь развивать или поддерживать свой код, то он начинает глючить, разваливаться.
И вот тут уже садись за книжки умные и читай про архитектуры, паттерны, методологии.
И тогда ты начнёшь понимать, что ты в старом коде делал не так и почему так делать нельзя.
Ну а дальше по кругу - снова код, снова книжки...

И да, это работает ТОЛЬКО в том случае, если тебе всё это действительно интересно. Никто заставлять тебя не будет.
Без тяги ко всему этому аду ничего не получится
Ответ написан
Комментировать
@Zerg89
Ну если смотреть, как ваш вопрос построен то вас пытаются приучить к простым и вроде как понятным решениям в логике бизнес процесса и не факт что это оптимально . Пока вы не погрузитесь глубже вы не поймёте цель и необходимую точность этих понятий
Ps в данной роли вы исполнитель( и это это не хорошо и неплохо) вы просто инструмент написания кода или ИИ которую пытается обучить на примерах, если вы начинаете замечать что в можно сделать отмимальнее чем предложено то это и есть ваш грейд выше и не факт что не через ступень если сможете доказать свою логику процесса
Pss
основы языка зазубрил

И в этом проблема нужно не зубрить, а понимать, это не школа где на один вопрос один возможный ответ. Это жизнь и код и они очень похожи в концепции нет правильнгоо ответа есть подходящий под определённый случай(ТЗ) и как аналтик вы это должны понимать...
Ответ написан
Комментировать
@DrRen7
Я бы посоветовал начинать что то делать с UML диаграмм. По сути там есть все что надо и то как пользователь взаимодействует с программой, внутренний функционал и то из чего это будет состоять. А вот с кодом нужно больше практики как вариант можно записаться на бесплатные уроки stepik на любой язык, а в решении пихать свой, посмотрел go там есть.
Ответ написан
ipatiev
@ipatiev
Потомок старинного рода Ипатьевых-Колотитьевых
Я бы рекомендовал в качестве первого языка РНР. Он куда проще, читается практически как натуральный английский язык.

<?php
$numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
foreach ($numbers as $number) {
    if ($number % 2 === 0) {
        echo "$number is even\n";
    } else {
        echo "$number is odd.\n";
    }
}

Ничего лишнего, переменные визуально отличимы от ключевых слов, читается легко, "перебираем массив по одному, назначая очередной элемент переменной $number. Проверяем, если остаток от деления на 2 равен нулю, то выводим что чётное, а иначе - что нечётное".
Пет проект, опять же, вообще ума не надо: скачал РНР на комп, открыл консоль, выполнил
php -S localhost:8888 -t "путь к папке с РНР файлами"
открыл в браузере localhost:8888/test.php и уже готов веб-сайт, ваяй - не хочу.

Сравним с гошечкой
package main
import "fmt"
func main() {
    numbers := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

    for _, number := range numbers {
        if number%2 == 0 {
            fmt.Printf("%d is even\n", number)
        } else {
            fmt.Printf("%d is odd\n", number)
        }
    }
}

Вроде всё то же самое, но на английском уже не прочтёшь, "для подчеркивание запятая number равно расстояние numbers". Даже вывод какой-то с подвыподвертом. И все эти сокращения, как будто за каждую букву вычитают из зарплаты. Действительно выглядит как набор переменных и непонятных аббревиатур.
Ответ написан
@aamonster
Раз вы аналитик – то и и потренируйтесь на решении каких-нибудь своих задач. Ну в смысле напишите коротенькую программку, которая берёт данные и выплёвывает результат, потом ещё. Ну или для хобби. В общем, чтобы не leetcode, а пусть ерунда, но для себя. Если и так не зайдёт – может, вообще не ваше.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Alta Personnel Москва
До 305 000 ₽
Wanted. Москва
от 60 000 до 120 000 ₽
Wanted. Санкт-Петербург
До 120 000 ₽
OSZAR »