質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
Nim

Nimは、静的型付けプログラミング言語。Pythonの生産性でありながら、C言語のような高いパフォーマンスも持ち併せます。さらに自由度の高い言語で拡張性も重視されています。

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

解決済

インターフェイスとコンセプトの違いについて

Paalon
Paalon

総合スコア234

Nim

Nimは、静的型付けプログラミング言語。Pythonの生産性でありながら、C言語のような高いパフォーマンスも持ち併せます。さらに自由度の高い言語で拡張性も重視されています。

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

1回答

0リアクション

0クリップ

354閲覧

投稿2018/05/29 10:00

編集2018/05/29 10:06

インターフェイス/interfaceとコンセプト/conceptの違いについて教えてください。
Go言語ではこのサイトに従ってインターフェイスの使用例を実装してみると、

go

package main import "fmt" type Animal interface { Cry() } type Dog struct {} type Cat struct {} func (dog *Dog) Cry() { fmt.Println("わんわん") } func (cat *Cat) Cry() { fmt.Println("にゃーにゃー") } func letCry(animal Animal) { fmt.Println("鳴け!") animal.Cry() } func main() { dog := new(Dog) cat := new(Cat) letCry(dog) letCry(cat) }

こんな感じになり、Nimではコンセプトという機能を使ったとして、

nim

type Animal = concept x cry(x) type Dog = object type Cat = object proc cry(dog: Dog) = echo "わんわん" proc cry(cat: Cat) = echo "にゃーにゃー" proc letCry(animal: Animal) = echo "鳴け!" cry(animal) let dog = Dog() let cat = Cat() letCry(dog) letCry(cat)

このようになると思います。どちらも似たようなことをしていると思うのですが、ハッキリと別の言葉が使用されているあたり、何か違う概念に基づいているのだと思います。C++にもコンセプトという言葉があったり、Javaにもインターフェイスという言葉があると思いますが、具体的にどういう概念の違いなのでしょうか?

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Nim

Nimは、静的型付けプログラミング言語。Pythonの生産性でありながら、C言語のような高いパフォーマンスも持ち併せます。さらに自由度の高い言語で拡張性も重視されています。

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。