並び順

ブックマーク数

期間指定

  • から
  • まで

641 - 680 件 / 22979件

新着順 人気順

C++言語の検索結果641 - 680 件 / 22979件

  • Javaスクールの危険 - The Joel on Software Translation Project

    Joel Spolsky / 青木靖 訳 2005年12月29日木曜 近頃の若い者ときたら。 勤勉はいったいどこへ行ってしまったんだ? 「近頃の若い者」は我慢がないと不平を言うようになったのは、私も年を取ったということなのかもしれない。 そりゃ恵まれてるね。私は3ヶ月汚水浄化槽の中の茶色い紙袋に住んでいたよ。朝6時に起きて、袋を掃除し、固くなったパンの耳を食べ、工場まで歩いて行くと、1日14時間、毎週毎週働きつづけ、家に帰ると親父にベルトでたたかれて寝床についていたんだ。 ——モンティ・パイソンの空飛ぶサーカス 4人のヨークシャー人 私は若い頃、パンチカードでプログラムを作る方法を学んだ。ミスをしたら、それを訂正するためのバックスペースのような近代的な機能は存在しなかった。カードを捨ててはじめから打ち直すのだ。 私は1991年にプログラマの面接をするようになった。コーディングの問題に答える

    • ジャバの異常な愛情 またはSpringはいかにしてモダンであることを止めて時代遅れになったのか - Qiita

      Spring以前 RPC 業務で使うシステムはサーバー間で連携することが多い。2019年現在ではREST apiに対してjsonやprotocolbufferで呼び出す事が当たり前のように行われているが、まだjsonも発見されていない時代はもっと複雑な仕組みが取られていた1。異機種間でやりとりするためのCORBAや、機種に依存しないデータプロトコルのASN.1なども利用されていたが、仕様は複雑でそれぞれをハンドリングするライブラリは有償で売られ、ベンダーからサポートを受けながら使用するようなものだった。 RMI Javaの世界ではJava同士でやりとりするためのRMIが定義され、比較的に楽にRPCできるようになった2。とはいえhttpでrestをコールすることに比べたらアホみたいな複雑さである。 https://docs.oracle.com/javase/jp/1.3/guide/rmi

        ジャバの異常な愛情 またはSpringはいかにしてモダンであることを止めて時代遅れになったのか - Qiita
      • Udemy初夏のビッグセール! 最新トレンドのChatGPTから定番トピックまで、おすすめ講座を紹介 - はてなニュース

        文章生成AIや画像生成AIが2022年に登場すると、たちまち世界中で話題が沸騰しました。中でもChatGPTは、実際に記事を書かせる出版社が現れる、人類社会への危機だとして使用禁止を訴える人々が出るなど、さまざまな熱狂と混乱を引き起こしています。 その技術は非常に便利で有効なものであり、今後急速に広がっていくことは間違いありません。ならば、AIについて学び、積極的に利用し、共存するための知識を身につける私たちの姿勢こそが、これからの時代に必要なはずです。 オンライン学習プラットフォーム「Udemy」には、既にそうした新しい技術やサービスに関するノウハウが詰まった各種講座がそろっています。最新のAIで何ができるのか、今すぐその手で実際に学び始めましょう。 Udemyでは、2023年5月16日(火)~2023年5月24日(水)の間、初夏のビッグセールを開催します! セールの対象となる講座は1,

          Udemy初夏のビッグセール! 最新トレンドのChatGPTから定番トピックまで、おすすめ講座を紹介 - はてなニュース
        • Gitのステージング領域の正体を探る | メルカリエンジニアリング

          ソフトウェアエンジニアの @DQNEO です。こんにちは。 Gitの内部構造を深掘りするシリーズ3回目です。 前回までのお話はこちら Gitのつくりかた – Mercari Engineering Blog Gitのコミットハッシュ値は何を元にどうやって生成されているのか – Mercari Engineering Blog 今日はみんなだいすき「ステージング領域」の中身について解説してみます。 ステージング領域とは何か? 簡単に説明すると「次にコミットしたときにコンテンツとして登録されるもの」リストです。(別名「インデックス」ともいいます。) このリストは、 git addやgit rmしたときに書き換わります。 (古くはcacheと呼ばれていました。内部実装やgit diff --cachedに今もその名残があります。) git addのマニュアルに説明があります。 Git – git

            Gitのステージング領域の正体を探る | メルカリエンジニアリング
          • C/C のポインタの機能--参照渡し - page2 - builder by ZDNet Japan

            ポインタとは ポインタはC/C++言語の特徴的な機能のひとつである。ポインタ(pointer)を直訳すると「指し示すもの」であり、別の変数や文字列定数の場所を指し示すために使う。また、ポインタを指すポインタ(ポインタへのポインタ)というものも存在する。 このページをお読みいただいている読者にあっては、「C言語 ポインタ」「C++ ポインタ」などのキーワードでWeb検索をしたことがあるかもしれない。そうするとポインタに特化した内容の書籍をいくつか見つけられる。それだけ奥が深い機能ということである。 ポインタの用途 では、ポインタはどんなところで使われているのだろう。C/C++言語では、あらかじめ定義されている関数が多数存在するが、その一覧には、*(アスタリスクあるいはアステリスク)が付いているものをよく見かける。 これらはポインタを表し、主に文字列の操作やファイルをはじめとするデータの入出力

              C/C のポインタの機能--参照渡し - page2 - builder by ZDNet Japan
            • NVIDIAのCEOが「AIがコードを書くのでもうプログラミングを学ぶ必要はない」と発言して議論を巻き起こす

              by Hillel Steinberg ハイテク企業やベンチャー企業のトップが、「これからの若者はプログラミングを身につけるべき」とアドバイスするのを見聞きしたことがある人は多いはず。こうした潮流とは裏腹に、NVIDIAのジェンスン・フアンCEOが「プログラミングはもはや不可欠なスキルではない」と提唱しました。 NVIDIA CEO: Every Country Needs Sovereign AI | NVIDIA Blog https://blogs.nvidia.com/blog/world-governments-summit/ Jensen Huang says kids shouldn't learn to code — they should leave it up to AI | Tom's Hardware https://www.tomshardware.com/tec

                NVIDIAのCEOが「AIがコードを書くのでもうプログラミングを学ぶ必要はない」と発言して議論を巻き起こす
              • 組み込みソフトウェア業界というナゾの裏世界の話 - きしだのHatena

                ここまでのあらすじ 我々の住むソフトウェア業界は、SI、サービス・パッケージ、ユーザー企業という大小3つの大陸にわかれ、時々いさかいがありながらも平和に暮らしていた。 そして、我々の住む世界とは別に、同規模の技術者が暮らす、組み込み業界という世界の存在も知られていた。 組み込み業界は、存在はすることは確かなのだが技術者の姿は見えず、そのプロダクトの存在も、わかるものにしかわからないのであった。 我々は、組み込み業界と交信できる唯一の手段、C言語を使って、その世界の住人と交信するしかなかった。 しかしあるとき、FPGAという次元ホールをみつけたワカモノ達が、組み込み業界に迷い込んでしまう。ワカモノ達の前に立ちはだかる屈強な組み込み技術者。彼らの前にワカモノたちは、あるものは倒され、あるものは捕らわれ、そして、命からがら表の世界に逃れてきたワカモノも「べり・・・ろ・・ぐ・・・」というナゾの言葉

                  組み込みソフトウェア業界というナゾの裏世界の話 - きしだのHatena
                • 暗算で 16 進数を 2 進数に変換する方法 | プログラマーズ雑記帳

                  C 言語などでビットの定義を行う場合、 ビットシフト(<<)も使いますが、 16 進数で表記することも多いです。 何故 16 進数で記述するかというと 16 進数は 2 進数に変換しやすいためです。 C 言語でゴリゴリ書くのが主流だった時代は、 結構みんな独自の計算方法を持っていて、すぐに 2 進数に変換していました。 しかし、最近ではこの変換をできない人が増えてきた気がします。 そこで今回は私がやっている暗算で 16 進数を 2 進数に変換する方法を紹介したいと思います。 ただ、魔法のような便利な方法があるわけではなく、掛け算における九九のように暗記よる部分が多いです。 進数表記の基礎 まず最初に進数表記について簡単に説明します。 進数表記の種類としては 16, 10, 8, 2 進数などがあり、 通常、私達が使っているのは 10 進数です。 2, 8 進数などの場合、たまに 2, 8

                  • 関数型プログラミングは本当に難しいのか

                    2012年9月初頭、東京・某所で開催された「函数プログラミングの集い 2012」というイベントに参加した。 このイベント、文字通り、「Haskell」や「Scala」「OCaml」「F#」「Erlang」といった関数型プログラミング言語に関するイベントなのだが、その午前中の講演を聞いて、筆者は少々面食らった。 関数型プログラミング言語などの研究者である電気通信大学 准教授の中野圭介氏による講演だったのだが、同氏は講演が始まるや否や「これから『爆弾』を投下します」と前置きし、こう述べたのだ。 「『関数型言語』を使ってはいけない」と。 関数型プログラミングに関するイベントで、いきなり「使うな」という発言は、確かに衝撃的である。筆者だけかもしれないが、この発言の後、一瞬、会場が凍り付いたようにも見えた。一体、どういうことか。 実はこの発言、「使うな」という部分に重点があるのではなく、「関数型言語

                      関数型プログラミングは本当に難しいのか
                    • Python 4.0が登場しない理由

                      TechRepublicより。 オーウェン・ヒューズ Pythonプログラミング言語の生みの親グイド・ヴァンロッサムとの質疑応答で、Python 2.0からPython 3.0への移行がトラブル続きだったことを受けて、「Python 4について真剣に語ることはほとんどタブー」だと述べました。 グイド・ヴァンロッサムは、Microsoft Reactorとのインタビューで、Pythonバージョン 4.0の可能性をほぼ否定しました。Image: Dan Stroud under the Creative Commons licence Python 4.0に期待しないで下さい。人気のプログラミング言語の生みの親であるグイド・ヴァンロッサは、おそらく日の目を見ることはないだろうと述べています。 Microsoft Reactorとのインタビューで、ヴァンロッサムはPythonの将来とプログラミン

                        Python 4.0が登場しない理由
                      • レッドコーダーなので就活で俺TUEEEEをしようと思ったがそうもいかなかった件(タイトル募集中です) - うにゅーん、って感じだ

                        はじめに お前は誰 競技プログラミング AtCoder Topcoder Codeforces その他 学歴 面接でアピールした事柄たち 研究 インターン アプリ開発 ウェブ開発 (TokyoTech Online Judge) 開発? (TSP Visualizer) ディスアドバンテージについて 吃音症 就活概要 ①社 ②社 ③社 ④社 ⑤社 ⑥社 ⑦社 就活をして思ったこととか、スタンスとか どういう基準でエントリーする企業を選んだか 何をして働きたいか 企業を選ぶ基準、企業の順位 就活のタイミングについて 面接について 結局競技プログラミングだけで就活はできるのか 就職先について 職種について 業務内容について まとめ はじめに このタイトルは若干盛っています。すぐに出てきますが、自分がレッドコーダーなのは Codeforces というサイト(いま世界で一番参加人数が多いコンテスト

                          レッドコーダーなので就活で俺TUEEEEをしようと思ったがそうもいかなかった件(タイトル募集中です) - うにゅーん、って感じだ
                        • 味のりとこんにゃくゼリーのエンジニアブログ: phpを高速化する60の方法

                          2012年3月15日木曜日 phpを高速化する60の方法 01. static にできるメソッドは static として宣言しよう。(4倍速い) 02. echo の方が print より速い。 03. echo ‘文’,'字’; (カンマ区切り)の方が、’文’.'字’ (ドット連結)より速い。 04. ループの最大値は、ループ「内」ではなく「前」にセットしておこう。 05. 大きい配列のような変数は unset() してメモリを解放しよう。 06. マジックメソッド(例: __get, __set, __autoload)は使用を避けよう。 07. require_once はハイコストなのです。 08. include や require でファイルはフルパスで指定しよう。 09. スクリプト開始時間は time() でなく $_SERVER['REQUEST_TIME

                          • C++ のコードを Flash Player で動かす! Alchemy を速攻試してみる。 - IT戦記

                            はじめに Adobe から C/C++ で書いたコードを Flash や AIR で動かす Alchemy というものがリリースされましたね! Alchemy - Adobe Labs これはすごい!ということで、少し試してみたいと思います。 その様子をリアルタイムに書いていきます。ちゃんと出来るかな 環境 OS は Mac OS X で gcc 、 java は入っているものとします。 ホームディレクトリ(/Users/amachang)に AlchemyTest というディレクトリを作って作業します。 インストール まずは、いろいろインストールします。 Flash Player 10 Debugger Version Adobe Flash Player - Debug Downloads ここからダウンロードしてきて、普通にインストールします。 Flex SDK 以下から Flex

                              C++ のコードを Flash Player で動かす! Alchemy を速攻試してみる。 - IT戦記
                            • AquaSKK プロジェクト - 日本語を快適に

                              AquaSKK は Mac OS X 用のかな漢字変換プログラムです。多機能エディタ GNU Emacs 用に開発された SKK の思想を受け継ぎ、シンプルで快適な日本語入力環境を目指します。 開発状況の詳細については、SourceForge.JP の AquaSKK プロジェクトページ をどうぞ。 もっと詳しく... AquaSKK 4.2 リリースのお知らせと今後について 長らく停滞していた開発を再開し、バージョン 4.2 をリリースしました。 Mac OS X 10.7 以降に対応した最新のバージョンであり、 AquaSKK プロジェクトとしてリリースする最後のバージョンとなります。 これまで中心的に開発を行ってきた t_suwa は、 これからは自らの好奇心に身を委ね、 AquaSKK の実装を改善していきたいと考えています。 具体的には、最新の C++ 言語仕様を取り込んで実装の

                                AquaSKK プロジェクト - 日本語を快適に
                              • 人工無能の作り方

                                書いた人 INA 人工無能とは? 人間っぽく話すプログラムのこと。会話を理解しているというよりは、なんかそれっぽいことを話すだけのものが多い。 今回は「日本語のようなものを話す人工無能」を作ってみたので、その簡単な仕組みと工夫した点について少し書いてみることにする。 動機 うちのサークルのメンバーがよく集まってるチャット。とてもマニアックな どうしようもない 会話が繰り広げられているわけだが、ちょっと物足りない。 そうだ! 萌キャラがいないじゃないか! 「ないなら作ればいいじゃない?」 材料 MeCab 形態素解析エンジン 難しいことは知らなくても問題ない。 「私は変な人ではない」 ↓ 私 名詞,代名詞,一般,*,*,*,私,ワタシ,ワタシ は 助詞,係助詞,*,*,*,*,は,ハ,ワ 変 名詞,形容動詞語幹,*,*,*,*,変,ヘン,ヘン な 助動詞,*,*,*,特殊・ダ,体言接続,だ,

                                • 工学ナビ - 「攻殻機動隊」「電脳コイル」の世界を実現! - ARToolKitを使った拡張現実感プログラミング

                                  仮想世界と現実世界を融合する技術は,拡張現実感(Augmented Reality:AR)と呼ばれています. おおげさな言い方をするとARは現実の世界に情報を「上書き」することができる技術です. アニメや映画にでてくる「電脳」を想像してみてください.手のひらの上に3Dキャラクタを表示したり, 現実の世界でデジタル・データに触れてみたり… そんな魔法のような技術です. ARToolKit はARアプリケーションの実装を手助けするC言語用のライブラリです. ARToolKitを使うと,紙に印刷されたパターンをカメラで読み取り, その上に3Dオブジェクトをオーバーレイ表示するアプリケーションが簡単に作れます. 本来は非常に敷居の高い技術なのですが,このライブラリは「難しい部分」の処理を全てやってくれます. …というわけで今回はARToolKitを使って近未来の技術 「拡張現実感」 を体験

                                  • ITエンジニアのSIerの仕事がつまらない理由、やりたい仕事ができていないならすぐに転職した方がいい - セミリタイアしたサラリーマン投資家

                                    大学を卒業してから中小企業のエンジニアとして9年間働いてきた。この間働いた企業は3社、途上国に現地採用でエンジニアとして働いていた時期もある。 この仕事を辞めたのは31歳、最後の年の年収は520万円程だった。サラリーマン全体の平均年収が440万円しかない、中でも中小企業の収入は相対的に少ないことを考えると、自分としては上出来だった。 自分が在籍していた企業は、大手メーカーの仕事を請け負う独立系SIerに属する企業、SIerとはお客であるメーカーの業務を把握、分析しユーザーの要望にあったシステムを開発し納品するIT企業のことをさす。 ベンチャー企業などエンドユーザー向けにBtoCで稼いでいる企業とはビジネスモデルは180度異なる。この分野については経験がないためよく知らない、これから話す内容もSIer企業に限定される。 ただ、日本のIT企業は大半がSIer企業で成り立っている。自社のプラット

                                      ITエンジニアのSIerの仕事がつまらない理由、やりたい仕事ができていないならすぐに転職した方がいい - セミリタイアしたサラリーマン投資家
                                    • 「Linux」、バージョン6.1でRustを導入へ--トーバルズ氏が明言

                                      LinuxにRustを導入するかどうかという議論は終わりを迎えた。Rustの実装は既に始まっている。Linuxの父であるLinus Torvalds氏は電子メールによる筆者との対話の中で「何かおかしなことが発生しない限り、それ(Rust)は6.1で導入される」と述べた。 Linuxカーネルの記述言語としてプログラミング言語Rustを導入するという議論は、かなり前から存在していた。Linuxカーネルの開発者らは、年次カンファレンス「Linux Plumbers Conference(LPC)2020」の場で、Linuxの新たなインラインコードでのRustの使用について検討を開始していた。また、「Android」(それ自体がLinuxのディストリビューションだ)の開発言語としてRustを支持しているGoogleは、2021年4月にLinuxカーネルへのRust導入の動きを後押しし始めていた。

                                        「Linux」、バージョン6.1でRustを導入へ--トーバルズ氏が明言
                                      • C言語プログラミングの覚え書き(改訳) - アスペ日記

                                        原文: Notes on Programming in C Rob Pike 1989年2月21日 Copyright (C) 2003, Lucent Technologies Inc. and others. All Rights Reserved. Lucent Public License Version 1.02 前書き KernighanとPlaugerによる“The Elements of Programming Style” (「プログラム書法」木村泉訳)は重要で影響力のある本です。この本にはそれだけの価値があります。しかし、その中の簡潔なルールが、本来意図されたような哲学の簡潔な表現としてではなく、よいスタイルのレシピとして受け取られているように私は時々感じます。この本が変数名は意味を持つようにつけられるべきだと言うなら、名前が使い方を説明するちょっとしたエッセイのような

                                          C言語プログラミングの覚え書き(改訳) - アスペ日記
                                        • Twitterの日本人エンジニアに聞く、世界に通用するハッカーになるには

                                          Twitter Japan ソフトウェアエンジニアの蓑輪太郎氏にお話を聞きました。趣味でOSや言語処理系を実装するハッカーの蓑輪氏に、Twitterエンジニアの日常とはどんなものか、そしてエンジニアとしての腕磨きの方法などをお伺いします。 【主な内容】 蓑輪太郎さんの現在の仕事 00:00:00:00 コードレビューにはReview Boardを利用 00:03:53:04 何億人に使われる機能変更の初仕事 00:04:58:21 自分のコードに対して残る不安 00:06:19:14 Twitterエンジニアのローカル開発環境 00:09:41:09 意外に普通!? Ruby on Railsによる開発 00:11:58:29 蓑輪さんの典型的な1日 00:13:08:05 ビッグデータもカジュアルに扱う 00:17:01:28 Twitterが求めるのは「歌って踊れるエンジニア」 00

                                            Twitterの日本人エンジニアに聞く、世界に通用するハッカーになるには
                                          • グーグル、Rust採用で「Android」のメモリーに関わる脆弱性が激減

                                            メモリー関連の不具合を減らすために、「Android」の新しいコードにRustを使用するというGoogleの判断は、成果を挙げているようだ。この数年で、Androidのメモリー安全性関連の脆弱性は半分以下になった。この成果が達成された時期は、GoogleがCやC++からメモリー安全性の高いプログラミング言語であるRustに切り替えた時期と一致する。 Androidに発見されたセキュリティホールの中で、最も件数が多かったカテゴリーがメモリー安全性関連の脆弱性でなかったのは2022年が初めであり、Googleは1年前に、「Android Open Source Project(AOSP)」で新しいコードのデフォルト言語をRustに切り替えている。 GoogleがAndroidに使用しているほかのメモリー安全性を備えた言語には、JavaやJava互換のKotlinがある。AOSPで主流の言語はま

                                              グーグル、Rust採用で「Android」のメモリーに関わる脆弱性が激減
                                            • 初心者でもC言語に入門できる学習サイトと書籍9選 - paiza times

                                              Photo by Bill Bradford こんにちは。谷口がお送りします。 プログラミングをこれから学ぼうとしている方や、これから研修や実務に入る新人エンジニアの皆さんの中には「C言語を学習したい」という方もいらっしゃるかと思います。 純粋なC言語のみを利用する案件は近年減少していますが、組み込み系、制御系では依然C言語の案件が多く存在します。 また、Linuxのカーネルをカスタマイズしたり、nginxの拡張モジュールを置き換えて高速化するような場合や、ゲーム等で高速な処理が求められる場面での高度なチューニングにおけるニーズもあります。 C言語は、各実行環境のネイティブの機械語にコンパイルされて、CPUが直接コードを実行するため、処理速度が非常に高速であるという特徴があります。 RubyやPHP等の開発言語も、C言語で実装されているんですよ。 そこで今回は、プログラミング未経験~初心者

                                                初心者でもC言語に入門できる学習サイトと書籍9選 - paiza times
                                              • プログラミング出来ないのにギークハウスを始めたら、420万円の出資を受けて1人でウェブサービスを開発することになった。 | Last Day. jp

                                                プログラミング出来ないのにギークハウスを始めたら、420万円の出資を受けて1人でウェブサービスを開発することになった。 最終更新日: 2013/08/26 Ruby ※当記事は寄稿記事になります。 はじめまして。沖縄在住の24歳の@kimihito_ と申します。沖縄に居ながら、Webにある動画のみどころを集める、みどころ.comというサービスを、東京にあるベンチャーキャピタルである、サムライインキュベートさんより出資いただいて、一人で開発しています。 他にはギークハウス沖縄の言い出しっぺで運営しています。ちなみにギークハウスを始めたときには全くコードが書けませんでした(今も書ける方ではありませんが…)。 今回、沖縄に居ながら出したアイデアに投資され、現在開発しているウェブサービスが誕生するまでの経緯をお話しようとおもいます。 サムライインキュベートから出資私が現在住んでいるギークハウス沖

                                                  プログラミング出来ないのにギークハウスを始めたら、420万円の出資を受けて1人でウェブサービスを開発することになった。 | Last Day. jp
                                                • データ型のアラインメントとは何か,なぜ必要なのか?

                                                  以前このサイトとブログに,何度かアラインメントに関する記事を書きました (サイト内関連ページ参照). そのせいか「アラインメント」で検索して来てくれる人が多いので, 過去の記事に加筆修正してこのページを新たに作成しました. 加筆した点は次のとおりです. アラインメントとメモリアクセス回数の関係をわかりやすくするため, (ほんの少し) 図を導入しました. 「データがアラインされていないとメモリアクセス回数が増える」 と言葉で説明しているサイトは多いのですが, 図で示しているところはまだ見たことありません. アラインされていないアドレスにデータを書き込む場合, 読み出しの場合以上にメモリアクセス回数がかかる可能性があることを追記しました. 以前は「複合データ型 (配列,構造体,共用体) のアラインメント」はほとんど自明のことだと思っていたので軽く流していましたが, 意外なことにこれを解説してい

                                                  • 努力する人が最後には”できる人”になる - かとじゅんの技術日誌

                                                    先日の2月3日で39歳になりました。社会人20年を振り返ると苦労の歴史でした。でも、それは誇らしいことでもあります。 今でこそ「できる人」というイメージが強いかもしれませんが、、駆け出しのころは全くできない子でした。 ということで、苦労話。タイトルがありきたりですが、でも難しいことなんであえてつけてみた。押し付ける気も全くないですけど、できるやつが何 後付でカッコつけてんだよ!とか、非論理的だなって言われると思います。それは否定しません。そんなことは承知の上で、以下 おやじのうんちくをたれます。 限界を超えた努力 初めてのプログラミングは10歳の時にBASICでプログラムです。なんか難しいこと簡単にやらせてみたい欲求があって、PCというのは難しいけど楽しいかもしれないと思った。その頃の「好き」のレベルはまだ淡い幻想です。 それ以来、社会人になるまでPCはゲーム機でしたが、社会人になってC言

                                                      努力する人が最後には”できる人”になる - かとじゅんの技術日誌
                                                    • Cコンパイラを作ろう!

                                                      こんにちは、21Bのseasonです。この記事はtraP夏のブログリレー3日目の記事です。 自作Cコンパイラでセルフホスト達成しました。 リポジトリ: https://github.com/season1618/c-compiler/tree/main 自作Cコンパイラでセルフホスト達成しました!!!!!!🎉🎉🎉https://t.co/8fLIAJWksQ pic.twitter.com/2fgH5sKoZ0 — season (@season1618) July 27, 2022 実際にどうやって作るかを書くと長くなるので、ここでは経緯とか完成までの流れとかを書こうと思います。一応開発メモは以下に上げておきました。 開発メモ: https://github.com/season1618/note/blob/main/cs/c-compiler/index.md 経緯 大学の講義で

                                                        Cコンパイラを作ろう!
                                                      • Perl で 8ビット CPU を作る - naoyaのはてなダイアリー

                                                        CPU を作る、と言ってもハードではなくソフト、仮想機械です。 2001 年から UNIX USER で連載されていた西田亙さんの「gccプログラミング工房」。いまさらながら、バックナンバーを取り寄せて初回から順番に読んでいます。とてもためになる連載です。 この連載中で第10回から数回に分けて開発されていた octopus という 8 ビット CPU の仮想機械があります。オリジナルは C 言語で書かれていたのですが、その設計を見て、これは他の言語でも作れるのではないか、と思い Perl に移植してみたところなんとか動作させることができました。以下の URL にコードを公開します。(西田さんに確認を取ったところ、オリジナルのソースは Public Domain とのことでした。オリジナルは http://www.skyfree.org/jpn/unixuser/ からダウンロード可能です。

                                                          Perl で 8ビット CPU を作る - naoyaのはてなダイアリー
                                                        • 超高速開発 体験談 - 職業プログラマの休日出勤

                                                          数日前に日本で話題になっていた「超高速開発」について記事を残したいと思います。ニュース記事 超高速開発はスクラッチ開発の3倍から10倍の開発効率が条件、競合するベンダ13社が利害を超えて「超高速開発コミュニティ」を設立 - Publickey の はてなブックマーク に寄せられたコメントを見る限り「食わず嫌い」な方が非常に多いように見受けられたので、これは体験談の需要は高そうだなと思い、書き始めた次第です。 ネタ記事を書いた直後に真面目な記事を書くのは、少し気が引けるものではありますが…。 私は2006年初頭から2012年初頭まで、インフォテリア社製の開発ツール「Asteria」を使用していました。この製品には冒頭で紹介した記事からもリンクが張られていますが、超高速開発を実現するためのツールの一つです。もちろん、私がAsteriaを使用していた頃は「超高速開発」などという言葉は見たことも聞

                                                            超高速開発 体験談 - 職業プログラマの休日出勤
                                                          • コンピュータジョーク

                                                            Internetから集めたジョークの意訳です。日本語で面白くないものは外したり、若干アレンジしています。 Bjarne Stroustrup氏のインタビュー記事は、こちら Computer One Liners ペンティアムはコンピュータの中でとけて手でとけない 宇宙の秘密をお教えしよう: それは@鮪*蟻&^^^ NO CARRIER エラー:キーボードが接続されていません。続行するにはF1キーを押してください Cプログラムは動く。Cプログラムはクラッシュする。Cプログラマは燃え尽きる。 "ディスク#3を入れろ"と書いてあるけど、このコンピュータには2つしか口がないよ! ちょうど、最後のバグを直したところなんだ。 デバッグという作業がバグを取り除くことなら、プログラミングとはバグを注入する作業に違いない --- ダイクストラ "#define QUESTION ((bb) || !(bb)

                                                            • jQueryはモナドだ - id:anatooのブログ

                                                              この記事はjQuery is a Monad | Important Shockという記事の勝手訳です。 追記1: bonotakeさんが補足記事を書いてくれています → JQueryがモナドかどうかとか - たけをの日記@天竺から帰ってきたよ 追記2: hirataraさんが補足記事を書いてくれています → jQueryは本当にモナドだった - 北海道苫小牧市出身のPGが書くブログ Haskellプログラマーは誰しもがモナドに関する各々のチュートリアルを書くと言われる。というのも、一度モナドの定義とその可能性を理解すれば、モナド全体を囲む神秘性に挑戦して打ち破るのが容易になるからだ。門外漢からすれば、モナドはHaskellを真に理解することを妨げる不可解な障壁だ。モナドはとても不適当な名前で呪われていて、一風変わった文法を持ち、一度に何もかもやってしまう様に見える。しかしながら、その動き

                                                                jQueryはモナドだ - id:anatooのブログ
                                                              • とあるiOSプログラマが様々なプログラミングを習得するまでの経緯

                                                                プログラミングをどうやって覚えたのか、という質問をよくされますが、独学です。 独学だなんてすごい、とか言われるので、多くの方はプログラミングは「教えてもらうもの」と思っているのかもしれません。 こんなもん、教えてもらって身につくわけがないんです。 結局は自己解決能力を養えるかということが、プログラミングの習得につながっていると思います。 問題が起こった時に原因を特定できて、それを調査し、解決することができるか。 これができるコツを掴めばプログラミングは難しく無いと思います。 というわけで、あんま関係ないのですが、私が今までにプログラミングを勉強してきた経緯や流れを書きたいと思います。 これから勉強する方の参考になれば幸いです。 1996年(15歳)ポケコンを触る IT系という言葉が当時あったかどうかわかりませんが、それを志すようになったのは、兄の影響が非常に強かったです。 私の兄は、これか

                                                                  とあるiOSプログラマが様々なプログラミングを習得するまでの経緯
                                                                • C言語に置き換わるか?現在はFacebookで開発されているD言語について

                                                                  こんにちは。開発担当の渡部です。 普段の業務では Web のフロントエンド・サーバーサイドをやりつつ、オフの時は Oculus Rift を触っており Developers Summit 2014 などのイベント等にも多数参加していますが、 本日はジワジワと伸びているプログラミング言語についてのお話です。 つい先月、このブログでも取り上げた Objective-C 後継として開発中の Apple Swift や、 JavaScript を置き換えるものとして作られている Google の Dart や Microsoft の TypeScript などのように、既存の言語に限界を感じて新しい言語を作るというケースは非常に多いです。 今回はその中から、ハードウェアレベルからアプリケーションまで扱えるシステムプログラミング言語として不動の地位を築いているC言語の後継という大きな目標を掲げて開発

                                                                    C言語に置き換わるか?現在はFacebookで開発されているD言語について
                                                                  • clang+llvmでさりげなくすごいコードが生成されていた話。 - 組み込みの人。

                                                                    先日llvm 3.3がリリースされました。aarch64(arm 64bit)のコードが生成できるようになったということなので、ソースからビルドして遊んでいたのですが、さりげなく凄く最適化されたコードが生成されているのに気がつきました。aarch64だと今は実行して確認できる環境が手元に無いので、普通のarmv7-aで同じことを試しました。 ここで使ったコードとその結果はgistに貼りました。 https://gist.github.com/tetsu-koba/5835724 ソースコード int sum(int x) { int sum = 0; int i; for (i = 1; i <= x; i++) { sum += i; } return sum; } 1からnまでの総和を求める関数です。1から100までの総和が5050なのはガウス少年の逸話で有名ですね。 gcc 4.8.

                                                                      clang+llvmでさりげなくすごいコードが生成されていた話。 - 組み込みの人。
                                                                    • C言語最大の欠点

                                                                      1980年代、筆者が高校生・大学生だったころに「C言語がすごい」という話を友人から聞いていた。しかし、当時の筆者が触れていたのはMSXパソコンのBASICと大学の汎用機のFortranくらいだった。C言語をやっと手に入れたのは、1992年の暮れである。清水の舞台から飛び降りるような気持ちでBorland C++の大箱を買って帰った。 それから20年近くが経過した今でも、C言語は「最強のプログラミング言語」と呼ぶべきポジションを確保し続けている。UNIXオペレーティングシステムとC言語が世界に与えたインパクトの大きさは、実に大きなものがあった。 ただ、C言語を学習したり評価したりする際には、C言語の大きな欠点を知っておく必要があるだろう。筆者が考えるその大きな欠点とは、「文字列の扱いが非常に面倒」であることだ。 「バッファオーバーフロー」を回避するのは大変 例を示そう。図1はC言語で記述した

                                                                        C言語最大の欠点
                                                                      • Neovimを一瞬でVSCode並みに便利にする - k0kubun's blog

                                                                        去年8年ぶりに vimrc を書き直した時はLSPの体験があんまりよくなくてLSPなしでNeovimを使い続けていたのだが、様々な言語のOSSをメンテする都合で用途に応じてIntelliJとVSCodeとNeovimの三刀流で暮らしていた結果、可能ならNeovimに寄せたいけどそれならLSPを使いたいなということになり、今回LSPの所を真面目に設定し直して、かなり良い体験になっている。 正直Neovimの設定はVSCodeのそれに比べたら面倒なんじゃないかという印象がありサボっていた節があるが、実際にやってみるとVSCodeと同程度に簡単に済む方法もあったので紹介したい。 何故Neovimなのか LSPの話の前に、タイトルだけ見た人がそもそも単にVSCode使えばいいじゃんと言いそうなので、どうしてIntelliJやVSCodeではなくNeovimに揃えようと思ったのかについて書いておく。

                                                                          Neovimを一瞬でVSCode並みに便利にする - k0kubun's blog
                                                                        • RustでWebアプリケーションのバックエンドを開発するには ─ 型システムの堅牢性と柔軟性を業務システムにも!|ハイクラス転職・求人情報サイト AMBI(アンビ)

                                                                          ハイクラス求人TOPIT記事一覧RustでWebアプリケーションのバックエンドを開発するには ─ 型システムの堅牢性と柔軟性を業務システムにも! RustでWebアプリケーションのバックエンドを開発するには ─ 型システムの堅牢性と柔軟性を業務システムにも! 安全性に大きな特徴があるプログラミング言語Rustは、C言語やC++に代わるシステム記述言語として注目されてきました。しかし、その安全性とパフォーマンスの高さにより、ビジネスアプリケーションの構築にも採用されています。この記事ではキャディ株式会社による事例を紹介します。 こんにちは。キャディ株式会社バックエンドエンジニアの松田と申します。 キャディ株式会社では、「モノづくり産業のポテンシャルを解放する」をミッションとして、製造業分野に関連するさまざまなソフトウェアの開発を行っています。また、そのための主要な開発言語としてRustを採用

                                                                            RustでWebアプリケーションのバックエンドを開発するには ─ 型システムの堅牢性と柔軟性を業務システムにも!|ハイクラス転職・求人情報サイト AMBI(アンビ)
                                                                          • 11種類のオペレーティング・システムについてまとめてみた - Qiita

                                                                            TL;DR 「オペレーティングシステム?知ってるよ。WindowsとかMacのことだよね」というぐらいの知識だった私が、二週間ほどひたすらWikipediaでインプットしまくったクソ浅い情報を共有します。 最初の動機 「Go言語が対応しているアーキテクチャってなんだろ?」 Go言語には環境変数をコンパイラに渡すことで、出力されるバイナリの対応するOSとアーキテクチャを変えることができます。 GOOS がオペレーティングシステム(OS)、 GOARCH がアーキテクチャです。 こんな感じにビルドすると、 linux というオペレーティングシステムで、 ppc64 というアーキテクチャに対応したバイナリが出力されます。 なるほど。 じゃあ、 Go言語が対応しているOSとアーキテクチャって何があるの? と疑問が湧いてきますね。 その疑問に応えるコマンドが go tool dist list です

                                                                              11種類のオペレーティング・システムについてまとめてみた - Qiita
                                                                            • ゲーム業界で働きたい方に──業界の片隅で働くオヤジが明かす“労働環境の実情”と“滑り込む方法”

                                                                              人気ゲームブログ「島国大和のド畜生」管理人の、島国大和さんによるコラム「島国大和のゲームほげほげ」。第6回となる今回は、ゲーム業界への就職について、実際に働いている人間の視点で語っていただきました。 プレイステーションVS.セガサターンという次世代機戦争真っ只中に業界に入った島国さん。コンシューマーからPCのMMO、ケータイ、そしてスマホゲームと、開発の地を転々としながらゲームを開発し続ける彼だからこそ語れる本音が、ここにある!? お久しぶりの島国大和です。デスマーチしてますか!(挨拶) 最近のゲームは、無茶なデスになる前にプロジェクト終了になりますね。時代は変わりました。 寂しいもんです……嘘です、寂しくはないです。スマホゲームのデス運営は今でも健在ですし。 さて、そんな感じでゲーム業界も時代が変わっていくわけですが、変わらず就活時期になると聞かれることがあります。 「ゲーム業界って、ど

                                                                                ゲーム業界で働きたい方に──業界の片隅で働くオヤジが明かす“労働環境の実情”と“滑り込む方法”
                                                                              • Go言語でゲームボーイアドバンスのエミュレータを作った話

                                                                                CPUはなんとARMのCPUを採用しています。(そのおかげでLLVMのターゲットに指定できる) ゲームボーイとの違い CPU 最大の違いはCPUです。ゲームボーイ(以降、GB)ではZ80を独自カスタムしたLR35902というCPUを使っていますが、このCPUは8bitで動作するCPUです。つまり命令のサイズが8bit(1byte)しかありません! しかも、LR35902は掛け算命令など現代のCPUでサポートしている基本的な命令をサポートしていません。 これに比べてGBAに搭載されているARM7TDMIは32bit CPUです。つまり命令のサイズが4byteとGBの命令の4倍の大きさになります! このおかげでCPUの命令セットがさまざまな命令をサポートできるようになりました。(まあ後述の理由で実質16bit CPUですが...) またクロック数もGBの4MHzから16MHzに伸びました。 B

                                                                                  Go言語でゲームボーイアドバンスのエミュレータを作った話
                                                                                • とほほのJava入門 - とほほのWWW入門

                                                                                  とほほのJava入門 [戻る] 索引 Javaとは Javaとは Javaの歴史(Java, Java 2) Javaのエディション(J2SE, J2EE, J2ME) Javaの配布形態(JRE, SDK) はじめてみよう JDKをインストールする 環境を設定する テスト用フォルダを作成する Javaアプリケーションのサンプル(HelloWorld) 文法 コメント(//, /* */, /** */) キーワード リテラル プリミティブ型(boolean, byte, char, short, int, long, float, double) 値を返さない型(void) 演算子 キャスト 制御構文 もし(if) 繰り返し(for) 繰り返し(while) 繰り返し(do while) 分岐(switch) 処理を抜ける(break) 処理を繰り返す(continue) ジャンプ(go