トップページ⇒tech
107コメント32KB

プログラミングのうまい下手は

■ このスレッドは過去ログ倉庫に格納されています
0001VB好きの初心者 NGNG
プログラミングのうまい下手は、
どんな言語を使うかではなく、
1アイデア
2操作性
3アルゴリズム
だと思いますが実際のところどうでしょう。
0002名無しさんi486 NGNG
集中力が全て。物事に偏執する粘着質の精神的パワー。

0003バッカーです NGNG
煩悩に負けない忍耐力
0004名無しさん@お腹いっぱい。 NGNG
>どんな言語を使うかではなく、
「VB好き」に言われてもナァ…
0005名無しさん@お腹いっぱい。 NGNG
>1
>3アルゴリズム
そのアルゴリズムを詰めていくと言語の選択も
重要になってくるんだよね。
0006名無しさん@お腹いっぱい。 NGNG
1の言うのはプログラムの、というより設計のうまい下手のような気が‥
プログラムのうまい下手というのは、言語やOSや開発環境を含めた
使いこなしのことではないだろうか?

0007名無しさん@お腹いっぱい。 NGNG
「分析」だともうな。地味な答えだけど、アイディアにしろアルゴリズムに
しろ、新しいものを生み出すのには、分析あるのみ、と。
知らないアルゴリズムなら調べればいいけど、どにもないアルゴリズムは
自分で生み出すしかないし。
0008名無しさん@お腹いっぱい。 NGNG
僕は
「メンテナンスのしやすいコードを書けるかどうか」
だと思うなあ。
0009名無しさん@お腹いっぱい。 NGNG
ゲイツいわく、
「よいプログラマになるものは、最初の2、3年でよいプログラマになる」
つまり才能。
具体的にはたぶん、バランス感覚とか。あと、物事の裏に回りこむ
能力みたいなもの。正面突破するパワーは鍛えられるけど、こういう
ものは鍛えられない。
0010名無しさん@お腹いっぱい。 NGNG
>9
なかなかよいことをいう。。さすがに苦労してますな。
ちなみにゲイツがどこで述べたのだろうか
0011名無しさん@お腹いっぱい。 NGNG
>>1
それって、いいプログラムとは何かで、
プログラミングが上手い下手じゃないんじゃない?
ついでに言うとプログラムを見てプログラミングが上手いかどうかなんてわからん。

たぶんVBが否定されっぱなしで悲しいいんだろうけど、
VB製のアプリはWIN標準のインターフェイスを知らないのがほとんど、
MFCを覚えればいろいろ解かると思う。
0012名無しさん@お腹いっぱい。 NGNG
>7
分析、だけじゃなくて整理し、構成し、そして
応用ができるようになるんだと思う。

アイディア・センス・技術はその結果後から付いて来る
ものかもね。プログラム以外の予備知識も重要だなー。

#「VBではせっかくのアイデアが活かせない」っての、あると思うよ。
0013名無しさん@お腹いっぱい。 NGNG
>1
良いプログラムの基準が解らないなぁ。
パフォーマンス?
コストパフォーマンス?
メンテのしやすさ?
自己満足?
0014名無しさん@お腹いっぱい。 NGNG
> VB製のアプリはWIN標準のインターフェイスを知らないのがほとんど

VBでできないことなんかそうはないよ。
VBが悪いんじゃない。VBでそういうアプリを作るやつが悪いのだ。

#VB製でなくてもひどいのあるけどな‥
0015名無しさん@お腹いっぱい。 NGNG
あぁぁ、いつもの展開に…
0016名無しさん@お腹いっぱい。 NGNG
>15
そうやって会話して、みんな厨房を卒業するんだから
大人はおとなしく見守ってヤレ
0017名無しさん@お腹いっぱい。 NGNG
ところで、プラグラマとコーダーを別に考えるとすると、
やっぱり、細かい設計はプログラミングに入るんでしょうか?
0018名無しさん@お腹いっぱい。 NGNG
でしょうかといわれれば、そうでしょう。
0019。> NGNG
プログラミングのうまい下手か・・・
バグの発生率と関係がありそうな。
汚いけどバグフリーなコードと
綺麗だけどばぐだらけなコードとか・・・
うーん、眠たくなってきた。
0020エロリ・ザ・男爵 NGNG
>>19
現場の状況によっても変わるよね。
俺は後者だとは思うけど。
0021ねこま NGNG
プログラミングのうまい下手は
プログラミングがうまい人にしか理解できないと思います.
0022。>20 NGNG
もし本当にバグが"無い”のなら、前者だと思うんよね。
でも、これって、バグが未発見であったり、症状として現れないだけで"無い"わけじゃない。
そうすると、汚いコードだと、いざバグを発見した時点で、原因追及が難しかったり、
バグをつぶせなかったり、最悪無関係な処理をよりおかしくしてしまったりし兼ねないよね。

保守性のよいきれいなプログラムが上手なプログラムなんだろうな。
しかし、それでバグだらけだと、うーん、デバッグが足りないんだろうなぁ。
0023名無しさん@お腹いっぱい。 NGNG
バグの多い少ないは、その実装がどれぐらい枯れているか
のほうに大きく依存してそうなので反対。
へたくそでもいつも同じ事しか書かなくてバグが出ない人もいる。
(ある意味自分を知ってて有能とも言える)

全く新規な(といっても今時もう無いかも)ロジックを
書いてもらって比較したいね。
もしくは、仕様変更にたいする耐性かな。
メンテしてるときに書き換えるところが少ないほど
「うまいなあ」と思う。
0024名無しさん@お腹いっぱい。 NGNG
保守性と性能のバランスが取れているものがうまい。
要は品質高いソースを短時間で作れる人がうまい。

あと、汚いコードを、なぜかいとも簡単に保守出来る人はえらい。
0025名無しさん@お腹いっぱい。 NGNG
脳味噌のスタック領域が相当広いんだろう。
0026名無しさん@お腹いっぱい。 NGNG
俺レジスタも少なくてちょっと前のことも真剣に思い出さないと
だめなんだよね...
0027名無しさん@お腹いっぱい。 NGNG
俺も最近、Z80レベルにまで落ちてるような気が、
0028名無しさん@お腹いっぱい。 NGNG
1アイデア ・・・大きくなると要Exe分割、Win32APIコール一苦労、インストーラ死VB
2操作性・・・画面を何枚か開くとメモリエラー、インタープリタ&ActiveX劇遅VB
3アルゴリズム・・・ポインタも派生も出来ない、エラー処理古いVB
0029名無しさん@お腹いっぱい。 NGNG
チームプレイでプログラミングするには、もちろん、

・みんなが見やすい
・保守性がある

コードを書く、ということは、大事だと思います。

しかし、私、プログラミング能力という意味では、

いきなりエディタに向かって書き始め、どんどんコードが巨大になっても、
ちっとも破綻しない。

という人が、才能のある人(凡人が「方法」を勉強しても辿り着けない境地に居る人)
ではないかと思います。こうゆうひと、たまに居るよね。
0030名無しさん@お腹いっぱい。 NGNG
>29
実は、時々ひそかに大幅に書き直してたりして。(これは凡人?)
0031名無しさん@お腹いっぱい。 NGNG
> 23
へたくそでもいつも同じ事しか書かなくてバグが出ない人もいる。
(ある意味自分を知ってて有能とも言える)

おお、枯れてない方法は絶対に使わない、という、揺るぎ無い意志!!
私は、これを実践できる人こそプロだ、と思っとります。

やったことないことはやらない、という考えの人を馬鹿にしているのではなく、
本気でそう思っています。

23氏の発言は、私の良心に、深く深く響くお言葉でごさいます。

私は、お客様のための大切なプロジェクトなのに、いつも実験君になってしまい、バグを出してしまいます。

これでは、プロではありませんね(プロとかゆう以前に性質の問題ですね)。

でも、この癖は絶対に直らないと思います。

鬱だ氏のう...
0032名無しさん@お腹いっぱい。 NGNG
>・みんなが見やすい
>・保守性がある

これって言語に依存だよね。例えば、アセンブラやVBでは×。
0033名無しさん@お腹いっぱい。 NGNG
>へたくそでもいつも同じ事しか書かなくてバグが出ない人もいる。

やっぱ、クラスにしといて差分コーディングするしかないね。派生が出来ないVBは×。
0034名無しさん@お腹いっぱい。 NGNG
で、基底クラスに大規模な変更があったときに、さあ大変。
0035厨房自覚あり NGNG
>34
基底クラスの変更で上に影響があるような変更だとしたら、
誰かがお馬鹿をやってるはずってことじゃないですか?

インタフェイスの変更しないですむようにそのクラスを作って
ないってことでしょ?いや、現実には難しいのかな?
0036名無しさん@お腹いっぱい。 NGNG
>現実には難しいのかな
そうなんよ…なんでかね…
0037名無しさん@お腹いっぱい。 NGNG
>>33
派生ができるVB7だったらOKなんか?
http://www.microsoft.com/japan/developer/vstudio/nextgen/technology/language.asp

0038名無しさん@お腹いっぱい。 NGNG
>37
VBは、派生云々以前に環境汚すの何とかして欲しい。
003937 NGNG
>>38
それは言えてる。
一度インストールすると、元の環境に戻すにはOSごと再インストール
するしかないもんな。
0040名無しさん@お腹いっぱい。 NGNG
>38
それってVBじゃなくてMS全般に言えることじゃ、、、
0041>40 NGNG
VBで作られたカスみたいなソフトでさえその破壊力を備えてる。
0042>41 NGNG
何を以ってそう言ってるのかよくわからないんだけど、
ランタイムのSP違いとかそんなのはユーザ側の問題だと思うよ。
0043名無しさん@お腹いっぱい。 NGNG
うまい下手見分けるなんて簡単だよ
それは英語。
英語も出来ないやつの書いたプログラムなんて
見る気もしませんって感じ。
変数、関数名のスペル間違いの多い奴は間違いなくヘボ。
0044名無しさん@お腹いっぱい。 NGNG
>>34
話の流れからいくと、基底クラスは枯れてるんじゃないのか?

仮に大幅な変更があったとしても、いっそのこと既に派生したクラスは不問とした上で、
基底クラスから新たなクラスを導出し、その上で新規のクラスはそこから導出するように
するってのはどうよ?
ま、それができない状況なんていくらでもあるだろうけどさ。
0045名無しさん@お腹いっぱい。 NGNG
>19

1、>汚いけどバグフリーなコードと
2、>綺麗だけどばぐだらけなコードとか・・・
追加で
3、綺麗でバグの少ないコード。

プログラムの品質の話になるとよくこの両者が比較されるけど、
1は、下手糞が作った完成品で
2は、未完成なプログラムでしょ。
バグだらけで綺麗なコードって事は、まだなんにも出来ていなから
これからデバックして行けば、1になるか3になるか解からないじゃない。
もしプログラマーが、綺麗に書けたけどバグバグしてる。って主張するなら
デバックさせれば良いと思う。あっという間に1になるから。
完成した段階で、綺麗でバグの少ないコードを早く作れるのがプログラミングが
上手いといえるんじゃないかな?
そーゆうプログラムってチューニングもしやすいし。

0046名無しさん@お腹いっぱい。 NGNG
45を読んでいてい思い当たったのだが、中級者のプログラムを見ていると
Aの部分は非常にうまくかけた。Bの部分はまだきれいにまとまらない
のでもう少し手直しします。というパターンによく出会う。
で、一生懸命Bをいじくり回して四苦八苦しているのだが、この場合えてして
Bの部分がうまくまとまらないのはAに原因があることが多い。
さらにAとBの担当者が別だと別の問題が絡んできて…

日常に埋没している中、ふと全体設計が大事だなっと思うのはこんなとき。
0047名無しさん@お腹いっぱい。 NGNG
でもさ、きれいにかけたAまで手をつけちゃうと、納期に間に合わなくなるよ。
004846 NGNG
A+Bを書き直す手間とBでもがく手間との工数をきっちり見極められるのが
うまいプログラマだと思う。(もちろんA+Bを書き直すのが常に正しいわけではない)
0049名無しさん@お腹いっぱい。 NGNG
すばらしいコードの実例をみせて。
005046 NGNG
ん?49は煽ってるのかな?違ったらすまん。
0051名無しさん@電波君 NGNG
49>
そこらの初心者用のプログラミング参考書見れば腐るほど載ってるよ。
プロの腕の見せ所はそれを(宇宙に存在する原子の数)倍ほど複雑なプログラムでも実現してみせるとこでしょう。

ぼくにとってうまいプログラミングってのはインターフェース部分がしっかり作成されていて、オブジェクト単位で独立してるようなコードがかけるということ。
バグが多い少ないなんて議論は不毛。将来バグが多くなるか少なくなっていくかはこの一点によると個が多いと思う今日この頃。
005246 NGNG
蛇足かもしれないが46は45への反論とかではない。むしろ同じスタンスと思っている。
0053名無しさん@お腹いっぱい。 NGNG
その名前にしてはまともなことを言う。つっこめないぢゃないか。
もっと名に恥じないことを言うように。
0054名無しさん@お腹いっぱい。 NGNG
インタフェースがきちんとできてりゃ言うことないよね。
それが難しいんだよね。段階的に詳細なインタフェースを
手間かけずに楽にかつ安全に定義できる、インタフェース言語が
あればいいのに。
0055名無しさん@お腹いっぱい。 NGNG
世界が平和であればいいのに
0056名無しさん@お腹いっぱい。 NGNG
>49

int main(int argv@`char* argc)
{
/* 旅に出ます。
    ごめんなさい。
    ごめんなさい。
    ごめんなさい。
*/
return 0;
}
0057名無しさん@お腹いっぱい。 NGNG
>int argv@`char* argc
天然っぽくてステキ(はあと
0058名無しさん@お腹いっぱい。 NGNG
>(宇宙に存在する原子の数)倍ほど複雑なプログラム

う〜む。せいぜい、10〜100倍と思うんだが。
0059日産ファン NGNG
プログラミングのうまい下手は
特殊なテクニックを使わずに、
短いコードをかけるやつですね。

言語が、OSが なんて言っている連中にかぎって
まともなコードがかけないものですよ
0060名無しさん@お腹いっぱい。 NGNG
プログラミングのうまい下手は
上手なコードをかけるやつですね。
0061名無しさん@お腹いっぱい。 NGNG
>58
複雑さの数え方によるんじゃないか。2^(コードのバイト数)とか。
0062名無しさん NGNG
プログラミングのうまい下手は、
さくらんぼの枝を舌で結べるかどうかで分かります。
0063> NGNG
>特殊なテクニックを使わずに、
>短いコードをかけるやつですね。

だから、派生が出来ないVBは×。
006463 NGNG
但し、将来出来るは×ね。VBの場合、機能が増えるたびに環境破壊が深刻になる。
毎度→ ttp://www5.airnet.ne.jp/init/vb/level1/level1001.html
0065日産ファン NGNG
>だから、派生が出来ないVBは×。

喧嘩を売られたのかな?(笑)

派生が使えないとまともなプログラムが組めないのなら
プログラマーを辞めた方がいいんじゃない?
って 思うぐらいのレスですね

プログラムの上手いやつはそんなものを使わなくても
上手いコードを書くものですよ。
0066名無しさん@お腹いっぱい。 NGNG
>57
ごめん本当に天然だった。
こんな僕は上手いプログラマーになれるでしょうか?
0067名無しさん@お腹いっぱい。 NGNG
>プログラムの上手いやつはそんなものを使わなくても上手いコードを書くものですよ。

派生を否定する方がプログラマ辞めるべきだ。
0068日産ファン NGNG
>派生を否定する方がプログラマ辞めるべきだ。

別に否定したつもりはないんですけど
ただ 使えない環境ってのも存在するんですよ
使えないから プログラムできませんでは、
駄目だと思うのですが、どうでしょうか?
そのなかでも ベストのコードを書ける人は
いるって言いたかったのです。

0069名無しさん@お腹いっぱい。 NGNG
VB自体はオブジェクトの寄せ集めに見える・・・・
0070>68 NGNG
文章は論理的に正しいが、内容が正しくない。
開発環境が無いなら、それさえも作るのがシステム開発。
それを知らないならプログラマ辞めるべき。
後、Cですらオブジェクト指向言語になって、実用化されて相当経つ。
0071よこ NGNG
>70
本末顛倒じゃないか?
なんで「オブジェクト指向言語」にするかとゆーと
保守性とか開発コストを下げるためでしょ
Cで足りてる実装に、無理してC++にする必要はない

と思うぞ
0072名無しさん@お腹いっぱい。 NGNG
>Cで足りてる実装に、無理してC++にする必要はない

足りてないから言語が開発されている。
例えば、SUNが「C++の簡易インタープリタ言語 for 組み込みシステム」として開発したのがJava。
(現在のJavaは嫌い)
現状に甘んじてしまうのは、「腐った言語ユーザ」に多い。(根拠は無い。経験則)
0073日産ファン NGNG
>開発環境が無いなら、それさえも作るのがシステム開発。
>それを知らないならプログラマ辞めるべき。

う〜ん プログラムを上手に書くかってのが
お題だったのに、なんで こんな方向に行くのだろうか?
俺の方が頭おかしいのかな?
悩んできます (笑)
別に否定したわけでもないのに 否定したかのように受け止められて
う〜ん
0074>73 NGNG
スレッド題読んでみて。全てが解決します。あなたのお題なら、あなたがスレ建ててね。
0075名無しさん@お腹いっぱい。 NGNG
>>72
いや、足りてると思ったらC使っていればよいだけで、
足りない人がC++を使えばよい、て話じゃないのか?>>71
そんなに無下に否定しなくても。

あと「開発コスト」というの政治的問題も絡んでしまうので
開発効率としておくのが良いかと存じます。
0076名無しさん@お腹いっぱい。 NGNG
>1
ゲームとか研究的な所以外は、アイデアはほとんどいらない。
ソフト開発は本人達が思ってるほど「クリエイティブ」では無かったりする。
実は。
0077>76 NGNG
何か、誰も聞いてない質問に答えているようだぞ。
0078>69 NGNG
VBはもちろんだが、BCBでもその現象は起きてるぞ。(VBほどではないが)
0079名無しさん@お腹いっぱい。 NGNG
ソフト開発に「アイデア」が必要な場面はいくらでも有るっしょ。
それに、いまどきソフト開発が「クリエイティブ」だって思ってる
やつって、そんなにいるのか?
0080名無しさん@お腹いっぱい。 NGNG
アイデアなんて不安定なものに頼ってるのはへたくそだけ。
0081名無しさん@お腹いっぱい。 NGNG
アイデアを不安定だなどと逝っているのは、力技に頼るだけのヘボ。
0082名無しさん@お腹いっぱい。 NGNG
アイデアってなによ。
0083名無しさん@お腹いっぱい。 NGNG
1理解力
2行動力
3センス
0084名無しさん@お腹いっぱい。 NGNG
<アイデア
力技より多少マシな考え。
0085名無しさん@お腹いっぱい。 NGNG
アメリカの某プログラム系のコンテストのお話し。
発見的な手法(アイデア)に頼ったプログラム大半は、
力技のプログラムにかないませんでしたとさ。
おしまい。
0086>85 NGNG
発見的な手法の内容を押さえて置きたいんだけど、やっぱ、それ以上情報無いんでしょ?
0087名無しさん@お腹いっぱい。 NGNG
<85
「大半」ってのが微妙だな。
くだらねーアイデアより力技、それより良く練ったアイデア、っていうようにも思えるし、
めったに出ない良いアイデアより、確実に結果を出せる力技、っていうふうにも…
0088名無しさん@お腹いっぱい。 NGNG
確実に結果を出せる力技>>めったに出ない良いアイデア
>>中途半端な力技
かな?
0089名無しさん@お腹いっぱい。 NGNG
>>85
某プログラム系?コンテスト?
プログラムっぽい何かが
琵琶湖の上でも飛んだの?
0090>89 NGNG
まじでモニタの前でばかうけしちまった
あ〜腹いて〜
009189 NGNG
>>90
あなたの想像力に乾杯
0092>85 NGNG
「囚人のジレンマ」のコンテストの事?
0093名無しさん@お腹いっぱい。 NGNG
>92
アメリカの昔のチェスプログラムのコンテスト(大会)の話しです。
0094名無しさん@お腹いっぱい。 NGNG
仕様を最小努力、最短時間で実現できればいい
アイデアがどうしたこうしたなんて学生レベルだぜ?
0095まじかよ。。 NGNG
>>94
その発想が駄コードを膿む。
0096学生 NGNG
>>94
算数ドリルやってんの?
0097名無しさん || die NGNG
>>94
コピー&ペーストでプログラミングですか?
0098名無しさん@お腹いっぱい。 NGNG
>>97
もちろん!
プログラミングかどうかについてだけ考え
質についてはここでは言及しない。
0099名無しさん@お腹いっぱい。 NGNG
最小努力、最短時間で実現するためにアイデアを絞るんじゃねーのかな。
0100名無しさん@お腹いっぱい。 NGNG
プログラムをプログラムの世界だけで見ちゃいけないと思う
プログラムは現実を抽象化してる訳だから
そういう所の視点とかでセンスが問われるって事はない?
0101名無しさん@お腹いっぱい。 NGNG
コピペをうまく使える奴が1番。
0102名無しさん@お腹いっぱい。 NGNG
>101
あんたは今後プログラムするな。
ソースコピペはOOPでは犯罪扱い。
0103名無しさん@お腹いっぱい。 NGNG
一口に「最小努力」「最短時間」といってもどの程度長期的なスパンで物事を
考えるかで変わってくると思うが。
「汎用性」やら「ポータビリティ」やらを求めるとは、その場限りの話で言えば
余分な工数を必要とする訳で。
例えばそのプログラムが「どの程度使い捨てでいいか」を判断するのも、一つの
「センス」だろう。

0104>102 NGNG
>ソースコピペはOOPでは犯罪扱い。
俺のまわりでOOPとか言ってるやつって、まともな
クラスひとつ書けないやつばかりなんだわ。まあ
利用するのは、上手なんだけど。。。逆に、すば
らしいクラス書け、何でも出来る人は、OOPなんて
気にしてないよ。OOP、OOPってうるさいやつは、
他人の作ったものを利用することには長けているよ
うな気がするけど、一流のやつは見たことないもの。
口だけのやつが多すぎる。。。あんたもそうなの(笑)
0105>104 NGNG
OOPはね、オブジェクトを設計して用意する方と 、それを利用する方にひとを分けるの。
分ける率は(2:8)くらいかな。
その、クラス設計してるとか言ってる人のさらに(2:8)は 参考書コピペ型ね。

だから君の言う事も一面正しいと思うよ。 でも残る4%くらいは俺ら下々には
想像出来ないような発想力と行動力を持ってるみたいね。
ただ、人間として一流かどうかは別かもね。それはさらに(2:8)だと思うよ。

という事で、とりあえず尊大なひとは素直に尊敬する所から入る事にしてるけどね
そういう付き合い方の方が楽だからさ。
でも、正直、あたりは少ないけどさ。
まあ平凡な才能者の世渡りの知恵って奴かな
0106名無しさん || die NGNG
すると、OOやってる人の1000人に8人がきちんと設計ができて人間もできていると。
ちょっと多く見積もりすぎじゃないかな(笑
0107名無しさん@お腹いっぱい。 NGNG
いつも思うこと。設計書命の馬鹿SEには関数きりだしも
クラスツリー構造の変更も許してもらえないけど。

同じクラスの別関数からコピペするくらいなら
privateの関数に切り出して共有してくれ。

機能の似通ったクラスいっぱい作るのなら、インタフェイスだけ
切り出して抽象基底クラス作って、それ継承していとこクラス
にしてくれ。共通の関数は抽象クラスにprotected(クラス外から
よびだすんならpublic)関数と言うことにして移動させといてくれ。

それで大抵のコピペはなくなるっしょ。
■ このスレッドは過去ログ倉庫に格納されています