2018年10月20日、第8回目となるイベント「JuliaTokyo」が開催されました。技術計算を得意とする新しい汎用プログラミング言語であるJulia。その知見と共有しJuliaの普及を促すため、実際にJuliaを用いているエンジニアたちが一堂に会し、自身の事例を語りました。プレゼンテーション「覇権を取るパッケージ作成 」に登場したのは、bicycle1885氏。講演資料はこちら パッケージの作り方 次に、どうやってパッケージを作っているのかについてです。パッケージはすべてGitHubで公開しています。 ローカルだけのものもあるっちゃありますけど、基本的に研究関係のものだけです。みんなに使ってもらいたいと思っているものは全部GitHubに公開していて、変更はすべてpull requestフェーズでやっています。masterに直接pushしたりはしません。 Travis CIとかAppve
(2020年8月15日:Julia 1.5で、REPLではlocalスコープ内からglobal変数を参照できるようになりました。Julia 0.6以前の挙動に戻ったことになります) Juliaの変数スコープはMatlabやC言語と少し違うので混乱した話。(2019年8月25日:global/localスコープの説明が公式ドキュメントと違ったので修正しました) たとえば、1から10までの整数の和を求めたいとき、C言語では以下のようにやるかと思います。 #include <stdio.h> int main(int argc, char *argv[]) { int total = 0; int x; for (x=1; x<=10; x++) { total += x; } printf("Total: %d\n", total); return(0); } totalをfor文の内側から更
目次 目次 TL;DR 環境 自作のパッケージ オリジナルパッケージの雛形を作る テストを書く 自分のパッケージの中で他のパッケージを使う場合 Julia 以外のライブラリに依存する場合 UUID GitHub に公開する MyPackage に PATH を通す METADATA.jl に登録する 参考 LICENSE TL;DR 野良パッケージはどんどん作ろう! 新規の METADATA デビューは今は待ったほうが良いかなぁ。。。 環境 Julia Version 1.0.0 Commit 5d4eaca0c9 (2018-08-08 20:58 UTC) Platform Info: OS: Linux (x86_64-pc-linux-gnu) CPU: Intel(R) Core(TM) i5-4460T CPU @ 1.90GHz WORD_SIZE: 64 LIBM: lib
1年以上ぶりのブログ更新ですね。 atsuoishimotoさんのブログ記事で,私のブログ記事が言及されていました。 atsuoishimoto.hatenablog.com 書いてある内容はまさにその通りで,for文を回すこと自体が取り立てて遅いわけではなく,その中で何らかの処理をする際に動的型付け言語であるPythonの性質上避けて通れない処理があり,その処理をfor文の中で何度も繰り返すことで結果としてfor文全体の処理が遅くなるという内容でした。 そうすると,ひとつの疑問として,なぜ同じ動的型付け言語であるはずのJulia言語では同様の処理が高速なのかが気になるところでしょう。この記事ではそのあたりを少し解説しようと思います。 Juliaの型推論 問題となっているコードは,以下のように2つのベクトルの内積を計算するコードです。 function dot(a, b) s = zero
型 Juliaでは、全ての型がAnyの子孫だが、具象型を継承することはできない。 したがって継承用の抽象型と実行用の具象型の区別がはっきりしている。 具象型、抽象型のいずれも他の型(ただし、isbitsがtrueを返す型)をパラメータとして与えることができる。 isbits … 引数の型がImmutableで他の型への参照を含んでいないかぎりtrueを返す。 ::演算子は2つの機能を持つ。 型チェックの機能 … 関数の引数で型を指定すると(例: myfunc(x::Float64))それ以外を受け取った時にTypeErrorを発生させる。 型変換の機能 … 変数のアサインをする際に指定するとconvert()を自動で呼び出す。(例: x::Int8 = 100) 抽象型のミュータビリティ 抽象型の定義はabstract 定義する型 <: 親の型で行う。例: abstract Integer
先ほど何となくstackoverflowのJuliaに関する投稿を見ていたら、なるほど確かに最初は分からないかもしれないなと思う疑問と、それに対する分かりやすいKarpinski氏の回答があったので紹介しようと思います。 stackoverflow.com シンボル(Symbol)とは何か Juliaを使っていると、シンボルというよく分からない型に出会うことがあります。 PythonやRを使っている人にとっては、初めて目にするものかもしれません。 Rubyを使っている人は名前は知っていると思いますが、Juliaではまた違った使い方がされます。 例えば、REPLで:fooと打って、型を確認するとそいつが出現します。 julia> :foo :foo julia> typeof(:foo) Symbol この Symbol とは一体何であって、なんのために使うのでしょうか? ひとことで言えば、
前回の記事に引き続き、Juliaの入門というか、一通りの機能を触りながら記事にしていきたいと思う。 ちなみにJuliaは型(Type)システムがコンセプトのなかで非常に重要なのだけど、そこそこハードな内容になりそうなので、あとで記事にまとめるまではあまり使用せずに説明していく。*1 nullbyte.hatenablog.com ちなみに対象としているバージョンは $ julia --version julia version 0.3.8です。 if文 if i % 15 == 0 println("fizzbuzz") elseif i % 5 == 0 println("buzz") elseif i % 3 == 0 println("fizz") else println(i) end if文は前回紹介した通り、上記のような形になる。 ちなみに、&& (AND演算)や || (OR
apt searchで確認したjuliaと公式サイトにある最新版とでバージョンが違う。古すぎるわけではないけど、最新があるのに使わないのは損している気がする。ということで、最新版を入れる方法を調べた。ppaがちゃんとあるのでそれを使ったらいいようです。 sudo add-apt-repository ppa:staticfloat/juliareleases sudo add-apt-repository ppa:staticfloat/julia-deps sudo apt-get update sudo apt-get install julia 以上。 【追記 2017年7月9日(juliaの最新バージョン0.6)】 上記でversion0.5.2が入るものの0.6が試したいと思ったので、Nightly buildsの方を使う方法を試しました。 Nightly buildsを利用した
【2020-01-05 追記 ココカラ】 この本のこのバージョンに言及・紹介してくださる最近の記事などをたまに拝見して、嬉しいのですが、流石にv0.4 は古いです。。。 v1.3 に対応したバージョンが BOOTH で入手可能なのでよろしければそちらもどうぞ。 erex.booth.pm 【2020-01-05 追記 ココマデ】 Julia Advent Calendar 2015 の初日の記事です。去年に引き続き今年も開催されました。 一昨年からコミケで頒布しているJulia 入門書の最新版を公開しました。 昨年の冬コミに頒布したものを、v0.4.1 について書き直したものです。 Dropbox - JuliaBook-20151201.pdf - Simplify your life ライセンスは CreativeCommons Attribution-ShareAlike 4.0 I
タイトルはいささか誇張です。最後のセクションが一番言いたいことなので、そこまで読んでいただけたら嬉しいです。 きっかけは昨日こんなツイートをしたら割りとRTとFavがあったので、分かっている人には当たり前なのですが、解説を書いたらいいかなと思った次第です。 Pythonの人「for文を書いたら負け。ベクトル化して計算しろ。」 Juliaの人「ベクトル化して計算したら負け。for文書け。」— (「・ω・)「ガオー (@bicycle1885) 2015, 4月 3 Pythonのfor文 PythonやRを使っている人で、ある程度重い計算をする人達には半ば常識になっていることとして、いわゆる「for文を使ってはいけない。ベクトル化*1しろ。」という助言があります。 これは、PythonやRのようなインタープリター方式の処理系をもつ言語では、極めてfor文が遅いため、C言語やFortranで
表題通りなのですが、Juliaには高機能なグラフィックス環境がいくつかあります。その中でもPythonのmatplotlib.pyplotを真似たパッケージがPythonユーザにとってもMatlab/Octaveユーザにとってもとっつきやすいのではないでしょうか。 たとえば以下のようにするとのグラフを描画してPDFファイルに保存してくれます。 using PyPlot t = linspace(0, 1, 1001); x = sin.(t * 2*pi) .* cos.(20 * t*2*pi); plot(t, x) xlabel("Time (s)") ylabel("Amplitude") grid() savefig("output.pdf", format="pdf") もちろんPNGをはじめとする他のフォーマットでも保存できますよ。 【2017-08-07 追記】 黒木玄さん
2015年冬コミ(C89) 版 と2016 夏コミ (C90)版を公開しました。 C89 https://dl.dropboxusercontent.com/u/61544927/JuliaBook-C89.pdf C90 https://dl.dropboxusercontent.com/u/61544927/JuliaBook-C90.pdf C89 版は v0.4.2 対応の入門書で、 C90 版は v0.4.x から v0.5.x への変更点に関する本です。 【2020-01-05 追記 ココカラ】 流石に v0.4 やら v0.5 は古いです。 v1.3 に対応したバージョンが BOOTH で入手可能なのでよろしければそちらもどうぞ。 erex.booth.pm 【2020-01-05 追記 ココマデ】
2013年夏コミ(C84) で出したJulia 本のWeb 公開です*1 https://dl.dropboxusercontent.com/u/61544927/JuliaBook-Vol1-140105.pdf C84 とくらべて一部加筆修正があります。具体的には インストール方法をもう少し細かく書いた コンパイラの指定などビルドオプション 過去バージョンのインストール方法や複数バージョンの共存方法 1ウォーカーの問題において、update! 関数 が書けないことについて訂正 Julia のバージョンアップ(0.2->0.3)に伴う微修正 Julia の起動速度について methods 関数について といったところです。 *1:冬コミにだしたVol.2 では「1/3 頃に公開するよー」とか書きましたが、遅れてしまいました。ごめんなさい。
きっかけ Julia をさわることにした。初見解説記事という謎ジャンルです。 Julia に興味を持ったのは、このへんのいい話を読んだのがきっかけ。プログラミング言語にはもっと物語があるといいと思う。 Why I’m Betting on Julia なぜ僕らはJuliaを作ったか - 丸井綜研 科学技術計算に強みのある汎用言語で、スピードと楽に書ける感じを重視してるって感じですかね。競合するのは R, MATLAB, Python あたりか。若い言語で確かにいいとこ取りっぽさがある。同図像性を持つのが特徴的らしい *1 。 インストール Julia Downloads Windows へのインストール バイナリが配布されていますがインストーラではなく自己解凍ファイルみたいです。パス通しましょう。 OS X へのインストール 公式サイトからバイナリを落とす。dmg をクリックして起動。/A
僕は言語を作るきっかけとか思想とかに興味があるので、日頃から新言語を見つけてはニヤニヤしてるんですが、つい昨日Juliaという新言語のリリース記事を読んで、面白そうだったので、紹介がてら粗く翻訳してみました。 なぜ僕らはJuliaを作ったか(原文:Why We Created Julia) 2012年2月14日(火) | Viral Shah, Jeff Bezanson, Stefan Karpinski, Alan Edelman 端的に言えば、僕らは欲張りだからだ。 僕らはMatlabのパワーユーザーだ。LispハッカーやPython使いやRuby使いもPerlハッカーもいる。髭が生える前からMathematicaを使っていたのもいるし、未だに髭が生えてない仲間もいる。常識的な人にはオススメしないくらい多くのグラフをR言語で描いてきた。そしてC言語は僕らのユートピアだ。 いま挙げた言
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く