Rust チュートリアル [1日目]

2018年はRustとJavaScriptの年にするとしたので
ちょっと先行してRustを始めることにした。

とりあえず、公式ドキュメント読みつつ、チュートリアルも充実しているので、
それを使って学習する。
ひととおりチュートリアルやって、なにか作るところまではやる。

公式
https://www.rust-lang.org/ja-JP/

チュートリアルの日本語訳
http://rust-lang-ja.github.io/the-rust-programming-language-ja/1.6/book/README.html

とりあえず、hello worldから。

  • rustup使ってrustcとcargo入れる。ドキュメントどおりやるだけで簡単。
  • とりあえず hello world
  • cargo便利
  • チュートリアル進めていき、数当てゲームの実装を始める。
  • 変数の束縛が今まで考えていなかったことで面白い。変数ではなく値を主語にする。

iti

[Golang]goでfizz buzz

なんとなくふと思い立って懐かしくなり書いてみた。
とくに意味はありません。

package main

import (
    "fmt"
)

func main() {
    for i := 1; i < 100; i++ {
        if i%15 == 0 {
            fmt.Println("fizz buzz")
        } else if i%5 == 0 {
            fmt.Println("buzz")
        } else if i%3 == 0 {
            fmt.Println("fizz")
        } else {
            fmt.Println(i)
        }
    }
}

ソースはこちら

[Golang] echo を作ってみた

エクササイズを参考に。

その1

package main

import (
    "fmt"
    "os"
)

func main() {
    var s, sep string
    for i := 1; i < len(os.Args); i++ {
        s += sep + os.Args[i]
        sep = " "
    }

    fmt.Println(s)
}

ソースはこちら

その2

package main

import (
    "fmt"
    "os"
)

func main() {
    s, sep := "", ""
    for _, arg := range os.Args[1:] {
        s += sep + arg
        sep = " "
    }

    fmt.Println(s)
}

ソースはこちら

ほぼ写経。
最近PHPばっかりだったから新鮮で面白い。

iti

SEGV サンプル

 最近のはやりに乗っかってみた。

とりあえず見よう見まねでSEGV起こるように書いてみた。

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
char *buf;

fgets(buf, 1024, stdin);
printf("%s\n", buf);
return 1;
}

これでコンパイルして実行して標準入力に適当に何か入れると怒られる。

面白い。

それにしても簡単に起こせるな。。