タグ

プログラムに関するpoginのブックマーク (24)

  • 勝手に公開されたものは「公表」されていない - 西尾泰和のScrapbox

    「公表されたものは引用することができる」と著作権法32条に定められているが、著作権者でない人によって勝手に公開されてしまった場合はどうなるか? 著作権法による公表の定義が「著作物は、発行され、又は者Xによつて上演、演奏、上映、公衆送信、口述若しくは展示の方法で公衆に提示された場合...において、公表されたものとする。」で、者Xとは「権利を有する者、若しくはその許諾...を得た者、若しくは...」なので、権利を有しない者によって勝手に公開されたものは公表されていない。 第四条 著作物は、発行され、又は第二十二条から第二十五条までに規定する権利を有する者若しくはその許諾(第六十三条第一項の規定による利用の許諾をいう。)を得た者若しくは第七十九条の出版権の設定を受けた者若しくはその公衆送信許諾(第八十条第三項の規定による公衆送信の許諾をいう。次項、第三十七条第三項ただし書及び第三十七条の二ただし

    勝手に公開されたものは「公表」されていない - 西尾泰和のScrapbox
  • 論理的思考の放棄 - 登 大遊@筑波大学情報学類の SoftEther VPN 日記

    僕は、1 日に少なくとも 3,000 行程度、多く書くときで 10,000 行以上のプログラムを書くことができる。その結果、多い月で 10 万行 / 月くらいである。なお、言語は書くソフトウェアの性質上、大半が C 言語である。 また、プログラミングにはバグが付き物だが、ここ 2、3 年の間は、発生するバグの数を極めて少なく保つことに成功している。 とても大きく複雑で、かつレイヤ的に OS に近い処理をたくさんやるプログラムを書く場合は、プログラミングをするときでも、事前の設計が極めて重要となる。設計をうまく行わないと、後になって全面的に書き直しをしないといけなくなったり、パフォーマンスが低下したりする原因となり、開発者の苦痛の原因となる。 当然のことながら、これまで書いたいくつかの大きく複雑といえるソフトウェアの大半の設計も、自分で行った。いかなる場合でも、設計は、最初の 1 回目で確定

    論理的思考の放棄 - 登 大遊@筑波大学情報学類の SoftEther VPN 日記
  • プログラマーの脳は作業中に”誰かの声”を聞いていると判明! 数学力より音声理解力が重要 - ナゾロジー

    一般の人にとって、プログラマーの持つ知識と技術は別世界のもののように感じられます。 海外の研究者にとってもプログラマーの持つ特殊技能は興味の対象であったようで、古くは1980年代から、心理学的手法を使ったプログラマーの「特別な脳」の分析が行われてきました。 そんな中、近年の急速な神経科学の発展により、MRI(核磁気共鳴)やEEG(脳波測定)を用いて脳活動を可視化することが可能になってきました。 しかし、これまでの研究で可視化した脳領域は、読書ゲームといった日常生活時にも使われる汎用的な領域であり、プログラム時にだけ働く特異的な領域ではありませんでした。 そこで今回、ドイツのケムニッツ工科大学の研究者たちは、プログラム時にだけ働く「プログラム脳」の特定に挑戦。結果は、予測とは大きく異なるものとなりました。 なんと、プログラム時に働く脳機能は数学的能力や論理的推察力ではなく、会話時における相

    プログラマーの脳は作業中に”誰かの声”を聞いていると判明! 数学力より音声理解力が重要 - ナゾロジー
  • 形式手法のこれまでとこれから - ヾノ*>ㅅ<)ノシ帳

    2019年が終わろうとしています あけおめ~さて2020年になりました。歴史が長い形式手法の今後を占うため、過去と直近の出来事を振り返りたいと思います。 ツッコミやタレコミは私のTwitter宛かあなたのブログかその他経路でお願いします~ シンボリック実行は形式的であるため稿では形式手法に含めることにします。 Fuzzing関連はサーベイが甘いので漏れが多いかもしれません。 形式手法・形式検証とは 形式検証とは、厳密に定義された意味論の下で仕様やプログラムが所定の性質を満たすことを形式的に検証するための手法をいいます。「形式的に」とは、検証が事前に定義された知識だけに基づいており、検証手順が決定的であることをいうと私は理解しています。 形式手法は、形式検証に加えて、形式的にプログラムの仕様を厳密に定義するための手法を包含します。 記事では形式手法を以下の通り大きく3つに独自に分類します

    形式手法のこれまでとこれから - ヾノ*>ㅅ<)ノシ帳
  • コード設計の話

    今日は地味な話をしたい。といってもいつも地味な話だが。コードや区分の設計は良いシステムを設計するうえでとても大切である。設計にあたっては業務要件をみたすためにどんなコードや区分が必要かという視点が最初にくるのはもちろんだが、それ以外にも考慮すべきことがある。変なコード設計のもとでプログラムを書くと条件判定が複雑化し、読みにくく変更しにくいシステムができあがる。 ここで書くことは、経験のある設計者はたぶん(私のように)先輩から教わるとか自分で体得しているのもので目新しくはないが、まとめて整理してあるも意外にないようである(私が知らないだけかもしれない)。 無意コード化 無意コード化とはコードの各桁に意味を持たせないことである。これは、わりに良く知られている原則だ。「コードの各桁に意味を持たせる」とは、たとえば品番の頭1桁が"9"ならサービスパーツと判断するといった処理をプログラムのなかに記

    コード設計の話
  • プログラマの実力は経験だけであがらないことがレベル格差につながる - きしだのはてな

    プログラマというのは、道具に慣れることが、実力があがることにならないのですよね。だから、勉強せず業務経験だけだとレベルが低いままということになってしまう。 Javaを10年さわり続けて、Strutsを5年さわり続けても、それだけでは、与えられた画面を手際よく作成できるようになるだけで、たとえばStrutsすらよりよく使えるようになるわけではなかったりする。 Javaにしても、「volatileってなんですか?」という問いに、まあ知らないのはしかたないとしても、解説を見ながらですら答えられない可能性がある。 プログラムの反復生産は、プログラミング能力の向上にあまりつながらない。設定や記述に慣れるだけだ。そして、この「慣れ」というのには「難しいからそもそも実装を回避する」というようなものも含まれる。実力の向上は、作業ができるレベルで止まってしまう。 プログラマとしての実力をあげるための勉強が自

    プログラマの実力は経験だけであがらないことがレベル格差につながる - きしだのはてな
  • 誰でもプログラムを書けるようになる方法が発見される!なんだこれは? - Qiita

    プログラムを書けるようになる方法を見つけた!なんだこれは? 眼鏡のフレーム端を耳の横に掛けたらなぜか書けるようになった。なんだこれは? このやり方をやれば誰でもプログラムが書けるようになると思います。頭も良くなった!と思う プログラムを挫折した経験がある方一度お試しあれ! このように耳の横にフレーム端を掛けてやる 自己責任で メガネのフレームを少し曲げる必要があります。破損しても自己責任で 個人差があると思います。人によってできない人もいると思います。 以上自己責任で試してみてください。 用意するもの 必須 メガネ (耳の横にかけれるもの フレームの横幅が広いものがいいです) 紫外線防止コーティング (眼鏡屋さんで3千円くらいでやってもらえます) お好み 片方は非球体の方がいい (目が疲れない) 黒縁じゃないほうがいい。(縁が太いと視野が狭くなる) やり方 フレームの端を耳の横に掛ける 目

    誰でもプログラムを書けるようになる方法が発見される!なんだこれは? - Qiita
    pogin
    pogin 2019/03/29
    なんだこの怪文書!?
  • 【図解】Dockerの全体像を理解する -前編- - Qiita

    この記事は何か イメージやコンテナなどの基からdocker-compose、docker-machine, docker swarmなどのDocker周りの様々な概念の全体像を整理して、Dockerの仕組みを理解するための記事 前編では「コンテナ、イメージ、DockerHubでのイメージ共有」について書いて行きます。 対象読者 ・Dockerって何? ・Dockerちょっと勉強したけどDocker compose? Docker machine? Docker Swarm? 色々ありすぎて意味不明 という方 Dockerとは何か Docker社が提供する「コンテナ型仮想化技術」 を実現するプロダクト 仮想化? PCやサーバといったマシンにインストールされているOS(ホストOS)の上に、別のマシンを仮想的に立ち上げる事 簡単に言うと「パソコンの中に仮想パソコンを起動する」のが仮想化です。

    【図解】Dockerの全体像を理解する -前編- - Qiita
  • Coqで学ぶ証明プログラミング! テストだけでなく「証明」で安全性を保証する - エンジニアHub|Webエンジニアのキャリアを考える!

    Coqで学ぶ証明プログラミング! テストだけでなく「証明」で安全性を保証する プログラミング言語「Coq」では、プログラムを「証明」して間違いを防ぐことができます。プログラムの正しさを保証できる一歩進んだエンジニアになりましょう! coqtokyoを主催する今井宜洋さんの解説です。 みなさん、Coqってご存知ですか? プログラムを証明して間違いを防ぐという優れものです。今回はそのCoqについて、coqtokyoという勉強会を主催している今井宜洋がお届けします。 プログラムをただ作るだけではなく、その正しさを保証できる一歩進んだエンジニアになってみましょう! Coqって何? プログラムを「証明する」ってどういうこと? Coqを使ってみよう Coqのインストール方法 CoqIDE:Coqによる証明開発のフロントエンド Coqで関数プログラミング プログラムの仕様を記述しよう 証明開発モード ゴ

    Coqで学ぶ証明プログラミング! テストだけでなく「証明」で安全性を保証する - エンジニアHub|Webエンジニアのキャリアを考える!
    pogin
    pogin 2018/12/17
    やっとCoqのタクティクがわかった。良さ。
  • 大学院生のためのLLVM | POSTD

    (注:2017/07/06、いただいたフィードバックを元に翻訳を修正いたしました。) この記事は、 LLVM コンパイラ基盤を使ってリサーチをする人のための入門書です。これを読めば、コンパイラに全く興味のない大学院生も、楽しみながらLLVMを使って優れた功績をあげられるようになるでしょう。 LLVMとは何か? LLVMは非常に優れていて、ハックしやすく、C言語やC++のような”ネイティブ”言語向けの、時代の先端を行くコンパイラです。 LLVMの素晴らしさに関しては他にも様々な話を聞くのではないでしょうか(JITコンパイラとしても使えるとか、C言語系列以外の様々な言語を強化できるとか、 App Storeからの新しい配信形態 であるとか、などなど)。もちろん全部当のことですが、今回の記事の目的としては、上述の定義が重要です。 LLVMが他のコンパイラと差別化される理由には、いくつかの大きな

  • これからプログラミングを学ぼうとする君へ | Social Change!

    今や、あらゆる場面においてソフトウェアが重要になってきた社会の中で、プログラミングを学ぼうと考える人も多いだろう。プログラミングを身につける方法は、インターネットにはたくさん情報があるし、も多くある。開発環境も無料で使える。独学したい人には良い時代になった。始めるのは、とても簡単だ。 一方で、挫折する人も多くいることが想像できる。情報が多くありすぎて、学び方ひとつとっても様々なことを言っているし、チュートリアルのようなものをやってみても、じゃあ自分で作るなら一体どうすれば良いかわからない。どの言語を選べば良いか、頭でっかちになって始められない人もいるかもしれない。 プログラミングを手っ取り早く身に付ける方法などあるのだろうか。これは、正解のない問題だ。人によるし、作りたいものにもよる。身に付けたい動機にもよるし、そもそもが、どこまで出来たらプログラミングを身に付けたと言えるのだろうか。

    これからプログラミングを学ぼうとする君へ | Social Change!
  • CODE COFFEE|プログラム言語のコーヒー

    01 #include <stdio.h> 02 int main() { 03 printf("Thank you for visiting our page!!!"); 04 return 0; 04 } 言語の特長に合わせて コーヒーをブレンドしました CODE COFFEはプログラム言語の名前を冠したコーヒー。各種言語の特長を抽出し、コーヒーをブレンドしています。例えば、プログラムの源流となるC言語には、コーヒーの源流であるブラジル・コロンビアのブレンドを作ったり。Swiftコーヒーは、Apple製の言語であることから、りんごフレーバーのコーヒーにしたり。主要な8種類のプログラム言語を丁寧に実装(ブレンド)しました。

  • サイト上で実行されるプログラムについて同意を確認するためのプログラム

    昨今、クライアントサイドでプログラムを実行するリスクが高まっています。 そこで、ページ上で実行されるプログラムについて閲覧者に同意を求めるプログラムをこのページに埋め込んでみました。 ひとえにクライアントサイドで実行されるプログラムといっても様々なものがあります。 例えばこのブログはWordpressで作られていますが、使用しているテーマは様々なJavaScriptライブラリを外部から読み込んでいますし、Google アドセンスのような広告を表示するためのプログラムや、Google アナリティクスのようなアクセス解析を行うためのプログラムも閲覧者に許可なく実行され、CPUやメモリ、電力といった閲覧者のリソースを消費します。 また、このブログに掲載しているデータビジュアライゼーションや地図コンテンツは、複雑な計算処理をクライアントサイドで行う為、非常に負荷の高いプログラムがユーザーサイドで実

    サイト上で実行されるプログラムについて同意を確認するためのプログラム
  • ネットワークの検証やレビューにはもう正直疲弊したので全部プログラムで自動化できるようにしてしまえばいいと思った / JTF2017

    July Tech Festa 2017 https://2017.techfesta.jp/ 資料

    ネットワークの検証やレビューにはもう正直疲弊したので全部プログラムで自動化できるようにしてしまえばいいと思った / JTF2017
  • PPL2018プログラム

    Top 招待講演 プログラム 参加登録要領 交通案内 第20回プログラミングおよびプログラミング言語ワークショップ(PPL2018) プログラム 1日目午後の部 | 1日目夜の部 | 2日目午前の部 | 2日目午後の部 | 2日目夜の部 | 3日目午前の部]

  • アムダールの法則 - Wikipedia

    複数のプロセッサを使って並列計算してプログラムの高速化を図る場合、そのプログラムの逐次的部分は、制限を受ける。例えば、仮にプログラムの95%を並列化できたとしても、残りの部分である5%は並列処理ができないため、どれだけプロセッサ数を増やしたとしても、図で示したように20倍以上には高速化しない。 アムダールの法則(アムダールのほうそく、英語: Amdahl's law)は、ある計算機システムとその対象とする計算についてのモデルにおいて、その計算機の並列度を上げた場合に、並列化できない部分の存在、特にその割合が「ボトルネック」となることを示した法則である。コンピュータ・アーキテクトのジーン・アムダールが主張したものであり、アムダールの主張(アムダールのしゅちょう、英語: Amdahl's argument)という呼称もある[1]。 複数のプロセッサを使い並列計算によってプログラムの高速化を図る

    アムダールの法則 - Wikipedia
  • 自分でプログラム言語を書いてみたい人は「Create Your Own Programming Language」がおすすめ - ブログのおんがえし

    読み終わった。たった100Pにプログラム言語を作るための基礎(字句解析、構文解析、ランタイム、インタプリタ、仮想マシン、ネイティブコンパイルまで!)が一通り学べ、さらに書で作った実際に動くプログラミング言語がついてくる。 $39.99 とちょっと高いがプログラム言語を作る勉強代だと考えれば最も安くそして早く(ドラゴンブックは1090P)学べるのではないだろうか。洋書なのが難点だが半分くらいはソースコードなので苦労しながらなんとかなりました。(日語訳出てほしいなぁ) 書籍内で作る言語は2種類で Awesome Rubyの構文にPythonのインデントブロックを混ぜ合わせたようなオブジェクト型 Mio Ioを参考にしたメッセージ型 言語自体はどちらもRubyで書かれているが紹介される概念は特に言語の制約を受けないものが多い。 よかったところ yaccやbison, JVM系の構文解析ツール

    自分でプログラム言語を書いてみたい人は「Create Your Own Programming Language」がおすすめ - ブログのおんがえし
  • ソフトウェアの基礎

    コースの最初のパートで用意した数学的道具立てを、 小さなプログラミング言語 Imp の理論の学習に適用し始めています。 Imp の抽象構文木(abstract syntax trees)の型を定義しました。 また、操作的意味論(operational semantics)を与える評価関係 (evaluation relation、状態間の部分関数)も定義しました。 定義した言語は小さいですが、 C, C++, Java などの格的な言語の主要な機能を持っています。 その中には変更可能な状態や、いくつかのよく知られた制御構造も含まれます。 いくつものメタ理論的性質(metatheoretic properties)を証明しました。 "メタ"というのは、言語で書かれた特定のプログラムの性質ではなく言語自体の性質という意味です。 証明したものには、以下のものが含まれます: 評価の決定性 異なっ

  • C/C++の静的解析ツール・事例まとめ - 簡潔なQ

    C/C++の静的解析は、どう考えても大変なんだけどどう考えても需要が高いので、やはり色々なソフトウェアや事例があるようだ。まとまった情報が欲しいけど見つからなかったので自分の調べた範囲でまとめることにした。 他にも耳寄りな情報があったら教えてほしい。 静的解析を行うことができるソフトウェア 調べてみると結構たくさんある。それぞれの特徴とかあまりよくわからない。 (個人的には、とりわけ網羅的な形式的検証ができるツールの性能に興味があるので、それを中心に集めていたが、やはり網羅的とは限らないで探すともっとたくさん見つかるようだ。もちろん網羅性にはトレードオフがある) Frama-C …… C言語に形式手法を適用するための汎用のフレームワークで、静的検証のためのプラグインも多数(WPとかValueとか)存在する。網羅的な検証から発見的な手法、動的な手法まで様々ある。研究で使うのに便利そう Ast

    C/C++の静的解析ツール・事例まとめ - 簡潔なQ
  • ForkwellやWantedlyを使って興味ある会社に話を聞きに行くとき用メモ - gaaamiiのブログ

    「話を聞きにいく」とはいっても、何も準備せずに行くとたいてい時間だけとってしまうことになって申し訳ないし自分的にも緊張だけして終わって良くないので、話したいことをまとめておきました。ちゃんとした書類に書くようなものよりくだけた感じで精査せずに羅列したので伝えない方が良いようなものも含まれているかも知れない。あくまでも自分用のメモということで活用したい。 自分以外には何も配慮せずに都合良く考えたものなので、なんかやっぱ違うなという考えは改めていきたい。 何しに来たのか 話を聞きたい 職場の雰囲気を見たい 今の自分の転職市場での価値をざっくり感じたい これから何を頑張ればいいのか(とその優先度)を考える材料が欲しい 例:チーム開発のためにgitをしっかり使えるようになる、RSpecでわかりやすいテストを書けるようになる、英語でコミュニケーションをとれるようになる...など どうして転職したいの

    ForkwellやWantedlyを使って興味ある会社に話を聞きに行くとき用メモ - gaaamiiのブログ