タグ

プログラムに関するamagasa99のブックマーク (30)

  • 「LLVM lld」「mold」が解決した、リンクが遅い問題 間違った思い込みの解消に必要だったのは“クレイジーな人”

    Blue Whale Systems株式会社の植山類氏は、「LLVM lld」「mold」が解決したプログラムのビルドの問題を例に、“大きな問題”を解決することについて話しました。全3回。 1個の質的な問題を解いてしまうほうが細かいことを考えるよりも簡単 植山類氏:では始めます。日、機会をいただいて講演をすることになった植山と申します。この講演の内容は「大きな問題のほうが小さな問題より解くのは簡単だ」というタイトルです。 どういう趣旨かというと、常に簡単だというわけではないのですが、いろいろな場面で、1個の質的な問題をドッカンと解いてしまうほうが、いろいろな細かいことを考えるよりも簡単なことが多いという話です。 そういうソリューションが往々にして見逃されがちということがけっこうあって、そういうことにどうやって挑戦していくのかという気持ちの話を、僕がそういう大きな問題を解決した経験を踏

    「LLVM lld」「mold」が解決した、リンクが遅い問題 間違った思い込みの解消に必要だったのは“クレイジーな人”
  • 女子大生が100日連続で生成AIで100本のプログラムを書いたらどうなったか?

    ボードゲームやアクションゲーム、各種ツールやシミュレーションなどさまざまなソフトが100日間に作られた いままで数えきれないほどのプログラマーに会ってインタビューもさせてもらってきたが、久しぶりに若いプログラマーの話を聞いてきた。ここ1、2年では U22グランプリの男子中学生や全国小中学生プログラミング大会の受賞者たちだが、今回は、ChatGPTを使ってプログラムを書きまくった女子大生である。 彼女は X(Twitter)の自分のアカウントで1日1のソフトを100日間連続で作るというイベントをやっていて「おっ、頑張っているな!」と思って応援していた。「こんなゲームを作ってほしい」などとリクエストを出したりもしていたのだが、どうも私が想像していたものと内容もやり方も違っていたようである。 目下、ソフトウェア産業の最大のテーマは「我々は人間の言葉でプログラムを書くようになるだろうか」というこ

    女子大生が100日連続で生成AIで100本のプログラムを書いたらどうなったか?
  • PNGファイル爆発しろ!

    まえがき Web上で広く利用されるPNG(Portable Network Graphics)フォーマットは、デジタル画像を変化させずに小さいデータサイズへ変換する圧縮技術の一種です。PNGフォーマットはオリジナル画像を完全復元可能な可逆(lossless)圧縮ですから、JPEGフォーマットのように画像を歪めてしまう非可逆(lossy)圧縮ほどは小さくできません。それでもオリジナルのデジタル画像データの半分程度まではサイズ削減可能な画像圧縮アルゴリズムと言われています。[1] そげぶ いいぜ てめえが何でも思い通りに圧縮出来るってなら まずはそのふざけた幻想をぶち壊す!! (スペース都合によりAA省略) 記事では、PNGフォーマットを画像データ圧縮(compress)用途で利用するのではなく、オリジナル画像データよりも遥かに巨大なPNGファイル を生成します。 PNGフォーマットでは任意

    PNGファイル爆発しろ!
  • コンパイラが作ったバイナリをつなぎ合わせるプログラム 「lld」の作者が語る、リンカの仕組み

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

    コンパイラが作ったバイナリをつなぎ合わせるプログラム 「lld」の作者が語る、リンカの仕組み
  • アニメ「Sonny Boy」の『難解』プログラムの解説 - まめめも

    『Sonny Boy』というアニメが放送されています。学校が異次元に漂流してしまい、超能力に目覚めた生徒たちがサバイバルしながら、さまざまな奇妙な現象の裏にあるルールを解き明かし、元の世界に変える方法を探す、というストーリーです。ルールが分かったあとで何度も見直したくなります。 anime.shochiku.co.jp さて今回、『Sonny Boy』に、プログラムを寄稿しました。プログラムでおもしろいCGを作ったとかではなく、プログラムの実行の様子そのものが『Sonny Boy』の5話の中で放送されました。 こういうプログラムです。 nankai.rb このプログラムがどういうものだったかを解説します。 どんなプログラム? 実行すると、「難解」という文字がほどけてなくなるアニメーションをします。 起動したらまず、プログラム自身が画面に表示されます。 しばらくしたら「難解」が左から右へほど

    アニメ「Sonny Boy」の『難解』プログラムの解説 - まめめも
  • ただプログラムが好きな会社員が、趣味でゲームを作り始めたら5年続いてNintendo Switchに3本ゲームを出していた話。Switch版『レイジングブラスターズ』発売記念インタビュー - ゲームキャスト

    「俺の考えた理想のゲームを世に問いたい!」 インディーゲーム開発者の話を聞いていると、大抵は作りたいゲームがあって、業界に身を投じている。 しかし、「プログラムで物を作るのが楽しいから、ゲームを作ってみるか」と、理想のゲーム像がないところから業界に入り、5年で Nintendo Switch で3作もゲームを出すに至った珍しい開発者がいる。 2021年6月24日に『レイジングブラスターズ』を Nintendo Switch 向けにリリースした Terarin さんだ。 今回、新作発売記念でゲーム開発を始めたきっかけから、Nintendo Switchゲームを出すまで、世にも奇妙な経緯を聞けたので、皆さんにお届けする。 正直、インタビューを通じてこんなに「独特だな」と思えた人は私の経験からしても少ない。 ゲーキャス: Terarin さんは、初めてゲームを出してから5年で Nintend

    ただプログラムが好きな会社員が、趣味でゲームを作り始めたら5年続いてNintendo Switchに3本ゲームを出していた話。Switch版『レイジングブラスターズ』発売記念インタビュー - ゲームキャスト
  • いま知っておきたいLinux─WebアプリがOSのプロセスとしてどのように見えるか? を運用に生かす|ハイクラス転職・求人情報サイト AMBI(アンビ)

    いま知っておきたいLinux─WebアプリがOSのプロセスとしてどのように見えるか? を運用に生かす Webアプリを動かして負荷をかけると、OSのプロセスという観点ではどのように見えるのでしょう? それを通して運用やトラブルシューティングではどういったことが分かるのでしょう? Linuxカーネルの開発者でもある武内覚(sat)さんによる解説です。 こんにちは、sat(@satoru_takeuchi)と申します。 コンピュータが誕生してから現在まで、最終的にエンドユーザが意識するアプリケーション開発はどんどん楽になっています。先人たちのたゆまぬ努力の結果、アプリ開発者はOSや、そのさらに下にあるハードウェアのことをほとんど意識することなく開発ができるようになりました。 しかし、「作ったアプリが、OSレベルでどのように動いているか?」が今一つピンと来なくて、モヤモヤしていないでしょうか。それ

    いま知っておきたいLinux─WebアプリがOSのプロセスとしてどのように見えるか? を運用に生かす|ハイクラス転職・求人情報サイト AMBI(アンビ)
  • プログラマの実力は経験だけであがらないことがレベル格差につながる - きしだのはてな

    プログラマというのは、道具に慣れることが、実力があがることにならないのですよね。だから、勉強せず業務経験だけだとレベルが低いままということになってしまう。 Javaを10年さわり続けて、Strutsを5年さわり続けても、それだけでは、与えられた画面を手際よく作成できるようになるだけで、たとえばStrutsすらよりよく使えるようになるわけではなかったりする。 Javaにしても、「volatileってなんですか?」という問いに、まあ知らないのはしかたないとしても、解説を見ながらですら答えられない可能性がある。 プログラムの反復生産は、プログラミング能力の向上にあまりつながらない。設定や記述に慣れるだけだ。そして、この「慣れ」というのには「難しいからそもそも実装を回避する」というようなものも含まれる。実力の向上は、作業ができるレベルで止まってしまう。 プログラマとしての実力をあげるための勉強が自

    プログラマの実力は経験だけであがらないことがレベル格差につながる - きしだのはてな
  • 僕がプログラムを作る手順|erukiti

    プログラムを作る時に、紙に設計を書いてから書く人、いきなりコードを打ち始める人、色々なパターンがあると思います。 僕がプログラムを書く手順について雑にまとめてみました。 関数と書いてるものは、場合によってはクラス・メソッドその他かもしれません。ご自身の環境に合わせて適宜読み替えてください。 まずはプログラミング自身というよりはそこに至るまでの話から始めます。 脳内のあれこれを吐き出すまずは何を作るのか、どうやって作るのか、なぜ作るのかなどを整理します。 紙やホワイトボードは最強です。UMLなりポンチ絵なり、文字なり好きな物をものすごい解像度で描けます。 安いノートを買ってきてもいいですし、ホワイトボードや、消せる紙、NuBoardなどを使うというのもいいでしょう。ちなみにお金を掛けずに擬似的NuBoardをするのであればクリアファイルを活用するといいでしょう。 タブレット+ペンもとても便利

    僕がプログラムを作る手順|erukiti
  • シンプルなUNIX ShellをCで実装するチュートリアル「Write a Shell in C」 | ソフトアンテナ

    UNIXで欠かすことができないプログラムの一つに「シェル」が挙げられるかもしれません。シェルはユーザーのコマンド入力を受け取って指示をOSに伝えたり、結果を画面に表示したり、といった大切や役割を担っているプログラムです。 このシェルを実際にC言語で作成するチュートリアル「Write a Shell in C」が公開されています。シェルのプログラムというと、とても複雑なイメージを持ってしまいますが、このチュートリアルで作成するシェル「lsh」はコメント込みで267行しかない超コンパクトなものです。 bashやzshといった有名シェルはとても複雑な作りとなっていますが、これくらいのサイズなら理解できそうですね。 UNIXの仕組みが分かるかも チュートリアルは、シェルのライフタイムの説明から始まり、メインループの中で入力行を読み取って解析する方法、さらに外部コマンドや組み込みコマンドを実行する方

    シンプルなUNIX ShellをCで実装するチュートリアル「Write a Shell in C」 | ソフトアンテナ
  • 再帰関数を学ぶと、どんな世界が広がるか - Qiita

    0. はじめに 再帰関数は初めて学ぶときに壁になりがちで なんとなくわかった...けれど どんな場面で使えるのだろう...いい感じの例を探したい! という気持ちになりがちです。再帰関数は、なかなかその動きを直感的に想像することが難しいため、掴み所が無いと感じてしまいそうです。 そこで記事では 再帰関数の動きを追いまくることで、再帰関数自体に慣れる 再帰的なアルゴリズムの実例に多数触れることで、世界を大きく広げる! ことを目標とします。特に「再帰関数がどういうものかはわかったけど、使いどころがわからない」という方のモヤモヤ感を少しでも晴らすことができたら嬉しいです。なお記事では、ソースコード例に用いるプログラミング言語として C++ を用いておりますが、基的にはプログラミング言語に依存しない部分についての解説を行っています。 追記 1. 再帰関数とは 再帰の意味はとても広いです。自分自

    再帰関数を学ぶと、どんな世界が広がるか - Qiita
  • オレ プログラム ウゴカス オマエ ゲンシジン ナル - Qiita

    ガイヨウ オレ オマエ ゲンシジンスル プログラム カイタ ゲンシジン ジョシ ツカワナイ ゲンゴショリ スル ジョシ ケス ゲンシジン カンジ ヒラガナ シラナイ ゼンブ カタカナ スル サンプル import requests import json import sys BASE_URL = "https://api.ce-cotoha.com/api/dev/" CLIENT_ID = "オマエ アイディ イレル" CLIENT_SECRET = "オマエ シークレット イレル" def auth(client_id, client_secret): token_url = "https://api.ce-cotoha.com/v1/oauth/accesstokens" headers = { "Content-Type": "application/json", "charse

    オレ プログラム ウゴカス オマエ ゲンシジン ナル - Qiita
  • 「今後必要になるプログラム言語」を読むに当たって - Qiita

    今後必要になるプログラム言語を読む前提知識 時代背景と当時の知識がないと読むのが非常に難しいので、僕の知っている範囲内の前提知識を書いておこうと思います。 当時の背景 当時というのは、ここでは 2000 年前後の Java 黎明期を指します。 僕個人で言えば PostPet 2001 などの開発に携わっていた頃のことです。 この少し前にインターネットの世界ではウェブブラウザが誕生しました。 そして、元々はセットトップボックス用に開発された言語 Java (Oak と呼称されていた)も開発されていました。 誕生間もない Java と誕生間もないウェブブラウザが出会うのは必然だったかもしれません。 この2つが出会ったことで、ウェブブラウザ上に動的なコンテンツを表示する Java Applet という技術が誕生しました。 Netscape Communications と Sun Microsy

    「今後必要になるプログラム言語」を読むに当たって - Qiita
  • jpn.ph

    This domain may be for sale!

  • 「プログラムの書き方は知っているが、何をプログラムしていいか分からない」 | POSTD

    新人の開発者が繰り返し突き当たるテーマがあります。プログラム言語を1~2種類勉強するのに時間を費やしたり、プログラミングの演習を行ったりすることに関して問題はないと感じていても、学んだことをどう応用していいのか分からずにいるのです。このことは、次のようなフレーズとしてよく耳にします。「プログラムの書き方は知っているが、何をプログラムしていいのか分からない」と。これに対する答えは、一般的に、「プログラミングの課題を行いなさい」、「オープンソースプロジェクトに貢献しなさい」、または、「ゲームを作りなさい」というようなものです。 プログラミングの課題を行うことは、知的ないい訓練にはなります。しかし新しいプログラムの開発方法を学ぶのにはあまり役立ちません。オープンソースプロジェクトに貢献するのは確かにステップアップになります。実際のプロジェクトがどのように構成されているか学び、プログラム言語の技術

    「プログラムの書き方は知っているが、何をプログラムしていいか分からない」 | POSTD
  • プログラムの勉強をしたいけど何を作ったらいいか分からない人へ - Qiita

    自己紹介 当方1年目の新人プログラマ 使用言語はPHP 内容 未経験で開発会社に入社した際に、上司から「確実にスキルがつく鉄板の課題だからやっておいてね」と言われて出された課題を記載しています。 ※なお、私はこの課題をPHPで作ったので、他の言語でスキルが上がるかどうかはわかりません。 11/24追記 LEVEL7を追記しました。 LEVEL LEVEL0:FizzBuzz 仕様 なし(どういうものかはググってね) 目的 if / for 文を理解したかの確認 LEVEL1:計算機 仕様 四則演算ができること 括弧を含んだ計算ができること 負の値も計算できること 一気につくるのではなく、四則演算->括弧->負の値 の順番で作ること 目的 勉強した基礎知識(ifやfor等)をアウトプットする PHPで定義されている関数を使ってみる データ型についても学べる LEVEL2:一行チャット 仕様

    プログラムの勉強をしたいけど何を作ったらいいか分からない人へ - Qiita
  • 私のコードリーディング術

    はじめに 私はプログラムを書くよりも読む方が好きです。最近になって「プログラムは文学だ。作者の心情がそこに表れている」と思うようになりました。 というわけでいろんなソフトウェアを読んできたわけですが、代表的なものとしては以下があります。 C言語 CRuby(1.9初期) mruby(2012年当時) CPython(3.5.1、3.6.3) Ruby Ruby on Rails(1.2.3) Mastodon(1.3.2) Python Django(1.10.5) 読んだソフトウェアの読解記事は個人サイトに上げています。10年近く前に読んですでに過去の遺物(失礼)なものもありますが。 さて、そんな感じに多くのソフトウェアを読んできたわけですが、どうやって読んできたか(ツール、方法)を紹介していきたいと思います。 コードリーディングのツール まずは読む際のツールです。 なおOSはWindo

    私のコードリーディング術
  • プログラムは音楽だ (A program is a music.)

    この資料の背景 この資料は、子供にプログラミングを教えるのに、音がなる題材だとデバッグが容易であることと、音楽活動をされているプログラマの方々との意見交換に基づいています。 何人かは、プログラマに転身される過程におつきあいしています。 そんな方の紹介からまず。 公開算譜(open source)は楽しいの (just want to have fun.) から参照しました。 # ある日の午後 音楽活動をされているプログラマの方と話をした。 音楽のこと。 オープンソースのこと。 心理学のこと。 音楽 音楽を専門家としてお金をもらって活動するか、 音楽以外の職業を持ち音楽を自分の楽しみとして活動するか、 それ以外にも色々な状況がある。 音楽から少し視点を変えて美術ならどうだろう。 美術であれば、専門家で、美術活動だけではえずに、 学校の先生をしたり、別に職業を持って絵を描いている人たちは大勢

    プログラムは音楽だ (A program is a music.)
  • 自分でプログラム言語を書いてみたい人は「Create Your Own Programming Language」がおすすめ - ブログのおんがえし

    読み終わった。たった100Pにプログラム言語を作るための基礎(字句解析、構文解析、ランタイム、インタプリタ、仮想マシン、ネイティブコンパイルまで!)が一通り学べ、さらに書で作った実際に動くプログラミング言語がついてくる。 $39.99 とちょっと高いがプログラム言語を作る勉強代だと考えれば最も安くそして早く(ドラゴンブックは1090P)学べるのではないだろうか。洋書なのが難点だが半分くらいはソースコードなので苦労しながらなんとかなりました。(日語訳出てほしいなぁ) 書籍内で作る言語は2種類で Awesome Rubyの構文にPythonのインデントブロックを混ぜ合わせたようなオブジェクト型 Mio Ioを参考にしたメッセージ型 言語自体はどちらもRubyで書かれているが紹介される概念は特に言語の制約を受けないものが多い。 よかったところ yaccやbison, JVM系の構文解析ツール

    自分でプログラム言語を書いてみたい人は「Create Your Own Programming Language」がおすすめ - ブログのおんがえし
  • Linuxシステムコール徹底ガイド | POSTD

    要約 この記事では、LinuxカーネルにてLinuxプログラムがどのように関数を呼び出すのかについて紹介していきます。 システムコールを行う様々な方法、システムコールを行うための独自のアセンブリの作成方法(例あり)、システムコールへのカーネルエントリポイント、システムコールからのカーネルイグジットポイント、glibcのラッパ関数、バグなど多くの点について説明します。 要約 システムコールとは? 必要条件に関する情報 ハードウェアとソフトウェア ユーザプログラム、カーネル、CPUの特権レベル 割り込み モデル固有レジスタ(MSR) アセンブリコードでシステムコールを呼び出すことの問題点 レガシーシステムコール 独自のアセンブリを用いたレガシーシステムコールの使用 カーネル側での int $0x80 エントリポイント iret を使用したレガシーシステムコールからの復帰 高速システムコール 3

    Linuxシステムコール徹底ガイド | POSTD