タグ

プログラミングに関するmitsugusakamotoのブックマーク (452)

  • プログラムは思った通りには動かない。書いたとおりに動くのだ

    プログラムは思った通りには動かない。書いたとおりに動くのだ Any code doesn't run as you thought, run as it wrote 2015.06.17 Updated by Ryo Shimizu on June 17, 2015, 10:13 am JST

    プログラムは思った通りには動かない。書いたとおりに動くのだ
  • コードレビューのベストプラクティス | POSTD

    Wiredrive では、私たちはかなりの数のコードレビューを行います。しかし、ここで働き始める前には私はコードレビューなどしたことがありませんでした。今回は、私がコードレビューをする時に何に注目するようにしているかや、私の考え出したベストなコードレビューのやり方をお話したいと思います。 コードレビューとは、簡単に言うと2人以上の開発者で問題を引き起こしそうなコードの修正について話し合うことです。コードレビューをすることのメリットについては多くの記事で語られており、知識を共有できること、コードのクオリティが上がること、開発者が成長できることなどが挙げられています。しかし、レビューを行う上で、どのように進めていくかという具体的なことについてはあまり多く語られてないように私は思いました。 レビューで何に注目するか アーキテクチャ/デザイン 単一責任原則 : 1つのクラスは変更する理由が2つ以上

    コードレビューのベストプラクティス | POSTD
  • Unix v6 の C コンパイラが面白かった話 - 兼雑記

    Unix v6 の C コンパイラをいじってみようと見てたのですが、これがなかなかすごい物体でした。 読んでて、「いやいくらなんでもこんな作りなわけが…」と思って説明文を探して、 http://plan9.bell-labs.com/7thEdMan/v7vol2b.pdf の「A Tour through the UNIX C Compiler」に説明あるよと教えてもらって読んでみたら、当にそんな作りだった、みたいな。 コンパイラの1段目はプリプロセスして構文木的なものをファイルに吐いて終わりです。2段目は構文木を読みつつコード生成していく。 構文木のノードの種類に対して switch してやること決める…的なものが、データドリブンな方法で書かれてます。データを保存するフォーマットは、 JSON とかではなく、時代が時代ですのでアセンブリです。こういうやつ https://github

    Unix v6 の C コンパイラが面白かった話 - 兼雑記
  • ざっくりアセンブラ入門 - Qiita

    書いてる人 プログラミング学習サービスやら、ペットサロン予約サービス、風俗検索サービスなど色々とやっている「かずきち」です。 ■運営サービス一部 http://crazy-wp.com/ http://webukatu.com/ 新宿のホストから不動産・保険の営業を経て、HTMLって何?という状態から3ヶ月独学でプログラミングやデザインを学び、IT業界で1年間実務経験を積んで年収は1超え。現在は起業家としてサービス運営やら不動産運営をしています。 Qiita内にそれ系の記事も書いてます。 エンジニアで稼ぐために大切な13のコト WEBサービス起業したい人に読んで欲しい18のコト アセンブラってなに? アセンブリ言語のこと。C言語よりももっと機械に近く、機械語(1と0の世界)を人間に分かり易くした言語。 C言語などを作るための言語。 C言語には1行のプログラムには何行ものアセンブリ言語が

    ざっくりアセンブラ入門 - Qiita
  • ソフトウェア開発で得た教訓22箇条 | POSTD

    1. 小規模なものから徐々に拡張していく。 私は日頃、新たなシステムを作るにせよ既存のシステムに機能を追加するにせよ、必要な機能すら殆ど持たないようなとてもシンプルなバージョンを作るところから始めるようにしています。そこから当初予定していた機能まで、段階的にソリューションを拡張していきます。私は初めから細部にわたって計画をできたことはありませんが、代わりに開発を進めていく中で新しく見つけた情報をソリューションに役立たせます。 私はJohn Gallの、この言葉が好きです。 “複雑なシステムというのは、往々にしてシンプルなシステムから発展したものだ。” 2. 同時に複数のものを変えない。 開発中にテストが失敗したとき、あるいは機能がうまく動作しなかったとき、1つだけ変更すれば、問題発見が格段に容易になるでしょう。言い換えるなら、短いイテレーションを行いなさいということです。1つずつ変更を行い

    ソフトウェア開発で得た教訓22箇条 | POSTD
  • Pythonらしいコードの書き方 - Kesinの知見置き場

    はてなブログに移行して最初の記事はやはりPythonネタにしました。 はてなブログいいですね。デザインの編集がやりやすくなったのと、Markdownで書けるのが素晴らしいです。 PyCon 2013の動画を見ていたら、素晴らしい"Transforming Code into Beautiful, Idiomatic Python"という発表を見つけたのでそのまとめです。 今どきのPythonコードのベターな書き方を紹介しています。 Transforming Code into Beautiful, Idiomatic Python ... スライドはこちらにありました 結構長くなってしまったので、知ってる項目は読み飛ばしてもらえばと思います。 ループの基 整数のループ まずは基のループ。 Cのfor int i=0; i<6; i++をPythonで単純に書くとこうなります。 for

    Pythonらしいコードの書き方 - Kesinの知見置き場
  • プログラマ能力指標表 | POSTD

    2015年05月27日: 表が見にくいというご意見を頂いたため、原文著者に連絡のうえ体裁を修正しました。 上位のレベルには下位のレベルの知識も蓄積されているということに注意してください。つまり、レベル n であれば n より低いレベルの知識も全てあります。 コンピュータサイエンス データ構造

    プログラマ能力指標表 | POSTD
  • Less is more:プログラミング言語設計の進歩史 | POSTD

    多くの言語は冗長性を有していますが、これらの機能を省いていくことも言語設計の進歩につながります。 巷には数多くのプログラミング言語があり、新しい言語も継続的に紹介されています。でも新しいものが古いものより優れているかというと、そうとは言えません。なぜなら、何が“優れているか”を判断する明確な尺度は存在しないからです。 それでも過去からの流れを見ていくと、優れた言語を作る1つの方向性は、言語にある冗長性を特定し、それらを持たない新たな言語をデザインすることにあるように思えます。 「完璧とは、それ以上足せない時ではなく、それ以上引けない時に達成される」 – Antoine de Saint Exupéry この投稿では、現在までに知られている言語の冗長的機能を見ていくと共に、恐らく冗長性を有しているだろうと思われる機能についても触れていきます。 自ら墓穴を掘るあらゆる可能性 初めてコンピュータ

    Less is more:プログラミング言語設計の進歩史 | POSTD
  • Pythonで学ぶ 基礎からのプログラミング入門(1) Pythonでプログラミングを学ぶ理由とは?

    みなさんはプログラミングは得意ですか。わざわざこのような記事を見ているということは、もしかしたら得意なかたかもしれませんね。ただ、何年もプログラミングを仕事や研究で経験されていないと「得意でない」「わからない」という場合がほとんどではないでしょうか。 連載ではそのようなプログラミングを得意としていない人を対象に、Pythonと呼ばれるプログラミング言語を使ってプログラミングの概念や文法について学んでもらいたいと考えています。そこで、Pythonの文法について教科書のように詳細に記載するというよりも、「プログラミングの普遍的な概念を理解したうえで、Pythonのコードを実際に書く」という実践的なスタイルで解説していきます。最終的には、Python以外の、CやJavaといった言語を学びたい方でも有用なコンテンツとなるよう、心がけていきます。 なお、連載はシスコシステムズ Japanの社内で

    Pythonで学ぶ 基礎からのプログラミング入門(1) Pythonでプログラミングを学ぶ理由とは?
  • How to Learn C

  • 「ソフトウェアエンジニアならば1時間以内に解けなければいけない5つの問題」をHaskellでやってみた - Qiita

    Haskellだと問題1が一番難しいともっぱらの噂の問題をやってみました。 問題1 forループ、whileループ、および再帰を使用して、リスト内の数字の合計を計算する3つの関数を記述せよ。 再帰のコードが一番簡単なので、まずはそれから。 ではついに一番難しいforループとwhileループのコードを書いてみましょう。 まず問題になるのが、Haskellにはfor文もwhile文もないというところです。まずはforループを作らなければなりません。そもそもforループ、whileループというのが、何を示すのか?というのがあんまり自明ではないのですが、C言語でのforループとwhileループだと考えましょうか。 for :: Monad m => a -> (a -> Bool) -> (a -> a) -> (a -> m ()) -> m () for init cond incr body

    「ソフトウェアエンジニアならば1時間以内に解けなければいけない5つの問題」をHaskellでやってみた - Qiita
  • The Python Tutorial — Python 2.7.18 documentation

    This document is for an old version of Python that is no longer supported. You should upgrade and read the Python documentation for the current stable release. The Python Tutorial¶ Python is an easy to learn, powerful programming language. It has efficient high-level data structures and a simple but effective approach to object-oriented programming. Python’s elegant syntax and dynamic typing, toge

  • どうやって初学者がPythonを学ぶか? — 株式会社CMSコミュニケーションズ

    この記事は、Pythonアドベントカレンダー2013 21日目の記事です。 アドベントカレンダーのシーズンが今年もやってきました。 毎年、年の瀬になると書いているアドベントカレンダーの記事ですが、他にもブログでお伝えしたいことがたくさんああります。ほとんどブログ更新出来ていませんが、元気にやっています。さらに会社としては新たな試みも始まっています。改めてご報告したいと思います。 さて、今年のPythonアドベントカレンダーは、Web関係以外ということになっています。技術系アドベントカレンダーも定着しつつあり、新たな試みを試そうと頑張っているのですが、正直私には辛い内容です。 普段からOSS CMSツールであるPloneを使った構築をメイン業務にしており、仕事のほとんどがWeb関係です。しかし、この機会にWeb以外の記事ということで書いてみようと思います。 タイトルに有るように、初学者がどの

  • コンパイラの構造を解説 | Shinta's Site

    はじめに 久しぶりに Aho氏, Sethi氏, Ullman氏の書いた Compilers(レッド・ドラゴン・ブック)という書籍を目にしたので、昔、コンパイラを作った時の事を思い出しながらコンパイラについてまとめてみました。 Translator (翻訳) Translatorとは、一つのプログラミング言語(Source Language: 原始言語)で書かれたプログラムを入力として取り、別の言語(Object Language or Target Language: 目的言語)のプログラムとしてつくり出すプログラムです。 原始言語が FORTRAN, C, Pascal などの高水準言語で、目的言語がアセンブリ言語や機械語といったような低水準言語である時、そのような Translator をコンパイラ(Compiler) と呼びます。また、原始言語がアセンブリ言語で目的言語が機械語であ

  • iOS用の業務アプリ開発を勧めない理由(ワケ)【opinions】

    Photo by David Update day [261/365] CC BY-SA 相変わらずアプリ開発の相談が減ることはなく増える一方です。弊社はiOSアプリ開発を専門にするベンダーとして7年近く皆さまからの相談を受けていますが、2014年あたりからの問い合わせ数の増え方には目を見張るものがあります。業務アプリの相談も同様です。弊社では外注を一切使わず、100%内製をポリシーにしているため、開発リソースの関係でお断りさせていただくこともあります。 1、2年ほど前、新しい取り組みに前衛的また積極的である企業や部門、キャリアが、特にiPhoneiPadの業務用導入を競い合っていました。今はそんなアーリーな時期は過ぎて一段落し、マーケティングの世界でいうところのいわゆるキャズム越えをしたタイミングなのかもしれません。いよいよ後追い型のマジョリティなグループにも導入せんとする「第二波」が

    iOS用の業務アプリ開発を勧めない理由(ワケ)【opinions】
  • Haskell のお勉強

    Haskell は関数型プログラミング言語の”標準語”として、1990 年に 誕生 (Haskell 1.0) した比較的新しい言語です。 その後、1999 年に安定した言語定義 Haskell 98 が制定され、 徐々に知名度が高くなっています。 しかし、まとまった日語の解説がほとんど無いので、 簡単な解説記事を書いてみました。 目次 Haskell とは プログラムを動かす 関数を定義する 型 入出力 Haskell で最小二乗法 自前の data と class Monad 探索 種々のデータ構造 Module 詰碁を解く

  • Python 早めぐり

    -c command 指定されたコマンドを実行 script python ファイル (.py) を読み込んで実行 argvs スクリプトまたはコマンドの引数 対話モードで起動するとき、環境変数 PYTHONSTARTUP で指定されたファイルを読み込みます。 よく使うモジュールを import しておくと便利です。 詳しくは チュートリアル 2.1. を見てください。 スタートアップファイルの例: 01: # PYTHONSTARTUP 02: 03: import sys, math, re, os, os.path 04: print 'sys, math, re, os, os.path has been imported.' 2. Python スクリプトの書式 Python スクリプトの書式は以下の通りです。 00: #! /usr/bin/env python 01: # -

  • [OCaml]書評「プログラミングの基礎」 - あどけない話

    僕はよく「関数プログラミングの入門書には何がいいか」という質問を受ける。そのときは必ずこの(と他のいくつか)を答えるようにしている。書評を書いたつもりになっていが、検索してみると書いてないようなので、反省して良書を紹介してみようと思う。 プログラミングの基礎 ((Computer Science Library)) 作者: 浅井健一出版社/メーカー: サイエンス社発売日: 2007/03/01メディア: 単行購入: 17人 クリック: 409回この商品を含むブログ (127件) を見る 書はプログラミングの経験のない人を対象としており、書名通りプログラミングの基礎が説明されている。使用する言語は OCaml である。著者の浅井先生は、お茶の水女子大学でプログラミングを教えている。授業の経験を元にしたにはよくあることだが、内容が実に整然としており、例題がこなれている。 初心者を対象と

    [OCaml]書評「プログラミングの基礎」 - あどけない話
    mitsugusakamoto
    mitsugusakamoto 2015/04/14
    これ読みたいなあ。
  • Instant Python

    インスタント・パイソン Magnus Lie Hetland  translated by jack_dul@mx13.freecom.ne.jp この文章は、プログラミング言語Pythonの最短期コースです。このコースの後 でPythonについてもっと学びたいと思った方は、Pythonのウェブサイト www.python.orgにあるドキュメント、特 にチュートリアルを見てみると よいでしょう。もしあなたが、Pythonはあなたの注目に値するかどうか知りた いというのなら、 Pythonと他の言語を比 較したページを見てみて下さい。 この入門文章は、 ポルトガル語・ イタリア語・ スペイン語・ ロシア語・ フランス語 ・ リトアニア語 ・日語に翻訳されました。そして現在、ノルウェー語・ポーラ ンド語・韓国語に翻訳する作業が進行中です。この文章は現在も変更が加えら れている最中なので、翻

  • Instant Hacking

    インスタント・ハッキング Magnus Lie Hetland  translated by jack_dul@mx13.freecom.ne.jp これは、プログラミング入門用の短い文章です。プログラムの実例はPython言 語によって書かれています。(もしあなたが既にプログラミング経験者であり、 Pythonについてのみ知りたいのなら、私 のinstantPython という記事を御覧下さい。)この記事は既に イタリア語、 ポー ランド語、日語に訳されており、現在、韓国語に翻訳する作業が進行中 です。 このページは、どうやって他人のコンピューターに侵入するかなどについて書 かれているのではありません。私はその手のことに詳しくなんてないのでメー ルを送ってこないで下さい。ハッキングとは何のことなのかもっと知りたい人 はhackerethic.orgを参照してくだ さい。 注意: プログ