Windowsアプリケーション開発でC#とC++

このQ&Aのポイント
  • C#とC++でWindowsアプリケーション開発をしましょう。
  • マイコン通信用の自作ソフトを作るためには、C#かC++を学ぶ必要があります。
  • 開発環境の費用や勉強の進め方についても教えてください。
回答を見る
  • ベストアンサー

Windowsアプリケーション開発でC#とC++

こんにちは。 普段、C言語でマイコンプログラムを部活などで書いている者です。 マイコンとPCはプログラム書き込みの際や、ターミナルソフトとの通信の際にシリアル通信を使用していますが、パソコン側で、それ専用のシリアル通信を行う自作のソフトを作ってみたいと思っています。 たとえば、画面のスライダーを動かすと、(ほぼ)リアルタイムにサーボがそのスライダにあわせて動く、といったようなものや、マイコンからのデータを受信して、逐次グラフに表していく、というものを作りたいです。 まず、Windowsアプリケーションを書くには、C#かC++だと聞きました。 ネットで調べてみても、この二つの言語は大きく違うような印象を受け、 どちらの勉強を進めていいのかがよくわかりません。 Javaはまだ特にやったことはないです マイコン通信用ソフトの作成などといった用途のアプリケーションを作りたいのですが、 どちらの言語を学習するのがよいでしょうか? 教えてください また、開発環境を整えるのに必要な費用等、教えていただけるとうれしいです。 当方、高校二年生で、C言語の簡単な入門書レベルはおおむねわかります。 ほかに、HTML、CSSもわかりますが、それ以外はよくわかりません。 どうぞよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.1

>>マイコン通信用ソフトの作成などといった用途のアプリケーションを作りたいのですが、 どちらの言語を学習するのがよいでしょうか? PC側で動作するプログラムとしてC++も使うことは可能ですけど、ネットで参考になるサイトのサンプルは、C#あるいはVBが多いので、どっちを選ぶかとなるとC#のほうがいいと思います。 C#は、.NetFrameworkと共に、MSが割と自由に(大胆に?)仕様変更して、開発効率をアップしているように思います。 (たぶん、C++は、MSが勝手に仕様変更するのは難しいのではないでしょうか?) >>また、開発環境を整えるのに必要な費用等、教えていただけるとうれしいです。 一部の制限はありますが、C#、C++の開発環境は、無償で入手可能です。 なお、Visual Studio Express 2010までは、XPで動作しますが、2012以降は、Win7以降が動作環境となっています。

elecpigeon
質問者

お礼

お礼が遅くなってしまい大変申し訳ありません。 回答ありがとうございました

その他の回答 (2)

回答No.3

画面から操作を行うプログラムということですので、 C#の方が時間がそれほどかからないので良いのではないでしょうか。 C++の方が高速な部分はありますが、.NET Frameworkを使用するのであれば、 どちらも大差ないと考えます。 質問者さんは高校生ということですので、これから色々勉強していかれるのだと思います。 言語を習得することも大事ですが、効率の良いプログラムの設計方法も同時に学んでいく必要があります。 私が個人的にお勧めするのは、まずはC#で一通り作ってみて、 ウィンドウプログラミングがどのようなものか学び、 動くものができたら、制御の核になる部分をC++に置き換えて .NET Frameworkを使用しないネイティブプログラミングで高速化を図るというものです。 きちんとプログラムの設計ができていないと、後でC++に置き換えるのは難しいので オブジェクト指向、クラスの設計の勉強にもなります。 おそらく最初はプログラムを作っては壊すようになるでしょう。 ちなみにVisualStudio Expressは無料で使用できますので、お金はかかりません。 頑張ってください。

elecpigeon
質問者

お礼

回答ありがとうございます。 いろいろトライしながら、進めて生きたいと思います。

  • goo_f6
  • ベストアンサー率0% (0/1)
回答No.2

私個人としては、C++の方が処理が速く、 リアルタイムを望むなら、こちらの方がいいと思います。 C#は、用意されている便利な関数や参考になるサイトが数多くあり、 メモリ関係も勝手に処理してくれるので、あまり気にせずに書くことができ、 初心者には便利な言語です。 フォームアプリケーションは、javaも含め、簡単に作成することができ、 ボタンからリッチテキストボックスやリストビューなど、 便利なコントロールが数多く用意されています。 とりあえず簡単に作ってみたい場合はこちらの方がいいと思います。 対してC++は、C言語に近くやや古い印象です。 フォームアプリケーションを実装しようとすると、 コードが膨大になり、ソース管理し難い印象です。 また、用意されている関数はことごとくポインタを要求するで、 ポインタを理解していないと、値渡しや参照渡しや実データで混乱すると思います。 しかし、ポインタやメモリアクセスは慣れると便利で、 マイコンプログラムや原始的なアセンブラに近い感覚や速度を実感すると思います。 どちらでもフォームアプリケーションやリアルタイムプログラミングは、 実装は可能だと思いますが、今後マイコン通信等の職に就くのであれば、 大変かと思いますが、C++でポインタに慣れていた方が良いと思います。

elecpigeon
質問者

お礼

回答ありがとうございます。 C++のほうが処理が早いとのことですが、マイコンとの通信で気になるレベルなのでしょうか? 私は独学初心者ですので、やはり参考資料が多いというのは助かります。 ポインタは入門書レベルならだいたいわかると思いますが、あまり得意ではありません… まずは、C#を勉強してみようかなという気持ちに傾いてきました笑

関連するQ&A

  • RS232Cを用いたSCIでのシリアル通信について

    PCで計算して吐き出した5~6個の数値データ(それぞれ3桁の数字で最大2バイトあれば足りる大きさです)をRS232Cを使ってSCIでマイコンに送り、マイコン側でそのデータを使って計算する、というシステムを考えています。 色々勉強してみたのですが、例えばPC側プログラムがテキストデータで吐き出した数値を読み込んで送信する場合、全てアスキーコードで送られてしまうのでしょうか?少なくともキーボード入力の値はアスキーコードで送られているようだとはわかりましたが・・・。 また、まだアルゴリズムは考えてませんが、PC側の計算プログラムから直接に数値をPC側送信プログラムに渡してあげた場合は、やはりそのままの値(例えば8なら1バイト2進法で00001000で送られるものなのでしょうか? 開発環境はC言語で、マイコンはSH2だということです。通信は今はテスト段階でハイパーターミナルを使っていますが、いずれは命令を出したときに適切な値を送信するようにしたいので、C言語で書かれたSCI通信のフリーウェアなどを使う検討もしています。 その理由はC言語プログラムの中にハイパーターミナルをどのように含めればいいのかわからなくて・・・ C言語でできたソフトなら、そのままPC側計算プログラムに組み込めばいいかなぁと思いまして・・・。(浅はか?) この点についてもご教授頂ければ幸いです。 説明不足かもしれませんが、その場合はご指摘ください。 どうぞ、宜しくお願いいたします。

  • ゲーム開発がしたい。学ぶべきはC++かC#か。

    現在、小さな事務系ソフトウェア開発会社でプログラミングをやっている者です。 思う所あって、ゲーム系の会社への転職を考えています。 応募にあたって作品の提出が必要なことは存じていますが、 どの言語を勉強し、開発すべきかで迷っています。 開発したいゲームとしては、STGかRPGで考えています。 2Dか3Dかは特にこだわりがありません。 過去に行ったプログラミングは、ゲームの関係の薄いものばかりで、 「ゲーム開発」について本格的に学んだことはありません。 学生の頃はロボットを制御するために、C言語のプログラムを書いていました。 PCとマイコンのシリアル通信のために、C#でwindowsアプリケーションも作りました。 C++もほんの一時期だけ使っていました。 卒業してから日が浅いので、これらの知識はまだある程度あります。 会社ではaspxとJavaScriptでWebページの外面、内部の動作をVBで行なっています。 触れたことのあるプログラミング言語を理解度順に並べたら多分こんな感じです。 VB≒C#>C>JavaScript>>>C++ C#とVBは似通った言語なので、VB中心の現在でもなんとなく理解できます。 現在最もメジャーらしいC++が最も経験が少なく、自信がないです。 軽く調べた感じでは、現在のゲーム開発はC++が多いが、 今後はC#やJavaも増えるかもという感じでどちらでゲーム開発を本格的に学ぼうか迷っています。 最もメジャーなC++を改めて学ぶべきか、 それともある程度使えるC#での開発方法を学ぶか、 あるいはその他の言語か、助言をお願いします。 また、開発の参考文献なども教えていただけると幸いです。 よろしくお願いします。

  • こんなソフトを開発するには?

    ラジコン用サーボをパソコン(Windows上)で制御するソフトを作りたいと思っています。 条件としては、サーボの回転角を定義するGUI、 サーボの制御ボードと通信するためのRS-232C です。 どのような言語で開発するのがいいのでしょうか?

  • GUIアプリケーションの開発について

    Windowsで動作する一番簡単なGUIアプリケーションの作り方を教えてください。今までC言語とJavaの初歩的な学習は大学の授業でやりましたが、作ったプログラムはコンソール画面で動作するCUIのものばかりでした。したがってGUIのプログラミングは全く学んだことがありません。そこで、例えば電卓のような簡単なGUIアプリケーションの作る手順を教えてください。またはそのような内容のWebページを教えてくださると嬉しいです。言語はC言語かJavaでお願い致します。 会社などで実際にソフトを開発する際にVisual Studioがよく使われているそうなので、できればVisual Studioで開発する方法を教えてくださるとありがたいです。 インストールしてあるVisual Studioは「Visual Studio 2013 Ultimate」です。回答宜しくお願い致します。

  • Javaで作ったアプリケーションからH8マイコンへ

    現在、勉強中の学生です。 RS232Cを使ってJavaで作ったアプリケーションからH8マイコンに値をシリアル通信で送信してシステム制御をしたいのですがググってもヒントとなるようなサイトがあまり見つかりません。 そもそもJavaでシリアル通信することが難しいのですか?VBの方が適していますか? よろしくお願いします。

  • Windowsアプリケーションの開発で、アニメーションを組込方法を教えてください。

    ソフト:Visual Studio 2005 言語:C# にてWindowsアプリケーションの開発をしています。 あるページの一部にアニメーションを組込まなければならなくなりました。。。 動きとしては、ある計算した値を表示した上(レイヤー)で アニメーションが動いている感じになります。 web系だとFLASHが一番近い動きだと思われましたが Windowsアプリケーションを開発する際に 同様な動きができる開発環境ソフトやツールがあるのか 見つけられませんでした。 どなたかすみませんが、ご教授ください。 ヒントだけでも結構ですので、よろしくお願いいたします。

  • H8 3052Fマイコンでシリアル通信を2チャンネル同時に使うとエラーが出る理由はなんでしょうか?

    秋月の3052マイコンボードを使ってサーボコントローラ、RS-232Cでパソコンとの通信にそれぞれ1チャンネルずつの計2チャンネルのシリアル通信を行っています。 PCとの通信(ビットレート:57600)単独で行うと、PC上には表示したいものがきちんと表示されるのですが、サーボコントローラとの通信(ビットレート:9600)と同時に行うと表示がおかしくなります。 その際他のところはいじっていません。 この理由がわからないので、ご存知の方がいらっしゃればよろしくお願い致します。

  • Javaで作ったアプリケーションとH8マイコンを

    Javaで作ったアプリケーションとH8マイコンをシリアル通信で入出力したいのですが ヒントとなるようなサイトを探してもなかなか見つかりません。 知っておられる方、教えてください。

  • シリアル通信の電圧変換

    シリアル通信に関する質問です。 出力が3.3Vのマイコンから入力電圧が5V必要なサーボコントローラの間で、シリアル通信をしたいのですが、どうやったらいいのでしょうか? 信号の方向は、 マイコン(3.3V)→サーボコントローラ(5V)です。 昇圧回路?とかを通すのでしょうか?その辺はよくわかってませんが。。

  • KinectのC++でのプログラミングについて

    KinectとマイコンのArduinoを使用して、体の動きによって動くラジコンを作りたいと思っています。 動作環境はvisual c++ 2010 expressです。 シリアル通信のプログラムがわかりません。 Kinectで骨格を認識し、その位置によって1や2などの数値をArduinoに送信し、その値によって前進や後退、旋回をしたいです。 この時のシリアル通信でc++からの送信の仕方のプログラムとArduinoでの受信のプログラムを教えてください。

専門家に質問してみよう