並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 92件

新着順 人気順

計算機科学の検索結果1 - 40 件 / 92件

計算機科学に関するエントリは92件あります。 プログラミングprogramming学習 などが関連タグです。 人気エントリには 『コグニカル』などがあります。
  • コグニカル

    コグニカルは、ツリー構造で知識が整理された学習サイトです。

    • ハーバード大のプログラミング講座を日本語化 無料で学べる「CS50.jp」公開

      米ハーバード大が無償公開しているプログラミング入門講座を日本語に訳したWebサイト「CS50.jp」が公開された。プログラミング教育ベンチャーのLABOTが、「コロナ禍などで大学のキャンパスの環境が不安定になる中、多くの学ぶ意欲がある学生に、良質な教材に母語でアクセスしてほしい」と翻訳作業を進めてきたという。 公開したのは、ハーバード大コンピューターサイエンス学部のデビッド・J・マラン教授が、無料オンライン教育サービス「edX」で公開している人気講座「CS50」のうち、コンピュータサイエンス入門と、Python・JavaScriptを使ったプログラミング講座を日本語訳したもの。YouTubeの英語教材とあわせ、日本語のテキストで学べる。 CS50は、非営利で再配布・改変可能なクリエイティブ・コモンズライセンス(CC BY-NC-SA 4.0)で公開されており、非営利なら改編や再配布が可能だ

        ハーバード大のプログラミング講座を日本語化 無料で学べる「CS50.jp」公開
      • ハーバード大のコンピュータサイエンス講座「CS50」の日本語化が完了し、無償公開

          ハーバード大のコンピュータサイエンス講座「CS50」の日本語化が完了し、無償公開
        • プログラマだったら当然知ってるよね?という知識一覧

          2019年11月11日追記 ただのタイトルで煽ってるだけの記事に半年経っても未だに大量のアクセスがあるので追記しておきます。 ここで言いたいことは、「プログラマならコンピュータサイエンスを勉強してると役に立つよね」、ということ だけ です。 この一文以上に有用な言葉は以降の文章では出てきません。みなさんの時間を無駄にしないために注意書きをしました。 それでも良いという人は読んでみてください。 Twitterで「〇〇ができるという人が面接に来たけど、『じゃあXXXやYYYって知ってます?』というと知らないという人が多いんだよねぇ」とかいうツイートを見かけて、私はXXXやYYYってのを知らなかったので調べた見たところ、常識とまでは言えない概念だったり、名前は知らなくても誰もが知ってる概念だったり、むしろもっと良いアプローチがあるのではという思想だったりでなんだかなぁと思っていたところ、半日くら

            プログラマだったら当然知ってるよね?という知識一覧
          • CS50 for Japanese: コンピュータサイエンスの入門 – 当ウェブサイトは、Creative Commons ライセンスに基づいて管理されています。

            お知らせ: 2022/9/1 CS50 を活用した非営利/協賛企業による「コロナ学生支援」プロジェクトを実施中 ▼ 学生の方へ:CS50 の学習(履修証明書の取得)を一緒に取り組むプロジェクト CS50日本語版の翻訳コントリビューターである CODEGYM が主催する、非営利/無償のプロジェクト「CODEGYM Academy (外部リンク)」は、昨年に続き2022年度(春/秋)も、キャリア選択を控えた学生に対し、以下の企業の協賛により無償で17週間のプログラミング教育カリキュラムを提供します。 CODEGYM Academy 協賛企業(2022年) https://codegym.jp/academy/ 今年度のエントリーは締め切りました — ようこそ! このページは、ハーバード大学 CS50 の日本語版翻訳プロジェクトのページです。当サイトのドメインに掲載されているコンテンツは、Cre

            • 機械学習モデルを作成する - Training

              Microsoft Learn では、対話的な方法で、従来の機械学習の概要を理解することができます。 これらのラーニング パスは、ディープ ラーニングのトピックに移行するための優れた基盤にもなり、各自の生産性を向上させます。 最も基本的な従来の機械学習モデルから、探索的データ分析やカスタマイジングのアーキテクチャまで、ブラウザーを離れることなく、概念的内容や対話型の Jupyter Notebook を簡単に把握することができます。 知識と興味に応じて自分のパスを選択してください。 オプション 1: 完全なコース: 機械学習のためのデータ サイエンスの基礎 ほとんどのユーザーには、このパスがお勧めです。 これには、概念の理解を最大限に高めるカスタム フローを備えた、他の 2 つのラーニング パスと同じモジュールがすべて含まれています。 基になる概念と、最も一般的な機械学習ツールでモデルを構

                機械学習モデルを作成する - Training
              • コンピュータサイエンスが気になるプログラマに勧める書籍リスト - Rubyist Magazine 第61号 巻頭言

                コンピュータサイエンスが気になるプログラマに勧める書籍リスト Rubyist Magazine 第 61 号をお届けします。 (今回は内容に合わせて文体を変えております。ご了承ください。) さて、コンピュータサイエンス(以下「CS」)は知らないけど日々プログラミングしている、というプログラマの方はたくさんいらっしゃるかと思います。 そんな方でも、ふとCSを知ってる方がいいのかなとか、CSも知らないとまずいのかな……などと思い、改めて勉強してみたいけどとっつきが悪いとか、うっかり手にとったCSの教科書が何を言ってるかさっぱりで10秒で閉じた、という方もいらっしゃるかと思います。 それでもCSが気になるので、「本腰を入れて勉強をする前に、どういうことをやってるのか眺めてみたい」くらいの温度感の方向けに、CSに隣接するジャンルで、職業プログラマや趣味プログラマの人なら読めそうな書籍のリストを作っ

                • JavaScript入門: 基礎知識をGIFアニメで分かりやすく解説 -総まとめ

                  JavaScript QuestionsのLydia Hallie氏の「JavaScript Visualized」シリーズすべての翻訳を完了したので、まとめて紹介します。 JavaScriptエンジンの仕組みをはじめ、イベントループ、スコープチェーン、プロトタイプ継承、非同期処理、ジェネレータ関数、Hoisting(巻き上げ)など、GIFアニメを使用して詳しく解説しています。 シリーズ7本すべてと、プラス1として楽しく学べるクイズもあります。 JavaScript イベントループの仕組み JavaScriptでエラーの原因となるHoisting(巻き上げ)の仕組み JavaScriptのスコープチェーン・変数参照の仕組み JavaScriptエンジンの仕組み JavaScript プロトタイプ継承の仕組み JavaScriptのジェネレータ関数とイテレータの仕組み JavaScriptの

                    JavaScript入門: 基礎知識をGIFアニメで分かりやすく解説 -総まとめ
                  • はじめに - アルゴリズムとデータ構造大全

                    はじめに このドキュメントは,主に競技プログラミングで出題される問題を解く際に利用できるアルゴリズムやデータ構造をまとめたものです.特定の問題にはあまりフォーカスしないため,問題を解く際の考察の仕方等の内容はありません.詳しく,正確に,分かりやすく書いていこうと思っています. このドキュメントは執筆途中です. 想定する読者 C++を用いたプログラミングに慣れている方を読者として想定しており,C++言語の仕様や,文法にはあまり触れません.また,計算量という用語についても説明しません.ただし,償却計算量など,計算量の見積もりが複雑なものについては必要に応じて説明します. コードについて このドキュメントで登場するコードは,可読性向上のため,以下のようなコードがファイルの先頭に記述してあることを前提としています.また,適切な問題を用いてコードの検証がなされている場合は,コード周辺にのように,検証

                    • 🙂コンピュータサイエンスと魔法のYコンビネータ

                      こんにちは、上杉周作と申します。米国在住のプログラマ兼ブロガーです。2019年に日経BP社から発売された『ファクトフルネス』の共訳者でもあります。詳しいプロフィールとブログはこちら。 『ファクトフルネス』 本稿「コンピュータサイエンスと魔法のYコンビネータ」は、プログラミング未経験者向けの、邪道なコンピュータサイエンスの入門書です。どういう意味かは、すぐに説明しますね!

                        🙂コンピュータサイエンスと魔法のYコンビネータ
                      • Linuxの基礎用語を完全理解するためにエンジニアが作成した「10のミニプロジェクト」とは?

                        by Adam Harvey Linuxを利用していると「シェル」や「grep」「プロセス」といった言葉を目にします。エンジニアのCarl Riis氏はそんなLinuxの基礎用語の意味や仕組みをさまざまなウェブサイトから学習し、「10のミニプロジェクト」を作成することでスキルを向上させたとして、その詳細を公開しています。 Getting better at Linux with 10 mini-projects - carltheperson https://carltheperson.com/posts/10-things-linux GitHub - carltheperson/10-things-linux: Getting better at Linux with 10 mini-projects. https://github.com/carltheperson/10-thing

                          Linuxの基礎用語を完全理解するためにエンジニアが作成した「10のミニプロジェクト」とは?
                        • 文系大学生が機械学習を0から始めて9か月でKaggle銀メダルを獲得するまで - Qiita

                          今回自分は0から始めて9か月でコンペで銀メダル(6385分の249位,top4パーセント)を獲得できました。 自分の今までの流れをおさらいしていきます。 それまでの僕のスペック 数3と行列はほぼ何も分からない プログラムはrubyとjavaはそこそこに書ける、pythonは知らん 勉強の流れ 12月末 機械学習を始めると決心、とりあえず何をやればいいかよく分からないがpythonが必要らしいのでprogateでpythonをやってみる 1月 数学が必要らしいので、行列と微分積分について1から学んでみる。今から考えると、行列の基礎をさらえたのは良かったですが、それ以外はこの時間は絶対いらなかったなと考えています。 微分積分 行列 2月 Udemyで多くの講座を受ける、詳細は以下の記事にまとまっています https://qiita.com/HayatoYamaguchi/items/c8051

                            文系大学生が機械学習を0から始めて9か月でKaggle銀メダルを獲得するまで - Qiita
                          • コンピュータ・サイエンスやりたくなって1年ちょっとコツコツやってる/やったことたち - でこてっくろぐ ねお

                            私は経済学部出身でWeb系エンジニアをやっているわけだが、コンピュータ・サイエンスはずっと学びたいと思っていた。 そんな中、Turing Complete FMというpodcastに出会ってその気持ちが更に強くなり、ここ1年くらい、子育ての合間にコツコツコツコツとコンピュータ・サイエンス周りのことを学んでいた。このエントリでは、学んでいたこと、及び子育ての合間にどうやって時間を捻出しているのかをまとめた。 目次: やっている/やったこと コンピュータサイエンス系のPodcastを聞く コンパイラを書く(ペンディング中) OSの作り方を学ぶ RustでOSを書く(ペンディング中) Rustを学ぶ プログラミングコンテスト系のサービスをやってみる LeetCode Atcoder 計算理論の初歩を学ぶ 白と黒の扉を読む 大学の教科書で使われているような書籍で学ぶ システムのパフォーマンスについ

                              コンピュータ・サイエンスやりたくなって1年ちょっとコツコツやってる/やったことたち - でこてっくろぐ ねお
                            • 2020年現在のNewSQLについて - Qiita

                              Disclaimer 当記事はNewSQL開発ベンダの技術ブログや各種論文、その他ニュースサイト等の内容を個人的にまとめたものです。 そのため、理解不足等に起因する誤解・誤認を含む可能性があります。更なる理解が必要な方はリファレンスに挙げた各種文献を直接参照下さい。技術的な指摘は可能であれば取り込み修正しますが、迅速な対応はお約束できません。 NewSQLの解説は二部構成 当記事は前編でNewSQLの概要編となる。 全体の目次は下記である。 NewSQLとは何か NewSQLのアーキテクチャ NewSQLとこれまでのデータベースの比較 NewSQLのコンポーネント詳解 1章から3章までの内容を当記事で解説する。 4章はさらに詳細な技術的解説となり、後編の「NewSQLのコンポーネント詳解」で記述している。 こちらも合わせて一読いただきたい。 1. NewSQLとは何か NewSQLとは、海

                                2020年現在のNewSQLについて - Qiita
                              • 解析不能!30年以上前のレトロゲームから謎の「自動生成アルゴリズム」が見つかる - ナゾロジー

                                Point ■レトロゲームには容量不足や技術的制約を解決するため、現代の我々から見ても解析できない謎の技術が使われていることがある ■今回、ATARI2600から82年に発売されたゲーム『Entombed』に、全くロジックが不明の迷路自動生成プログラムのコードが発見された ■迷路の壁を完全ランダムに配置すればクリア不能になってしまうが、このプログラムがなぜ通行可能なパターンで迷路を生成しているかは、まったくの謎だという ほんの数十年前、コンピュータ関連の技術が飛躍的に向上しました。 特にデータ容量の向上はめざましく、現代の若い人たちにとって容量の単位は「ギガ」が標準になっています。 しかし初代のスーパーマリオの全ゲーム容量は40KB、初代ドラゴンクエストの全容量は64KBでした。 ちなみにこの記事のトップに貼られている画像の容量は97KBなので、スーパーマリオの2.4倍、ドラゴンクエストの

                                  解析不能!30年以上前のレトロゲームから謎の「自動生成アルゴリズム」が見つかる - ナゾロジー
                                • 現代の僕「コンピュータが生まれた歴史知りたい」 - Qiita

                                  TL;DR コンピュータの歴史も何も知らなかった私が、「ありがとう、先人たちよ」と言えるぐらいまでコンピュータの歴史を調べたので共有したいと思います。 最初の動機 「コンピュータってどうやって動いてるんだろう」 あなたは、この疑問に自信を持って答えられますか? そして、仮にコンピュータを知らない人類がいたとして、「コンピュータとは何か」を説明できますか? 私はできませんでした。 もちろん、コンピュータを使うことはできます。 こうして、キーボードをカタカタを打つと、見慣れた文字となってディスプレイに映すことが出来ます。 しかし、「使えること」と、「それが動く原理を説明すること」 は途方もなく大きな壁で隔てられています。 この記事では、コンピュータが動く原理を、その歴史をたどることで探っていきます。 コンピュータの歴史をまとめつつ、 「コンピュータってどうやって動くの?」 に答えられるようなも

                                    現代の僕「コンピュータが生まれた歴史知りたい」 - Qiita
                                  • WindowsがLinuxより優れている点は何ですか? (OSの設計に関する質問であり、利用者の使い勝手の話ではありません) 。

                                    回答 (6件中の1件目) 私はWindowsのカーネルを熟知しており、Linuxのカーネルについてはそれなりに知っています。 意外に思われるかもしれませんが、類似点の方がずっと多く、違いは少ないです。私がよく言う違いの1つは、LinuxのI/OモデルはUNIXから継承した同期式が基本で、WindowsのI/OモデルはVMSから継承した非同期式が基本であるということです。WindowsのI/Oリクエストの設計は、同期式と非同期式のI/Oを美しく管理できる優れた設計になっています。Linux(及び普通のUNIX)でも非同期のI/Oは可能ですが、そのための統一された仕組みはありません。これは...

                                      WindowsがLinuxより優れている点は何ですか? (OSの設計に関する質問であり、利用者の使い勝手の話ではありません) 。
                                    • Linux ファイルシステムを理解したい - Qiita

                                      ]# cat /etc/redhat-release CentOS Linux release 7.7.1908 (Core) ]# uname -a Linux localhost.localdomain 3.10.0-1062.1.2.el7.x86_64 #1 SMP Mon Sep 30 14:19:46 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux ファイルシステムとは何か? データを管理/操作するための仕組み。 ファイルとディレクトリで構成されていて、/ を基点とした木構造になっている。 # ls -l / 合計 56 lrwxrwxrwx. 1 root root 7 8月 25 01:17 bin -> usr/bin dr-xr-xr-x. 6 root root 4096 9月 29 15:51 boot drwxr-xr-x. 19

                                        Linux ファイルシステムを理解したい - Qiita
                                      • 自動テストに限界を感じた私がなぜ形式手法に魅了されたのか - 若くない何かの悩み

                                        長らく自動テストとテスト容易設計を生業としてきましたが、最近は色々な限界を感じて形式手法に取り組んでいます。 この記事では、既存の自動テストのどこに限界を感じてなぜ形式手法が必要なのかの私見を説明します。なお、私もまだ完全理解には程遠いため間違いがあるかもしれません。ご指摘やご意見はぜひ Kuniwak までいただけると嬉しいです。 著者について プログラマです。開発プロセスをよくするための自発的な自動テストを支援する仕事をしています(経歴)。ここ一年は R&D 的な位置付けで形式手法もやっています。 自動テストの限界 自動テストとは 私がここ数年悩んでいたことは、iOS や Web アプリなどのモデル層のバグを従来の自動テストで見つけられないことでした。ただ、いきなりこの話で始めると理解しづらいと思うので簡単な例から出発します。 この記事でいう自動テストとは以下のようにテスト対象を実際に

                                          自動テストに限界を感じた私がなぜ形式手法に魅了されたのか - 若くない何かの悩み
                                        • コンパイラが作ったバイナリをつなぎ合わせるプログラム 「lld」の作者が語る、リンカの仕組み

                                          Kernel/VM探検隊はカーネルや仮想マシンなどを代表とした、低レイヤーな話題でワイワイ盛り上がるマニアックな勉強会です。植山氏は、制作中のリンカである「mold」について発表しました。全2回。前半は、リンカの概要について話しました。 LLVMのリンカ「lld」オリジナルの作者 植山類氏:植山類です。今僕が作っているmoldというリンカについて発表します。 今回の発表の概要です。リンカが何かを知っている人はそんなにたくさんいないと思うので、まず説明します。次に、「mold」のポイントは速いことなのですが、速いと何がうれしいのかを説明します。そのあと、どれくらい速いのかを説明した上で、どう実現されているのか、概要を紹介します。詳細になると何時間あっても終わらないので、かなりハイレベルな話をします。 自己紹介のスライドを入れていませんが、僕はリンカを何度か作ったことがあって、LLVMのlld

                                            コンパイラが作ったバイナリをつなぎ合わせるプログラム 「lld」の作者が語る、リンカの仕組み
                                          • 『みんなのデータ構造』でデータ構造の基礎を学んだ - valid,invalid

                                            データ構造とアルゴリズムの学習の一環として『みんなのデータ構造』を読んだ。これまでで最も良いデータ構造の学習になった。 みんなのデータ構造 作者:Pat Morin発売日: 2018/07/20メディア: 単行本(ソフトカバー) 日本語訳がWebで公開されているので気になる方は無料で読める。が、著者や訳者や出版社応援の意味も込めて購入すると良いと思います。また、ラムダノート社のサイトから買うと紙書籍と電子書籍のセットがお得。 内容 データ構造とアルゴリズムに関連する本はアルゴリズム寄りのものが多いが、データ構造に焦点を当て続けていることが本書の特色。 内容の依存関係 p.21より 大学の教科書のように、正確性を優先したハードコアな内容。 アルゴリズムの内容も少しだがある。「11章 整列アルゴリズム」ではそれまでの章で学んだデータ構造がどのように使われるかを一瞥でき、「12章 グラフ」では深

                                              『みんなのデータ構造』でデータ構造の基礎を学んだ - valid,invalid
                                            • 【一問一答】マヅコの知らない「異常検知」の世界 - Qiita

                                              これから異常検知を勉強される初心者、中級者の方のために一問一答集を作ってみました。 実際にあった質問も含まれますが、ほとんどの質問は、私が勉強しながら疑問に思ったことです。 なお、各質問には私の失敗談を添えております。皆さんは私のような失敗をしないよう 祈っております(^^)。異常検知に特化した内容となっておりますので、ご了承ください。 初心者の方向け 勉強の仕方編 Q:異常検知を勉強したいのですが、何から手をつけて良いのか分かりません。 A:書籍を買って読むのがおススメです。 最初、私はネット情報で勉強していました。しかし、それにも限界があります。 ところが、書籍(入門 機械学習による異常検知)を買って読んだところ、かなり知識を 得ることができました。最初から、書籍を買っていれば、一年くらい得することができたのに... と思うこともあります(^^; ただ、こちらの本はディープラーニング系

                                                【一問一答】マヅコの知らない「異常検知」の世界 - Qiita
                                              • なぜ型ファーストで考えるのか - 貳佰伍拾陸夜日記

                                                How do you imagine a building? You consciously create each aspect, puzzling over it in stages. Inception 型なし言語に馴染みはあるものの型付言語をいざ使ってみたらどういう気持ちで書いたらいいのかわからなかったと同僚から相談があり, それをきっかけにして社内の勉強会で以下の話をしました. よく型なし vs. 型付の文脈では「型を書くのは面倒だ」「安全の方が大事だ」「でも面倒だ」「それは型推論を前提にしていないからだ」などの議論になりがちな気がしますが、これはあくまで「計算ありきの型」を考えているからで, 「型ありきの計算」だと全く見え方が違います. 「型はある種の仕様」とおもえば, 型ファーストであることと, 型なし言語でテスト駆動開発(TDD)するときに最初にテストを書くこととは, 同じ

                                                  なぜ型ファーストで考えるのか - 貳佰伍拾陸夜日記
                                                • コンピュータサイエンスのすべての分野に精通していると何が嬉しいか

                                                  2019-07-05 社内LT会で発表した内容です。

                                                    コンピュータサイエンスのすべての分野に精通していると何が嬉しいか
                                                  • スクリプト言語を舐めてはいけない|shi3z|note

                                                    おれはハッカーだ。 なので、ハッカーではない人種と呑むのが苦手である。 たとえば「ITエンジニア」と自称するような人たちだ。 当然だが、ITエンジニアと自称する人はハッカーではない。 ITエンジニアと言う言葉はスコープが広すぎていちいち細かい説明を聞かなければならない。 これが厄介なところである。 あるとき、友達の家で飲み会をすると言われ、誰が来るの?と聞いたら知らないIT関連会社のエンジニアたちだという。 エンジニアと呑むと喧嘩しちゃうので断ったのだが、いろいろあっていくことになってしまった。 するとやっぱりこんなはなしをしていた。 「やっぱ私もRubyみたいなスクリプト言語なんか卒業してコンパイル言語やんなきゃ。処理速度がね…」 「コンパイル言語って?」 「TypeScriptとかJavaとかC#とか」 「それ、中間コード言語じゃねえか。なんの意味があるんだ。YARV知らないのか」 ま

                                                      スクリプト言語を舐めてはいけない|shi3z|note
                                                    • 入門 シェル実装

                                                      開発者にとってシェルが必要不可欠なものであることは論を俟ちませんが、当たり前の存在すぎてこれがどのように実現されているのかを知る機会はあまりないと思います。本トークでは、シェルがどのように実現されているのかを、実際にシェルを実装する過程を通じてお話しします。 ※ もともとのトークのタイトルは「入門 シェル」でしたが,わかりやすさのため「入門 シェル実装」にタイトルを変更しています.

                                                        入門 シェル実装
                                                      • 網羅的で読みやすい必読本。「教養としてのコンピュータサイエンス講義」カーニハン|TAKASU Masakazu

                                                        教養としてのコンピューターサイエンス講義 今こそ知っておくべき「デジタル世界」の基礎知識www.amazon.co.jp すばらしく良い本なのは間違いない。プリンストン大学の講義なので網羅的だ。この網羅的は、ハードウェアからコンピュータ関連の知財、更にはコンピュータ教育や個人情報保護はどうあるべきかまでというドメインが広くて全部カバーしてるという網羅性と、「ソフトウェアはもともと数学と考えられてたので特許が適用されなかった」みたいな、それぞれの知識内の範囲がすごく広いことの両方を指す。つまり、広くて深い。 事例が新しいし、内容が親しみやすいから若い優秀な人が書いた本かと思ったら、著者はC言語のカーニハン先生!!名前とWikipediaを見直してしまった。 なにしろこんな大御所が、ここまで細かく網羅的な、押し付けがましくなく書いてある入門書を出してるのはすごい。本のタイトルにカーニハンが腕組

                                                          網羅的で読みやすい必読本。「教養としてのコンピュータサイエンス講義」カーニハン|TAKASU Masakazu
                                                        • 表紙 - 本物のC

                                                          このサイトは「本物の C 言語」について学習する機会の提供を目的としています。 「本物の」とはつまり、 標準規格(仕様)が C 言語をどういうものとして定めているか C プログラムが実際に CPU をどう動かすか という二つの意味合いに於いてです。 どうも巷間にはその辺りを気にせず何となくで書かれた資料が多い様なので、このサイトにより少しでも世界が最適化される事を期待します。 権利について 当然ですがこのサイト全体は著作権法により保護されています。法と良心に則って御利用下さい。 連絡はcontact<アット>real-c.infoまで。

                                                          • はじめに - Rustで始める自作組込みOS入門

                                                            この本は組込みシステムやOSのような低レイヤーシステムの開発経験がないプログラマーのような人が、自作OSをはじめるため解説本です。 著者自身、本職はウェブプログラマーですが、趣味で組込みOSの自作をしています。この本はそのノウハウ集のようなものです。 このような低レイヤーシステムはC言語で開発されることが多いのですが、今回はRustを使います。 RustはC言語と比較して、様々なモダンな機能やツール郡を取り揃えている上に、C言語の長所である直接のメモリ制御ができ、パフォーマンスも高いとして組込みシステム開発でつかえるとして注目されています。 Rustそのもの解説は控えめですが、低レイヤーシステム開発特有のテクニックは必要に応じて解説します。 想定読者 ある程度はプログラミング経験があることを前提としています。 また、レジスタやメモリなどコンピュータアーキテクチャに関する基礎用語の説明もちゃ

                                                            • UNIXができた頃のコンピューター事情

                                                              UNIXができたころのことを話そうとするとその頃のコンピューター事情が今とだいぶ違うのでなかなか話が伝わりません。そこでそのころ(1970年ごろ)のコンピューター事情について、正確性はちょっと置いておいて、分かりやすいようにざっくりと説明したいと思います。 アポロ11号の月面着陸が1969年なのでその辺りの映画などに出てくるでかいコンピューターを想像するとイメージしやすいかもしれません。 ## 大雑把な分類 初期のUNIXが開発されたころ(1970年ごろ)に使われていたコンピューターは主に下記の二種類でした。 - メインフレーム - ミニコン(ミニコンピューター) このころ主に"コンピューター"といえば今で言う"メインフレーム"のことを指していました。 マイコン(マイクロコンピューター)/パソコンは1980年ごろ普及しました。しかしパソコンでUNIXを動かすのが実用的になったのは1990年

                                                                UNIXができた頃のコンピューター事情
                                                              • 現代のコンピュータに�おける自作OS事情

                                                                現代のコンピュータにおける 自作OS事情 2019-06-29 hikalium @ Hackers Champloo #hcmpl

                                                                  現代のコンピュータに�おける自作OS事情
                                                                • 自作OSとかLinuxカーネルについて役立った本 - Qiita

                                                                  はじめに なんらかの理由によってOSやOSカーネルに興味を持つ人は多々います。しかし、その次のステップとしてどんな本を読めばいいんだろうと思っている人はこれまたいっぱいいます。そこで、長年Linuxカーネルにかかわってきた筆者がこれまでに読んでよかったと思うものについてここの列挙しました。紹介するのは本だけであって、記事は省いています。もう一点、筆者が書いたものは省いています。 OSそのものに興味を持った人は、その後に興味の方向が次のような二つに分かれることが多いと筆者は考えています。 オレオレOSを作りたい 既存のOSを改造したい この仮説をもとに、それぞれについて筆者がかつて真面目に読んだ本の中から「自作OS」および「Linuxカーネル」というキーワードでよかったものを挙げておきます。Linux以外の既存OSについては語れるほどの知識はないので書いてません。 筆者について 本の良し悪し

                                                                    自作OSとかLinuxカーネルについて役立った本 - Qiita
                                                                  • Linuxカーネルで学ぶC言語のマクロ - 覚書

                                                                    はじめに 本記事は電子書籍版もあります。 linuxカーネルはC言語のマクロを駆使して書かれています。それらのうち、凝ったマクロになじみの無い人には初見では意図がわからない&わかってみれば面白いであろうものをいくつか紹介いたします。対象読者は、C言語のユーザだけれども、マクロは定数定義くらいにしか使わないというライトなマクロユーザです。 マクロを使用する場所に依存するエラーを防ぐ 次のマクロは、二つの引き数の値を置換するだけの単純なものです。 #define swap(a, b) \ do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0) 注目すべきはマクロの定義全体を囲んでいるdo { ... } while (0)という表記です。初見の人には何のことかわからないと思います。考えられる最も単純な定義から遡って、なぜこ

                                                                      Linuxカーネルで学ぶC言語のマクロ - 覚書
                                                                    • フルスクラッチから作って理解するQEMU (Rust編) - FPGA開発日記

                                                                      モチベーション なぜRustを選んだか? 私はQEMUは「アーキテクチャエミュレーション界のLLVM」だと思っている QEMUが高速な理由:TCG Binary Translation ゲスト命令(RISC-V) → TCG → ホスト命令(x86)の処理をRustで作ろう RISC-Vの命令をフェッチしてデコードする RISC-Vの命令をTCGに変換する TCGをx86に変換する 実装結果 Binary Translation実行を高速化するための様々なテクニック BasicBlock分まで複数命令をまとめて変換 TCG Block Chainingの実装 評価結果 TB Lookup and Jumpの実装 評価結果 まだ完成していないところ 一部の最適化はまだ未実装となっている ゲストアーキテクチャがx86のみとなっている。TCGによる複数プラットフォーム対応として、まずは環境のそろ

                                                                        フルスクラッチから作って理解するQEMU (Rust編) - FPGA開発日記
                                                                      • 『データ指向アプリケーションデザイン』を読んだ - hydrakecat’s blog

                                                                        『データ指向アプリケーションデザイン』を読んだ。たいへんおもしろかった。技術書でこんなにわくわくしながら一気に読んだのは『Androidを支える技術』以来かもしれない。 データ指向アプリケーションデザイン ―信頼性、拡張性、保守性の高い分散システム設計の原理 作者: Martin Kleppmann,斉藤太郎,玉川竜司出版社/メーカー: オライリージャパン発売日: 2019/07/18メディア: 単行本(ソフトカバー)この商品を含むブログを見る 本書はソフトウェアシステムの設計について「データ」という観点からまとめたものだ。もちろんデータベースは登場するが、それだけでなくJSONなどのデータ形式、RPC、メッセージキュー、全文検索インデクス、バッチ処理やオンライン処理も等しく「データ」という観点から扱っている。特筆すべき点は、理論だけでなく実際のミドルウェア製品を引き合いに出しつつ具体例を

                                                                          『データ指向アプリケーションデザイン』を読んだ - hydrakecat’s blog
                                                                        • 「強いメモリモデル」と「弱いメモリモデル」 - yamasaのネタ帳

                                                                          Apple M1についての面白い記事を見かけて、久しぶりにメモリモデル屋(?)の血が騒いだのでブログを書く。 note.com 強いメモリモデル 現代のCPUアーキテクチャでは、x86(64bit, 32bitどちらも)が「強いメモリモデル」を採用しており、それ以外のメジャーなCPUが「弱いメモリモデル」を採用している。この「強いメモリモデル」「弱いメモリモデル」について、まずおさらいしておこう。 以下のように、2つの変数a, bに対して異なるCPUコアが同時にアクセスしたとする。 int a = 0; int b = 0; CPU1: a = 1; b = 1; CPU2: int r1 = b; int r2 = a; (上記はC言語に似た疑似コードを用いているが、実際は機械語命令になっていると考えてほしい。つまり、CPU1は変数a, bの示すメモリアドレスに対するストア命令を実行して

                                                                            「強いメモリモデル」と「弱いメモリモデル」 - yamasaのネタ帳
                                                                          • Kaggle Expertになるまで勉強したことを全て書く - Qiita

                                                                            はじめに こんにちは。Yuki | Kagglerです! 先日、Shopeeコンペの順位が確定して銀メダルをいただき、晴れてCompetition Expertになることができました。区切りがいいのでここまで取り組んできたことをまとめてみました。 ※ 6/28追記:Amazonのリンクが切れていたので貼り直しました! プログラミング&機械学習を始めて一年、ようやく Kaggle Expertになることができました!! 行列も正規分布も知らず、ターミナルなんて触ったこともない状態からのスタートでしたが、ようやくここまで来ました。 ここまで来れたのは偏にこれまで関わってきた皆様のお陰です。これからも頑張ります!! pic.twitter.com/kMkaFhqhU9 — ユウキ | Kaggler (@Yuki_Kaggler) May 12, 2021 この記事の対象者 Kaggleをやって

                                                                              Kaggle Expertになるまで勉強したことを全て書く - Qiita
                                                                            • 大学でRustを教えた話 - 未完成な論を綴るブログ

                                                                              このブログ記事は、Advent Calender 2020, Rust 3、23日目の記事となります。自分は現在大学で教員をしていまして、セキュリティ系の研究室に所属しています。現在はセキュリティの講義を担当しており、そこでRust言語を教えているため、その内容を紹介しようと思います。 はじめに 皆さんご存知のようにソフトウェアの脆弱性は今でも大きな問題となっていますが、それを完全ではないにしろ根本から解決するための技術的手法として型システムが注目されています。型システムの考え自体は古くからありますが、最近ではRust言語が登場し、OSなどいわゆる低レイヤーなソフトウェアも型システムの恩恵を預かることができるようになってきました。SMTソルバや定理証明などと言った難しい(かつ面白い)手法でC言語やC++言語で書かれたソフトウェアを解析する方法もありますが、セキュアソフトウェアを語る上では、

                                                                                大学でRustを教えた話 - 未完成な論を綴るブログ
                                                                              • 数値計算の研究をしている学生が"数値計算に潜むとんでもないリスク"について話してみる - Qiita

                                                                                筆者は「精度保証付き数値計算」という分野で研究をしている大学院生です. 「数値計算は分かるけど」「精度保証付き数値計算?ナニソレ?」という方がほとんどだと思います. 「精度保証付き数値計算」の研究自体は30年ほど前から盛んに行われていますが,世間に浸透しているとは言えない状況です. 自分の研究分野が世間に知られていないのは何か少し寂しい感じがするので「精度保証付き数値計算」を少しでも広めるべく記事を投稿することにしました.(シリーズ化するかも知れません) 本日は「精度保証付き数値計算」というワードだけでも覚えていただければ幸いです. 今回は"数値計算に潜むとんでもないリスク"に関してカジュアルにお話します. そして筆者の研究分野である「精度保証付き数値計算」の必要性を知ってもらえればなと思います. この記事を読み終える頃には計算機を信頼できなくなっているかも知れません(笑) ※不安を煽るこ

                                                                                  数値計算の研究をしている学生が"数値計算に潜むとんでもないリスク"について話してみる - Qiita
                                                                                • プログラミング言語論入門 - riswu’s blog

                                                                                  第0章. なぜ Scala を使うのか? はじめに 本稿は、John C. Mitchell 氏らによる Concepts in Programming Languages を基に自身の見解を交え、私がなぜ Scala を好んで使うのかを論じた記事になります。 プログラミング言語の歴史 本題に入る前に、プログラミング言語の歴史について紹介します。 年代 言語・イノベーション 1950 Fortran and Cobol 1960 Lisp and Algol 1970 Abstract data types (Simula, C, SQL) 1980 Objects (Smalltalk, C++) 1990 Java, JavaScript, Python, Ruby これは、年代ごとに開発された言語およびイノベーションを表にまとめたものになります。ただし、この表には欠けている事柄があり

                                                                                    プログラミング言語論入門 - riswu’s blog

                                                                                  新着記事