なぜ、動的型付けスクリプト言語の流行りから、再び静的型付けの言語が注目されているのか。 型付けの歴史を振り返り、これからの「型」のありかた、それを実装した処理系のありかたについて考えます。
なぜ、動的型付けスクリプト言語の流行りから、再び静的型付けの言語が注目されているのか。 型付けの歴史を振り返り、これからの「型」のありかた、それを実装した処理系のありかたについて考えます。
先に書いたリンゴを買う人のように、1つの処理だけで終わるプログラムをシングルスレッドのプログラムと呼ぶ。 しかし、実際にはいくつかの処理を並行して行う。要するに、複数のスレッドが同時に動くことになる。 このように複数のスレッドが同時に動くことをマルチスレッドという。 スーパーに様々なものを買う役目をもった人間がいるようなものだ。 大分簡易化されているが図で表すと次のようになる。 マルチスレッドを使う理由は? 1人の人間がたくさんの物を買うよりも、複数の人間がそれぞれ目的のものを1つ買うほうが早い。 同じように、1つのスレッドで処理を行っていくよりも、マルチスレッドでの作業速度は速くなる。正確には速くならない場合もあって複雑なのだが、速くできる可能性があると思っておけば良い。 また、例えばWordなどでは入力中、同時にスペルチェックが行われていたりする。このように同時進行させられるのが、マル
イントロ 例外処理を書くことはよくやっているのだけれど、その時の主軸となる考え方について、今までなんとなくで行っていた部分が多かった。 毎回考えるポイントは例えば以下のような疑問。 どこのレイヤーで、どこまで例外処理を行えばよいのだろうか? どの例外をキャッチし、どの例外を伝搬させればよいだろうか? 前提条件をチェックし、失敗した場合、例外を出したほうがよいか、nil, false を返すほうがよいか? 例外をどういう単位でラップさせるのが良いだろうか? 例外をチェインし過ぎると却って煩雑になる気がする。どうすれば良いのだろうか。 しかし、この辺りの話って、API の設計だったり、仕様の影響もあるので、都度対応が異なってしまうもの。 したがって抽象化して理解することが難しく感じた。 とてもよく使ってるし、とても大事な事なことなのに。 そんな今更な事で悩んでいた時に、Effective Ja
2018年4月25日をもちまして、 『CodeIQ』のプログラミング腕試しサービス、年収確約スカウトサービスは、 ITエンジニアのための年収確約スカウトサービス『moffers by CodeIQ』https://moffers.jp/ へ一本化いたしました。 これまで多くのITエンジニアの方に『CodeIQ』をご利用いただきまして、 改めて心より深く御礼申し上げます。 また、エンジニアのためのWebマガジン「CodeIQ MAGAZINE」は、 リクナビNEXTジャーナル( https://next.rikunabi.com/journal/ )に一部の記事の移行を予定しております。 今後は『moffers by CodeIQ』にて、 ITエンジニアの皆様のより良い転職をサポートするために、より一層努めてまいりますので、 引き続きご愛顧のほど何卒よろしくお願い申し上げます。 また、Cod
Googleは、Java APIを使用してモバイルOS「Android」を構築していることをめぐるOracleとの法的な争いにおいて、優勢に立った。 Oracleは、著作権ライセンス料を支払わずに37件のAPIパッケージを使用しているとしてインターネット大手Googleを提訴し、数十億ドルのライセンス料支払いを求めていた。しかしGoogleは、自社による同APIの使用が「フェアユース」に相当すると米連邦裁判所の陪審員団に認めさせることに成功した。 この評決はGoogleにとって大きな勝利である。陪審員団がOracleの主張を支持していたとすれば、この訴訟における次の段階では、Googleが支払うべき対価の査定が始まるところだった。Oracleは、90億ドル以上の賠償金を求めていた。その額は、米国における著作権関連の評決でこれまでに認められた賠償額をはるかに超えている。 しかし、何年にもわた
AndroidにおけるJavaコードの使用は特許と著作権を侵害しているとしてOracleがGoogle(現Alphabet)を訴えてから早6年。米カリフォルニア州北部地区連邦地方裁判所で開かれていた陪審で5月26日、Googleの使用は著作権のフェアユースに該当するという評決が下った。だがOracleはこれを不服としており、まだ終止符とはいえない様相だ。 発端はOracleが2010年に起こした特許訴訟による。当時Oracleは、GoogleがAndroidで1万1500行にもわたるJavaコードを無断使用しているとして90億ドルの賠償を求めた。 Oracleは7件の特許、37件のJava APIの著作権侵害を主張したが、主張は認められなかった。不服としたOracleは2012年にJava APIに絞って上訴。その結果2014年にJava APIは著作権の対象になるとする判断が下った。なお
初心者からのプログラミング入門、ソフトウェア開発の学習を支援する WisdomSoft のホームページです。
入門書ではあまりとりあげられない部分を解説するコンセプトの「入門書が教えてくれないJava」シリーズの第二弾。前回は変数についてだった。今回はそのスコープについて取り上げたい。 スコープとは スコープとは大雑把に言えば変数やメソッドなどが見える範囲のことを指す。 Javaの変数のスコープで一番簡単なのはローカル変数で、これは{から}まで(これをブロックという)の中で、宣言した位置より後ろで参照することができる。 public void main(String[] args) { int i1 = 0; // i1はここからmainの}までの間で参照できる if (true) { int i2 = 0; // i2はこのifの}までの間で参照できる } // i2はifの}を過ぎると参照できなくなる i2 = 1; // ← コンパイルエラー } なお、Javaの言語仕様では{}のブロックは
DIコンテナ使ってるけど、アノテーションってなんなの!って聞かれて、作ってみたらわかるよと答えてみたので、自分でも作ってみました。 よくわかった。 「DIコンテナ使うと何がいいの?」ということも、作ってみるとわかります。あと「DIって何がいいの?」に関しては、「DIはちょっとコードを書くのが楽になるだけで、それだけあっても仕方ない、大事なのはコンテナ」と答えるようにしてますが、コード比率からもそれがよくわかります。 続編としてWebフレームワークも作っているので参考まで。 作って理解するWebフレームワーク - きしだのHatena まずはコンテナを作る とりあえず1ソースの状態で。 こんな感じで、管理する型を登録できるようにします。 static Map<String, Class> types = new HashMap<>(); static void register(String
DA88 luôn là điểm đến mà bất kỳ cược thủ nào cũng muốn lựa chọn để tận hưởng trải nghiệm tốt nhất. Bạn sẽ có cơ hội tiếp cận nhiều loại hình giải trí hấp dẫn và các dịch vụ tiện ích. Nội dung cập nhật bên dưới đây về địa chỉ sẽ giúp bạn có thêm thông tin trước khi quyết định đăng ký. Cách Thức Liên Hệ Tổng Đài DA88 Cực Nhanh Và Chi TiếtChính Sách Bảo Mật DA88 Đang Áp Dụng Với Mọi Cược ThủChơi game
Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。 Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。
役割が明確な小さなオブジェクトに分けるのが、基本中の基本。 従業員を表現するために、従業員オブジェクトをルートとして、 ・個人 ・氏名 ・電話番号 ・生年月日 ・期間 ・給与 という小さなオブジェクトで構成する。 個人 氏名や電話番号のサブのルートクラス。 氏名 姓、名、セイ、メイを保持 バリデーションや、"姓名(セイメイ)"などのフォーマット出力を担当 電話番号 電話番号のバリデーションとか、フォーマット出力を担当 生年月日 生年月日を保持して、年齢計算も担当 期間 開始日と終了日を保持。 ある期間とある期間が重なっているかとか、期間演算を担当 給与 マネークラスのサブクラス。 将来は、給与計算ロジックを追加する場所。 --- オブジェクト指向の分析設計の発展形である、ドメイン駆動設計のオブジェクトの構成はこんな感じなる。 Evans の Domain-Driven Design のパタ
「staticおじさん」という言葉をご存じでしょうか。「static」というのは、Javaのstaticメソッドのことです。Javaでメソッドを呼び出すときにはクラスからインスタンスを生成してインスタンスのメソッドを呼び出すのが普通です。一方、staticメソッドはインスタンスを生成しなくてもクラスから直接呼び出せます。このため、オブジェクト指向プログラミングを理解していない古いタイプのプログラマは、Javaでもstaticメソッドを多用します。これを揶揄して「staticおじさん」と呼ぶのです。 staticおじさんについては、わかりやすく解説したブログエントリが有名です(参考リンク)。実際のシステム開発の現場でstaticおじさんに苦しめられている様子をまとめたページもあります(参考リンク)。 なお、Javaのstaticメソッドを多用する人に限らず、古い感覚にとらわれて周囲に迷惑をま
オブジェクト指向 Advent Calendar というものを見つけたので、Visitor パターンについて書いてみます。 嘘です Visitor パターンについて書きたいけれど、Java Advent Calendar は埋まってしまってるので、それっぽい Advent Calendar に参加しただけです。別に Advent Calendar に参加しないといけない決まりなんてないんですけど。 デザインパターン Visitor パターンとは、デザインパターンの一つです。 そもそもデザインパターンとは何かというと、1995 年に Gamma らが "Gang of Four"、俗にいう GoF で提唱した、オブジェクト指向プログラミングによって特定領域の問題を解決しようとする際に頻出するイディオムのようなものです。 GoF で提唱されたデザインパターンは多くありますが、1995 年に発表
この記事はシステムエンジニア Advent Calendar 2015 - Qiitaの記事です。 弊社アーキ部で@kawasimaさんに教えてもらったさいきょうの二重サブミット対策について書いていきます! 二重サブミットが発生するケース 不正な更新リクエストが発生するケースとして、以下のものが考えられます。 サブミットボタンをダブルクリックする 戻るボタンで戻って、再度保存ボタンを押す 完了ページでブラウザリロードする CSRF攻撃による不正な更新リクエスト 1. サブミットボタンをダブルクリックする 確定ボタンをダブルクリックすることによって、ユーザが意図していないリクエストが発生してしまうケース。 2. 戻るボタンで戻って、再度保存ボタンを押す 処理完了画面から戻るボタンで前の画面に遷移し、再び確定ボタンを押すケース。 本来は入力➡︎確認➡︎完了の画面遷移が適切だが、その画面遷移にな
去年Androidソースコードレビューで指摘する事が多い項目まとめという記事を書いた時はアプリ全体を一度に見るような機会が多かったため、内容も大きめのものばかり書いていましたが、最近はプルリクエスト単位でレビューする機会が増えたので細かい項目についてまとめてみようと思います。 ミリ秒で時間を指定する時に自前で計算している 1000L * 60L * 60L * 24Lのようなコード。 TimeUnitを使いましょう。 24時間の場合は以下のように書けます。 TimeUnit.DAYS.toMillis(1L) ある文字列がhttp/httpsで始まるかチェック URLUtil.isNetworkUrl()を使いましょう。 ただしequalsIgnoreCaseで判定してます。 ベースURLにパラメータを付与していってURLを生成したい StringBuilder#append("&key=
元ネタ: 僕にとってMaybe / Nullable / Optional が、どうしてもしっくりこないわけ。 - 亀岡的プログラマ日記 OOPの文脈で見ると、元の記事が言っていることもわからなくはないのですが、対象が広すぎていろいろと不正確になってしまっているので、ちょっとまとめてみます。 元の記事が対象にしているのは、Maybe / Optional / Nullableの3つです。 対応する型を持つ言語を見てみると、下記のようになります。 Maybe(Haskell) Optional(Swift/Java) Nullable(C#) これらは、「値がないこと」を表すもの、という見方では同じですが、それぞれ異なる価値観の元に作られています。 Maybe/OptionalとNullable これらはすべて型パラメータを取ります*1。 しかし、この中でNullableだけは型パラメータに
機種変更では、このような失敗をする方がとても多いです。 有料オプションを契約させられ料金が高くなった。。 待ち時間や契約時間が長くて、半日かかってしまった。。 キャンペーンや割引がきちんと適用されていなかった。。 スマホを乗り換えるときには、 → おとくケータイ で乗り換えをするとキャッシュバックがもらえます。 スマホの機種変更するときは、 →ソフトバンクはこちら →ドコモはこちら →auはこちら キャリア公式オンラインショップがおすすめです。学割や限定キャンペーンなどがもっとももおとくな時期です。 最も人気の言語、JavaScript Redmonkの調査によると、人気言語のランキング第一位はJavaScript (2015年6月発表のデータ,Redmonkより引用) これはGitHubとスタック・オーバーフローというサービスのコミュニティを分析した結果で、見にくいですが1位がJavaS
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く