この文章の書き方があってるのか、わからいのですが、基礎からキッチリ覚えたいと思っていますので、暇なときにでも、よろしくお願いします。
今、フリーのC言語のコンパイラソフトを使用して、本を片手に
ソースを実行して基礎を学んでいる最中です。
そこで質問なんですが、ソースを書いて実行する方法、(今はソフトを使っているのですが)その仕組みは、知っておくべきでしょうか?
あと、現在、AFP(金融関係)の資格を勉強しており、将来、携帯端末を利用した提案書のサービスができるようになりたいと思っています。
これを実現させるには、JAVAのほうが近道のような気がしながら、基礎だと思ってC言語から始めましたが、実際はどうなんでしょうか?
それとも、どんな仕組みで携帯から動作しているのか?そういう所から詳しくなっていったほうが、いいのでしょうか?
今は両方、同時進行でやっています。言語のほうは、だんだんわかってくると感じるのですが、仕組みになると初歩の段階から、かなり専門的で困っています。
長々、まとまりのない文章になってしまいましたが、職業として真剣に考えていますので、助言いただきたいです。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
こんにちは、制御系組込みソフトの開発を業としております。
> ソースを書いて実行する方法、(今はソフトを使っているのですが)その仕組みは、知っておくべきでしょうか?
ちょっと意味がよく分からないので適当に解釈させていただきますが、
・ソースから実行コードを作成する作業手順(コンパイラやリンカの使い方)
→これは当然、熟知しておく必要があります。C コンパイラ(特に組込みソフト用)には様々なオプションがあり、その指定次第で全く異なったオブジェクトが生成されます。応用分野や作業フェーズ(デバッグ中なのか出荷版なのか等)によって、これらを適切に使い分けないと、仕事になりません。つまり、コンパイラは単に、人間に分かりやすい言語(C)を機械語に翻訳する手助けをしてくれるツールに過ぎないということです。
・コンパイラの仕組み
→コンパイラのアルゴリズムは別に理解する必要はありませんが、C のソースがどういうオブジェクト(つまり機械語)に変換されているかということは、やはり熟知していなければなりません。マイクロ秒単位で性能を争う組込みソフトの世界では、コンパイラの癖やバグ等を知り尽くした上で、最適なコードを書く必要があるし、デバッグの時(特に性能測定など)には、どうしてもアセンブラ語レベルでデバッグする局面も、避けては通れません。
あと、Java と C についてですが、これは単純にどちらか優れているという結論は出せません。応用分野次第ということになります。
Java の最大のメリットは、共通プラットフォーム(Java VM)の上で異機種間でのアプリのポータビリティが保証されるということと、ユーザ側でも簡単にアプリを開発できる仕組みが簡単に作れるということでしょう。このことは、既に携帯電話のiアプリで実証されていますよね。
その代償として、性能(実行スピード)は、同じ機能を C で書いた場合に比べて、恐ろしく遅くなります。
また、Java は言語として C より堅牢(安全)とも言われていますが、裏を返せば「融通が利かない」ということでもあります。特に制御系組込みソフトにおいては、ポインタが無いというのが致命的といっても良い欠点ですね。
したがって、専用のハードウェアの上で作りつけのソフトだけを組み込むということでしたら、Java より C の方が、一般的には適していると思います。たとえアプリを多数品揃えするにしても、C 言語ベースの共通プラットフォームを構築しておけば済むことですから。
何かまとまりのない回答になってしまいましたが、いずれにしても、開発されるシステムが何を目的とするかをしっかり把握した上で、開発言語を選ぶということが大切だと思います。
お返事ありがとうございます。
かなり専門的にされておられる方に回答していただいて、自分のあまりの知識のなさに申し訳なく感じてしまいました。
わからないなりに調べて理解したつもりなんですが、現在、使っているソフトは以下のような感じの解説です。
標準的なC言語ソースプログラムをコンパイル・実行するソフトウェアです。
独自に作成したプリプロセッサ・コンパイラ・リンカを備えており、(仮想機械用コードを出力し、実行する)C言語の学習向け処理系です。
これがysk6406さんの言われている組み込みソフトってことですよね?
そして、このソフトは、独自のソースから実行コードを作成する作業手順、を持っていて、独自の結果が反映される。この作業は理解する必要があり、私が聞きたかったのも、この部分です。
そしてコンパイラの処理手順の理解はいらないけど、結果として出てきた言語は理解が必要である。
こんな感じで理解を深めたんですが、あってますでしょうか?
現在、考えているのが iアプリで提供できるサービスです。JAVAだと無料配布でほとんど作れてしまいそうなので、やっぱりJAVAかなと思うのですが、将来的なことも考えてC言語をやるべきではないか?とも思ってます。
まだまだ勉強しなければ。。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 個人事業主・自営業・フリーランス 仕事柄ずっと自宅と言うリモートワークが基本となる為には? 2 2023/03/15 13:29
- 大学受験 高3、march志望です。助けてください...! 古文の模試で3割しか取れませんでしたT^T 今から 6 2022/09/24 09:44
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- IT・エンジニアリング ITエンジニアの勉強時間や勉強方法について 初めまして閲覧いただきありがとうございます。 当方25歳 4 2022/06/09 18:51
- 大学受験 佛教大学の社会福祉士学部って相当レベル高いですか? 元々Fラン(BF)の大学進学予定でした。 通信制 1 2022/10/14 11:42
- 大学受験 大学受験の参考書について 高3の私文志望(今のところ中堅私立大)です。 基礎固めをしたいです。 持っ 3 2023/08/17 13:47
- 高校 テスト勉強について 中間テストの結果がかえってきたのですがあまりよくありませんでした。 現代の国語と 2 2023/06/05 00:46
- 大学受験 英単語帳について質問です。 たくさんの回答お待ちしております。 現在高3、産近甲龍志望です。 現在タ 5 2023/08/21 11:50
- 大学受験 数学が苦手で社会が得意な場合は一橋よりも東大の方が受かりやすい、ということはあり得ますか? 3 2022/04/16 16:46
- 大学受験 高三 進研模試偏差値34でした。 9月模試で英語と国語が30代前半でした。 英語のレベルは英検4級で 1 2022/10/08 14:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
unsigned long long 型のフォー...
-
C言語の規格
-
cc と gcc の違い
-
gcc のコンパイラオプションに...
-
組み込みソフト。ROM領域にデータ
-
アセンブリ言語から何がわかる...
-
パーサとコンパイラの違いって?
-
家庭用家電などのマイコンのOS...
-
VC++の/Zm オプションについて
-
組み込みソフトってなんですか?
-
VBでVC++の処理速さを実...
-
ALGOL・PL/Iのフリーのコンパイ...
-
C++でデスクトップGUIアプリ開...
-
二つの整数を昇順に並べ換える...
-
【COBOL】小さい字を大きい字へ...
-
VB6のコンパイラ
-
2つのマシンでコンパイルしたld...
-
C言語インタプリタ
-
C言語のプログラミングのソフト...
-
C言語のフリーソフト。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
unsigned long long 型のフォー...
-
ソフトの開発言語を調べる方法
-
C++でデスクトップGUIアプリ開...
-
組み込みソフト。ROM領域にデータ
-
cc と gcc の違い
-
C++Builder → Visual C++ 移植...
-
printfなど、標準関数のソース...
-
COBOLのALPHABET...
-
COBOLの論理演算子について質問...
-
Visual Studio でmakefileを使...
-
cobolで実行環境って何ですか?
-
パーサとコンパイラの違いって?
-
昔のgraph.hというファイル
-
未使用引数の注意文出力を回避...
-
C言語でのコンパイラの作成方法
-
C言語はC言語でできている?
-
COBOL計算式の中間ワーク桁数に...
-
リリースモードとデバッグモー...
-
『Bin』ディレクトリは何の略語?
-
POWERCOBOLのSQL...
おすすめ情報