大学四年で研究室配属がありました。
複雑系を扱っているのでフォートランを使うようです。
でも最近ではあまり使われないと聞き、
また、担当の先生はCでもC++でもやりたかったら
言いなさい。という感じでした。
就職希望してるので、Cをやってたほうが
就職とか有利でしょうか?
誰か教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

複雑系を始めとして、物理系の数値計算でFORTRANを使う理由は、過去の遺産のプログラムが大変豊富にあるからです。

こういうのをライブラリといいます。つまりライブラリが豊富なので、複雑系の計算をしようとすると、違う研究でも同じような微分方程式の解法が役に立ったりして、改めてプログラムを書くことなく、研究の効率があがるというのが、FORTRANを使う最大の理由です。
Cは、まだそれほどライブラリの蓄積がないので、研究をしていくうえでは、プログラムを書くのが大変ということになります。研究や卒論の効率から考えるFORTRANでプログラムを書いたほうがよいと思われます。他の言語だと、プログラムを自分で長く書かねばならなくなります。

さて、研究から離れて社会の話しをしましょう。基本情報処理試験をご存知ですか?情報処理技術者の取得すべき国家資格です。その試験で、言語を選択するのですが、選択できるのは、アセンブラ、COBOL、C、そしてJavaです。実はついこの間までFORTRANが選択できてJavaはありませんでした。つまり、FORTRANは研究者の間の「方言」になってしまい、その代わり新進気鋭のJavaが入ってきたわけです。これは、社会のニーズを大変的確に反映しています。
Javaは今、いちばんニーズの高い言語です。それからC++です。これらの言語の共通点は「オブジェクト指向言語」であるということです。現在のITの流れは「オブジェクト指向」になっています。VBもニーズが高いです。この言語も、準オブジェクト指向です。CやCOBOLはFORTRANと同じく「手続き型言語」ですが、CやCOBOLで新しいプログラムを書くことは少なくなりました。これらの言語で書かれたシステムは「レガシー(遺産)」とさえ呼ばれています。つまり、Cももはや、社会ではあまり使われていない言語なのです。

つまり、就職では、FORTRANでもCでも変わりはないということです。C++は少し有利かもしれません。しかし、C++(もしくはJava)のような「オブジェクト指向」で数値計算のプログラムをかくと、恐ろしく面倒です。ライブラリも少ないです。
研究でこれらの言語をもちいたら、大変な時間がかかります。とくにJavaは計算時間が馬鹿みたいに長くかかります。ですから、研究のためにC++やJavaを使うことはお勧めできません。

では、どうするか。研究は素直にFORTRANでやるのが良いでしょう。
そしてまず、「アルゴリズム」というものをしっかり身につけましょう。
そして、なるべく学生のときに基本情報技術者試験に合格するといいです。
こういう資格のほうがずっと就職に有利になります。そのために、Cを勉強するのは良いことだと思います。
就職のときには、自分は「アルゴリズム」をちゃんと身につけているとか、長いプログラムを書いた、とか、論理的思考が得意であるとかでアピールするとよいです。例えばSEになるとしても、みんながプログラミングをするわけでは、ありません。そう言う意味では、学生時代どの言語をやっていたかということは、それほど重要なことではないと思います。それよりも、どの言語でも良いから、しっかりとした、明確な構造をもった、読みやすいプログラムが書けるという能力のほうがずっと重要だと思います。

こんなところですが、参考になさってください。
    • good
    • 0

通常のアプリケーションではC,C++が多いですが、


複雑な計算や計算スピードが求められるシステムでは
まだまだFORTRANが使われています。
(どの言語を使うかはシステムの内容によります。)
就職先の会社によりますが、まあ何かしらプログラム言語を
一つ覚えておけばいいと思います。
    • good
    • 0

結論から言うと、C・C++やVC、VB等の言語の方が就職には有利だと思われます。


FORTRANですので、多分汎用系だと思いますが、
汎用系の求職は確実に減っていると感じます。
逆にクライアント/サーバー系の仕事は特に減っているとは感じられません。
汎用系でもCOBOLならまだなんとかなりそうなんですがね。

そんな私も汎用系でCOBOLやってましたが、必要にせまられてVBもやってます。時代なんですね。
    • good
    • 0

市場規模で考えるとFortranは少数派になりました。


しかし、全く需要が無いわけではありません。

現在主流の言語はJavaとC++です。
Windowsだけで考えるとC#の隆盛が始まろうとしています。
また、VBも大きな市場を持っています。

Cも時代遅れになりつつあります。
これには異論もあるでしょうが、今「Cはまだまだいける!」といっているのは15年前に「COBOLは永久にビジネスアプリのの主流だ!」と言っていた人と同じです。

しかし、所詮は言語に過ぎません。
言語は道具です。
言語にこだわるのはノコギリの種類にこだわるのに等しい考え方です。
もっと大切なこと(論理、設計など)に注目して学べば言語なんて何でもかまわないのです。
    • good
    • 0

現在、私は就職活動をしていますが、FORTRANを使ってプログラムを組んでいるという企業は聞いたことがありませんね・・・。

ほとんどがCでした。
しかし、研究室で使う程度の経験では就職には役に立たないでしょう。
私の好みですがCの方が面白いですよ。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QフォートランとC言語について

僕は機械系の人間なんですが、卒業研究で理論計算をするためフォートランを勉強しています。最近ではフォートランはなくなりつつある言語だとよく聞ききますが、本当のところはどうなんでしょう?来年は大学院へ進学予定なんですが就職後のことを考えてC言語も勉強した方がよいでしょうか?技術職、研究職、院生の方、意見をお願いします。

Aベストアンサー

Fortranがなくなりつつある言語かどうかはわかりませんが、すでに「古い」言語になりつつあることは
確かでしょう。構造体やポインタなどもないし(Fortran90にはあるようですが)
少なくとも民間企業では機械組み込み用であれパッケージソフトであれ使われていないと思います。
研究機関などにはまだFortranの資産も残っているのでしょうが、FortranのコードをCのコードに直す
トランスレーターなどもあるので、Fortranが使えなくても差し支えないと思います。
少なくとも大学院の研究ではCかC++を使うことをお勧めします。

なによりいけないのはFortranになれてしまうと、現在主流のオブジェクト指向プログラミングを
理解しづらくなってしまうことだと思います。Fortran77だとそれ以前にポインタや構造体の概念も理解しづらい。
これらの概念はみなFortranにはないものだからです。

私自身もそれで苦労しました。私のプログラミング経験は学部の頃にFortran77をちょっとやっただけです。
そしてファイルとかOSとかの概念さえ知らないまま卒業以来コンピューターとは無縁の生活。
10年近いブランクの後、大学院に入学したらいきなりCでプログラムを組む課題が出たりして
戸惑ったものです。ましてやC++のゼミまであったので…
BASICまたはperlのような言語ならFortran77の経験で十分対応できるのですが、Cはちょっとかけはなれています。
このあたりのことは以前にも回答したことがあるので参考URLの1つ目を御覧下さい。

なお以前に「教えて!goo」で、CとC++のどちらを先に学ぶのが良いかと言う議論がなされていました。
こちらも参考になるかと思います。参考URLの2つ目を御覧下さい。
私はCよりC++を先に学ばれることをお勧めします。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=89442,http://oshiete1.goo.ne.jp/kotaeru.php3?q=80834

Fortranがなくなりつつある言語かどうかはわかりませんが、すでに「古い」言語になりつつあることは
確かでしょう。構造体やポインタなどもないし(Fortran90にはあるようですが)
少なくとも民間企業では機械組み込み用であれパッケージソフトであれ使われていないと思います。
研究機関などにはまだFortranの資産も残っているのでしょうが、FortranのコードをCのコードに直す
トランスレーターなどもあるので、Fortranが使えなくても差し支えないと思います。
少なくとも大学院の研究ではCかC++を使うこと...続きを読む

Qウインドーズでのフォートランについて

フォートラン77をリナックスで使用していたのですが、最近、ウインドーズにもフォートラン77と、fcpadをダウンロードして使っています。で、質問なのですが

フォートランでのコンパイルの際
(1)データをキイインして結果をモニターに表示
(2)データをキイインして結果をファイルに保存してプリント
(3)データをファイルに保存しておきそれを読ませて結果をモニターに表示
(4)データをファイルに保存しておきそれを読ませて結果をファイルに保存して、プリント
と言うケースがあって、(1)はわかったのですが(2)(3)(4)がどのようにするのかわかりません。

リナックスでは、それぞれemacs上にて、(2)./a.out>kekka (3)./a.out<data  (4)./a.out<data>kekka
で、できたはずなのですが、ウインドーズではどのようにすればよろしいのでしょうか。

Aベストアンサー

fcpad上から実行→実行時パラメータで、
(2),(3),(4)のそれぞれで使用するパラメータが入力できます。
その後F8キーを押すとソースがコンパイルされてから、exeファイルが実行されます。
その際に実行→実行時パラメータで設定したパラメータが渡されて、(2),(3),(4)がそれぞれ実行されます。
fcpadのヘルプに詳しい説明が出ていますよ。
読みましたか?

Qフォートランプログラムのエラーについて

自作のフォートランのプログラムをvisual fortranでコンパイル後,走らせたところ,以下のようなエラーがでました.

forrtl: severe(161): Program Exception-array bounds exceeded
Image   PC     Routine  Line   Source
hoge.exe  ********  Unknown  Unknown Unknown

注)********:アルファベット交じりの数字.たぶん,16進数.

LineやSourceなどは,Unknownと書いてありますので,トラブル解決のカギは,PCのところに表示されている,数字だと思われます.しかし,その数字が何の手がかりなのかがよくわかりません.
どなたかご教示いただけませんでしょうか?

よろしくお願いいたします.

Aベストアンサー

エラーの内容については、#1の方がお書きの通り、配列の添え字の範囲オーバーです。

PCの値は、エラー発生時のプログラムのアドレスです。
Routine Line Source が Unknownになっていると言うことは、デバッグオプションを付けずにコンパイルしてしまったのだと思います。デバッグオプションは、PCの値からエラー場所を特定するスキルがない限り必須です。

Qフォートランですが。。

以下のように関数を定義したのですが、
double precision function theata(x, u, ns, i)
のところでwarningがでて、"関数の戻り値が定義されていない"みたいなことを言ってるんですが、何がいけないのでしょう?
double precision function theata(x, u, ns, i)
implicit double precision(a-h, o-z)
dimension y(51), u(51)
do 100 i=1, ns
y(i)=cos(x)-sin(u(i))
100 continue
return
end

Aベストアンサー

theata関数で計算した結果をtheataに代入していないからです

サンプル
real*8 FUNCTION G(x,y)
G = cos(x)+sin(y)
RETURN END

サブルーチン的なのに、関数にしていますので、このワーニングは絶対取れません
どうしてもファンクションを使いたい場合は、
関数の中のループを外に出して、ループの中でtheataをCALLしてください
(パタメタのiって必要?)

Qフォートランのソース変更を試みています

オリジナルは、ファイルAを読み込んで計算後に別ファイルへ書き出す内容です。それを繰り返し行なうよう変更すべく、恐らくは配列処理で対応可能かと思うのですが力不足のためご教授願いたく。

下記ファイルAには1行目にトータルグループ数、2行目に縦・横・奥行きのポイント数、3行目以降で各ポイントの値が入っています。
  1
  41 33 33
 -0.622790027E-02 -0.585733028E-02 -0.541264331E-02
 -0.487901969E-02 -0.423867628E-02 -0.349753047E-02 
 -0.622790027E-02 -0.585733028E-02 -0.541264331E-02 ---以下省略

下記ファイルBについても同様にしたいのですが、配列について今ひとつ理解不足なので困っています。
  3
  41 33 33 ---(1)
  21 33 12 ---(2)
  11 33 21 ---(3)
 -0.622E-02 -0.585E-02 -0.541E-02
 -0.487E-02 -0.423E-02 -0.349E-02 
 -0.622E-02 -0.585E-02 -0.541E-02 ---中略ここまで(1)
 -0.622E-02 -0.585E-02 -0.541E-02
 -0.487E-02 -0.423E-02 -0.349E-02 
 -0.622E-02 -0.585E-02 -0.541E-02 ---中略ここまで(2)
 -0.622E-02 -0.583E-02 -0.541E-02
 -0.487E-02 -0.421E-02 -0.349E-02 
 -0.622E-02 -0.585E-02 -0.541E-02 ---中略ここまで(3)

元ソース内のDo文については理解できていると思いますが、プログラムに関しては初心者レベルです。ファイルAでは上から順に読み込まれて計算処理し、別ファイルに書き出しています。始めの(1)~(3)を配列に格納してポイント値へ移行し、(1)分が終われば(2)分へ移るようなDo文で対処できるのかな?と考えられるのですが・・・・

よろしくお願い致します。

オリジナルは、ファイルAを読み込んで計算後に別ファイルへ書き出す内容です。それを繰り返し行なうよう変更すべく、恐らくは配列処理で対応可能かと思うのですが力不足のためご教授願いたく。

下記ファイルAには1行目にトータルグループ数、2行目に縦・横・奥行きのポイント数、3行目以降で各ポイントの値が入っています。
  1
  41 33 33
 -0.622790027E-02 -0.585733028E-02 -0.541264331E-02
 -0.487901969E-02 -0.423867628E-02 -0.349753047E-02 
 -0.622790027E-02 -0.58573302...続きを読む

Aベストアンサー

オリジナルでは、最初にトータルのグループ数を読み込んでいるとのことですが、この値を2以上にした場合の処理(繰り返し処理)は考慮されていないのでしょうか。


オリジナルでは、
  41 33 33 
これらを、I , J , K の各変数に読み込んでいるとするなら。

例えば、
  41 33 33 ---(1) は、
     I( 1 ) , J( 1 ) , K( 1 ) に

  21 33 12 ---(2) は、
     I( 2 ) , J( 2 ) , K( 2 ) に
     
  11 33 21 ---(3) は、
     I( 3 ) , J( 3 ) , K( 3 ) に読み込んでから

処理するというように考えてみてはいかがでしょうか。


人気Q&Aランキング

おすすめ情報