Таким образом, кажется, что мы живем в интересное время для обучения, поскольку благодаря таким платформам, как Medium, мы можем «обучаться публично» и использовать возможность других людей рассматривать наш прогресс как мотивацию, чтобы продолжать его и делать. хорошая работа. Как программист, на мне уже лежит ответственность быть способным учеником и учиться всю жизнь, и до сих пор я довольно хорошо справлялся с этим, но я использовал и отказывался от десятков возможностей обучения, связанных с программированием. У меня есть стремление к самосовершенствованию и диверсификации, но я проделал для этого ужасную работу.
Кажется, что многое из того, что необходимо для внесения подобных изменений, заключается в выработке привычек и превращении их в регулярные упражнения. Итак, теоретически я хочу сделать здесь то, что считаю себя ответственным за то, чтобы делать продуктивные вещи и выполнять некоторые из вещей, которые я хотел сделать. В качестве побочного эффекта, если это позволит мне улучшить мое письменное общение.
В настоящее время я немного увлекаюсь Go, так как мне было интересно изучить этот язык, и он, по крайней мере, сравним с некоторыми технологиями, в которых я чувствую себя наиболее комфортно (C#/Node/Angular).
Поскольку рекурсия — это весело, вот пример Фибоначчи в Go:
package main import ( "fmt" ) func main() { fmt.Println(fib(1)) fmt.Println(fib(5)) fmt.Println(fib(10)) fmt.Println(fib(15)) } func fib(n int64)int64 { if n <= 1 { return n } return fib(n-1) + fib(n-2) }
А вот факториал в Go:
package main import ( "fmt" ) func main() { fmt.Println(fac(1)) fmt.Println(fac(5)) fmt.Println(fac(10)) fmt.Println(fac(15)) } func fac(n int64)int64 { if n <= 0 { return 1 } return n * fac(n-1) }
Тестировать эти функции также довольно просто, вот вышеупомянутый факториал:
package main import "testing" func TestFac(t *testing.T) { tables := []struct { x int64 y int64 }{ {1, 1}, {2, 2}, {3, 6}, {4, 24}, {5, 120}, } for _, table := range tables { result := fac(table.x) if result != table.y { t.Errorf("Factorial of %d was incorrect, got: %d, want: %d.", table.x, result, table.y) } } }
Итак, есть немного того, что я узнал до сих пор, только начав. Остается посмотреть, смогу ли я придерживаться этого, но я стараюсь.