タグ

関連タグで絞り込む (214)

タグの絞り込みを解除

programmingとProgrammingに関するxiangzeのブックマーク (395)

  • 低レイヤを知りたい人のための Cコンパイラ作成入門

    はじめに このオンラインブックは執筆中です。完成版ではありません。フィードバックフォーム このには一冊のに盛り込むにはやや欲張りな内容を詰め込みました。書では、C言語で書かれたソースコードをアセンブリ言語に変換するプログラム、つまりCコンパイラを作成します。コンパイラそのものもCを使って開発します。当面の目標はセルフホスト、すなわち自作コンパイラでそれ自身のソースコードをコンパイルできるようにすることです。 このでは、コンパイラの説明の難易度が急に上がりすぎないように、様々なトピックを書全体を通じて次第に掘り下げていくという形で説明することにしました。その理由は次のとおりです。 コンパイラは、構文解析、中間パス、コード生成といった複数のステージに概念的に分割することができます。よくある教科書的アプローチでは、それぞれのトピックについて章を立てて解説を行うことになりますが、そのよう

  • What is Differentiable Programming?

  • https://crates.io/crates/totsu

  • 本物のプログラマはPascalを使わない

    つい3年ほど前まで、ネット上で伝説の投稿「物のプログラマはPascalを使わない」を読むことが出来たのだが、今はマニアックに日語訳を探さないと読めなくなってしまった(原文は今でもネット上で参照可能)。 私の記憶が確かならば、日語訳が月刊『bit』というコンピュータ雑誌に85年頃?に発表されたと思う。当時の私はまだ少年で、プログラミングの師匠(ソフトハウスの正社員)から「読んでみろ」と読ませてもらった記憶があるが、当然半分も理解出来なかった。 そんな私もSEとしては老人と言われるような中年になり、昔を知らない若いエンジニアや若いエンジニア志望の人が非常に多くなった。温故知新と言うが、当時を知る人や、若い人にも読んでもらえれば幸いだ。 はじめにMarch 24, 1983 Real Programmers Don’t Use PASCAL 物のプログラマはPASCALを使わない Ed

    本物のプログラマはPascalを使わない
  • ONNX はチューリング完全だよ、という話 - 兼雑記

    シクシク素数列 Advent Calendar 2018 向けです。 ONNX はニューラルネットのモデルをエクスポートして、別の実装でインポートできたりする、相互運用のためのフォーマットです。複雑なモデルをサポートできるようにと、 Loop とか If とかがあるので、チューリング完全です。ただまあ実際にえぐい使われ方してる例は見たことがなかったので、やってみました。 https://github.com/shinh/test/blob/master/onnx_gen_4949_prime.py が、4か9を含む素数を出力する ONNX モデルを出力するプログラムで、 $ wget https://raw.githubusercontent.com/shinh/test/master/onnx_gen_4949_prime.py $ wget https://raw.githubuser

    ONNX はチューリング完全だよ、という話 - 兼雑記
  • Standardizing on Keras: Guidance on High-level APIs in TensorFlow 2.0

    Posted by Sandeep Gupta, Josh Gordon, and Karmel Allison on behalf of the TensorFlow team TensorFlow is preparing for the release of version 2.0. In this article, we want to preview the direction TensorFlow’s high-level APIs are heading, and answer some frequently asked questions. Keras is an extremely popular high-level API for building and training deep learning models. It’s used for fast protot

    Standardizing on Keras: Guidance on High-level APIs in TensorFlow 2.0
  • コーディングをAIが支援してくれる「Visual Studio IntelliCode」、Javaに対応。GitHubにあるコードを機械学習 - Publickey

    無償のエディタであるVisual Studio Codeの拡張機能として、AIがコーディングをAIが支援してくれる「Visual Studio IntelliCode」(以下IntelliCode)が、Javaに対応したと発表されました。 IntelliCodeはコードの入力や補完において、もっとも適切と思われるコードをコンテキストに即してレコメンデーションをしてくれるというもの。さらにコードレビュー時のアドバイス、問題がありそうな部分の指摘や、コードスタイルと書式の規則の推測もしてくれます。 これまでC#とPythonに対応していましたが、今回新しくJavaにも対応しました。 AI機能はGitHubで100以上スターが付いているオープンソースプロジェクトのコードを用い、コードのパターンやプラクティスなどに関する機械学習が行われたと説明されています。 これによりJava SEやSpring

    コーディングをAIが支援してくれる「Visual Studio IntelliCode」、Javaに対応。GitHubにあるコードを機械学習 - Publickey
  • 「悪い方が良い」原則と僕の体験談|Rui Ueyama

    ソフトウェアの世界には「悪い方が良い」原則という有名なエッセイがある。キレイにレイヤ分けされた一貫性のある良いデザインよりも、一見手抜きっぽい悪いデザインのほうが実は良いときもあるという話だ。この逆説的なデザイン原則を僕は身をもって体験したことがある。それについてちょっと書いてみようと思う。 僕はlldというリンカの現行バージョンのオリジナル作者だ。リンカというのはコンパイラと組み合わせて使うもので、実行ファイルやDLLを作るのに使用される。lldはプロダクトとしてはかなり成功していて、標準のシステムリンカとして採用しているOSがいくつかあったり、GoogleやFacebookなど皆が知っているような大規模サイトの中で広く使われていたりする。 現在のlldは2世代目で、第1世代のlldは僕がプロジェクトに参加する前から存在していたのだけど、数年前にそれを捨てて一から書き直すということになっ

    「悪い方が良い」原則と僕の体験談|Rui Ueyama
  • Coqで学ぶ証明プログラミング! テストだけでなく「証明」で安全性を保証する - エンジニアHub|Webエンジニアのキャリアを考える!

    Coqで学ぶ証明プログラミング! テストだけでなく「証明」で安全性を保証する プログラミング言語「Coq」では、プログラムを「証明」して間違いを防ぐことができます。プログラムの正しさを保証できる一歩進んだエンジニアになりましょう! coqtokyoを主催する今井宜洋さんの解説です。 みなさん、Coqってご存知ですか? プログラムを証明して間違いを防ぐという優れものです。今回はそのCoqについて、coqtokyoという勉強会を主催している今井宜洋がお届けします。 プログラムをただ作るだけではなく、その正しさを保証できる一歩進んだエンジニアになってみましょう! Coqって何? プログラムを「証明する」ってどういうこと? Coqを使ってみよう Coqのインストール方法 CoqIDE:Coqによる証明開発のフロントエンド Coqで関数プログラミング プログラムの仕様を記述しよう 証明開発モード ゴ

    Coqで学ぶ証明プログラミング! テストだけでなく「証明」で安全性を保証する - エンジニアHub|Webエンジニアのキャリアを考える!
  • 私と型システムとポエム

    最近巷では俄に型システムについての言及が増え、型システムポエマーが増えてる気がするので自分もその時流に乗りたい。 完全にポエムだけどなんかあったら随時指摘ください。直します。 TL;DR 言いたいことはまとめると次 型システムは程度問題なのでちょうどいいところを探すべき 型は万能でも強さが正義でもない(だから未だに研究されてる) よく知りもしないくせに計算機科学を侮辱するのはやめろ 予防線 あくまでポエムですので中身はないです 私は型理論専攻で学位はとったものの研究者ではないのであまり信用しすぎないように 型システムの過去 型システムは大まかに次のような利点があるとされてきた(個人的主観) 「異常」なプログラムを検出する仕組み 静的解析による分かりやすいエラーメッセージ 型そのもののドキュメント性 IDEでのcompletionに貢献 最適化に貢献 (数学に正しく裏打ちされたsemanti

  • 漸進的型付け言語の時代に必要なもの - mizchi's blog

    最近では、Gradual Typing、漸進的型付けと呼ばれる型システムを備えた言語(拡張)が増えてきています。 次のようなもの JavaScript: TypeScript / Flowtype Python: mypy / pyre-checker PHP: hack / php-storm flow/pyre-checker/hack と facebook 製が多いですね。 この記事は、それらを使う動機と運用について書きます。この記事の出発点として、 おそらく TypeScript/Flow で発生した問題が後発の言語で発生すると思っており、それらを使う方や、設計する人への提言でもあります。 自分は昔 https://github.com/mizchi/TypedCoffeeScript というAltJS作ろうとして、実装のツラミはなんとなく知ってるつもりです。ホビーレベルで作るもの

    漸進的型付け言語の時代に必要なもの - mizchi's blog
  • halcat.org

    Extensible Effects in Scala Freer Monads, More Extensible Effectsで紹介されるEffモナドをScalaを使って解説します。 View details » スタックレスScala Stackless Scala With Free Monadsを参考にTrampolineモナドやそれをより抽象化したFreeモナドを紹介します。 View details »

  • 確率的プログラミングPyro入門

    はじめまして。eureka-BIチームの小林です。 普段は卓球とスプラトゥーンをやっています。 この記事は eureka Engineering Advent Calendar 2017 — Qiita の17日目の記事です。 16日目は サマーインターン参加者かつSREでインターン中のdatchこと原田くんの 「Pairsのテキストデータを学習させたword2vecを使って、コミュニティを分類してみた」です。 はじめにBIチームでは、様々な数字を分析することで、プロダクトの意思決定に貢献しています。 その中で、データからモデルを作成し、予測を立てるといった業務をすることがあります。 今までは、簡単な線形回帰でのモデル作成に留まりがちで、知識としてもMCMCで止まっていたので、 今後、確率的プログラミングを取り入れたモデリングをしていきたいと思い、最近発表されたばかりのPyroを触ってみま

    確率的プログラミングPyro入門
  • Probabilistic Programming

  • 独習 Scalaz — 独習 Scalaz

    独習 Scalaz これまでいくつのプログラミング言語が羊の衣を着た Lisp に喩えられただろうか? Java は馴染み親しんだ C++ のような文法に GC を持ち込んだ。それまで他にも GC を載せた言語はあったけども、現実的に C++ の代替となりうる言語に GC が載ったことは 1996年には画期的に思われた。やがて時は経ち、人々は自分でメモリ管理をしないことに慣れていった。JavaScriptRuby の両言語もその第一級関数 (first-class function) やブロック構文を持つことから羊の衣を着た Lisp と呼ばれたことがある。S式の同図像性がマクロに適することから Lisp系の言語はまだ面白いと思う。 近年の言語はもう少し新しい関数型言語から概念を借りるようになってきた。型推論やパターンマッチングは ML にさかのぼることができると思う。時が経てば、人

  • なぜ僕らはJuliaを作ったか(翻訳) - 丸井綜研

    僕は言語を作るきっかけとか思想とかに興味があるので、日頃から新言語を見つけてはニヤニヤしてるんですが、つい昨日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言語は僕らのユートピアだ。 いま挙げた言

    なぜ僕らはJuliaを作ったか(翻訳) - 丸井綜研
  • 最高速のfizzbuzzを実装する話

    この前、Twitterで誰かが「コンパイラ言語でFizzbuzz書くなら、コンパイル時に全ての演算を済ませ、実行コストはI/O命令1個になるように最適化しないと」という話をしていた。いいこと言うな、と思ってスルーしていたのだが、体調不良で頭だけ動いている状態だったのでC++11でトライしてみることに。 案ずるより産むが易しというもので、割と簡単に綺麗に書けた。こんな感じ。 char配列を可変長のテンプレート引数として結合していって、文字列定数を生成するというテクニックは実際に使い所があるかもと思った。最近C++書いてないけど。 #include <cstdio> template <typename LHS, int N> struct numstr { template <char... Args> struct append { typedef typename numstr<LHS,

  • Google Colaboratoryが便利・高速で凄過ぎる - Itsukaraの日記

    Googleが研究の一環で提供しているColaboratoryを試してみました。 Jupyterと同じようなGUIPythonのプログラムを実行可能で、GPUも使えます。 Jupyterと同様に、先頭に「!」を書くことで、Linuxのコマンドを実行可能であり、「!pip」「!conda」「!apt-get」などで機能を追加できます。 実行結果をファイルシステム上に保管でき、共有リンクを使って取り出せます。 ただし、12時間経過すると強制終了されて、ファイルは失われます。 しかし、Notebookが動いている仮想マシンにGoogleドライブをマウント可能であり、これにより、実行結果をGoogleドライブ上のファイルとして保管できます。 Deep Learningでは、途中の状態をファイルに保管して、そこからResumeできるようにプログラムを書くことが多いので、12時間で一度強制終了しても

    Google Colaboratoryが便利・高速で凄過ぎる - Itsukaraの日記
  • 週刊 代数的実数を作る

    トゥート Feed このページについて これは、筆者 (@mod_poppo) が代数的実数をプログラミング言語上で実装する過程を、一連の記事として連載するものである。#16 までは「週刊」ということで定期的な連載を目指していたが、それ以降は不定期連載となる。 書籍化 2018年10月8日の「技術書典5」にこの連載を書籍化したものを出しました(加筆訂正あり)。詳しくは 技術書典5に代数的数を作るを出します を参照してください。 BOOTHでPDF版を購入・ダウンロードできます(1000円)。詳しくは以下のリンク先を参照: 「代数的数を作る 多項式の根と因数分解のアルゴリズム」 目次 #0 イントロダクション (2017年10月14日) 計算可能実数 #1 一変数多項式環 (2017年10月14日) 一変数多項式環, ホーナー法, ユークリッドの互除法, 係数膨張 #2 実根の数え上げ (

  • Haskell でのデバッグ手法あれこれ | 雑記帳

    プログラムにバグはつきものです。強力な型システムを備えている Haskell でもそれは同じです。この記事では、 Haskell プログラムのデバッグ手法をいくつか挙げてみます。 なお、使用している GHC は 8.2.2 です。より新しいバージョンで追加されるであろうより便利な機能は、この記事の対象外です。 【2018年2月8日 更新:-fexternal-interpreter, Control.Exception.assert, debug パッケージについて追記】 【2018年5月25日 更新:プロジェクトごとにPreludeを持っていると便利という話を追加】 心構え:処理を分割せよ Haskell は純粋な言語です。IOが絡まない関数であれば、同じ引数に対しては同じ結果が返ってくることが期待されます。 よって、処理を細かく(純粋な)関数に分割し、それぞれ GHCi で動作を確かめ