8月6日、C++23はC++20の次の標準として発表されました。 C++23はC++の進化の一環として重要な役割を果たし、C++の機能を改善することを目的としています。 C++23はC++98やC++03ほどの大きな変更はなく、C++17の伝統に則ったものです。 本日、C++コミュニティが待望の次期C++標準、「C++23」を発表した。C++は長い歴史を誇るプログラミング言語であり、C++23はその進化の中でも特に重要な節目となる。C++23はC++98やC++11、C++20ほどの大規模な変更は見られないが、C++17の伝統を継承している。 C++の歴史的進化 C++は1980年代末にBjarne Stroustrup氏とMargaret A. Ellis氏によって執筆された「Annotated C++ Reference Manual (ARM)」によって誕生した。この書籍は当時多数存
テックカンパニーをテックカンパニーたらしめているものはなにか?技術か、人か、それともチームなのか。 連載「Technology Company Internals」では、テックカンパニーの内側で働くエンジニアに、技術に精通したエキスパートが対面で話を聞き、テックカンパニーとは何か?を探るだけでなく、テックカンパニーを目指す企業の指針となることを目指します。 様々なデバイス上で動くブラウザを開発するのが仕事です 白石: 本日はよろしくお願いします。自己紹介からお願いできますでしょうか? 梅田: 梅田と申します。株式会社ACCESSで、webブラウザ開発事業のマネージャーを担当しています。 白石: ブラウザ開発を生業にしている、ってすごいですよね。珍しいというか。 梅田: はい、日本だと唯一…かどうかはわかりませんが、相当珍しいと思います(笑) 白石: それで上場までされているというのもすごい
「Ten reasons why every programmer should learn C」という記事がありました。 個人的な感想ですが、何と無く言いたい事はわかる気がしました。 ただ、多少誇張している(言い過ぎ/嘘)かなと思いました。 あと、恐らくLinuxとオープンソースなどを念頭において書いているんだろうなと思いました。 ちょっと言いすぎ感も漂う内容でしたが、面白かったので訳してみました。 誤訳や勘違いなどが入っている可能性があるので、詳細は元記事をご覧下さい。 以下訳です。 全てのプログラマはC言語を学ぶべきである。 C言語を学ぶ事により得られる利点は無視できないほど大きい。 C言語を学ぶ事により、仕事の機会に恵まれるだけではなく、コンピュータへの理解が深まる。 1) C言語は、C++やJavaと比べて低レベル(low level)な言語である。 低レベル言語を使ってプログラ
Linux カーネルのメモリ管理方法について、勉強したことをまとめる。 メモリ管理はハードウェアに強く依存するため、x86_64 かつ OS起動後に 64bitプロテクトモード に移行したあとに話を絞る。また、OS は CentOS7.6、カーネルは次のバージョンを利用する。 ]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) ]# uname -a Linux localhost.localdomain 3.10.0-957.21.3.el7.x86_64 #1 SMP Tue Jun 18 16:35:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux 概要 ノイマン型アーキテクチャ コンピュータの基本的な構成のひとつ。次の図が参考になる。 ほぼ全てのコンピュータが、このアーキ
はじめに 言語実装 Advent Calendar 2016 用です。 ELVMは、コンパイラをフロントエンドと中間言語とバックエンドにわけて、多言語多CPUに対応しよう……というようなLLVMの考え方を、パロディと言っていいレベルにまで単純化したものです。結果として実用性は全くないが、C言語から他言語へのトランスレータを極めて簡単に書け、 Brainfuck などのような難しい言語のコードもC言語を書くだけで生成できる、というようなことを主目的としています。 本当は ELVM のバックエンドを一つ足して、 Brainfuck とかのような難しいターゲットでなければ、こういう感じで手軽に足せますよーということを書こうかと思っていました。しかし、ありがたいことにそういう趣旨だったり、あるいはもっと難しいターゲットについても、既にあれこれと書いていただいたのでした。例えば Perl: http
2019年12月の冬休みに1週間程かけて"Let's Build a Simple Database"という、C言語でSQLiteのクローンを作るチュートリアルをやりました。この存在を教えてくれた同僚に感謝 :pray: cstack.github.io チュートリアルの内容 Richard Feynman先生の“What I cannot create, I do not understand.”という言葉が掲げられているように、データベースを作ることでデータベースをより深く理解することに主眼が置かれているチュートリアルです。 これは重要事項説明かつタイトル詐欺に関する謝罪なのですが… 残念ながらこのチュートリアルは完成しておらず、Part 13が2017-11-26に公開されたのを最後に更新が止まってしまっており、以下の13章しかありません。 Part 1 - Introduction
Release History This page provides a high-level summary of changes to SQLite. For more detail, see the Fossil checkin logs at https://www.sqlite.org/src/timeline and https://www.sqlite.org/src/timeline?t=release. See the chronology a succinct listing of releases. 2024-01-30 (3.45.1) Restore the JSON BLOB input bug, and promise to support the anomaly in subsequent releases, for backward compatibili
Ruby 開発チームに4週間インターン生として参加いたしました、永山 (GitHub: NagayamaRyoga) です。 私は「Ruby中間表現のバイナリ出力の改善」という課題に取り組み、Railsアプリケーションのコンパイルキャッシュのサイズを70%以上削減することに成功しました。以下ではこの課題の概要とその成果について述べたいと思います。 InstructionSequenceの概要 まず、RubyVM 内で実行される命令の中間表現、InstructionSequence (以下 ISeq と省略) について簡単に説明します。 通常の Ruby プログラムは、以下のような手順で実行されます。 ソースコードを構文解析し、抽象構文木を作る。 抽象構文木をコンパイルして、ISeq を作る。 RubyVM (YARV) で ISeq を解釈し、実行する。 ISeq は、このように Ruby
The Parallel GCC This page introduces the Parallel GCC -- a research project aiming to parallelize a real-world compiler. This can be useful in many-core machines where GNU Make itself can not provide enough parallelism, or in the future if someone wants to design a parallel compiler from scratch. In this page, we document and discuss how to use this project, the theoretical backgrounds that motiv
Intel の主席エンジニアの Josh Triplett の Open Source Technology Summit 2019 での講演 Intel and Rust: the Future of Systems Programming を取り上げ、Rust こそがシステムプログラミングの未来であり、C 言語はもはやかつてのアセンブリ言語である。つまり、未だに OS などのシステムプログラミングの大部分で使われる C 言語は Rust に置き換えられるのではないかと見る記事である。 「Cを愛して…」という文章をワタシが訳したのももはや10年以上前、C が他言語に置き換えられる未来が遂に来るのかと遠い目になってしまう。もっともワタシ自身、4年近く C 言語でコーディングしてないんだよね……。 でも、本当にそうなるのだろうか? 手近なシステムプログラミングの現場である Linux カーネ
古来、Pythonでは「代入は文であるべき!」と一貫して主張してきました。 C言語などでは、代入は足し算や掛け算と同じ、値を計算する「式」で、たとえば a = (b=100) / 2; と書くと、b には 100 を代入し、a に 100/2=50 を代入します。1+1 は 2 という値になる 式 ですが、b=100 も同様に値が 100 となる 式 なのです。 Pythonでは、代入は式ではないので、こういう書き方はできません。 Pythonの代入は、足し算などの演算子の仲間ではなく、if や for のような制御文の仲間で、あまり自由な書き方は出来ないのです。 Python FAQ では、その理由として Python の式中での代入を許さない理由は、この構造によって起こる、他の言語ではありがちで見つけづらいバグです: if (x = 0) { // error handling } e
IoTやAIといったテクノロジーの進歩とともに、最近では、これまでハードウェアに触れてこなかったソフトウェア・エンジニアもFPGAを知る必要がある……、としばし論じられるようになってきた。そうした現状を踏まえ、この連載では、なぜソフトウェア・エンジニアがFPGAを学ぶ必要があるのか、FPGAとは何か、またその基本的な仕組みや構造を3回に分けて紹介する。 なぜソフトウェアのエンジニアがFPGAを学ぶ必要があるのか? ソフトウェア・エンジニアがいまからFPGAを学ぶ必要性について定量的に論じることは難しい。FPGAの設計手法やコンパイラ(※1)は日々進歩しており、既存のソフトウェア(※2)をそのままFPGA用にコンパイルできるケースも増えてきた。CPU(※3)とFPGAが搭載されたシステム上で、どのプログラムをどちらのハードウェアで実行するかを最適化する研究も以前から行われており、近い将来、多
まえがき 初めまして、R&Dチームの宮﨑です。趣味はFPSをやってます。150時間やってますが未だにドンかつを食べられていません。普段は深層学習のベンチマークを取ったりしています。 実はひと昔前からあった深層学習。近年実用性が増して一大ブームとなっています。実用的になった背景の一つとしてGPUを用いた高速化により深層学習の学習及び推論が実用的な時間で実行できるようになったことがあります。NVIDIAから提供されるCUDAを用いるとC言語に拡張を加えた形式でCPU+GPUのヘテロジニアスコンピューティングを記述できます。 CUDAを使用するにはCPU+GPUの環境がどのようなハードウェア構成をしており、その上でCUDAがどのようなシステムを構築しているのかを理解する必要があります。この理解なしに漫然とサンプルコードを真似するだけでは意図通りのパフォーマンスが出なかったり、そもそもAPIの意味
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く