サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
災害への備え
qiita.com/zacky1972
原文: https://elixir-lang.org/blog/2023/06/22/type-system-updates-research-dev/ 1年前のElixirConf EU 2022で,私たちはElixirの型システムを研究開発する取り組みを発表しました.動画 報告書 訳註: 報告書日本語訳 この研究は,CNRS 上級研究員の Giuseppe Castagna の指導の下で行われており,Guillaume Duboc が博士課程の研究の一環として担当し,さらに私 (José Valim) が指導しています. この記事は,私たちの取り組みの現状と今後の方向性をまとめたものです. 研究完了 研究中の私たちの主な目標は,Elixir の機能のセマンティクス(意味論)のほとんどをモデル化できる型システムを見つけること,さらに互換性がない,または欠けているとわかった領域についてま
大学の授業で講義資料を作ったので,Qiitaにも展開しておきます. この記事シリーズでは,並行・並列プログラミングについて,要(かなめ)となる同期・排他制御の役割をCとJavaを例に簡単なプログラム例を示します.次に同期・排他制御の問題点をCのプログラム例とともに示します.そしてElixir(エリクサー)によって実現されている,全てをイミュータブルにすることによる利点について示します. シリーズ 並行・並列プログラミングと同期・排他制御とイミュータブル性の話〜その1「背景: クロック周波数の停滞とコア数の増加」 並行・並列プログラミングと同期・排他制御とイミュータブル性の話〜その2「スレッドと同期・排他制御」(本記事) 並行・並列プログラミングと同期・排他制御とイミュータブル性の話〜その3「同期・排他制御の2つの問題点」 並行・並列プログラミングと同期・排他制御とイミュータブル性の話〜その
大学の授業で講義資料を作ったので,Qiitaにも展開しておきます. 背景: クロック周波数の停滞とコア数の増加 コンピュータはクロック周波数に同期して計算をします.おおむね1秒間にクロック周波数の数で示されるだけの数の機械語命令を実行できると考えると良いです.たとえばクロック周波数が1GHzであれば,1GHz=1,000MHz=1,000,000(百万)kHz=1,000,000,000(10億)Hzですので,1秒間に1,000,000,000(10億)個の機械語命令を実行できるというような感じです.もちろんこれは概算です. いわゆるヘネパタ本(J. L. Hennessy & D. A. Patterson: Computer Architecture: A Quantitative Approach, 6th edition. Morgan Kaufmann, 2017; 邦訳 中條・
はじめに このテキストではSIMD(シムディー)について解説します。 GPUの動作原理 最近のCG,3Dグラフィックというのは数学的な演算を非常に多く行うものなので,CPUにも勝る計算能力を備えたGPUが一般的に出回るようになってきました。3Dグラフィックでは,整数や浮動小数点の演算を非常に数多く並行して行う必要があることから,最近のGPUにはCPU以上の並列処理機能が備わっています。 上図↑は少し古いグラフィックボードですが,これらの中にGPUが入っています。 SIMD と MIMD 一般的なGPUの並列プログラミングのモデルは,SIMD (シムディー)と呼ばれるものです。SIMD は Single Instruction, Multiple Data の略で,直訳すると,単一の命令列で複数のデータを処理するということになります。GPUは同じような計算を異なるオブジェクトに対して行うこと
この記事はElixir Advent Calendar 2020の25日目の記事です。 昨日は @piacerex さんの「クラウドの外でエッジサーバを作るためのElixir技術スタック(+立てた予定を仲間と実現できるようになる思考パターン)」でした。 Elixir Advent Calendar 2020がAdvent Calendar Ranking 2020のプログラミング言語部門のLGTM数順位で2位にランクインしましたね。スゴイことです! さて25日目最終日の今日は,予定を変更して「大学でElixirを教えた話」にしました。これは「大学でRustを教えた話」を見て「書かねば!」と思い書きました。 Elixirを大学で教える理由 私は北九州市立大学で教育・研究に従事しています。プログラミング言語処理系,ソフトウェア工学,組込みソフトウェア,プログラミングなどを教えています。 研究で
前回の「各種メモリ/ストレージのアクセス時間,所要クロックサイクル,転送速度,容量の目安」は,思わぬ反響を呼んだので驚いております。 今回の記事は,その記事の活用編にあたる記事です。コンパイラのコード最適化を設計・実装する時に重要な観点を,つらつらと書いてみます。 原則: 高速なメモリ・ストレージは容量が小さい 前回の記事の結論を再掲します。 メモリ/ストレージの種類 アクセス時間 アクセス開始までの所要クロックサイクル 最大転送速度 容量
各種メモリ/ストレージについて,2023年時点で標準的なアクセス時間,所要クロックサイクル,転送速度,容量を,各種カタログスペックを参考にまとめてみました. レジスタ(レジスタファイル) 最近のCPUのレジスタ(register)のアクセスは,通常CPUの1クロックサイクルで完了します.2023年時点では,標準的なCPUのクロック周波数は,1〜4GHz程度のオーダーです.1GHzは1秒あたり10億回,すなわち1クロックサイクルは1ナノ秒です. したがって,2023年時点では,レジスタには0.25〜1ナノ秒程度でアクセスできると言えます. レジスタのメモリ容量は,レジスタファイルに存在するレジスタ数に依存します,これは命令で明示的に指定できるレジスタ数という解釈もありますが,レジスタ・リネーミングのようなプロセッサ技術を用いると,実際にはより多くのレジスタ数を持っていると解釈することもできま
英語の技術文書を早く読むにはどうしたらいいでしょうか。 注意: この記事の目的は「技術文書について」「早く大意を読み取る」ことを目的としています。 技術文書でないもの,例えば,小説や詩には当てはまりません。 技術文書を読む場合でも,例えば,「論文を批判的に読むとき」や「扱いが悪いと故障する可能性のあるハードウェアのマニュアルを読むとき」には精読すべきですので,この記事は当てはまりません。 頻出英単語を覚える もし「英語の技術文書を早く読みたい!」と悩んでいるとしたら,多くの場合,英語の技術文書を読むのに,英単語をほぼ全て辞書を引いている,という状況だったりするのではないでしょうか? もしそうでしたら,正攻法となる主な対策は,頻出英単語を覚えるということだと思います。 例えば英語で書かれた論文があったとします。聞いたところによると, 70%は頻出英単語トップ1500(だったと思います。うろ覚
私の書くQiita記事の中で,英語に関する記事は,いいね改めLGTMを得やすいようですね。次の3つの記事はどれもLGTMが100を超えました。 parcel に Pull Request を送って merge されるまでの顛末記〜生まれてはじめて国際的に OSS への貢献をしてみたら,とても歓待された ソフトウェア技術者のための英語習得法の案 続・ソフトウェア技術者のための英語習得法の案 今回私が書く記事は,そこまでたどり着かない人向けの記事です。 前提としては,4技能の傾向が,reading > writing > speaking > listening という感じなんだけど,reading, writing にも大して自信がない,という人が当てはまります。 基本的な考え方 まず,reading, writing に自信をつけるところから始めるのが良いと思います。目標としては次のような
はじめに RISC-V の最も基本となるインストラクション・セット・アーキテクチャ(ISA)モジュールである RV32I: RISC-V 基本整数ISA について紹介します。 アセンブリコードの種類 GNU のアセンブラである gas の場合,アセンブリコードは大きく次の3つに分かれます。 種類 例 説明
はじめに RISC-V(リスク・ファイブ) というインストラクション・セット・アーキテクチャ(ISA)は,知る人ぞ知るという感じで,最近急速に注目を集めています。え,聞いたことないですか? そうですか。。。 ISA といえばx86とかARMとかが有名で,これらがデファクトスタンダード(事実上の標準)みたいな感じになっている中で,なぜ RISC-V なんていう,聞いたこともないようなISA について,わざわざこれから学ぶ必要があるんでしょう? 実は,私,RISC-Vの噂を聞きつけて,RISC-V原典を読んで,軽く感動を覚えたんですよね! この記事では私がなぜ RISC-V に対して感動を覚えたのかについて紹介することで,RISC-Vについて学ぶ意義について語ってみたいと思います。 感動理由その1: なぜこのように設計したのか,理由や意図が明示されているから RISC-V原典を読んでいくと,設
はじめに みなさんは,プログラミングが得意ですか,苦手ですか? 苦手だという人は,もしかしたら,コンピュータがどのように動作するのかを具体的にイメージできていないのかもしれませんね。 本記事は,コンピュータの動作原理について,初学者がどのように習得したらいいかのヒントを提示します。 前提知識 「コンピュータの基本構成と動作原理〜知識編」のうち,コンピュータの基本構成に登場する言葉をすでに知っているという前提でお話しします。 コンピュータの動作原理を習得する方法 コンピュータの動作原理を習得する方法は,少なくとも次の4通りあることを確認しています 関連文献 山崎 進ほか: "直観的な理解を促進するワークショップ「コンピュータの動作原理」の授業設計", パーソナル利用技術学会論文誌, Vol.9 合併号, 2015年3月 先行オーガナイザ方式 ロールプレイング・ワークショップ方式 仮想機械シミ
この記事は「Hastega @ Lonestar ElixirConf 2019」 から一部転載しております) 私にとって劇的に効果的だった英語習得方法をご紹介します。 フォニックス 多読 海外技術交流のSlack 番号は取り組む順番です。 1,2 については,既存のリソースがいろいろあるので,活用しましょう。この2つを教えてくれるトレーナーが身近にいると,本当に助かります! 私の場合は身近に相談できる人がいたのが幸いでした。 3については,「parcel に Pull Request を送って merge されるまでの顛末記〜生まれてはじめて国際的に OSS への貢献をしてみたら,とても歓待された」に経緯を書いています。(Shawn は元気かな。。。parcel Slack から Shawn が姿を消して以来,parcel からすっかり遠のいてしまいました。。。) ソフトウェア技術者の皆
(この記事は「Elixir Advent Calendar 2018」25日目です) 現在,Elixir は,Erlang VM (アーラン ブイエム) という仮想機械(VM)上で動作します。Erlang VM はもともと Erlang というプログラミング言語のために開発された並行処理が得意な VM で,Elixir の他にもいくつかのプログラミング言語が Erlang VM 上で動作します。 近年,Erlang VM を再実装しようという動きがにわかに盛んになってきたようです。 AtomVM: https://github.com/bettio/atomvm : AtomVM: how to run Elixir code on a 3 $ microcontroller Rustler の作者,hansihe の作りかけの Rust ベースの Erlang コンパイラ https:/
(この記事は「FPGA Advent Calendar 2018」17日目です) すみません,技術ポエムです。 「FPGA Advent Calendar 2018」16日目は @youkis さんの「GUINNESS + Intel OpenCLでディーブラーニング(1)」でした。 私は基本的にソフトウェア屋さんですが,以前より FPGA の潜在的可能性には大いに期待していました。そこで,FPGA に関連する共同研究をスタートさせています。 今回は,その共同研究者による研究構想がまだ間に合っていないので,今後ご期待を...!!! ということなのですが,せっかく「FPGA Advent Calendar 2018」がオープンになっていたので,RISC-V のソフトコアを FPGA に載せてプロセッサアーキテクチャとプログラミング言語処理系の研究してみたいというポエムを書くことで,名乗りを上
(この記事は「機械学習工学 / MLSE Advent Calendar 2018」の9日目です) 「機械学習工学 / MLSE Advent Calendar 2018」8日目は @watanabe0621 さんの「初めてのMLシステム開発とデプロイ」でした。 「機械学習工学 / MLSE Advent Calendar 2018」9日目の今日は,並列プログラミング言語 Elixir(エリクサー)とそれによる機械学習ツールチェーンについてご紹介します。 @arutema47 さんの「2018年版 機械学習ハードウェアのState of the Artを考える ~CPU, GPU, TPUを添えて~」にも関連する話も言及したいと思います。 Elixir に注目する理由 私たち fukuoka.ex が Elixir に注目する理由を説明します。 今後,IoT の急速な普及などの理由でデータ
parcel に Pull Request を送って merge されるまでの顛末記〜生まれてはじめて国際的に OSS への貢献をしてみたら,とても歓待されたJavaScriptparcel 2017年末に parcel に Pull Request を送ってから,年を越して2018年初に merge されました。 Resolve Dependency correctly if the target asset is URI-encoded #401 (Issue of parcel-bundler/parcel on GitHub) ※ この記事は parcel に Pull Request を送って merge されるまでの顛末記〜生まれてはじめて国際的に OSS への貢献をしてみたら,とても歓待された〜実験室 〜 Lab in ZACKY's Laboratory を転載しました。
Javascript 界隈の進化は早く,webpack 全盛時代から今度は parcel だと! さっそく parcel を使ってみました。Bootstrap を使えるようにしてみました。ちょっと残念なことに,完全に parcel だけではうまくいかず,scss の変換で gulp を併用しています。 この記事は下記の2つの記事を再構成しました。 Middleman v4 で parcel を使ってみる Middleman v4 + parcel で Bootstrap を使う 前提: Middleman と yarn の設定 Middleman で Slim を使いたいので次のように設定しました。 $ gem install middleman $ gem install slim $ middleman init (プロジェクト名) -T yterajima/middleman-sli
GitHub Pages (Jekyll) のローカルプレビュー環境を Docker で手軽に実現しよう (Macの場合)JekyllGithubPages はじめに Jekyll による GitHub Pages は私にとってとても良いブログ環境です。 Markdown が使えます。なので,自分好みのテキストエディタでサクサク記事をかけます。 無料で使えます。 WordPress みたいなセキュリティの心配をしなくて済みます。 ウェブのフロントエンド(HTML, CSS, Javascript)の実験ができます。 音声ファイルのような大きいファイルを置くこともできます。(なので自作Podcastをやっています) でも,Jekyll のローカルプレビュー環境を構築したり保守したりするのはハードル高いです。当初の方法は gem, rbenv, bundle といった Ruby 環境構築ツール
コンピュータの基本構成と動作原理に関わる専門用語を解説します。新たに覚える言葉が多いですが,頑張ってついてきてください。 1.コンピュータの基本構成 コンピュータは基本的には次のような構成をしています。 それぞれの構成要素は次の通りです。 CPU は,Central Processing Unit (中央処理装置)の略で,プロセッサ (processor) ともいいます。プログラムにしたがってさまざまな数値計算や情報処理,機器制御などを行います。コンピュータの司令塔の役割を担っています。レジスタ (register) は,CPUの中にある小規模な記憶装置です。詳しくは後で説明します。 メモリ (memory)は,主記憶装置とも呼ばれます。メモリは アドレス (address: 番地)と データ (data) で表現されます。データは文字や画像などの何かを数値のまとまりとして表現したものです
1. はじめに このテキストではC言語で書かれた簡単な階乗プログラムを元にコンパイラがアセンブリコードを生成する時の考え方を示しました。 2. C言語のソースコード C言語で書かれた階乗のプログラム(元にするプログラムという意味で ソースコード と言います)を次に示します。まずはトレースしてみて動作を確認します。とくに どの経路をたどるかと 変数の値がどのように変化するかに注目してください。 unsigned int fact(unsigned int x) { unsigned int y; if(x == 0) { y = 1; } else { y = x * fact(x - 1); } return y; } void main(void) { unsigned int p; p = fact(3); ... } なお,unsigned int は符号なしの整数という意味です。
このページを最初にブックマークしてみませんか?
『@zacky1972のマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く