「オブジェクト指向言語」を含む日記 RSS

はてなキーワード: オブジェクト指向言語とは

2024-04-01

anond:20240401152026

今Rust使ってるのはよっぽど意識高い系ベンチャーGAMかってくらいなのよ

5年前ならともかく、今は全然そんなことはないです

ちゃんとしたプロエンジニアはRust以外にもたくさんメジャー言語経験があるし面接経験とかもあるのよ

それはそうですが、Rustがオブジェクト指向言語かどうかに関係ありませんね

インターフェイスがとか足切り質問であってそんな読めばわかること誰も重要視しないんだよね

「Rustがオブジェクト指向言語なのか?」という話題においては、traitがインターフェース機能をより一般化して強力にした機能であるとか、

そのあたりの方が「誰がどのプロダクトを作ったか」より遥かに重要ですね

実際にどんなサービスを作ったとかの話になるの

「Rustがオブジェクト指向言語なのか?」という話題においては、なりませんね

君その辺空っぽだよね

キミ、Rustの具体的な機能イディオムコーディングスタイルの話一切できてなくて、空っぽだよね

全部増田はいくらでもホラ吹ける自称だけ

anond:20240401144957

オブジェクト指向言語で書かれたシステムを、パフォーマンスの都合でそっくり丸ごとRustに置き換えることはよくあること

にたいして

C++をRustで置き換えてパフォーマンスが上がる理由がまるで無いんだが

って返すってことは、キミはオブジェクト指向言語と呼べるものはこの世でC++ただ一つだけ」っていう過激派の人?

ちょっとエキセントリックすぎて会話にならないな

関数型言語豪語するやつはバグが多い

別に関数型言語だろうがオブジェクト指向言語だろうが業務によって使い分けるけど

関数型言語をやたら主張してくるやつはめちゃくちゃバグが多い

普通に考えると型付けの関数型ならバグが少なくなりそうなのに実際には全くそんなこと無い

観察したことがある感じだとオブジェクト指向的に状態を整理するようなことが苦手で

それが嫌でオブジェクト指向から逃げて関数型を主張してくるので

根本的に体系的な物事の捉え方ができてないのでバグを量産する

例えば商品として服と靴があったとして、カートに入れたら服は税込みなのに靴は税抜きになってたりする

ちなみにオブジェクト指向をやたら主張してくるやつはバグは少ないけど開発がめちゃくちゃ遅い

俺の考えた最強のデータ構造模索し続けるし他人にもそれを求めるのでめちゃくちゃ面倒くさい

服と靴を買うだけのサイトなのに「靴磨きのサービスを追加する場合は?」みたいなことを考え始める

何事もほどほどがいいと思う

anond:20240401143900

なんでOOPなのにRustを採用したの?

「なのに」という逆説が出てくる意味がわからない

Rustを採用するかどうかは速度や型検査堅牢制、メモリ消費量や実行時間予測可能性の問題によるのであって、

OOPになるかどうかでRustを採用するかどうかを決めることはないよ

オブジェクト指向言語で書かれたシステムを、パフォーマンスの都合でそっくり丸ごとRustに置き換えることはよくあることだよ

2023-09-19

1000年後の人類に崇めてもらうためだけに石板にC言語を刻んでる

磁気テープ光学ディスクも紙も天変地異の前には脆いものよ。

1000年後の人類が地中から謎の言語が刻まれた石板を掘り起こして

これは神の言語では!?ってなってくれることだけを夢見て

今日も石板にC言語を刻んでる

 

ももし、この世界に俺と同じ思考

オブジェクト指向言語を石板に刻んでる奴がいたら

きっと負けてしまうんだろうなぁ……

2023-09-12

オブジェクト指向知らんやつのコードはクッソ汚い

20年ぐらいプログラミングやってるっていう40代の人とペアプロしてるんだけど

コードが汚すぎてPRにめちゃくちゃ時間かかる

変数ほとんどがグローバル的な扱いで独自命名規則宣言しるし

その命名規則全然守られてないしスペルミスも多くて読んでてイライラしてくる

根本的な作り方が無茶苦茶ちゃんと動いてるのかバグがあるのかも分からん状態

PR出てくる度に打ち合わせして、そもそもデータ構造とか機能分割について指摘してるんだけど

この前ふと

「そういやJavaで書いたことありますか?Javaだとこんな感じですよね」

って話したらJava知らんと言われた

で、聞いてみたらオブジェクト指向言語で書いたことないし勉強したことも無いとのこと

JavaなりC++なりオブジェクト指向言語で書ける必要は無いけれど

少なくともデータ堅牢性とか再利用性とかの考え方は知っといて欲しい

とはいえ20年もそれでやってきてるんだから今更無理だろうなぁ

2023-04-11

2003年4月11日菊池百子が死んだ

ずっと忘れていた。

いや、脳の奥に生乾きのかさぶたのようなものがじっとりとこびりついて、ふとした時に思い出したりはしていた。

なぜだか、それが昨日になって出てきた

そうかもう20年以上経っていたか

百子はJava言語技術者だった。いや、技術者か分からないがJavaを学ぶ25歳の若い女性だった。

百子とはJavaHouseで出会った。

当時Java言語J2EEの登場により大きな注目を集めており、エンタープライズ用途で稼働していた業務アプリケーションWEBベースJavaアプリケーションへのリプレースする事が大きな需要を生んでおり、VBDelphi又はバックエンドとしてのCOBOL等で活躍していたエンジニア技術転換を求められていた

現在も大して変わらんないかもしれないが、業務エンジニアコンピューターサイエンスを学んだ者は少なかった。

文系出身で(数学としての)関数代数ちゃん理解しているのか怪しいような者も数多く居り、当然ながらオブジェクト指向言語に戸惑う者も多かった。自分がそうだった。

当時の技術コミュニティはいくつかはあったが、古くからあったがどれも敷居が高かった。

fj.comp.lang.* (ネットニュース:現在意味が異なる)は正当な技術者も多かったが初心者が書き込める雰囲気が無かったり過疎っていた。ニフティサーブPC-VAN等のパソコン通信(当時既にサービス名が変わっていたかもしれないがみんな昔の名前で読んでいた)をベースにしたもの歴史があったが、老害が偉そうにしているフォーラムも多く、やがて廃れていった。

そうした中で初心者熟練者も和気あいあいと活発な議論が行われていたのが、JavaHouseというメーリングリストコミュニティだった。

主催者現在インターネットセキュリティの大物左翼として時折世間ビビらせまくっている、ひろみちゅ先生こと高木浩光氏。当時既に産総研研究者になっていたとはいえあくま個人手弁当運用していた。無料で誰でも自由に入退会ができるコミュニティであり、他に行き場のなさを感じた初心者Javaエンジニアたちにとって大きな心の拠り所となった。

百子がいつからJavaHouseに居たのかは分からない。

でも百子が注目された事があったのだ。

最初Java経由での帳票出力の議論であった。

当時は適切な印刷用の整形ソリューションが無く比較的頻繁に挙がっていた話題で、

百子も同様に苦しんでいた

当方プリントアウトに苦っています

一度PDFに落としてから各自プりントアウト

するような方法が、現時点ではり一ゾナブル

かとも思います


ドラえもんのようなひらがなカタカナを組み合わせたチャーミングな文体でその焦りを徹底的かつ高度に表現していた。

しかしこの議論中に問題が起こる。JavaHouseに障害が発生しメール配信されない事象が発生したのだ。

NFSで他のサーバーマウントしていたが不要と思われたNFSサーバーデータを一部で参照していたため処理が行えなかった、応急的に対応したが根本対応を後日行うと管理者高木浩光は告げた。

購読者達は不安を覚えたが復旧を喜んだ。

しかし、議論が途切れた事を不安に思った百子は高木浩光に直接確認を行った。返事は帰ってこなかった。

その後、高木浩光からその議論スレッドに返信される

> This Message was undeliverable due to the following reason:

> The user(s) account is temporarily over quota.

というエラーで戻ってきました。

いろいろとご心配のようでしたので(その内容については書きませんが)、迅

速にお返事を差し上げる必要を感じておりますが、上記の通りでは、連絡の取

り様がありませんので、やむを得ず、お返事を差し上げた事実をここで示させ

いただきます

あろう事か高木浩光心配で苦悩を抱えた百子に対して

徹底的な侮辱晒し上げたのだ。

まるで百子に非があるかのように。

恥ずかしさと悔しさで真っ赤となった泣き顔の百子を想像することは難しくない。



次はインスタンス生成時のコストに関する伝統的な議論であったが、

その流れで議論とは関係が無かったが百子はやりとりのマナーについて言及した。

また、メールコメント部分に対するみつっこみは

やや、マナー違反のように思えますが、いかがでしょう?


議論をしていた者たちは本質的では無い指摘に形式的謝罪をしたが、

百子に対して冷淡な反論をしたものが居た。

高木浩光

そんな慣習はありませんよ。


議論はその後元の話題に戻っていくが、無粋な高木浩光に、

きっと百子は憤然たる思いを抱えたに違いなかった



最後に決定的な事が起こる

先日の障害の復旧のためメンテナンスのためサービスを停止すると高木浩光が予告した。

百子はさんざん煮え湯を飲まされてきた高木に対して

ビジネス感覚に溢れ優美ウィットに富んだリプライを返した。

以下ちゃちゃです。

ふつう民間企業ならば、残業休日出勤はあたりまえ

なのに、ずいぶんのんびりしてますね。

サービスが利用不可というのは、大変なことでしょうに。

以上、ちゃちゃでした。


ユーモアやウイットを解せぬ下らない有象無象が百子を咎めた。

挙げ句Javaコミュニティ自分で立ち上げてみてはどうかと言う者まで現れた。

か弱く繊細で思いやりのある儚き百子が、このような嘲りに耐えるのは致命的な苦痛だったに違いない。

百子は精一杯の力でJava界の将来についてその想いを書き綴った

私が恐れているのは、恐怖の日が襲い、対応の行動が遅すぎる前に

協議を行って欲しい、ということです。

ある日、国内中のjava関係の方々がパニックを起こさないように。






別れは突然訪れた

「百子の夫です」

技術コミュニティに相応しない短い件名の投稿は衝撃的なものであった

私の妻百子は11日に進行性癌に伴う急性心不全永眠いたしました

25才でした

医師の診断をもらったとき私たちに残された時間は1ヶ月というものでした

毎日が恐怖でした。、

でも発作が起きてからそれほど時間がかからなかったのはすくいでもありました


なんという事だ!こんな悲劇があってよかろうはずがない!

しかもあのプりントアウトの話をしていたときには余命を悟っていたのか。

自分は打ちのめされた

そしてさらに衝撃的な事が続く

百子は先週からふさぎがちになっていました

聞くとブー様とうまくいっていないのではないかということでした

百子はずいぶん前からたびたび高木という男の名を出してひとりでジャバなる

パソコンを動かし一人で全部やってのけているのだと絶賛しておりました

私は軽い嫉妬心からその名字だけをとってブーといいました

しかし百子はなぜか抵抗を示しブーと読んだあとにも必ず様をつけるのでした



おのれ高木さんめ!いや、ぶー様め!

百子の心に闇で満たしたという事か。


悔しくてウイスキーストレートで何倍も痛飲し、この辛い出来事を忘れるように努めた。

しばらく時間が掛かったが、悲劇からのショックから癒えた。

自分アプリケーションプログラミングをする事もすっかりなくなっていた。

数年に1度くらいフッと湧き上がってくる事があったが、すぐに忘れようとした。

しかし、昨日はなぜ、菊池百子を思い出したのかずっと考えていた。

ずっと、ずっと

愛していたんだと思う、百子を。

直接会ったことはないし、見たこともない、投稿の文面の文字しか見ていない、直接のメッセージのやりとりもしていない、だけど確かに自分は百子を愛していた。

雅人よりもずっと。

ぶー様よりもきっと。

Rest in peace, I love you.

https://web.archive.org/web/20091027013532/http://java-house.jp/ml/archive/j-h-b/052276.html#body

2022-12-01

コンピューターサイエンスって何だよ?

最近コンピューターサイエンスプログラマー必要か否かみたいな話が上がっているが、そもそもコンピューターサイエンスって何だよ。どこまでの範囲をさしてんの?

って思ってググってみたらちゃん定義されてた。

ググって出てきた情報を整理しただけなので詳しい人、補足・訂正よろしく


情報

CS2013

https://www.acm.org/binaries/content/assets/education/cs2013_web_final.pdf

CS2013はACM/IEEE-CSによるカリキュラム標準。

ACM(計算機協会)はコンピュータ分野全般国際学会、IEEE-CSIEEE(米国電気電子学会)の中にあるテクニカルソサエティ


J07-CS

https://www.ipsj.or.jp/12kyoiku/J07/20090407/J07_Report-200902/4/J07-CS_report-20090120.pdf

J07-CS一般社団法人情報処理学会がCC2001CSベースアレンジを加えたカリキュラム標準。今はCS2013を反映したJ17-CSがあるらしいけどその辺は良く分からん

IPA共通キャリアスキルフレームワークとの対応表もあり。

https://www.ipa.go.jp/files/000024060.pdf


知識体系

J07ーCSから抜粋CS2013と比較するとナレッジエリアがあったり無かったり。

KAナレッジエリアKUナレッジユニットアユニット最低履修時間
DS離散構造DS1関数, 関係, 集合6
DS離散構造DS2論理6
DS離散構造DS3グラフ4
DS離散構造DS4証明技法8
DS離散構造DS5数え上げと離散確率の基礎7
DS離散構造DS6オートマトン正規表現6
DS離散構造DS7計算論概論4
DS離散構造DS8計算
PFプログラミングの基礎PF1プログラミング基本的構成要素9
PFプログラミングの基礎PF2アルゴリズム問題解決6
PFプログラミングの基礎PF3基本データ構造14
PFプログラミングの基礎PF4再起5
PFプログラミングの基礎PF5イベント駆動プログラミング4
ALアルゴリズムの基礎AL1アルゴリズムの解析の基礎4
ALアルゴリズムの基礎AL2アルゴリズム設計手法8
ALアルゴリズムの基礎AL3基本アルゴリズム8
ALアルゴリズムの基礎AL4アルゴリズムの高度な解析
ALアルゴリズムの基礎AL5高度なアルゴリズム設計
ALアルゴリズムの基礎AL6計算クラスPとNP
ALアルゴリズムの基礎AL7暗号アルゴリズム
ALアルゴリズムの基礎AL8幾何アルゴリズム
ALアルゴリズムの基礎AL9データ分析アルゴリズム
ALアルゴリズムの基礎AL10並列・分散アルゴリズム
ARアーキテクチャ構成AR1論理回路と論理システム6
ARアーキテクチャ構成AR2データマシンレベルでの表現2
ARアーキテクチャ構成AR3アセンブリレベルマシン構成7
ARアーキテクチャ構成AR4メモリシステム構成アーキテクチャ5
ARアーキテクチャ構成AR5インタフェース通信3
ARアーキテクチャ構成AR6機能構成7
ARアーキテクチャ構成AR7並列処理と様々なアーキテクチャ2
ARアーキテクチャ構成AR8性能の向上
ARアーキテクチャ構成AR9ネットワーク分散システムのためのアーキテクチャ
OSオペレーティングシステムOS1オペレーティングシステム概要1
OSオペレーティングシステムOS2利用者から見たオペレーティングシステム1
OSオペレーティングシステムOS3オペレーティングシステム原理1
OSオペレーティングシステムOS4プロセス構造スケジューリング3
OSオペレーティングシステムOS5並行性4
OSオペレーティングシステムOS6メモリ管理4
OSオペレーティングシステムOS7入出力デバイス管理と入出力
OSオペレーティングシステムOS8ファイルシステム2
OSオペレーティングシステムOS9認証アクセス制御1
OSオペレーティングシステムOS10セキュリティと高信頼化
OSオペレーティングシステムOS11リアルタイムシステム組込みシステム
OSオペレーティングシステムOS12並列分散処理のためのオペレーティングシステム機能
OSオペレーティングシステムOS13オペレーティングシステム構成
OSオペレーティングシステムOS14システム性能評価
NCネットワークコンピューティングNC1ネットワークコンピューティング入門2
NCネットワークコンピューティングNC2通信ネットワーク接続7
NCネットワークコンピューティングNC3ネットワークセキュリティ2
NCネットワークコンピューティングNC4クライアントサーバコンピューティングの例としてのウェブ3
NCネットワークコンピューティングNC5分散アプリケーションの構築
NCネットワークコンピューティングNC6ネットワーク管理
NCネットワークコンピューティングNC7ワイヤレスおよびモバイルコンピューティング
NCネットワークコンピューティングNC8マルチメディア情報配信システム
PLプログラミング言語PL1プログラミング言語概要2
PLプログラミング言語PL2仮想計算機1
PLプログラミング言語PL3言語翻訳入門2
PLプログラミング言語PL4宣言と型3
PLプログラミング言語PL5抽象化メカニズム3
PLプログラミング言語PL6オブジェクト指向言語6
PLプログラミング言語PL7関数言語
PLプログラミング言語PL8論理言語
PLプログラミング言語PL9スクリプト言語
PLプログラミング言語PL10言語翻訳システム
PLプログラミング言語PL11システム
PLプログラミング言語PL12ブログラミング言語意味論
PLプログラミング言語PL13プログラミング言語設計
HCヒューマンコンピュータインタラクションHC1ヒューマンコンピュータインタラクションの基礎6
HCヒューマンコンピュータインタラクションHC2簡単グラフィカルユーザインタフェースの構築2
HCヒューマンコンピュータインタラクションHC3人間中心のソフトウェア評価
HCヒューマンコンピュータインタラクションHC4人間中心のソフトウェア開発
HCヒューマンコンピュータインタラクションHC5グラフィカルユーザインタフェース設計
HCヒューマンコンピュータインタラクションHC6グラフィカルユーザインタフェースプログラミング
HCヒューマンコンピュータインタラクションHC7マルチメディアシステムのHCI 的側面
HCヒューマンコンピュータインタラクションHC8協同作業コミュニケーションのHCL的側面
MRマルチメディア表現MRI情報ディジタル表現2
MRマルチメディア表現MR2文字コード1
MRマルチメディア表現MR3標本化。 量子化圧縮原理アルゴリズム
MRマルチメディア表現MR4マルチメディア機器
MRマルチメディア表現MR5オーサリング
GVグラフィックスとビジュアルコンピューティングGV1グラフィックスにおける基礎技術2
GVグラフィックスとビジュアルコンピューティングGV2グラフィック・システム1
GVグラフィックスとビジュアルコンピューティングGV32次元画像の生成と加工
GVグラフィックスとビジュアルコンピューティングGV4モデリング
GVグラフィックスとビジュアルコンピューティングGV5レンダリング
GVグラフィックスとビジュアルコンピューティングGV6コンピュータアニメーション
GVグラフィックスとビジュアルコンピューティングGV7視覚
GVグラフィックスとビジュアルコンピューティングGV8仮想現実(VR)
GVグラフィックスとビジュアルコンピューティングGV9コンピュータビジョン
ISインテリジェントシステムIS1インテリジェントシステムの基本的問題3
ISインテリジェントシステムIS2探索および制約充足2
ISインテリジェントシステムIS3知識表現および推論
ISインテリジェントシステムIS4高度な探索
ISインテリジェントシステムIS5高度な知識表現と推論
ISインテリジェントシステムIS6エージェント
ISインテリジェントシステムIS7自然言語処理
ISインテリジェントシステムIS8機械学習ニューラルネット
ISインテリジェントシステムIS9プランニングシステム
ISインテリジェントシステムIS10ロボット工学
IM情報管理IMI情報モデルシステム2
IM情報管理IM2データベースシステム2
IM情報管理IM3データモデリング4
IM情報管理IM4関係データベース3
IM情報管理IM5データベース問合わせ3
IM情報管理IM6関係データベース設計データ操作
IM情報管理IM7トランザクション処理
IM情報管理IM8分散データベース
IM情報管理IM9データベース物理設計
IM情報管理IM10データマイニング
IM情報管理IM11情報格納と情報検索
IM情報管理IM12ハイパーテキストハイパーメディア
IM情報管理IM13マルチメディアデータベース
SP社会的視点情報倫理SP1コンピ

2022-11-05

anond:20221105190939

ちゃごちゃ大仰に語るようなもんじゃねーから解説とか読む前にオブジェクト指向言語で色々プログラムを書け。そのうち雰囲気が分かってくる。解説読むのはそれからでいい(どうせ大げさに語った解説しかないので最初から読むのはむしろ悪影響がでかい)。

2021-12-15

デストラクタはどこに定義するか

オブジェクト指向言語ではクラスインスタンスが破棄される時にデストラクタが呼ばれる。

(呼ばれない言語もあるのだろうか?)

disposeだとか、deinitだとか、~○○○ (クラス名が入る) だとかいうあれ。

あれってどこに置くべきなんだろう。書くとき一瞬悩む。

2021-04-23

[]2021年4月22日木曜日増田

時間記事文字数文字数平均文字数中央値
008612968150.844
01548243152.648
02457210160.264
03395789148.470
041181035087.771
05224805218.442
0649409483.647
0766605091.753
08103767874.534
091201055187.941.5
101641086366.234
1115816271103.041.5
121801714695.346
131421235687.044.5
141401025373.236.5
151661523091.736
161601222176.446.5
171721553190.353
181781544786.849.5
1915518105116.855
2019220227105.349.5
2115517724114.340
221781434280.628.5
231731463984.629
1日301528809395.645

本日の急増単語 ()内の数字単語が含まれ記事

エアシャカール(5), お天気お姉さん(8), ループ物(8), お天気キャスター(4), アドブロ(3), チース(3), 実銃(3), ツマラン(3), オブジェクト指向言語(4), 二大政党(9), アイギス(3), キービジュアル(3), 罰しろ(3), バリアフリー(13), 革命(16), 褒める(12), 乗り換え(8), 末路(7), 研修(13), 兄さん(7), ウマ娘(22), 馬(19), 競馬(11), 車椅子(9), オリンピック(31), GW(8), 化粧(15), 会食(10), 開催(19), 下方婚(16), 練習(20), 弱者男性(37), 自民(14), 医師(18), スポーツ(19), 褒め(24), 障害者(20)

頻出トラックバック先 ()内の数字は被トラックバック件数

■お天気おねえさんという存在がすでにフェミ激怒すべきだろ /20210422080252(30), ■なあ、旅行いってもええか? /20210422160453(27), ■恋愛弱者になった同期をサークルの奴らが袋叩きにしていた /20210422085912(22), ■ウマで今更「スマホゲーなのにちゃんと遊べる!」と言われても…… /20210421211723(19), ■医者「時給15000如きで社会を救う気にはなれない」 /20210421190848(18), ■「女性を褒めるイケメンを見た弱者男性の心の中」を見た弱者男性の心の中 /20210421224412(17), ■ /20210419162524(17), ■逆にブスに褒められると男ってどう思うの? /20210421172825(17), ■オブジェクト指向がわからないあなたへ /20210421172633(13), ■マッチングアプリ結婚したオタク /20210422114538(12), ■サクラ革命は何故爆速サービス終了してしまったのか /20210422151829(12), ■あなたループ物はどこから? /20210422145054(12), ■ /20210422025204(11), ■顔色を伺いすぎて指示内容と逆の事する人 /20210422200316(10), ■自己嫌悪 /20210421191717(10), ■そんなに馬肉になる事が悪い事なの? /20210422181514(10), (タイトル不明) /20110422153045(9), ■たまに間違う人へ /20210422153819(8), ■鬱を治したいので助けてほしい /20210422085306(7), ■質問しても答えが返ってこない /20210422135048(7), ■ /20210422030431(7), ■仮面ライダーVBA /20210422020851(7), ■全力おばさん /20210421184606(7), ■本編は1ミリも観てないけど好きなアニソン /20210419190356(7), ■そもそもピッチャーが投球をしなければいいんじゃない? /20210422102707(7), ■ /20200831221700(7)

2020-11-26

多くの言語イテレータパターン,オブザーバパターンをforeachやイベントとしてステートメントに取り入れ、

いくつかのパターン代替えになりうる第一関数サポートし、

golangがあえてクラス-インスタンス-継承パラダイムを捨てたように、

C++を祖とするオブジェクト指向言語機能もっと制限されるべきだと思う。

残してもいいがそれは一般的言語機能でどうしても実現が難しいときに使わざるを得ない、

goto文のような「イケてない機能」として残すようにすべきだ。

2020-10-23

anond:20201023005525

オブジェクト指向の考え方は、対象物が1:1の関係じゃなくなったら基本的には必要だよ

オブジェクト指向言語でなくてもオブジェクト指向的な書き方をする。

例えばCのファイルIOの関数は、FILE *fpを使って操作するけど、あれだってオブジェクト指向だよ。

同時に2つのファイルを読み書きするなら区別のための識別子が必要で、それがfp

オブジェクト指向不要って言ってる人は、データが全部1:1の関係だけで十分なプログラムしか作ってないんじゃないのかな。

2020-10-22

anond:20201022005749

クラスオブジェクト指向言語機能は何でも出来すぎるという意味goto文に近いと思う。

goto機能的に制限された構造言語構文に進化したように、デザインパターンもっと整理してそのパターンに沿った文法以外では書けない新世オブジェクト指向言語が作られるべきだったと思う。

(実際、イテレータパターンはforeachの文法として言語機能に取り込まれたといって過言ではないだろう)

2020-05-22

anond:20200521225730

プログラミング言語を印象批評している記事に触発されて、自分も印象批評してみようと思う。

JavaScript以外にもブラウザ上でぐりぐりするのにはJava AppletとかFlashとかSilverlightかいろいろあったけれど、結局標準化を成し遂げたHTML5に淘汰されちゃった感じがする。LiveScriptからJavaScript改名されたり、規格を話すときECMA Scriptだったりといろんな別名を持つ。一応、プロトタイプベースオブジェクト指向言語なんだけれど、それを意識してコードを書く人がどれくらいいるかは謎。

Pythonは小さいコードを書くのには楽だけど、これで大きなコードを書くと思わぬ変更で思わぬことが起きるのでつらい。しばらく使うとPythonイヤイヤ病にり患し、goを使うようになるらしいとか、ならないとか。pythonで大規模なコードを万一書こうと思うなら、カバレッジが高いテストを書いてくれと思う。

Javaは初期のころオートボクシング / アンボクシングもなく、ストイックオブジェクト指向言語だった記憶がある。ただ、staticを多用してオブジェクト指向とは程遠いコード簡単に書けるので、Javaで書いているからと言ってオブジェクト指向だと思うのは禁物である

PHPWebネイティブ言語で、初期のころHTTP POST/GETなどで渡された変数がそのままプログラム中に出てくる機能初期化していない変数最初に使うと空文字列あるいは0で初期化するという機能があった。また、文字列数字臨機応変に切り替える機能もあり(今もそうかは知らん)、数字文字比較比較演算子(==)でシームレスにできる。パスワードチェックみたいなコードで===ではなく、==を使っているとPHPを知らないバカ扱いされる。

C#Hello Worldくらいしかいたことないから知らん。monoのような互換環境があるのは知っているけれど、わざわざPC Unix上でmonoを使う気分にはなれなかった。

C++黎明期に使った感じと、C++11以降に使った感じが驚くほど違う言語。今はかゆいところには大抵STLで手が届くし、autoを使えばイテレーション腱鞘炎になることもない。PC Unixにも最初から環境インストールされているか簡単インストールできるので毛嫌いせず使うとよいと思う。

Rubyはぎょっとする変更をよくやるというイメージ。これで書かれたプログラムを長年愛用してきたが、ぎょっとした変更を入れられて動かなくなったのでgoで書き直した。その点ではpythonも3でおいていかれたので嫌い。

CSS...はプログラミング言語なのか?そうか。

TypeScriptは書いたことないから知らない。JavaScriptだと大規模コードを書くとつらいのでTypeScriptを使おうという人がいるのは知っている。大規模なコードを書くとしたら、インタフェースに合った呼び出しかコンパイル時にチェックしてくれるような強く片付けされた言語のほうがよくなってくるというのはわかる。

Cは片付けし、構造化したプログラムを書きやすくしたアセンブラ...というイメージだったんだけど、C99くらいから便利機能がいろいろ入ってそうでもない感じになった印象。昔はCのコードを見たら最適化した後のx86アセンブリが見えていたんだけれど、最近は見えなくなってしまった。子供のころ、本屋で秘伝C言語問答 ポインタ編に出会ったのがこの業界に入るきっかけだったのかもしれない。ほかの言語でいろいろ楽に書けるからカーネルをいじるか、システムコールをたたくかするときくらいしか自分の中では出番がなくなってしまった。

これ以下のランキングのもその気になったら書こうかな。

2020-05-21

anond:20200521111256

たまに文法も変わるが、ドラスティックには変わらないのでそこまで問題にならない

しか10単位で言うと、わりとドラスティックに変わるんだよなあ。

goto制御するプログラミング

 ↓

構造プログラミング

 ↓

イベントリブプログラミング

(その実現手段としてオブジェクト指向言語が使われることが多い)

 ↓

リアクティブプログラミング

……という感じでパラダイムがどんどん変遷している。

2020-02-23

2020年プログラミング言語解説

Ruby

まつほろひとゆきが作った日本産コンピューター言語パールというコンピューター言語を元に作られていてWebサービスを作るためのフレームワークを搭載している。代表的WebフレームワークtDiary

C

デニス立地さんがNTTで開発した言語マルチクスというOS作成するために作られた。わざと複雑な言語仕様にすることで自分役職ポジションを守ろうとしていたが、思った以上に世の中の人間はこの言語を使いこなしてしまい、超有名な言語になってしまった。スーファミゲーム制作にさえ使えなほどの超高級言語

まじないと呼ばれるプリプロセッサでの書き換えが必要な謎の文字列を埋め込む必要があったり、言語仕様曖昧な部分も多く、同じソースなのに実行環境によって動きが異なる、欠陥言語である。(32bit向けプログラムが64bit環境動作しないなど)

C++

オブジェクト指向言語。すべてのオブジェクト指向言語はこいつから始まった。

主にWindows上で動作するゲームを作るための言語。今ではUnityとか色々なゲーム開発の環境とかあるが、結局はパフォーマンスとか考えたらC++使うことになる。

代表作はOpenGLDirectX、Window10、LibreOffice など

Java

JavaScriptから派生した言語。読み方は(ジャワジャワ島のジャワ。)。もともとはOracle創始者博士趣味作成して、現在Oracleデータベースの基礎となるテクノロジーアプレットという実行するための専用プログラムインストールしないと、Javaで作ったプログラム(.classファイル)は動作しない。マークコーヒーだと思われがちだが、紅茶(ジャワティー)である

アンドロイドOS作成するためにも使われており、アンドロイドOSカーネルJava制御されている。そのため定期的にGCが走るので、アンドロイド端末は定期的に動作を停止することがある(いわゆるプチフリーズ)。

対策するためにはGC戦略見直してヒープ領域サイズメモリに乗せるキャッシュサイズなどの調整が必要であるが、げんざいのGoogleにはこれらを調整する人員はすでにいない。

このように業務データベースから携帯電話まで幅広く使われているので、Java技術があっても市場価値殆どないと言われている。(みんな使えて当たり前)

PHP

晩年政界への進出を目論んでいた松下幸之助が、未来社会を見据えて開発した言語。主にWebアプリケーション作成するために使われている。PはパナソニックのP。を略してPHP

かんたんにシェルコマンドを実行できたり、クエリストリングに代入した値を直接グローバル評価できたりするなど、洗練されていてとても便利な言語である

HTMLメール本文の中にもPHPの処理を書き込むことができる。

この世のすべてのサーバーに実行環境存在するので、PHPコードさえあれば、コンパイル不要でどのような環境でも動作する。

C言語の100倍生産性が高く、WikipediaFacebookSlackなどの超一流のサイトサービスで大量のアクセスを捌いている。

WardPressと呼ばれるフレームワーク(全世界Webサイト3分の1以上はWardPressで作成されている)を作成している言語であり、この言語なくして今のWeb存在していない。

データベースとも親和性がある、などと言われることもあるが特に根拠はない。

Go

韓国人棋士を倒したAIに特化したプログラム言語Googleが開発しており、もともとはDartという名前だったが、汚いという理由でなまえがGoに変わった。そのため現在Dartという言語存在していない。

AIに特化しているというだけあり、低レイヤむけの実行ファイル作成する必要があるため、コンパイル必要ではあるが、だいたいどの環境向けのバイナリも生成することができる。

デフォルトディープラーニングを使うための機能を持っていたり、プログラムを並列実行するための機能が備わっているので、コア数の多い環境で高速に動くプログラムを作りやすい。

JavaScript

Javaの元になったプロトタイプベースオブジェクト指向言語。読み方はジャワエスクリプト。W3Mというブラウザの上でインタラクティブWebサイトを動かすために作成された言語。もともとブラウザの上で動くための言語だったが、後にSafariブラウザに搭載されていたV6エンジンというJavaScript言語の実行エンジンを分離してNPMというJavaScriptを直接実行できる環境となった。

それ以降JavaScriptはブラウザ以外にVRゴーグルの中などで動くようになった。

並列プログラミング不可能な作りのため、コールバックを多用して、スパゲッティコードを量産することができる。

NPMを使う奴らは、JSブラウザ環境で使われる言語であることを全然考えてないため、WebpackとかBabelといった謎の開発環境をシコシコ積み上げている。いつかその塔は爆発し崩れ去ることになるであろう。

jQuery

Javaと同じくJavaScriptから派生した言語Javaとは互換性は無いが、JavaScriptの上位互換があるため、JavaScriptのコードをそのまま実行することができる。

$マークから始まる命令のみで構成されているとても縁起のいいプログラミング言語。おもにパララックスなどを実現するために利用されていて、WardPressなどのドライバとしても使われている。

JavaScriptの改良版であり、現在JavaScriptと言われているプログラム言語の99%はjQueryのことである。そのため現在慣習的にJavaScriptと呼ばれているもののほぼ全てはjQueryである

jQueryを覚えればJavaScriptは覚えなくても良い。などと言われるが、正確にはjQueryを覚えた頃にはJavaScriptも覚えている。というのが正確である

TypeScript

JavajQueryなどと同じくJavaScriptから派生した言語Microsoftが開発した関数型言語。開発時はF#(エフシャープ)というコードネームだった。

型に特化した言語であり、Microsoft製のVSCodeというIDE環境しか開発、実行が出来ない。(ただしMacLinux上でも動作可能)

TypeScriptを動かすにはサーバーVSCodeインストールする必要があり、言語IDEバージョンアップも多いため、メンテナスンスが困難である

Swift

iOSを作るために開発された言語関数型言語

前進となるObjectiv-Cという言語が、気持ち悪い構文であったため開発者が不足しており、このままではOSメンテナンスもままならない、という理由最初バージョンわずか14日間で作られた言語

Apple製品の上でしか動作しない。ビルドが非常に遅く一日に60回が限度である

LISP

((最強の言語。全ては関数であり、値であり、式である。)

(制御構文も、(一種の式であり、値である。)))

2019-12-14

anond:20191107180657

ブラウザ上で動くことだけがメリットスクリプトが持ち上げられすぎよね

Excel上で動くことだけがメリットVBScriptみたいなもんじゃ

そんなもんでサーバー側も書ける!万能言語!なんてゾッとするわ

逆だ逆、オブジェクト指向言語から継続発展してマルチパラダイム言語となってるサーバー側の言語ブラウザ上で動かすのが正解なんだよ

2019-10-05

anond:20191003131545

初めてのJavaとのエンカウント

を思い出した。

当時、Javaというすごい言語があるらしいと聞いて、Windows95環境を整えてみた。

付属していたデモ用のアプリケーションを動かしたら、豆が躍るだけのアプリケーションで、正直くだらないと感じてしまい、セットアップした開発環境はそのままお蔵入りした。

あとで、その時に見たデモJavaアプレットと呼ばれるもので、Java先進性はそれよりもむしろピュアオブジェクト指向言語を作ったことにあったと知ったけれど、あのデモからは全くそれが伝わってこなかったな。

2019-04-04

こうすればプログラミング覚えられるよ【随時追記

プログラマじゃないけどプログラミング完全に理解した()おばさんが理解してる基礎知識書くよ。

追記 この文章プログラミング勉強をしたいけどその周辺にある基礎知識になかなか触れる機会がない人向けに書きました。これらの基礎知識があると、困ったときに調べ方すら分からないという状況は回避やすくなるはず)

まずLinuxUnix系OSの使い方。

ターミナル、いわゆる黒い窓からCUIコマンドユーザーインターフェース)でコンピュータを使う方法を覚えよう。これは大学コンピュータリテラシーで習った。MacOSXで復習すると捗った。(追記 すごく間が抜けてたけどMacOSXUnix系OSです)

まずはファイル操作Macターミナルを使って、cd Desktopって打ってからecho ohayou > aisatsu.txtって打ってみて、cat aisatsu.txtってやる。そうすると何が表示されるのか?とりあえずやってみよう。ここで>は増田の都合上大文字全角にしてるけど、ちゃんと半角にしてね。なんで増田の都合上半角がダメなのか、そのうち想像できるようになろう。(追記 ブコメ指摘感謝

そして、実際にデスクトップを見に行ってみると、aisatsu.txtってファイルがあるはずなんで、開いてみよう。これで何が起こったのか7割くらいはわかるはず。

こういうファイル操作の基本をまず覚えよう。これこそ空気みたいなものから

追記 ここも間が抜けてたけど確かにhogeって何かわからいね。直しました)

次に文字コードバックスラッシュの話。

最近は何も考えなければ文字コードはとりあえずUTF-8でなんとでもなるようになってるけど、バックスラッシュとかは環境設定で出てくるように設定しないと出てこないし、その意味合い、つまりエスケープとしての使い方を頭に入れておくと後々困らないと思う。あとEOF(エンドオブファイル)とか改行コードとかもそういうものがあるよ程度には覚えておこう。これ頭の片隅にはいってないと分からん殺し的な罠にはまることがある。

次にプログラミング環境の構築の仕方。

これは使いたいプログラミング言語公式サイトに行くと大抵書いてある。

でもMacだとだいぶ楽。とりあえずターミナルからgccって打ってみるとなんかCUIツールとか書いてあるものインストールしろって言われるのでインストールする。これだけでCとかC++とかRubyとかPythonとか一通り使えるようになる。もしかしたら最近はこのインストールすらいらないかもしれないけど。

あと、シェルコマンドとかプログラミング言語を実際に使うときはいろんなライブラリインストールする必要があるけど、そのライブラリ管理がすごく面倒なので管理をまとめてくれるコマンドがあったりする。aptとかhomebrewとかがそういうのだから、そんなものの使い方も覚えておこう。

追記 言語文法を追うだけなら環境構築なんてしなくてCloud9とか使ってもいいかもだけど、プロダクトを作ろうとした時にはまだまだ手元で環境作って必要ライブラリを入れてとやった方が後々応用がきくと思うのですよ。それにそうしていくとDockerの有り難みなんかも理解できるようになっていくのではと思います

最初勉強するプログラミング言語は、Javaだけはやめておけ。

なんでかっていうと、Javaオブジェクト指向言語ってやつなんだけどオブジェクト指向的にしか書けないから。古い人間だと言われそうだけど、最初手続き型言語から始めるべきだと思ってる。少なくとも、手続き型的に書ける言語から始めるべき。

なぜそう思うのかも含めて、とりあえずおばさんが理解しているプログラミング言語の発展の経緯を軽く解説する。

最初の頃のプログラミング言語は、手続き型と呼ばれるものが多かった。

この〇〇型ってのはプログラミングをするときの考え方によって名前がついているんだけど、手続き型はまず0を作って、0に1を100回足して、最後にその結果を表示してください、みたいな、上から書いた順番通りに動くのが基本のルールである考え方。プログラムは基本的にはこうやってデータアルゴリズムを使って変化させていって望む結果を得ている。でもこのやり方は問題も多かった。プログラム全体がひとかたまりになってしまっているので、数千行とかになるともう普通の人では手がつけられないし、人間ミスデータを間違って扱ってしまうことがバグの温床になった。

なので、この手続き型の考えに構造化という考えが加わって、関数というものが生まれた。関数っていうのは料理レシピに例えるとわかりやすいかも。

関数が無い状態だと、

1:玉ねぎをくし状に切ります

2:キャベツをざく切りにします。

3:豚こまに塩胡椒で味付けをします。

4:フライパンを火にかけ、油を入れて熱します。

5:豚こまを入れて色が変わるまで炒めます

6:玉ねぎを入れます

7:キャベツを入れます

8:野菜がしんなりするまで炒めます

9:火を消して8をお皿に盛り、野菜炒めの出来上がりです。

と書いていたものが、関数がある状態だと、

A:野菜を切ります

Aのやり方1:玉ねぎをくし状に切ります

Aのやり方2:キャベツをざく切りにします。

B:肉に味付けをします。

Bのやり方1:豚こまに塩胡椒を振ります

1:フライパンを火にかけ、油を入れて熱します。

2:Bを入れて色が変わるまで炒めます

3:Aを入れてしんなりするまで炒めます

4:火を消して3をお皿に盛り、野菜炒めの出来上がりです。

って書ける。ここではAとBが関数

この程度だとあまり意味を感じないかもしれないけど、これがもっと複雑なもの想像してみると、なんとなくありがたみが分かって来ないだろうか?こうすると、多人数でプログラミングをするときに、Aを書く人、Bを書く人、1〜4にまとめる人って感じで作業分担ができる。それに、バグが起きた時もAの領域バグったのか、Bの領域バグったのかとか、全体にまとめると上手くいかないのかとか、原因の切り分けがやすい。

でも、プログラムがとっても複雑化すると、これでも手に負えなくなる。料理の例えを拡大すると、料理店を運営することを考えるといいかも。

料理店でたくさんの料理をさばくときに、レシピを完全に1から作ることってないと思う。Aさんが野菜の仕込み担当、Bさんがスープの仕込み担当、というように各人に仕事が割り振られているはず。AさんもBさんもそれぞれの仕込みのレシピを持っていて、最終的に出てくる仕込みがちゃんとしてればAさんBさんの仕事の詳細までいちいちシェフが細かくチェックしない体制になっていると思う。大雑把にいうとそういう考え方をプログラムで再現したのがオブジェクト指向言語

なので、本気で料理初心者がいきなり厨房の仕切りを任されて上手くいくのは難しいように、構造プログラミングのありがたみすらわからない段階でオブジェクト指向プログラミングに手をつけても意味わからんだろうと思うのがおばさんの立場です。

追記 おばさんはRubyを勧めておきますオブジェクト指向言語ですが、手続き型的に書き下すことも出来るからです。一つの言語手続き構造オブジェクト指向、全部勉強できますメソッドも便利なのが一通りあるし、日本語を扱うのにも問題が少ないです)

次に問題を分解できるようになろう。

例えば、クイズゲームを作りたいと考えたときクイズゲームを作りたいです、って問題は大きすぎる。

クイズゲーム必要な要素は、問題文を表示する、回答を入力してもらう、正誤判定をする、正誤判定の結果を表示する、ということだなぐらいにまず分解する。

これを実際にプログラミングしようとすると、もっと分解できてさら問題が見えてくると思う。

コンピュータってのは創造的なことはできない代わりに、とても簡単なことをとても階層的に重ね合わせて大きな問題を解けるように作られてる。それを心するといいと思う。

からないことは調べられるようになろう。最後はこれ。

これ超大事プログラミングって本当に自分で1からものを考えなきゃいけないことってあまりない。大きな問題あなただけの問題かもしれないけれど、それを構成する小さな問題は大抵他の誰かが解いている問題なので、調べてみれば答えが見つかると思う。

エラーメッセージが出てきたらまずググってみる。翻訳しても初心者には意味がわからないし、ググったら誰かが解説付きで紹介してくれているのでその解説を読んだりしながらエラーメッセージとの付き合い方を覚えていけばいい。

メソッドの使い方がわからなかったら言語公式サイトに行ってみる。メソッドの使い方で大事なのは呼び出し方、返ってくる値の型とかそういうのだから、こういうところはググるよりも公式サイトに書いてあることをしっかり読んで理解する。

あと、アルゴリズム勉強もしてみるといいと思う。アルゴリズムデータ構造計算量の勉強大学学部レベル教科書ちゃんと読んでみると、例えばデータベースを操作するSQLというものを書くことになった時とかに効いてくる。あとは作ったプログラムが遅すぎてどうしようとかいうのを解決する時とか。

なんか深夜までいろいろ書いてしまったけど、あくまでもプログラマじゃないおばさんが書いたものなので、みんなでツッコミとか入れてくれると大変助かります

増田怖いよツッコミ怖いよ、もちろんおまんじゅうも怖い。

2019-02-23

anond:20190223045232

perlでは連想配列

しかし、この話を読んでJavaだけ違うよなって思ってしまった。他のはみんな実装言語処理系にお任せだけれど、JavaだけはMapは単なるインタフェースで、どの実装にするかはお前が選べってところがねぇ。こいつだけはGenericsを使って、keyvalueの型を指定するのも違う。

Javascriptはプロトタイプベースオブジェクト指向言語から、こいつもこいつで思想が他のと違うんじゃないかとも思えてきた。

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