Неделя 0

О

Меня всегда интересовало программирование. За эти годы я собрал пару домашних проектов с ошибками на Python и JavaScript, написал несколько скриптов на PineScript для торговли, но у меня никогда не было времени копнуть глубже. «Формальное» самообучение давно назрело. В этом духе я рыскал по Интернету, чтобы составить план уроков для себя, чтобы превратить меня из относительного новичка в достаточно опытного, чтобы создавать программы, которые помогают моей торговле. Я планирую использовать ChatGPT в качестве личного репетитора. Я надеюсь, что это даст мне достаточно точных ответов, чтобы направить меня на правильный путь!

Какой язык программирования?

Это было кроличьей норой само по себе, чтобы выбрать язык программирования для начала. Я сравнил C++, Python, Go, Java и Rust. Проблема с отсутствием знаний в области компьютерных наук заключается в том, что я не понимаю тонких различий между языками программирования. Возьмем, к примеру, эту статью: https://spiralscout.com/blog/when-to-use-go-vs-java-one-programmers-take-on-two-top-languages. Единственное, что действительно имеет для меня смысл на данный момент, — это инфографика, в которой говорится, что у Go более простая кривая обучения.

Python отлично подходит для анализа данных благодаря количеству доступных библиотек, его широкому использованию в финансах и простоте изучения. Без сомнения, мне придется вернуться к нему в какой-то момент, но производительность/скорость — это большая проблема, когда дело доходит до реальной торговли. Java занимал второе место по скорости и ценности в резюме. Rust на третьем месте как блестящий, новый, быстрый и безопасный язык, о котором все говорят. C++… Я не хочу бросать это путешествие так же быстро, как начал его.

Пока я не узнаю больше о CS, Go кажется лучшим выбором из-за его относительной простоты в освоении, скорости развертывания и высокой (достаточно) производительности.

Принятие решения о плане урока

Опять же, вернемся к r/learnprogramming, чтобы найти путь. Ряд упоминаний продолжал появляться, например:

  1. roadmap.sh/golang — сам по себе план урока, с удовольствием проработаю этот
  2. teachyourselfcs.com — полное руководство по CS, но ничего по конкретным языкам программирования, в руководстве говорится, что оно лучше всего подходит для программистов среднего/профессионального уровня.
  3. Информатика OSSU - еще одно полное руководство по CS, но подходящее для начинающих, включает в учебную программу несколько курсов Python.
  4. freecodecamp.org — здесь много отличных статей, но статьи для начинающих слишком широки, а продвинутые пока не для меня, у них есть два видео на YouTube Изучение программирования на Go — учебник по Golang для начинающих и Изучение программирования на Go от Сборка 11 проектов — полный курс, которые отлично подходят для практического обучения, а последний — для более продвинутых учащихся.
  5. CS50x — Гарвардский вводный курс по компьютерным наукам, это не так сексуально, как прыгать в накачке «hello world» прямо с самого начала.

Зачем составлять собственный план урока? Теперь у нас есть свой личный репетитор!

Здесь много общего с roadmap.sh/golang, поскольку дорожная карта часто ссылается на tour.golang.org (теперь go.dev/tour), play.golang.org (теперь go.dev/play) , и gobyexample.com Некоторые из них представляют собой конкретные ссылки на Go, которые я не видел в своей прокрутке на Reddit, такие как лекция Роба Пайка, книга о параллелизме Go и книга о тестировании Go. Этот робот недооценивал меня. Я хотел бы более интенсивного обучения, чем это, поэтому я попросил расширить его на первые 6 месяцев:

HackerRank и LeetCode выглядят интересно, но они станут более полезными после того, как я наберусь опыта. К сожалению, программы Университета Иллинойса не существует.

На вопрос по-другому, другая ветка беседы с ChatGPT дала мне еще несколько конкретных ресурсов для проверки:

Первый курс Udemy «Learn How to Code» имеет высокую оценку, но также является платным, поэтому в качестве альтернативы я буду использовать видео с freecodecamp.org, остальных больше не существует. Теперь мы получаем много совпадений в рекомендациях, но три под заголовком 5 уникальны, даже если они не являются настоящими названиями:

Создание веб-приложений с помощью Go Джереми Саенса — Тщательный список ресурсов Go, краткий обзор. Есть несколько ресурсов для начинающих, но я думаю, что ценность в этом списке — это те, которые подробно описывают нюансы язык

Создание микросервисов с помощью Go Ника Джексона. Когда мне нужно изучить микросервисы, это парень. Полная подробная серия YouTube, посвященная теме

«Структурирование приложений в Go Натана Леклера» — Блог программиста с несколькими постами о Go

Я вернусь к ним по мере необходимости.

Завершение плана

Планировать на 2 года вперед, когда я не знаю, что мне нужно и когда мне это нужно, вероятно, глупая затея; Я даже не знаю, что такое «микросервис», «горутина», «канал» или «параллелизм». Я окажу себе медвежью услугу, если пропущу рекомендации для начинающих, которые дал ChatGPT (codecademy и khan). Надеюсь, широко разрекламированный курс CS50 поможет мне освоить хотя бы часть словарного запаса, который должен помочь, прежде чем я слишком углублюсь в документы Go. Это план на будущее, по мере необходимости будут вноситься коррективы.

  1. Академия компьютерных наук Хана
  2. Codecademy Научись программировать
  3. Гарвард CS50
  4. Изучите программирование на Go — учебник по Golang для начинающих (freecodecamp.org YouTube)
  5. «Введение в алгоритмы» Кормена и др. al (книга 1312, начните читать и переходите к дорожной карте)
  6. roadmap.sh/голанг
  7. Изучите программирование на Go, создав 11 проектов — полный курс (freecodecamp.org YouTube)
  8. Выступление Роба Пайка на YouTube Go Concurrency Patterns
  9. Начни строить что-то свое! Я вернусь к другим ресурсам здесь, когда буду готов узнать больше подробностей. Особенно те, которые можно найти на гитхабе Джереми Саенса: https://github.com/biberlabs/go-resources.