探検
ねねっちと一緒にプログラムを勉強するスレ第2話 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2017/03/18(土) 13:03:05.05ID:KGlkA67c ぬるぽって何?
2017/03/18(土) 23:36:20.62ID:Z1poHEqC
今日も一日ガッんばるぞい
2017/03/19(日) 00:18:40.43ID:cSt3/uVu
>>1
れーがい。
れーがい。
4デフォルトの名無しさん
2017/03/19(日) 00:29:34.64ID:dpFhURxm 2ch誕生時ぬるぽ誕生時はねねっちの誕生前史…でも無いか…?
5片山博文MZ ◆T6xkBnTXz7B0
2017/03/19(日) 07:19:32.95ID:lvnI99G62017/03/19(日) 13:14:33.69ID:3j9rxESx
馬鹿が馬鹿に向けてコーチしてるから、いつまでたっても終わらんな
馬鹿は馬鹿の気持ちがわかるから教師に向いてるとかいうけど
まともな言語使役能力がない馬鹿に教師が務まるわけねえだろバーカ
自分の馬鹿さ加減を正当化する以前に相手の立場、聞き手の立場になってライティングする技術を学べよバーカ
馬鹿は馬鹿の気持ちがわかるから教師に向いてるとかいうけど
まともな言語使役能力がない馬鹿に教師が務まるわけねえだろバーカ
自分の馬鹿さ加減を正当化する以前に相手の立場、聞き手の立場になってライティングする技術を学べよバーカ
2017/03/19(日) 13:28:09.26ID:GVCm3UtV
馬鹿が大好きな馬鹿
2017/03/19(日) 13:35:24.13ID:MQWsDRoG
>>6
コーチ任せた
コーチ任せた
2017/03/19(日) 15:26:53.79ID:DJjYEA61
>>6
分からないことがあるから聞いてもいいかな?
分からないことがあるから聞いてもいいかな?
2017/03/19(日) 16:55:32.81ID:MC3Ph5Rd
とりあえずどんなに小規模でもいいからアプリケーション一つ作ってみれば何かしら見えるようになる気はするけど
結局プログラミングって技術だから必要になってから学ぶ事柄の方が身につくし
どんなに小規模でもソフトウェア一本作るなら要求されることは多い
結局プログラミングって技術だから必要になってから学ぶ事柄の方が身につくし
どんなに小規模でもソフトウェア一本作るなら要求されることは多い
ポインタ、クラスという2つの大きなカベをぬーぶくんは乗り越えることが出来るかな?
特にポインタはかなり難しい。
特にポインタはかなり難しい。
2017/03/19(日) 19:42:24.52ID:w6cUNJco
言語1つ習得するのにいつまで掛かっとんじゃい!
2017/03/19(日) 20:15:51.06ID:sUTtusgG
逆に言語を完璧にマスターしようとしたら相当の時間は必要だと思うけど
例えばJavaに限ってもEffecive Javaの内容を実践できるようになるレベルまでたどり着くだけでも相当な時間がいると思う
例えばJavaに限ってもEffecive Javaの内容を実践できるようになるレベルまでたどり着くだけでも相当な時間がいると思う
2017/03/19(日) 21:07:09.25ID:3j9rxESx
まずは五目並べとかを目標にするべきだとおもうの
五目ならべとかくそつまんねえけど、最低限のゲームループははいってるわけでね
おれも大学時代Cでかかされたけど、あれはマジ難しい
インターフェース作るので精一杯で、CPUのAIはランダムに石をおくぐらいしかできんかったわ
五目ならべとかくそつまんねえけど、最低限のゲームループははいってるわけでね
おれも大学時代Cでかかされたけど、あれはマジ難しい
インターフェース作るので精一杯で、CPUのAIはランダムに石をおくぐらいしかできんかったわ
2017/03/19(日) 23:12:11.49ID:9swj1Ik4
>>15
スッキリわかるJavaの入門編が終わったので、実践編に入ったのですが、難しくてつっかえつっかえです。
例えばオブジェクトクラスに備わっているメソッドのオーバーライドとかで苦戦してます。
あれ必ずやるんですか?しんどいです…。
スッキリわかるJavaの入門編が終わったので、実践編に入ったのですが、難しくてつっかえつっかえです。
例えばオブジェクトクラスに備わっているメソッドのオーバーライドとかで苦戦してます。
あれ必ずやるんですか?しんどいです…。
2017/03/20(月) 01:31:41.05ID:GbEM94zj
まずjavaは難しいからね
継承を中心としたライブラリがあるかと思えば、インターフェースを中心としたライブラリもある
継承を選択すると、データ型に階層構造ができるが、たいてい継承というのは、ある特定の見方で行う分類学みたいなもんだから、この分類に失敗した時点で設計が汚くなる
例えば鳥はflyメソッドを実装すべきだが、飛べない鳥はどうする、swimメソッドを持つ鳥持たない鳥があると思えば哺乳類でも歩けないクジラみたいなのもいる
クラスを動物で例えるのはよくないがイレギュラーを綺麗に処理できるような美しい分類などほぼほぼ存在しない
君はおそらく継承を使った設計などしないし、基本的にすべきじゃない、でも継承を使わないといけないライブラリもあるからね、そういうときはどうするんだろ、
真面目に一つずつオーバーライド実装するかproxyパターンとか使うのかね
結局動的言語のほうが楽なんだよそういうのはJavaだけ勉強してもわからないことだ、もしJavaだけで例えばリフレクションの概念を正確に理解できたとしたらたいしたもんだ、λ式も同じくね
継承を中心としたライブラリがあるかと思えば、インターフェースを中心としたライブラリもある
継承を選択すると、データ型に階層構造ができるが、たいてい継承というのは、ある特定の見方で行う分類学みたいなもんだから、この分類に失敗した時点で設計が汚くなる
例えば鳥はflyメソッドを実装すべきだが、飛べない鳥はどうする、swimメソッドを持つ鳥持たない鳥があると思えば哺乳類でも歩けないクジラみたいなのもいる
クラスを動物で例えるのはよくないがイレギュラーを綺麗に処理できるような美しい分類などほぼほぼ存在しない
君はおそらく継承を使った設計などしないし、基本的にすべきじゃない、でも継承を使わないといけないライブラリもあるからね、そういうときはどうするんだろ、
真面目に一つずつオーバーライド実装するかproxyパターンとか使うのかね
結局動的言語のほうが楽なんだよそういうのはJavaだけ勉強してもわからないことだ、もしJavaだけで例えばリフレクションの概念を正確に理解できたとしたらたいしたもんだ、λ式も同じくね
2017/03/20(月) 08:01:55.59ID:8oBPBpt5
2017/03/20(月) 16:56:55.64ID:GbEM94zj
静的でもっさいオブジェクト指向言語ってのはそうやって、やれインターフェースがどうだの、やれ継承がどうだのどうでもいいことにいちいち頭を悩ます必要があるからな
正直オブジェクト指向の基本理念は大方失敗してるからそこらへんの技術や思想は無視した方がいい
あれがめんどいと思うなら、動的言語をおすすめする、正直個人でのプログラムにおいてオブジェクト指向はそんなに役に立たない
カプセル化がどうだのいう輩は、ほとんどの言語のライブラリが、オブジェクト指向ライブラリよりもはるかに高いレベルでカプセル化を実現していることに気付かないんだよ
正直オブジェクト指向の基本理念は大方失敗してるからそこらへんの技術や思想は無視した方がいい
あれがめんどいと思うなら、動的言語をおすすめする、正直個人でのプログラムにおいてオブジェクト指向はそんなに役に立たない
カプセル化がどうだのいう輩は、ほとんどの言語のライブラリが、オブジェクト指向ライブラリよりもはるかに高いレベルでカプセル化を実現していることに気付かないんだよ
20ぬーぶ ◆upkqfrxkrw
2017/03/20(月) 20:07:41.05ID:ivsP1GF2 言語ひとつ覚えるのにいつまでかかっとんじゃい…うん(´・ω・`)
何かひとつアプリケーションを作れとのことなんで
五目並べはちょっとハードル高いけど
簡単なインベーダーを作ってみようと思う
でも画像をどうやって作ろうか悩む
何かひとつアプリケーションを作れとのことなんで
五目並べはちょっとハードル高いけど
簡単なインベーダーを作ってみようと思う
でも画像をどうやって作ろうか悩む
2017/03/21(火) 00:09:43.10ID:LsnLNCD2
>>17
横だけど、それHead First のデザインパターンの序章である奴だよね。
飛べない鳥とか振る舞いのインターフェースと実装をすれば対応出来る奴じゃん。
オブジェクト指向の基本理念は失敗とかディスってる様だけど、オブジェクト指向を理解出来てない馬鹿がオブジェクト指向を語るなよ。
横だけど、それHead First のデザインパターンの序章である奴だよね。
飛べない鳥とか振る舞いのインターフェースと実装をすれば対応出来る奴じゃん。
オブジェクト指向の基本理念は失敗とかディスってる様だけど、オブジェクト指向を理解出来てない馬鹿がオブジェクト指向を語るなよ。
2017/03/21(火) 00:18:59.12ID:RJ2XVIqX
じゃあその通りに実装すればいいと思うよ
実際飛べない鳥のサンプルコード書いてみ
それがオブジェクト指向のメリットなんだから、喜んで書けるよな
実際飛べない鳥のサンプルコード書いてみ
それがオブジェクト指向のメリットなんだから、喜んで書けるよな
2017/03/21(火) 07:15:17.71ID:LsnLNCD2
>>22
以下になるけど、Strategyで実装すれば書けるだろ。
package test;
class MiniDuckSimulator {
public static void main(String[] args) {
Duck model = new ModelDuck();
model.performFly();
}
}
class ModelDuck extends Duck {
public ModelDuck() {
flyBehavior = new FlyNoWay();
}
}
abstract class Duck {
FlyBehavior flyBehavior;
public Duck() {
}
public void performFly() {
flyBehavior.fly();
}
}
以下になるけど、Strategyで実装すれば書けるだろ。
package test;
class MiniDuckSimulator {
public static void main(String[] args) {
Duck model = new ModelDuck();
model.performFly();
}
}
class ModelDuck extends Duck {
public ModelDuck() {
flyBehavior = new FlyNoWay();
}
}
abstract class Duck {
FlyBehavior flyBehavior;
public Duck() {
}
public void performFly() {
flyBehavior.fly();
}
}
24デフォルトの名無しさん
2017/03/21(火) 07:16:06.90ID:LsnLNCD2 書き込み制限が出た為、分割。
interface FlyBehavior {
public void fly();
}
class FlyNoWay implements FlyBehavior {
public void fly() {
System.out.println("I can't fly");
}
}
class FlyWithWings implements FlyBehavior {
public void fly() {
System.out.println("I'm flying!!");
}
}
interface FlyBehavior {
public void fly();
}
class FlyNoWay implements FlyBehavior {
public void fly() {
System.out.println("I can't fly");
}
}
class FlyWithWings implements FlyBehavior {
public void fly() {
System.out.println("I'm flying!!");
}
}
2017/03/21(火) 23:08:09.09ID:RJ2XVIqX
え?このプログラムがオブジェクト指向なの?
俺にはこの設計が理解できないなあ
例えば飛べない鳥duckはflyメソッドを持ってはいけないという前提でどうクラス構成するかって話なんだけど、
飛べない鳥duckがそもそもflyを持っていいという設計思想を踏襲するなら、素直にflyメソッドをもつabstract birdクラスまたはflyableインタフェースをDuckは継承または実装し、flyをoverrideあるいはimplementにすればいいと思うんだけど
ストラテジーパターンと言い張ってるけどストラテジーパターンではないよね、それはブリッジパターンだよ
素直にFlyableインタフェースを使ってfly可能なものに対してはflyableインタフェースを素直に実装するのがストラテジーパターンでしょ、間にコンポジションは挟まないよ
という無駄な分類学とデザパタ議論が栄えるだけなのがオブジェクト指向
ここまで一切どのようにエレガントに鳥を飛ばせるかなんて議論なかったでしょ
こういう複雑なだけでくだらない議論に巻き込まれないためにも、動的言語及び関数型言語を勉強する価値がある
俺にはこの設計が理解できないなあ
例えば飛べない鳥duckはflyメソッドを持ってはいけないという前提でどうクラス構成するかって話なんだけど、
飛べない鳥duckがそもそもflyを持っていいという設計思想を踏襲するなら、素直にflyメソッドをもつabstract birdクラスまたはflyableインタフェースをDuckは継承または実装し、flyをoverrideあるいはimplementにすればいいと思うんだけど
ストラテジーパターンと言い張ってるけどストラテジーパターンではないよね、それはブリッジパターンだよ
素直にFlyableインタフェースを使ってfly可能なものに対してはflyableインタフェースを素直に実装するのがストラテジーパターンでしょ、間にコンポジションは挟まないよ
という無駄な分類学とデザパタ議論が栄えるだけなのがオブジェクト指向
ここまで一切どのようにエレガントに鳥を飛ばせるかなんて議論なかったでしょ
こういう複雑なだけでくだらない議論に巻き込まれないためにも、動的言語及び関数型言語を勉強する価値がある
2017/03/21(火) 23:31:22.93ID:+RCV7fhe
正しい設計にこだわってすべてが崩壊するよい例だね。
バカは完璧を求めてはいけない。
バカは完璧を求めてはいけない。
2017/03/22(水) 00:08:54.02ID:Q7/mY9A+
>>25
ああ、Oreillyの初心者向けの本の序盤に書いてあるレベルだけど、
理解出来ないの?
flyをそのまま実装するとか拡張性が低い実装してんね。
飛べない鳥を具象クラスに追加したりとか
飛べる鳥が骨折して飛べなくなった場合とか対応出来ないだろ。
Strategyってアルゴリズム部分を明確に定義してカプセル化し、
変更や交換がクライアントと独立して行う事が出来るデザパタだけど分からないかな?
bridgeの意味も全然違うし、interfaceから無造作に分類していくと、
実装クラスの数がキリがないから特徴を分離して実装クラスの数を抑えるデザパタだろうが。
てかこの程度のGoFの簡単なデザパタで複雑とかねーわ。
ドメイン駆動設計とか理解出来なさそうだし、
複雑な業務をシステムに落とし込むことは出来なさそうだな。
オブジェクト指向が駄目なんじゃなくて
お前が馬鹿で使いこなしてないだけだから、
オブジェクト指向の基本理念は大方失敗とかほざいてんじゃねーよ。
ああ、Oreillyの初心者向けの本の序盤に書いてあるレベルだけど、
理解出来ないの?
flyをそのまま実装するとか拡張性が低い実装してんね。
飛べない鳥を具象クラスに追加したりとか
飛べる鳥が骨折して飛べなくなった場合とか対応出来ないだろ。
Strategyってアルゴリズム部分を明確に定義してカプセル化し、
変更や交換がクライアントと独立して行う事が出来るデザパタだけど分からないかな?
bridgeの意味も全然違うし、interfaceから無造作に分類していくと、
実装クラスの数がキリがないから特徴を分離して実装クラスの数を抑えるデザパタだろうが。
てかこの程度のGoFの簡単なデザパタで複雑とかねーわ。
ドメイン駆動設計とか理解出来なさそうだし、
複雑な業務をシステムに落とし込むことは出来なさそうだな。
オブジェクト指向が駄目なんじゃなくて
お前が馬鹿で使いこなしてないだけだから、
オブジェクト指向の基本理念は大方失敗とかほざいてんじゃねーよ。
2017/03/22(水) 00:40:13.35ID:gvAZwZV8
俺は上のコードのやりたいことは概ね理解できたけど、初学者がこれをみて何の黒魔術なんだと思っても何の不思議でもない
たかが飛べない鳥を実装するのに、flybehavior、flywithwings,flynowayというクラス、インタフェースが必要になるとは誰も思っちゃいなかっただろう
実際俺自身これはストラテジーパターンで実装すべき、そしてduckはflyableインタフェースを実装しないべき、だって飛べないんだから、と思っている
何を思ってブリッジパターンにしたのかはそれこそ誰にも解読不能である
僕らはプログラマであって、分類学者じゃない
オブジェクト指向でもてはやされる特徴のうち唯一使えるのはポリモーフィズムだが、実はポリモーフィズムもそんなに役に立たない
ポリモーフィズムが効果的に機能するほどデータ型を作る必要がでた時点で根本的に設計を誤っているからだ
骨折した鳥がどうとか言ってるけど、
骨折した鳥を表現したいなら、鳥クラスのなかにbool型フィールドのisfracturedを追加して内部状態に基づいてflyを切り替えればいい
それがクラスを定義する意味であり、そうしたくないならクラスを宣言する必要がないんだよ
君は間接参照のコストがわかっていないし、gofのパターンもわかってないよ、ちゃんとUML見てくればわかるとおり、ストラテジーパターンはコンポジションを挟まない、ブリッジは挟む
君は変化に対応することに躍起になってるが、それこそ動的言語でサクッとかいたほうが済む話なわけだ、Javaでやることじゃない
クラス設計を過剰に重視する奴は、基本データ構造、特に構造体と辞書型配列とクラスの区別がついていない
たかが飛べない鳥を実装するのに、flybehavior、flywithwings,flynowayというクラス、インタフェースが必要になるとは誰も思っちゃいなかっただろう
実際俺自身これはストラテジーパターンで実装すべき、そしてduckはflyableインタフェースを実装しないべき、だって飛べないんだから、と思っている
何を思ってブリッジパターンにしたのかはそれこそ誰にも解読不能である
僕らはプログラマであって、分類学者じゃない
オブジェクト指向でもてはやされる特徴のうち唯一使えるのはポリモーフィズムだが、実はポリモーフィズムもそんなに役に立たない
ポリモーフィズムが効果的に機能するほどデータ型を作る必要がでた時点で根本的に設計を誤っているからだ
骨折した鳥がどうとか言ってるけど、
骨折した鳥を表現したいなら、鳥クラスのなかにbool型フィールドのisfracturedを追加して内部状態に基づいてflyを切り替えればいい
それがクラスを定義する意味であり、そうしたくないならクラスを宣言する必要がないんだよ
君は間接参照のコストがわかっていないし、gofのパターンもわかってないよ、ちゃんとUML見てくればわかるとおり、ストラテジーパターンはコンポジションを挟まない、ブリッジは挟む
君は変化に対応することに躍起になってるが、それこそ動的言語でサクッとかいたほうが済む話なわけだ、Javaでやることじゃない
クラス設計を過剰に重視する奴は、基本データ構造、特に構造体と辞書型配列とクラスの区別がついていない
29デフォルトの名無しさん
2017/03/22(水) 01:13:13.41ID:gvAZwZV8 たぶんこの問題ならこんな感じのモデルをまず書くんじゃないだろうか。
Javaは久しく書いてないんで、コンパイル通らなかったらごめんな
static class FlyFunction
{static public void fly(bool isFlyable)
if(isFlyable){System.out.println ("I can fly.");}
else {System.out.println ("I cannot fly.");}}
interface Flyable {public void fly();}
interface mayLostWing {public void lostWing();}
//個人的にDuckはFlyableをimplすべきではないが、
public class Duck implement Flyable{
private bool _isFlyable = false;
public void fly(){FlyFunction.fly(_isFlyable);}
}
public class FlyableBird implement Flyable ,mayLostWing
{
private bool _isFlyable = true;
public void fly(){FlyFunction.fly(_isFlyable);}}
public void lostwing(){_isFlyable = false;}}
//curewingなどお好きなメソッドを追加しようね。
}
クラスを使うなら内部フィールドを使わないとクラス使ってる意味ないから。
クラスを使いつつ実際には内部フィールドを参照しないなら、
それはクラスを使いつつも内部状態に依存したくないって気持ちを表している。
それはインスタンスクラスじゃなくてstaticなメソッドクラス、つまり関数ってことなんだよ
これを理解していない限り、無駄に間接参照してパフォーマンスを悪化させるコードの出来上がりだろう。
そしてこれならおそらく誰でも理解できるだろう。
この実装でも不満だけどな。
例えば、飛べない鳥がたくさん出てきたときにどう実装するの?
penguin?chicken?そのたびにクラスを書くのかい?
僕なら辞書配列を使うけどクラスはなんの抽象化の手助けもしてくれないね
penguinクラスとか定義するたびに、flyメソッドを実装したり、lostwingメソッドを実装するのを見て草生えるやろそんなの
Javaは久しく書いてないんで、コンパイル通らなかったらごめんな
static class FlyFunction
{static public void fly(bool isFlyable)
if(isFlyable){System.out.println ("I can fly.");}
else {System.out.println ("I cannot fly.");}}
interface Flyable {public void fly();}
interface mayLostWing {public void lostWing();}
//個人的にDuckはFlyableをimplすべきではないが、
public class Duck implement Flyable{
private bool _isFlyable = false;
public void fly(){FlyFunction.fly(_isFlyable);}
}
public class FlyableBird implement Flyable ,mayLostWing
{
private bool _isFlyable = true;
public void fly(){FlyFunction.fly(_isFlyable);}}
public void lostwing(){_isFlyable = false;}}
//curewingなどお好きなメソッドを追加しようね。
}
クラスを使うなら内部フィールドを使わないとクラス使ってる意味ないから。
クラスを使いつつ実際には内部フィールドを参照しないなら、
それはクラスを使いつつも内部状態に依存したくないって気持ちを表している。
それはインスタンスクラスじゃなくてstaticなメソッドクラス、つまり関数ってことなんだよ
これを理解していない限り、無駄に間接参照してパフォーマンスを悪化させるコードの出来上がりだろう。
そしてこれならおそらく誰でも理解できるだろう。
この実装でも不満だけどな。
例えば、飛べない鳥がたくさん出てきたときにどう実装するの?
penguin?chicken?そのたびにクラスを書くのかい?
僕なら辞書配列を使うけどクラスはなんの抽象化の手助けもしてくれないね
penguinクラスとか定義するたびに、flyメソッドを実装したり、lostwingメソッドを実装するのを見て草生えるやろそんなの
2017/03/22(水) 03:24:31.66ID:DZdLj/0d
2017/03/22(水) 12:56:40.89ID:Uj/VLma9
ふざけてる場合か!
早く仕事しろ!
早く仕事しろ!
34ぬーぶ ◆upkqfrxkrw
2017/03/22(水) 13:03:03.41ID:HAsQj55b 学校早く終わったお
>>30
うーんJavaとかはAndroidアプリ作るには最適だけど
自分はPCのゲーム作りたいからいいかな。
コードの形とか実行速度とかライブラリとか、
どれをとってもあんまりメリットを感じられない。
>>30
うーんJavaとかはAndroidアプリ作るには最適だけど
自分はPCのゲーム作りたいからいいかな。
コードの形とか実行速度とかライブラリとか、
どれをとってもあんまりメリットを感じられない。
35デフォルトの名無しさん
2017/03/22(水) 13:37:46.29ID:nJg9yiEm は?
36デフォルトの名無しさん
2017/03/22(水) 15:16:46.85ID:CS3xBlnx ねねっちでもC++できるというのにお前らときたら
2017/03/22(水) 15:48:00.79ID:dsEiUABL
38デフォルトの名無しさん
2017/03/22(水) 16:29:42.06ID:R1u9KQvE■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】Jリーグ観客動員が歴代最多を更新 初の「1300万人超え」達成…平均入場者数も史上最高に [尺アジ★]
- サナエノミクスについて力説 積極的な財政出動で「所得増える 消費マインド上がる 税収増える」片山さつき財務大臣 ★3 [少考さん★]
- 日中対立「着地点」見えず 中国、他国にも圧力の過去―関係悪化から1カ月 [蚤の市★]
- 日本の英語力96位から動かず AI評価で可視化された「読めるが話せない」の正体 (EF EPI 2025) ★2 [少考さん★]
- 【芸能】粗品、日本テレビに苦言 客のレベルが「かなり低い。あいつら分かってない」「拍手したいだけやねん」 [冬月記者★]
- 【静岡】伊東市長選、前市議の杉本氏初当選 学歴詐称疑惑の田久保氏は及ばず 市長選3700万円、市議選6300万円の計1億円費やされる [ぐれ★]
- なんでネトウヨが勃起してるの? [377482965]
- 【朗報】イーロン・マスク「AIとロボットで誰も働かなくて良くなる。全員ニートで金銭も税金もないパラダイスみてぇな国を作りてえ」 [347751896]
- 駄目な社会不適合者を1人思い浮かべてからこのスレを開いて下さい
- 【悲報】米山隆一と室井佑月、ガチで離婚しそうwwwwwwwwwwwwwwwwwwww [802034645]
- ふーみゃちゃんねる🏡
- チョココロネは頭から食べる?シッポから食べる?
