「Elixir」を含む日記 RSS

はてなキーワード: Elixirとは

2021-09-25

オブジェクト指向はすでに粒度時代にあっていない」を読んで

記事

@kis (id:nowokay) さんの以下の記事についてです。

https://nowokay.hatenablog.com/entry/2021/09/25/042831

ブコメにもあるようにちょっと内容が雑というかわかりにくいせいで賛否両論になってしまっていて、もしかしたら近いうちにアンサー記事が出るかもしれませんが、自分自身理解を助けるためにも言わんとしていることを推測しつつ、自分認識もまとめておこうと思い書くことにしました。明らかに誤読してそうな箇所があれば、指摘してください。

前提

まずは前提を書いておかないと論点がぼやけると思うのでいちおう。

自分バックグラウンドは以下:

その他の前提:


本文およびブコメを読んで思ったこ

2000年代に入って関数型プログラミングが脚光を浴び始めたのは、コンピュータ資源が潤沢になりパフォーマンスをそれほど気にしなくってよくなったことが大きな理由ではないか、という認識があります

関数型プログラミング言語の内部実装を読んだことがないので推測ですが、データを不変にするということはその都度メモリ領域を新たに割り当てることになり、そのオーバーヘッドプログラムパフォーマンスに影響を与えるので、パフォーマンス要件がをシビア場合、どうしてもメモリ割り当てや計算効率を考えるとミュータブルにせざるをえないと思います。が、ウェブアプリケーションに限っていえば、データベースアクセスネットワークアクセスレイテンシが大きいので、そうした相対的に細かいオーバーヘッド無視しても(大抵の場合は)問題にならなくなった、というのが「時代」の流れなんだという認識です。

いっぽうで別の観点もあって、REST API や FaaS が一般化して、関数単位で処理を分割し、アプリケーション外部に配置することが当たり前になってきた現状があり、マイクロサービスのようにアプリケーション自体モジュールの一単位として考えると、アプリケーション内部のモジュール同士でも関数ベースでやりとりする形になっても不自然ではないと考えられます

記事にもありますが、RPC派生実装?)として生まれJava の CORBA や MicrosoftDCOM みたいな振る舞い付きのオブジェクトコンポーネント)を共有しようという世界観は廃れ、REST API のような単一の振る舞い(エンドポイント)とそれにひもづく JSON のようなデータ構造のみを受け渡すやり方が一般的になったアプリケーション通信の潮流と、計算資源が潤沢になって再度脚光を浴びた関数型プログラミングが、レイヤーの違いを飛び越えてひとつになろうとしているのではないか、と。

まり、元記事に書かれている「時代に合ってない」というのは、「データ構造と振る舞いが一体となったオブジェクト」のような「なにか」は、そうした背景があるために、どこにも存在する必要がなくなってきているのではないか、と解釈しました。

なので、以下のコメントちょっと論点がずれてると思いました。

はあ?「再利用する方法としてはWeb APIが主流」って、その中身をオブジェクト指向設計することは、全く矛盾しません。 部品化の単位は、慣習や柵などで大きく変わりますオブジェクト指向とはほぼ無関係です。

https://b.hatena.ne.jp/entry/4708813645995359202/comment/suikyojin

なんでサービスとして外とやり取りする話とサービスの内部設計の話をごっちゃにしてんだ。なんか理解度が怪しくない

https://b.hatena.ne.jp/entry/4708813645995359202/comment/ssssschang

しかに、アプリケーション単位アプリケーション内部のモジュール単位とでその表現形式を合わせる必要はないんですが、元記事の言わんとしていることはこの一文に端的に表れていると思います

ソフトウェア記述をまとめるという視点では主にステートレス関数を分類できれば充分で、データと振る舞いをまとめたオブジェクトというのは大きすぎる、システムを分割して管理やすくするという視点ではオブジェクトというのはライフサイクルリソース管理視点が足りず小さすぎる、ということで、オブジェクト指向粒度でのソフトウェア管理は出番がなくなっているのではないか、と思います

個人的にわからなかったのは以下の部分です。

オブジェクト指向でなぜつくるのか」という本がありますが、「え、いまどきオブジェクト指向でつくらなくない?」っていつも思います。内容的には、もうほとんどはオブジェクト指向関係ないソフトウェア工学の紹介になっていますね。

当該書籍は読んだので後半はまぁわかるんですが、前半は「え、いまでもオブジェクト指向でつくるのが主流じゃないの?」って思ってしまますオブジェクト指向定義が「データ構造と振る舞いが一体となったオブジェクトの集まりとしてソフトウェア組織化すること」なのであれば)。

おわりに

Joe Armstrong が "Why OO Sucks" を書いたのが2000年とのことなのですが、そろそろこうした議論収束に向かってほしいと個人的には思います(とっくに収束していると感じている方もいらっしゃるでしょうけど)。

https://gist.github.com/posaunehm/4087971

2019-01-11

JavaコケにしてRailsやってた人は、今は「Railsは終わった」って言いながらElixirとかやってんでしょ?

2018-12-06

anond:20181206181037

昔は食わず嫌いでさっぱり触らなかったけど、仕事で触れたElixirが割と楽しくて今は関数型言語に少し興味が湧いている

2018-10-26

前はerlangだかelixir分散ストレージ作ってるって言ってなかった?

止めたのかな

筋悪だなあと思ってたから驚きはしないけど

2018-03-26

エンジニアである俺の最近マインドについて

エンジニア一兵卒40台なんだけど

フロントエンドは流れ早すぎgulpだかなんとかzly とか多くて辛いし、js 嫌いだし、typescript ?、結局同じでしょ。むりー

・おれの主戦場web アプリだぜ。でも、rails案件としてはやったことないし、いまから rails やりなくない、php もいまから php7 とか laravel とか追いつけないわ。むりー

課金とか決済まわりの面倒くさいの、むり。レポートだすのめんどい。何かあったときメンタルつらいし、監査対応? むりー

機械学習数学才能ないし、金かかるし、python3.0 ? インデントブロックつくるのあわない。むりー

goツール書く、なに書いていいのかわからん。むりー

アプリ設計指針多すぎ。クリーンアーキテクチャとか MVVM? MVP?、むりー

kotlinelixir ? むりー

俺はエンジニアなんだけど、なんか詰んでる。メンタルが。むりー

どうしたらいい?

2017-11-12

anond:20171112221107

新しい連合SNS「Pleroma」はMastodonを置き換える?

ラズパイで動くほど軽いというのが特徴。

http://www.itmedia.co.jp/news/articles/1711/12/news018.html

Elixirで書かれたOStatus互換SNSGNU socialおよびMastodon互換性がある

内部的には最初からActivityPubで、外部との通信もActivityPubにする計画

Raspberry Piでも動作する軽量性と高いパフォーマンス

Mastodonモバイルクライアントのいくつかで動作する(Twidere、Tusky、Pawoo、Subway Tooter、Amaroq、Tootdon)

文字制限は5000文字まで

もう作られつつある。

2016-05-20

http://anond.hatelabo.jp/20160520143856

再束縛OKの関数型言語はあるよ

> (let [t 1, t (+ t 1)] t)
2

http://www.tryclj.com/

Elixirもそうみたい

t = {x: 1, y: 2}

のあとで

t.x = 10

t.y = 15

とか直接書き換えられたら問題かな

2016-03-24

サーバスペックが低くても負荷の高いサイト運用したい

何を作りたいかというとマルチプレイヤーブラウザゲームが作りたいんだよね。

phpsymfonyを使ってみたけど重い。

俺の開発用のceleron 1コアのメモリ1GB環境では重すぎる。

isoファイルを10000個同時にダウンロードしてるぐらい重すぎる。

ページの読込みがなかなか完了しない。

こんなクソ重いフレームワークはそれなりのサーバスペックがないとパフォーマンスに影響が出すぎるので除外したい。

phpフレームワーク一般に言えるんだけどプロジェクト毎にプロジェクトルートなかにフレームワークのコアファイルを置くのがなんか嫌だ。

railsdjangoのように分離させてほしい。

nodejsシングルスレッドなので負荷の高いサイトで使うのは厳しそう。

pythonでもgolangでもwebsocketは使えるのでnodejsにこだわる必要もないしvert.xを使う選択肢もある。

日本ではvert.xの話題あんまり盛り上がってないよね。どこかの企業さんが実践で使いましたって記事を書いたら会社の知名度が上がると思う。

scala,golang,elixirこの3つの選択肢でいいのかな。

でも負荷の高いブラウザゲームやってる会社ってrailsとかphpだよね。

railsphpでも問題ないのかな。

redisをうまく活用しとけばあんまりそれ以外でボトルネックとなるようなことって無いのかな。

艦これやってるdmmとかは何使ってるんだろうね。

スクエニさんのオンラインドラクエもどうやってるんだろうね。

あと海外ブラウザゲームってほとんどがaws使ってるのでaws使えばいいのかな。

でも怖いよね高額料金を請求されたらさ。

金儲けの為にサイトを作らないとawsは使ってられない気がする。

初めのスタートダッシュは定額制のレンタルサーバクラウドでいいか。

 
ログイン ユーザー登録
ようこそ ゲスト さん