タグ

きしだとプログラミングに関するmohnoのブックマーク (9)

  • オブジェクト指向のサンプルプログラムがだいたいヒドい理由 - きしだのHatena

    いまだにオブジェクト指向とか言ってるのか、という話ですが、いまだに「プログラミングの勉強はじめました。オブジェクト指向が目標です!」みたいなのがThreadsに流れてきたりして、いつまでも無くならんなぁと思うわけですよ。 で、まあオブジェクト指向を勉強してしまいたくなるのは仕方がないとして、オブジェクト指向推しでのサンプルがだいたいヒドいのが問題だなと思ったわけです。 アプリケーションを見据えていない オブジェクト指向の例として、自転車クラスだとか勇者クラスだとか定義するサンプルをみかけます。 自転車クラスを作る例の場合、車輪クラスがありサドルクラスがありペダルクラスがあり、ブレーキクラスはブレーキシュークラスやブレーキキャリパークラスを内包するな、みたいなことをやりますね。JSONでやれ。 という感じで、単にJSONなど構造データのマッピングになりさがってたりします。 あと、現実の写

    オブジェクト指向のサンプルプログラムがだいたいヒドい理由 - きしだのHatena
    mohno
    mohno 2025/07/13
    「実際のアプリケーションを見据えるとオブジェクト指向機能の使いどころがない」←?「大規模になったら便利なんです!小さいサンプルじゃわからないんです!」←これはそうでしょ。苦労はクラスを作る側が背負う。
  • AIでプログラマ不要になるというのは、プログラミング言語構文わかればプログラム組めるという誤解に基づくのでは - きしだのHatena

    AIで日語で指示をあたえればプログラムを作ってくれるようになって、プログラミング知識がなくても誰でもプログラムが組めるとか、プログラマが不要になるとかいう話が盛り上がってますね。 けど、実際にプログラマをやって、AIコーディングエージェントを使っていれば、プログラミング知識がなくても可能な領域というのはそんなに広くないことを感じていると思います。 たとえば、ほぼプロンプト一発で作ってもらった刺身タンポポゲームがあります。 このプロンプトはこんな感じです。 刺身にタンポポを乗せるゲームJavaのSwingで作って。 刺身かネコが0.75秒ごとに表示されます。 刺身は、白い皿に、赤い板状の切り身が3枚のっています。 ネコは顔だけ表示されます。かわいくおねがいします。 表示のシーケンスは次のようになります。 共通の影が右から中央に0.1秒で移動します。 刺身かネコが0.5秒表示されて、0.1

    AIでプログラマ不要になるというのは、プログラミング言語構文わかればプログラム組めるという誤解に基づくのでは - きしだのHatena
    mohno
    mohno 2025/06/23
    プログラマというかエンジニアがいなくて顧客自身が要件定義ができるんなら、今でも苦労なんかしないわけで。/生成AIの出力を検証しないで利用できるほど信用する気にはならないんだがな。
  • 時代がstaticおじさんに追いついてきた(追記あり) - きしだのHatena

    この文章みてください。 オレはもう20年以上システム業界にいるけどな、その長い経験から言うと、オブジェクト指向なんてものは、理論としては面白いけど、およそ実用的とは言い難いものだな。まぁ、例えばGUIのコンポーネントとかはオブジェクト指向に基づいて作られているようだから、そういうツールとかを作る人には必要なものなのかもしれない。しかし君たちがいずれ作ることになる業務アルゴリズムにはまったく無縁のものだと思ってもらって間違いない。どうもこの業界、オブジェクト指向でなければダメ、というような風潮がまかりとおっているけどな、オブジェクト指向なんか当に使っている人はほとんどいないよ。オレも少し勉強してみたけど、カプセル化とかポリ何とかとか、どうにも利点が理解できなかったね。実際、実業務で使ったことなどないしな…… 「またお前、オブジェクト指向の話をしてるのか」と思ったかもしれませんが、2010年

    時代がstaticおじさんに追いついてきた(追記あり) - きしだのHatena
    mohno
    mohno 2024/02/08
    「オブジェクト指向」←なんつーか、フィボナッチ数列には要らんだろうけど(むしろ再帰すら使わん)、業務アプリの開発には必要というか、普通にフレームワーク使うよね。
  • 「メソッドのシグネチャ」はJava言語とJava仮想マシンで違う - きしだのHatena

    「プロになるJava」でシグネチャのことを次のように説明しています。 メソッドの名前と受け取る引数、戻り値の種類をあわせたものを シグネチャ といいます。 戻り値は含まないのでは?という話になり、結論から言えばJava言語では名前と引数でメソッドを区別、Java仮想マシンでは名前と引数、戻り値まで含めてメソッドを区別しているけど、ここではJava言語の話をしているので含まないほうが正しい、です。 シグネチャの定義 Java言語仕様では、「シグネチャとは」という定義はありませんが、「シグネチャが同じとは」という説明があります。ジェネリクスの型パラメータまで考慮はするけど、名前と引数が同じとみなせれば同じシグネチャだよという感じですね。 Two methods or constructors, M and N, have the same signature if they have the

    「メソッドのシグネチャ」はJava言語とJava仮想マシンで違う - きしだのHatena
    mohno
    mohno 2024/02/07
    「Java言語では名前と引数でメソッドを区別、Java仮想マシンでは名前と引数、戻り値まで含めてメソッドを区別」/C++は区別しないがVisual C++の外部シンボルには戻り値の型が含まれていた記憶(Borland C++では含まれていない)
  • Javaを中心に偏見ベースでプログラミング言語の関係をまとめた - きしだのHatena

    オブジェクト指向言語の話をするときに便利なように、Javaを中心にプログラミング言語をまとめてみました。 Javaに影響与えるか、Javaから影響を受けるか、という感じですね。 Simula オブジェクト指向はここから始まったと言われています。 クラス、オブジェクト、継承、仮想関数(多態)といった、オブジェクト指向の基要素が備わっていました。 ただし、「オブジェクト指向」という言葉は生まれていません。 Smalltalk Simulaから発想を得て「オブジェクト指向」という言葉を生んだのはアラン・ケイでした。 しかし、モデルとしてはSimulaとは異なりメッセージングを主体としたものでした。また、アラン・ケイの「オブジェクト指向」はプログラミングのパラダイムだけではなく、人がコンピュータをどのように扱うかというメタファであり、ダイナブックというハードウェアやそのユーザーインタフェースを含

    Javaを中心に偏見ベースでプログラミング言語の関係をまとめた - きしだのHatena
    mohno
    mohno 2023/11/25
    んー、J++は別にC++Builderを経由したわけじゃなく、Delphi(Object Pascal)から直接J++を作ったんだと思います。あと、「Anders Hejlsbergが会社を追い出されていた」←引き抜かれた、ですね。Bill Gatesから熱烈に誘われたそうで。
  • きれいなコードは互いに似通っているが、クソコードはどこもその趣が異なっている - きしだのHatena

    先日のJJUG CCC 2023 Fallの懇親会でクソコードを研究しているという学生がいたのだけど、クソコードの研究は難しいという話をした。 人工的にクソコードを再現しても、あの野生のクソコードのクソさには全く足りないわけで。 トルストイが言うように「すべてきれいなコードは互いに似通っているが、クソコードはそれぞれにクソの趣を異にしているものである」なので、なかなか「これがクソコード」のように類型化するのも難しい。 典型的なクソコードを書いてみても、なんだかきれいなクソコードができてしまう。 クソコードはネットに出回らないので、資料の収集もまた難しい。ネットにないということは、ネットの情報に基づいている「AI」もホンモノのクソコードには触れていないことになる。 クソコード収集サイトをつくっても、実際のクソコードは業務固有処理も含まれるので、掲載できる形に整理していくと来のクソさが薄れて

    きれいなコードは互いに似通っているが、クソコードはどこもその趣が異なっている - きしだのHatena
    mohno
    mohno 2023/11/17
    「なぜそれが書けてqsortが呼び出せないんだ!」←覚えはいくらでもあるな、そういうこと。今なら「この手の処理は絶対誰かが書いてるだろ」と思って参考情報を検索するけど、昔はそういう手段もなかったし。
  • Java 20, 21, オブジェクト指向からデータ指向へ / Java20, 21, Object Oriented to Data Oriented

    2023/5/10(水)に開催されたTechFeed Experts Night#18での登壇資料です。 https://techfeed.io/events/techfeed-experts-night-18

    Java 20, 21, オブジェクト指向からデータ指向へ / Java20, 21, Object Oriented to Data Oriented
    mohno
    mohno 2023/05/12
    “オブジェクト指向からデータ指向”←意味が分からなかったが "Java 20" の話らしく、Oracle がそういう表現をしているのかな。/なんか C# で見たような拡張が。/ってか、Javaも積極的に拡張するようになったんだなあ。
  • オブジェクト指向はコードを複雑に読みにくくする - きしだのHatena

    「オブジェクト指向するとプログラムが読めなくなるから禁止」のような話は昔からあって、新しい技術についてこれない人を揶揄するようなニュアンスで使われていましたが、実際にはこれはオブジェクト指向迷路にうんざりした現場での率直な意見だと思います。 オブジェクト指向は、まじめにやるほどプログラムを読みにくくするという性質をもっています。 ※ 使い方次第というコメントついてますが、だからこそちゃんと性質をしっておく必要があると思います。 オブジェクト指向の代表的な指針を3つあげると次のようなものがあります。 オブジェクト同士の連携としてプログラムを組む 単一責務の原則 インタフェースと実装の分離 まず、オブジェクト同士の連携でプログラムを組むと、コードが飛びまくって追いにくくなります。そして単一責務の原則により、小さいクラスが大量に生成されて、追いにくさがさらにあがっていきます。 ダイクストラ先生が

    オブジェクト指向はコードを複雑に読みにくくする - きしだのHatena
    mohno
    mohno 2023/02/25
    “オブジェクト指向を禁止”っていう人、それでどうしろっていうの? 関数ライブラリにしろと言ってるの?/技量もないくせにクラスライブラリを書くな、という話なら分からんでもないが。
  • プログラミング言語へのMicrosoftの影響力がヤバい - きしだのHatena

    Tiobe indexを眺めながら、C#とVBが入っていてMicrosoftは強いなーと思ったのだけど、よくみると他の言語もMicrosoftの影響力すごいのではとなったので調べてみた。 https://www.tiobe.com/tiobe-index/ Python 例えば1位のPythonMicrosoftはかなり力をいれている。象徴的なのが、Pythonのオリジナル開発者の入社 C/C++ Windows上でのC/C++コンパイラではMS C/C++が圧倒的シェアであるし、C++の標準化団体にMicrosoftGold Memberとして参加している。 https://isocpp.org/about Java 4位のJavaに関してもかなりリソースは割いているわけですが、全体の影響度としてそこまで大きくはないですね。 昨日のブログにも書いたようにOpenJDKビルドを出してい

    プログラミング言語へのMicrosoftの影響力がヤバい - きしだのHatena
    mohno
    mohno 2023/02/13
    (定期)5位C#/14位Delphi/43位TypeScriptを開発したAnders Hejlsbergすごいよね。ホットなのはTypeScriptだろうし。/アセンブリへの影響は小さいだろうけど、x64はIntelじゃなくAMDなのが。/SQL Serverといえばジム・グレイ……
  • 1