Таким образом, кажется, что мы живем в интересное время для обучения, поскольку благодаря таким платформам, как 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)
  }
 }
}

Итак, есть немного того, что я узнал до сих пор, только начав. Остается посмотреть, смогу ли я придерживаться этого, но я стараюсь.