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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

C++

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

Q&A

解決済

5回答

3315閲覧

C / C++/ C# はどう違うのか

moscow3

総合スコア201

Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

C++

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

0グッド

2クリップ

投稿2017/11/30 05:11

編集2017/11/30 05:12

C言語超初心者です(というかまだほとんど勉強すらしていません)が、 
C言語にはC / C++ / C# /objective C (?) があると聞きました。 
それで、これらはどれくらい違いがあるのでしょうか?
(例えば、Cで書いたプログラムをC++の実行環境で動かす みたいなこと(あるいは逆)はできますか? )

「これとこれは明らかにここが違う」みたいなことを簡単に教えていただけると幸いです

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

まずはC言語があって、残り3言語はそこから派生していきました。その派生の仕方が違います。

  • C++…C言語にあった「構造体」を拡張して「クラス」にするなどを行っていった派生形。C言語のコードはほぼそのまま動きます。
  • Objective-C…C言語とは別系統のSmalltalk的なオブジェクト指向システムを乗っけた派生形。C言語部分はそのままです。なお、現状ではほぼAppleプラットフォーム専用の言語ですし、後継となるSwiftも出ているので、今から取り掛かるメリットはなさそうです。
  • C#…C言語的な文法で、完全にオブジェクト指向な言語として作られたもの(C言語のコードは動かない)。マイクロソフトが策定したこともあってWindows向けが主流だけど、Xamarinでのモバイル開発など他のプラットフォームにも進出しようとしています。

基本的には、使うプラットフォームに合った言語を選択する、というのが第一です(特に、Objective-CやC#は、使える環境が限られています)。

投稿2017/11/30 05:25

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0


言語について
まず、大本として C があります。
C は何でもできる反面、いろいろとプログラマが注意せねばならないことが多いという問題があります(ポインタの扱い)。
これに対して、C++ は C に対してオブジェクト指向プログラミングが可能なように機能拡張し、かつ C から危険な部分を削る努力をしたたものになっています。
一方 Objective-C も C にオブジェクト指向プログラミング用の機能を追加したものではあるのですが、そのやり方が異なっています。(より純粋なオブジェクト指向に近い)

これに対して C# は、本質的には C(およびその派生)とは異なる言語です。どちらかといえば Java に近いものになっています。(設計思想的には同一設計者の手になる Delphi からの影響が最も大きいと思いますが)


実行環境について
どのような言語で書かれたプログラムも、最終的にはターゲットのCPUが扱えるものに変換する必要があります。(Java や .NET の場合はちょっと特殊ですが)
ですから、C で書かれたものであろうが C++ で書かれたものであろうが、実行環境は同じにできます。
C++ から C で書かれたライブラリを呼び出す、なんてのも日常茶飯事です。

投稿2017/11/30 05:29

編集2017/11/30 05:30
tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

まず、C、C++、Objictev-C、Objictev-C++についてです。これらは、Cから始まってそれぞれ拡張したものという扱いです。

  • C 汎用性と実用性を重視して作られた高級言語。低級なメモリ操作をアセンブリ無しで実装できる。名前はB(C以前に作られた高級言語)の次の意味。
  • C++ Cにオブジェクト指向やテンプレートなどを追加し、拡張した言語。Cを内包しているが、auto等の一部互換性が無い部分もある。オブジェクト指向は構造体の拡張として作られており、もともと提唱されていたメッセージ主体のオブジェクト指向とは異なるが、オブジェクト指向そのものの再定義を担うことになった。
  • Objective-C CにSmalltalk由来のオブジェクト指向(メッセージ主体の考え方の方)を追加し、拡張した言語。Cを内包している。
  • Objective-C++ C++にSmalltalk由来のオブジェクト指向(メッセージ主体の考え方の方)を追加し、拡張した言語。C++を内包している。

上記についてはStackOverflowの回答にわかりやすい絵がありますので、参考にしてみてください。Objective-C++はObjective-CとC++を合わせた部分となります。

対して、C#は全く異なる系統の言語であり、下記のようになっています。

  1. C#の文法(シンタックス)はC++やJava等のC系から取り入れられている。C風文法(C-like syntax)等と言われるもので、他にはPerl、PHP、D、JavaScript等が採用している。
  2. C#の言語設計はDelphi(Object Pascal)から取り入れられている。(メイン開発者がDelphiの元開発者だった。)
  3. ネイティブ(機械語)ではなく、.NET上で動作するCLIへコンパイルすることを想定して作られている。

一見、Java(C++とObjective-Cをくっつけながら、オブジェクト指向だけを残したような言語)に似ており、実際にJavaから影響を受けた部分も多いのですが、根底にあるのはDelphiで有るため、上で挙げたCの系統とは根っこの部分で異なります。乱暴な言い方をすると、DelphiをJavaを参考にしながらC風文法にするとC#になるという感じです。似ているのは文法だけで他のC系とは互換性は一切ありません。

おまけ

  • C++/CLI .NET上で動作できるようにC++を拡張した言語。C++を内包している。

投稿2017/11/30 15:07

raccy

総合スコア21733

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

C言語にはC / C++ / C# /objective C (?) があると聞きました
これらはどれくらい違いがあるのでしょうか?

基本的に別言語と考えた方がいいです。
名前だけ似ていて、中身はほとんど別物です。

もちろん、共通する部分はあるものの、
別の新しい言語を覚えるのと、学習の労力はそう大差ないです。
というか、C#とC/C++よりも、C#とJavaの方が似ています。


「これとこれは明らかにここが違う」

C言語がこの中で、一番元祖です。

しかし、一番古くもあるので、
オブジェクト指向をサポートしていません。

逆に、C++、C#、Objective-CはOOPをサポートしています。
というか、Objective-Cの「Objective」は、オブジェクト指向の意味です。

Objective-CはほぼApple専用言語ですが、
そもそもジョブズがオブジェクト指向を重視したから、
Smalltalkに似ているObjective-Cを採用したのです。


Cで書いたプログラムをC++の実行環境で動かす
みたいなこと(あるいは逆)はできますか?

CコードをC++で動かす互換性はあります。が、逆は難しいです。
ゲーム機で言うと、PS1のソフトはPS2で動くけど、
逆はできないみたいなことです。つまり、後方互換です。


さて、C系言語のうち、どれを学習するか。
基本は使う目的によります。

たとえば、組み込みならC/C++、WindowsアプリならC#、
AppleのアプリならObjective-C(ただし今ならSwiftがある)、
といったしだいです。

投稿2017/11/30 12:26

LLman

総合スコア5592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

C言語は歴史がもっとも古く、様々な分野で使われてきました。組み込み開発やらライブラリ開発やら。メモリ解放について一番気を使う必要がある言語だと思います。

C++はC言語の拡張で、C言語で書いたソースコードも動かせます。オブジェクト志向が使われていて、コンシューマゲームなんかはC++が結構使われているみたいです。

C#はJavaやRubyのいいとこどりをした言語で、速度もCやC++ほどではないものの、それなりに速いのでPHPからC#に乗り換えるweb屋さんもいっぱい出ましたね。個人的にはC#で書くと、PHPよりもすっきり書ける印象です。また型推論などもあるし、LINQなどの機能もあり、一番機能的にはC#が充実していると思います。

投稿2017/12/24 18:49

imamoto_browser

総合スコア1161

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問