タグ

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

  • 私と型システムとポエム

    最近巷では俄に型システムについての言及が増え、型システムポエマーが増えてる気がするので自分もその時流に乗りたい。 完全にポエムだけどなんかあったら随時指摘ください。直します。 TL;DR 言いたいことはまとめると次 型システムは程度問題なのでちょうどいいところを探すべき 型は万能でも強さが正義でもない(だから未だに研究されてる) よく知りもしないくせに計算機科学を侮辱するのはやめろ 予防線 あくまでポエムですので中身はないです 私は型理論専攻で学位はとったものの研究者ではないのであまり信用しすぎないように 型システムの過去 型システムは大まかに次のような利点があるとされてきた(個人的主観) 「異常」なプログラムを検出する仕組み 静的解析による分かりやすいエラーメッセージ 型そのもののドキュメント性 IDEでのcompletionに貢献 最適化に貢献 (数学に正しく裏打ちされたsemanti

  • コーディングをするときに鼻血がでるほど便利なwebツールリスト - Qiita

    普段お世話になっているwebツール達の紹介です。 以下のサイトはすべて 無料 & 登録不要 です。 正規表現 regexper 正規表現を可視化してくれます。 複雑な正規表現を書くときやコードリーディングのお供に重宝します。 Rubular Rubyの正規表現をテストできます。 JSON JSON FORMATTER & VALIDATOR JSON系のツールが集まったサイト。 それぞれ、サイト名とドメインが違うのでリンクはそのうちの1つになっています。 (画像クリックでそれぞれのツールに飛べます。) ひとつずつ紹介します。 JSONをフォーマットしてくれます。 出力結果は折りたたむことができるので、長いJSONを読むときにも便利です。 JSONを含めた様々なデータ形式を変換できます。 Inputの以下に対応。 CSV INI JSON XML YAML Outputは以下に対応。 JSO

    コーディングをするときに鼻血がでるほど便利なwebツールリスト - Qiita
  • コーディングに対する考え方を変える6つのプログラミングパラダイム | POSTD

    私は時折、コーディングに対する考え方を変えさせられるような、従来と非常に異なるプログラミング言語に出会います。記事では、その中でも特に気に入っている発見をいくつかご紹介したいと思います。 これは、先賢による「関数型プログラミングは世界を変える!」的な投稿ではありません。記事で挙げるのは、もっと「知る人ぞ知る」的なリストです。多くの読者の方にとって、以下の言語やパラダイムは聞いたことのないものが大半だと思いますので、私が経験したように、これらの新しい概念を学ぶ楽しさを感じていただければ幸いです。 注:私は以下の言語の多くに関して最低限の経験しかありません。その発想に引き込まれたのであって、専門的知識は持ち合わせていないため、訂正すべき点や誤りがあればどうぞご指摘ください。また、記事で取り上げていない新しいパラダイムや概念に出会った方は、ぜひお知らせください。 最新情報:記事が r/p

    コーディングに対する考え方を変える6つのプログラミングパラダイム | POSTD
  • Teach Yourself Programming in Ten Years 日本語訳

    以下の文章は、Peter Norvig による Teach Yourself Programming in Ten Years の日語訳である。 翻訳文書については、以下の方々にご教示を頂きました。ありがとうございました。 Shiro Kawai さん:誤訳の訂正 三好博之さん:誤訳の訂正 竹中明夫さん:2001年7月改版分の訳、誤訳の訂正(共訳者にクレジット) Toshihiko Ono さん:誤訳の訂正 アクビさん:訳注3に関する情報 どうしてみんなそんなに急ぐの? どの屋に足を運んでも、『7日で学ぶ Java』といったハウツーを見かけるし、そのそばには Visual Basic や Windows やインターネットなどについて、同じように数日や数時間で学べると売りこむが無限のバリエーションで並んでいる。Amazon.com で以下の条件で検索してみたところ、 pubdate

    Teach Yourself Programming in Ten Years 日本語訳
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • モナド教

    前提知識:モナド モナドを理解せずともモナド教を信ずることは出来ますが,理解していればより深く納得できるでしょう. 操作 :: 型 -> 型 は,"型"から"型"へ写す"操作"の存在を表します. モナドの文脈 m が必要とする2つの操作: return :: a -> m a で,値を保ちつつ文脈 m の中に入れ込むことが出来ます. (=<<) :: (a -> m b) -> (m a -> m b) で,「値を文脈に入った別の値へ写す操作」を「文脈に入った値を同じ文脈に入った別の値へ写す操作」に変換します. id :: a -> a は値をそのまま返す操作です. id を =<< で変換して得られる操作 join :: m (m a) -> m a で,二重に文脈に入った値を一重の文脈に入った値に戻すことが出来ます. 文脈の値から生の値を取り出す型 m a -> a を持つ操作は,一般

  • Shibu's Diary: これから魔法使い(プログラマー)になる、新卒者のみなさんへ

    渋日記@shibu.jp 渋川よしきの日記です。ソフトウェア開発とか、ライフハックを中心に記事を書いていきます。 By erix! under CC-BY これから魔法使い(プログラマー)になる、新卒者のみなさんに、リレーでメッセージを送ろう、ということになりました。一発目として僕が書かせていただきます。 おまえ誰よ? プログラマーです。14歳ぐらいからプログラミングに手を染めて、N88-BASIC、C言語、x86アセンブラ、C++RubyPythonJavaScript、Erlangみたいな感じで勉強しています。まぁ、Erlangはまだまだヒヨコですが。大学を卒業して、技術研究所に就職し、社内SEをしていましたが、今年からDeNAに転職しました。 メインの言語はPythonで、Python温泉系のコミュニティに参加しつつ、日XPユーザグループの代表(あまり仕事できてない)、s

  • Scalaで後置ifを作る - rinfieldのなにか

    ターゲット 制御構文っぽいものを作ってみたいScala中級者 「Scalaに後置ifないのかよm9(^Д^)プギャー」っていう他言語の人 後置if Rubyでは後置if/unlessが多用されますよね。たぶん。 例えばこんな感じで。 # Rubyのコード puts('Hello') if 1 == 1 # Helloを表示して => nil puts('Hello') if 1 == 0 # 何もせず => nil 確かに"do [処理] if [条件]"のように英語のように読めるため可読性がいいので私も好きです。 (個人的にunlessはなぜか混乱してしまうのでキライです) こんなんScalaで使えないかなーと思ってたんですけど Scalaでは組み込み構文としては後置if/unlessはないんですねー… Javaならここで潔く諦めるところですが、 Scalaであればその柔軟性の高さか

    Scalaで後置ifを作る - rinfieldのなにか
  • なぜ Erlang/OTP を使い続けるのか

    2017 年 4 月 1 日に行われた Elixir Conf Japan 2017 の発表者用のメモです。 この資料は公開してあります http://bit.ly/naze-erlang なぜあーらんです、なぜあーらん。 概要 Elixir の話は最初に触れるだけであとは Erlang/OTP の話です。またコードも出てきません。じゃぁ何を話すのかというと、実際にいろいろな分野で Erlang/OTP を利用してきた話をします。実際使ってみてどうだったのかというのも話をします。 ただ、残念ながら話ができる内容がかなり少ないため、事例は少ないです。今回紹介する事例は氷山の一角と思って頂ければ。 実際の事例はおきゃくさまから許可が出ているものだけお話しします。ただ中身のお話しは抑え気味でいきます。 また、 Erlang/OTP を全く知らない人向けには話をしません。すごいEを読んでいて、E

    なぜ Erlang/OTP を使い続けるのか
  • 翻訳:Haskellと過ごした4年間〜ファウンダーの観点から〜 - Qiita

    BetterというEラーニングの会社をやっていたCarl Baatzさん表題のような記事を書いていて、とても有益だと思ったので訳してみました。 だいたい逐語訳ですがところどころ意訳したり端折ったりしてます。プロの翻訳家ではないので間違いもあるかと思います。ご了承ください。不安なところは原文をご参照頂ければと。自信ないところは括弧に原文を残しているので、よい訳があれば編集リクエストお願いします。あと脚注も Thank you Carl for sharing great experince and knowledge! 原文: A founder's perspective on 4 years with Haskell http://baatz.io/posts/haskell-in-a-startup/ [追記] InfoQでもこの記事が取り上げられていました。 製品開発においてHask

    翻訳:Haskellと過ごした4年間〜ファウンダーの観点から〜 - Qiita
  • 『パソコン初心者の館』

    パソコン初心者のページへようこそ。 Windowsもろくに使えない初心者がUbuntuなら使えるかと悪戦苦闘して作っているウェッブページです。 ここで暇を潰していただければ(^_^) 健康のため読み過ぎにご注意ください 歳のせいで時々キーを押し間違えて、 音を書いている個所があり、 多くの方にお楽しみいただいているようです。

  • プログラミング原則一覧 - Strategic Choice

    見つけた時に逐次エントリしている「プログラミング原則」カテゴリの一覧です。不定期に追加しています。プログラミング一般デメテルの法則DRY原則YAGNIKISS原則OAOOUNIX哲学可逆性曳光弾直交性契約による設計 DbCプログラマの三大美徳PIEの原則SLAPパフォーマンスチューニングの格言驚き最小の原則オブジェクト指向プログラミングパルナスの規則抽象データ型サブタイプ求めるな、命じよコマンドとクエリ分離原則オブジェクト指向設計パターン言語生成・使用分離の原則パターンの定義IOP

  • エゴレスプログラミング - Strategic Choice

    どういうこと?「うぬぼれ」や「プライド」を捨て、仲間に協力を求める態度でプログラミングに臨むスタイルのことです。自分の書いたプログラムの他人に見てもらい、改善点を積極的に指摘してもらいます。コードを見る側も見せる側も「自分の方が優れている」などといった自尊心を捨て、純粋に「より良いものを作る」という意識を共有します。これは、「ピアレビュー」や「オープンソース開発」の原点です。どうして?プログラマは、しばしば自分が書いたコードを私物化し、他人にバグや不具合を指摘されることを嫌います。しかし、追跡調査をすると、同僚にコードを見せ、アドバイスを謙虚に受け入れる開発現場では、ソフトウェアの品質が高くなることがわかりました。また、このような習慣は、より良いチーム環境を作るだけでなく、プログラミングのスキルの向上にもつながります。どうすれば?「エゴレスプログラミングの十戒」を心に刻みます。自分自身も間

    エゴレスプログラミング - Strategic Choice
  • ネットで簡単に学べるプログラミングの学習ツール10選 : ニキビ跡

    私が思うに、初心者の場合は上記の方法だと少しレベルが高いように感じます。参考書に出てくる用語は専門的ですし、学校に通うのはお金がかかるし、教えてもらうにしてもあまりに初心者すぎると話にならないケースがあります。 ドットインストールは、動画で手順を確認しながらプログラミングを学ぶことができます。1あたり3分程度の動画となっているので、スキマ時間を利用することができ、続けやすいプログラミング学習サービスの1つです。Webサービス関連の言語に加えて、iPhoneアプリ開発やAndroidアプリ開発、UnityAmazon Web Servicesなどの幅広い授業を受けることが可能です。

    ネットで簡単に学べるプログラミングの学習ツール10選 : ニキビ跡
  • コピペするプログラマに足りないもの 〜 プログラミング脳の鍛え方 | Social Change!

    長くなったので先に三行でまとめておこう。 コピペするプログラマが生まれるのは教育の問題ではないか(仮説) 文法は学んでも処理の流れから考えることは教わっていない(根拠) ロジックを訓練するには脳内プログラミングが良いのでは?(提案) 少し前に私のMediumで、こんな記事を書いた。タイトルが言葉足らずだったおかげで、少し話題になった。「量産型プログラマを撲滅したい」 今回の記事では、この中で書いたコピペするプログラマがなぜ生まれるのか、どうすれば良いのか、考えてみたい。 どうすれば見分けられるのか 書いたプログラムを説明させてみれば、その人が、ちゃんと考えて作れる人か、コピペでしか作れない人か、すぐにわかる。自分の書いたプログラムの流れを説明できるということは「わかって書いた」ということだ。わかっていなければ説明できない。 「わかって書く」という一見すると当たり前のことができない人もいる。

    コピペするプログラマに足りないもの 〜 プログラミング脳の鍛え方 | Social Change!
  • SIerの下請け開発者ってレベル低すぎない? - UXエンジニアになりたい人のブログ

    ネット上ではSIer批判=技術のことをわかっておらずプログラムも書けずPMも出来ない非効率でダメダメな上流工程と、 人月単位での労働力提供という業界の慣習に縛られ、持ち前の優秀な技術力・知識を生かせず非効率な作業を強いられているかわいそうな下請け開発者、という構図が確立されているように思います。 自分が関わるまでは、まあそうなんだろうなと思っていましたが、しかし実際にそういう立場のひとと関わりをもつにつれて、どうもそうではないのではないかと思うようになりました。このあたりの実情を書いていこうと思います。 なお、先に言っておきますが記事で書くことは、上流工程がどうのとか、業界の多重請け負い構造がどうのとか、給料が安くてとか労働条件が過酷でとか、そういう話とは全く関係がなく、純粋にプログラミングのスキルの話だけです。 対象はおもに詳細設計、実装UTだと思ってもらえれば。外部仕様が決まった状態

    SIerの下請け開発者ってレベル低すぎない? - UXエンジニアになりたい人のブログ
  • 私的アンリーダブルコード―他人を発狂させるための 9 のテクニック

    コードはたいてい一度しか書かれませんが、何度も何人も読むことになります。 普段何気なく書いているコードが他人の時間と精神を削っているかもしれません。 そんなわけで、個人的に辛いなと思うことを 9 つ挙げてみました。共感してもらえるものもいくつかあるんじゃないかと思います。 実体にそぐわない変数名 見分けの付かない配列とハッシュの変数名 呼び出し元で true/false を指定するだけの引数 暗黙の実行順序 [] メソッドの定義・Array の継承 ハッシュの乱用 密結合した mixin 過剰な nil guard 条件によって異なる返り値の型 推薦図書 静的型付き言語を使うことで解消される問題もありますが、その選択肢はひとまずなしということで。 Ruby 前提になっていますが、他の言語にも言えることも多いと思います。 実体にそぐわない変数名 例えば Vehicle というクラスが定義され

    私的アンリーダブルコード―他人を発狂させるための 9 のテクニック
  • 大学に入ってからプログラミングの授業が始まったのですが、最近ついていけません - どんどん未提出のレポートがたまっていきます。... - Yahoo!知恵袋

    まず, あなたはだめな学生ではありません. それは以下のことにより証明できます. 自分がついていけていないと感じている 未提出のレポート課題そのものをここに書いて解決しようとしていない, 自分で学習していこうとしている プログラミング言語のキーワードを身につけようとしている そして一番大事なこと, 他人が簡単にプログラムを書いていると感じている そしてあなたが感じた感情は優秀なプログラマはほぼ皆感じたことのある感情です. プログラミングを学習する最も効率のよいコツ, それをあなたは手にしています. それは自分のセンスで劣等感を感じることです. はっきり言うと, あなたのクラスの誰よりもあなたはプログラムを使いこなせる可能性を秘めた人間の一人です. プログラムが得意な人の中で必ずしも理系が優位なわけではありません. 言語によっては文系のセンスが生かせます. ポインタやら関数なんかの難しい話を

    大学に入ってからプログラミングの授業が始まったのですが、最近ついていけません - どんどん未提出のレポートがたまっていきます。... - Yahoo!知恵袋
  • 型安全性とは何か | POSTD

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

    型安全性とは何か | POSTD
  • 文字列アルゴリズムの学びかた - Hatena Developer Blog

    こんにちは!はてなアプリケーションエンジニアの id:takuya-a です。 みなさんは、このような疑問をもったことはありませんか? grep はどのように文字列を検索しているのか? MeCab はどうやって辞書を高速にルックアップしているのか? パーサやコンパイラを作りたいけど、何から始めればいいのか? 稿では、「文字列アルゴリズムとはどんなものなのか?」「なぜ重要なのか?」「何を知っておくべきか?」「どうやって勉強すればいいのか?」といった疑問にお答えしていこうと思います。 文字列アルゴリズムの意外な応用や、モチベーションを保ちやすい勉強のしかた、文字列アルゴリズムを勉強するために行った社内での取り組み、実装するときのコツといったトピックについても触れています。 このエントリは、はてなエンジニアアドベントカレンダー2016の22日目の記事です。昨日は id:syou6162 さんに

    文字列アルゴリズムの学びかた - Hatena Developer Blog