タグ

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

タグの絞り込みを解除

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

  • あきらめるにはまだ早い!ソースコードの品質向上に効果的なアプローチ - Qiita

    エンジニア組織を強くするためのを出版しました Qiitaでエンジニアリングをめぐる様々なコミュニケーションの問題とその解決策や考え方を書いてきた。それらの背後にあるエッセンスをこの度書籍として出版するに至りました。 エンジニアリング組織論への招待 ~不確実性に向き合う思考と組織のリファクタリング この書籍は、エンジニアリングを「不確実性を削減する」という第一原理で捉え直し、様々なエンジニアリングとその間のコミュニケーションをめぐる現象を説明していくものです。 はじめに この記事は数百万行の動的型付き言語のWebアプリケーションのリファクタリング、アプリケーションアーキテクチャの再設計の経験を基に、有効だと思われる考え方やアプローチを抜粋して紹介するものです。言うまでもなくあらゆるコードベース、アーキテクチャにおいて有効なものとは限りませんので、各々の環境や状況から適切に判断してください。

    あきらめるにはまだ早い!ソースコードの品質向上に効果的なアプローチ - Qiita
  • ラムダ計算の勉強のしかた、プログラム意味論 - きしだのHatena

    先日のエントリで手続きを記述するという側面と、式を記述するという2つの側面があるということを書きました。 プログラムの理論とはなにか そして、手続きの性質として代表的な、アルゴリズムについての勉強のしかたについてまとめてみました。 アルゴリズムの勉強のしかた そこで、今回は、式を記述するという側面の勉強のしかたと、あとこの分野は自分でもまだ全然勉強してなかったので、これからどういうを読もうと思っているかをまとめてみます。 プログラム意味論 プログラムは必ずプログラム言語、少なくとも記号で記述します。*1 そこで、プログラムの勉強という点では、どのように動くかというアルゴリズムの勉強だけではなく、どのように書けるか、書いたものにどのような性質があるのかということも知る必要があります。 例えば、2005年あたりからRubyのような動的型付け言語が流行りだし、Javaなどの静的型付けの言語との

    ラムダ計算の勉強のしかた、プログラム意味論 - きしだのHatena
  • http://www.paultaylor.eu/stable/prot.pdf

  • 一般教養としてのGarbage Collection (PDF)

    Garbage Collection ( ) (endo@logos.t.u-tokyo.ac.jp) 6 : Jan 27, 2005 1 Garbage Collection ? 2 (1) (2) ( 1) C C++, Pascal ML Java, Perl C malloc (allocate) free ( malloc Java/C++ ML tuple record ) C ( / free) 12 ML tuple record garbage collection(GC) GC • UNIX (1995 ) emacs GC • Java web Java 0.5 / ( )black box GC GC ( 1) Java Sun HotSpot VM (Ver. 1.4.2) GC 3 generational GC (6.2 ) ( ) copying GC (

  • 「ラムダ計算」を独学で学習するための,講義ノートやPDFのリンク集 (復習用の問題付き) - 主に言語とシステム開発に関して

    講義ノートの目次へ ラムダ計算は,コンピュータ・サイエンスの重要な1分野。 「λ」を使って各種の関数を記述し,λどうしの計算方法を習得すれば・・・ HaskellやF#などの関数型言語を習得するために役立つ。 プログラミングにおいて,関数についての理解を深めることができる。 複雑なアルゴリズムを簡易に記述して,挙動や性質を予測することができる。 計算機科学の,より深い専門的な話題を理解するための足がかりを得られる。 などのメリットがある。 下記に,独学でλ計算を勉強するための, 入門レベルの講義ノートやWebページを掲載する。 読みやすい便利なもの・わかりやすいものから,応用的なものへと並べてある。 質の高いものだけを精選し,わかりづらい資料は除外してある。 ラムダ計算の概要 ラムダ計算の基礎 ラムダ計算の応用 復習のための問題(入門レベル) ※λ計算を利用した計算量・計算複雑性・計算可能

    「ラムダ計算」を独学で学習するための,講義ノートやPDFのリンク集 (復習用の問題付き) - 主に言語とシステム開発に関して
  • ソフトウェア工学

    Menu Menu この授業では、Haskell と Agda を使って、ソフトウェアの信頼性を高める手法の一つである証明について学びます。 参考書 「やさしい Haskell 入門 (バージョン98)」 すごい Haskell Miran Lipova 達人プログラマー アンドリュー ハント、デビッド トーマス (ピアソン・エデュケーション) オブジェクト指向における再利用のためのデザインパターンエリッ ク ガンマ (著), ラルフ ジョンソン (著), リチャード ヘルム ( 著), ジョン ブリシディース (著), Erich Gamma (原著), Ralph Johnson (原著), Richard Helm (原著), John Vlissides (原著), 位田 真一 (翻訳), 吉田 和樹 (翻訳) プログラミング作法 ブライアン カーニハン (著), ロブ パイク

  • Numerical Computation Guide

    Contents Preface 1.  Introduction Floating-Point Environment 2.  IEEE Arithmetic IEEE Arithmetic Model What Is IEEE Arithmetic? IEEE Formats Storage Formats Single Format Double Format Double-Extended Format (SPARC) Double-Extended Format (x86) Ranges and Precisions in Decimal Representation Base Conversion in the Solaris Environment Underflow Underflow Thresholds How Does IEEE Arithmetic Treat Un

  • 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でさりげなくすごいコードが生成されていた話。 - 組み込みの人。
  • What Every Computer Scientist Should Know About Floating-Point Arithmetic

    What Every Computer Scientist Should Know About Floating-Point Arithmetic Note – This appendix is an edited reprint of the paper What Every Computer Scientist Should Know About Floating-Point Arithmetic, by David Goldberg, published in the March, 1991 issue of Computing Surveys. Copyright 1991, Association for Computing Machinery, Inc., reprinted by permission. Abstract Floating-point arithmetic i

  • クラスの命名のアンチパターン - Qiita

    昔から「名は体を表す」と言ひます。クラスの名前がクラスの果たす役割と一致してゐるかどうか常に考へ続けませう。 ImageInfo, AccountData, etc. Info って何やねん? Data って何やねん? ImageInfo って Image とはどう違ふねん?? FooInfo や FooData よりも好ましいかもしれない名前の例: FooAttribute, FooProperty, FooMetadata, FooDescription FooConfiguration, FooSetting, FooParameter FooResult, FooStatistics, FooSummary FooBuffer, FooList, FooCollection, ... ProductListItem, TranslationTableEntry, etc. Prod

    クラスの命名のアンチパターン - Qiita
  • 改訂版: プログラマーが効果的な可視化を作成する (前編) - Qiita

    改訂版について (5/7/2019公開) この記事は、私がこちらに公開したもの中では最も読まれているようです。そこで、執筆後に気づいたこと、古くなった情報、新しい技術動向などを考慮に入れて改訂をしました。主な変更点は以下の通りです: 新しいセクションの追加 最近のの紹介 細かな表現の修正 この記事は複数のセクションに分かれていますので、前編から始め、順番にアップデートして行きたいと思います。何かお気付きの点などありましたら、コメント欄、もしくはkonoアットマークucsd.eduにお願いいたします。 はじめに この記事は、可視化の専門家ではない人がコンピュータを使ってデータ可視化を実際に行う場合に必要な、一般的なノウハウをお伝えするシリーズの第一回です。 前編: 効果的なデータ可視化とはどのようなものか? (稿) 中編: 分かりにくい可視化を避けるための手法の選択 後編: Part 1

    改訂版: プログラマーが効果的な可視化を作成する (前編) - Qiita
  • yak shaving で人生の問題の80%が説明できる問題 - bkブログ

    yak shaving で人生の問題の80%が説明できる問題 つい最近、 yak shaving (ヤクの毛を刈る)、という言葉を知りました (原典)。これは「一見無関係に見えるけど、真の問題を解くのに必要な問題を解くのに必要な(これが何段階も続く)問題を解くのに必要な活動」という意味の言葉です。 yak shaving は、ようするに「ある問題を解こうと思ったら別の問題が出てきて、それを解こうと思ったらさらに別の問題が出てきて…」ということが延々と続く状況を表しています。ちなみに、ヤクとは毛が長い、牛の一種です。 yak shaving は、以前に覚えた bikeshed と同じくらい便利そうな表現です。というもの、プログラムを書いていると yak shaving 的な状況がすぐに発生するためです。 たとえば、「Amazon のほしい物リストを CSV 形式に変換して Excel で読み

  • New community features for Google Chat and an update on Currents

    Join the official community for Google Workspace administrators In the Google Cloud Community, connect with Googlers and other Google Workspace admins like yourself. Participate in product discussions, check out the Community Articles, and learn tips and tricks that will make your work and life easier. Be the first to know what's happening with Google Workspace. ______________ Learn about more Goo

    New community features for Google Chat and an update on Currents
  • Yesod勉強会

    18. 例import Network.CGIimport Text.Htmlmain :: IO ()main = runCGI (handleErrorscgiMain)cgiMain :: CGI CGIResultcgiMain = output $ renderHtml $ dothehtml << [ header $ thetitle << "Test Page!" , body << [ h1 << "Hoge-" , paragraph << [ primHtml "Hello, World!" ]]] 19. 参考:pficommonのCGIライブラリHaskellのCGI+HTMLを下敷きに作ったclass my_cgi : public xhtml_cgi{public: void run(){ html__{ head__{ title__{ text__("Te

    Yesod勉強会
  • 本の虫: 多くのプログラマは言語を表面的な理解だけで使っている

    一般のプログラマの多くは、プログラミング言語というものを、ごく浅い表面的な理解だけで使っている。これは、いわゆる「入門書」によるところが大きい。入門書は、言語をできるだけパターンで教えようとする。かくかくしかじかの場合には、とらとらうまうまのように書いておけばいい、などといった具合だ。 たとえば、配列の全要素や、aggregateの全メンバーをゼロで初期化したいとする。多くのC++プログラマは、以下のように書く事であろう。 int a[100] = {0} ; このコードは、正しく動く。配列aの要素は、すべてゼロで初期化される。しかし、C++という言語を考えた場合、{0}と書く必要はない。空の{}で十分なのである。 int a[100] = {} ; では何故、多くのC++プログラマは{0}と書くのか。それは、多くの参考書が、そのように書いているからに過ぎない。大多数のC++プログラマは、

  • Learn You Some Erlang for Great Good!

    Hey there! This is Learn You Some Erlang for great good! This book is for you if you’ve got some programming experience and if you’re not too familiar with functional programming. It can still be useful if you’re too good for that, as we progressively go into more and more advanced topics. The book started as a free online guide, and you can still read it that way. If you prefer the soft touch of

  • クラスの「継承」より「合成」がよい理由とは?ゲーム開発におけるコードのフレキシビリティと可読性の向上 | POSTD

    コード構造における重要な問題として、複数のクラスを共有する場合に合成と継承のどちらを用いるかという点があります。“has a”の関係と、“is a”の関係と言われる2つの対比です。例えば、“ソファには綿が入っている”と、“ソファは家具である”という違いのようなものです。この例では2つの違いは非常に明白ですが、実際には、“has a”の関係でも“is a”の関係でも意味を成すケースがたくさんあります。ゲームのキャラクターについて、これはコリジョンボックスを持っているかと聞くのと、これは衝突可能なオブジェクトかと聞くような場合です。この2つは全く同じことではありませんが、それぞれが(または両方一緒に)衝突を処理する主構造として用いられ、どちらの方がよいかは必ずしも明白ではありません。私の経験では、直感的には継承の方がよいと思うことも多いのですが、それだと問題がたくさんあって結局は合成の方がよか

    クラスの「継承」より「合成」がよい理由とは?ゲーム開発におけるコードのフレキシビリティと可読性の向上 | POSTD
  • Haskellを愛する若者たちへ | POSTD

    この手紙は、”熟練者”ならではの知識を語るものではありません。新人かベテランかに関わらず、私たちの誰もが繰り返し学び、覚えておくべきことについて書いています。ここでは、一般的な傾向や、聞けばなるほどと思うような傾向、重要とされていることを新たに学んで興奮している時に見られる傾向を紹介します。また、学んだことの面白さや重要性を人にきちんと伝わるように話すことの難しさについてもお伝えします。この手紙はかなり具体的に書いています。一般的な話をするなら具体的なことも併せて話さなければ理解してもらえないと悟ったからです。これは代数的構造やその他の抽象的な概念についても言えることですね。この手紙には、私が頭に入れておきたい、また皆さんに共有したいアドバイスが詰まっています。インターネット上で適切とは言えない振る舞いをしている人に出くわした時、そんなことはめったにないでしょうが、そんな時に思い出したい内

    Haskellを愛する若者たちへ | POSTD
  • 型安全性とは何か | POSTD

    以前書いた(C言語についての) メモリ安全性について定義した記事 について、型安全性について説明する記事も投稿してほしいというコメントがありました。型安全性についてはかなりよく知られてきていると思いますが、ズバリこうだと簡単に定義できるほどにはまだ理解が浸透していません。特に誰かが”Javaは型安全な言語だ”と言った場合、これは厳密に何を意味するのでしょう。全ての型安全な言語はある意味”同じ”と言えるでしょうか。ある特定の言語について、そして一般的な意味で、あなたを悩ませる型安全性とは何でしょうか。 実際のところ、型安全性が何を意味するのかは言語の型システムの定義によります。最もシンプルなケースでは、型安全性はプログラムの動作が正しく定義されるように保証します。もっと一般的な話をすると(この記事ではそのあたりをカバーするつもりですが)、言語の型システムはそのプログラムの正確さと安全性を推論

    型安全性とは何か | POSTD
  • プログラミング初心者が中・上級者になるための近道

    初心者と中級者、上級者の違いとは何でしょうか? 初心者は、 知識が少ない 開発したソフトウェアの数が少ない 中級者・上級者はその逆で、 知識が多い 開発したソフトウェアの数が多い その結果生まれる実質的な差は、 「初心者はかんたんなものしか作れないけど、中級者・上級者は難しいものを作れる!」 ということです。ですから、初心者が中上級者になるには難しいソフトウェアを作るのに役立つ知識を身につければ良いわけです! 難しいソフトウェアとは、 ロジックが複雑で難しい 規模が大きい 性能要件が厳しい 納期が短い など、いろいろな難しさがあります。 これらのハードルに対抗する知識・技術について紹介します。 規模が大きいソフトウェアを作るための技術 規模が大きいソフトウェアを作るための技術には、以下のようなものがあります。 モジュール分割 アプリケーションアーキテクチャ フレームワーク プログラミング作

    プログラミング初心者が中・上級者になるための近道