タグ

プログラミングに関するdhrnameのブックマーク (1,127)

  • 入社3ヶ月の新卒エンジニアにおすすめするプログラミング入門書10選

    Tweet Pocket あなたは今、ITエンジニアとして入社して3ヶ月が経過し、これから格的にプログラミングを学ぼうとしている段階ではないでしょうか。 実はプログラミングを習得するためには、プログラミング自体の知識だけでは十分ではありません。抽象化のスキル、プロジェクトマネジメントのスキル、コミュニケーションスキルなど、多様なスキルが必要です。 私たちはこれまで約24年間にわたり開発を携わってきました。約500名のエンジニアと共にしてきました。そのなかでも新卒研修を共にしてきたエンジニアは100名にのぼります。 私たちよりももっと大きな経験豊富で素晴らしい研修を提供されている会社はあるかもしれません。でも、私たちは私たちなりに新卒エンジニアにとって素晴らしい研修を追求し続けてきた自負があります。 そこで今回は、そんな私たちの経験を踏まえて、入社3ヶ月の新卒エンジニアを対象に、プログラミ

  • JavaScript 実行エンジン V8 の JIT 出力コードを読んでみよう

    ChromeJavaScript はとても高速なことでも有名ですが、その実行エンジンは V8 と呼ばれます。V8 自体は独立したモジュールであり、Node.js 等にも使われております。 V8 が JavaScript を高速に実行する技術の一つが JIT (Just In Time) コンパイルです(一般的に JIT と呼ばれます)。これは、そのまま実行すると遅い JavaScript を実行中にリアルタイムに直接マシンコードに変換し(これが Just In Time と呼ばれる所以です)、途中からそのコードに入れ替えて実行することで高速化を達成しています。特に何度も実行される関数で効力を発揮します。 JIT という名前は聞いたことがあろうとも、実際に JIT がどのようなコードを実行しているのかを確認する機会は滅多にないでしょう。この記事では、実際に V8 の JIT の出力を確

  • 【VSML/VSS】動画を編集できる言語を作ってみた!

  • 全国1800自治体のITシステム共通化へ、人手不足に対応…給付金や学校事務で

    【読売新聞】 政府は、全国約1800の地方自治体が使うITシステムを共通化する方針を固めた。人口減少とともに、自治体の職員も不足してシステムの維持が困難になる恐れがあり、学校の事務など各自治体に共通する業務のシステムを統一して行政事

    全国1800自治体のITシステム共通化へ、人手不足に対応…給付金や学校事務で
    dhrname
    dhrname 2024/05/27
    https://kikakurui.com/x0/X0007-2001-01.html 日本産業規格JIS X 0007 : 2001の「構造化プログラミング」の項目を、ちゃんとダイクストラ抽象化やホーア・データ構造化やダール・オブジェクトクラスに対応した説明にしてほしい
  • Rustで作るプログラミング言語 ——コンパイラ/インタプリタの基礎からプログラミング言語の新潮流まで

    このの概要 小さなプログラミング言語から格的なプログラミング言語へ……ステップバイステップでの開発を通して,プログラミングそのものへの理解を深めよう! こんな方におすすめ コンピュータサイエンス,とくにプログラミング言語そのものやコンパイラについての素養を得たいと考えている人 他言語でのプログラミング経験があり,Rustの習得に興味のある人。とくに,学習のための題材を探している人 第1章:プログラミング言語概論 プログラミング言語の分類 他の切り口での分類方法 コンパイルパイプライン 第2章:スタックベース仮想マシン 仮想マシン概論 Rustでの実装 標準入力からの読み込み パースとコマンドの実行 ブロックとネスト構造 if制御構文 変数の定義 複数行のソースコードへの対応 関数呼び出し 関数の再帰呼び出し WebAssemblyへのコンパイルとブラウザでの実行 第3章:プログラミング

    Rustで作るプログラミング言語 ——コンパイラ/インタプリタの基礎からプログラミング言語の新潮流まで
  • 今どきのプログラミング言語では当たり前! Modern C++で使えるモダンな言語仕様

    はじめに C言語から派生したオブジェクト指向プログラミング言語であるC++は、21世紀に入ってまったく別物とも言えるプログラミング言語に成長していきました。それは、Modern C++と称されています。1990年代にC++を触っていたプログラマが現在の仕様を知れば、隔世感に苛まれるのではないでしょうか。連載では、かつてはC++をたしなんでいたという方、今からC++言語を始めるという方に向けて、Modern C++らしい言語仕様をピックアップし紹介していくことで、今のC++言語の姿を理解していただきます。 対象読者 かつてはC++をたしなんでいたという方 今からC++言語を始めるという方 モダンなプログラミング言語のパラダイムに興味のある方 必要な環境 記事のサンプルコードは、以下の環境で動作を確認しています。 macOS Sonoma/Windows 11 Xcode Command

    今どきのプログラミング言語では当たり前! Modern C++で使えるモダンな言語仕様
  • C++erは全員戻り値型の後置記法を使おう - ペイントソフト開発日誌

    目次 目次 「戻り値型の後置記法」って何? 何が嬉しいの? 問題点 「戻り値型の後置記法」って何? C++11から導入された言語仕様です。 タイトルの呼び方は自分が勝手に使っているだけで、英語圏だと「trailing-return-type」がよく使われるらしい。 cpprefjp.github.io この仕様を使うと例えば以下のようなコードが int Add(int a, int b) { return a + b; } このようになります。 auto Add(int a, int b) -> int { return a + b; } 何が嬉しいの? この仕様はC++のメタプログラミングで戻り値型の推論を簡単に行う目的で使用されます。 なんだ、そんなC++上級者のための機能なんて下々の人間には関係ないじゃん、とお思いかもしれませんが、この機能にはもう一つわかりやすい大きなメリットがある

    C++erは全員戻り値型の後置記法を使おう - ペイントソフト開発日誌
  • Tagged Type(Branded Type)を使って飛行機の不時着や人工衛星紛失を防ごう / Scala 3ではTagged Typeを簡単に作れる - Lambdaカクテル

    Tagged Type というテクニックがある(TypeScript界隈などではBranded Typeと呼ばれているようだ)。実行時の型としては同じだが、型システム上はこれを区別して別物として扱い、混同できなくする仕組みを作るためのものだ。 AIくん!サムネイラスト作って!と頼んで作ってもらった画像 Tagged Type 単位の取り違えによる事故は後を絶たない。世の中には、キログラムとポンドを混同して飛行機があわや墜落しかけたり、メートルとヤードを混同して人工衛星がどっかに行ったりしている。尊い人命や国民の血税と比べるといささか霞むかもしれないが、ユーザIDとペイロードを間違えて送信したり、金額と口座番号を取り違えて送金したり、秘密鍵と公開鍵を間違えて表示したりしてしまえば、プログラマが大変な苦労をするか、会社そのものが傾くだろう。 しかしながら、データとしてはどちらも同じDouble

    Tagged Type(Branded Type)を使って飛行機の不時着や人工衛星紛失を防ごう / Scala 3ではTagged Typeを簡単に作れる - Lambdaカクテル
  • 0から作るOS開発

    0から作るOS開発について ここではOS(のようなもの)を自分で作るための 簡単で基礎的な技術を載せています。 このホームページはC言語の基礎的な知識がある方を対象としています アセンブラなども取り扱います 何故? プログラムってどうやって動いているんだろう? OSってなんだろう? どうやって動いているんだろう? プログラム作ったことあるけどmain関数が動く前ってどうなってるんだろう? と思ったことありませんか? こんなふうに考えてもんもんとして過ごしていませんか? そんな方のためのこのホームページです! その当時 ふと疑問に思って オペレーティングシステムに関する技術を読んでみましたが、 メモリ管理とかプロセスがどうたらこうたらと小難しいことばかりで 具体的にどう動くのか(もちろん十分具体的に書かれており 頭がついていってないだけなのですが。。。。)、 もっと言えばどうやって作るのか

  • 0から作るOS開発 環境準備その1 Cygwinとコンパイラとアセンブラ

    OSを作るために コンパイラとアセンブラ(ここではC言語のコンパイラ)が必要かと思います UnixやLinuxを使っている方は 大抵最初からあるかと思いますし、 無いとしてもそのような方は自前で準備できるので 説明は省きます 自分も含め多くの方はWindowsを使用されて いるかと思いますので、その準備をしたいと思います ここではCygwin(コンパイラを含むツール)とnasm(アセンブラ)をインストールします コンパイラとアセンブラを手に入れる まずコンパイラを手に入れてみましょう。 コンパイラを手に入れるために Cygwin をインストールしてみます (気に入らない方はVisual C++とかでも一応できまるようになりますが、 ちょっとした智識が要ります。挑戦してみるのも良いかもしれません) CygwinはUnixのシェルみたいな感じで使える&Unixのツールが 使えるのでプログラムす

  • スレッドとプロセスの違いを完全に理解する

    はじめに こんにちは、FarStep です。 プログラミングを学ぶ中で、「プロセス」と「スレッド」という言葉を耳にしたことがある方は多いと思います。 しかし、これらの違いを明確に説明できる自信がない方も多いのではないでしょうか。 記事では、プロセスとスレッドの違いについて、エッセンスを抽出して 解説します。 説明を簡潔にしましたので、記事は 5 分程度で読み終えることができます。 記事の内容を自分の言葉で説明できるようになれば、プロセスとスレッドの違いの理解は十分でしょう。 それでは、始めます 🚀 プログラムとは プロセスとスレッドの違いを理解する前に、まずは「プログラム」について理解しましょう。 プログラムとは、プログラミング言語で書かれた一連の命令 のことです。 プログラミング言語の例としては、以下のようなものがあります。 C 言語 Java Python Ruby JavaS

    スレッドとプロセスの違いを完全に理解する
    dhrname
    dhrname 2024/05/03
    「オブジェクトの行動パターンが、アルファベットとして選ばれたイベントの有限集合を用いて記述されるとき、それを表すためプロセスという言葉を用いよう」 「ホーアCSPモデルの理論」(吉田信博訳)より引用
  • アセンブリ言語で”Hello world!”を出力するコードを作成・実行してみる

    コード作成 NASMでアセンブルするコードを作成していきます。 コードの作成については、以下の項目に分けて解説します。 データセクションの定義 テキストセクション開始の宣言とエントリポイントの指定 テキストセクションの定義 1. データセクションの定義 まず最初に、データセクションの定義を行います。データセクションとは、プログラムで使用する定数や変数を格納するための場所です。今回の場合は”Hello, world!”の文字列がデータにあたります。 以下のように定義します。 section .data 「section .data」でデータセクションの開始を宣言します。 msg db ‘Hello, world!’,0xA 「msg」はラベルで、’Hello, world!’という文字列と改行文字(0xAは改行文字のASCIIコード1)をメモリに格納します。 「db」(Define Byte

    アセンブリ言語で”Hello world!”を出力するコードを作成・実行してみる
  • Pythonグラフ入門

    Matplotlibの2Dグラフ 折れ線グラフ 棒グラフ 積み上げ面グラフ 散布図 ヒストグラム ヒートマップ 等高線図 極座標系の図 箱ひげ図 円グラフ Matplotlibの3Dグラフ 3次元の折れ線グラフ 3次元の散布図 3次元の等高線図 ワイヤーフレーム サーフェスプロット Matplotlibの設定 図のタイトル Figureオブジェクトの書式 軸の設定 目盛りの設定 凡例の設定 線の書式 色の書式 カラーマップ 文字の書式 日付と時刻の書式 グラフの保存 複数のグラフ 日語表示 オブジェクト指向なグラフ作成 Tips Seaborn ヒートマップ 2変数間の関係 relplot 多変数間の関係 pairplot カテゴリ変数の関係 catplot 見た目の変更 Pandas 折れ線グラフ 棒グラフ 積み上げ面グラフ 散布図 グラフ作成の共通設定 ご案内 当サイトについて お問

    Pythonグラフ入門
  • 指定されたページが見つかりません。|Infoseekニュース

    404 NOT FOUND 指定されたページが見つかりません。 掲載から一定の日数が経過した記事は、 配信社との契約に基づき削除される場合がございます。 (その場合、一定期間経過後は記事を見ることが出来ません。) それ以外のケースについては、お手数ですが 以下のいずれかの方法でページをお探しください。 ブラウザの再読み込みを行う 入力したURL(ページアドレス)にタイプミスがないか確認する ブラウザの「戻る」ボタンを押して前画面からやり直す

    指定されたページが見つかりません。|Infoseekニュース
  • Windowsで動くプログラミング言語に脆弱性、引数の扱い方の穴を突いて攻撃

    CERT Coordination Center (CERT/CC, Carnegie Mellon University)は4月10日(米国時間)、「VU#123335 - Multiple programming languages fail to escape arguments properly in Microsoft Windows」において、Windows上で動作する複数のプログラミング言語から引数を適切にエスケープしない脆弱性を発見したと報じた。この脆弱性はアプリケーションのコマンドインジェクションにつながるとして注意を呼びかけている。 VU#123335 - Multiple programming languages fail to escape arguments properly in Microsoft Windows 脆弱性の詳細 多くのプログラミング言語にはオ

    Windowsで動くプログラミング言語に脆弱性、引数の扱い方の穴を突いて攻撃
  • C言語向けコルーチン非同期 I/O ライブラリ neco を使ってみた。

    はじめに C言語でコルーチンを扱う方法は色々ありますが、専用の命令を専用の記述方法で実装しなければならなかったりなど、あまりとっつきやすいものではありませんでした。 今日 X/Twitter のタイムラインで見付けた neco はまさにそんな悩みを解消できる物でした。 neco とは neco はコルーチンを使った非同期 I/O ライブラリです。 コルーチン: 開始、スリープ、一時停止、再開、移譲、および結合。 同期: チャネル、ジェネレータ、ミューテックス、条件変数、および待機グループ。 デッドラインとキャンセルのサポート。 ファイルディスクリプタを使った Posix フレンドリーなインターフェース。 ネットワーク、シグナル、ランダムデータ、ストリーム、およびバッファ付き I/O の追加 API。 公正かつ決定論的なスケジューラを備えた軽量ランタイム。 高速なユーザースペースのコンテキス

    C言語向けコルーチン非同期 I/O ライブラリ neco を使ってみた。
    dhrname
    dhrname 2024/04/12
    「構造化プログラミング」のコルーチン(coroutine)は 、ダイクストラ抽象化とホーア・データ構造化とダール・オブジェクトクラスの知識が必要 https://archive.org/details/Structured_Programming__Dahl_Dijkstra_Hoare/page/183/mode/2up
  • Python滅ぼす協会に入会したい

    なぜ令和にもなって動的型付け言語を使うのか シフトレフトという概念が生まれたのは二十年以上も前のはずだ。 それにもかかわらず動かしてみるまで答え合わせもできない言語で開発をするという発想自体がどうかしている。 同じ動的型付けといってもJavaScriptはブラウザという事情があるし、型の表現力に優れたTypeScriptがあるからまだよい。 しかし、Pythonはどうだ。他にいくらでも選択肢があるなかで、サーバーサイドにわざわざ選定する言語ではなかろう。 貧弱な型ヒント、しかも書いたところで大した効用もない。 使っている外部ライブラリにひとつでも型ヒントがクソなものがあれば即座に破綻する。 型というガードレールもシートベルトもなしで糞を撒き散らしながらする開発にはうんざりだ。 シンタックスもキモい 動的型付けもさることながら、シンタックスもキモい。とにかく思考を妨げる語順になっている。 m

    Python滅ぼす協会に入会したい
    dhrname
    dhrname 2024/03/30
    let多相、let x = let n = 10; in n end; y = 11; in x() + y end;とかをPythonでサポートすればよい。ただし、連接はともかく、ダイクストラの選択と繰り返し(再帰データ構造)での抽象化がlet文では困難なので、結局、class文で構造化する
  • 大学教授にも理解できないたった19行のコード - dhrnameのブログ

    結論から言うと、構造化プログラミングには、大学教授ですら理解できないようなコードが存在する。しかも、それはたったの数十行である。 今回はそのコードを紹介するとともに、「ソフトウェアの専門家を育てること」の重要性を訴えていきたい。読者はこの記事の後半で紹介するコードがなぜ理解不能となるのか、ぜひとも、その理由を考えてもらいたい。 定義 まず、用語の定義を行う。 「クラス」と「オブジェクト」の2つの用語は「構造化プログラミング」*1の定義に従う。 特殊な実例(instance)が集まったクラス(class)なのである。いい換えると、動的システムに現れる現象を、現象のクラスとしてひとまとめにし、それぞれのクラスをプログラム部分として記述しようというのである。 (「構造化プログラミング」日語版199ページより引用) 存在し続けるブロックの実例のもとになる手続きをクラス(class)という。そして

    大学教授にも理解できないたった19行のコード - dhrnameのブログ
    dhrname
    dhrname 2024/03/25
    今すぐ、国は、国費を投じて、ソフトウェアの専門家を育てたほうがいいんじゃないかな
  • FFT Package 1-dim / 2-dim

    General Purpose FFT (Fast Fourier/Cosine/Sine Transform) Package 1-dim DFT / DCT / DST Description This is a package to calculate Discrete Fourier/Cosine/Sine Transforms of 1-dimensional sequences of length 2^N. This package contains C and Fortran FFT codes.

    dhrname
    dhrname 2024/03/11
    離散フーリエ変換
  • 1行で発狂するコード - Qiita

    人は1行の記述で死ぬこともある 公開からコンスタントに閲覧をいただいている以下の記事。需要がありそうなので、もう1つ記事を書いてみようと思う。 題材は前回同様のJavaScriptのクソコードではあるが、前回は冗長を極めたクソコードであるのに対し、今回はたった1行である。 1行なのに、なんと示唆深いに富む(決してほめていない)コードだろうか。 不可思議なコード では、実際に見てみよう。 return a = a >= 10 ? 10 : a >= 5 ? 5 : a >= 3 ? 3 : a >= 2 ? 2 : 1, z * a; これを見て、何が return で返されるかわかります? 代入演算子 最初見たとき、代入文 a = ××× の評価値って何になるのかな? a が return されるのかなと思いました。 割り当て操作は、割り当てられた値として評価されます。 JavaScrip

    1行で発狂するコード - Qiita