新しい言語を学ぶ!


では、なぜ練習が重要なのかについて話しました.

  • 目的-私は何かに私の非返済時間を費やしている、私はそれをカウントしたい.

  • 計画-私が始める前に、私は、それがそれの目的を満たすように、私が私の実行を構成する方法について考えます.

  • 進歩-私は練習に反映するために時間がかかることを保証し、必要に応じて調整します.
  • 具体的にするには(プログラマがプログラマになっています).

    目的の定義
    私が自分のキャリアで遭遇する「何か」を行使する計画を作成する
  • 新しいプログラミング言語の学習
  • 異なるIDEで開発しデバッグする作業.
  • データの横断と処理.
  • 効果的な自動テスト.単位から終わりまで.
  • ビルドと展開パイプラインを作成する.
  • 異なるデータベースとORMで動作します.
  • パフォーマンスプロファイリングとテスト.
  • メモリーリークを見つける
  • .
  • ラピッドプロトタイピング
  • パラダイムシフト.
  • 私は、私または同僚が特定の地域で若干の援助を必要とする状況で、私自身を見つけます-私は、私のリストに行きます、そして、私がどちらかがその仕事を定義したか、必要に応じてセッションから欲しいものを定義し始めるかどうか見る.

    計画の定義
    その目的を考えれば、計画について考え始めます.
    私が働いているクライアントが異なるスタックにあるので、私は新しい言語を拾いたいと言いましょう.私には一般的に必要です.

    1 .基本を得る
    新しい言語で自分を表現できますか.
  • 私はどのように基本的なタイプを定義しますか?(整数、浮動小数点、ブール演算子、文字列、配列)
  • どうやって文字列を連結したり補間したりするのですか?
  • 私はコンソールからどうやって読み書きするのですか?
  • 基本的な制御フロー文は何ですか?(if/elseforeachswitchなど)
  • 関数とメソッドを定義するには?
  • 私は匿名関数を定義できますか?
  • どのように、それらの機能と方法の可視性をコントロールしますか?
  • 例外はどのように機能しますか?どうやって扱うの?
  • あなたが既にコードをどのようにするかを知っているならば、この段階は一般的により簡単ですこれは、検索を容易にすることができます.しかし、チェックリストを持っているのは、プログラマーのための偉大な教育援助として行われます.
    私がこのリストによってされる時までに、私は一般的に問題を通して私の方法を妨害することができます.

    2 .生産的で効果的になる
    今、私はいくつかのコードを書くことができます-私はそれが本当に働いている方法についてもっと考え始めています
  • 自動テストを定義、実行、解釈する方法は?
  • 私はどんなデータ構造を持っていますか?どのように/私はそれらを実装しない場合は?
  • 私は基本的なもの/基本的なライブラリは、私は一般的なもののために利用できるか-コレクション、HTTP、シリアライズなどのように
  • 他の人が作成したパッケージ/モジュールをどうやって使うのですか?
  • この段階で、私はおそらくもっと自信を持ち始めている.私はテストを私の仕事をバックアップしています、そして、私は試みられて、可能な限り他からコードをテストしました.

    最適化!
    私はコードを書いています-しかし、それは'最高のコードではない可能性があります.私は、すべての引き要求でコードベースでベテランを動揺させそうです.さあ考えてみよう.
    どうやってその言語のためにより慣用的なコードを書きますか?このメソッドはIsAuthenticatedisAuthenticatedis_authenticatedis_authenticated?またはHOW IZ I AUTHENTICATED YR USERと呼ばれていますか?
  • パフォーマンスについて考えています.正しいデータ構造を使用します(すべてが配列に含まれているわけではないので、Y ' all)、どのようにトラバースしているのか理解しています
  • メモリ使用量に対して良心的であること-どのように、私はヒープから何かを得ますか?配分を減らす

    ... 進捗状況を反映する
    私はいくつかのメモを開くと、上記の順序で私の方法を動作します.“基本”を得るのは1時間かそこらかかるかもしれません.そこから、KATASを通していくつかの簡単な問題を解決し始めます.
    私がより多くを学ぶようになって(例えば表現のより表現的で/きれいな方法)-私は絶えず私のメモを洗練します.
    私は、私のメモが進化するのを見る際に、本当の達成感を得ます.あなたが個人的に書いて、編集/改善した何かに戻ることは進歩を証明します.
    また、ランダムコーディング問題(例えばCodinGameまたはCodeWarsのようなもの)に取り組むことによって、成長を固く確認します.
    それは驚くほど迅速に何かを得ることができます!
    リンスと繰り返し!

    十分な話、コードしましょう!
    我々は計画を概説しました-新しい言語の基本を学びに行こう!
    今、私の' home '言語はCのようなものですが、JavaScript、Typescript、Python、Ruby、Javaを様々なレベルで行いました.私は、ちょうどFunsiesのためにランダムに選ぶつもりです-Elixir .
    🥰 ブラウザベースのIDEでハックするのを可能にするためにrepl.itであるものすごいことに大きい感謝!IDEのセットアップなどを気にすることなく言語を理解できるようにしようと思います.

    リストを実行する
    # How do I define basic types? (Integers, Floats, Booleans, Strings, Array)
    an_int = 1
    an_float = 1.0
    an_bool = true
    an_str = "Elixir"
    an_arr = [1, 2, 3]
    
    # How do I concatenate or interpolate strings?
    ans = "Forty-two"
    meaning = "The answer to the great question.. Of Life, the Universe and Everything.. Is.. #{ans}."
    
    # How do I read from/write to the console?
    user_name = IO.gets("What's your name? ") # Trailing space to look nicer in console
    IO.puts("Hello, #{user_name}!")
    # Note that you get the trailing newline with gets- so you'll likely want to trim
    x = String.trim(IO.gets("?"))
    x = IO.gets("?") |> String.trim() # Can also pipe - easier on the eyes?
    
    # What are the basic control flow statements? (`if/else`, `foreach`, `switch` etc.) 
    # https://elixir-lang.org/getting-started/case-cond-and-if.html
    # https://elixir-lang.org/getting-started/recursion.html
    if true do
        # ...
    else
        # ...
    end
    
    unless true do
        # ...
    end
    
    for(i = 0; i < sizeof(array); i++) {
      array[i] = array[i] * 2;
    }
    # Enum module also has map and reduce functions
    # https://elixir-lang.org/getting-started/enumerables-and-streams.html#enumerables
    Enum.map([1, 2, 3], fn x -> x * 2 end)
    # [2, 4, 6]
    IO.puts(Enum.reduce([1, 2, 3], 0, fn x, acc -> acc + x * 2 end))
    # 12
    
    beats = case play do
        "scissors" -> "paper"
        "paper" -> "rock"
        "rock" -> "lizard"
        "lizard" -> "spock"
        "spock" -> "scissors"
        "scissors" -> "lizard"
        "lizard" -> "paper"
        "paper" -> "spock"
        "spock" -> "rock"
        "rock" -> "scissors"
    end
    
    # How do I define functions and methods?
    # (Elixir is functional, and doesn't have concept of Objects, Classes and Methods)
    defmodule MyModule
        def sum(a, b)
            a + b
        end
    end
    
    # How do I control the visibility of those functions and methods?
    defp im_a_private_function
        # ...
    end
    
    # Can I define anonymous functions?
    sum = fn (a, b) -> a + b end
    sum = &(&1 + &2) # Shorthand using &
    # Note, these need to be called with .
    x = sum.(2, 3) # -> 5
    
    # How do exceptions work? How do I handle them?
    # https://elixir-lang.org/getting-started/try-catch-and-rescue.html
    
    raise ArgumentError, message: "Argument out of range"
    
    try do
        # ...Code that might raise
    rescue
        ArgumentException -> "Caught the ArgumentException"
    end
    
    # Define custom exceptions via a Module with defexception
    defmodule MyError
        defexception message: "Default message"
    end
    

    今すぐプレイ!

  • 目的を定義する-あなたは何を学びたいですか?同じようなシナリオを探索するために再利用できるように抽象化してください."Azure "上での"TeamCity ", "Cloud "上の"C CHERUNI ", "GROUP SYSTEM "の上の"言語"

  • 計画を定義する-どのように探索について行くのだろうか?リストを作成-またはマップ-あなたが集中を維持する.あなたが問題のこの“タイプ”についての詳細を学ぶように反復し、このマップを絞り込む.例えば、匿名関数はコードをきれいにするのにとても役に立ちますので、私は上のリストに特定の項目を追加しました.

  • 反射-どのようにあなたの学習を固めるのだろうか?次は何ですか.私は本当にここで物理的な出力のいくつかの種類を持っている-作業コードFTW、しかし-それはあなたの練習です!あなたの好きなように!
  • 今すぐ練習.
    ハッピーハッキング!🤩