タグ付けされた質問 「languages」

12
HPC用のC ++とFortran
私の計算科学のPhDプログラムでは、ほぼすべてC ++とFortranで作業しています。一部の教授は他の教授よりも一方を好むようです。特定の状況において、どちらが「優れている」のか、一方が他方より優れているのか疑問に思っています。
56 hpc  fortran  c++  languages 

4
「ジュリア」科学計算言語プロジェクトはどれくらい成熟していますか?
現在使用しているC ++およびPythonの(部分的な)代替として、数値/シミュレーションモデリングプロジェクトに使用する新しい言語の学習を検討しています。ジュリアに出会いました。それが主張するすべてを行うと、高レベルの科学計算ライブラリコード(PyPlotを含む)にアクセスでき、Cと同様の速度でforループを実行できるため、すべてのプロジェクトでC ++ と Pythonの両方を置き換えることができます。また、他の言語のいずれにも存在しない適切なコルーチンのようなものからも恩恵を受けるでしょう。 しかし、それは比較的新しいプロジェクトであり、現在バージョン0.xであり、日々使用する準備が整っていないというさまざまな警告(過去のさまざまな日付に投稿されています)が見つかりました。したがって、この段階でこの言語を学ぶために時間をかけることを個人的に検討する必要があるかどうかを評価するために、プロジェクトのステータスに関する情報(2014年2月、または回答が投稿されるたび)が欲しいです。 Juliaプロジェクトに関する特定の関連する事実に焦点を当てた回答をいただければ幸いです。他のプロジェクトでの経験に基づく意見にはあまり興味がありません。 特に、Geoff Oxberryのコメントは、Julia APIがまだ流動的であり、コードが変更されたときに更新する必要があることを示唆しています。APIのどの領域が安定しており、どの領域が変更される可能性があるのか​​、これがどの程度であるかを知りたいと思います。 私は通常、線形代数(固有問題の解決など)、多くの変数を含むODEの数値積分、PyPlotおよび/またはOpenGLを使用したプロット、および低レベルCスタイルの数値計算(たとえば、モンテカルロシミュレーション) )。ジュリアのライブラリシステムは、これらの分野で完全に開発されていますか?特に、APIはこれらのタイプのアクティビティに対して多かれ少なかれ安定していますか、それともJuliaの新しいバージョンにアップグレードした後、私の古いコードが壊れる傾向があると思いますか? 最後に、現在ジュリアを深刻な仕事に使用するかどうかを決定する際に検討する価値がある他の問題はありますか?

4
Fortranを高速化するものは何ですか?
Fortranは数値プログラミングにおいて特別な場所です。確かに他の言語で優れた高速のソフトウェアを作成できますが、Fortranはその時代にもかかわらず非常に優れたパフォーマンスを維持します。さらに、Fortranで高速プログラムを作成するのが簡単です。私はC ++で高速プログラムを作成しましたが、ポインターエイリアシングのようなことに注意する必要があります。したがって、これには理由があり、非常に技術的な理由が必要です。コンパイラがさらに最適化できるからでしょうか?技術的な詳細を知りたいので、別の言語を使用する場合はこれらのことを考慮に入れることができます。 たとえば、私は知っている-またはそのように考えている-1つのことは、標準ではポインターが常にメモリ内で連続していることを指定しているため、メモリアクセスが高速になることを意味します。コンパイラにフラグを付けることで、C ++でこれを行うことができると思います。このように、Fortranが優れていることを知るのに役立ちます。したがって、別の言語を使用している場合、これを模倣できます。

12
Octaveを使用してMATLABプログラミングを学習することはできますか?
この質問は、Computational Science Stack Exchangeで回答できるため、Cross Validatedから移行されました。 7年前に移行され ました。 私は自分でいくつかの研究/分析を行うことができ、またオンラインで見つけたMATLABスクリプトなどを研究/修正できるようにMATLABプログラミングを学びたいです。 ただし、問題は、MATLABを購入する余裕がないことです。私が聞いたところによると、GNU OctaveはまったくMATLAB互換です。しかし、Octaveの課題は、ドキュメントが非常に少ないことです。 そのため、MATLABは非常に高価です(-ve)が、多くの優れたドキュメント、チュートリアル、およびオンラインスクリプト(+)があり、Octaveは(理解できるように)包括的なドキュメントなどがなくても(ビールのように)無料です。 Octaveをダウンロードしてインストールすることを考えていますが、MATLABドキュメント(およびスクリプト)を使用して作業を進めています。OctaveとMATLABにはいくつかの違いがあることを認識しています-私が解決しようとしているのは、その違いが(Octaveを使用してMATLABを学習する)努力を妨げるほど大きいかどうかです。 建設的なフィードバックを歓迎します。

3
科学的計算のための型破りなプログラミング言語の使用[終了]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 注:次の投稿には物議を醸す意見が含まれている可能性があります。そのため、これらは私の意見に過ぎず、誰かを怒らせる意図はないことに注意してください。 私は1999年頃から何らかの形でプログラミングを行っています。最初はRを使用し、その後2004年頃に主にPythonに切り替えました。 MCMCなどを含む多くの科学アプリケーション、たとえばシミュレーションでは、RとPythonの両方が遅すぎるため、高速化する必要があります。これを行う通常の方法は、CまたはC ++で拡張することです。RとPythonの両方で、RのC APIをC ++で使用し、Boost PythonライブラリをPythonで使用して、これを行いました。 ただし、さまざまな理由から、この組み合わせは理想的なソリューションではありません。プログラミング、特にアルゴリズムで重要なことは何ですか?もちろん関連する表現力とスピード。言語の表現力が高ければ高いほど、より速く書くことができます。 1)表現力に関する限り、RもPythonも科学的なアルゴリズムを書くのに理想的ではありません。それらは、基礎となるアルゴリズムに密接にマッピングしません。ただし、どちらもC ++よりもかなり優れています。 2)Pythonで書くのが好きです。Pythonは快適な言語ですが、上記のようにアルゴリズム作業には理想的ではありません。ただし、速度の問題のためにPython / C ++の組み合わせで作業しなければならない場合、このミックスを使用するのはかなり快適ではなくなります。通常起こることは、私が最初にPythonで書くことです。そして、うまく機能しているものを見つけたら、それが遅すぎることをしばしば発見します(主観的な価値が遅すぎるため)。それから、C ++での書き換えに不合理な時間を費やすか、遅さに我慢するかの決定に直面します。後知恵では、特に得られるスピードアップが予測不可能であるので、私はしばしばスローネスに我慢した方が良いかもしれないと感じます。また、2つの間のBoost Pythonインターフェースはメンテナンスの大きな頭痛の種です。そして、このように2つの非常に異なる言語のコードを接着すると、気が散ります。Boost Pythonへの批判は意図されておらず、想像できるほど強力なインターフェースであり、ほとんどの場合に機能します。 今、時間とリソースが無制限の理想的な世界では、これらの問題はどちらも大きな問題ではありません。しかし、私が取り組んだ科学プロジェクトでは、次のような経験をしました。 プロジェクトに協力者がいるかどうかにかかわらず、私は常にコンピューティングの大部分を行うようになります。合計5つの重要なプロジェクトでは、1つのプロジェクトに1人の参加者しかいませんでした。その一人は体重を増やす以上のことをしました。彼は私と同じかそれ以上をしました。ただし、複数のコラボレーターを含むプロジェクトを含む他のすべてのケースでは、すべての計算作業を(実質的に)行いました。私は最高の協力者に恵まれていないと言うことができますが(怠mixtureと無能の混合物のようです)、この状況が将来変わる可能性があるかどうかは私には明らかではありません。 計算科学の仕事は多大な労力を要するものであり、共同研究者の行動を変えることができなければ、仕事のやり方を変えることができます。最も重要な改善は、より迅速に物事を成し遂げることです。ここで私は主な考慮事項に至ります。つまり、言語を正統性の低いものに切り替えることが役立つかもしれないということです。過去の研究に基づいて、可能性の順に最も可能性の高い候補は、Common LispとOcamlです。私はこれについて何年も考えてきましたが、最近はもっと真剣に考えています。 私の知る限り、科学計算にCLまたはOcamlを使用している人はほとんどいません。このサイトを検索すると、CL(私は私のもの)とOcaml(私のもの)の2つの参照が見つかりました。私は長年にわたり、フリンジに取り組んでいる冒険心のある人々といくつかの励ましの連絡を取り合ってきました。2008年に、Tamas K. PappによるPeter Seibelの「Practical Common Lisp」(私が所有)の書評に出会いました。これは、私がネット上で出会ったLispの科学的コンピューティングに関する数少ない言及の1つであったため、私の注意を引きました。私はタマスに手紙を書きました。タマスはすぐに助けと励ましで答えました。彼を引用する 私のプログラミングの生産性は、おそらくLispで10倍に増加しましたが、それは起こるのに約1年かかり、まだ学んでいます(しかし、2か月後にはかなりうまくいきました)。したがって、タイムクリティカルな作業をしている場合は、切り替えを延期してください。 これらのことを知っているのは私だけではなく、Lispで科学計算を行う人もいます。 彼にはブログとGitHubページもあります。 (2006年12月)私が簡単に連絡を取った別の人は、放射線腫瘍学の文脈でCommon Lispを使用したIra Kaletでした。 おそらく、Lispで科学計算を行う他の人もいますが、私は誰も知りません。 人々がCLで言及する最も一般的な問題は、ライブラリーの欠如です。これは、汎用コンピューティングでは重大な問題ですが、特にアルゴリズムのゼロからの実装では、科学コンピューティングではそれほど問題にならない場合があります。具体的には、ほとんどの場合、確率分布関数、多次元配列ライブラリ、およびC ++およびPython標準ライブラリにあるマップ、セット、リストなどのコンテナの基本セットを含む基本的な数学ライブラリで取得できます。 私はCLについてよりもOcamlについてはあまり知りませんが、代わりにそれを捨てました。おそらく非常に高速で、フランスの研究者による無料の実装が1つあり、科学計算用のML言語ファミリーの中で最も実行可能なもののようです。 結論として、他の人がこれを経験したことがあるのか​​、もしあれば、どんな考えを持っているのか疑問に思っています。 編集:私は主に、私が上で議論した問題の文脈で、直接体験に興味があります。たとえば、以前にPythonとC ++(またはRとC ++)を使用していて、より曖昧な言語に移行した場合、私はあなたの経験について聞いてみたいと思います。
22 languages 

5
コンピュータプログラミングの学部課程を教えるとき、どの言語を使用すればよいですか?
学部レベルの学生に「コンピュータープログラミング入門」というタイトルのコースを教えるつもりです。私は少し混乱しています。計算物理学では、科学者はC / C ++またはPythonまたはFortran、CUDAなどを使用します。何を使うべきですか?私はあなたがあなたの生活の中でいつでも新しいプログラミング言語を学ぶことができることを知っていますが、私はそれらをすべての基本的なプログラミング概念とOOP概念を後で詳しく説明するために賢明な選択です。

6
計算科学のためにどの言語を学ぶべきですか?
この投稿を改善したいですか?引用や回答が正しい理由の説明など、この質問に対する詳細な回答を提供します。十分な詳細がない回答は、編集または削除できます。 私は計算科学の概念にまったく慣れていないので、良い出発点を探しています。 客観的に最良の言語はないことは理解していますが、計算科学に関しては間違いなく強力で目立つ存在を持つ言語を学びたいと思っています。 まず、グラフィカルな表現/シミュレーションが必要な原子結合と相互作用に関連するモデリングに傾倒していました。 一部の言語は他の分野よりも優れている傾向がありますか(つまり、物理学と純粋数学)。または、他の要因に基づいて言語を選択していますか? Fortranという名前がたくさん出回っているのを聞きました。 提案?
11 languages 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.