「大人の教養・知識・気付き」を伸ばすブログ

一流の大人(ビジネスマン、政治家、リーダー…)として知っておきたい、教養・社会動向を意外なところから取り上げ学ぶことで“気付く力”を伸ばすブログです。目下、データ分析・語学に力点を置いています。今月(2022年10月)からは多忙につき、日々の投稿数を減らします。

MENU

Juliaを基礎からゆっくりと(その10/X)

 \mathrm{R}\mathrm{Python}\mathrm{C}言語関係など覚えたいもの、覚えるべきものはたくさんある一方で、注目が集まっているから、やってみたい。ということでプログラミング言語としての\mathrm{Julia}を学んでいく。

2. Juliaの言語機能

2.9 C言語の呼び出し

 \mathrm{C}で書かれた既存のソフトウェア資産を用いたい場合や\mathrm{Julia}では実現が難しいレベルのチューニングが施されたソフトウェアを使いたい場合を考える。

2.9.1 Call構文

 \mathrm{Julia}には\mathrm{C}の関数を呼び出すのに使う\mathrm{ccall}という特別な構文が用意されている。

# ccall
ccall(Cの関数, 戻り値の型, 引数の型,引数1,引数2,...)

# C言語のsin関数を呼び出す
# 標準ライブラリ以外(zlib:ライブラリ名はlibz)の関数compressを呼び出すには、(:compress,"libz")と書く
ccall(:sin, Cdouble, (Cdouble), 1.0) # Cの標準ライブラリにあるものは関数名のみで呼び出す
2.9.2 ポインタの受け渡し

 \mathrm{C}の関数には引数や戻り値にポインタを使うものがある。
 たとえば\mathrm{char} *\mathrm{getenv(const\ }\mathrm{char} *\mathrm{name)}と宣言されている。この関数は引数も戻り値も\mathrm{char}型へのポインタである。\mathrm{Julia}にはこれに相当する\mathrm{Cstring}があり、また戻り値のポインタには\mathrm{unsafe}_\mathrm{string}関数を用いて変換できる。

ccall(:getenv, Cstring, (Cstring,), "HOME") # 環境変数HOMEを取得する
unsafe_string(ans)
2.9.3 構造体の受け渡し

 \mathrm{C}\mathrm{struct}で定義された構造体と\mathrm{Julia}\mathrm{struct}\mathrm{mutable\ struct}で定義された複合型のメモリレイアウトには互換性がある。

2.10 外部プログラムの呼び出し

 \mathrm{Julia}には既にあるプログラムを\mathrm{Julia}から呼び出して実行する機能がある。

 \mathrm{Julia}で外部プログラムを実行するには、バッククオートを用いるたとえば\mathrm{ls}コマンドならば`\mathrm{ls}`で呼び出し、\mathrm{run}関数で実行させる。

2.11 パッケージ

 パッケージは、ソフトウェアを再利用可能な形で配布する単位である。

 \mathrm{Julia}には標準でパッケージ管理ツールが同封されている。パッケージ管理には、\mathrm{Julia}\mathrm{PERL}で]と入力することで行う。
 \mathrm{st}と入力すると、現在インストールされている外部パッケージの状態を表示する。コミュニティが公開しているパッケージをインストールするには、\mathrm{add}コマンドを用いる。

プライバシーポリシー お問い合わせ