タグ

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

タグの絞り込みを解除

Programmingとprogrammingに関するteracy_junkのブックマーク (1,707)

  • シャドーイングとイミュータブルプログラミング - ぐるぐる~

    シャドーイングのない言語と、イミュータブル中心のプログラミング(以下イミュータブルプログラミング)の相性って悪いのでは?と思ったのでブログに残しておきます。 シャドーイングとは 既存の変数と同名の変数を定義して、そのスコープで既存の変数にアクセスできなくする機能です。 例えば、F#ではシャドーイングができるので、 let f x = if x % 2 = 0 then (* 引数のxをシャドーイング *) let x = -1 printf "%d, " x (* スコープが抜けたので、引数のxを表示 *) printfn "%d" x f 10 (* => -1, 10 *) f 11 (* => 11 *) となります。 シャドーイングのない言語、例えばC#では同じことはできないので、別の名前を付けるか、再代入で回避することになります*1。 public void F(int x) {

    シャドーイングとイミュータブルプログラミング - ぐるぐる~
    teracy_junk
    teracy_junk 2018/11/09
    プログラミング用語としての「シャドーイング」が見慣れない言葉だったが、なるほどそういうものなのね
  • 低レイヤを知りたい人のための Cコンパイラ作成入門

    はじめに このオンラインブックは執筆中です。完成版ではありません。フィードバックフォーム このには一冊のに盛り込むにはやや欲張りな内容を詰め込みました。書では、C言語で書かれたソースコードをアセンブリ言語に変換するプログラム、つまりCコンパイラを作成します。コンパイラそのものもCを使って開発します。当面の目標はセルフホスト、すなわち自作コンパイラでそれ自身のソースコードをコンパイルできるようにすることです。 このでは、コンパイラの説明の難易度が急に上がりすぎないように、様々なトピックを書全体を通じて次第に掘り下げていくという形で説明することにしました。その理由は次のとおりです。 コンパイラは、構文解析、中間パス、コード生成といった複数のステージに概念的に分割することができます。よくある教科書的アプローチでは、それぞれのトピックについて章を立てて解説を行うことになりますが、そのよう

  • なぜ我々はいまだに文字列でコメントを書いているのか - Qiita

    あるいは、画像コメントのすすめ。 TL;DR 画像コメントのほうが意図が伝わりやすい 画像URLからツールチップで画像表示してくれるVSCode拡張機能があるよ その場で画像を作るSVGエディタもあったよ 問題提起 みなさんは、少し複雑なアルゴリズムを書くことになったときどうしていますか。 たいていの場合、いきなりコーティングに取り掛かるのでなく、 雰囲気をつかむためメモやホワイトボードに落書きすると思います。 特に幾何計算では簡単なものでも図を描いた方がいいです。こんな感じ。 図を書いたら後はコードに落とすだけです。 ね、簡単でしょう? // 指定した直線を対称軸としたときの指定した点の鏡映位置を返す function flipVectorByLine(p: Vector, line: Line): Vector { // TODO: よくわかるコメントを書く const ln = ne

    なぜ我々はいまだに文字列でコメントを書いているのか - Qiita
  • インタフェースの実装パターン #golang - Qiita

    はじめに この記事は,以下の過去にQiitaに投稿したインタフェースの実装パターンの記事に,typeやメソッド,インタフェースの基的な説明を追加してわかりやすくしたものです. Go言語における埋め込みによるインタフェースの部分実装パターン structにinterfaceを埋め込んで,動的に入れ替えるパターン まずtypeとメソッド,基的なインタフェースの実装方法についておさらいすることで,さまざまなインタフェースの実装パターンを扱う準備をしましょう. typeで型を宣言する まずはじめに,Go言語における型の宣言方法をおさらいします.Go言語をはじめたばかりの方の中に,typeの使い方を限定的にしか理解していない方をよく見かけます.ご存知のとおり,typeは型を宣言するために使うキーワードです.以下のように,構造体型やインタフェース型の宣言の際に,使用することが多いでしょう.

    インタフェースの実装パターン #golang - Qiita
    teracy_junk
    teracy_junk 2018/08/02
    『インタフェース型の宣言時に指定したメソッドリストのメソッドをすべて実装することで,インタフェースを実装することができます.Javaなどのように,implementsなどを使って明示的に実装する必要はありません』なる
  • Effective Go — プログラミング言語 Go ドキュメント v0.1 documentation

    イントロダクション¶ Goは新しい言語です。既存の言語からいろいろなアイディアを借りてきていますが、効果的なGoプログラムは、関連するような言語のプログラムとはかなり異なる性質を持っています。C++JavaなどのプログラムをそのままGoに変換しても、満足できるような結果にはなりません。所詮はJavaで書かれたプログラムであって、Goらしいプログラムにはなりません。一方、Goの視点からプログラムについて考えてみると、うまくいく可能性はありますが、既存のプログラムとは違う結果になるでしょう。言い換えると、Goらしいプログラムをうまく書くためには、Goの特性やイディオムを理解することが重要になります。また、命名規則、フォーマット、プログラムの構造などの、Goでプログラミングをするための適切な習慣を知ることも大切になります。そうすることで、他のGoプログラマが簡単にあなたのプログラムを読むことが

  • Java Generics Hell - リスコフの置換原則 - プログラマーの脳みそ

    Java Generics Hell アドベントカレンダー 3日目。 1日目 Java Generics Hell 序章 2日目 オブジェクト指向 読者の推奨スキルとしてはOCJP Silverぐらいを想定している。 前回はオブジェクト指向の中核が(継承に限定せず幅広い意味での)ポリモーフィズムではないか、という話であった。 今回はそれらをコンパイル、つまり静的型チェックによって安全を目指す「型システム」について。その中でも「リスコフの置換原則」について取り上げる。 ヒューマンエラー ボイラープレートと呼ばれるプログラミングの定型句ぐらいであれば機械による自動生成もありうるが、プログラミングというのは現代では基的に人力の作業である。 人間は簡単な問題であってもときおり誤りをおかす。一桁の足し算のようなドリルでも、延々とやらせると時折ミスが混ざる。「簡単だからミスするはずがない」「ミスをす

    Java Generics Hell - リスコフの置換原則 - プログラマーの脳みそ
  • フルスタックなWeb開発が無料で学べるFreeCodeCamp - Qiita

    FreeCodeCampとは フルスタックなWeb開発が無料で学べる オープンソースベースのカリキュラムと https://www.freecodecamp.com/ コミュニティです https://gitter.im/FreeCodeCamp/Japanese この無料のサイトからFreeCodeCampを始めることができます。 https://www.freecodecamp.com/ このカリキュラムはGithubのトレンドランキングで、 月間1位を取り続けているオープンソースから作られています。 https://github.com/FreeCodeCamp/FreeCodeCamp このサイトでこのスキルを学ぶことができます フロントエンド開発(400時間) データ可視化(400時間) バックエンド開発(400時間) 非営利プロジェクト(800時間) 面接前の準備(80時間)

    フルスタックなWeb開発が無料で学べるFreeCodeCamp - Qiita
  • 「Webプログラミングが面白いほどわかる本」を出版させてもらいました|吉村 総一郎 (sifue)

    N高等学校でプログラミングを教えているsifueと言います。日「Webプログラミングが面白いほどわかる」という、JavaScriptでプログラミング入門を終えたN高等学校の生徒が、格的なWebプログラミングを学ぶための基礎知識を習得する部分をまとめたを出版させてもらいました。N高等学校の生徒さんが1年目の9月ぐらいまでに習う内容となっています。 各所で話題となっていますN予備校プログラミング入門コースの、第1章部分は前書である「高校生からはじめるプログラミング」なのですが、このは2章から3章の前半までがまとまった内容となっており、 ●Chapter1 Linuxの基を身に付けようLinuxというOS/コンピューターの構成要素/コマンドでファイルを操作する/標準出力/viの使い方を学ぼう ●Chapter2 シェルプログラミングをやってみようシェルプログラミング/通信とネットワー

    「Webプログラミングが面白いほどわかる本」を出版させてもらいました|吉村 総一郎 (sifue)
  • 相対的なネーミングはよせ、やめるんだ! - Qiita

    たぶん1000回くらいは言われてきているがいまだに絶滅しないので、もう1回言う。ファイル名でもソースコード上の変数でもCSSのセレクタでもなんでもいいけど、相対的なネーミングはやめよう。 Safe Harbor Statement この投稿は個人の(中略)であり、所属する組織とは関係ありません。 なぜ相対的なネーミングをしてはいけないか 名前をつけた人の主観が入り込むため 時間が経つにつれ名前が実態と乖離し混乱を招くため 実装に無駄な制約をかけるため なぜ相対的なネーミングがなくならないか なにが相対的なネーミングなのか理解していないため じゃないかな多分。 避けるべき語 というわけで相対的なネーミングを回避するための禁止ワードのうち代表的なものをあげておきます。 new, 新, latest, 最新, old, 旧 など これらの時系列を表す語は、比較対象がないと新なのか旧なのかわかりま

    相対的なネーミングはよせ、やめるんだ! - Qiita
    teracy_junk
    teracy_junk 2018/06/22
    これとは直接関係ないけど、プログラミング用語や言語で汎用される語句とビジネス的に利用する専門語のバッティングが割と鬼門
  • Effective Java 16章「継承よりコンポジションを選ぶ」 - Qiita

    public class InstrumentedHashSet<E> extends HashSet<E> { private int addCount = 0; public InstrumentedHashSet() { } public InstrumentedHashSet(int initCap, float loadFactor) { super(initCap, loadFactor); } @Override public boolean add(E e) { addCount++; return super.add(e); } @Override public boolean addAll(Collection<? extends <E> c) { addCount += c.size(); return super.addAll(c); } public int ge

    Effective Java 16章「継承よりコンポジションを選ぶ」 - Qiita
  • Google’s File on Me Was Huge. Here’s Why It Wasn’t as Creepy as My Facebook Data. (Published 2018)

    Google has far more data about us than Facebook. Yet unlike Mark Zuckerberg’s social networking empire, which has been under fire for improperly leaking user data, Google has sidestepped controversy. You may wonder: Why is that? After all, we turn to Google for not only our internet searches but also for our emails, calendaring, maps, photo uploads, video streaming, mobile phones and web browsers.

    Google’s File on Me Was Huge. Here’s Why It Wasn’t as Creepy as My Facebook Data. (Published 2018)
    teracy_junk
    teracy_junk 2018/06/07
    「気味の悪い拡張子JSON」の原文
  • 最近のフロントエンドのエディタ事情 - mizchi's blog

    これは、個人でどんなエディタを使うべきか、ではなく、「チームとして」新しいものを採用するとき、あるツールがエディタ横断で便利かどうかを考える必要がある。 自分個人としては、基はAtomを使って、TypeScriptを書くときだけVS Code を使っている。ターミナルでは Vim。 環境でエディタを選ぶ 最近の新規プロジェクトでは、とくにブロッカーがなければ TypeScript を使っていいと思う。TypeScript を使うなら当然 VS Code を使うことになる。Atom や Vim でもいいが、TypeScriptのエディタとしては、流石に完成度が頭一つ抜けてる。JavaならJetBrains 的なノリで、TSならVSCode、そういうものと思ったほうが楽。 TS以外なら、エディタはなんでもいいが、ある程度流行ってるものでないとエコシステムに追いついてくれない。 prettie

    最近のフロントエンドのエディタ事情 - mizchi's blog
    teracy_junk
    teracy_junk 2018/06/01
    『JavaならJetBrains 的なノリで、TSならVSCode、そういうものと思ったほうが楽』『TS以外なら、エディタはなんでもいいが、ある程度流行ってるものでないとエコシステムに追いついてくれない』
  • コメントのいらないプログラムの書き方|NZ MoyaSystem

    パラメータを決める 次に関数に渡すパラメータを決めます。 関数の名前で表現されている処理を実現するには、どれだけのパラメータがあればよいか? と考えてみましょう。 今回の例でいえば「お客さんの年齢」と「日付」があれば、すべてのチケット価格が計算できます。 ということで、age と date の2つのパラメータを渡すことにします。 function calculateTicketPrice (age, date) { } パラメータの名前も、なにを表しているかわかるようにしてくださいね。 くれぐれも「hensu」とか適当な名前をつけたり、同じ変数にぜんぜん違う値を繰り返し代入したりすることのないようにしましょう。 テストを書く 次にユニットテストを書きましょう。 テストは常に更新される仕様書です。 業務ロジックをテストに説明させておけば、関数の仕様をコメントにいちいち書く必要などありません。

    コメントのいらないプログラムの書き方|NZ MoyaSystem
  • 技術的負債のパターンと悪影響・原因・返却方法について考える - $shibayu36->blog;

    先日飲み会で技術的負債についての雑談をしていた。結構いろいろな側面の話をしていたのだけど、技術的負債って一括りにしているのが今はあんまり良くなくて、負債の性質によって技術的奨学金、技術FX技術的年金などと言葉を変えると良いのではみたいな半分冗談で会話をしていた。 いろんな問題が技術的負債という一言にまとめられてしまっているので、負債の性質に合わせて、技術的奨学金、技術FX技術的年金、など用語を分けると良いのではないか、という話をした— 趣味はマリンスポーツです (@hitode909) 2018年3月27日 技術的負債について - hitode909の日記 それで技術的負債のパターンを見つけて、それによりどういう悪影響があるか、それがなぜ起こるのか、どう返却するかについて考えておくと良いのではと思ったので、今日思いついた3つのパターンをメモしておく。 思いついたパターンは3つ。 変

    技術的負債のパターンと悪影響・原因・返却方法について考える - $shibayu36->blog;
    teracy_junk
    teracy_junk 2018/03/30
    「変更困難パターン」抱えて今必死に返してるけど、専任一人で余程のことがないと人を付けてくれない弊社だと、負債を返すのと機能を追加するのを唯一人に負わされるので本当につらい
  • プログラミング言語の比較 - Wikipedia

    プログラミング言語の比較(プログラミングげんごのひかく)の記事では、コンピュータ・プログラミング言語の比較について説明する。 (コンピュータ・)プログラミング言語は、コンピュータのプログラム(コンピュータ・プログラム)を記述する(プログラミングする)ための形式言語である。形式言語であるので、一般に、自然言語とは異なり形式的で曖昧さが避けられ人工的に定義された構文(統語・syntax。統語論の記事を参照)を持ち、自然言語とは異なり計算理論のための意味論(semantics)を持つ。 現在何千ものプログラミング言語があり、多くの職業プログラマや多くの非職業プログラマが生涯の間に何十もの異なった言語を使用している。一方で、多くの職業プログラマや多くの非職業プログラマが、好みを理由として、あるいは、異なった言語を学習できないためか、一種類ないし僅かな類似した言語のみを使用している。毎年新しいものが

  • プログラミング経験がない経営者のためのソフトウェア開発 11の事実 | Social Change!

    今やどんなビジネスでもITが関係している。ITを支えているのはソフトウェアだ。あらゆるものがソフトウェアで実現される時代になった。そんな事業や生活に密接に関わるソフトウェアだが、その開発について知られていないことも多い。 とくに経営者がプログラミング経験がないことで、ソフトウェア開発のリーダーシップをとるときに的外れなマネジメントをしてしまうことがある。あまねく経営者がプログラミング経験があれば良いのかもしれないが、それは現実的ではない。 プログラミング経験がなくても、せめてソフトウェア開発の特性について知っておくと良さそうなこともあると思い、なるべく専門用語を使わずに稿を書いた。 プログラミングは製造ではなく、設計である いまだにソフトウェア開発を、ビルや家屋の建築に喩える人がいるし、工場でモノを製造するようにプログラムが作られると思っている人もいる。 ここが間違いのもとだ。ハードウェ

    プログラミング経験がない経営者のためのソフトウェア開発 11の事実 | Social Change!
    teracy_junk
    teracy_junk 2018/03/15
    『ソフトウェアは初期投資だけでは済まない』これ
  • 「あるエンジニアがプログラムを紡いでいく様を見てみる」ライブコーディング・リプレイ - 日々常々

    あるエンジニアがプログラムを紡いでいく様を見てみるでしたライブコーディングで言ったことや言わなかったことを書いてみます。 意識してるのは「コードをどまんなかに」です。 speakerdeck.com ……あ、このスライドのブログ書き忘れてた。 スライド中の「えらぶ」はだいたいIDEの機能を指します。なのでライブコーディング中に使用したIDEの機能も挙げようと思います。基的にデフォルトのつもりだけど、vimとの兼ね合いで変更してるのもあるので、そこはごめんなさい。あとMacです。今回はメソッド抽出とかクラス間移動とかダイナミックなのがなくて地味だけど、便利な子たちなので使ってあげてください。 リプレイ 今日の公開コーディングはスゴい新鮮だった🎵 コミット後のソースには、どこに悩んだのか、どこにこだわったのかは残らないのですね。 実際のコーディングを見させて頂く事で、気づかされる事が多かっ

    「あるエンジニアがプログラムを紡いでいく様を見てみる」ライブコーディング・リプレイ - 日々常々
  • 僕は僕にどういう教育を授けたか - 怠惰を求めて勤勉に行き着く

    まえがき 会社の若い子に「情報系出身でもないのに一体どうやって勉強してきたんですか?」と聞かれたのでランチべながら「こんな読んだ。これもタメになった。あ、これもタメになった」とKindleを広げながらリストアップした。思い返せばたくさんを読んだ。その中には役に立ったものもあれば時間の無駄だったものもある。すると「あ、役に立っただけ抽出したら有益かもしれないな」と思ったのでエントリにする。 僕は文章を簡潔に分かりやすくまとめる才能が致命的にないのでこのエントリもげっそりするほど長い*1が、2017年も暮れなのでここはひとつ日酒でもかっ喰らいながら自分の人生を振り返ってみようと思う。 無理やり要点をまとめるならば、 TCP/IPの知識 Linuxの知識 なにかひとつプログラミング言語 なにかひとつGUIシステムの理解 アルゴリズムとデータ構造 強運*2 を身につけたらどんなに低く見

    僕は僕にどういう教育を授けたか - 怠惰を求めて勤勉に行き着く
  • Post by @sunaot

    どこの会社でも「1行直すだけでしょ? そんなに大変なの?」ということを何度も聞かれる (もしくは言外にそのニュアンスを含められる) ので毎度説明するのだけれど、「いや、そう思うだろうけれど大変なんですよ」以外に答えられていなくて、自分でもあまりうまい答えではないなと感じるのでまじめに考えてみた。 まず大前提として1行を修正するのに当に言われるがままにその1行を直すのであればそれは作業者で世の中にエンジニアなんて職業はいらないわけで、ぼくらの付加価値は1行を直すときに1行の外にあるものを想起できるから価値があるわけです。 じゃあ、どんなことを考えているかというと、まずたいていそんなすぐに安請け合いできないシステムというのは1行を直すときに影響を受ける行数というのは10行や20行ではないことが多い。そこで影響範囲を考えます。途端にこれが1万行になったりする。すると、1万行へ影響が出るのにこれ

    Post by @sunaot
  • await って言う単語

    C# 5.0で非同期メソッドが導入されてから、 正式リリースを基準にしても5年以上、 最初の発表からだと7年以上経っています。 で、5年経っても、「なんて読むの」「asyncのaとawaitのaは違う」などなどが「定番ネタ」として定期的に出てくるわけですが。 特に、ECMAScript 2017がasync/awaitを導入したり、 Unity 2017がやっとC#のバージョンを6.0に上げれる感じになってきたり、 5年の断絶を経て去年からasync/awaitに触れる人が増えているようです。 5年も離れたら、世代断絶も起こりますよね… そりゃ、「定番ネタ」が改めて増えもしますよね… ということで、5年くらい前に同じようなことをどこかで書いてるはずなんですけど、改めて。 英単語 えいしんく まず読み方。 async: エイシンク await : アウェイト ってやつ。async の方が「ア

    await って言う単語