タグ

関連タグで絞り込む (403)

タグの絞り込みを解除

programmingに関するrydotのブックマーク (1,404)

  • Crafting Interpreters

    Ever wanted to make your own programming language or wondered how they are designed and built? If so, this book is for you. Crafting Interpreters contains everything you need to implement a full-featured, efficient scripting language. You’ll learn both high-level concepts around parsing and semantics and gritty details like bytecode representation and garbage collection. Your brain will light up w

  • 多値について本気で考えてみた - ぐるぐる~

    先日のエントリの反応として、多値の批判をしているように受け取られた方がいました。 実際には、多値の批判をしているのではなく、Go言語の「多値とそう見えるけど違うものがある」という仕様を批判したものでした。 また、タプルにこだわっているという受け取り方をした方もいました。 このエントリでは、「タプルにこだわっているのではない、多値にこだわっているのだ」ということを説明しようと思います。 このエントリで出てくるコードは言及がない限り妄想上のもので、実際の言語のコードではありません。 長いから3行で。 スタックマシンと多値は仲良し。継続と多値も仲良し。 多値は多値、タプルはタプル、みんなちがってみんないい。 多値とは、カンマで区切られた単なる複数の値だよ。妄想だけどね。 これで満足して仕事に戻っていただいて構いません。以下オマケ。 多値とタプルの違い まず、多値とタプルの意味的な違いについてをは

    多値について本気で考えてみた - ぐるぐる~
  • Stop Writing Code Comments

    “Clean code should read like well-written prose” — Robert C. Martin Stop writing code comments. There is usually a high correlation between bad code and code with a lot of comments. This is the most obvious sign of messy source code. The goal of every programmer should be to write code so clean and expressive that code comments are unnecessary. The purpose of every variable, function and class sho

    Stop Writing Code Comments
  • レガシープロジェクトを引き継いだ時、最初にするべき7つのこと - Qiita

    営業一課で使っている PHPアプリを保守してくれないかな? ○○さんが1人で作ってメンテしてたやつなんだけど 皆さんは上司からこんな仕事を振られたことはないでしょうか?私は過去に何度か経験した1のですが、こういった仕事はなぜか: 正確な仕様を知っている人はいない(知ってた人は辞めた) テスト計画書・デプロイ手順書・仕様書といったドキュメントは無い ソースコードはもちろんスパゲッティ でも、業務ではガッツリ使われているので廃止できない というレガシープロジェクトばかりでした。この記事では、レガシープロジェクトを引き継いでしまった時に、最初に何をするべきか書いていきたいと思います。 なお、ここで最悪なのは「とりあえず、緊急の不具合から直してしまおう」と、いきなりコードの修正にかかることです。 ※おことわり: この記事では「遵法的な職場の」「PHPRailsで書かれた」「社員25人が使う」「業

    レガシープロジェクトを引き継いだ時、最初にするべき7つのこと - Qiita
  • 役立つコードレビュー 8つのヒント | POSTD

    役立つコードレビュー(CR)のコツは、学校では習いません。アルゴリズム、データ構造、プログラム言語の基礎は習っても、確実に役に立つフィードバックを返す方法をじっくりと教えてくれる人はいないでしょう。 コードレビューは優れたソフトウェアを作り出すには欠かせないプロセスです。レビューを通したコードは、そうでないコードよりも 質が高く、バグが少ない 傾向があります。健全なコードレビュー文化には、副次的な利点もあります。たとえば、 バス因子 を押しとどめる、新メンバーのトレーニングに最適なツールになる、など。また、コードレビューは優れた知識共有の手段でもあります。 前提 まずは、この記事のポイントの前提を提示する必要があるでしょう。それは以下のとおりです。 信頼のおける環境で作業をしている。あるいは、あなたとチームは、あなたの信頼性を高めることを目指して作業している。 コードではないシナリオでフィ

    役立つコードレビュー 8つのヒント | POSTD
  • 開発者が知っておくべきSOLIDの原則 | POSTD

    (編注:2020/08/18、いただいたフィードバックをもとに記事を修正いたしました。) オブジェクト指向プログラミングが、ソフトウェア開発に新しい設計を持ち込みました。 その結果、開発者は単一の目的を処理するために、全体のアプリケーションに関係なく、1つのクラスの中で、同じ目的や機能を持つデータを結び付けることができるようになりました。 しかし、このオブジェクト指向プログラミングで、分かりにくいプログラムやメンテナンスができないプログラムを防ぐことはできません。 そこで、5つのガイドラインがRobert C. Martinによって作り出されました。これら5つのガイドラインすなわち原則により、開発者にとって読みやすく、メンテナンスが可能なプログラムを作成しやすくなりました。 5つの原則は、S.O.L.I.Dの原則と呼ばれています(頭字語はMichael Feathereによって名付けられま

    開発者が知っておくべきSOLIDの原則 | POSTD
  • Intel(R) 64 and IA-32 Architectures Software Developer's Manuals

    Overview These manuals describe the architecture and programming environment of the Intel® 64 and IA-32 architectures. Electronic versions of these documents allow you to quickly get the information you need and print only the pages you want. The Intel® 64 and IA-32 architectures software developer's manuals are now available for download via one combined volume, a four-volume set, or a ten-volume

    Intel(R) 64 and IA-32 Architectures Software Developer's Manuals
  • DCIアーキテクチャについて語ってみるよ - uehaj's blog

    Trygve Reenskaug氏とJames O. Coplien氏らが提唱する「DCIアーキテクチャ」について、id:digitalsoulさんが論文を翻訳してくださり、またその解説とサンプル実装(groovy, scala)を示してくださっており、読んでみたところ、大変興味深いので理解した限りを書いてみます。 おじさん登場 たとえば、あるおじさんがいたとします。 このおじさんは、白いスーツ、グラデーションの入ったサングラスと金ぴかのネックレスをつけて新宿歌舞伎町に出かけ「やくざ」として振るまいます。とおりかかったお兄さんがそのおじさんに出会い、目が合ってしまい、因縁を付けられ、お金を巻き上げられてしまいます。 さて、おじさんは家に帰ります。実は、このおじさんは家では良いお父さんとして振る舞います。赤ちゃんはこのおじさんの目を見て笑いかけます。おじさんは相好を崩し、オーよしよし。 さて

  • ドメイン駆動設計 本格入門

    ドメイン駆動設計の考え方、ドメイン駆動設計を理解する三つのキーワード、エヴァンスのススメ、レガシーに立ち向かう、マイクロサービスとドメイン駆動設計Read less

    ドメイン駆動設計 本格入門
  • 3歳娘「パパ、関数をカリー化して?」 - Qiita

    再就職する前のワイ ワイ「あー、今日は休みやな」 ワイ「いうて昨日も一昨日も休みやったけど」 娘(3歳)「パパ、お絵かきしよ」 ワイ「ええで」 娘「あれ描いて。あの・・・アンパンマ(n」 ワイ「おっとそこまでや」 ワイ「著作権のあるものを言うたらアカン」 ワイ「あれやな?アンパンパーソンのことやな?」 ワイ「描いたるで」 ワイ「チョイチョイチョイ、と」 ワイ「こうやな」 娘「わあ。上手。」 娘「次はパンマ(n」 ワイ「パンパーソンやな?」 ワイ「描いたる描いたる」 ワイ「チョイチョイチョイ、と」 ワイ「こうや」 ワイ「ついでにバイキンパーソンも描いたる」 娘「すごいね。上手だね。」 娘「じゃあ、次は・・・」 娘「カリー化された関数を書いて」 ワイ「(おっと?)」 ワイ「カリー・・・カレーパンパーソンのことかいな?」 娘「ちがう、カリー化された関数書いて」 ワイ「お、おう」 ワイ「分かる

    3歳娘「パパ、関数をカリー化して?」 - Qiita
  • 現代の JavaScript チュートリアル

    私たちはこのオープンソースプロジェクトを世界中の人々に提供したいと考えています。このチュートリアルの内容をあなたが知っている言語に翻訳するのを手伝ってください。

    現代の JavaScript チュートリアル
  • 美しいソフトウェアをなぜ、どうやって書くか - Qiita

    最近、デザイナー(兼ほとんどエンジニア)の先輩と話していて確信したのが、ソフトウェアデザインはエンジニアが相手のデザインであるということです。デザイナーとエンジニアがやっていることに似通っていることがいろいろと挙がりました。 ソフトウェアも良さを「美しい」とか「きれい」とか表現すると思います。でも美しさ難しいです、人それぞれあると思います。僕の中で思っている美しさがなんなのかを吐き出してみます(実際この通りに書けてるか、これが当に美しいのか、とか言われるとちょっとドキッとしそうなので自戒の念も込めて・・)。 なぜ美しいソフトウェアを書かねばならないのか ハッカーと画家(翻訳版)に出てくる一文(原文はSICPからの引用)です。 「プログラムは、人々がそれを読むために書かれるべきである。 たまたま、それが計算機で実行できるにすぎない。」 以下はハッカーと画家からの前後の引用です。 ソフトウェ

    美しいソフトウェアをなぜ、どうやって書くか - Qiita
  • 数学初心者のための「型システム入門」入門 - 廻る技術の覗き穴

    社内で「TaPLで殴りあう会*1」が開催されるというので、型システム入門(通称TaPL: Types and Programming Languages)を購入したものの、内容が難しくて序盤からまったくと言っていいほど読み進めることができませんでした。 型システム入門 −プログラミング言語と型の理論− 作者: Benjamin C. Pierce,住井英二郎,遠藤侑介,酒井政裕,今井敬吾,黒木裕介,今井宜洋,才川隆文,今井健男出版社/メーカー: オーム社発売日: 2013/03/26メディア: 単行(ソフトカバー) クリック: 68回この商品を含むブログ (7件) を見る しかし、読めないままにしておくのは悔しいし、内容はとても面白そうなので、やはりちゃんと読めるようになりたい。 そこで基礎的な書籍とWebで情報収集してから再度挑戦したところ、なんとか読み進められるようになりました。 監

    数学初心者のための「型システム入門」入門 - 廻る技術の覗き穴
  • 【翻訳】あなたが求めていたリアクティブプログラミング入門 - ninjinkun's diary

    original: The introduction to Reactive Programming you've been missing (by @andrestaltz) (translated by @ninjinkun, reviewed by @ma0e) あなたはリアクティブプログラミングと呼ばれる新しい方法が気になっている。 勉強するのは大変で、良い教材がないのでさらに難しい。私が勉強を始めたときは、まずチュートリアルを探した。見つけたのは一握りの実践的なガイドだけ、しかもそれらは表面をなぞっているだけで、リアクティブプログラミングのアーキテクチャ全体像を構築しようとしてはいなかった。ある関数を理解するのに、ライブラリのドキュメントは役に立たないことがある。 これを見て欲しい。 Rx.Observable.prototype.flatMapLatest(selector,

    【翻訳】あなたが求めていたリアクティブプログラミング入門 - ninjinkun's diary
  • 関数の話 - ( ꒪⌓꒪) ゆるよろ日記

    こんにちは、しいたけです。 某所で関数型プログラミングとはリスト処理のことなのか、と燃えているのを見て、関数型プログラミングとは何か、ということを自分なりの考えを述べたいと思いました。春なので。 この資料は2年ほど前にSupershipの社内勉強会で使ったものですが、この中で関数とオブジェクトを対比している箇所があります。 関数もオブジェクトも、変数や関数の引数戻り値として扱える第1級の値であり、状態を持ち(メンバー変数/クロージャ)、組み合わせが可能(delegate, composition/関数合成)、である、と。 ではオブジェクト指向と関数型プログラミングで何が決定的に異なるかというと、設計・実装のアプローチに何を中心に据えるか、ということだと思います。 オブジェクト指向では、クラス・オブジェクトをモデリングし、各種のオブジェクト指向的デザインパターンを用いてオブジェクト同士を組み

    関数の話 - ( ꒪⌓꒪) ゆるよろ日記
    rydot
    rydot 2018/04/17
    actula_value (ちょっとかわいいとおもった(何
  • 読み手にやさしい if 文を書きたい - Qiita

    // 1~100のランダムな値を得る const getRandomScore = (): number => Math.floor(Math.random() * 101); const value = getRandomScore(); // 以下の様に書けば視覚的にすぐに分かる if (20 <= value && value <= 80) { console.log(`値は範囲内です:${value}`); } else { console.log(`値は範囲外です:${value}`); }

    読み手にやさしい if 文を書きたい - Qiita
  • AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~ - Qiita

    記事を終えた次は? AtCoder Beginners Selection を終えたら、AtCoder 上の過去問が AtCoder Problems に集大成されていますので、片っ端から埋めるような気持ちで精進していきましょう。記事の続編として AtCoder 版!蟻 (初級編) AtCoder 版!蟻 (中級編) AtCoder 版!蟻 (上級編) AtCoder 版!蟻 (発展的トピック編) も執筆しましたので参考にしていただけたらと思います。また、アルゴリズムとデータ構造に関するトピックを集大成した書籍として、 問題解決力を鍛える!アルゴリズムとデータ構造 (通称、けんちょん) を上梓しました。ぜひ読んでみてください。 1. AtCoder とは AtCoder は以下のコンテストサイトを運営しています。今後常に訪れることになるサイトです: AtCoder コンテスト

    AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~ - Qiita
  • 「型」のお気持ち 〜 「型なし」と「動的型」って同じ?違う? - Qiita

    はじめに 「『型なし』と『動的型』って同じ?違う?」「ピピーッ!JavaScriptRubyを『型なし言語』と呼ぶのは間違いです!」 ツイッターを見ていると、このように「型」という言葉の用法に混乱がみられるので、私見で整理してみたいと思います。 まず、「型」という言葉の用法には、大きく分けて2つあります: 変数や関数についての静的にわかる性質 静的型言語では「型」と言ったら主にこちらを指します。 値の種類を区別するための実行時のタグ付け(型タグ) 「動的型言語」と言った場合の「型」はこちらです。 静的型言語でも「実行時型情報」という名前で、値にタグがついている場合があります。 前者の立場では、「動的型言語」は「型がない」ように見えて、後者の立場では、「動的型言語」にも「型がある」ように見えます。 「静的型 vs 動的型」(あるいは「型あり vs 型なし」)の議論をする際は、「型」という言

    「型」のお気持ち 〜 「型なし」と「動的型」って同じ?違う? - Qiita
  • タイムゾーン呪いの書 - Qiita

    コメント欄で「Software Design 誌 (2018/12) に寄稿した内容や修正などをこちらの記事にも適用したい」と言ったあと、やるやる詐欺でずっと放置していましたが、三年近く経ってようやく 2021年 7月に大幅に改訂し、同時に Zenn に引っ越すことにしました。 タイムゾーン呪いの書 (知識編) タイムゾーン呪いの書 (実装編) タイムゾーン呪いの書 (Java 編) なにやら長くなりすぎたので三部構成になっています。 この Qiita 版は、しばらく (最低一年は) 改訂前のまま残しておきます。 タイムゾーンの存在はほぼ全ての人が知っていると思います。ソフトウェア・エンジニアなら多くの方が、自分の得意な言語で、タイムゾーンが関わるなにかしらのコードを書いたことがあるでしょう。ですが、日に住んで日仕事をしていると国内時差もなく1 夏時間もない2 日標準時 (Japa

    タイムゾーン呪いの書 - Qiita
  • Nim Programming Language

    Nim is a statically typed compiled systems programming language. It combines successful concepts from mature languages like Python, Ada and Modula. Efficient Nim generates native dependency-free executables, not dependent on a virtual machine, which are small and allow easy redistribution. The Nim compiler and the generated executables support all major platforms like Windows, Linux, BSD and macOS

    Nim Programming Language