トップページ⇒tech
1001コメント354KB

GUIがむずかしすぎる

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2009/10/18(日) 17:54:43
コマンドラインプログラムならなんとかできるんだけど
GUIは私の知能じゃむり
0412デフォルトの名無しさん2010/05/02(日) 00:46:54
>>411
「イベントによる状態遷移」の作法をGUIの話題として話すのはNG
なぜなら上向き構文解析でやってることと同じだから
おかしいだろこれ
GUIに引き寄せて語っても構わないんだよ
0413デフォルトの名無しさん2010/05/02(日) 00:48:55
GUIが難しいか・・・
それって客の目に触れし、感じ方が人それぞれだから難しいと?
そうでないんなら、GUIなんて決まりきったことばっかじゃん


0414デフォルトの名無しさん2010/05/02(日) 00:48:57
>>411
いやスレタイは単に「GUIがむずかしすぎる」と言っているだけだろ

Aに似た性質の難しさをBが持っているからといって
Aが難しいと言ってはいけないことにはならない
それこそ意味不明な主張だな
04154112010/05/02(日) 01:26:25
>>412
それは「何処」から引き寄せてくるのでしょ?
「CUI」と前提しますとCUIを舐めすぎじゃ?
1プロセス1スレッドばかりがCUIではありませんよ。
ちなみに
401=405=411≠407
察して欲しかったな。

>>413
俺もそう思う。
見栄えだったり操作性だったり描画性能だったりそんなとこだよね。
難しいとうか、際限のない鬱陶しさ。
もちろん、GUI特有の知識も必要だし
理解しなくては出来ない事も多々あるけど
排他で悩むってなんだよとw
それ以前の会話でしょとね。

>>414
包括関係にあるからその論理は成り立たん。
0416デフォルトの名無しさん2010/05/02(日) 08:57:57
>排他で悩むってなんだよとw
排他で悩む機会がGUI以外に無かったんだろ

GUI特有ではないというのは綺麗事であって
現実にはGUI以外で排他で悩むような身近な例が無いんだよ
0417デフォルトの名無しさん2010/05/02(日) 10:31:45
> 現実にはGUI以外で排他で悩むような身近な例が無いんだよ
そうでもないんじゃないの
CGIでおもちゃみたいなアクセスカウンター作るにしても排他は必要だし

まあGUIで多用されるオブザーバーパターン/コールバックみたいなのは
マルチスレッド初心者がデッドロックで嵌りやすい典型例ではあると思うけど
0418デフォルトの名無しさん2010/05/02(日) 11:15:53
Observerパターンは separation of concerns 要はswitch文をバラバラにする仕組み
イベントハンドラに依存関係があったりする場合は
そもそもセパレートしたらダメじゃん
0419デフォルトの名無しさん2010/05/02(日) 11:44:56
>>418
定石を知らないのが「初心者」なんでしょ
0420デフォルトの名無しさん2010/05/02(日) 12:41:42
>>416
要するに、GUI の実装で悩んでるんなら、
GUI 以外の色々な分野に "も" 目を向けろってことだよな。
そうすればヒントになりそうなものは色々あるんだし。
視野の狭さが招いた「行き詰まり≒難しさ」なんでは
0421デフォルトの名無しさん2010/05/02(日) 22:30:01
>>418
>Observerパターンは separation of concerns 要はswitch文をバラバラにする仕組み
>イベントハンドラに依存関係があったりする場合は
>そもそもセパレートしたらダメじゃん
でも、GUIコンポーネントが既にObserverパターンのlistener側を要求してくるので、
ライブラリを使う側としてはどうしようもないです

もしObserverパターンがだめなら、自前でGUIライブラリを作ると仮定して、
どういう設計がいいでしょうか?
なにかアイディアがあったら教えてほしいです
0422デフォルトの名無しさん2010/05/02(日) 22:51:16
私がいつも疑問に思っているのは、
"現状のGUIのむずかしさ"は致し方ないのか?
それとも、もっと優れた作り方があって、多くのGUIライブラリがそれに気づけていないだけなのか?
という事
FRPみたいな新しいGUIの作り方が出てきてるけど、
実際に使ってみた人いますか?
0423デフォルトの名無しさん2010/05/02(日) 23:23:11
優れた作り方ではないが
「問題が完全に把握できないときは、解決策も提供しないのが最善の方法である。」

Observerもオブジェクト指向も提供しない、余計なことはなにもしない
「小さな政府」がいいと思う
0424デフォルトの名無しさん2010/05/02(日) 23:39:55
>>422
> もっと優れた作り方があって ...
> FRPみたいな新しいGUIの作り方が出てきてるけど、...

たぶん、ちょっと勘違いしてると思う。

[Reactive Programming]
簡単に言えば、a = 1 + b という式を定義しておけば、
変数 b を変化させた時に a も「自動的に」変化する、という仕組み。
たとえば、a を画面の背景色として、b をボタンとすると、
b の変化(ボタンが押された)に伴って a が変化(画面が赤くなる)する。

確かに宣言的に定義できるというメリットは大きいけど、
何と何を紐付けるか、紐付けた事による周りへの影響は、
ある事柄が紐付いた時に別の紐付けを解く必要があるか、
別の日も付けた事柄との間に時間軸上での依存性はあるか、
などはやはり人間が考慮しなくちゃならない。

イベント処理が難しいと感じてる人たちにとっては、
似たような悩みがつきまとうと思う。
0425デフォルトの名無しさん2010/05/03(月) 00:30:42
GUI の難しさとして言われていることのほとんどは >>410 に集約すると思う。
0426デフォルトの名無しさん2010/05/03(月) 09:47:33
今まで何年もJavaやってきて最近になってC/C++やりはじめたんだけど、
ようやくポインタとか仮想関数とかなんとなく理解でけた。
いよいよWindowsアプリを勉強しようと思うんだけど、GTK++たかQtとか
いろいろあるけど、どれやったらえんだろ? おしえてちょ。ちなみに
あまり金もってない。 Qtって無料の開発環境あるんだろか?
0427デフォルトの名無しさん2010/05/03(月) 10:41:28
>>426
とりあえず高級GUIライブラリを使わず Win32API でゴリゴリやっとけ。
メッセージループの回し方も知らないんではスタート地点にも立ってない。

猫でもわかるプログラミング(http://homepage2.nifty.com/c_lang/)
ここの [Windows SDK編 第1部] と [Windows SDK編 第2部] を
自分でプログラムしながらざっと追えばいい。
1ヶ月くらいでこなせるだろ。
そうすると、高級GUIライブラリや Java のライブラリが
内部で何をやっているのか、だいたい想像できるようになって、
勉強がはかどる。
0428デフォルトの名無しさん2010/05/03(月) 10:47:18
>>427
激しく同意
同じこと書こうとしたら先を越されたw
0429デフォルトの名無しさん2010/05/03(月) 11:18:42
>>427
うっしゃ! おおきに。意味はよくわからんが、やるきになた。
0430デフォルトの名無しさん2010/05/03(月) 12:54:02
>>426
何年もJAVAやってる奴が、C++で仮想関数をようやく理解できたっておかしくね?

JAVAで何をやってたんだw
0431デフォルトの名無しさん2010/05/03(月) 14:12:01
目的が達成できれば問題ない
0432デフォルトの名無しさん2010/05/03(月) 14:43:27
レスをもらうのが目的だったんですねわかります
0433デフォルトの名無しさん2010/05/03(月) 15:30:20
JAVAはJDK1.0.2の頃から10年以上やって、アプリやアプレットを
数えきれんぐらい作ったけど、
仮想関数なんて見た事も聞いた事もなかったよ。ポインタはうわさぐらいは
聞いたけど。
0434デフォルトの名無しさん2010/05/03(月) 15:33:09
まあJavaじゃ継承すればポリモーフィックに動作するのが当たり前だから
仕方ないね
0435デフォルトの名無しさん2010/05/03(月) 16:03:25
仮想関数なんて言葉はないかもしれんが、
C++の仮想関数をようやく理解できたってのは変だろ
CやBASICをやってた人なら話は別だが、JAVAをやってたら、
「仮想関数って言うんだ、フーン」程度で終わるだろ
0436デフォルトの名無しさん2010/05/03(月) 16:10:39
JavaでAbstractClass作ったことないのか?
0437デフォルトの名無しさん2010/05/03(月) 16:11:32
C++には仮想関数と純粋仮想関数があることを知らない人は多い
0438デフォルトの名無しさん2010/05/03(月) 16:27:58
JAVA10年だが、コンパリルエラーで"***はAbstractClassです。"という
フレーズをよく見るが、AbstractClassというものに興味を持った事も
疑問を持った事も一切ない。
0439デフォルトの名無しさん2010/05/03(月) 16:30:38
>>438
お前は10年間何をやってたんだ?
そんなんじゃ、ろくなものつれないだろ?
0440デフォルトの名無しさん2010/05/03(月) 16:33:04
なんでも速攻で作るので結構重宝されてる。鼻歌まじりさ。
0441デフォルトの名無しさん2010/05/03(月) 16:46:31
new mouthadapter{ public void actionLister(hogehoge); }とかこんな感じだろ?
0442デフォルトの名無しさん2010/05/03(月) 16:54:52
>>440
GUIだけなら、誰でもそうだろ?
0443デフォルトの名無しさん2010/05/03(月) 17:00:57
もうね、JAVAやってると理論はどうでもええの。
ちゃちゃっと作ってエラーでたら、ネット検索にその部分を貼り付けて出た
例文見て適当にそれをペーストしたら動く。
0444デフォルトの名無しさん2010/05/03(月) 17:24:03
何が猫でもわかるだっつの 文章も読みにくく、説明がヘッタクソ
0445デフォルトの名無しさん2010/05/03(月) 17:38:23
おまえは猫以下か
0446デフォルトの名無しさん2010/05/03(月) 20:10:33
>>444
猫に分かるように書くとああなるんだよ
0447デフォルトの名無しさん2010/05/03(月) 20:30:19
わかたぞ!
仮想関数とはJAVAのimplementsされるクラスみたいなもんか。
なーんだ、そんな事なら早く言ってくれよ。まったくっ
0448デフォルトの名無しさん2010/05/03(月) 20:37:21
>>444

C/C++言語以前に、猫言語を習得していないと、あのページは読めないぞ
0449デフォルトの名無しさん2010/05/03(月) 20:39:26
ということはなんだ、インターフェースの事じゃねぇか。
アプリつくる時にゃ1つや2つは作ってるけど。。。
これで仮想関数なるものがやっとわかったぜおおきに。
0450デフォルトの名無しさん2010/05/03(月) 20:46:07
>>447
全然違う
このコードを走らせてみて理解汁
Javaだと、全てのメソッドはC++でいう仮想関数と同じ動作になる
仮想関数は、実行時型に応じてポリモーフィックに動作するが
非仮想関数は、ポリモーフィックに動作しない

#include <stdio.h>

struct base {
    const char *static_hello() { return "hello, base"; }
    virtual const char *virtual_hello() { return "hello, base"; }
};
struct derived : public base {
    const char *static_hello() { return "hello, derived"; }
    const char *virtual_hello() { return "hello, derived"; }
};

main()
{
    base *p = new derived;
    printf("static: %s\n", p->static_hello());
    printf("virtual: %s\n", p->virtual_hello());
    delete p;
}
0451デフォルトの名無しさん2010/05/03(月) 21:10:19
Javaも内部的な関数呼び出しには、
invokevirtual
invokeinterface
invokestatic
invokespecial
の4種類あって、invokespecial(コンストラクタ)とinvokestatic(staticメソッド)はポリモーフィックには動作しないよ。
0452デフォルトの名無しさん2010/05/03(月) 21:11:37
>>451
ああ全てと言っちゃうと語弊があったね
指摘サンクス
0453デフォルトの名無しさん2010/05/03(月) 21:14:18
そうかー(っても、はっきりは理解してないが、雰囲気はわかる気がする)
ややこしいもんだな。Javaも俺の知らん内部でややこしくやってるわけか。
0454デフォルトの名無しさん2010/05/03(月) 21:14:54
ポリモーフィックも知らずにJAVAをよく10年もやれたなw
0455デフォルトの名無しさん2010/05/03(月) 21:24:47
あえて踏み込まなければなんでもいけるっしょ
ExcelやWordと同じ
0456デフォルトの名無しさん2010/05/03(月) 23:09:56
その場限りを続けてるとどうなるのか、身をもって知ったわけだ。
10年は無駄じゃなかった・・・と思うよ
0457デフォルトの名無しさん2010/05/03(月) 23:19:55
10年つっても7歳〜17歳だからな
0458デフォルトの名無しさん2010/05/03(月) 23:26:41
>>457
っあ、なんだ趣味でやってるような、ヲタでしたかw
だったら、何の問題もないんじゃねw
0459デフォルトの名無しさん2010/05/03(月) 23:44:25
17 歳の猫以下が誰に重宝されてたのかが気になるところだが・・・
0460デフォルトの名無しさん2010/05/04(火) 08:52:51
GUIが難しいスレに集まったヤツらが初心者を笑うとは
目くそ鼻くそを笑うの典型だな。
0461デフォルトの名無しさん2010/05/04(火) 09:06:33
どんなFramework使おうが
独特のポインタ概念とイベント概念が存在していて
どれも異なったやり方をしてるけど
決して無くなることのない部分で
分からない人はこの辺が分からないんだろうな
C++のクラスとポインタ概念が分かればどれも同じことをやってるだけなんだけど
結局内部で何をやってるか調べられるようになるだけど
Frameworkで用意されたものを見せられるだけじゃ
C++やJavaを熟知した人間にも分からないよ
なんかこう統一して欲しい部分ではあるな
0462デフォルトの名無しさん2010/05/04(火) 17:17:49
日本語でOKとまでは言わんが、もう少し落ち着け
0463デフォルトの名無しさん2010/05/04(火) 17:43:04
>>461
そんなあなたにUML
0464デフォルトの名無しさん2010/05/04(火) 17:52:02
>>462
GUIが難しすぎる という以前に自分の読解力、知識のなさを棚に上げるのはどうかと思う
0465デフォルトの名無しさん2010/05/04(火) 18:09:09
>>464
では訊くが、>>461 は結局のところ「何を統一して欲しい」と言ってるんだ?

それは >>461 が言う「決して無くなることのない部分」なのか?
(そもそも、その部分が何を指してるかもやや曖昧だが)

0466デフォルトの名無しさん2010/05/04(火) 18:20:05
>>465
>「何を統一して欲しい」
コンピュータ手続き処理

ISO9000 シリーズを参照
0467デフォルトの名無しさん2010/05/04(火) 18:37:53
この程度もわからんボケキチガイが上司なのか
かわいそうに
かわいそうに
0468デフォルトの名無しさん2010/05/04(火) 18:52:56
>>463 は「UMLで解決できるもの」が統一して欲しい対象だと解釈しているようだが、
>>466 はコンピュータ手続き処理というものが統一して欲しい対象だと解釈している。

どっちなんだ? どっちも違うのか?
それともコンピュータ手続き処理とやらは UML で統一できるのか?
0469デフォルトの名無しさん2010/05/04(火) 18:53:49
以下 無能なループ

=== 開始 ===
0470デフォルトの名無しさん2010/05/04(火) 23:05:45
これから必要なのはドキュンメイトとコードの一元化
0471デフォルトの名無しさん2010/05/04(火) 23:14:05
一応ここGUIスレなんだから、GUIに絡めた話は端折らずに説明してくれよ
そのドキュンなメイトとコードの一元化によってGUIの何とかという問題を解決するよ
とかさ
0472デフォルトの名無しさん2010/05/05(水) 00:03:39
↑ドキュンメイト
0473デフォルトの名無しさん2010/05/05(水) 00:19:06
>>471
それ以前に、ドキュンなメイトとコードの一元化ってのがどういう状態をさしているのか理解できん
0474デフォルトの名無しさん2010/05/05(水) 14:08:08
>>473
あなたは理解しなくていいです
0475デフォルトの名無しさん2010/05/05(水) 14:13:32
GUIができないやつは無能
0476デフォルトの名無しさん2010/05/05(水) 14:42:01
能なんて飾りです
0477デフォルトの名無しさん2010/05/05(水) 16:48:09
誰だ! 悪名高き「猫でもわかるC言語」を紹介しとるのは、
この本は猫どころか相当頭のいい者でも混乱させるだけで、
ポインタでC習得挫折者を続出させたA級戦犯的入門書じゃないか。
0478デフォルトの名無しさん2010/05/05(水) 16:50:00
2行目までは同意
3行目は猫が出る前からポインタ問題は存在していたから同意出来ない
0479デフォルトの名無しさん2010/05/05(水) 16:53:55
>>477
1~476スレの間でそんな本を紹介してたヤツはいないが
0480デフォルトの名無しさん2010/05/05(水) 17:34:03
オブジェクト指向なGUIに挫折したら誰が戦犯になってくれるんだ?

ポインタの挫折は被害者に加勢して加害者の悪名を高めておきながら、
OOとGUIは挫折したら自己責任とか、まさかそんな事は言えないよな
0481デフォルトの名無しさん2010/05/05(水) 20:10:23
あきらめろ
迷惑だ
0482デフォルトの名無しさん2010/05/05(水) 20:46:58
「本当にPythonを殺し、メインのスクリプト言語となる望みを、あるいは何であれメイン
の言語となる望みを絶ったのは、永久凍土の問題なのだ。」
0483デフォルトの名無しさん2010/05/06(木) 01:24:28
>>480
君の思考はまさにこれ
http://ja.wikipedia.org/wiki/%E9%98%B2%E8%A1%9B%E6%A9%9F%E5%88%B6
赤ちゃんやキチガイと同じ

選択肢は3つ

独裁者になる(思い通りになるものを作る、作らせる)
世捨て人になる(思い通りにならないものには触れない)
慣れる(学習する)

何でもかんでも人とせいにするのはやめましょう
0484デフォルトの名無しさん2010/05/06(木) 02:41:18
選択肢は4つ

独裁者になる(思い通りになるものを作る、作らせる)
世捨て人になる(思い通りにならないものには触れない)
慣れる(学習する)
人を使う(他人にやらせる)

成功するのは後者だ
0485デフォルトの名無しさん2010/05/06(木) 21:46:19
構造化プログラミングからやりなさい
いきなりオブジェクト指向はあなたに無理
0486デフォルトの名無しさん2010/05/06(木) 21:48:43
N88-BASIC 時代みたいに
上から下へと処理が流れる時代ではないのよ

色々なプログラムがあって、メッセージを受け取り、どのプログラムに
送信するかOSが決める
そして、そのプログラムを実行するタイミングもOSが管理する
これを理解できない限りWindowsプログラミングはあきらめたほうがいい
0487デフォルトの名無しさん2010/05/06(木) 22:05:07
>>483
人を原因にするのがイヤなら人以外の物でいいから、とにかく原因を探そう
0488デフォルトの名無しさん2010/05/06(木) 22:18:24
HTMLで成功して
すこしずつ、慣れるのがいい
結果が欲しいんだろ?

もしくは、printf( "hello world\n" );からでもいい
ゆっくりやるのがいい
0489デフォルトの名無しさん2010/05/06(木) 22:22:56
もしくは、GUIの何が難しいのか原因を探る、考える
自分は、この処理の流れがわかrない
なぜ、こう処理されるのか、
原因と結果を自分で確かめる、実行する 人のせいにしない

時には人に相談するもよし
ここまでくると、自分は、どこのどういう処理、形式が分からないという内容の
発言で自分はここまでは理解できます
という自己表現が必要
自分ができないことを紙にかいてみる
したいことも書いてみる
そこから、何が原因でできないかを考える
0490デフォルトの名無しさん2010/05/06(木) 22:36:17
どう書く?orgにGUIの問題ってあったっけ
解くのもむずかしいが、出題するのもむずかしい気がする
0491デフォルトの名無しさん2010/05/07(金) 13:30:34
猫Cの人は日本語能力が低いつーか、猫語以下だね・・・・
0492デフォルトの名無しさん2010/05/07(金) 13:58:47
フォトレタッチソフトを作りたく色々調べていたのですが
レイヤー機能の作り方みたいな講座サイトってないでしょうか?
0493デフォルトの名無しさん2010/05/07(金) 15:02:45
レイヤーってリストじゃね?
0494デフォルトの名無しさん2010/05/07(金) 15:26:06
レイヤーがそういうものだっていうことさえ
今時点ではわからず。

GUIでレイヤーをつかう、という情報がどこから仕入れられるのでしょうか
0495デフォルトの名無しさん2010/05/07(金) 15:36:36
つ http://msdn.microsoft.com/ja-jp/library/ms997507.aspx
0496デフォルトの名無しさん2010/05/07(金) 15:48:17
すんません
フォトレタッチソフトで言うところのレイヤーです。
0497デフォルトの名無しさん2010/05/07(金) 15:52:13
まずペイントは作れるのかね?
0498デフォルトの名無しさん2010/05/07(金) 15:58:56
GIMPのソースコードに書いてあるよ
0499デフォルトの名無しさん2010/05/07(金) 16:07:50
あんなもの読みたくもないから
必要な部分だけ抜き出して
0500デフォルトの名無しさん2010/05/07(金) 16:08:58
了解
待ってろ
0501デフォルトの名無しさん2010/05/07(金) 16:09:54
暇を見つけてやるから
3カ月ほど待ちなされ
0502デフォルトの名無しさん2010/05/08(土) 08:21:39
わかった
たとえ3ヶ月後にバージョンアップしてて
つかいものにならなくてても待つ
0503デフォルトの名無しさん2010/05/09(日) 08:22:46
俺が大好きなハンゲで麻雀が弟に回線切られてできなくなった
このクソキチガイ弟が
0504デフォルトの名無しさん2010/05/09(日) 08:24:40
プロセスとかスレッドとかって何だよ
俺は海外留学できたくらい英語ができる人間様だ
ハンゲじゃ貴族で誰もがおれをしたってる
麻雀もできやしねぇ弟なんかクソゴミ

そんなクソゴミが俺様に逆らうってのは殺されたいのか?あ?
0505デフォルトの名無しさん2010/05/09(日) 08:30:54
弟がクソのように何が「ハンゲの麻雀は牌操作してる」だ
お前の理屈なんかききたくものねー
麻雀は通にしかわからない選ばれた者だけの一流のゲームだ

相手の捨て牌さえ見てれば、相手の役なんかわかるんだよクソボケ
麻雀のDVDでも不正はできねぇって言ってるんだ
リアルでも不正できねぇのに ネトゲで不正できるわけねぇだろ
0506デフォルトの名無しさん2010/05/09(日) 10:26:35
とりあえずスレ違いだ
0507デフォルトの名無しさん2010/05/09(日) 18:45:13
CUIからGUI(win32API)に移ったとき難しかったのは、
画像の表示、イベントドリブンだったな。

画像表示はBitBltで行うが、HDCの部分が分かりにくい。
出力先、元がHWND、HDC、HBITMAPどれの場合でも、
ひとつの関数で出力できる関数を作ると使いやすい。

イベントドリブンは、わざわざコールバック関数に投げるのが意味不明だった。
GetMessageで得たMSG構造体をメッセージループでそのまま使えれば、
while(1){c = getch()}みたいな使い方と似ていて分かりやすいのだが。

実際自分はそのやり方でやる事で使いやすくなった。
WM_PAINT、WM_COMMAND、WM_CLOSEは
メッセージループの方には来ないので、
関数のstatic変数などに記憶する必要がある。

ただ、javaやas3はこの技が使えなく、文法もさらに厳しく、
結局、オブジェクト指向風の考え方が必要になってきた。
0508デフォルトの名無しさん2010/05/09(日) 18:49:13
うん、いるね
すべての関数がstaticな人
意味わからん
0509デフォルトの名無しさん2010/05/09(日) 18:57:47
API → コールバック関数 → 自前イベントキュー → 別スレッド

これで勝つる
0510デフォルトの名無しさん2010/05/10(月) 00:14:52
>>507
釣りじゃなくて本気だったらお前は向いてない
0511デフォルトの名無しさん2010/05/10(月) 01:32:37
キューに色んな種類のイベントを入れると、静的な型情報がかなり失われてしまう。
動的に型タグを調べなおしたりするから静的型の意味が無い。
イベントドリブンに拘るのはそういう事情もあるんだろうな。
■ このスレッドは過去ログ倉庫に格納されています