アプリ版:「スタンプのみでお礼する」機能のリリースについて

物理の実験系で必要なプログラミング言語には主にどのようなものがあるのでしょうか。Fortranなどは実際使われているのでしょうか。

A 回答 (9件)

本当に何をしたいかですね。



Fortranはライブラリ資産が多く残っているので読む程度の知識は必要でしょうが、それでバリバリ書くのは今の時代にそぐわないでしょう。

僕も制御やっていたのでCとアセンブラには慣れてますし、Fortranで情報処理の試験を受けた時代の人間ですが、今はデータ処理はExcelですし、ちょっと複雑ならExcel Macroです。そういう点では覚えるならVisual Basicが良いです。

数式が多いときは、Mathematicaですし、複雑な処理系ならMatlab Simulinkです。

今はPCが速いので、頑張って自分の得意と思っている言語でプログラミングするより、その場にある高級言語使って、パッと解く方が簡単です。環境構築が面倒臭いのですし。

出来ればグラフィック処理が充実しているのが良いです。MathematicaもMatlabもどちらも良く似たフリーソフトがあるので、学生ならそれらでも良いと思います。そういう点においてExcelは良いソフトです。VB付ですから。

その上で、もうちょっと高度や高速にしたい欲求があればCでプログラミングするという手順と思います。

ただ一つ習得すると、プログラミングのコツを覚えるので、他の言語の習得はだんだん楽になりますよ。英語やドイツ語、中国語を習得するよりはるかに簡単です。
    • good
    • 1
この回答へのお礼

たくさんの回答ありがとうございました。

お礼日時:2013/08/09 12:48

使う必要になってから勉強したので良いとは思いますが、1つ勉強しておくというならC言語をプログラムを見て大体なにが書かれているか分かる程度に知っておけば良いかな。

あとはクラスという概念(オブジェクト指向の言語で出てくる)を知っておけば理解の助けになると思います。
    • good
    • 1

過去の科学計算プログラムの多くがFORTRANで書かれています。



有名なのはローレンスリバモア研究所で造られたリバモアループ、スーパーコンピュータのベンチマークに使うプログラムです。
また、数値計算ライブラリとして有名なLINPACKもFORTRANで書かれています(最近は多言語から参照できるように書き換えられたものもあるようです)。

ですから、こういった数値計算関連の書籍を参照する場合、FPRTRANの知識はある程度必要です。
    • good
    • 0

大規模な数値計算を行う場合はFORTOANが有利かも知れません。


それは、実績のある数値計算用のライブラリが豊富だからです。
http://www.eie.yz.yamagata-u.ac.jp/~kkondo/progr …

実験系と言う事で有れば、測定器での計測とソフトウエアの連携が必要となるのでMATLABが有効でしょう。
http://www.mathworks.com/tagteam/57762_LN431_Han …
MATLABと同様のソフトでフリーのものも有ります。
    • good
    • 0

どんな実験なのかにもよるでしょうが、


特に処理速度が必要でないなら、C系の記述が難しい言語は避けたほうがよいでしょう。
言語の記述に振り回されて、肝心の理論の追求に没頭できなくなります。
Fortranでも良いですし、その系統のBasicもなかなか有能ですよ。
    • good
    • 0

  一方でシステムの設計屋でもあるのだけれど、僕の個人的な印象からすればCもしくアセンブラといったところをお勧めしますね。


 確かにFortranもあるにはあるければ、実際の現場では余り使われていませんね現在では。80年代から90年代に掛けてなら確かにPascal、PL/1、PL/Hなんてものもあったけれど何れもFortranやCobolから派生した言語ですし、元祖からすれば不満の残る言語でした。
 FortranもCobolも共にパッケージやマクロといった資産が豊富にありますが、それもCと同様に使う側次第でどうにでもなります。
 文系の僕にでも扱えるのですから、どうせならアセンブラからCに行ってはいかがですか?
    • good
    • 0

実験や制御などでは、


 アセンブラ
 C言語
などが多く使われています。

データ解析や数値計算、物理のシミュレーションには、
 Fortran
でしょうか。
Fortranはそもそも科学計算をするために生まれた言語です。
言語の仕様、作りが数値計算に特化されている言語といっていいでしょうか。
なので、Fortranは、
実験装置などを制御したり、実験装置からコンピュータへ実験データを取り込んだりするのには向いていません。
標準的な命令語には、そのようなコマンドがありません。
なのですが、実験データの解析には、Fortranは使えます。

Fortranのもつ最大の強みは、先人たちによって様々な、膨大なプログラムが作られており、それを誰でもすぐに利用できる点です。これは他のプログラミング言語にはない、Fortranだけが最大の利点です。

Fortranの特徴や歴史については、
http://ja.wikipedia.org/wiki/FORTRAN

C言語は
http://ja.wikipedia.org/wiki/C%E8%A8%80%E8%AA%9E

アセンブラは
https://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%BB …



個人的には、C言語がもっとも拡張性が高く、汎用性が高く、
しかも、
Javaをはじめに、様々な言語がこの文法構造を参考にして作られているので、
C言語を知っていれば、すぐに他の言語も覚えられるという利点があるのですけれど、
C言語の文法を覚えるのは、大変です。
その習得には、涙と努力が必要です。
《ポインタ》で多くの人がつまずき、これ以上、前に進むことができません。そして、C言語は分からない、と言います。
    • good
    • 0

 Webベースのアプリケーションや、Webベースで機能するサービス、加えてJavaや.NETのような物理的なシステムを抽象化するプラットフォームの台頭によって、現在のアプリケーション開発は環境によってアプローチが大きく異なり、それに伴って様々なプログラミング言語が使われるようになっています。



 ネイティブの実行ファイルを対象としたアプリケーション開発であれば、古くから使われているC言語やC++言語が今でも主流です。しかしながら、Webアプリケーション開発ではPerlやPHP、Ruby、Pythonなどの組み込み可能なスクリプト言語が人気です。Ajaxを代表としたブラウザ内で動作するクライアントベースのWebアプリケーションであればJavaScriptが駆使されることになります。

 仮想システムを対象としたアプリケーション開発には、仮想システム専用の言語が使われます。Javaアプリケーション開発であれば主にJava言語が使われ、.NETアプリケーション開発であればC#言語やVisual Basic.NETなどが主流です。しかし、ここ最近になってこれらの仮想システム上で標準ライブラリにアクセス可能なRubyやPythonなどのスクリプト言語も実装されるようになり、さらに選択肢は広がっています。

 加えて、それぞれのプログラミング言語ごとに魅力的なフレームワークが競って開発されています。利用するフレームワークによって利用するプログラミング言語を切り替えたいという場合があるでしょう。質の高いフレームワークを利用することができれば、短時間で完成度の高いアプリケーションを構築できるようになります。

 選択肢が増えることは悪いことではありません。しかし、開発者にとっては数多くのプログラミング言語を学習しなければ、最先端のアプリケーション開発環境を使いこなすことができないという状況になりつつあります。加えて、新人開発者や学生にとっては覚えなければならないプログラミング言語が沢山待ち構えていることになります。新人教育を担当される方であれば、どの言語を教えれば良いのか迷うことでしょう。

 本稿では、アプリケーション開発の現場で実用されているプログラミング言語をピックアップし、それらの言語の特徴や、テキストを表示するまでの簡単なサンプルをご紹介します。これからプログラミング言語を勉強しようと考えている学生や新人開発者の方はもちろんですが、すでにプログラミング言語をいくつか覚え、新しい別の言語を学習しようと考えている方にも参考にしていただけると思います。

C

 「C言語」は、古くから本格的なアプリケーション開発用の言語として使われていたプロフェッショナル向けのプログラミング言語で、現代でも変わることなく多くの専門家たちの間で実用されています。アプリケーションの実行基盤が多様化したことによって、全盛期ほどの影響力はないものの、現在使われている他の多くのプログラミング言語の文法にも影響を与えているため、教育からビジネスまで幅広く使われているプログラミング言語です。

 高水準言語でありながら、ポインタによるメモリアドレスの演算などが可能であり、ハードウェアに近い処理も可能となっています。Visual C++など、一部の処理系ではC言語のソースコード内にアセンブリ言語を記述するインライン・アセンブラもサポートしています。このことからも、C言語がマシン語レベルの処理と相性が良いことがうかがえます。OSやデバイスドライバなど、ハードウェアに密着したソフトウェアを書くことにも適しています。

 プロの開発者を目指すならば、早い段階で習得しておくべきプログラミング言語です。Web開発の専門家を目指すのであれば必ずしも必須ではないかもしれませんが、多くのプログラミング言語がC言語の影響を受けているため、C言語を学習することで他のプログラミング言語の理解を深めることができます。

学習レベル初心者~
実行方式コンパイル型
開発対象ネイティブ・アプリケーション(実行可能ファイル)
適用分野アプリケーション開発、ドライバ・OS開発
サンプル01
#include<stdio.h>

int main(void) {
printf("Kitty on your lap");
return 0;
}
 C言語で画面にテキストを表示するプログラムを作ると「サンプル01」のようになります。最初の行は「stdio.h」というファイルをソースファイル上にテキストレベルで組み込む(インクルードする)ことを意味しています。こうした命令はプリプロセッサ・ディレクティブと呼ばれ、コンパイルされる前にテキストレベルで展開されます。このようなソースのテキスト処理はC言語の大きな特徴です。

 「stdio.h」のようなファイルはヘッダファイルと呼ばれ、C言語の標準関数を宣言しています。画面にテキストを表示するためにはprintf関数を使う必要があり、最初の行はprintf関数を使うために必要です。

 C言語では、プログラムの流れは全て関数の中に書かなければなりません。プログラムはmain関数から始まります。

 画面に文字列を表示するといった機能も、全て関数によって提供されています。printf関数は、言語の構文として定められているものではなく、あらかじめ処理系に標準機能として組み込まれている再利用可能なプログラムの部品です。

C++

 「C++言語」は、C言語を発展させたプログラミング言語です。基本的にはC言語と互換性があり、C言語のソースをC++言語としてコンパイルすることが可能です。基本的な文法も、すべてC言語を継承し、オブジェクト指向を実現するための拡張が行われています。

 オブジェクト指向の導入によって、C++言語は大規模アプリケーション開発、組織開発、ソフトウェアの再利用を強化しています。オブジェクト指向開発は、C言語でもある程度実現することが可能ですが、そのためには関数や構造体を十分に抽象化する高度な設計力が必要となります。正しい設計が必要なことはオブジェクト指向型言語でも変わりませんが、C言語に比べ、文法レベルでオブジェクト指向設計をサポートすることでC++言語はより大規模な開発や組織開発に適しています。

 しかしC++言語は、他のオブジェクト指向型言語と比べても複雑な仕様となっています。多重継承やテンプレートといった機能を駆使したライブラリは、熟練の技術者でも時に頭を悩ますものです。初心者が使いこなすことは難しく、オブジェクト指向に対する十分な知識と経験が必要となるでしょう。学習のタイミングとしては、少なくともC言語と、多少の開発経験を経てからがよいでしょう。

学習レベル中級~上級
実行方式コンパイル型
開発対象ネイティブ・アプリケーション(実行可能ファイル)
適用分野アプリケーション開発、ドライバ・OS開発
サンプル02
#include <iostream>

int main() {
std::cout << "Kitty on your lap";
return 0;
}
 C++言語もmain関数から開始されるという点はC言語と同じです。しかし、C++言語では「stdio.h」ヘッダファイルの代わりに「iostream」をインクルードしています。printf関数など、C言語の標準関数をC++言語で使うことも可能ですが、通常はC++用に作られた標準ライブラリを使って出力します。

 「std」という識別子は標準ライブラリが所属する名前空間を表します。名前空間とは、一連の識別子をパッケージ化する目的で使われ、ライブラリの目的や開発組織ごとに分けられます。coutはstd名前空間内にあるグローバルな変数で、標準出力を表すオブジェクトです。このオブジェクトは、シフト演算子<<をオーバーロードしているため、右オペランドに指定した値を標準出力に表示します。

 なお、現在ではC言語の純粋なコンパイラが使われるということは珍しく、多くの処理系はC言語とC++言語を同じコンパイラでサポートします。多くの場合は、オプションやソースコードの拡張子などでC言語とC++言語のコンパイルを切り替えます。
    • good
    • 0

沢山あって分かりやすい物から難しいやつまで。



ありますよ。
    • good
    • 0

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


このQ&Aを見た人がよく見るQ&A