ピュアJavaだと思った?残念androidでした~いつからAndroidをJavaだと錯覚していた?~
情報化社会に生きるすべてに人が持っておくリテラシーとして「コンピュータで何かしたかったらプログラムを用意しないといけない」「プログラムは人間が作るものなので予想外の動きをするときがある」「ゴミを入れたらゴミが出てくる」という3つのことだけを体験を通して知っていれば十分だと思う。 この3つを分かっているならば、「プログラムは自然に発生する」「計算機の出力結果は常に正しい」という認識が崩れる(崩れやすい)ので、ハードウェアの値段だけ考えて、ソフトウェアの値段を考えないとか、保守は無料だと思うとか、異常値が出たときにその異常値が妥当かどうか検討しないとかが少なくなると思う。 なので、小学校〜中学校までにプログラムを組んでみて、自分の作ったプログラムがうまく動かないという経験をするのは重要だと思う。目的は、プログラマー育成でなく、上述のリテラシーの獲得。プログラマ育成目的ならば、義務教育における計
先日、Webronza というところに寄稿したのだが、有料登録しないと後半が読めなくなっていた。で、交渉して公開許可を頂いたので、ここで全文掲載。 「ちょっと待った!小中学校でのプログラミング教育」 現代社会はもはやコンピュータがなければ成り立ちません。そして、コンピュータは誰かが作ってソフトウェアがなければ、まったく役に立ちません。コンピュータは自発的に仕事をしてくれないどころか、誰か人間がソフトウェアという形でどのように仕事をすれば良いのか教えてやらなければ、なんの働きもできないのです。コンピュータが社会に役に立っているのは、ソフトウェアがあるからです。 どんなに賢いように感じられるコンピュータでも、自らソフトウェアを開発することはできません。コンピュータは単純な計算をものすごく速く行うことができますし、それを積み重ねることで人間を越える能力を備えていますが、その一方で、なにか新しいこ
コードは綺麗だけど儲からないプロジェクトと、 コードは糞汚いけど儲かるプロジェクトのどっちがいいですか? もちろん、コードは綺麗で儲かるプロジェクトがいいのは理想ですが、今回は、この2つです。 コードは糞汚いけど儲かるプロジェクトの場合、次期バージョンとかの予算を確保することができます。 そこで、汚い部分を捨てて書きなおすことだって出来ます。 コードは綺麗だけど儲からないプロジェクトは、次のバージョンの改修費用もでずにゴミ箱に送られる運命です。 プロジェクト解散、メンバーは散り散りです。 フリーソフトの場合は、儲かるをユーザに使ってもらえるソフトとか支持されるソフト、 ゲームの場合は、儲かるを面白いゲーム、支持されるゲームとかと適当に読み替えてください。 コードは綺麗に越したことはないです。 だけど、プロジェクトとして成立しないことには意味がありません。 コードは綺麗だけど、誰も遊んでくれ
これ読んで思ったこと。 プログラミングを勉強したい人が勉強する前にすべきこと - もとまか日記 http://d.hatena.ne.jp/moto_maka/20130512/1368308092 僕がプログラミングをはじめたとき、何を思ってプログラミングをはじめたか思い出してみようとしたけど、よく思い出せなかった。 ただ漠然と感じていたのは、プログラミングは個人が現実的にこの世界に直接手を加えることができる手段の1つであり、それをやらないのは勿体無い、といったことだったと思う。たぶん。 というわけで、最初にやったのはFirefoxのユーザースクリプトを書くことだったし、それはそれでよい経験だった。なんとなくゲームとかウェブアプリとか作りてーなー、と思って色んなライブラリを動かすだけ動かして満足した。プログラミング覚えて初めて最初の一年で10以上の言語のHelloWorldだけやったと思
プログラムの実行に掛かる時間を把握しておくのは、プログラミングを行う上で基本的な注意点です。今回は、計算量のオーダーについて学びながら、TopCoderのMedium問題を考えてみましょう。 プログラムの実行時間 業務としてプログラミングをされている方には釈迦に説法かもしれませんが、プログラムの実行に掛かる時間を把握しておくのは、プログラミングを行う上で基本的な注意点です。そしてこれは、TopCoderなどのコンテストでプログラムを組む際にもよく当てはまります。通常、こうしたことは感覚的に理解している方がほとんどだと思いますが、具体的にどれくらいのループを回すと何秒掛かる、といった基準を持っている人は少ないのではないでしょうか? 非常に基本的なことですが、プログラムの実行時間に関して再確認しておきたいと思います。 TopCoderの制限に関して TopCoderでは、実行時間およびメモリ使
動的計画法とメモ化再帰 今回は、非常によく用いられるアルゴリズムである、「動的計画法」「メモ化再帰」について説明します。この2つはセットで覚えて、両方使えるようにしておくと便利です。 なお、メモ化再帰に関しては、第5・6回の連載の知識を踏まえた上で読んでいただけると、理解が深まります。まだお読みになっていない方は、この機会にぜひご覧ください。 中学受験などを経験された方であれば、こういった問題を一度は解いたことがあるのではないでしょうか。小学校の知識までで解こうとすれば、少し時間は掛かるかもしれませんが、それでもこれが解けないという方は少ないだろうと思います。 この問題をプログラムで解こうとすると、さまざまな解法が存在します。解き方によって計算時間や有効範囲が大きく変化しますので、それぞれのパターンについて考えます。 以下の説明では、縦h、横wとして表記し、プログラムの実行時間に関しては、
平素よりQA@ITをご利用いただき、誠にありがとうございます。 QA@ITは「質問や回答を『共有』し『編集』していくことでベストなQAを蓄積できる、ITエンジニアのための問題解決コミュニティー」として約7年間運営をしてきました。これまでサービスを続けることができたのは、QA@ITのコンセプトに共感をいただき、適切な質問や回答をお寄せいただいた皆さまのご支援があったからこそと考えております。重ねて御礼申し上げます。 しかしながら、エンジニアの情報入手方法の多様化やQAサービス市場の状況、@ITの今後のメディア運営方針などを検討した結果、2020年2月28日(金)15:00をもちましてQA@ITのサービスを終了することにしました。 これまでご利用をいただきました皆さまには残念なお知らせとなり、誠に心苦しく思っております。何とぞ、ご理解をいただけますと幸いです。 QA@ITの7年間で皆さまの知識
id:perlcodesample さんの 変数に型がないということの利点について考える - サンプルコードによるPerl入門 から。 ううむ。 けれども、型がないということは、本当に素晴らしいことです。 型がないことによって、たくさんの面倒から解放されるからです。 冒頭のこれが、「静的型付き言語にはメリットが(ほとんど)ない」と言っているように思えてしまいます。 コメントのやり取りを見ても、ある程度そう考えているように受け取れます。 勘違いなどが多く見られたので、補足というか、反論というか、そんな感じのことを書きます。 追記: ごく一部、このエントリを「動的型付き言語と静的型付き言語を比べて、静的型付き言語の方が素晴らしい言語である」ということを言うためのものだと勘違いしている人を見かけました。 このエントリは、そこについては言及していません。 あくまで、元記事で「動的型付き言語のメリッ
「Rubyのcase」を一瞥し「あー要は〇〇(言語名)のswitchね」などと早合点し、その後もその真の価値を知ることなく一生を終えるプログラマが近年跡を絶たない。加えて、「今更条件分岐?RubyはOOPなんだからポリモフィズムじゃね?」とか「HashにProc突っ込んでcallするのがオレ流。」とかうそぶく人たちもまた増加の一途を辿っている。 そんな世の中にあって、ぼくは一言、できればガツンと一言申し上げたい。生まれも育ちもRubyなぼくから、是非ともそんな人たちに「Rubyのcase」について一言申し上げておきたい。 ─ 問題1 ─ 名前name、レベルlevel、ポイントpointの各属性を持った複数のCharacterオブジェクトcharlie, liz, benがある。 class Character < Struct.new(:name, :level, :point) def
SIZE: 13608925 bytes MD5: 50d307c4dc9297ae59952527be4e755d SHA256: aff85ba5ceb70303cb7fb616f5db8b95ec47a8820116198d1c866cc4fff151ed 特徴 主要な新機能 主要な変更点は以下のとおりです。 言語コア機能 キーワード引数: API 設計の新しい柔軟性 Module#prepend: クラス拡張の新しい方法 シンボルの配列を簡単に作るリテラル %i __dir__: 実行中のファイルのあるディレクトリ名 default UTF-8 encoding: 多くのマジックコメントが不要に 組み込みライブラリ Enumerable#lazy / Enumertor::Lazy: 無限の遅延ストリーム Enumerable#size: 遅延サイズ評価 #to_h: Hash へ
2012-12-26 Javaプログラマ必読の実践的テスト指南書『JUnit実践入門』レビュー 渡辺修司さん著『JUnit実践入門』が発売されてからかなり経ってしまいましたが、実はこの本、すこしだけレビューにも参加させてもらいました。私は結局少ししかご協力できなかったのですが、それでも献本頂きました。レビュー段階からこれはいい本になると思って、ぜひレビューを書こうと思ってましたが、遅れに遅れ、今になってしまいました。 JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)作者: 渡辺修司出版社/メーカー: 技術評論社発売日: 2012/11/21メディア: 単行本(ソフトカバー)購入: 12人 クリック: 238回この商品を含むブログ (19件) を見る この本、私は読者としてプログラマとしてかなり助けてもらってますので、基本的に褒めるところしかない
Topcoder is a pioneer in crowdsourcing, with 20+ years of experience, and 325,000+ successful challenges in software development, data science/AI, UX design, and QA. Talk to an expert Topcoder is a pioneer in crowdsourcing, with 20+ years of experience, and 325,000+ successful challenges in software development, data science/AI, UX design, and QA. Talk to an expert Revolutionize How You Get Work D
この春からプログラムにチャレンジしよう!と意気込んでいる方もいらっしゃるのではないでしょうか? 先日、おすすめ本を紹介させていただいたのですが、本を読みながらの学習では、途中でつまづいたり、なかなか長続きしない、といった方もいらっしゃると思います。 そんな時のお手伝いができたら…と、シーブレインでは今回の連載 「10日で覚えるPHPのキソ」を企画いたしました。 どうぞよろしくお願いいたします。 第1回は PHPを勉強する時に、まず最初に覚えておきたい約束事! についてお話しいたします。 その前に、PHPとは… PHPはプログラミング言語 日本語・ドイツ語・フランス語があるようにPHPも言語の1つです。 プログラミングをするための言語ですね。 プログラミング言語には大きく分けて、インタプリタ型とコンパイラ型があります。 PHPはコンピュータが直接理解可能なコードへの翻訳作業を、プログラムの実
(追記:2012-12-15) 本記事およびこれに続くその2,その3をまとめて電子書籍化しました。「Gumroad」を通して100円にて販売しています。内容についての追加・変更はありませんが、誤記の修正およびメディア向けの調整を行っています。 電子書籍「Ruby脳が理解するJavaScriptのオブジェクト指向」EPUB版 このリンクはGumroadにおける商品購入リンクになっています。クリックすると、オーバーレイ・ウインドウが立ち上がって、この場でクレジットカード決済による購入が可能です。購入にはクレジット情報およびメールアドレスの入力が必要になります。購入すると、入力したメールアドレスにコンテンツのDLリンクが送られてきます。 購入ご検討のほどよろしくお願いしますm(__)m 関連記事: 電子書籍「Ruby脳が理解するJavaScriptのオブジェクト指向」EPUB版をGumroadか
オブジェクト指向エクササイズ 下記のルールで、1000行程度のソフトウェアを書いてください。 1. 1つのメソッドにつきインデントは1段階までにすること 2. else句を使用しないこと 3. すべてのプリミティブ型と文字列型をラップすること 4. 1行につきドットは1つまでにすること 5. 名前を省略しないこと 6. すべてのエンティティを小さくすること 7. 1つのクラスにつきインスタンス変数は2つまでにすること 8. ファーストクラスコレクションを使用すること 9. Getter、Setter、プロパティを使用しないこと というルールが適応できない場合は優先すべきルールを選択し、どのルールを適応するのか判断して欲しいとの旨が記載されています。 9つのうち 7つがデータのカプセル化 1つポリモフィズの適切な利用(else句をつかわない) 1つが明確でわかりやすい命名標準 オブジェクト指
備忘録兼、初心者向けのメソッド一覧。 余裕があればRails編とかも書こうかな。 これ忘れてるとか何事?とかいう突っ込みがあれば是非お願いします。 もうちょっとコードの具体例書きたかったけど、めんどくさくなってきたw Array Array#combination(n), Array#permutation(n) 配列のデータを元に組み合わせ(順列)を作ってくれます。 ブロックを渡さない場合はEnumeratorで組み合わせの各要素を列挙します。 Enumerator Enumerator#with_index(offset = 0) Enumeratorの各要素に合わせてindexを列挙してくれるEnumeratorを返す。 each_sliceやcombination等にメソッドチェインで繋げて使う。 Enumerator#with_object(obj) with_indexと同様で
By nicola.albertini 「ウンコードとは、糞のようにヒドいプログラムのことです。クソースなどとも呼ばれます。ヒドいプログラムは、プログラマの健康を脅かします。 「ウンコードなんて今すぐ消してしまえばいい。」 と言いたいところですが、既存のヒドいコードのプロダクトが、利益を生んでるケースも多いことでしょう。 結局、ヒドいプログラムをメンテナンスしつづけているという不幸な人も多いはずです。ヒドいプログラムを書いてしまうプログラマが、このサイトでウンコードについて 勉強して、もっとプログラムに気を使うようになって、 引き継ぎをした人も健康でいられますように。なむなむ」ということで、プログラマのためのストレス解消サイトであり、なおかつ教育サイトでもあり、そして主に他の人が創作したウンコードを鑑賞するのが目的というサイトが「ウンコード・マニア」です。 ウンコード・マニア http:/
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く