LoginSignup
0
0

More than 1 year has passed since last update.

プログラミング言語のバージョンを気にしよう

Posted at

プログラミング言語のバージョン

みなさんは自分が書いているプログラミング言語のバージョンを意識していますか?

書いているときは気にしなくてもいいですが、プロジェクトの最初に何のバージョンを使うかをきめなきゃいけないですよね。

その時に新しいフレームワークや開発環境が出ているにもかかわらず、古いフレームワークや、古い開発環境を使用する関係で、最新ではないバージョンの言語を使用することになってしまいます。

それがどれだけ悲しいことかという話です。

プログラミング言語は日々進化し、より書きやすく見やすくなっています。

3つの言語C# C++ Swiftを使ってバージョンによる書きやすさを見ていきます。

例1 C# null判定

valueがnullだったら新しいインスタンスを作成するという処理をしています。
以下はすべて同じ処理です。

// C# 6.0以前
if (newValue != null) {
    value = newValue;
}
// C# 7.0
if (!(newValue is null)) {
    value = newValue;
}
// C# 9.0
if (newValue is not null) {
    value = newValue;
}

is nullのいいところは、==ではstructなどのNull非許容型も無駄に判定できました。
しかしis nullstructをnull判定しようとするとちゃんとエラーが出るようになります。

is not nullのいいところはis nullでは否定のために!などを使用しないといけませんでしたが、これが必要なくなります。

例2 C++ 初期化を伴う範囲for文(foreach)

// C++ 11より前
for (int i = 0; i < vectors.size(); i++) {
    bar(vectors[i], i);
}
// C++ 11
std::size_t i = 0;
for (int x : vectors) {
    bar(x, i);
    ++i;
}
// C++ 20
for (std::size_t i = 0; int x : vectors) {
  bar(x, i);
  ++i;
}

c++11のいいところは、配列の要素をとってくる際に、Indexを気にしなくていいことです。
c++20のいいところは、Index(i)をfor文のスコープ内で宣言できるので、for文が終われば、(i)は破棄され、再度変数名(i)を使って、別のインスタンスを作成することが可能です。

例3 Swift 非同期処理

非同期で天気データを取得して、非同期で平均を計算して、非同期で平均を送信して非同期で送信結果をprintしています。

// Swift 5.5より前
func processWeather() {
    fetchWeatherHistory { records in
        calculateAverageTemperature(for: records) { average in
            upload(result: average) { response in
                print("Server response: \(response)")
            }
        }
    }
}
// Swift 5.5
func processWeather() async {
    let records = await fetchWeatherHistory()
    let average = await calculateAverageTemperature(for: records)
    let response = await upload(result: average)
    print("Server response: \(response)")
}

swift 5.5ではasync/awaitが導入され非同期処理時のコードのネスト地獄をなくすことができるようになりました。

(おまけ)最新のバージョンを追うには

こういった最新の機能を使うにはまず知らなければいけないのですが、これは結構大変です。
なので1つ好きな言語を作り、それを追いましょう。1つわかっていれば、この機能はあの言語にはないのかな?という考えで別言語でも最新の機能を使えることが多いです。

自分はSwiftが好きで、Swiftを好きな人は熱量が大きく、Twitterなどで最新の機能や、できることを紹介している人が多い印象なので、そういった人たちから勉強したりしています。

Swiftは今や、Mac Linux Windowsどれでも使用できるので、おすすめです!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0