タグ

javaとselfに関するslay-tのブックマーク (5)

  • Rustでの 抽象化 3パターンについて

    ※この記事は全然入門記事ではないです。Javaなどのオブジェクト指向言語とRustをある程度理解している前提での記事です。あと、メモ程度に雑に書いています。 今回は抽象化がテーマです。オブジェクト指向の多態相当のことをRustでどうのように解決すればいいのでしょうか。個々の実装型の都合によらず、呼び出し側は統一的なインターフェイスで操作するケースはRustでもあるはずです。 オブジェクト指向言語の設計に慣れていると、Rustで設計するときにどうしたらいいかわからないことがあります。なぜならRustには継承がないからです…。まぁJavaと比べるとだいぶ違うので頭を切り替える必要があります。今回はそういう感じの記事です。 では、早速デザインパターンを題材にして考えてみましょう。 抽象化について 簡単なコマンドパターンから考えます。 ここでは単純に渡した文字列を標準出力するコマンドを考えます。以

    Rustでの 抽象化 3パターンについて
  • SLF4JとLogbackは2021年現在では積極採用しない方が良い(2023年12月 追記) - Kengo's blog

    SLF4JとLogbackの中の人はここ数年活発ではないのでLog4j2などを代わりに使いましょう。 SLF4Jの活動は最近活発ではない SLF4JはVCSとしてGitHubを利用しています。最後の変更が2020年2月、最後のリリースが2019年12月となっていることからも、あまり活発ではないことが伺えます。 またBTSとしてJIRAを使っていますが、こちらもメンテナンスされていません。昨夏SLF4J-209が既にクローズ可能な状態であることやSLF4J-186が修正可能であることなどをコメントしましたが、1年近く経った今もすべて返信がない状態です。 2020年12月にイシューを閉じていたりするので全く動きがないわけではないのですが、年間で22つ作成されたのに対して2つしか閉じられていないので、充分にメンテされているとは言い難い状況です。 2021年5月31日時点での過去360日のイシュー

    SLF4JとLogbackは2021年現在では積極採用しない方が良い(2023年12月 追記) - Kengo's blog
  • Smalltalkが失敗した理由

    Room 101より。 Bits of History, Words of Advice 「貴重なものがあるのに、私に喜びを与えてくれるような優雅さがあるのに、なぜ君ら間抜けは劣った言語の乗り物を使うんだ? どうして、そんなに盲目で愚かなんだ?」その議論には絶対に勝てないし、挑戦しない方がいい。 - アラン・パリス, 1978 1970年代後半、Xerox Parcの研究者たちは現代のコンピューティングを発明しました。もちろん、他の場所にもありましたが、Parcは非常に不釣り合いな(不相応な)貢献をしました。 その大部分は、Smalltalkというプログラミング言語をベースとして行われました。40年前、Smalltalkの動的更新とリフレクション機能は、今日の主流言語の中では最も高度なものでした。この言語は、これらの機能を活用して、多くの点で現在、その用語の下で成り済ましている日、ブラッ

  • アルゴリズムの基本をJava、C#、Pythonで学ぼう - データを集計し、言語ごとの違いを知る - エンジニアHub|Webエンジニアのキャリアを考える!

    今回は、以下のように指定しました。表示オプションはデフォルトのままです。 地点を選ぶ:東京 項目を選ぶ(データの種類):時別値 項目を選ぶ(項目):気温 期間を選ぶ:2019/1/1~2019/12/6 データの項目は「日時」「気温」「品質情報」「均質番号」の4種類。品質情報、均質番号は、観測値が正常かどうかに関する情報です。各項目の詳細については、同サイトの「ダウンロードファイル(CSVファイル)の形式」ページを参照してください。 ファイルの先頭5行には、次の画像のような項目が入っています。このまま使うとやや面倒なので、あらかじめ先頭5行分は削除し、全てデータ行のみのCSVファイルに加工しておきます。 CSVファイルの仕様にはバリエーションがあり、その全てに対応するとコードが複雑になりますので、今回は気象庁のCSVデータに基づき、次の仕様を前提とします。 文字種は、ANK(1バイト文字)

    アルゴリズムの基本をJava、C#、Pythonで学ぼう - データを集計し、言語ごとの違いを知る - エンジニアHub|Webエンジニアのキャリアを考える!
  • C# 使いから見てうらやましい Java8 の default 実装の使い方 - ぐるぐる~

    Java8 から追加されるインターフェイスの default 実装ですが、C# の拡張メソッドに似てますよね。 実際、このどちらも「シンインターフェイス」を定義するだけで「リッチインターフェイス」が手に入ります。 しかし、C# の拡張メソッドと Java のインターフェイスの default 実装には、それぞれの利点と欠点があります。 拡張メソッドの利点 拡張メソッドの利点は、インターフェイスの実装者だけでなく、 インターフェイスの使用者に対してもインターフェイスの拡張が開かれている点です。 既存の型ですら、後付けでメソッドを追加することができるということです。 using System; public static class StringExtension { // インターフェイスでなくても、どんな型に対しても拡張可能 public static int ToInt(this str

    C# 使いから見てうらやましい Java8 の default 実装の使い方 - ぐるぐる~
  • 1