TL;DR アドホック多相は型クラスじゃなくても実現できる。 Haskell, Rust, Scalaでは後付けで拡張できるけど、それはアドホック多相の本質ではない。 アドホック多相(Ad hoc polymorphism) ウィキペディアは辞書ではないのはわかっていますが、それでも 英語版WikipediaのAd hoc polymorphismのページを参考に挙げておきます。 ざっくりまとめると 型階層上は関連性のない複数の型の引数に適用できる、多相的な関数 引数の型に応じて、個別の(アドホックな)実装にディスパッチされる と、それだけのこと。 「引数の型によって別の実装にディスパッチされるって、それメソッドのオーバーロードと何が違うの」ってことなんですけど、特に違いはありません。同じです。とはいえ、プログラミング言語によって、実現方法や使い勝手は違います。そのあたりのことを、いくつか
FPGA design tutorial by SpinalHDL for embedded software engineers. 先日、SpinalHDL というハードウェア記述言語を簡単に紹介しました。最終的な目標は RISC-V を使って FPGA 上に SoC を設計実装することですが、目標が高すぎるのでハードルを下げます。まずは、VexRiscv を実装しているハードウェア記述言語 SpinalHDL を(少し)勉強し、簡単な論理回路を FPGA(具体的には TinyFPGA BX)上で動作させてみたいと思います。 少しだけ前書き(tl;dr;) 私は組込ソフトウェアの設計が専門で、HDL も FPGA も門外漢です。なぜいま FPGA か、というのは先日書きましたが、基本的な考えとしては、設計や実装には常に適切なツール、言語を利用したい、ということがあります。たとえば、最近流
Hedgehog automatically generates a comprehensive array of test cases, exercising your software in ways human testers would never imagine. Generate hundreds of test cases automatically, exposing even the most insidious of corner cases. Failures are automatically simplified, giving developers coherent, intelligible error messages.
UCB(University of California, Berkeley)の論文を教えてもらい、読んでみることにした(実際には大量にGoogle翻訳した)。 この論文は"Generating the Next Wave of Custom Silicon"という論文である。 著者から分かる通り、RISC-VとChiselの思いっきり関係者である。 Generating the Next Wave of Custom Silicon Borivoje Nikolić, Elad Alon, Krste Asanović, Electrical Engineering and Computer Sciences, University of California, Berkeley, CA, USA https://ieeexplore.ieee.org/xpl/mostRecentIss
ChiselはScalaをベースにしたハードウェア記述言語で、より高位な記法を使ってハードウェアを設計しようという考え方を持っている。 しかし、どうしてもVerilogを使いたい場合、あるいはある部品は既存のVerilogで記述されたものを使いたいと思うときがある。 例えば、Chiselを使えばメモリも記述することができるが、実際にはSRAMに置き換えたい場合であったり、FPGAで推論しやすくするためにVerilogで書いたモジュールに置き換えたい場合がある。このような場合に、どのようにChiselを記述するのかについて調査した。 ChiselにVerilogを埋め込むためのBlackBoxモジュール ChiselにVerilogを埋め込むための方法は2つ存在する。 ブラックボックスのモジュールを作成し、モジュール内にインラインでVerilogを記述する。 ブラックボックスのモジュールを作
Chiselの勉強を本格的にやっているのだが、教材として良いものを見つけた。Chisel-Bootcampというものだ。 github.com Chiselの基礎から、チュートリアル風に、サンプルを交えながら、途中でExerciseも出てくるのでそれをこなしながら進めていく。 本来はJupyter Notebook上でやるものらしいが、手元にJupyterの環境を作るのが面倒だし、どうせならLinux上で実行できる環境が欲しかったのでCUI上で実行できるリポジトリを作ってそちらで試している。 一応Chapter-1とChapter-2は適当に流してみた。Exerciseもやってみたが分からないものは模範解答を調べてしまったし、最適化も不十分なのであまり優良なコードではないかもしれない。 とはいえ、Chiselをフル活用して回路をデザインするためにはどうしたらよいのかしっかり解説してあるので
Kojo is our open source learning environment that is available as a desktop-app for Linux, Windows, and Mac, and as a web-app that runs on any modern internet-browser. Kojo is used world-wide – in homes, schools, universities, and social-sector projects. It is also a part of government curriculums – for various coding-aligned subjects in grades 7 to 10. You can learn more about some of these usage
森田が紹介するのは CPU をアジャイルの流儀で開発しようと主張する An Agile Approach to Building RISC-V Microprocessors, 向井が紹介するのは Go の次世代バージョン管理システムのデザインを解説した Go & Versioning です。感想などはハッシュタグ #misreading か hello@misreading.chat にお寄せください。 An Agile Approach to Building RISC-V Microprocessors RISC-V RISC-V Foundation | Instruction Set Architecture (ISA) Design of the RISC-V Instruction Set Architecture Intel and the x86 Architecture
SpinalHDL is: A language to describe digital hardware Compatible with EDA tools, as it generates VHDL/Verilog files Much more powerful than VHDL, Verilog, and SystemVerilog in its syntax and features Much less verbose than VHDL, Verilog, and SystemVerilog Not an HLS, nor based on the event-driven paradigm Only generates what you asked it in a one-to-one way (no black-magic, no black box) Not intro
新しい記事を書きました. 本記事を包含します. amaya382.hatenablog.jp Dottyで何ができるようになるのかとその使い方を簡単にまとめたいと思います. 理論的な部分は深掘りしません. 以下ちょっと長め. 調べきれてない点も多々あるので, 抜けや間違いがあったら教えてください. そもそもDottyとは Dependent Object Types (DOT) に基づいた新しいScalaコンパイラです. たまにScala3とか呼ばれたりもしています. DOT計算理論の詳細は省きます (まとめるほど理解できていないとも言う…). 現行のコンパイラと比べ, コンパイラサイズの減少・コンパイル速度向上・様々な機能追加の他, コンパイラ自体の開発安定性も増すパワフルなアップグレードが期待できます. 現行のScalaとの互換性は切れていますが, 勿論重要な機能がなくなるといったこと
What’s Skinny? Skinny is a full-stack web app framework built on Skinny Micro. To put it simply, Skinny framework’s concept is Scala on Rails. Skinny is highly inspired by Ruby on Rails and it is optimized for sustainable productivity for Servlet-based web app development. What’s more, Skinny’s components are basically independent from Skinny app environment. If you prefer using only Skinny ORM, V
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く